v20201113 master
authorKilian Saffran <ksaffran@dks.lu>
Fri, 13 Nov 2020 08:48:23 +0000 (09:48 +0100)
committerKilian Saffran <ksaffran@dks.lu>
Fri, 13 Nov 2020 08:48:23 +0000 (09:48 +0100)
698 files changed:
.gitignore
admin/.htaccess [new file with mode: 0644]
admin/css/fonts/appicons.svg [new file with mode: 0644]
admin/css/fonts/appicons.ttf [new file with mode: 0644]
admin/css/fonts/appicons.woff [new file with mode: 0644]
admin/css/icons.css [new file with mode: 0644]
admin/css/theme.css [new file with mode: 0644]
admin/db.php [new file with mode: 0644]
admin/img/POT-logo.png [new file with mode: 0644]
admin/img/applogo.png [new file with mode: 0644]
admin/img/bg1.jpg [new file with mode: 0644]
admin/img/favicon/android-icon-144x144.png [new file with mode: 0644]
admin/img/favicon/android-icon-192x192.png [new file with mode: 0644]
admin/img/favicon/android-icon-36x36.png [new file with mode: 0644]
admin/img/favicon/android-icon-48x48.png [new file with mode: 0644]
admin/img/favicon/android-icon-72x72.png [new file with mode: 0644]
admin/img/favicon/android-icon-96x96.png [new file with mode: 0644]
admin/img/favicon/apple-icon-114x114.png [new file with mode: 0644]
admin/img/favicon/apple-icon-120x120.png [new file with mode: 0644]
admin/img/favicon/apple-icon-144x144.png [new file with mode: 0644]
admin/img/favicon/apple-icon-152x152.png [new file with mode: 0644]
admin/img/favicon/apple-icon-180x180.png [new file with mode: 0644]
admin/img/favicon/apple-icon-57x57.png [new file with mode: 0644]
admin/img/favicon/apple-icon-60x60.png [new file with mode: 0644]
admin/img/favicon/apple-icon-72x72.png [new file with mode: 0644]
admin/img/favicon/apple-icon-76x76.png [new file with mode: 0644]
admin/img/favicon/apple-icon-precomposed.png [new file with mode: 0644]
admin/img/favicon/apple-icon.png [new file with mode: 0644]
admin/img/favicon/browserconfig.xml [new file with mode: 0644]
admin/img/favicon/favicon-16x16.png [new file with mode: 0644]
admin/img/favicon/favicon-32x32.png [new file with mode: 0644]
admin/img/favicon/favicon-96x96.png [new file with mode: 0644]
admin/img/favicon/favicon.ico [new file with mode: 0644]
admin/img/favicon/manifest.json [new file with mode: 0644]
admin/img/favicon/ms-icon-144x144.png [new file with mode: 0644]
admin/img/favicon/ms-icon-150x150.png [new file with mode: 0644]
admin/img/favicon/ms-icon-310x310.png [new file with mode: 0644]
admin/img/favicon/ms-icon-70x70.png [new file with mode: 0644]
admin/img/logo_512.png [new file with mode: 0644]
admin/img/potbg.jpg [new file with mode: 0644]
admin/img/poticon512.png [new file with mode: 0644]
admin/img/potlogowhite.svg [new file with mode: 0644]
admin/img/pottop.png [new file with mode: 0644]
admin/img/toplogo.png [new file with mode: 0644]
admin/index.php [new file with mode: 0644]
admin/js/app.js [new file with mode: 0644]
admin/js/dataform.js [new file with mode: 0644]
admin/js/modules/galleries.js [new file with mode: 0644]
admin/js/modules/home.js [moved from website/js/vendor/flatpickr/utils/polyfills.d.ts with 100% similarity]
admin/js/modules/rendezvous.js [new file with mode: 0644]
admin/js/modules/shop.js [new file with mode: 0644]
admin/js/modules/users.js [new file with mode: 0644]
admin/js/modules/websites.js [new file with mode: 0644]
admin/js/report.js [new file with mode: 0644]
admin/js/request.js [new file with mode: 0644]
admin/js/timecalc.js [new file with mode: 0644]
admin/js/vendors/flatpickr/flatpickr.css [moved from website/js/vendor/flatpickr/flatpickr.css with 100% similarity]
admin/js/vendors/flatpickr/flatpickr.js [moved from website/js/vendor/flatpickr/flatpickr.js with 99% similarity]
admin/js/vendors/flatpickr/flatpickr.min.css [moved from website/js/vendor/flatpickr/flatpickr.min.css with 100% similarity]
admin/js/vendors/flatpickr/flatpickr.min.js [moved from website/js/vendor/flatpickr/flatpickr.min.js with 100% similarity]
admin/js/vendors/flatpickr/ie.css [moved from website/js/vendor/flatpickr/ie.css with 100% similarity]
admin/js/vendors/flatpickr/index.d.ts [moved from website/js/vendor/flatpickr/index.d.ts with 100% similarity]
admin/js/vendors/flatpickr/l10n/de.d.ts [moved from website/js/vendor/flatpickr/l10n/de.d.ts with 100% similarity]
admin/js/vendors/flatpickr/l10n/de.js [moved from website/js/vendor/flatpickr/l10n/de.js with 100% similarity]
admin/js/vendors/flatpickr/l10n/default.d.ts [moved from website/js/vendor/flatpickr/l10n/default.d.ts with 100% similarity]
admin/js/vendors/flatpickr/l10n/default.js [moved from website/js/vendor/flatpickr/l10n/default.js with 100% similarity]
admin/js/vendors/flatpickr/l10n/fr.d.ts [moved from website/js/vendor/flatpickr/l10n/fr.d.ts with 100% similarity]
admin/js/vendors/flatpickr/l10n/fr.js [moved from website/js/vendor/flatpickr/l10n/fr.js with 100% similarity]
admin/js/vendors/flatpickr/l10n/index.d.ts [moved from website/js/vendor/flatpickr/l10n/index.d.ts with 100% similarity]
admin/js/vendors/flatpickr/l10n/index.js [moved from website/js/vendor/flatpickr/l10n/index.js with 100% similarity]
admin/js/vendors/flatpickr/plugins/confirmDate/confirmDate.css [moved from website/js/vendor/flatpickr/plugins/confirmDate/confirmDate.css with 100% similarity]
admin/js/vendors/flatpickr/plugins/confirmDate/confirmDate.d.ts [moved from website/js/vendor/flatpickr/plugins/confirmDate/confirmDate.d.ts with 100% similarity]
admin/js/vendors/flatpickr/plugins/confirmDate/confirmDate.js [moved from website/js/vendor/flatpickr/plugins/confirmDate/confirmDate.js with 99% similarity]
admin/js/vendors/flatpickr/plugins/labelPlugin/labelPlugin.d.ts [moved from website/js/vendor/flatpickr/plugins/labelPlugin/labelPlugin.d.ts with 100% similarity]
admin/js/vendors/flatpickr/plugins/labelPlugin/labelPlugin.js [moved from website/js/vendor/flatpickr/plugins/labelPlugin/labelPlugin.js with 100% similarity]
admin/js/vendors/flatpickr/plugins/minMaxTimePlugin.d.ts [moved from website/js/vendor/flatpickr/plugins/minMaxTimePlugin.d.ts with 100% similarity]
admin/js/vendors/flatpickr/plugins/minMaxTimePlugin.js [moved from website/js/vendor/flatpickr/plugins/minMaxTimePlugin.js with 100% similarity]
admin/js/vendors/flatpickr/plugins/momentPlugin.d.ts [moved from website/js/vendor/flatpickr/plugins/momentPlugin.d.ts with 100% similarity]
admin/js/vendors/flatpickr/plugins/momentPlugin.js [moved from website/js/vendor/flatpickr/plugins/momentPlugin.js with 100% similarity]
admin/js/vendors/flatpickr/plugins/monthSelect/index.d.ts [moved from website/js/vendor/flatpickr/plugins/monthSelect/index.d.ts with 100% similarity]
admin/js/vendors/flatpickr/plugins/monthSelect/index.js [moved from website/js/vendor/flatpickr/plugins/monthSelect/index.js with 99% similarity]
admin/js/vendors/flatpickr/plugins/monthSelect/style.css [moved from website/js/vendor/flatpickr/plugins/monthSelect/style.css with 100% similarity]
admin/js/vendors/flatpickr/plugins/monthSelect/tests.spec.d.ts [moved from website/js/vendor/flatpickr/plugins/monthSelect/tests.spec.d.ts with 100% similarity]
admin/js/vendors/flatpickr/plugins/rangePlugin.d.ts [moved from website/js/vendor/flatpickr/plugins/rangePlugin.d.ts with 100% similarity]
admin/js/vendors/flatpickr/plugins/rangePlugin.js [moved from website/js/vendor/flatpickr/plugins/rangePlugin.js with 100% similarity]
admin/js/vendors/flatpickr/plugins/scrollPlugin.d.ts [moved from website/js/vendor/flatpickr/plugins/scrollPlugin.d.ts with 100% similarity]
admin/js/vendors/flatpickr/plugins/scrollPlugin.js [moved from website/js/vendor/flatpickr/plugins/scrollPlugin.js with 100% similarity]
admin/js/vendors/flatpickr/plugins/weekSelect/weekSelect.d.ts [moved from website/js/vendor/flatpickr/plugins/weekSelect/weekSelect.d.ts with 100% similarity]
admin/js/vendors/flatpickr/plugins/weekSelect/weekSelect.js [moved from website/js/vendor/flatpickr/plugins/weekSelect/weekSelect.js with 100% similarity]
admin/js/vendors/flatpickr/themes/airbnb.css [moved from website/js/vendor/flatpickr/themes/airbnb.css with 100% similarity]
admin/js/vendors/flatpickr/types/globals.d.ts [moved from website/js/vendor/flatpickr/types/globals.d.ts with 100% similarity]
admin/js/vendors/flatpickr/types/instance.d.ts [moved from website/js/vendor/flatpickr/types/instance.d.ts with 100% similarity]
admin/js/vendors/flatpickr/types/locale.d.ts [moved from website/js/vendor/flatpickr/types/locale.d.ts with 100% similarity]
admin/js/vendors/flatpickr/types/options.d.ts [moved from website/js/vendor/flatpickr/types/options.d.ts with 100% similarity]
admin/js/vendors/flatpickr/typings.d.ts [moved from website/js/vendor/flatpickr/typings.d.ts with 100% similarity]
admin/js/vendors/flatpickr/utils/dates.d.ts [moved from website/js/vendor/flatpickr/utils/dates.d.ts with 100% similarity]
admin/js/vendors/flatpickr/utils/dom.d.ts [moved from website/js/vendor/flatpickr/utils/dom.d.ts with 100% similarity]
admin/js/vendors/flatpickr/utils/formatting.d.ts [moved from website/js/vendor/flatpickr/utils/formatting.d.ts with 100% similarity]
admin/js/vendors/flatpickr/utils/index.d.ts [moved from website/js/vendor/flatpickr/utils/index.d.ts with 100% similarity]
admin/js/vendors/flatpickr/utils/polyfills.d.ts [new file with mode: 0644]
admin/js/vendors/moment/locales.js [new file with mode: 0644]
admin/js/vendors/moment/locales.min.js [new file with mode: 0644]
admin/js/vendors/moment/locales.min.js.map [new file with mode: 0644]
admin/js/vendors/moment/moment-with-locales.js [new file with mode: 0644]
admin/js/vendors/moment/moment-with-locales.min.js [new file with mode: 0644]
admin/js/vendors/moment/moment-with-locales.min.js.map [new file with mode: 0644]
admin/js/vendors/moment/moment.js [new file with mode: 0644]
admin/js/vendors/moment/moment.min.js [new file with mode: 0644]
admin/js/vendors/moment/moment.min.js.map [new file with mode: 0644]
admin/js/vendors/slimselect/slimselect.css [moved from website/js/vendor/slimselect/slimselect.css with 94% similarity]
admin/js/vendors/slimselect/slimselect.min.css [new file with mode: 0644]
admin/js/vendors/slimselect/slimselect.min.js [moved from website/js/vendor/slimselect/slimselect.min.js with 100% similarity]
admin/js/vendors/slimselect/slimselect.min.orig.css [moved from website/js/vendor/slimselect/slimselect.min.css with 100% similarity]
admin/js/vendors/slimselect/slimselect.min.xx.js [new file with mode: 0644]
admin/js/vendors/slimselect/slimselect.scss [moved from website/js/vendor/slimselect/slimselect.scss with 100% similarity]
admin/js/vendors/slimselect/slimselect.xx.js [moved from website/js/vendor/slimselect/slimselect.js with 100% similarity]
admin/js/vendors/tabulator/css/tabulator.css [moved from website/js/vendor/tabulator/css/tabulator.css with 88% similarity]
admin/js/vendors/tabulator/css/tabulator.min.css [new file with mode: 0644]
admin/js/vendors/tabulator/css/tabulator.min.css.map [new file with mode: 0644]
admin/js/vendors/tabulator/css/tabulator_site.css [moved from website/js/vendor/tabulator/css/tabulator_site.css with 84% similarity]
admin/js/vendors/tabulator/css/tabulator_site.min.css [new file with mode: 0644]
admin/js/vendors/tabulator/css/tabulator_site.min.css.map [new file with mode: 0644]
admin/js/vendors/tabulator/css/tabulator_site.min.orig.css [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/accessor.js [moved from website/js/vendor/tabulator/js/modules/accessor.js with 77% similarity]
admin/js/vendors/tabulator/js/modules/accessor.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/ajax.js [moved from website/js/vendor/tabulator/js/modules/ajax.js with 99% similarity]
admin/js/vendors/tabulator/js/modules/ajax.min.js [moved from website/js/vendor/tabulator/js/modules/ajax.min.js with 99% similarity]
admin/js/vendors/tabulator/js/modules/calculation_colums.js [moved from website/js/vendor/tabulator/js/modules/calculation_colums.js with 91% similarity]
admin/js/vendors/tabulator/js/modules/calculation_colums.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/clipboard.js [moved from website/js/vendor/tabulator/js/modules/clipboard.js with 93% similarity]
admin/js/vendors/tabulator/js/modules/clipboard.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/data_tree.js [moved from website/js/vendor/tabulator/js/modules/data_tree.js with 90% similarity]
admin/js/vendors/tabulator/js/modules/data_tree.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/download.js [moved from website/js/vendor/tabulator/js/modules/download.js with 96% similarity]
admin/js/vendors/tabulator/js/modules/download.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/edit.js [moved from website/js/vendor/tabulator/js/modules/edit.js with 93% similarity]
admin/js/vendors/tabulator/js/modules/edit.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/export.js [moved from website/js/vendor/tabulator/js/modules/export.js with 97% similarity]
admin/js/vendors/tabulator/js/modules/export.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/filter.js [moved from website/js/vendor/tabulator/js/modules/filter.js with 99% similarity]
admin/js/vendors/tabulator/js/modules/filter.min.js [moved from website/js/vendor/tabulator/js/modules/filter.min.js with 98% similarity]
admin/js/vendors/tabulator/js/modules/format.js [moved from website/js/vendor/tabulator/js/modules/format.js with 97% similarity]
admin/js/vendors/tabulator/js/modules/format.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/frozen_columns.js [moved from website/js/vendor/tabulator/js/modules/frozen_columns.js with 99% similarity]
admin/js/vendors/tabulator/js/modules/frozen_columns.min.js [moved from website/js/vendor/tabulator/js/modules/frozen_columns.min.js with 98% similarity]
admin/js/vendors/tabulator/js/modules/frozen_rows.js [moved from website/js/vendor/tabulator/js/modules/frozen_rows.js with 89% similarity]
admin/js/vendors/tabulator/js/modules/frozen_rows.min.js [moved from website/js/vendor/tabulator/js/modules/frozen_rows.min.js with 62% similarity]
admin/js/vendors/tabulator/js/modules/group_rows.js [moved from website/js/vendor/tabulator/js/modules/group_rows.js with 94% similarity]
admin/js/vendors/tabulator/js/modules/group_rows.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/history.js [moved from website/js/vendor/tabulator/js/modules/history.js with 89% similarity]
admin/js/vendors/tabulator/js/modules/history.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/html_table_import.js [moved from website/js/vendor/tabulator/js/modules/html_table_import.js with 98% similarity]
admin/js/vendors/tabulator/js/modules/html_table_import.min.js [moved from website/js/vendor/tabulator/js/modules/html_table_import.min.js with 96% similarity]
admin/js/vendors/tabulator/js/modules/keybindings.js [moved from website/js/vendor/tabulator/js/modules/keybindings.js with 98% similarity]
admin/js/vendors/tabulator/js/modules/keybindings.min.js [moved from website/js/vendor/tabulator/js/modules/keybindings.min.js with 98% similarity]
admin/js/vendors/tabulator/js/modules/menu.js [moved from website/js/vendor/tabulator/js/modules/menu.js with 54% similarity]
admin/js/vendors/tabulator/js/modules/menu.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/moveable_columns.js [moved from website/js/vendor/tabulator/js/modules/moveable_columns.js with 98% similarity]
admin/js/vendors/tabulator/js/modules/moveable_columns.min.js [moved from website/js/vendor/tabulator/js/modules/moveable_columns.min.js with 98% similarity]
admin/js/vendors/tabulator/js/modules/moveable_rows.js [moved from website/js/vendor/tabulator/js/modules/moveable_rows.js with 99% similarity]
admin/js/vendors/tabulator/js/modules/moveable_rows.min.js [moved from website/js/vendor/tabulator/js/modules/moveable_rows.min.js with 99% similarity]
admin/js/vendors/tabulator/js/modules/mutator.js [moved from website/js/vendor/tabulator/js/modules/mutator.js with 96% similarity]
admin/js/vendors/tabulator/js/modules/mutator.min.js [moved from website/js/vendor/tabulator/js/modules/mutator.min.js with 96% similarity]
admin/js/vendors/tabulator/js/modules/page.js [moved from website/js/vendor/tabulator/js/modules/page.js with 97% similarity]
admin/js/vendors/tabulator/js/modules/page.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/persistence.js [moved from website/js/vendor/tabulator/js/modules/persistence.js with 96% similarity]
admin/js/vendors/tabulator/js/modules/persistence.min.js [moved from website/js/vendor/tabulator/js/modules/persistence.min.js with 63% similarity]
admin/js/vendors/tabulator/js/modules/print.js [moved from website/js/vendor/tabulator/js/modules/print.js with 96% similarity]
admin/js/vendors/tabulator/js/modules/print.min.js [moved from website/js/vendor/tabulator/js/modules/print.min.js with 95% similarity]
admin/js/vendors/tabulator/js/modules/reactive_data.js [moved from website/js/vendor/tabulator/js/modules/reactive_data.js with 73% similarity]
admin/js/vendors/tabulator/js/modules/reactive_data.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/resize_columns.js [moved from website/js/vendor/tabulator/js/modules/resize_columns.js with 92% similarity]
admin/js/vendors/tabulator/js/modules/resize_columns.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/resize_rows.js [moved from website/js/vendor/tabulator/js/modules/resize_rows.js with 96% similarity]
admin/js/vendors/tabulator/js/modules/resize_rows.min.js [moved from website/js/vendor/tabulator/js/modules/resize_rows.min.js with 95% similarity]
admin/js/vendors/tabulator/js/modules/resize_table.js [moved from website/js/vendor/tabulator/js/modules/resize_table.js with 88% similarity]
admin/js/vendors/tabulator/js/modules/resize_table.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/responsive_layout.js [moved from website/js/vendor/tabulator/js/modules/responsive_layout.js with 99% similarity]
admin/js/vendors/tabulator/js/modules/responsive_layout.min.js [moved from website/js/vendor/tabulator/js/modules/responsive_layout.min.js with 98% similarity]
admin/js/vendors/tabulator/js/modules/select_row.js [moved from website/js/vendor/tabulator/js/modules/select_row.js with 99% similarity]
admin/js/vendors/tabulator/js/modules/select_row.min.js [moved from website/js/vendor/tabulator/js/modules/select_row.min.js with 98% similarity]
admin/js/vendors/tabulator/js/modules/sort.js [moved from website/js/vendor/tabulator/js/modules/sort.js with 97% similarity]
admin/js/vendors/tabulator/js/modules/sort.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/modules/validate.js [moved from website/js/vendor/tabulator/js/modules/validate.js with 97% similarity]
admin/js/vendors/tabulator/js/modules/validate.min.js [moved from website/js/vendor/tabulator/js/modules/validate.min.js with 52% similarity]
admin/js/vendors/tabulator/js/tabulator.js [moved from website/js/vendor/tabulator/js/tabulator.js with 90% similarity]
admin/js/vendors/tabulator/js/tabulator.min.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/tabulator.min.orig.js [new file with mode: 0644]
admin/js/vendors/tabulator/js/tabulator_core.js [moved from website/js/vendor/tabulator/js/tabulator_core.js with 87% similarity]
admin/js/vendors/tabulator/js/tabulator_core.min.js [new file with mode: 0644]
admin/lib/composer.json [new file with mode: 0644]
admin/lib/composer.lock [new file with mode: 0644]
admin/lib/config.php [new file with mode: 0644]
admin/lib/database.php [new file with mode: 0644]
admin/lib/session.php [new file with mode: 0644]
admin/lib/vendor/autoload.php [new file with mode: 0644]
admin/lib/vendor/composer/ClassLoader.php [new file with mode: 0644]
admin/lib/vendor/composer/LICENSE [new file with mode: 0644]
admin/lib/vendor/composer/autoload_classmap.php [new file with mode: 0644]
admin/lib/vendor/composer/autoload_namespaces.php [new file with mode: 0644]
admin/lib/vendor/composer/autoload_psr4.php [new file with mode: 0644]
admin/lib/vendor/composer/autoload_real.php [new file with mode: 0644]
admin/lib/vendor/composer/autoload_static.php [new file with mode: 0644]
admin/lib/vendor/composer/installed.json [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/.gitignore [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/.gitmodules [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/.php_cs [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/.styleci.yml [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/.travis.yml [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/CONTRIBUTING.md [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/LICENSE [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/README.md [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/bin/build_bootstrap.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/composer.json [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/phpunit.xml.dist [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Autoloader.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Cache.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Cache/AbstractCache.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Compiler.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Context.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Engine.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Exception.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Exception/LogicException.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Exception/RuntimeException.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Exception/SyntaxException.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/HelperCollection.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/LambdaHelper.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Loader.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Loader/ArrayLoader.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Loader/ProductionFilesystemLoader.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Loader/StringLoader.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Logger.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Logger/AbstractLogger.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Parser.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Source.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Source/FilesystemSource.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Template.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/src/Mustache/Tokenizer.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/HelperCollectionTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/ProductionFilesystemLoaderTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/Source/FilesystemSourceTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/bootstrap.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Foo.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/autoloader/NonMustacheClass.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/AnchoredDotNotation.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/anchored_dot_notation.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/anchored_dot_notation.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/partials/genre.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/Blocks.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/partials/parent.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/child_context/ChildContext.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/comments/comments.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/escaped/Escaped.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/InvertedDoubleSection.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_section/InvertedSection.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections/Sections.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/templates/alpha.ms [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/templates/beta.ms [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/templates/one.mustache [new file with mode: 0644]
admin/lib/vendor/mustache/mustache/test/fixtures/templates/two.mustache [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/COMMITMENT [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/LICENSE [moved from website/js/vendor/tinymce/js/tinymce/license.txt with 98% similarity]
admin/lib/vendor/phpmailer/phpmailer/README.md [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/SECURITY.md [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/VERSION [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/composer.json [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/get_oauth_token.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ch.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/src/Exception.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/src/OAuth.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/src/POP3.php [new file with mode: 0644]
admin/lib/vendor/phpmailer/phpmailer/src/SMTP.php [new file with mode: 0644]
admin/lib/web/galleries.php [new file with mode: 0644]
admin/lib/web/rendezvous.php [new file with mode: 0644]
admin/lib/web/templates.php [new file with mode: 0644]
admin/lib/web/webmenu.php [new file with mode: 0644]
admin/lib/web/websites.php [new file with mode: 0644]
admin/tmpl/.htaccess [new file with mode: 0644]
admin/tmpl/index.html.mustache [new file with mode: 0644]
admin/tmpl/login.html.mustache [new file with mode: 0644]
admin/tmpl/pages/config/rendezvous.html.mustache [new file with mode: 0644]
admin/tmpl/pages/config/shop.html.mustache [new file with mode: 0644]
admin/tmpl/pages/config/site.html.mustache [new file with mode: 0644]
admin/tmpl/pages/config/template.html.mustache [new file with mode: 0644]
admin/tmpl/pages/config/users.html.mustache [new file with mode: 0644]
admin/tmpl/pages/error.html.mustache [new file with mode: 0644]
admin/tmpl/pages/galleries.html.mustache [new file with mode: 0644]
admin/tmpl/pages/home.html.mustache [new file with mode: 0644]
admin/tmpl/pages/login/forgotpassword.html.mustache [new file with mode: 0644]
admin/tmpl/pages/login/login.html.mustache [new file with mode: 0644]
admin/tmpl/pages/login/message.html.mustache [new file with mode: 0644]
admin/tmpl/pages/orders.html.mustache [new file with mode: 0644]
admin/tmpl/pages/rendezvous.html.mustache [new file with mode: 0644]
admin/tmpl/pages/shop.html.mustache [new file with mode: 0644]
admin/tmpl/pages/websites.html.mustache [new file with mode: 0644]
admin/upload.php [new file with mode: 0644]
dev/appicons.json [new file with mode: 0644]
dev/db/sitedb..schema.sql [new file with mode: 0644]
dev/setdevlinks.sh [new file with mode: 0644]
website/css/creorga.css [deleted file]
website/css/site.css [deleted file]
website/css/theme.css
website/download/update.php [deleted file]
website/img/Creorga_1000px.png [deleted file]
website/img/applescript.png [deleted file]
website/img/apps/cashboxlogo.svg [deleted file]
website/img/apps/coloradiologo.svg [deleted file]
website/img/apps/creorgalogo.svg [deleted file]
website/img/apps/datastorelogo.svg [deleted file]
website/img/apps/dkstools.svg [deleted file]
website/img/apps/dksvpn.svg [deleted file]
website/img/apps/hourtraxlogo.svg [deleted file]
website/img/apps/invoicejournallogo.svg [deleted file]
website/img/apps/qrcodegenerateorlogo.svg [deleted file]
website/img/apps/websiteeditorlogo.svg [deleted file]
website/img/bash.png [deleted file]
website/img/bg.jpg [deleted file]
website/img/bg_bw.jpg [deleted file]
website/img/bg_creorga.jpg [deleted file]
website/img/bgtest - Kopie.jpg [deleted file]
website/img/bgtest.jpg [deleted file]
website/img/cashbox.png [deleted file]
website/img/childs.png [deleted file]
website/img/coloradio.png [deleted file]
website/img/creorgalogo.png [deleted file]
website/img/css3.png [deleted file]
website/img/festplatte.jpg [deleted file]
website/img/filemaker.png [deleted file]
website/img/fm_logotm_stacked.png [deleted file]
website/img/groovy.png [deleted file]
website/img/hourtrax.png [deleted file]
website/img/htmlfive.png [deleted file]
website/img/icons/menu.svg [deleted file]
website/img/if_HTML_Logo_65687.png [deleted file]
website/img/if_code-programming-javascript-software-develop-command-language_652581.png [deleted file]
website/img/invoice_journal.png [deleted file]
website/img/java.png [deleted file]
website/img/javascript.png [deleted file]
website/img/javascript_yellow.png [deleted file]
website/img/kasse.jpg [deleted file]
website/img/kinder.jpg [deleted file]
website/img/logo-mysql.png [deleted file]
website/img/musicmix.jpg [deleted file]
website/img/musicmix.png [deleted file]
website/img/mysql.png [deleted file]
website/img/perl.png [deleted file]
website/img/pics/google4.png [deleted file]
website/img/pics/google_gray.svg [deleted file]
website/img/pics/ico.copywriting.png [deleted file]
website/img/pics/ico.monitoring.png [deleted file]
website/img/pics/ico.optimization.png [deleted file]
website/img/pics/image-1.jpg [deleted file]
website/img/pics/image-10.jpg [deleted file]
website/img/pics/image-11.jpg [deleted file]
website/img/pics/image-12.jpg [deleted file]
website/img/pics/image-2.jpg [deleted file]
website/img/pics/image-3.jpg [deleted file]
website/img/pics/image-4.jpg [deleted file]
website/img/pics/image-5.jpg [deleted file]
website/img/pics/image-6.jpg [deleted file]
website/img/pics/image-7.jpg [deleted file]
website/img/pics/image-8.jpg [deleted file]
website/img/pics/image-9.jpg [deleted file]
website/img/pics/img.home2.png [deleted file]
website/img/pics/img.home3.png [deleted file]
website/img/pics/img.home4.png [deleted file]
website/img/pics/img.home6.png [deleted file]
website/img/pics/logo.png [deleted file]
website/img/pics/partner-1.jpg [deleted file]
website/img/pics/partner-2.jpg [deleted file]
website/img/pics/partner-3.jpg [deleted file]
website/img/pics/partner-4.jpg [deleted file]
website/img/pics/partner-5.jpg [deleted file]
website/img/pics/partner-6.jpg [deleted file]
website/img/pics/slide1.contact.png [deleted file]
website/img/pics/slide1.jpg [deleted file]
website/img/pics/slide2.contact.png [deleted file]
website/img/pics/slide2.jpg [deleted file]
website/img/pics/slide3.contact.png [deleted file]
website/img/pics/slide3.jpg [deleted file]
website/img/pics/spotlight-poi2.png [deleted file]
website/img/pics/team.1.jpg [deleted file]
website/img/pics/team.2.jpg [deleted file]
website/img/pics/team.3.jpg [deleted file]
website/img/pics/team.4.jpg [deleted file]
website/img/pics/welcome.png [deleted file]
website/img/pitouchcase.png [deleted file]
website/img/postgres.png [deleted file]
website/img/postgresql.png [deleted file]
website/img/powershell.png [deleted file]
website/img/price750.svg [deleted file]
website/img/radio.jpg [deleted file]
website/img/rechnung.jpg [deleted file]
website/img/slider_pctablet.png [deleted file]
website/img/sqlite.png [deleted file]
website/img/sybar.png [deleted file]
website/img/zeit.jpg [deleted file]
website/index.php
website/info.php [deleted file]
website/js/dataform.js [deleted file]
website/js/global/myapp.js [deleted file]
website/js/global/renderer.js [deleted file]
website/js/global/report.js [deleted file]
website/js/global/request.js [deleted file]
website/js/global/sqlite.js [deleted file]
website/js/timecalc.js [deleted file]
website/js/vendor/moment/moment-with-locales.min.js [deleted file]
website/js/vendor/moment/moment.min.js [deleted file]
website/js/vendor/mustache/mustache.js [deleted file]
website/js/vendor/mustache/mustache.min.js [deleted file]
website/js/vendor/tabulator/css/tabulator.min.css [deleted file]
website/js/vendor/tabulator/css/tabulator.min.css.map [deleted file]
website/js/vendor/tabulator/css/tabulator_site.min.css [deleted file]
website/js/vendor/tabulator/css/tabulator_site.min.css.map [deleted file]
website/js/vendor/tabulator/js/modules/accessor.min.js [deleted file]
website/js/vendor/tabulator/js/modules/calculation_colums.min.js [deleted file]
website/js/vendor/tabulator/js/modules/clipboard.min.js [deleted file]
website/js/vendor/tabulator/js/modules/data_tree.min.js [deleted file]
website/js/vendor/tabulator/js/modules/download.min.js [deleted file]
website/js/vendor/tabulator/js/modules/edit.min.js [deleted file]
website/js/vendor/tabulator/js/modules/export.min.js [deleted file]
website/js/vendor/tabulator/js/modules/format.min.js [deleted file]
website/js/vendor/tabulator/js/modules/group_rows.min.js [deleted file]
website/js/vendor/tabulator/js/modules/history.min.js [deleted file]
website/js/vendor/tabulator/js/modules/menu.min.js [deleted file]
website/js/vendor/tabulator/js/modules/page.min.js [deleted file]
website/js/vendor/tabulator/js/modules/reactive_data.min.js [deleted file]
website/js/vendor/tabulator/js/modules/resize_columns.min.js [deleted file]
website/js/vendor/tabulator/js/modules/resize_table.min.js [deleted file]
website/js/vendor/tabulator/js/modules/sort.min.js [deleted file]
website/js/vendor/tabulator/js/tabulator.es2015.js [deleted file]
website/js/vendor/tabulator/js/tabulator.min.js [deleted file]
website/js/vendor/tabulator/js/tabulator_core.min.js [deleted file]
website/js/vendor/tinymce/changelog.txt [deleted file]
website/js/vendor/tinymce/js/tinymce/jquery.tinymce.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/langs/de.js [deleted file]
website/js/vendor/tinymce/js/tinymce/langs/fr_FR.js [deleted file]
website/js/vendor/tinymce/js/tinymce/langs/readme.md [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/advlist/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/anchor/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/autolink/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/autoresize/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/autosave/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/bbcode/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/charmap/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/code/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/codesample/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/directionality/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/emoticons/js/emojis.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/emoticons/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/fullpage/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/help/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/hr/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/image/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/imagetools/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/importcss/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/link/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/lists/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/media/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/noneditable/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/paste/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/preview/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/print/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/quickbars/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/save/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/table/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/template/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/textcolor/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/textpattern/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/toc/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/visualchars/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/plugins/wordcount/plugin.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/content/dark/content.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/content/default/content.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/content/document/content.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/content/writer/content.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/content.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/skin.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css [deleted file]
website/js/vendor/tinymce/js/tinymce/themes/mobile/theme.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/themes/silver/theme.min.js [deleted file]
website/js/vendor/tinymce/js/tinymce/tinymce.min.js [deleted file]
website/lib/config.php
website/robots.txt
website/tmpl/index.html.mustache
website/tmpl/pages/computers.tt [deleted file]
website/tmpl/pages/contact.html.mustache
website/tmpl/pages/development.html.mustache [deleted file]
website/tmpl/pages/en/privacy.tt [deleted file]
website/tmpl/pages/en/terms.tt [deleted file]
website/tmpl/pages/en/useterms.tt [deleted file]
website/tmpl/pages/error.html.mustache [new file with mode: 0644]
website/tmpl/pages/home.html.mustache
website/tmpl/pages/hosting.tt [deleted file]
website/tmpl/pages/it-service.html.mustache [deleted file]
website/website [deleted symlink]

index 3be2b6f..acb79d3 100644 (file)
@@ -1,3 +1,4 @@
 cms/lib/perl5
 apps/lib
 website/lib/vendor/*
 cms/lib/perl5
 apps/lib
 website/lib/vendor/*
+OLD/*
\ No newline at end of file
diff --git a/admin/.htaccess b/admin/.htaccess
new file mode 100644 (file)
index 0000000..0969f29
--- /dev/null
@@ -0,0 +1,9 @@
+
+RewriteEngine on
+DirectoryIndex index.php index.html 
+php_flag display_startup_errors on
+php_flag display_errors on
+php_flag html_errors on
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule "^(.*)$" "index.php"  [NC,L,QSA]
\ No newline at end of file
diff --git a/admin/css/fonts/appicons.svg b/admin/css/fonts/appicons.svg
new file mode 100644 (file)
index 0000000..c8119b9
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="appicons" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
+<glyph unicode="&#xe900;" glyph-name="list" d="M256 879.829v-153.6h768v153.6h-768zM0 726.229h153.6v153.6h-153.6v-153.6zM256 367.829h768v153.6h-768v-153.6zM0 367.829h153.6v153.6h-153.6v-153.6zM256 9.429h768v153.6h-768v-153.6zM0 9.429h153.6v153.6h-153.6v-153.6z" />
+<glyph unicode="&#xe901;" glyph-name="menu" d="M0 513.749h1024v-216.661h-1024v216.661zM0 152.619h1023.659v-216.619h-1023.659v216.619zM0 874.837h1024v-216.661h-1024v216.661z" />
+<glyph unicode="&#xe902;" glyph-name="mport" d="M1024-63.915l-1024-0.085v428.672l153.6 0.171v-275.243l718.421-0.768v275.84l151.979 0.085zM411.989 680.491v279.509h192.512v-279.509h211.456l-303.957-385.067-303.915 385.067z" />
+<glyph unicode="&#xe903;" glyph-name="export" d="M1024-63.915l-1024-0.085v428.672l153.6 0.171v-275.243l718.421-0.768v275.84l151.979 0.085zM411.989 574.933v-279.509h192.512v279.509h211.456l-303.957 385.067-303.915-385.067z" />
+<glyph unicode="&#xe904;" glyph-name="add" d="M896.896 564.352h-271.317v271.275h-225.365v-271.275h-271.317v-225.408h271.317v-271.275h225.365v271.275h271.317z" />
+<glyph unicode="&#xe905;" glyph-name="trash" d="M979.499 870.955h-267.179c0 27.051 5.205 89.045-51.925 89.045h-252.032c-56.789 0-52.139-61.995-52.139-89.045h-267.093c-29.355 0-44.501-61.995-44.501-89.003h979.371c0 26.965-15.147 89.003-44.501 89.003zM133.632 737.408l-2.347-745.387c0-30.933 27.179-56.021 60.715-56.021h683.989c33.579 0 60.757 25.088 60.757 55.979l-1.792 745.387h-801.323zM311.723 25.173h-89.045v623.189h89.045v-623.189zM489.771 25.173h-89.045v623.189h89.003v-623.189zM667.819 25.173h-89.045v623.189h89.045v-623.189zM845.909 25.173h-89.003v623.189h89.003v-623.189z" />
+<glyph unicode="&#xe906;" glyph-name="close" d="M704.768 802.859l-191.872-191.872-191.829 191.829-159.317-159.317 191.829-191.872-191.872-191.829 159.36-159.36 191.872 191.829 191.829-191.829 159.36 159.36-191.787 191.787 191.829 191.872z" />
+<glyph unicode="&#xe907;" glyph-name="back" d="M725.077-64l-517.717 512.043 517.717 511.957 135.083-133.547-382.677-378.411 382.677-378.453-135.083-133.589z" />
+<glyph unicode="&#xe908;" glyph-name="next" d="M342.4-64l-135.040 133.589 382.635 378.453-382.635 378.411 135.040 133.547 517.717-512-517.717-512z" />
+<glyph unicode="&#xe909;" glyph-name="back2" d="M593.323 603.179h430.677v-296.661h-430.677v-325.76l-593.323 468.309 593.323 468.267z" />
+<glyph unicode="&#xe90a;" glyph-name="next2" d="M430.677 603.179h-430.677v-296.661h430.677v-325.76l593.323 468.309-593.323 468.267z" />
+<glyph unicode="&#xe90b;" glyph-name="user" d="M512 960c-282.325 0-512-229.675-512-512s229.675-512 512-512c282.325 0 512 229.675 512 512s-229.675 512-512 512zM825.216 99.456c2.219 4.437 2.347 7.509-0.469 8.704-21.973 9.515-43.605 18.688-65.109 28.032-21.461 9.429-42.325 18.603-62.507 27.477-20.267 8.917-38.315 16.768-54.101 23.68v86.571c0 4.011 1.195 10.197 3.712 18.944 2.432 8.619 5.205 17.536 8.107 27.008 3.413 10.795 7.125 22.4 11.136 34.645 8.832 16.512 16.043 34.603 22.571 53.675 1.835-1.152 3.755-2.133 5.803-2.517 19.285-3.328 33.835 33.408 38.016 78.208 4.011 43.989 8.491 57.771-20.907 60.032 0 2.048 0.427 4.096 0.427 6.101 0 50.389-5.205 92.928-15.957 127.701-10.539 34.688-11.051 59.733-29.483 81.237-18.475 21.461-54.101 40.192-78.507 49.92-24.576 9.6-50.475 14.336-78.080 14.336-28.203 0-54.699-12.459-79.189-22.315-24.448-9.941-63.744-20.224-81.963-41.941-18.261-21.76-14.507-47.787-25.131-82.347-10.325-33.749-12.715-83.584-12.715-132.523-0.555 0-0.896 0-1.323 0-30.933-1.92-26.155-15.531-22.059-60.245 4.181-44.8 18.688-81.493 37.973-78.123 1.92 0.384 3.669 1.237 5.376 2.304 6.741-20.139 14.251-39.125 23.552-56.32 3.797-11.307 7.339-22.059 10.325-31.787 2.475-8.363 4.821-16.64 6.997-24.747 2.176-8.277 3.883-14.251 4.779-18.176v-84.437c-15.275-6.912-32.939-14.805-53.291-23.765-20.224-8.832-41.685-18.091-64.427-28.032-22.571-9.899-45.483-19.712-68.395-29.611-1.024-0.469-1.621-1.237-2.176-2.005-89.472 85.461-145.536 205.611-145.536 338.859 0 258.773 210.56 469.333 469.333 469.333s469.333-210.56 469.333-469.333c0-138.368-60.544-262.528-156.117-348.544z" />
+<glyph unicode="&#xe90c;" glyph-name="usergroup" d="M512 960c-282.325 0-512-229.675-512-512s229.675-512 512-512c282.325 0 512 229.717 512 512s-229.675 512-512 512zM512 917.333c258.773 0 469.333-210.56 469.333-469.333 0-70.869-16.256-137.856-44.501-198.187-5.973 2.645-12.032 5.291-17.792 7.851-10.496 4.565-19.84 8.661-28.075 12.331v44.971c0 2.091 0.683 5.333 1.92 9.813s2.645 9.173 4.267 14.123c1.749 5.547 3.669 11.563 5.76 17.963 4.565 8.576 8.32 18.048 11.733 27.861 0.896-0.64 2.005-1.067 2.987-1.28 10.069-1.664 17.579 17.323 19.755 40.619 2.091 22.912 4.48 30.037-10.837 31.189 0 1.109 0.171 2.133 0.171 3.243 0 26.112-2.645 48.256-8.235 66.347-5.504 18.091-5.76 31.104-15.317 42.197-9.685 11.179-28.16 20.864-40.832 25.899-12.757 4.992-26.155 7.509-40.576 7.509-14.677 0-28.501-6.4-41.173-11.605-12.672-5.163-33.067-10.496-42.496-21.803-9.6-11.307-7.68-24.789-13.099-42.752-5.419-17.621-6.656-43.52-6.656-68.907-0.256 0-0.427 0-0.683 0-6.4-0.427-9.771-1.877-11.52-4.821 2.731-4.736 1.579-13.312 0.256-27.605 2.176-22.699 9.685-41.173 19.499-39.509 0.896 0.213 1.92 0.64 2.731 1.195 3.499-10.411 7.424-20.437 12.245-29.312 2.091-5.931 3.84-11.477 5.419-16.469 1.237-4.437 2.517-8.661 3.669-12.971 1.152-4.267 2.005-7.339 2.517-9.429v-43.904c-8.021-3.541-17.152-7.637-27.733-12.288-10.496-4.565-21.589-9.472-33.493-14.592-5.589-2.475-11.179-4.907-16.768-7.253 3.584-1.579 7.083-3.157 11.093-4.864 11.819-5.248 23.936-10.581 36.48-16.043 12.587-5.504 25.259-10.88 38.101-16.427 12.843-5.504 25.088-10.581 36.651-15.403 11.52-4.693 21.845-8.96 31.104-12.8 9.259-3.755 16.683-6.571 22.485-8.533 5.76-2.091 12.928-10.411 19.371-19.499-4.907-5.803-10.155-11.307-15.317-16.853-0.171 0.171-0.213 0.384-0.384 0.555-8.021 9.515-18.517 16.512-31.403 21.12-6.187 2.133-14.165 5.248-24.064 9.216-9.899 4.096-20.992 8.661-33.323 13.696-12.331 5.12-25.429 10.539-39.083 16.427-13.739 5.973-27.349 11.691-40.661 17.536-13.483 5.931-26.496 11.605-39.168 17.152-12.587 5.589-23.936 10.496-33.749 14.848v54.144c0 2.475 0.683 6.357 2.347 11.861 1.493 5.333 3.243 10.965 5.077 16.896 2.091 6.741 4.437 13.952 6.912 21.717 5.504 10.24 9.984 21.589 14.080 33.493 1.152-0.768 2.347-1.28 3.669-1.579 12.075-2.048 21.163 20.864 23.68 48.896 2.603 27.52 5.419 36.139-13.013 37.547 0 1.323 0.256 2.56 0.256 3.883 0 31.403-3.243 58.069-9.899 79.787-6.571 21.717-6.912 37.376-18.517 50.731-11.563 13.44-33.835 25.173-49.067 31.189-15.317 6.016-31.573 9.003-48.811 9.003-17.621 0-34.219-7.765-49.451-13.909-15.317-6.229-39.936-12.672-51.285-26.283-11.52-13.568-9.173-29.781-15.787-51.413-6.528-21.077-8.021-52.309-8.021-82.816-0.299 0-0.512 0-0.768 0-19.371-1.237-16.384-9.728-13.781-37.717 2.56-27.947 11.648-50.944 23.68-48.853 1.195 0.213 2.304 0.811 3.371 1.408 4.181-12.544 8.917-24.448 14.677-35.2 2.517-7.040 4.608-13.739 6.485-19.84 1.536-5.291 2.987-10.411 4.437-15.531 1.323-5.12 2.475-8.875 2.987-11.349v-52.736c-9.6-4.352-20.608-9.301-33.365-14.848-12.629-5.547-26.027-11.349-40.235-17.579-14.123-6.229-28.416-12.331-42.752-18.517-14.379-6.187-27.989-12.032-41.003-17.323-12.928-5.419-24.619-10.155-35.072-14.336-10.539-4.224-19.029-7.424-25.557-9.557-12.672-4.608-22.912-11.605-30.976-21.12-4.651-5.376-8.576-10.923-12.075-16.512-7.381 7.211-14.336 14.848-21.291 22.528 7.595 7.936 15.317 14.805 20.309 16.683 6.059 1.92 14.037 4.864 23.808 8.832 9.771 3.883 20.779 8.363 32.896 13.312 12.117 4.992 24.875 10.453 38.272 16.299 13.44 5.717 26.795 11.52 40.021 17.323 13.312 5.76 25.771 11.179 37.675 16.427 1.493 0.64 2.731 1.195 4.267 1.877-5.376 2.304-10.795 4.651-16.171 6.955-11.179 4.907-22.016 9.643-32.555 14.208-10.496 4.693-19.84 8.789-28.075 12.331v45.013c0 2.048 0.64 5.291 1.963 9.813 1.237 4.437 2.645 9.173 4.267 14.123 1.749 5.547 3.712 11.605 5.717 17.92 4.608 8.576 8.363 18.133 11.733 27.904 0.981-0.64 1.963-1.109 3.029-1.237 10.069-1.707 17.579 17.365 19.712 40.619 2.133 22.869 4.48 29.995-10.795 31.189 0 1.067 0.213 2.091 0.213 3.157 0 26.112-2.773 48.341-8.277 66.389-5.547 18.091-5.76 31.061-15.317 42.197-9.643 11.264-28.16 20.949-40.875 26.027-12.715 4.992-26.197 7.467-40.576 7.467-14.635 0-28.416-6.4-41.131-11.563s-33.152-10.496-42.539-21.845c-9.515-11.307-7.637-24.789-13.141-42.795-5.376-17.536-6.571-43.477-6.613-68.907-0.171 0-0.427 0.043-0.64 0-16.085-0.981-13.611-8.021-11.477-31.275s9.685-42.325 19.712-40.576c0.981 0.128 1.877 0.64 2.773 1.152 3.499-10.453 7.424-20.395 12.203-29.312 2.048-5.845 3.883-11.435 5.419-16.469 1.237-4.437 2.475-8.704 3.627-12.928 1.109-4.309 1.963-7.424 2.475-9.472v-43.861c-7.936-3.627-17.109-7.723-27.691-12.331-7.851-3.413-16.469-7.211-25.045-10.965-31.744 63.232-50.048 134.315-50.048 209.707 0 258.816 210.56 469.333 469.333 469.333z" />
+<glyph unicode="&#xe90d;" glyph-name="edituser" d="M551.509 97.152l110.677-102.997 264.149 268.416-110.592 102.997-264.235-268.416zM1008.811 411.307l-41.984 39.083c-19.669 18.261-50.517 17.493-69.163-1.536l-52.736-54.059 112.853-105.003 52.736 53.931c18.603 19.072 17.877 49.323-1.707 67.584zM496.555-64l138.325 29.952-108.331 100.779-29.995-130.731zM755.883 378.88l-137.344 57.259 0.171 0.128v70.827c0 3.285 0.981 8.405 3.072 15.616 2.005 7.083 4.267 14.507 6.656 22.272 2.816 8.875 5.931 18.432 9.173 28.587 7.253 13.568 13.269 28.544 18.603 44.203 1.579-0.939 3.157-1.749 4.821-2.005 15.829-2.731 27.819 27.52 31.232 64.427 3.328 36.309 7.083 47.616-17.152 49.536 0 1.707 0.341 3.285 0.341 5.035 0 41.515-4.352 76.629-13.099 105.301-8.832 28.672-9.173 49.28-24.405 66.944-15.232 17.707-44.587 33.152-64.811 41.131-20.139 7.893-41.515 11.861-64.256 11.861-23.253 0-45.141-10.24-65.28-18.389-20.181-8.235-52.608-16.725-67.627-34.645-15.061-17.877-11.947-39.339-20.693-67.84-8.576-27.861-10.496-68.992-10.496-109.312-0.384 0-0.683 0-1.024 0-25.557-1.621-21.589-12.757-18.219-49.707 3.456-36.864 15.36-67.157 31.275-64.341 1.579 0.256 3.072 1.024 4.48 1.877 5.504-16.555 11.733-32.341 19.371-46.464 3.243-9.344 6.101-18.176 8.576-26.197 2.005-6.955 3.925-13.739 5.803-20.437 1.749-6.827 3.157-11.733 3.925-14.976v-69.589c-12.587-5.717-27.179-12.16-43.947-19.541-16.683-7.339-34.347-14.976-53.163-23.211-18.603-8.107-37.461-16.256-56.363-24.363-18.944-8.235-36.949-15.872-54.101-22.997-17.067-6.997-32.512-13.355-46.336-18.816-13.824-5.589-25.003-9.771-33.621-12.501-16.683-6.187-30.251-15.403-40.832-27.861-10.581-12.373-18.987-25.045-25.045-38.101-7.339-15.104-12.8-31.019-16.469-47.616v-77.525h478.507l248.277 251.435z" />
+<glyph unicode="&#xe90e;" glyph-name="userconfig" d="M1004.032 286.165h-23.979c-10.965 0-22.699 8.661-25.941 19.157l-13.781 33.493c-5.12 9.6-3.029 23.979 4.693 31.659l17.024 17.067c7.851 7.765 7.851 20.48 0 28.245l-28.288 28.331c-7.808 7.765-20.48 7.765-28.331 0l-17.024-16.981c-7.723-7.851-22.101-9.899-31.744-4.736l-33.451 13.824c-10.411 3.243-19.115 14.933-19.115 25.899v23.979c0 11.008-8.96 20.011-19.968 20.011h-40.021c-10.965 0-20.011-9.003-20.011-20.011v-23.979c0-11.008-8.619-22.656-19.029-25.899l-33.536-13.824c-9.771-5.163-23.979-3.072-31.829 4.736l-17.024 16.981c-7.765 7.765-20.437 7.765-28.288 0l-28.203-28.331c-7.893-7.723-7.893-20.48 0-28.245l16.896-17.067c7.851-7.68 9.984-22.101 4.736-31.659l-13.739-33.579c-3.285-10.581-14.976-19.072-25.941-19.072h-23.979c-11.008 0-20.053-9.003-20.053-20.011v-40.021c0-11.008 9.045-20.011 20.053-20.011h23.979c11.008 0 22.656-8.576 25.899-19.072l13.781-33.493c5.163-9.771 3.072-24.064-4.736-31.829l-16.939-16.896c-7.851-7.851-7.851-20.565 0-28.416l28.245-28.16c7.851-7.851 20.523-7.851 28.288 0l17.024 16.981c7.765 7.765 22.101 9.813 31.701 4.651l33.579-13.824c10.411-3.243 19.029-14.933 19.029-25.984v-23.936c0-10.923 9.045-19.925 20.011-19.925h40.021c11.008 0 19.968 9.003 19.968 19.925v23.936c0 11.093 8.704 22.741 19.115 25.984l33.579 13.824c9.643 5.163 23.979 3.072 31.787-4.651l16.896-16.981c7.851-7.851 20.523-7.851 28.331 0l28.288 28.16c7.851 7.851 7.851 20.565 0 28.416l-17.024 16.896c-7.765 7.765-9.813 22.101-4.693 31.829l13.781 33.493c3.243 10.496 15.019 19.072 25.941 19.072h23.979c10.965 0 19.968 9.003 19.968 20.011v40.021c0.043 11.008-8.96 20.011-19.925 20.011zM864.128 246.187c0-55.168-44.8-99.925-100.011-99.925-55.253 0-100.053 44.757-100.053 99.925 0 55.253 44.8 100.011 100.053 100.011 55.211-0.043 100.011-44.8 100.011-100.011zM461.312 267.179c0 73.899 37.547 139.008 94.549 177.451l0.171 0.128v66.773c0 3.072 0.939 7.936 2.901 14.72 1.877 6.656 4.011 13.653 6.272 21.035 2.645 8.363 5.589 17.408 8.619 26.965 6.869 12.8 12.501 26.923 17.536 41.685 1.493-0.896 2.944-1.664 4.523-1.877 15.019-2.603 26.283 25.899 29.44 60.757 3.157 34.261 6.699 44.928-16.171 46.72 0 1.579 0.341 3.115 0.341 4.736 0 39.125-4.053 72.277-12.416 99.328-8.192 27.008-8.576 46.464-22.955 63.104-14.379 16.683-42.027 31.232-61.099 38.784-18.901 7.467-39.083 11.179-60.587 11.179-21.931 0-42.539-9.643-61.568-17.365-18.987-7.68-49.579-15.701-63.744-32.64-14.208-16.896-11.264-37.12-19.541-64-8.021-26.283-9.856-65.024-9.899-103.040-0.341 0-0.64 0-0.939 0-24.107-1.536-20.352-12.075-17.152-46.933 3.285-34.773 14.507-63.317 29.483-60.672 1.451 0.213 2.859 0.939 4.224 1.749 5.163-15.616 11.051-30.464 18.219-43.819 3.072-8.789 5.76-17.109 8.064-24.704 1.877-6.528 3.712-12.971 5.461-19.328 1.664-6.4 2.987-11.093 3.712-14.123v-65.621c-11.904-5.419-25.685-11.52-41.429-18.475-15.744-6.869-32.427-14.123-50.133-21.888-17.536-7.723-35.328-15.317-53.163-22.997-17.835-7.765-34.816-14.933-51.029-21.675-16.085-6.571-30.635-12.587-43.691-17.749-13.013-5.12-23.552-9.045-31.659-11.733-15.744-5.76-28.544-14.507-38.528-26.24-9.984-11.648-17.92-23.595-23.595-35.925-6.912-14.165-12.075-29.227-15.531-44.971v-73.003h494.293c-20.779 32.896-32.981 71.808-32.981 113.664z" />
+<glyph unicode="&#xe90f;" glyph-name="options" d="M984.704 526.805h-47.232c-21.675 0-44.757 16.939-51.115 37.589l-27.136 65.963c-10.112 19.029-6.016 47.275 9.216 62.549l33.621 33.536c15.317 15.36 15.317 40.405 0 55.68l-55.808 55.68c-15.275 15.36-40.363 15.36-55.723 0l-33.579-33.493c-15.275-15.317-43.52-19.499-62.635-9.216l-65.792 27.093c-20.651 6.443-37.675 29.397-37.675 51.115v47.275c0.043 21.675-17.707 39.424-39.381 39.424h-78.848c-21.589 0-39.339-17.749-39.339-39.424v-47.189c0-21.717-16.939-44.672-37.589-51.115l-65.877-27.136c-19.2-10.283-47.275-6.144-62.635 9.259l-33.579 33.451c-15.275 15.36-40.32 15.36-55.723 0l-55.552-55.68c-15.445-15.232-15.445-40.32 0-55.68l33.323-33.536c15.36-15.275 19.627-43.52 9.301-62.549l-27.051-66.005c-6.528-20.736-29.44-37.589-51.157-37.589h-47.275c-21.675 0-39.467-17.749-39.467-39.381v-78.763c0-21.675 17.792-39.339 39.467-39.339h47.232c21.717-0.128 44.629-17.067 51.072-37.76l27.179-65.92c10.197-19.243 6.101-47.403-9.301-62.677l-33.451-33.493c-15.36-15.317-15.36-40.32 0-55.851l55.637-55.509c15.403-15.403 40.448-15.403 55.723 0l33.579 33.493c15.275 15.232 43.477 19.328 62.421 9.173l66.091-27.264c20.651-6.4 37.589-29.397 37.589-51.157v-47.104c0-21.675 17.749-39.253 39.339-39.253h78.848c21.675 0 39.424 17.579 39.424 39.253v47.104c0 21.76 16.981 44.757 37.675 51.157l66.005 27.264c19.029 10.155 47.232 6.101 62.677-9.173l33.323-33.493c15.317-15.403 40.405-15.403 55.723 0l55.808 55.509c15.317 15.488 15.317 40.491 0 55.851l-33.621 33.493c-15.189 15.232-19.328 43.435-9.216 62.677l27.136 65.92c6.357 20.651 29.525 37.632 51.115 37.632h47.232c21.632 0 39.296 17.707 39.296 39.339v78.891c0 21.632-17.664 39.381-39.296 39.381zM709.077 448c0-108.672-88.149-196.779-196.821-196.779-108.885 0-197.12 88.064-197.12 196.779 0 108.8 88.192 196.992 197.12 196.992 108.672 0.043 196.821-88.192 196.821-196.992z" />
+<glyph unicode="&#xe910;" glyph-name="info" d="M512.043 960c-282.795 0-512.043-229.248-512.043-512s229.248-512 512.043-512c282.709 0 511.957 229.248 511.957 512s-229.248 512-511.957 512zM504.277 787.2c38.613 0 68.523-28.971 68.523-67.541 0-36.693-29.909-67.584-69.504-67.584-35.712 0-67.584 30.891-67.584 67.584 0.043 38.571 31.915 67.541 68.565 67.541zM635.563 152.917h-247.125v30.933c55.979 6.741 61.781 10.667 61.781 79.147v191.147c0 63.744-6.741 66.603-53.12 74.325v27.989c57.899 6.784 121.643 19.328 175.701 34.731v-328.235c0-66.645 4.779-71.424 62.763-79.147v-30.891z" />
+<glyph unicode="&#xe911;" glyph-name="help" d="M512.085 960c-282.752 0-511.915-229.163-511.915-512.043 0-282.581 229.163-511.957 511.915-511.957s511.915 229.376 511.915 511.957c0 282.88-229.163 512.043-511.915 512.043zM585.429 100.309h-139.648v134.955h139.648v-134.955zM718.635 493.568c-11.776-16.811-34.517-38.272-68.053-64.469l-32.981-25.685c-18.048-13.995-29.952-30.379-35.925-49.024-3.755-11.819-5.76-30.208-6.059-55.125h-126.592c1.835 52.608 6.869 88.917 14.848 109.013 8.107 20.096 28.885 43.264 62.421 69.419l34.005 26.624c11.179 8.405 20.224 17.621 27.051 27.563 12.331 17.109 18.603 35.968 18.603 56.533 0 23.68-6.912 45.184-20.651 64.64-13.867 19.456-39.125 29.269-75.733 29.269-36.053 0-61.568-11.989-76.672-35.968-15.061-23.979-22.613-48.896-22.613-74.709h-134.997c3.755 88.661 34.731 151.552 92.928 188.629 36.736 23.68 81.92 35.499 135.509 35.499 70.357 0 128.853-16.853 175.36-50.432 46.549-33.664 69.845-83.499 69.845-149.461 0-40.491-10.155-74.581-30.293-102.315z" />
+<glyph unicode="&#xe912;" glyph-name="filter" d="M938.112 731.733h-937.6l333.184-523.819v-271.915h245.376v273.067zM0 960h938.667v-183.424h-938.667v183.424z" />
+<glyph unicode="&#xe913;" glyph-name="print" d="M973.397 797.269h-922.837c-27.947 0-50.56-22.699-50.56-50.603v-455.083c0-27.904 22.613-50.603 50.56-50.603h108.885v-245.675h700.032v245.675h113.963c27.861 0 50.56 22.656 50.56 50.603v455.083c-0.043 27.904-22.699 50.603-50.603 50.603zM816.811 38.016h-614.699v467.925h614.699v-467.925zM263.125 960h497.664v-105.643h-497.664v105.643z" />
+<glyph unicode="&#xe914;" glyph-name="email" d="M1024 141.056l-359.893 278.741 359.893 352.896zM0 788.011l375.211-363.136-375.211-308.907zM580.267 326.656c-21.333-21.035-69.12-21.035-98.603 6.997l-70.997 55.765-378.667-301.568 992 1.067-380.16 290.389-63.573-52.651zM1005.227 812.757l-422.229-413.227c-28.075-24.149-73.771-24.149-102.101 0l-448.896 412.459 973.227 0.768z" />
+<glyph unicode="&#xe915;" glyph-name="phone" d="M1024 221.397l-259.072 127.061c0 0-95.317-141.696-117.291-136.875-12.245 2.731-13.909 3.072-24.491 7.339-38.016 15.232-132.395 58.581-221.227 138.923l-0.725-0.853c-87.765 79.701-140.032 168.107-158.848 204.075-5.291 9.941-5.888 11.691-9.856 23.552-7.125 21.376 124.117 130.688 124.117 130.688l-152.96 244.693c0 0-202.795-15.744-203.648-217.515-1.109-275.328 239.403-501.589 239.403-501.589 130.816-119.979 325.803-272.683 589.056-244.48 200.661 21.504 195.541 224.981 195.541 224.981z" />
+<glyph unicode="&#xe916;" glyph-name="video" d="M726.955 179.029c0-49.365-40.149-89.429-89.557-89.429h-547.968c-49.408 0.043-89.429 40.064-89.429 89.429v530.603c0 49.365 40.021 89.472 89.429 89.472h547.968c49.365 0 89.557-40.107 89.557-89.472v-530.603zM786.389 603.051v-334.848l237.611-183.723v702.251z" />
+<glyph unicode="&#xe917;" glyph-name="website" d="M512.043 960c-282.709 0-512.043-229.248-512.043-512s229.291-512 512-512c282.709 0 512 229.248 512 512s-229.248 512-511.957 512zM470.229 375.808c0 0-158.677 36.693-189.568 98.603-62.208 124.715-69.589 100.608-77.227 139.221-7.893 38.656 3.797 117.973 3.797 117.973s-1.92-15.488 75.307 84.992c54.997 71.296 183.509 45.909 228.181 30.891 18.517-6.101-79.189 0-83.2-52.224-3.797-52.096 7.893-44.501 52.309-56.021 44.587-11.52 42.581 90.965 42.581 90.965l67.627-40.619 25.216-25.216c0 0 6.997-62.635-15.616-90.88-25.771-32.384-60.416-32.085-65.579-88.875-3.84-41.515 3.797-110.208 3.797-110.208s-8.789-11.392-21.291-1.877c-17.707 13.397-36.608 36.48-50.219 63.744-23.168 46.464-90.88 13.525-92.8 7.765-37.376-112.256 98.603-135.296 98.603-135.296l-1.92-32.939zM530.048-10.923c7.808 30.933 85.205 100.608 69.589 131.499-15.36 30.933-46.293 30.933-77.227 54.187-31.019 23.168-33.579 95.317 15.403 139.179 46.507 41.6 100.608 46.379 100.608 46.379s100.48-30.891 131.371-38.571c31.019-7.808 100.608 15.36 100.608-38.699 0.043-201.259-347.989-324.949-340.352-293.973z" />
+<glyph unicode="&#xe918;" glyph-name="edit" d="M107.093 248.875l214.827-199.979 512.683 520.96-214.699 199.893-512.811-520.875zM994.603 858.411l-81.664 75.947c-38.059 35.413-98.091 33.963-134.229-3.029l-102.357-104.875 219.136-203.819 102.229 104.704c36.224 37.12 34.816 95.787-3.115 131.072zM0.299-64l268.459 58.24-210.133 195.584-58.325-253.824z" />
+<glyph unicode="&#xe919;" glyph-name="pdf" d="M940.459 611.499h-344.96v344.917zM496.555 313.515c-13.995 0-22.997-1.237-28.331-2.432v-180.907c5.333-1.28 13.952-1.28 21.717-1.28 56.661-0.384 93.525 30.805 93.525 96.853 0.512 57.429-33.152 87.765-86.912 87.765zM254.805 314.325c-12.715 0-21.376-1.195-25.899-2.432v-81.707c5.333-1.152 11.904-1.621 20.949-1.621 33.237 0 53.717 16.853 53.717 45.184-0.043 25.429-17.664 40.576-48.768 40.576zM506.624 534.229v425.771h-428.416v-1024h862.251l1.408 598.229h-435.243zM340.096 209.749c-21.333-20.139-52.907-29.141-89.813-29.141-8.192 0-15.616 0.384-21.376 1.237v-98.859h-61.909v272.811c19.328 3.285 46.336 5.76 84.48 5.76 38.528 0 66.091-7.424 84.48-22.229 17.707-13.909 29.525-36.864 29.525-63.957s-8.96-50.048-25.387-65.621zM604.075 115.797c-29.227-24.192-73.515-35.712-127.659-35.712-32.384 0-55.381 2.048-70.955 4.139v271.573c22.912 3.712 52.864 5.76 84.437 5.76 52.48 0 86.656-9.472 113.28-29.568 28.715-21.291 46.763-55.339 46.763-104.192 0-52.949-19.328-89.429-45.867-112zM860.245 308.267h-106.24v-63.189h99.243v-50.901h-99.243v-111.104h-62.763v276.48h169.003v-51.285z" />
+<glyph unicode="&#xe91a;" glyph-name="categories" d="M5.461 960h1018.539v-170.325h-1018.539v170.325zM276.779 684.331h747.221v-170.325h-747.221v170.325zM277.035 400.469h746.965v-170.283h-746.965v170.283zM7.125 123.648h1016.875v-170.325h-1016.875v170.325z" />
+<glyph unicode="&#xe91b;" glyph-name="duplicate" d="M169.813 790.272l598.997-0.811-1.408 170.539h-767.403v-767.403h169.813zM224.64 735.36v-799.36h799.36v799.36h-799.36zM928.896 289.749h-258.645v-258.603h-85.333v258.603h-258.603v85.333h258.603v258.645h85.333v-258.645h258.645v-85.333z" />
+<glyph unicode="&#xe91c;" glyph-name="search" d="M1024 73.984l-275.499 275.499c89.685 152.917 67.328 355.541-66.731 489.6-158.336 158.464-413.056 161.536-567.765 6.827-154.624-154.624-151.595-409.344 6.827-567.808 137.984-137.899 348.8-157.909 503.083-58.88l271.829-273.493 128.256 128.256zM205.525 362.752c-110.507 110.677-112.683 288.469-4.736 396.416 107.904 107.989 285.824 105.813 396.373-4.736 110.507-110.507 112.683-288.384 4.651-396.288-107.947-108.032-285.653-105.856-396.288 4.608z" />
+<glyph unicode="&#xe91d;" glyph-name="image" d="M0 871.168v-834.389h1024v834.389h-1024zM296.96 745.771c70.571 0 127.701-57.173 127.701-127.701s-57.131-127.744-127.701-127.744c-70.443 0-127.659 57.173-127.659 127.744s57.216 127.701 127.659 127.701zM100.437 147.669l241.024 226.987 82.133-16.896 120.533 98.261 82.091-111.872 153.344 213.419 153.6-409.941h-832.725z" />
+<glyph unicode="&#xe91e;" glyph-name="music" d="M907.563 960l-578.432-171.989v-586.539c-38.528 13.44-86.101 13.781-133.248-2.859-90.88-32.085-144.853-114.005-120.533-182.997 24.32-68.907 117.76-98.816 208.683-66.688 73.941 26.069 122.667 85.035 125.483 143.232h0.256v5.931c0 3.072 0.299 6.144 0 9.216v508.544l416.939 123.989v-404.864c-38.613 13.696-86.4 14.165-133.888-2.603-90.923-32.085-144.896-114.005-120.533-182.955 24.32-68.949 117.717-98.859 208.725-66.773 74.155 26.24 123.008 85.675 125.44 144.085h0.981v733.269z" />
+<glyph unicode="&#xe91f;" glyph-name="location" d="M507.349 960c-206.592 0-374.016-167.424-374.016-374.016 0-206.549 374.016-649.984 374.016-649.984s374.016 443.435 374.016 649.984c0 206.592-167.424 374.016-374.016 374.016zM510.635 394.752c-102.827 0-186.112 83.413-186.112 186.24s83.285 186.155 186.112 186.155c102.869 0 186.24-83.371 186.24-186.155 0-102.827-83.371-186.24-186.24-186.24z" />
+<glyph unicode="&#xe920;" glyph-name="camera" d="M512 554.112c-84.779 0-153.771-69.035-153.771-153.771 0-84.907 68.992-153.899 153.771-153.899 84.821 0 153.899 68.992 153.899 153.899 0 84.736-69.077 153.771-153.899 153.771zM913.237 753.792h-138.325v9.131c0 40.789-32.981 73.856-73.813 73.856h-378.197c-40.747 0-73.813-33.109-73.813-73.856v-9.131h-138.368c-61.056 0-110.72-49.579-110.72-110.763v-467.029c0-61.056 49.664-110.677 110.72-110.677h802.56c61.184 0 110.763 49.621 110.763 110.677v467.029c-0.043 61.184-49.621 110.763-110.805 110.763zM512 162.005c-131.371 0-238.165 106.965-238.165 238.336 0 131.328 106.795 238.208 238.165 238.208 131.413 0 238.251-106.88 238.251-238.208 0-131.371-106.837-238.336-238.251-238.336z" />
+<glyph unicode="&#xe921;" glyph-name="sync" d="M1024 306.56l-108.971 210.859-206.208-106.581 120.277-38.869c-37.803-144.64-169.088-251.861-325.419-251.861-101.248 0-196.139 44.971-260.437 123.307l-69.376-56.96c81.408-99.243 201.643-156.117 329.813-156.117 191.019 0 356.309 132.608 410.453 306.048l109.867-29.824zM194.859 518.528c37.717 144.597 169.045 251.819 325.376 251.819 101.205 0 196.139-44.928 260.437-123.307l69.419 56.96c-81.408 99.243-201.643 156.117-329.813 156.117-190.976 0-352.725-135.296-406.912-308.651l-113.365 32.427 108.971-210.859 206.165 106.581-120.277 38.912z" />
+<glyph unicode="&#xe922;" glyph-name="badge" d="M429.099 870.741h165.803v-194.688h-165.803v194.688zM679.552 740.48v-140.501h-331.733v140.501h-347.819v-722.261h1024v722.261h-344.448zM454.699 153.003h-352.469v332.544h352.469v-332.544zM928.597 158.592h-378.795v86.485h378.795v-86.485zM928.597 398.080h-378.795v86.528h378.795v-86.528z" />
+<glyph unicode="&#xe923;" glyph-name="cart" d="M225.963 871.296l-208.853 46.037-17.109-77.611 164.693-36.309 200.448-647.723h643.243v79.573h-585.856zM514.645 20.181c0-46.492-37.689-84.181-84.181-84.181s-84.181 37.689-84.181 84.181c0 46.492 37.689 84.181 84.181 84.181s84.181-37.689 84.181-84.181zM979.371 20.181c0-46.492-37.689-84.181-84.181-84.181s-84.181 37.689-84.181 84.181c0 46.492 37.689 84.181 84.181 84.181s84.181-37.689 84.181-84.181zM976.853 316.629l47.147 415.829h-653.355l117.76-415.829z" />
+<glyph unicode="&#xe924;" glyph-name="home" d="M876.885 390.997v-408.491h-249.515v308.139h-236.757v-308.139h-252.416v408.491l369.707 397.312zM1024 407.552l-512.981 552.448-194.048-208.299v72.192c0 4.523-3.413 8.149-7.595 8.149h-106.411c-4.224 0-7.595-3.584-7.595-8.149l0.299-202.581-195.669-210.176 33.024-35.499 477.952 513.365 480.085-516.821 32.939 35.371z" />
+<glyph unicode="&#xe925;" glyph-name="alert" d="M1001.173 174.123l-384.981 666.88c-26.709 46.293-63.659 71.808-104.021 71.808s-77.312-25.472-104.064-71.765l-385.024-666.923c-26.709-46.293-30.336-91.051-10.155-125.952 20.181-34.944 60.715-54.229 114.176-54.229h770.048c53.461 0 93.995 19.243 114.176 54.187 20.139 34.944 16.555 79.701-10.155 125.995zM514.645 79.403c-35.797 0-64.768 28.971-64.768 64.811 0 35.669 28.971 64.683 64.768 64.683 35.755 0 64.768-29.013 64.768-64.683-0.043-35.84-29.056-64.811-64.768-64.811zM604.459 648.533c0 0-35.712-354.901-35.712-355.456l-0.043-0.555h-0.043c-1.28-26.155-25.557-47.061-55.424-47.061-30.848 0-55.765 22.101-55.765 49.195 0 0.811-33.536 353.92-33.536 353.92v0.128c0 49.835 40.363 90.283 90.24 90.283 49.792 0 90.24-40.448 90.24-90.283 0.043-0.085 0.043-0.128 0.043-0.171z" />
+<glyph unicode="&#xe926;" glyph-name="dataset" d="M899.755 787.797c0-95.105-176.87-172.203-395.051-172.203s-395.051 77.098-395.051 172.203c0 95.105 176.87 172.203 395.051 172.203s395.051-77.098 395.051-172.203zM899.328 720.939h-0.085c0 0.341 0.085 0.725 0.085 0.981 0 1.493-0.341 2.944-0.427 4.395-15.019-89.088-185.259-159.488-393.643-159.488-214.741 0-389.077 74.709-394.539 167.723-0.64-4.181-0.725-17.877-0.512-20.608v-150.827c-0.128-1.835-0.597-3.499-0.597-5.419 0-95.061 176.896-172.117 395.051-172.117 215.936 0 391.083 75.52 394.667 169.301v0.043c0 0.853 0.341 1.835 0.341 2.731 0 0.981-0.341 1.963-0.341 2.901v160.384zM899.328 497.579h-0.085c0 0.299 0.085 0.683 0.085 0.981 0 1.451-0.341 2.944-0.427 4.395-15.019-89.088-185.259-159.488-393.685-159.488-214.699 0-389.035 74.667-394.496 167.68-0.64-4.181-0.768-17.877-0.555-20.565v-150.827c-0.085-1.835-0.597-3.584-0.597-5.419 0-95.104 176.896-172.245 395.051-172.245 215.893 0 391.125 75.648 394.667 169.429v0c0 0.896 0.341 1.92 0.341 2.816 0 0.981-0.341 1.92-0.341 2.816v160.427zM899.328 271.488h-0.085c0 0.256 0.085 0.683 0.085 0.981 0 1.408-0.341 2.901-0.427 4.437-15.019-89.173-185.259-159.488-393.643-159.488-214.741 0-389.035 74.667-394.539 167.68-0.64-4.181-0.768-17.92-0.512-20.565v-150.912c-0.128-1.749-0.597-3.499-0.597-5.333 0-95.104 176.896-172.245 395.051-172.245 215.893 0 391.125 75.563 394.667 169.344v0.085c0 0.896 0.427 1.92 0.427 2.816s-0.427 1.835-0.427 2.816v160.384z" />
+<glyph unicode="&#xe927;" glyph-name="new" d="M388.095 960h247.869v-388.114h388.114v-247.869h-388.114v-388.075h-247.869v388.075h-388.095v247.869h388.095z" />
+<glyph unicode="&#xe928;" glyph-name="acrobat" d="M200.571 163.069c-65.7-20.885-113.75-73.848-130.451-94.215 0.202 3.96-6.842-8.705-6.842-8.705s2.706 3.609 6.842 8.705c-0.062-1.554-1.135-5.38-4.261-13.7-11.29-29.974 23.636-29.205 23.636-29.205 99.024 16.106 111.076 137.121 111.076 137.121zM767.851 265.049c-18.402 0.001-29.754-1.181-29.754-1.181 105.384-92.26 203.398-70.757 203.398-70.757 40.12 5.38-21.102 42.521-21.102 42.521-56.586 25.098-117.411 29.415-152.542 29.417zM407.732 514.149c0 0-38.052-198.070-85.604-256.815l263.733 42.154c0 0-131.431 126.545-178.128 214.661zM413.841 879.988c-0.327 0.031-0.655 0.025-0.984-0.018-2.95-0.391-5.989-3.865-8.935-12.118 0 0-14.213-73.113 21.382-194.629 0 0 30.308 96.404 7.495 170.219 0 0-8.827 35.592-18.958 36.546zM380.637 959.983c28.069 1.161 53.374-56.91 53.374-56.91 78.685-180.728 4.276-296.195 4.276-296.195 77.907-197.402 234.047-302.811 234.047-302.811 151.708 8.755 262.38-32.43 262.38-32.43 87.066-49.221 57.909-95.201 57.909-95.201-91.233-109.402-359.227 61.184-359.227 61.184l-345.434-62.554c-49.916-183.551-216.724-226.674-216.724-226.674-79.509-12.464-68.639 76.672-68.639 76.672 62.061 146.761 218.123 180.527 218.123 180.527 61.47 70.59 161.941 402.39 161.941 402.39-101.512 245.186-30.183 326.754-30.183 326.754 9.136 17.894 18.799 24.862 28.156 25.249z" />
+<glyph unicode="&#xe929;" glyph-name="agreement" d="M167.399 282.158h323.415c0 0 5.916-31.909 7.353-37.842h-330.768c-8.671 0-15.672 7.017-15.672 15.688v6.483c0 8.652 7.001 15.67 15.672 15.67zM166.669 403.101h286.113c0.132-1.774 0.017-3.559-0.635-5.28l-12.548-32.574h-272.93c-8.657 0-15.674 7.020-15.674 15.692v6.469c0 8.674 7.018 15.694 15.674 15.694zM164.498 521.836h277.904l3.993-8.972c1.888-4.295 0.969-9.356-2.323-12.716l-16.156-16.154h-263.419c-8.654 0-15.671 7.016-15.671 15.687v6.482c0 8.653 7.018 15.672 15.671 15.672zM742.87 626.071c-99.615 0-180.35-80.744-180.35-180.355 0-99.603 80.734-180.406 180.35-180.406 99.632 0 180.386 80.803 180.386 180.406 0 99.611-80.754 180.355-180.386 180.355zM163.987 639.365h326.827v-33.951c0-1.354-0.266-2.641-0.701-3.878h-326.127c-8.672 0-15.674 7.018-15.674 15.674v6.483c0 8.672 7.001 15.672 15.674 15.672zM742.875 723.684c3.759 0 7.519-1.433 10.393-4.299l28.972-28.939c3.14-3.158 7.869-4.042 11.913-2.239l37.526 16.592c7.435 3.325 16.073-0.082 19.366-7.485l19.533-44.028c1.802-4.042 5.862-6.7 10.325-6.7h48.152c8.106 0 14.672-6.549 14.672-14.686v-41.002c0-4.444 2.755-8.405 6.865-9.992l38.264-14.768c7.585-2.91 11.36-11.448 8.437-18.999l-17.345-44.912c-1.619-4.176-0.617-8.922 2.541-12.079l34.069-34.019c5.747-5.749 5.747-15.071 0-20.819l-29.005-28.972c-3.109-3.108-4.010-7.853-2.206-11.897l16.592-37.477c3.291-7.47-0.050-16.124-7.486-19.415l-43.993-19.515c-4.077-1.805-6.732-5.884-6.732-10.343v-48.088c0-8.152-6.566-14.753-14.672-14.753h-1.653l94.603-227.368c2.038-4.911-2.941-9.792-7.803-7.617l-110.426 48.72c-3.726 1.637-8.021-0.099-9.523-3.827l-45.115-109.69c-2.054-5.047-9.154-5.047-11.261-0.050l-91.812 220.185c-0.382 0.984-0.484 2.036-0.717 3.005-1.989-0.284-3.96-0.25-5.933 0.235l-91.844-220.601c-2.089-4.981-9.207-4.981-11.245 0.032l-45.129 109.69c-1.537 3.71-5.833 5.514-9.557 3.845l-110.424-48.722c-4.88-2.155-9.843 2.723-7.822 7.6l93.452 224.563h-0.135c-8.103 0-14.687 6.601-14.687 14.753v40.97c0 4.428-2.738 8.422-6.866 9.974l-38.228 14.786c-7.602 2.909-11.363 11.43-8.454 18.981l17.327 44.947c1.586 4.159 0.583 8.871-2.559 12.029l-34.051 34.019c-5.714 5.747-5.714 15.070 0 20.819l29.040 29.006c3.090 3.125 3.959 7.903 2.188 11.913l-16.624 37.493c-3.276 7.403 0.049 16.108 7.467 19.415l44.060 19.465c4.078 1.805 6.7 5.848 6.7 10.311v48.17c0 8.137 6.584 14.686 14.687 14.686h41.002c4.396 0 8.39 2.742 9.96 6.884l14.767 38.246c2.924 7.552 11.447 11.328 19.031 8.42l44.93-17.309c4.178-1.654 8.922-0.62 12.080 2.522l34.002 34.036c2.874 2.866 6.633 4.299 10.392 4.299zM163.837 771.753h206.951c8.672 0 15.689-6.999 15.689-15.672v-6.483c0-8.673-7.017-15.674-15.689-15.674h-206.951c-8.672 0-15.691 7.002-15.691 15.674v6.483c0 8.673 7.019 15.672 15.691 15.672zM26.215 955.958h721.289c14.469 0 26.233-11.762 26.233-26.214v-178.013l-15.84 15.805c-3.942 3.927-9.156 6.099-14.72 6.099s-10.778-2.172-14.72-6.081l-22.858-22.891v122.357c0 11.462-9.34 20.785-20.819 20.785h-595.842c-11.462 0-20.784-9.323-20.784-20.785v-752.636c0-11.478 9.322-20.801 20.784-20.801h353.1l-28.353-68.155h-387.471c-14.452 0-26.215 11.765-26.215 26.233v878.084c0 14.452 11.763 26.214 26.215 26.214z" />
+<glyph unicode="&#xe92a;" glyph-name="agreement2" d="M694.258 360.572c45.741 0 82.948-37.172 82.948-82.93 0-45.74-37.206-82.914-82.948-82.914-45.759 0-82.948 37.173-82.948 82.914 0 45.758 37.188 82.93 82.948 82.93zM694.249 380.505c-56.717 0-102.862-46.13-102.862-102.864 0-56.684 46.146-102.846 102.862-102.846 56.701 0 102.844 46.162 102.844 102.846 0 56.734-46.143 102.864-102.844 102.864zM694.249 404.545c70.032 0 126.851-56.82 126.851-126.904 0-41.364-19.832-78.082-50.455-101.248-2.643-2.003-3.333-5.657-1.767-8.603l43.586-80.843c1.97-3.653-1.65-7.829-5.557-6.379l-32.137 11.886c-3.113 1.162-6.581-0.387-7.809-3.487l-12.578-31.832c-1.716-4.396-7.812-4.733-10.034-0.573l-47.289 88.938c-1.196 2.241-4.428 2.241-5.64 0l-47.289-88.938c-2.239-4.161-8.317-3.823-10.050 0.573l-12.561 31.832c-1.227 3.1-4.696 4.649-7.829 3.487l-32.105-11.886c-3.921-1.449-7.542 2.727-5.571 6.379l43.568 80.843c1.583 2.947 0.893 6.6-1.749 8.603-30.64 23.166-50.472 59.884-50.472 101.248 0 70.084 56.803 126.904 126.886 126.904zM269.891 509.388h486.196c9.528 0 17.24-7.707 17.24-17.236v-7.12c0-9.527-7.712-17.237-17.24-17.237h-486.196c-9.53 0-17.24 7.71-17.24 17.237v7.12c0 9.529 7.71 17.236 17.24 17.236zM267.499 605.479h486.196c9.532 0 17.24-7.712 17.24-17.243v-7.123c0-9.529-7.708-17.241-17.24-17.241h-486.196c-9.529 0-17.24 7.712-17.24 17.241v7.123c0 9.53 7.711 17.243 17.24 17.243zM266.942 700.225h486.198c9.528 0 17.239-7.713 17.239-17.242v-7.124c0-9.53-7.711-17.241-17.239-17.241h-486.198c-9.53 0-17.239 7.711-17.239 17.241v7.124c0 9.529 7.708 17.242 17.239 17.242zM266.775 794.040h193.064c9.53 0 17.239-7.709 17.239-17.237v-7.12c0-9.528-7.708-17.237-17.239-17.237h-193.064c-9.529 0-17.24 7.709-17.24 17.237v7.12c0 9.528 7.711 17.237 17.24 17.237zM184.438 884.142c-12.355 0-22.407-10.050-22.407-22.407v-827.471c0-12.356 10.053-22.406 22.407-22.406h655.085c12.357 0 22.409 10.050 22.409 22.406v827.471c0 12.356-10.053 22.407-22.409 22.407zM115.481 960h792.997c16.162 0 29.309-13.148 29.309-29.309v-965.38c0-16.162-13.148-29.311-29.309-29.311h-792.997c-16.162 0-29.308 13.149-29.308 29.311v965.38c0 16.162 13.146 29.309 29.308 29.309z" />
+<glyph unicode="&#xe92b;" glyph-name="shop" d="M675.041 184.16c54.269 0 98.415-45.251 98.415-100.877 0-55.616-44.146-100.867-98.415-100.867-54.301 0-98.497 45.251-98.497 100.867 0 55.626 44.196 100.877 98.497 100.877zM201.965 184.16c54.274 0 98.419-45.251 98.419-100.877 0-55.616-44.145-100.867-98.419-100.867-54.24 0-98.365 45.251-98.365 100.867 0 55.626 44.124 100.877 98.365 100.877zM675.23 465.57c-19.584 0-36.136-14.043-39.354-33.374l-13.231-79.96c-1.467-8.79 1.054-17.789 6.886-24.654 6.219-7.354 15.418-11.573 25.218-11.573h5.022c19.282 0 36.188 12.792 41.125 31.114l2.904 10.854c5.243 19.261 11.794 43.469 18.96 72.074 2.094 8.397 0.23 17.166-5.134 24.043-5.614 7.186-14.447 11.477-23.69 11.477zM514.384 465.57c-19.383 0-35.165-15.77-35.165-35.146v-84.115c0-16.707 13.73-30.301 30.573-30.301 16.635 0 30.709 12.021 33.448 28.592l14.042 84.752c1.499 9.042-1.051 18.238-6.958 25.229-5.949 6.981-14.605 10.989-23.762 10.989zM354.736 465.57c-9.155 0-17.821-4.008-23.759-10.989-5.906-6.99-8.458-16.187-6.958-25.219l13.915-84.749c2.742-16.574 16.835-28.605 33.511-28.605 16.824 0 30.533 13.605 30.533 30.323v84.093c0 19.376-15.781 35.146-35.165 35.146zM183.028 465.57c-9.144 0-17.626-4.125-23.237-11.342-5.605-7.178-7.564-16.376-5.334-25.21 7.123-28.418 13.644-52.49 18.822-71.603l2.363-8.782c5.168-19.208 21.688-32.624 40.149-32.624h13.040c8.73 0 17.011 3.843 22.707 10.562 5.981 7.062 8.542 16.419 7.013 25.666l-13.232 79.96c-3.208 19.331-19.747 33.374-39.354 33.374zM710.22 687.863c-19.227 0-35.48-14.030-38.685-33.376l-12.094-73.25c-1.491-9.042 1.042-18.248 6.968-25.229 5.936-6.978 14.584-10.99 23.739-10.99h27.104c19.458 0 36.325 12.854 40.991 31.261 5.333 21.146 10.406 39.822 14.895 56.387l4.877 18.102c2.363 8.802 0.499 18.010-5.074 25.283-5.781 7.499-14.562 11.811-24.093 11.811zM513.864 687.863c-19.093 0-34.645-15.771-34.645-35.157v-72.543c0-19.374 15.783-35.146 35.165-35.146h26.981c19.603 0 36.157 14.032 39.365 33.346l12.187 73.269c1.467 8.875-1.030 17.907-6.875 24.79-6.155 7.274-15.227 11.44-24.875 11.44zM320.135 687.863c-9.637 0-18.688-4.166-24.856-11.44-5.843-6.883-8.365-15.934-6.874-24.79l12.197-73.269c3.19-19.314 19.751-33.346 39.367-33.346h26.845c19.384 0 35.165 15.771 35.165 35.146v72.543c0 19.386-15.512 35.157-34.573 35.157zM127.082 687.863c-9.326 0-18.211-4.342-23.793-11.616-5.302-6.906-7.073-15.654-4.824-24.019l5.333-19.75c4.398-16.208 9.366-34.45 14.595-55.032 4.874-19.093 21.854-32.427 41.304-32.427h31.469c9.174 0 17.832 4.013 23.759 10.99 5.928 6.981 8.459 16.187 6.979 25.229l-12.134 73.25c-3.178 19.346-20 33.376-39.97 33.376zM890.503 913.52l99.273-0.344c18.875-0.043 34.24-15.459 34.24-34.323s-15.344-34.198-34.199-34.198h-54.24c-19.595 0-36.532-13.293-41.208-32.314l-130.064-531.104c-6.438-26.291-29.824-44.645-56.885-44.645h-537.891c-27.083 0-50.594 18.342-57.178 44.615l-111.365 445.646c-2.447 9.792-0.282 19.96 5.896 27.906 6.219 7.938 15.563 12.491 25.656 12.491h741.183c19.563 0 36.594 13.217 41.439 32.154l17.875 69.688c6.707 26.158 30.259 44.428 57.468 44.428z" />
+<glyph unicode="&#xe92c;" glyph-name="calendar" d="M559.767 183.959h125.060v-121.123h-125.060zM365.241 183.959h125.012v-121.123h-125.012zM170.715 183.959h125.060v-121.123h-125.060zM744.356 374.453h125.059v-121.075h-125.059zM559.767 374.453h125.060v-121.075h-125.060zM365.241 374.453h125.012v-121.075h-125.012zM170.715 374.453h125.060v-121.075h-125.060zM744.356 568.979h125.059v-121.075h-125.059zM549.83 568.979h125.059v-121.075h-125.059zM355.304 568.979h125.060v-121.075h-125.060zM92.933 696.021v-702.974h838.384v702.974zM35.766 960h952.709v-1024.144h-952.709z" />
+<glyph unicode="&#xe92d;" glyph-name="today" d="M850.469 357.792c5.223 0 9.821-3.31 11.443-8.26l35.206-108.297h113.85c5.223 0 9.833-3.374 11.423-8.322 1.627-4.951-0.146-10.38-4.337-13.433l-92.14-66.94 35.206-108.297c1.607-4.916-0.16-10.348-4.371-13.433-2.105-1.543-4.611-2.28-7.069-2.28-2.473 0-4.949 0.738-7.071 2.28l-92.14 66.94-92.123-66.94c-2.123-1.543-4.581-2.28-7.054-2.28-2.488 0-4.981 0.738-7.086 2.28-4.208 3.085-5.975 8.517-4.354 13.433l35.189 108.297-92.123 66.94c-4.226 3.053-5.975 8.483-4.386 13.433 1.622 4.948 6.237 8.322 11.455 8.322h113.867l35.189 108.297c1.609 4.951 6.22 8.26 11.425 8.26zM361.71 500.422c14.748 0 28.373-3.181 40.826-9.48 12.45-6.363 21.964-15.040 28.533-25.966 6.621-10.99 9.916-22.624 9.916-34.932 0-11.664-3.149-22.365-9.403-31.973-6.281-9.578-15.631-17.227-27.939-22.881 16.019-3.697 28.469-11.378 37.341-22.977 8.884-11.666 13.287-26.255 13.287-43.738 0-23.651-8.628-43.64-25.871-60.158-17.238-16.452-39.042-24.614-65.391-24.614-23.748 0-43.479 7.068-59.206 21.24-15.713 14.206-24.679 32.585-26.912 55.145l33.259 4.371c3.84-18.799 10.316-32.425 19.474-40.717 9.173-8.354 20.37-12.498 33.528-12.498 15.634 0 28.842 5.398 39.671 16.291 10.733 10.798 16.113 24.164 16.113 40.266 0 15.265-4.995 27.894-14.94 37.761-10.010 9.929-22.652 14.845-38.062 14.845-6.266 0-14.074-1.222-23.457-3.663l3.677 29.147c2.236-0.291 4.003-0.321 5.336-0.321 14.188 0 26.979 3.663 38.304 11.020 11.31 7.392 16.967 18.769 16.967 34.194 0 12.18-4.114 22.269-12.357 30.27-8.272 8.033-18.943 12.019-31.974 12.019-12.885 0-23.743-4.082-32.326-12.212-8.61-8.098-14.168-20.341-16.614-36.569l-33.222 5.911c4.047 22.336 13.319 39.56 27.714 51.804 14.398 12.276 32.309 18.414 53.728 18.414zM590.945 500.446h21.406v-271.857h-33.25v211.926c-8.003-7.744-18.481-15.392-31.497-22.976-13.018-7.648-24.652-13.302-35.037-17.127v32.103c18.629 8.803 34.874 19.312 48.823 31.747 13.902 12.374 23.769 24.425 29.555 36.185zM81.385 790.962h89.292v-100.424h161.824v100.424h226.916v-100.424h161.808v100.424h97.342c44.909 0 81.338-36.411 81.338-81.34v-379.789l-9.436 28.988c-5.637 17.356-21.704 29.052-39.993 29.052-15.65 0-29.274-8.902-36.538-22.27v223.863h-727.928v-437.636h638.894l14.813-10.766-27.267-83.908h-712.452v94.673h0.079v557.792c0 44.928 36.396 81.34 81.306 81.34zM590.238 867.571h100.154v-144.258h-100.154zM201.493 867.571h100.179v-144.258h-100.179z" />
+<glyph unicode="&#xe92e;" glyph-name="certificate" d="M238.69 899.459c-52.938 0-95.847-42.9-95.847-95.842 0-52.939 42.909-95.862 95.847-95.862 52.94 0 95.84 42.923 95.84 95.862 0 52.942-42.901 95.842-95.84 95.842zM392.221 909.574h306.155l294.456-288.139v-685.485h-776.863v561.039l40.642 94.103 35.023-81.093v-498.374h625.532v577.602h-249.704v244.67h-244.628l-1.306 7.293c-4.98 24.278-14.689 46.852-28.118 66.713zM238.689 960c86.369 0 156.367-69.992 156.367-156.374 0-35.435-11.925-68.041-31.798-94.252l116.289-215.985-85.124 24.582-34.050-90.799-96.019 222.375c-5.331-0.878-10.759-1.522-16.269-1.843l-97.681-226.194-34.051 90.799-85.135-24.605 106.068 196.98c-33.598 28.701-54.974 71.302-54.974 118.942 0 86.382 70.011 156.374 156.377 156.374z" />
+</font></defs></svg>
\ No newline at end of file
diff --git a/admin/css/fonts/appicons.ttf b/admin/css/fonts/appicons.ttf
new file mode 100644 (file)
index 0000000..a58825b
Binary files /dev/null and b/admin/css/fonts/appicons.ttf differ
diff --git a/admin/css/fonts/appicons.woff b/admin/css/fonts/appicons.woff
new file mode 100644 (file)
index 0000000..49aa7a3
Binary files /dev/null and b/admin/css/fonts/appicons.woff differ
diff --git a/admin/css/icons.css b/admin/css/icons.css
new file mode 100644 (file)
index 0000000..4732276
--- /dev/null
@@ -0,0 +1,167 @@
+@font-face {
+  font-family: 'appicons';
+  src:
+    url('fonts/appicons.ttf?o5pwnj') format('truetype'),
+    url('fonts/appicons.woff?o5pwnj') format('woff'),
+    url('fonts/appicons.svg?o5pwnj#appicons') format('svg');
+  font-weight: normal;
+  font-style: normal;
+  font-display: block;
+}
+
+[class^="icon-"], [class*=" icon-"] {
+  /* use !important to prevent issues with browser extensions that change fonts */
+  font-family: 'appicons' !important;
+  speak: never;
+  font-style: normal;
+  font-weight: normal;
+  font-variant: normal;
+  text-transform: none;
+  line-height: 1;
+
+  /* Better Font Rendering =========== */
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-list:before {
+  content: "\e900";
+}
+.icon-menu:before {
+  content: "\e901";
+}
+.icon-mport:before {
+  content: "\e902";
+}
+.icon-export:before {
+  content: "\e903";
+}
+.icon-add:before {
+  content: "\e904";
+}
+.icon-trash:before {
+  content: "\e905";
+}
+.icon-close:before {
+  content: "\e906";
+}
+.icon-back:before {
+  content: "\e907";
+}
+.icon-next:before {
+  content: "\e908";
+}
+.icon-back2:before {
+  content: "\e909";
+}
+.icon-next2:before {
+  content: "\e90a";
+}
+.icon-user:before {
+  content: "\e90b";
+}
+.icon-usergroup:before {
+  content: "\e90c";
+}
+.icon-edituser:before {
+  content: "\e90d";
+}
+.icon-userconfig:before {
+  content: "\e90e";
+}
+.icon-options:before {
+  content: "\e90f";
+}
+.icon-info:before {
+  content: "\e910";
+}
+.icon-help:before {
+  content: "\e911";
+}
+.icon-filter:before {
+  content: "\e912";
+}
+.icon-print:before {
+  content: "\e913";
+}
+.icon-email:before {
+  content: "\e914";
+}
+.icon-phone:before {
+  content: "\e915";
+}
+.icon-video:before {
+  content: "\e916";
+}
+.icon-website:before {
+  content: "\e917";
+}
+.icon-edit:before {
+  content: "\e918";
+}
+.icon-pdf:before {
+  content: "\e919";
+}
+.icon-categories:before {
+  content: "\e91a";
+}
+.icon-duplicate:before {
+  content: "\e91b";
+}
+.icon-search:before {
+  content: "\e91c";
+}
+.icon-image:before {
+  content: "\e91d";
+}
+.icon-music:before {
+  content: "\e91e";
+}
+.icon-location:before {
+  content: "\e91f";
+}
+.icon-camera:before {
+  content: "\e920";
+}
+.icon-sync:before {
+  content: "\e921";
+}
+.icon-badge:before {
+  content: "\e922";
+}
+.icon-cart:before {
+  content: "\e923";
+}
+.icon-home:before {
+  content: "\e924";
+}
+.icon-alert:before {
+  content: "\e925";
+}
+.icon-dataset:before {
+  content: "\e926";
+}
+.icon-new:before {
+  content: "\e927";
+}
+.icon-acrobat:before {
+  content: "\e928";
+}
+.icon-agreement:before {
+  content: "\e929";
+}
+.icon-agreement2:before {
+  content: "\e92a";
+}
+.icon-shop:before {
+  content: "\e92b";
+}
+.icon-calendar:before {
+  content: "\e92c";
+}
+.icon-today:before {
+  content: "\e92d";
+}
+.icon-certificate:before {
+  content: "\e92e";
+}
diff --git a/admin/css/theme.css b/admin/css/theme.css
new file mode 100644 (file)
index 0000000..7d36c92
--- /dev/null
@@ -0,0 +1,1054 @@
+/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
+html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
+/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
+html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
+html,body {-webkit-user-select: none;-ms-user-select: none;user-select: none;-moz-user-select:none;}
+article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}
+audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
+audio:not([controls]){display:none;height:0}[hidden],template{display:none}
+a{background-color:transparent}a:active,a:hover{outline-width:0}
+abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
+b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000}
+small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}
+code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
+button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold}
+button,input{overflow:visible}button,select{text-transform:none}
+button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}
+button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}
+button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}
+fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
+legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
+[type=checkbox],[type=radio]{padding:0}
+[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
+[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
+[type=search]::-webkit-search-decoration{-webkit-appearance:none}
+::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
+/* End extract */
+/* html,body {
+       background-color: #52638e;
+} */
+html,body{font-family:Verdana,sans-serif;font-size:10pt;line-height:1.5}html{overflow-x:hidden}
+h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.serif{font-family:serif}
+h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.wide{letter-spacing:4px}
+hr{border:0;border-top:1px solid #eee;margin:20px 0}
+.img{max-width:100%;height:auto; vertical-align:middle}a{color:inherit}
+.table,.table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.table-all{border:1px solid #ccc}
+.bordered tr,.table-all tr{border-bottom:1px solid #ddd}.striped tbody tr:nth-child(even){background-color:#f1f1f1}
+.table-all tr:nth-child(odd){background-color:#fff}.table-all tr:nth-child(even){background-color:#f1f1f1}
+.hoverable tbody tr:hover,.ul.hoverable li:hover{background-color:#ccc}.centered tr th,.centered tr td{text-align:center}
+.table td,.table th,.table-all td,.table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
+.table th:first-child,.table td:first-child,.table-all th:first-child,.table-all td:first-child{padding-left:16px}
+.btn,.button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
+.btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
+.btn,.button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}   
+.disabled,.btn:disabled,.button:disabled{cursor:not-allowed;background-color: #e6e6e6}.disabled *,:disabled *{pointer-events:none}
+.btn.disabled:hover,.btn:disabled:hover{box-shadow:none}
+.badge,.tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.badge{border-radius:50%}
+.ul{list-style-type:none;padding:0;margin:0}.ul li{padding:8px 16px;border-bottom:1px solid #ddd}.ul li:last-child{border-bottom:none}
+.tooltip,.display-container{position:relative}.tooltip .text{display:none}.tooltip:hover .text{display:inline-block}
+.ripple:active{opacity:0.5}.ripple{transition:opacity 0s}
+.input{padding:6px;display:block;border: 1px solid #ccc;width:100%;background-color: #fff; }/*#e8f0fe*/
+.select{padding:2px 0; display:block;width:100%;border:1px solid #ccc;background-color: #fff;}
+.dropdown-click,.dropdown-hover{position:relative;display:inline-block;cursor:pointer}
+.dropdown-hover:hover .dropdown-content{display:block; }
+.dropdown-hover:first-child,.dropdown-click:hover{background-color:#ccc;color:#000}
+.dropdown-hover:hover > .button:first-child,.dropdown-click:hover > .button:first-child{background-color:#ccc;color:#000}
+.dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
+.check,.radio{width:24px;height:24px;position:relative;top:6px}
+.sidebar{height:100%;width:160px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
+.bar-block .dropdown-hover,.bar-block .dropdown-click{width:100%}
+.bar-block .dropdown-hover .dropdown-content,.bar-block .dropdown-click .dropdown-content{min-width:100%}
+.bar-block .dropdown-hover .button,.bar-block .dropdown-click .button{width:100%;text-align:left;padding:8px 16px}
+.main,#main{transition:margin-left .4s}
+.modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
+.modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
+.bar{width:100%}.center .bar{display:inline-block;width:auto}
+.bar .bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
+.bar .dropdown-hover,.bar .dropdown-click{position:static;float:left}
+.bar .button{white-space:normal}
+.bar-block .bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
+.bar-block.center .bar-item{text-align:center}.block{display:block;width:100%}
+.responsive{display:block;overflow-x:auto}
+.container:after,.container:before,.datapanel:after,.datapanel:before,.row:after,.row:before,.row-padding:after,.row-padding:before,
+.cell-row:before,.cell-row:after,.clear:after,.clear:before,.bar:before,.bar:after{content:"";display:table;clear:both}
+.col,.half,.third,.twothird,.threequarter,.quarter,.fifth,.twofifth,.threefifth,.fourfifth{float:left;width:100%}
+.col.s1{width:8.33333%}.col.s2{width:16.66666%}.col.s3{width:24.99999%}.col.s4{width:33.33333%}
+.col.s5{width:41.66666%}.col.s6{width:49.99999%}.col.s7{width:58.33333%}.col.s8{width:66.66666%}
+.col.s9{width:74.99999%}.col.s10{width:83.33333%}.col.s11{width:91.66666%}.col.s12{width:99.99999%}
+@media (min-width:601px){.col.m1{width:8.33333%}.col.m2{width:16.66666%}.col.m3,.quarter{width:24.99999%}.col.m4,.third{width:33.33333%}.fifth{width:20%;min-width:100px}
+.col.m5{width:41.66666%}.col.m6,.half{width:49.99999%}.col.m7{width:58.33333%}.col.m8,.twothird{width:66.66666%}
+.col.m9,.threequarter{width:74.99999%}.col.m10{width:83.33333%}.col.m11{width:91.66666%}.col.m12{width:99.99999%}.twofifth{width:40%}.threefifth{width:60%}.fourfifth{width:80%}}
+@media (min-width:993px){.col.l1{width:8.33333%}.col.l2{width:16.66666%}.col.l3{width:24.99999%}.col.l4{width:33.33333%}
+.col.l5{width:41.66666%}.col.l6{width:49.99999%}.col.l7{width:58.33333%}.col.l8{width:66.66666%}
+.col.l9{width:74.99999%}.col.l10{width:83.33333%}.col.l11{width:91.66666%}.col.l12{width:99.99999%}}
+.rest{overflow:hidden}.stretch{margin-left:-16px;margin-right:-16px}
+.content,.auto{margin-left:auto;margin-right:auto}.content{max-width:980px}.auto{max-width:1140px}
+.cell-row{display:table;width:100%}.cell{display:table-cell;vertical-align: top;}
+.cell-top{vertical-align:top}.cell-middle{vertical-align:middle}.cell-bottom{vertical-align:bottom}
+.hide{display:none!important}.show-block,.show{display:block!important}.show-inline-block{display:inline-block!important}
+@media (max-width:1205px){.auto{max-width:95%}}
+@media (max-width:600px){.modal-content{margin:0 10px;width:auto!important}.modal{padding-top:30px}
+.dropdown-hover.mobile .dropdown-content,.dropdown-click.mobile .dropdown-content{position:relative}   
+.hide-small{display:none!important}.mobile{display:block;width:100%!important}.bar-item.mobile,.dropdown-hover.mobile,.dropdown-click.mobile{text-align:center}
+.dropdown-hover.mobile,.dropdown-hover.mobile .btn,.dropdown-hover.mobile .button,.dropdown-click.mobile,.dropdown-click.mobile .btn,.dropdown-click.mobile .button{width:100%}}
+@media (max-width:768px){.modal-content{width:500px}.modal{padding-top:50px}}
+@media (min-width:993px){.modal-content{width:900px}.hide-large{display:none!important}.sidebar.collapse{display:block!important}}
+@media (max-width:992px) and (min-width:601px){.hide-medium{display:none!important}}
+@media (max-width:992px){.sidebar.collapse{display:none}.main{margin-left:0!important;margin-right:0!important}.auto{max-width:100%}}
+.top,.bottom{position:fixed;width:100%;z-index:1}.top{top:0}.bottom{bottom:0}
+.overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
+.display-topleft{position:absolute;left:0;top:0}.display-topright{position:absolute;right:0;top:0}
+.display-bottomleft{position:absolute;left:0;bottom:0}.display-bottomright{position:absolute;right:0;bottom:0}
+.display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
+.display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
+.display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
+.display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.display-container:hover .display-hover{display:block}.display-container:hover span.display-hover{display:inline-block}.display-hover{display:none}
+.display-position{position:absolute}
+.circle{border-radius:50%}
+.round-small{border-radius:2px}.round,.round-medium{border-radius:4px}.round-large{border-radius:8px}.round-xlarge{border-radius:16px}.round-xxlarge{border-radius:32px}
+.row-padding,.row-padding>.half,.row-padding>.third,.row-padding>.twothird,.row-padding>.threequarter,.row-padding>.quarter,.row-padding>.col{padding:0 8px}
+.container,.datapanel{padding:0.01em 8px}.datapanel{margin-top:8px;margin-bottom:8px}
+.code,.codespan{font-family:Consolas,"courier new";font-size:16px}
+.code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
+.codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
+.card,.card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16)}
+.card-4,.hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
+.spin{animation:spin 2s infinite linear}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
+.animate-fading{animation:fading 2s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
+.animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
+.animate-top{position:relative;animation:animatetop 1s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
+.animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
+.animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
+.animate-bottom{position:relative;animation:animatebottom 1s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
+.animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
+.animate-input{transition:width 0.4s ease-in-out}.animate-input:focus{width:100%!important}
+.opacity,.hover-opacity:hover{opacity:0.60}.opacity-off,.hover-opacity-off:hover{opacity:1}
+.opacity-max{opacity:0.25}.opacity-min{opacity:0.75}
+.greyscale-max,.grayscale-max,.hover-greyscale:hover,.hover-grayscale:hover{filter:grayscale(100%)}
+.greyscale,.grayscale{filter:grayscale(75%)}.greyscale-min,.grayscale-min{filter:grayscale(50%)}
+.sepia{filter:sepia(75%)}.sepia-max,.hover-sepia:hover{filter:sepia(100%)}.sepia-min{filter:sepia(50%)}
+.tiny{font-size:10px!important}.small{font-size:12px!important}.medium{font-size:15px!important}.large{font-size:18px!important}
+.xlarge{font-size:24px!important}.xxlarge{font-size:36px!important}.xxxlarge{font-size:48px!important}.jumbo{font-size:64px!important}
+.left-align{text-align:left!important}.right-align{text-align:right!important}.justify{text-align:justify!important}.center{text-align:center!important}
+.border-0{border:0!important}.border{border:1px solid #ccc!important}
+.border-top{border-top:1px solid #ccc!important}.border-bottom{border-bottom:1px solid #ccc!important}
+.border-left{border-left:1px solid #ccc!important}.border-right{border-right:1px solid #ccc!important}
+.topbar{border-top:6px solid #ccc!important}.bottombar{border-bottom:6px solid #ccc!important}
+.leftbar{border-left:6px solid #ccc!important}.rightbar{border-right:6px solid #ccc!important}
+.section,.code{margin-top:16px!important;margin-bottom:16px!important}
+.margin{margin:16px!important}.margin-top{margin-top:16px!important}.margin-bottom{margin-bottom:16px!important}
+.margin-left{margin-left:16px!important}.margin-right{margin-right:16px!important}
+.padding-small{padding:4px 8px!important}.padding{padding:8px 16px!important}.padding-large{padding:12px 24px!important}
+.padding-16{padding-top:16px!important;padding-bottom:16px!important}.padding-24{padding-top:24px!important;padding-bottom:24px!important}
+.padding-32{padding-top:32px!important;padding-bottom:32px!important}.padding-48{padding-top:48px!important;padding-bottom:48px!important}
+.padding-64{padding-top:64px!important;padding-bottom:64px!important}
+.left{float:left!important}.right{float:right!important}
+.button:hover{color:#fff!important;background-color:#343434!important}
+.transparent,.hover-none:hover{background-color:transparent!important}
+.hover-none:hover{box-shadow:none!important}
+/* DEFAULT COLORS */
+.amber,.hover-amber:hover{color:#000!important;background-color:#ffc107!important}
+.aqua,.hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
+.blue,.hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
+.light-blue,.hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
+.brown,.hover-brown:hover{color:#fff!important;background-color:#795548!important}
+.cyan,.hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
+.blue-grey,.hover-blue-grey:hover{color:#fff!important;background-color:#607d8b!important}
+.green,.hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
+.light-green,.hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
+.indigo,.hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
+.khaki,.hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
+.lime,.hover-lime:hover{color:#000!important;background-color:#cddc39!important}
+.orange,.hover-orange:hover{color:#000!important;background-color:#ff9800!important}
+.deep-orange,.hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
+.pink,.hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
+.purple,.hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
+.deep-purple,.hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
+.red,.hover-red:hover{color:#fff!important;background-color:#f44336!important}
+.sand,.hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
+.teal,.hover-teal:hover{color:#fff!important;background-color:#009688!important}
+.yellow,.hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
+.white,.hover-white:hover{color:#000!important;background-color:#fff!important}
+.black,.hover-black:hover{color:#fff!important;background-color:#000!important}
+.grey,.hover-grey:hover{color:#000!important;background-color:#9e9e9e!important}
+.light-grey,.hover-light-grey:hover{color:#000!important;background-color:#f1f1f1!important}
+.dark-grey,.hover-dark-grey:hover{color:#fff!important;background-color:#616161!important}
+.pale-red,.hover-pale-red:hover{color:#000!important;background-color:#ffe7e7!important}.pale-green,.hover-pale-green:hover{color:#000!important;background-color:#e7ffe7!important}
+.pale-yellow,.hover-pale-yellow:hover{color:#000!important;background-color:#ffffd7!important}.pale-blue,.hover-pale-blue:hover{color:#000!important;background-color:#e7ffff!important}
+.text-align-right { text-align: right;}
+.text-amber,.hover-text-amber:hover{color:#ffc107!important}
+.text-aqua,.hover-text-aqua:hover{color:#00ffff!important}
+.text-blue,.hover-text-blue:hover{color:#2196F3!important}
+.text-light-blue,.hover-text-light-blue:hover{color:#87CEEB!important}
+.text-brown,.hover-text-brown:hover{color:#795548!important}
+.text-cyan,.hover-text-cyan:hover{color:#00bcd4!important}
+.text-blue-grey,.hover-text-blue-grey:hover{color:#607d8b!important}
+.text-green,.hover-text-green:hover{color:#4CAF50!important}
+.text-light-green,.hover-text-light-green:hover{color:#8bc34a!important}
+.text-indigo,.hover-text-indigo:hover{color:#3f51b5!important}
+.text-khaki,.hover-text-khaki:hover{color:#b4aa50!important}
+.text-lime,.hover-text-lime:hover{color:#cddc39!important}
+.text-orange,.hover-text-orange:hover{color:#ff9800!important}
+.text-deep-orange,.hover-text-deep-orange:hover{color:#ff5722!important}
+.text-pink,.hover-text-pink:hover{color:#e91e63!important}
+.text-purple,.hover-text-purple:hover{color:#9c27b0!important}
+.text-deep-purple,.hover-text-deep-purple:hover{color:#673ab7!important}
+.text-red,.hover-text-red:hover{color:#f44336!important}
+.text-sand,.hover-text-sand:hover{color:#fdf5e6!important}
+.text-teal,.hover-text-teal:hover{color:#009688!important}
+.text-yellow,.hover-text-yellow:hover{color:#d2be0e!important}
+.text-white,.hover-text-white:hover{color:#fff!important}
+.text-black,.hover-text-black:hover{color:#000!important}
+.text-grey,.hover-text-grey:hover{color:#757575!important}
+.text-light-grey,.hover-text-light-grey:hover{color:#f1f1f1!important}
+.text-dark-grey,.hover-text-dark-grey:hover{color:#3a3a3a!important}
+.border-amber,.hover-border-amber:hover{border-color:#ffc107!important}
+.border-aqua,.hover-border-aqua:hover{border-color:#00ffff!important}
+.border-blue,.hover-border-blue:hover{border-color:#2196F3!important}
+.border-light-blue,.hover-border-light-blue:hover{border-color:#87CEEB!important}
+.border-brown,.hover-border-brown:hover{border-color:#795548!important}
+.border-cyan,.hover-border-cyan:hover{border-color:#00bcd4!important}
+.border-blue-grey,.hover-blue-grey:hover{border-color:#607d8b!important}
+.border-green,.hover-border-green:hover{border-color:#4CAF50!important}
+.border-light-green,.hover-border-light-green:hover{border-color:#8bc34a!important}
+.border-indigo,.hover-border-indigo:hover{border-color:#3f51b5!important}
+.border-khaki,.hover-border-khaki:hover{border-color:#f0e68c!important}
+.border-lime,.hover-border-lime:hover{border-color:#cddc39!important}
+.border-orange,.hover-border-orange:hover{border-color:#ff9800!important}
+.border-deep-orange,.hover-border-deep-orange:hover{border-color:#ff5722!important}
+.border-pink,.hover-border-pink:hover{border-color:#e91e63!important}
+.border-purple,.hover-border-purple:hover{border-color:#9c27b0!important}
+.border-deep-purple,.hover-border-deep-purple:hover{border-color:#673ab7!important}
+.border-red,.hover-border-red:hover{border-color:#f44336!important}
+.border-sand,.hover-border-sand:hover{border-color:#fdf5e6!important}
+.border-teal,.hover-border-teal:hover{border-color:#009688!important}
+.border-yellow,.hover-border-yellow:hover{border-color:#ffeb3b!important}
+.border-white,.hover-border-white:hover{border-color:#fff!important}
+.border-black,.hover-border-black:hover{border-color:#000!important}
+.border-grey,.hover-border-grey:hover{border-color:#9e9e9e!important}
+.border-light-grey,.hover-border-light-grey:hover{border-color:#f1f1f1!important}
+.border-dark-grey,.hover-border-dark-grey:hover{border-color:#616161!important}
+.border-pale-red,.hover-border-pale-red:hover{border-color:#ffe7e7!important}.border-pale-green,.hover-border-pale-green:hover{border-color:#e7ffe7!important}
+.border-pale-yellow,.hover-border-pale-yellow:hover{border-color:#ffffd7!important}.border-pale-blue,.hover-border-pale-blue:hover{border-color:#e7ffff!important}
+/* DEFAULT THEME */
+.theme-l5 {color:#000 !important; background-color:#f6f8fc !important}
+.theme-l4 {color:#000 !important; background-color:#e1e9f6 !important}
+.theme-l3 {color:#000 !important; background-color:#c3d3ed !important}
+.theme-l2 {color:#000 !important; background-color:#a5bee4 !important}
+.theme-l1 {color:#fff !important; background-color:#88a8db !important}
+.theme-d1 {color:#fff !important; background-color:#5180cb !important}
+.theme-d2 {color:#fff !important; background-color:#3a6fc3 !important}
+.theme-d3 {color:#fff !important; background-color:#3361aa !important}
+.theme-d4 {color:#fff !important; background-color:#2c5392 !important}
+.theme-d5 {color:#fff !important; background-color:#24457a !important}
+
+.theme-light {color:#000 !important; background-color:#f6f8fc !important}
+.theme-dark {color:#fff !important; background-color:#24457a !important}
+.theme-action {color:#fff !important; background-color:#24457a !important}
+
+.theme {color:#fff !important; background-color:#6a92d3 !important}
+.text-theme {color:#6a92d3 !important}
+.border-theme {border-color:#6a92d3 !important}
+
+.hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important}
+.hover-text-theme:hover {color:#6a92d3 !important}
+.hover-border-theme:hover {border-color:#6a92d3 !important}
+
+/* .label { color: #000; font-size: 8pt;} */
+/* #main {margin-left: 210px;} */
+/* @media (max-width:768px){
+  #sidebar { display: none;}
+  #main { margin-left: 0px;} 
+} */
+
+.info-panel {
+  padding: 3px;
+  color: #ff4500;
+  border: 1px solid #ff4500;
+  background-color: #f89774;
+}
+
+.error-panel {
+       padding: 3px;
+  color: #ff0000;
+  border: 1px solid #ff0000;
+  background-color: #fcb2b2;
+}
+
+.table {
+  table-layout: fixed;
+}
+
+.text-line-through { text-decoration: line-through; }
+
+#snackbar {
+  visibility: hidden;
+  min-width: 250px;
+  margin-left: -125px;
+  background-color: #333;
+  color: #fff;
+  text-align: center;
+  
+  padding: 16px;
+  position: fixed;
+  z-index: 1;
+  left: 50%;
+  bottom: 30px;
+  font-size: 17px;
+}
+
+#snackbar.show {
+  visibility: visible;
+  -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
+  animation: fadein 0.5s, fadeout 0.5s 2.5s;
+}
+
+@-webkit-keyframes fadein {
+  from {bottom: 0; opacity: 0;} 
+  to {bottom: 30px; opacity: 1;}
+}
+
+@keyframes fadein {
+  from {bottom: 0; opacity: 0;}
+  to {bottom: 30px; opacity: 1;}
+}
+
+@-webkit-keyframes fadeout {
+  from {bottom: 30px; opacity: 1;} 
+  to {bottom: 0; opacity: 0;}
+}
+
+@keyframes fadeout {
+  from {bottom: 30px; opacity: 1;}
+  to {bottom: 0; opacity: 0;}
+}
+
+.tabulator-header-filter > input {
+  background-color: #fff;
+  border: 1px solid #ccc;
+  font-weight: normal;
+}
+
+.readonly {
+  pointer-events:none;
+  color: #000!important;
+  background-color: #d3d3d3!important;
+}
+
+
+
+.right-side-bg {
+  background: url("../img/bg1.jpg");
+  background-size: cover;
+  min-height: 100vh;
+}
+
+
+
+
+/* .mceContentBody { 
+  background: #fff;
+  color:#000;
+} */
+
+/* .tabulator-row-even {
+  background-color: #757575;
+} */
+
+
+button
+{
+       background-color: #f4f4f4;
+       border: 1pt solid #cccccc;
+       font-size: 10pt;
+       color: #000;
+       line-height: 1line;
+       text-align: center;
+}
+button:hover
+{
+       background-color: #343434;
+}
+button:pressed
+{
+       background-color: #343434;
+}
+button:focus
+{
+       background-color: #343434;
+}
+
+
+
+
+header
+{
+       background-color: #fff;
+       box-sizing: border-box;
+}
+
+.actionbtn {
+       background-color: #293146;
+       color: #fff;
+}
+
+::-webkit-input-placeholder
+{
+       color: rgba(60.3922%,60.3922%,60.3922%,1);
+}
+
+
+textarea
+{
+       background-color: #fff;
+       border-top-color: rgba(80%,80%,80%,1);
+       border-right-color: rgba(80%,80%,80%,1);
+       border-bottom-color: rgba(80%,80%,80%,1);
+       border-left-color: rgba(80%,80%,80%,1);
+       border-top-style: solid;
+       border-right-style: solid;
+       border-bottom-style: solid;
+       border-left-style: solid;
+       border-top-width: 1pt;
+       border-right-width: 1pt;
+       border-bottom-width: 1pt;
+       border-left-width: 1pt;
+       font-size: 11pt;
+       color: #000;
+       line-height: 1line;
+       text-align: left;
+       /* margin-top: 0.88em;
+       margin-right: 0.75em;
+       margin-bottom: 0.63em;
+       margin-left: 0.75em;
+       top: 0pt;
+       right: 30pt;
+       bottom: 0pt;
+       left: 0pt;
+       position: absolute;
+       box-sizing: border-box; */
+}
+textarea:focus
+{
+       border-top-color: rgba(0%,43.9216%,81.1765%,1);
+       border-right-color: rgba(0%,43.9216%,81.1765%,1);
+       border-bottom-color: rgba(0%,43.9216%,81.1765%,1);
+       border-left-color: rgba(0%,43.9216%,81.1765%,1);
+}
+textarea:placeholder
+{
+       color: rgba(80%,80%,80%,1);
+}
+/* textarea .text
+{
+       
+} */
+textarea .scrollbar_track
+{
+       width: 30pt;
+       top: 0pt;
+       right: 0pt;
+       bottom: 0pt;
+       position: absolute;
+       box-sizing: border-box;
+}
+
+
+footer
+{
+       background-color: #fff;
+       box-sizing: border-box;
+}
+
+
+div.group_container
+{
+       background-color: #e3e3e3;
+       border-top-color: rgba(80%,80%,80%,1);
+       border-right-color: rgba(80%,80%,80%,1);
+       border-bottom-color: rgba(80%,80%,80%,1);
+       border-left-color: rgba(80%,80%,80%,1);
+       border-top-style: solid;
+       border-right-style: solid;
+       border-bottom-style: solid;
+       border-left-style: solid;
+       border-top-width: 1pt;
+       border-right-width: 1pt;
+       border-bottom-width: 1pt;
+  border-left-width: 1pt;
+  padding-top: 4px;
+  padding-bottom: 8px;
+}
+
+/* Custom Styles */
+.ListView_Default
+{
+
+       background-color: rgba(0%,0%,0%,0);
+       border-top-style: none;
+       border-right-style: none;
+       border-bottom-style: none;
+       border-left-style: none;
+
+       color: #000;
+       text-align: left;
+       margin-top: 2pt;
+       margin-right: 2pt;
+       margin-bottom: 2pt;
+       margin-left: 2pt;
+}
+
+
+button.btnNavigation 
+{
+
+       background-color: rgba(0%,0%,0%,0);
+
+       font-family: -fm-font-family(Arial,Arial-BoldMT);
+       font-weight: bold;
+       font-size: 10pt;
+       color: #fff;
+       padding-top: 0pt;
+       padding-right: 0pt;
+       padding-bottom: 0pt;
+       padding-left: 0pt;
+}
+
+div.PageListHeader
+{
+       border-top-color: rgba(80%,80%,80%,1);
+       border-right-color: rgba(80%,80%,80%,1);
+       border-bottom-color: rgba(80%,80%,80%,1);
+       border-left-color: rgba(80%,80%,80%,1);
+       border-top-style: solid;
+       border-right-style: solid;
+       border-bottom-style: solid;
+       border-left-style: solid;
+       border-top-width: 1pt;
+       border-right-width: 1pt;
+       border-bottom-width: 1pt;
+       border-left-width: 1pt;
+       color: #fff;
+       -fm-text-vertical-align: center;
+}
+div.PageListHeader .inner_border
+{
+       padding-top: 5pt;
+       padding-right: 5pt;
+       padding-bottom: 5pt;
+       padding-left: 5pt;
+}
+
+.moduletoolbar
+{
+  background-color: #293146;
+  color: #fff;
+}
+
+div.BodySectionHeader
+{
+       font-family: -fm-font-family(Arial,Arial-BoldMT);
+       font-weight: bold;
+}
+
+
+div.PageHeadTitle
+{
+       font-size: 18pt;
+       color: #fff;
+}
+
+div.SubHeadTitle
+{
+       font-size: 13pt;
+       color: #fff;
+}
+
+div.SectionHeader
+{
+
+       background-color: rgba(22.3529%,26.6667%,38.4314%,1);
+
+}
+
+button.toolbarbtn
+{
+  border: 0.5px solid #c6c6c6;
+       background-color: rgba(0%,0%,0%,0);
+       color: #fff;
+}
+button.toolbarbtn:hover
+{
+
+       background-color: #343434;
+       color: #fff;
+}
+button.toolbarbtn:pressed
+{
+
+       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
+       color: #fff;
+}
+button.toolbarbtn:focus
+{
+       border-top-color: rgba(80%,80%,80%,1);
+       border-right-color: rgba(80%,80%,80%,1);
+       border-bottom-color: rgba(80%,80%,80%,1);
+       border-left-color: rgba(80%,80%,80%,1);
+}
+
+
+a.toolbarbtn
+{
+  border: 0.5px solid #c6c6c6;
+       background-color: rgba(0%,0%,0%,0);
+       color: #fff;
+       text-align: center;
+       text-decoration: unset;
+}
+a.toolbarbtn:hover
+{
+
+       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
+       color: #fff;
+}
+a.toolbarbtn:pressed
+{
+       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
+       color: #fff;
+}
+a.toolbarbtn:focus
+{
+       border-top-color: rgba(80%,80%,80%,1);
+       border-right-color: rgba(80%,80%,80%,1);
+       border-bottom-color: rgba(80%,80%,80%,1);
+       border-left-color: rgba(80%,80%,80%,1);
+}
+
+button.bodybtn
+{
+  border: 0.5px solid #c6c6c6;
+
+       background-color: rgba(0%,0%,0%,0);
+
+       color: #000;
+}
+button.bodybtn:hover
+{
+
+       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
+       color: #fff;
+}
+button.bodybtn:pressed
+{
+
+       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
+       color: #fff;
+}
+button.bodybtn:focus
+{
+       border-top-color: rgba(80%,80%,80%,1);
+       border-right-color: rgba(80%,80%,80%,1);
+       border-bottom-color: rgba(80%,80%,80%,1);
+       border-left-color: rgba(80%,80%,80%,1);
+}
+
+
+a.bodybtn
+{
+  border: 0.5px solid #c6c6c6;
+
+       background-color: rgba(0%,0%,0%,0);
+
+       color: #000;
+       text-align: center;
+       text-decoration: unset;
+}
+a.bodybtn:hover
+{
+
+       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
+       color: #fff;
+}
+a.bodybtn:pressed
+{
+       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
+       color: #fff;
+}
+a.bodybtn:focus
+{
+       border-top-color: rgba(80%,80%,80%,1);
+       border-right-color: rgba(80%,80%,80%,1);
+       border-bottom-color: rgba(80%,80%,80%,1);
+       border-left-color: rgba(80%,80%,80%,1);
+}
+
+
+div.ListView_Header
+{
+       border-top-color: rgba(80%,80%,80%,1);
+       border-right-color: rgba(80%,80%,80%,1);
+       border-bottom-color: rgba(80%,80%,80%,1);
+       border-left-color: rgba(80%,80%,80%,1);
+       border-top-style: solid;
+       border-right-style: solid;
+       border-bottom-style: solid;
+       border-left-style: solid;
+       border-top-width: 1pt;
+       border-right-width: 1pt;
+       border-bottom-width: 1pt;
+       border-left-width: 1pt;
+       font-weight: normal;
+       color: #fff;
+       -fm-text-vertical-align: center;
+}
+div.ListView_Header .inner_border
+{
+       padding-top: 2pt;
+       padding-right: 2pt;
+       padding-bottom: 2pt;
+       padding-left: 2pt;
+}
+
+div.toolbar
+{
+
+       background-color: rgba(32.1569%,38.8235%,55.6863%,1);
+
+}
+
+div.sectiontoolbar
+{
+  margin-top: 8px;
+  margin-bottom: 8px;
+       background-color: rgb(97, 98, 100);
+
+}
+
+div.FooterLabel
+{
+       color: #fff;
+}
+
+button.Buttom_BodyNav:hover
+{
+
+       background-color: rgb(141, 141, 141);
+
+       /* color: #fff; */
+}
+
+
+::-webkit-scrollbar {
+-webkit-appearance: none;
+width: 10px;
+}
+
+::-webkit-scrollbar-track {
+       background-color:  rgba(80%, 80%, 80%, .5);
+}
+
+::-webkit-scrollbar-thumb {
+border-radius: 0px;
+background-color: rgba(0, 0, 0, .5);
+-webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
+}      
+
+div.portaltextheader {
+       padding: 2px;
+       border: 1px solid white;
+}
+
+
+
+
+
+select {
+  /* -webkit-appearance: none; */
+  display: block;
+  color: #000;
+  line-height: 1line;
+       text-align: left;
+  padding: 3.5px;
+  width: 100%;
+  max-width: 100%; 
+  box-sizing: border-box;
+  margin: 0;
+  border: 1px solid #cccccc;
+  /* box-shadow: 0 1px 0 1px rgba(0,0,0,.04); */
+  border-radius: 0px;
+  font-weight: normal;
+  font-size: 11pt;
+  background-color: #fff;
+  /* background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'), 
+    linear-gradient(to bottom, #fff 0%,#fff 100%);
+  background-repeat: no-repeat, repeat;
+  background-position: right .7em top 50%, 0 0;
+  background-size: .65em auto, 100%; */
+}
+
+
+/* option {
+  appearance: none;
+  border: 1px solid 0070cf;
+  padding: 2px;
+} */
+select:focus
+{
+       border: 1px solid #3a6fc3;
+  border-radius: unset;
+}
+
+
+::-webkit-select-placeholder
+{
+       color: #9a9a9a;
+}
+
+div.DataFooter{
+       background: #384462;
+}
+.input-sum{padding:2px;display:block;border: 1px solid #ccc;width:100%;background-color: #4D4D4D; }  
+
+
+.currency-sum {padding:2px;display:block;border: 1px solid #ccc;width:100%;background-color: #4D4D4D;}
+
+.currency-sum,.currency-sum:read-only {
+  display: block;
+  color: #fff;
+  padding: 2px;
+  padding-right: 12px;
+  width: 100%;
+  max-width: 100%; 
+  box-sizing: border-box;
+  margin: 0;
+  border: 1px solid #ccc;
+  border-radius: unset;
+  -moz-appearance: none;
+  -webkit-appearance: none;
+  appearance: none;
+  background-color: #4D4D4D;
+  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20fill=%22white%22%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%3C/svg%3E');
+  background-repeat: no-repeat, repeat;
+  background-position: right 2px top 50%, 0 0;
+  background-size: 9px auto, 100%;
+}
+
+
+
+
+/* input[type=date]::-webkit-inner-spin-button, 
+input[type=date]::-webkit-outer-spin-button { 
+  display: none;
+} */
+
+:focus {
+  outline: unset;
+}
+
+input
+{
+       background-color: #ffffff;
+       border: 1px solid #cccccc; 
+       font-weight: normal;
+       font-size: 11pt;
+       color: #000000;
+       line-height: 1line;
+  text-align: left;
+  width:100%;
+  padding:2px;
+  display:block;
+  border-radius: unset;
+}
+/* input:focus
+{
+       border: #0070cf;
+} */
+
+input:focus {
+  border: 1px solid #3a6fc3;
+  border-radius: unset;
+}
+
+input[readonly=true]{
+  color: #000!important;
+  background-color: #d3d3d3!important;
+}
+
+input[type=number]::-webkit-inner-spin-button, 
+input[type=number]::-webkit-outer-spin-button { 
+  -webkit-appearance: none; 
+  margin: 0; 
+}
+/* input[type=checkbox]{
+  appearance: none;
+  display:inline-block;
+  font-size: 24px!important;
+  border: 1px solid green;
+} */
+
+input[class=currency] {
+  padding: 2px;
+  padding-right: 12px;
+  text-align: right;
+  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%0A%3C/svg%3E'), 
+  linear-gradient(to bottom, #fff 0%,#fff 100%);
+  background-repeat: no-repeat, repeat;
+  background-position: right 2px top 50%, 0 0;
+  background-size: 9px auto, 100%;
+}
+
+input[class=currency]:read-only {
+  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%0A%3C/svg%3E'), 
+    linear-gradient(to bottom, #d3d3d3 0%,#d3d3d3 100%);
+}
+
+input[class=percent] {
+  padding: 2px;
+  padding-right: 12px;
+  text-align: right;
+  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22256%22%20height=%22232%22%20version=%221.0%22%3E%3Cg%20transform=%22translate(-112.3674,-128.3649)%22%3E%3Cpath%20style=%22fill:black;fill-opacity:1;stroke:none%22%20d=%22M%20317.1674,257.53698%20C%20308.53463,257.53708%20301.73774,261.20839%20296.77671,268.55094%20C%20291.91449,275.89365%20289.48349,286.1138%20289.48368,299.2114%20C%20289.48349,312.11067%20291.91449,322.2812%20296.77671,329.72303%20C%20301.73774,337.06568%20308.53463,340.737%20317.1674,340.73698%20C%20325.60128,340.737%20332.24934,337.06568%20337.11159,329.72303%20C%20342.07258,322.2812%20344.5532,312.11067%20344.55345,299.2114%20C%20344.5532,286.21302%20342.07258,276.04249%20337.11159,268.69977%20C%20332.24934,261.25801%20325.60128,257.53708%20317.1674,257.53698%20M%20317.1674,238.63466%20C%20332.84469,238.63477%20345.29739,244.09213%20354.52554,255.00675%20C%20363.75318,265.92157%20368.36713,280.65644%20368.3674,299.2114%20C%20368.36713,317.76648%20363.70357,332.50135%20354.37671,343.41605%20C%20345.14855,354.23156%20332.74546,359.6393%20317.1674,359.63931%20C%20301.29123,359.6393%20288.7393,354.23156%20279.51159,343.41605%20C%20270.28351,332.50135%20265.66956,317.76648%20265.66973,299.2114%20C%20265.66956,280.55721%20270.28351,265.82234%20279.51159,255.00675%20C%20288.83853,244.09213%20301.39045,238.63477%20317.1674,238.63466%20M%20163.5674,147.9928%20C%20155.03401,147.993%20148.28673,151.71393%20143.32554,159.15559%20C%20138.46349,166.49841%20136.03248,176.61933%20136.03252,189.51838%20C%20136.03248,202.61621%20138.46349,212.83635%20143.32554,220.17884%20C%20148.18751,227.52161%20154.93479,231.19292%20163.5674,231.1928%20C%20172.19989,231.19292%20178.94717,227.52161%20183.80926,220.17884%20C%20188.77041,212.83635%20191.25103,202.61621%20191.25113,189.51838%20C%20191.25103,176.71856%20188.77041,166.59764%20183.80926,159.15559%20C%20178.84794,151.71393%20172.10066,147.993%20163.5674,147.9928%20M%20297.9674,129.09047%20L%20321.78136,129.09047%20L%20182.7674,359.63931%20L%20158.95345,359.63931%20L%20297.9674,129.09047%20M%20163.5674,129.09047%20C%20179.24484,129.0907%20191.74715,134.54806%20201.07438,145.46256%20C%20210.4014,156.27827%20215.06496,170.96352%20215.06508,189.51838%20C%20215.06496,208.27201%20210.4014,223.05649%20201.07438,233.87187%20C%20191.84638,244.68748%20179.34406,250.09523%20163.5674,250.09512%20C%20147.79061,250.09523%20135.28829,244.68748%20126.06043,233.87187%20C%20116.93172,222.95727%20112.36739,208.17279%20112.3674,189.51838%20C%20112.36739,171.06275%20116.98134,156.37749%20126.20926,145.46256%20C%20135.43713,134.54806%20147.88983,129.0907%20163.5674,129.09047%22%20/%3E%3C/g%3E%3C/svg%3E'), 
+    linear-gradient(to bottom, #fff 0%,#fff 100%);
+  background-repeat: no-repeat, repeat;
+  background-position: right 2px top 50%, 0 0;
+  background-size: 9px auto, 100%;
+}
+
+
+label {
+  height: 12.8px!important;
+  color: #000; 
+  font-size: 8pt;
+}
+
+
+
+input[type="checkbox"] {
+  display: block;
+  -webkit-appearance:none;/* Hides the default checkbox style */ 
+  height:29.66px;
+  width:29.66px;
+  cursor:pointer;
+  position:relative;
+  -webkit-transition: .15s;
+  border-radius: unset;
+  border: 1px solid #cccccc; 
+  background-color:#fff;
+ }
+ input[type="checkbox"]:checked {
+  background-color:#9ABCEA;
+ }
+ input[type="checkbox"]:before, input[type="checkbox"]:checked:before {
+  position:absolute;
+  top:0;
+  left:0;
+  width:100%;
+  height:100%;
+  line-height:2em;
+  text-align:center;
+  color:#000;
+  content: '';
+ }
+ input[type="checkbox"]:checked:before {
+  font-size: 11pt;
+  content: '✔';
+ }
+ input[type="checkbox"]:hover:before {
+  background:rgba(255,255,255,0.3);
+ }
+
+ body.mceContentBody { 
+  background:#e8f0fe;
+  color:#000;
+}
+
+/* .mceContentBody { 
+  background: #e8f0fe;
+  color:#000;
+} */
+
+/* .tabulator-row-even {
+  background-color: #757575;
+} */
+
+:focus {
+  outline: 1px solid #607d8b;
+}
+
+.modal-content > header {
+       background-color: #293146;
+       color: #fff;
+       padding:8px!important;
+       margin-bottom: 10px;
+}
+
+.modal-content > header > h2 {
+       font-size: 13pt;
+}
+
+.modal-content > footer {
+       
+       /* padding:0.01em 8px;  */
+       text-align:right!important;
+       color:#000!important;
+       background-color:#c6c6c6!important;
+       margin-top: 6px;
+       padding-top:8px!important;
+       padding-bottom:8px!important;
+}
+
+.modal-content > header:after,.modal-content > header:before,.modal-content > footer:after,.modal-content > footer:before {
+       content:"";display:table;clear:both
+}
+
+span[class^="icon"]::after {
+       content: "\A";
+       white-space: pre;
+}
+
+.inlinebtn {
+       position: relative;
+       height: 28px;
+       margin-top: -28px;
+       margin-left: -20px; 
+       padding: 4px 8px; 
+       border: 0!important; 
+       float: right;
+}
+
+#loader {
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  z-index: 1;
+  width: 150px;
+  height: 150px;
+  margin: -75px 0 0 -75px;
+  border: 16px solid #f3f3f3;
+  border-radius: 50%;
+  border-top: 16px solid #3498db;
+  width: 120px;
+  height: 120px;
+  -webkit-animation: spin 2s linear infinite;
+  animation: spin 2s linear infinite;
+}
+
+@-webkit-keyframes spin {
+  0% { -webkit-transform: rotate(0deg); }
+  100% { -webkit-transform: rotate(360deg); }
+}
+
+@keyframes spin {
+  0% { transform: rotate(0deg); }
+  100% { transform: rotate(360deg); }
+}
+
diff --git a/admin/db.php b/admin/db.php
new file mode 100644 (file)
index 0000000..e3b2681
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+   require("lib/config.php");
+   require("lib/database.php");
+   require("lib/session.php");
+   require("lib/web/templates.php");
+
+   $db = new database($cfg["db"]);
+   $sess = new session($db);
+   $vars = array();
+   $html = array();
+   if (isset($_COOKIE[$cfg["cookie"]])){
+    $vars["sid"] = $_COOKIE[$cfg["cookie"]]; 
+   }
+   if (isset($vars["sid"]) && ($vars["sid"] != "")){
+    $vars["session"] = $sess->getSession($vars["sid"]);
+    // if (!isset($vars["session"]["id_session"])){
+    //   $vars["sid"] = "";
+    // } 
+   }
+   $params = array();
+   if (isset($_POST) && count($_POST) > 0){
+    $params = $_POST;
+   } elseif (isset($_GET)){
+    $params = $_GET;
+   }
+   $html["params"] = $params;
+   if(count($vars["session"]) == 0) {
+    header('Content-Type: application/json');
+    echo json_encode($html);
+    exit(1);
+   }
+   if (isset($params["get"])){
+    if (strpos($params["get"], 'gallery_') === 0) {
+
+    } elseif (strpos($params["get"], 'rdv_') === 0){
+
+    } elseif (strpos($params["get"], 'website_') === 0){
+      
+    } elseif (strpos($params["get"], 'users_') === 0){
+      
+    } elseif (strpos($params["get"], 'template_') === 0){
+      $tmpl = new templates($cfg["sitetemplatepath"]);
+      if ($params["get"] == "template_files"){
+        $html["files"] = $tmpl->gettemplatefiles();
+      }
+      elseif ($params["get"] == "template_media"){
+        $html["files"] = $tmpl->getmediafiles();
+      }
+    } 
+
+  } elseif (isset($params["fn"])){
+    
+
+  } elseif(isset($params["save"])){
+
+  }
+  header('Content-Type: application/json');
+  echo json_encode($html);
+?>
\ No newline at end of file
diff --git a/admin/img/POT-logo.png b/admin/img/POT-logo.png
new file mode 100644 (file)
index 0000000..e2c8028
Binary files /dev/null and b/admin/img/POT-logo.png differ
diff --git a/admin/img/applogo.png b/admin/img/applogo.png
new file mode 100644 (file)
index 0000000..b82da90
Binary files /dev/null and b/admin/img/applogo.png differ
diff --git a/admin/img/bg1.jpg b/admin/img/bg1.jpg
new file mode 100644 (file)
index 0000000..80c5326
Binary files /dev/null and b/admin/img/bg1.jpg differ
diff --git a/admin/img/favicon/android-icon-144x144.png b/admin/img/favicon/android-icon-144x144.png
new file mode 100644 (file)
index 0000000..7fbdb59
Binary files /dev/null and b/admin/img/favicon/android-icon-144x144.png differ
diff --git a/admin/img/favicon/android-icon-192x192.png b/admin/img/favicon/android-icon-192x192.png
new file mode 100644 (file)
index 0000000..01c2cfc
Binary files /dev/null and b/admin/img/favicon/android-icon-192x192.png differ
diff --git a/admin/img/favicon/android-icon-36x36.png b/admin/img/favicon/android-icon-36x36.png
new file mode 100644 (file)
index 0000000..c5144c1
Binary files /dev/null and b/admin/img/favicon/android-icon-36x36.png differ
diff --git a/admin/img/favicon/android-icon-48x48.png b/admin/img/favicon/android-icon-48x48.png
new file mode 100644 (file)
index 0000000..e515672
Binary files /dev/null and b/admin/img/favicon/android-icon-48x48.png differ
diff --git a/admin/img/favicon/android-icon-72x72.png b/admin/img/favicon/android-icon-72x72.png
new file mode 100644 (file)
index 0000000..bde7f5f
Binary files /dev/null and b/admin/img/favicon/android-icon-72x72.png differ
diff --git a/admin/img/favicon/android-icon-96x96.png b/admin/img/favicon/android-icon-96x96.png
new file mode 100644 (file)
index 0000000..af43b21
Binary files /dev/null and b/admin/img/favicon/android-icon-96x96.png differ
diff --git a/admin/img/favicon/apple-icon-114x114.png b/admin/img/favicon/apple-icon-114x114.png
new file mode 100644 (file)
index 0000000..12f42e1
Binary files /dev/null and b/admin/img/favicon/apple-icon-114x114.png differ
diff --git a/admin/img/favicon/apple-icon-120x120.png b/admin/img/favicon/apple-icon-120x120.png
new file mode 100644 (file)
index 0000000..cababd5
Binary files /dev/null and b/admin/img/favicon/apple-icon-120x120.png differ
diff --git a/admin/img/favicon/apple-icon-144x144.png b/admin/img/favicon/apple-icon-144x144.png
new file mode 100644 (file)
index 0000000..89f9182
Binary files /dev/null and b/admin/img/favicon/apple-icon-144x144.png differ
diff --git a/admin/img/favicon/apple-icon-152x152.png b/admin/img/favicon/apple-icon-152x152.png
new file mode 100644 (file)
index 0000000..3843942
Binary files /dev/null and b/admin/img/favicon/apple-icon-152x152.png differ
diff --git a/admin/img/favicon/apple-icon-180x180.png b/admin/img/favicon/apple-icon-180x180.png
new file mode 100644 (file)
index 0000000..363c190
Binary files /dev/null and b/admin/img/favicon/apple-icon-180x180.png differ
diff --git a/admin/img/favicon/apple-icon-57x57.png b/admin/img/favicon/apple-icon-57x57.png
new file mode 100644 (file)
index 0000000..00952f2
Binary files /dev/null and b/admin/img/favicon/apple-icon-57x57.png differ
diff --git a/admin/img/favicon/apple-icon-60x60.png b/admin/img/favicon/apple-icon-60x60.png
new file mode 100644 (file)
index 0000000..60589f6
Binary files /dev/null and b/admin/img/favicon/apple-icon-60x60.png differ
diff --git a/admin/img/favicon/apple-icon-72x72.png b/admin/img/favicon/apple-icon-72x72.png
new file mode 100644 (file)
index 0000000..bde7f5f
Binary files /dev/null and b/admin/img/favicon/apple-icon-72x72.png differ
diff --git a/admin/img/favicon/apple-icon-76x76.png b/admin/img/favicon/apple-icon-76x76.png
new file mode 100644 (file)
index 0000000..0dedab8
Binary files /dev/null and b/admin/img/favicon/apple-icon-76x76.png differ
diff --git a/admin/img/favicon/apple-icon-precomposed.png b/admin/img/favicon/apple-icon-precomposed.png
new file mode 100644 (file)
index 0000000..01c2cfc
Binary files /dev/null and b/admin/img/favicon/apple-icon-precomposed.png differ
diff --git a/admin/img/favicon/apple-icon.png b/admin/img/favicon/apple-icon.png
new file mode 100644 (file)
index 0000000..01c2cfc
Binary files /dev/null and b/admin/img/favicon/apple-icon.png differ
diff --git a/admin/img/favicon/browserconfig.xml b/admin/img/favicon/browserconfig.xml
new file mode 100644 (file)
index 0000000..c554148
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
\ No newline at end of file
diff --git a/admin/img/favicon/favicon-16x16.png b/admin/img/favicon/favicon-16x16.png
new file mode 100644 (file)
index 0000000..82491e2
Binary files /dev/null and b/admin/img/favicon/favicon-16x16.png differ
diff --git a/admin/img/favicon/favicon-32x32.png b/admin/img/favicon/favicon-32x32.png
new file mode 100644 (file)
index 0000000..9a97d71
Binary files /dev/null and b/admin/img/favicon/favicon-32x32.png differ
diff --git a/admin/img/favicon/favicon-96x96.png b/admin/img/favicon/favicon-96x96.png
new file mode 100644 (file)
index 0000000..aa085fe
Binary files /dev/null and b/admin/img/favicon/favicon-96x96.png differ
diff --git a/admin/img/favicon/favicon.ico b/admin/img/favicon/favicon.ico
new file mode 100644 (file)
index 0000000..c15bc10
Binary files /dev/null and b/admin/img/favicon/favicon.ico differ
diff --git a/admin/img/favicon/manifest.json b/admin/img/favicon/manifest.json
new file mode 100644 (file)
index 0000000..dd3947d
--- /dev/null
@@ -0,0 +1,40 @@
+{
+ "name": "OldBell",
+ "icons": [
+  {
+   "src": "android-icon-36x36.png",
+   "sizes": "36x36",
+   "type": "image/png"
+  },
+  {
+   "src": "android-icon-48x48.png",
+   "sizes": "48x48",
+   "type": "image/png"
+  },
+  {
+   "src": "android-icon-72x72.png",
+   "sizes": "72x72",
+   "type": "image/png"
+  },
+  {
+   "src": "android-icon-96x96.png",
+   "sizes": "96x96",
+   "type": "image/png"
+  },
+  {
+   "src": "android-icon-144x144.png",
+   "sizes": "144x144",
+   "type": "image/png"
+  },
+  {
+   "src": "android-icon-192x192.png",
+   "sizes": "192x192",
+   "type": "image/png"
+  }
+ ],
+ "lang": "fr-FR",
+  "start_url": "http://dks-laptop/oldbell_lu/index.html",
+  "display": "standalone",
+  "background_color": "white",
+  "theme_color": "white"
+}
\ No newline at end of file
diff --git a/admin/img/favicon/ms-icon-144x144.png b/admin/img/favicon/ms-icon-144x144.png
new file mode 100644 (file)
index 0000000..dabb8ae
Binary files /dev/null and b/admin/img/favicon/ms-icon-144x144.png differ
diff --git a/admin/img/favicon/ms-icon-150x150.png b/admin/img/favicon/ms-icon-150x150.png
new file mode 100644 (file)
index 0000000..2392f7b
Binary files /dev/null and b/admin/img/favicon/ms-icon-150x150.png differ
diff --git a/admin/img/favicon/ms-icon-310x310.png b/admin/img/favicon/ms-icon-310x310.png
new file mode 100644 (file)
index 0000000..156de84
Binary files /dev/null and b/admin/img/favicon/ms-icon-310x310.png differ
diff --git a/admin/img/favicon/ms-icon-70x70.png b/admin/img/favicon/ms-icon-70x70.png
new file mode 100644 (file)
index 0000000..c604174
Binary files /dev/null and b/admin/img/favicon/ms-icon-70x70.png differ
diff --git a/admin/img/logo_512.png b/admin/img/logo_512.png
new file mode 100644 (file)
index 0000000..37e2068
Binary files /dev/null and b/admin/img/logo_512.png differ
diff --git a/admin/img/potbg.jpg b/admin/img/potbg.jpg
new file mode 100644 (file)
index 0000000..5167072
Binary files /dev/null and b/admin/img/potbg.jpg differ
diff --git a/admin/img/poticon512.png b/admin/img/poticon512.png
new file mode 100644 (file)
index 0000000..bce391c
Binary files /dev/null and b/admin/img/poticon512.png differ
diff --git a/admin/img/potlogowhite.svg b/admin/img/potlogowhite.svg
new file mode 100644 (file)
index 0000000..7c2ec3b
--- /dev/null
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   height="160"
+   width="360"
+   xml:space="preserve"
+   viewBox="0 0 360 160"
+   y="0px"
+   x="0px"
+   id="Calque_1"
+   version="1.1"><metadata
+   id="metadata107"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs105" />
+<style
+   id="style2"
+   type="text/css">
+       .st0{fill:#003268;}
+       .st1{fill:#FFFFFF;}
+       .st2{fill:#005BCE;}
+</style>
+
+
+
+
+<g
+   transform="matrix(0.25,0,0,0.25,-0.12375257,-116.72349)"
+   id="g953"><g
+     id="g36"
+     style="fill:#ffffff;fill-opacity:1"
+     transform="translate(-247.74194,307.80059)">
+       <g
+   id="g28"
+   style="fill:#ffffff;fill-opacity:1">
+               <path
+   class="st0"
+   d="m 1107.86,464.03 c -38.08,-0.02 -76.17,-0.02 -114.24,0.05 -2.02,0 -3.2,-0.62 -4.56,-2.21 -2.29,-2.68 -4.94,-5.26 -7.96,-6.97 -2.41,-1.38 -2.96,-2.75 -2.96,-5.27 0.07,-48.71 0.04,-97.43 0.04,-146.14 0,-1.2 0.07,-2.41 -0.04,-3.59 -0.37,-4.36 -4.07,-7.2 -8.41,-6.52 -3.87,0.61 -6.02,3.54 -6.02,8.34 -0.02,24.74 0,49.48 0,74.22 0,24.6 -0.02,49.23 0.02,73.86 0.03,2.37 -0.41,3.72 -2.82,5.04 -2.96,1.57 -5.56,4.07 -7.79,6.63 -1.47,1.69 -2.65,2.67 -5,2.63 -7.59,-0.15 -15.19,-0.04 -22.79,0 -3.52,0.02 -6.26,1.66 -8.16,4.55 -2.24,3.33 -2.34,6.96 -0.55,10.51 1.88,3.7 5.17,5.52 9.28,5.56 7.58,0.07 15.2,-0.06 22.77,0.11 1.34,0.05 2.8,1.07 3.94,1.97 3,2.41 5.72,5.23 8.87,7.42 1.53,1.05 2.3,1.82 2.28,3.73 -0.11,7.15 -0.07,14.31 -0.05,21.47 0,1.18 -0.02,2.41 0.27,3.55 0.83,3.39 4.18,5.65 7.61,5.32 3.77,-0.37 6.51,-3.22 6.57,-7.23 0.09,-7.7 0.07,-15.41 0,-23.11 0,-1.97 0.79,-2.89 2.54,-3.95 2.89,-1.72 5.72,-3.91 7.86,-6.5 1.62,-1.97 3.07,-2.82 5.58,-2.82 27.57,0.09 55.13,0.06 82.67,0.06 10.64,0 21.28,0.07 31.9,-0.02 6.66,-0.06 11.03,-4.55 10.84,-10.79 -0.2,-6.09 -4.64,-9.9 -11.69,-9.9 z m -124.61,11.53 c 0,0.01 0,0.02 -0.01,0.04 -0.01,0.13 -0.02,0.25 -0.04,0.38 -0.02,0.19 -0.05,0.37 -0.09,0.56 -0.1,0.55 -0.24,1.1 -0.42,1.63 -0.06,0.18 -0.12,0.36 -0.19,0.53 -0.08,0.21 -0.16,0.41 -0.26,0.62 -0.08,0.19 -0.16,0.37 -0.26,0.54 -0.18,0.36 -0.38,0.72 -0.6,1.05 -0.32,0.5 -0.68,0.98 -1.07,1.44 0,0.01 0,0.01 -0.01,0.02 -0.27,0.3 -0.54,0.58 -0.82,0.86 -0.15,0.14 -0.3,0.28 -0.45,0.42 0,0 0,0.01 -0.01,0.01 -0.2,0.18 -0.41,0.35 -0.62,0.51 -0.16,0.13 -0.32,0.25 -0.48,0.36 -0.94,0.67 -1.98,1.22 -3.09,1.62 -0.78,0.28 -1.58,0.49 -2.42,0.62 -0.42,0.06 -0.84,0.11 -1.27,0.13 -0.21,0 -0.42,0.01 -0.64,0.01 -0.23,0.01 -0.45,0 -0.68,-0.02 -0.17,-0.01 -0.34,-0.03 -0.52,-0.05 -0.37,-0.04 -0.74,-0.11 -1.1,-0.2 -0.36,-0.09 -0.72,-0.2 -1.07,-0.32 -1.28,-0.47 -2.5,-1.18 -3.6,-2.07 -0.19,-0.15 -0.38,-0.32 -0.56,-0.48 -0.24,-0.22 -0.47,-0.44 -0.69,-0.67 -0.05,-0.05 -0.1,-0.11 -0.15,-0.16 -0.22,-0.24 -0.44,-0.49 -0.64,-0.74 -0.26,-0.31 -0.5,-0.63 -0.72,-0.96 -0.22,-0.33 -0.43,-0.66 -0.63,-1.01 -0.38,-0.7 -0.71,-1.42 -0.95,-2.16 -0.13,-0.37 -0.23,-0.75 -0.32,-1.12 -0.04,-0.19 -0.08,-0.38 -0.11,-0.57 -0.06,-0.29 -0.1,-0.59 -0.11,-0.89 -0.03,-0.3 -0.04,-0.6 -0.04,-0.9 0,-0.22 0.01,-0.44 0.01,-0.66 0.02,-0.4 0.05,-0.79 0.11,-1.18 0.02,-0.14 0.04,-0.29 0.07,-0.43 0.01,-0.08 0.02,-0.15 0.04,-0.23 0.02,-0.07 0.04,-0.15 0.05,-0.23 0.03,-0.16 0.06,-0.31 0.1,-0.46 0.06,-0.25 0.13,-0.5 0.21,-0.74 0.16,-0.54 0.37,-1.07 0.61,-1.58 0.08,-0.18 0.17,-0.36 0.27,-0.54 0.12,-0.22 0.24,-0.44 0.37,-0.65 0.13,-0.21 0.26,-0.42 0.41,-0.63 0.28,-0.4 0.59,-0.79 0.92,-1.16 0.17,-0.2 0.36,-0.4 0.56,-0.58 0.16,-0.16 0.32,-0.31 0.49,-0.46 0.18,-0.16 0.37,-0.32 0.57,-0.47 0.19,-0.15 0.39,-0.29 0.6,-0.43 0.61,-0.42 1.27,-0.78 1.96,-1.08 0.23,-0.1 0.46,-0.19 0.7,-0.28 0.17,-0.06 0.34,-0.12 0.51,-0.17 0.17,-0.06 0.34,-0.11 0.51,-0.15 0.17,-0.04 0.35,-0.09 0.53,-0.13 0.18,-0.03 0.35,-0.07 0.53,-0.1 0.55,-0.09 1.1,-0.15 1.67,-0.18 0.22,-0.01 0.44,-0.01 0.66,-0.01 0.16,0 0.32,0 0.48,0.01 0.15,0.01 0.31,0.02 0.47,0.03 0.31,0.03 0.62,0.06 0.92,0.11 0.27,0.04 0.54,0.1 0.81,0.16 0.26,0.06 0.53,0.13 0.79,0.21 0.25,0.07 0.51,0.16 0.75,0.25 l 0.01,0.01 c 0.24,0.09 0.48,0.18 0.71,0.28 0.04,0.02 0.07,0.03 0.11,0.06 0.22,0.1 0.43,0.2 0.65,0.32 0.22,0.11 0.44,0.24 0.66,0.37 0.01,0.01 0.02,0.01 0.03,0.02 0.22,0.14 0.44,0.29 0.66,0.44 0.21,0.15 0.42,0.31 0.63,0.48 0.1,0.08 0.2,0.16 0.29,0.24 0.2,0.17 0.4,0.36 0.59,0.55 0.18,0.17 0.35,0.35 0.51,0.53 0.27,0.29 0.52,0.59 0.75,0.91 0.11,0.16 0.23,0.32 0.34,0.48 0.22,0.32 0.42,0.66 0.61,1.01 0.25,0.47 0.48,0.96 0.66,1.47 0.08,0.19 0.15,0.38 0.21,0.58 0.41,1.24 0.62,2.57 0.6,3.95 0,0.35 -0.02,0.69 -0.06,1.03 z"
+   id="path4"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st0"
+   d="m 977.13,266.06 c 0,2.38 0.18,4.77 -0.05,7.13 -0.33,3.46 -2.74,5.61 -5.97,5.68 -3.35,0.08 -6.09,-2.12 -6.28,-5.68 -0.26,-4.85 -0.26,-9.73 0,-14.58 0.18,-3.35 2.89,-5.5 6.12,-5.5 3.24,0 5.81,2.14 6.15,5.5 0.24,2.46 0.05,4.97 0.05,7.46 -0.02,-0.01 -0.02,-0.01 -0.02,-0.01 z"
+   id="path6"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st0"
+   d="m 977.18,682.72 c 0,2.27 0.14,4.55 -0.03,6.81 -0.29,3.76 -2.88,6.18 -6.28,6.13 -3.29,-0.05 -5.91,-2.38 -6.08,-5.97 -0.22,-4.64 -0.22,-9.3 -0.02,-13.95 0.16,-3.57 2.77,-5.88 6.09,-5.93 3.45,-0.04 6.03,2.35 6.3,6.08 0.17,2.26 0.03,4.54 0.03,6.82 -0.01,0.01 -0.01,0.01 -0.01,0.01 z"
+   id="path8"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st0"
+   d="m 1192.26,474.54 c -0.1,3.29 -2.6,5.76 -6.06,5.98 -0.21,0.02 -0.44,0.01 -0.65,0.01 h -6.5 c 0,-0.01 0,-0.01 0,-0.01 -2.27,0 -4.55,0.1 -6.82,-0.03 -3.29,-0.18 -5.7,-2.67 -5.86,-5.83 -0.16,-3.24 2.25,-6.29 5.58,-6.45 4.86,-0.21 9.75,-0.2 14.61,-0.01 3.38,0.14 5.8,3.07 5.7,6.34 z"
+   id="path10"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st0"
+   d="m 775.52,474.41 c -0.01,3.28 -2.51,5.85 -5.93,6.11 -0.21,0.01 -0.44,0.01 -0.65,0.01 -1.44,0.01 -2.88,0.01 -4.33,0.01 -0.72,-0.01 -1.45,-0.01 -2.17,-0.01 -1.8,-0.01 -3.61,0.05 -5.42,0.02 -0.46,-0.01 -0.93,-0.03 -1.4,-0.05 -3.44,-0.17 -5.94,-2.75 -5.99,-6.04 -0.05,-3.27 2.4,-6.15 5.78,-6.27 4.75,-0.18 9.53,-0.18 14.29,-0.01 3.37,0.13 5.84,2.97 5.82,6.23 z"
+   id="path12"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st1"
+   d="m 958.61,474.59 c 0,0.3 0.01,0.6 0.04,0.9 -0.04,-0.3 -0.05,-0.6 -0.05,-0.91 0,-0.22 0.01,-0.43 0.02,-0.65 0,0.22 -0.01,0.44 -0.01,0.66 z"
+   id="path14"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st1"
+   d="m 961.78,466.1 c -0.33,0.37 -0.64,0.76 -0.92,1.16 0.28,-0.4 0.58,-0.79 0.92,-1.16 z"
+   id="path16"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st1"
+   d="m 968.74,462.25 c 0.54,-0.1 1.1,-0.16 1.67,-0.18 -0.57,0.03 -1.12,0.09 -1.67,0.18 z"
+   id="path18"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st1"
+   d="m 970.5,486.91 c 0.22,0 0.43,-0.01 0.64,-0.01 -0.22,0.01 -0.43,0.02 -0.65,0.02 -0.23,0 -0.45,-0.01 -0.67,-0.03 0.23,0.02 0.45,0.03 0.68,0.02 z"
+   id="path20"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st1"
+   d="m 971.07,462.05 c 0.16,0 0.32,0.01 0.48,0.02 -0.16,-0.01 -0.32,-0.01 -0.48,-0.01 -0.22,0 -0.44,0 -0.66,0.01 0.22,-0.02 0.44,-0.02 0.66,-0.02 z"
+   id="path22"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st1"
+   d="m 979.48,483.23 c 0.28,-0.28 0.55,-0.56 0.82,-0.86 -0.39,0.46 -0.81,0.89 -1.27,1.28 0.15,-0.14 0.3,-0.28 0.45,-0.42 z"
+   id="path24"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st1"
+   d="m 980.31,482.35 c 0.39,-0.46 0.75,-0.94 1.07,-1.44 -0.32,0.51 -0.67,0.99 -1.07,1.44 z"
+   id="path26"
+   style="fill:#ffffff;fill-opacity:1" />
+       </g>
+       <g
+   id="g34"
+   style="fill:#ffffff;fill-opacity:1">
+               <path
+   class="st2"
+   d="m 938.51,758.43 c -34.37,-2.96 -66.64,-13.09 -97.29,-28.53 -49.17,-24.78 -88.16,-60.95 -116.45,-107.95 -25.2,-41.88 -38.29,-87.64 -39.36,-136.77 -0.09,-3.85 -0.09,-7.71 0,-11.52 0.09,-7.29 0.48,-14.49 1.12,-21.63 11.91,-134.4 113.67,-241.26 251.03,-257.66 4.31,-0.5 8.67,-0.59 14.3,-0.96 v 29.07 c -46.37,3.83 -89.21,17.01 -126.34,44.05 -69.97,50.9 -108.26,116.27 -110.73,196.23 -0.2,6.09 -0.18,12.24 0.07,18.48 0.42,11.65 1.55,23.58 3.44,35.79 14.1,91.8 67.32,155.37 150.6,193.47 20.65,9.46 44.33,12.65 66.88,17.32 10.14,2.1 16.07,5.85 16.59,16.44 0.42,9.68 -3.48,15.07 -13.86,14.17 z"
+   id="path30"
+   style="fill:#ffffff;fill-opacity:1" />
+               <path
+   class="st0"
+   d="m 1162.02,683.4 c -44.03,42.88 -98.06,67.32 -159.42,74.45 -8.29,0.97 -17.41,2.57 -19.25,-9.57 -1.57,-10.33 4.3,-17.15 16.13,-19.83 19.48,-4.43 39.28,-7.97 58.3,-14 35.17,-11.17 65.04,-31.76 90.27,-58.19 73.17,-76.55 94.83,-166.82 58.98,-265.97 -35.85,-99.21 -110.67,-153.99 -215.54,-167.1 -1.7,-0.21 -3.41,-0.45 -6.61,-0.87 v -29.03 c 11.2,1.26 21.95,1.57 32.31,3.75 112.32,23.39 189.63,88.88 222.52,198.65 32.9,109.93 4.63,207.56 -77.69,287.71 z"
+   id="path32"
+   style="fill:#ffffff;fill-opacity:1" />
+       </g>
+</g><path
+     class="st2"
+     d="m 372.73806,659.40059 c -0.72,-46.47 -16.42,-83.63 -47.1,-111.47 -31.42,-28.52 -73.53,-42.77 -126.33,-42.77 H 41.938065 c -9.98,0 -18.07,8.09 -18.07,18.07 v 82.8 c 14.78,-16.16 35.3,-26.83 57.84,-27.88 28.019995,-1.31 56.119995,-0.7 84.179995,-0.92 0.8,0 1.58,0.38 2.4,0.6 l 0.4,63.51 c -16.76,1.57 -26.57,10.97 -26.99,25.49 -0.43,14.39 9.08,23.89 27.48,27.23 l 0.4,63.57 c -25.22,0.16 -49.7,0.4 -74.199995,0.4 -7.3,0 -14.69,-0.05 -21.88,-1.21 -19.86,-3.2 -36.97,-13 -49.63,-27.15 v 311.46001 c 0,9.98 8.09,18.08 18.07,18.08 h 43.45 c 9.98,0 18.079995,-8.1 18.079995,-18.08 V 837.29059 c 0,-9.99 8.09,-18.08 18.08,-18.08 h 40.53 c 52.28,0 92.41,-5.61 120.39,-16.83 27.99,-11.22 50.03,-29.24 66.14,-54.06 13.39,-20.63 21.21,-43.82 23.47,-69.57 0.46,-5.22 0.69,-10.54 0.69,-15.97 0,-1.13 -0.01,-2.26 -0.03,-3.38 z m -83.69,-0.2 c -14.22,0.09 -28.41,0.29 -42.61,0.1 -1.43,-0.01 -3.22,-2.13 -4.18,-3.71 -5.51,-9.04 -12.77,-14.53 -23.58,-14.25 -11.44,0.29 -22.88,0.19 -34.61,0.27 l -0.41,-64 c 63.78,-8.71 102.92,37.04 105.39,81.59 z m -121.78,19 c -6.43,-0.07 -10.54,-4.08 -10.89,-10.11 -0.37,-6.14 3.22,-10.98 9.61,-11.2 17.95,-0.62 35.92,-0.96 53.88,-0.86 6.81,0.03 10.48,4.78 10.28,11.31 -0.21,6.76 -3.71,10.47 -10.85,10.71 -8.74,0.32 -17.52,0.18 -26.3,0.24 v -0.2 c -8.57,0.06 -17.16,0.23 -25.73,0.11 z m 17.61,78.72 -0.41,-63.97 c 10.99,-0.07 21.62,-0.7 32.19,-0.06 12.21,0.74 20.12,-5.14 26.08,-15.3 0.73,-1.24 2.22,-2.85 3.38,-2.87 14.39,-0.3 28.77,-0.31 43.19,-0.4 -2.61,44.46 -40.31,90.56 -104.43,82.6 z"
+     id="path94"
+     style="fill:#ffffff;fill-opacity:1" /><path
+     class="st2"
+     d="M 1401.8881,501.41059 H 995.96806 c -12.49,0 -22.62,10.12 -22.62,22.62 v 25.52 c 0,12.49 10.13,22.62 22.62,22.62 h 144.46004 c 12.49,0 22.62,10.13 22.62,22.62 v 440.19001 c 0,12.49 10.13,22.62 22.62,22.62 h 34.36 c 12.5,0 22.62,-10.13 22.62,-22.62 V 594.79059 c 0,-12.49 10.13,-22.62 22.62,-22.62 h 136.62 c 12.49,0 22.62,-10.13 22.62,-22.62 v -25.52 c 0,-12.5 -10.13,-22.62 -22.62,-22.62 z"
+     id="path96"
+     style="fill:#ffffff;fill-opacity:1" /><g
+     id="g100"
+     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+     transform="translate(-247.74194,307.80059)">
+       <path
+   class="st2"
+   d="m 560.4,349.53 c -1.41,0 -2.83,0.29 -4.51,0.47 l 0.11,17.56 c 1.71,0.12 3.48,0.34 5.27,0.34 15.07,0.02 30.16,-0.19 45.24,0.06 13.92,0.22 19.38,5.01 21.47,19.27 1.25,8.54 1.73,17.24 2.01,25.87 0.99,30.98 17.18,50.79 46.85,55.6 9.62,1.56 19.56,1.28 29.35,1.22 6.08,-0.04 9.74,-4.48 9.29,-9.82 -0.42,-5.1 -4.33,-8.12 -10.16,-8.33 -9.15,-0.33 -18.49,0.09 -27.43,-1.58 -19.96,-3.75 -29.56,-16.55 -30.35,-37.68 -0.39,-10.14 -0.67,-20.43 -2.58,-30.33 -4.1,-21.16 -13.12,-30.28 -33.7,-32.1 -16.84,-1.48 -33.9,-0.47 -50.86,-0.55 z"
+   id="path98"
+   style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" />
+</g></g>
+</svg>
diff --git a/admin/img/pottop.png b/admin/img/pottop.png
new file mode 100644 (file)
index 0000000..5f159c5
Binary files /dev/null and b/admin/img/pottop.png differ
diff --git a/admin/img/toplogo.png b/admin/img/toplogo.png
new file mode 100644 (file)
index 0000000..37e2068
Binary files /dev/null and b/admin/img/toplogo.png differ
diff --git a/admin/index.php b/admin/index.php
new file mode 100644 (file)
index 0000000..1ae2770
--- /dev/null
@@ -0,0 +1,121 @@
+<?php 
+  require('lib/vendor/mustache/mustache/src/Mustache/Autoloader.php');
+  Mustache_Autoloader::register();
+
+  require("lib/config.php");
+  require("lib/database.php");
+  require("lib/session.php");
+  $vars = array();
+  $vars["skeleton"] = "index.html";
+  $vars["page"] = 'home.html';
+  $vars["config"] = $cfg;
+  $vars["requri"] = $_SERVER["REQUEST_URI"];
+  $postdata = [];
+  if (isset($_POST)){
+    $postdata = $_POST;
+  }
+  $vars["posts"] = $postdata;
+  $vars["requri"] = $_SERVER["REQUEST_URI"];
+  if ($_SERVER["REQUEST_URI"] != $cfg["basepath"]){
+    if (strpos($_SERVER["REQUEST_URI"], ".html?") === false){
+      $vars["filepath"] = $_SERVER["REQUEST_URI"];
+    }else {
+      $vars["filepath"] = substr($_SERVER["REQUEST_URI"],0,strpos($_SERVER["REQUEST_URI"],".html?")).".html";
+    }
+    $vars["filepath"] = str_replace($cfg["basepath"],'',$vars["filepath"]);
+    $vars["querystr"] = $_SERVER['QUERY_STRING'];
+    $vars["params"] = $postdata;
+    $vars["page"] = $vars["filepath"];
+  }
+  
+  $abslen = substr_count($vars["page"],'/');
+  $vars["abspath"] = "";
+  if ($abslen > 0){
+    for ($i=0;$i<$abslen;$i++){
+      $vars["abspath"] .= "../";
+    }
+     
+  }
+  $vars["contenttype"] = "text/html";
+  if (substr($vars["page"],-3) == "css"){
+    $vars["contenttype"] = "text/css";
+  } elseif (substr($vars["page"],-2) == "js"){
+    $vars["contenttype"] = "text/javascript";
+  }
+  
+  $vars["sid"] = "";
+  if (isset($_COOKIE[$cfg["cookie"]])){
+    $vars["sid"] = $_COOKIE[$cfg["cookie"]]; 
+  }
+  $db = new database($cfg["db"]);
+  $sess = new session($db);
+  $vars["session"] = array();
+  if ($vars["sid"] != ""){
+    $vars["session"] = $sess->getSession($vars["sid"]);
+  }
+  if (count($postdata) > 0){
+    if (isset($postdata["btnlogin"])){
+      $vars["session"] = $sess->checkLogin($postdata["login"],$postdata["password"]);
+      //setcookie(    $name, $value, $expire, $path, $domain, $secure, $httponly )
+      setcookie($cfg["cookie"], $vars["session"]["id_session"], null, "/", null, false, true );
+    }
+  }
+  if(count($vars["session"]) == 0) {
+    $vars["skeleton"] = 'login.html';
+    if (($vars["page"] != 'login/forgotpassword.html') && ($vars["page"] != 'login/message.html')){
+      $vars["page"] = 'login/login.html';
+    }
+  } 
+  
+   if (($vars["skeleton"] != 'login.html') && (!file_exists($cfg["templatepath"].'/pages/'.$vars["page"].'.mustache'))){
+    if (substr($vars["page"],0,5) == "login"){
+      $vars["page"] = "home.html";
+    } else {
+      $vars["origpage"] =$vars["page"];  
+      $vars["page"] = 'error.html';
+    }
+    
+    // $vars["skeleton"] = 'login.html';
+    // $vars["page"] = 'login/login.html';
+  }
+  if (file_exists($cfg["templatepath"].'/pages/'.$vars["page"].'.json')){
+       
+    $tmpdata = file_get_contents($cfg["templatepath"].'/pages/'.$vars["page"].'.json');
+    try {
+      $vars["data"] = json_decode($tmpdata,true);
+      foreach ($vars["data"] as $key => $value) {
+        if ($value["sql"]){
+          if ($value["sqltype"] == "query"){
+            $vars["data"][$key] = $db->query($value["sql"]);
+          } elseif ($value["sqltype"] == "queryarray"){
+            $vars["data"][$key] = $db->queryarray($value["sql"]);
+          }
+        }
+      }
+    } catch(JsonException $je){
+      error_log("JSON ERROR: ".$je->getMessage());
+    }
+    
+  }
+  header('Content-Type: '.$vars["contenttype"]);
+  $vars["page"] = 'pages/'.$vars["page"];
+  $m = new Mustache_Engine(array(
+    'loader' => new Mustache_Loader_FilesystemLoader($cfg["templatepath"]),
+    'partials_loader' => new Mustache_Loader_FilesystemLoader($cfg["templatepath"].'/blocks'),
+    'escape' => function($value) {
+      return $value;
+    },
+    'entity_flags' => ENT_HTML5
+  ));
+  if ($vars["contenttype"] == "text/html"){
+    $vars["pagedata"] = $m->render($vars["page"],$vars);
+    $mainsite = $m->render($vars['skeleton'],$vars);
+    echo $mainsite;
+    $vars["pagedata"]= "";
+  } else {
+    $mainsite = $m->render($vars["page"],$vars);
+    echo $mainsite;
+  }
+  
+  echo "<pre>".print_r($vars)."</pre>";
+?>
\ No newline at end of file
diff --git a/admin/js/app.js b/admin/js/app.js
new file mode 100644 (file)
index 0000000..0677538
--- /dev/null
@@ -0,0 +1,78 @@
+let myapp = {
+    loadpage: function(modulepage, modulename) {
+      location.href=modulepage;
+    },
+    togglemenu: function (idmenu){
+      var mnu = document.getElementById(idmenu);
+      if (mnu.style.display == 'none'){
+        mnu.style.display = 'block';
+      } else {
+        mnu.style.display = 'none';
+      }
+    },
+    logout: function() {
+      postData(location.href, { "logout": "1" }).then (data => { location.href = 'login.html';});
+    },
+    reloadpage() { },
+    changedataset: function(){},
+    getCurrentSchemata: function(){
+      return schemata;
+    },
+    changedataset: function(){
+      let csel = document.getElementById("current_schemata").value;
+      schemata =  csel;
+      postData("db.cgi",{"fn":"setsessiondata","params":{"schemata":csel}}).then(data => {
+        document.getElementById("current_schemata").dataset.selected = csel;
+      });
+    },
+    setschemata(data){
+    },
+    reload_page: function() {
+      location.href = location.href;
+    },
+    viewpanel: function(pnlname){
+      let panels = document.getElementsByClassName("panel");
+      let toolbars = document.getElementsByClassName("paneltoolbar");
+      currentview = pnlname;
+      for (let p=0;p<panels.length;p++){
+        panels[p].style.display = 'none';
+      }
+      for (let p=0;p<toolbars.length;p++){
+         toolbars[p].style.display = 'none';
+      }
+      if (document.getElementById('pnl_' + pnlname)){
+        document.getElementById('pnl_' + pnlname).style.display = 'block';
+      }
+      if (document.getElementById('tlb_' +pnlname)){
+         document.getElementById('tlb_' +pnlname).style.display = 'block';
+      }
+      return false;
+    },
+    viewdialog: function(dlgname){
+      if (document.getElementById('dlg_' +dlgname)){
+        document.getElementById('dlg_' +dlgname).style.display = 'block';
+      } 
+    },
+    opendlg: function(dlgname,msgdata,callback){
+      for (var x in msgdata){
+        if (document.getElementById(dlgname + x)){
+          document.getElementById(dlgname + x).innerHTML = msgdata[x];
+        }
+      }
+      if (callback){
+        if (document.getElementById(dlgname + "_button")){
+          document.getElementById(dlgname + "_button").addEventListener("click",callback,true);
+        }
+        if (document.getElementById(dlgname + "_button")){
+          document.getElementById(dlgname + "_button").addEventListener("click",callback,true);
+        }
+      }
+    },
+    closedlg: function(dlgid){
+      document.getElementById(dlgid).style.display='none';
+    }
+}
+document.addEventListener("DOMContentLoaded", function() {
+  moment.locale('fr');
+  initpage();
+});
diff --git a/admin/js/dataform.js b/admin/js/dataform.js
new file mode 100644 (file)
index 0000000..2251bae
--- /dev/null
@@ -0,0 +1,263 @@
+let dataform = {
+saveform: function(frmid,aftercallback,clientschema){
+  var flds=form.getformcontent(frmid,null);
+  flds["fn"] ="saveform";
+  flds["schemata"]=clientschema;
+  flds["table"] = frmid;
+  if (clientschema == null){
+    flds["schemata"]=schemata;
+  }
+  delete flds["null"]; 
+  postData("db.cgi",flds).then(data => {
+    if (aftercallback){
+      aftercallback(data.result);
+      form.formsaved({});
+    } else {
+      form.formsaved(data.result);
+    }
+  });
+  return false;
+},
+saveformdata: function(flds,aftercallback,clientschema){
+  flds["fn"] ="saveform";
+  flds["schemata"]=clientschema;
+  if (clientschema == null){
+    flds["schemata"]=schemata;
+  }
+  delete flds["null"];
+  postData("db.cgi",flds).then(data => {
+    if (aftercallback){
+      aftercallback(data.result);
+      form.formsaved({});
+    } else {
+      form.formsaved(data.result);
+    }
+  });
+  return false;
+},
+formsaved: function(data){
+  var sb = document.getElementById("snackbar");
+  sb.className="show green";
+  sb.innerHTML = 'Les données ont été sauvegardées!';
+  setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
+  return false;
+},
+getformcontent: function(frmid,dataflds){
+  var frm = document.getElementById("frm_" + frmid);
+  var flds = {};
+  // if (dataflds){
+  //   flds = dataflds;
+  // } 
+  for (var i = 0; i < frm.elements.length; i++) {
+    var field = frm.elements[i];
+    if ((field.getAttribute("name") != 'null') && (field.tagName == "INPUT" || field.tagName == "SELECT" || field.tagName == "TEXTAREA")){
+      if (field.classList.contains("tagedit")){
+        var fvalue=field.value.trim();
+        var ndata = null;
+        if (fvalue != ""){
+          ndata =  fvalue.split(",");  
+        }
+        flds[field.getAttribute("name")] = ndata;
+      }else if (field.tagName == "TEXTAREA" ){
+        if (field.classList.contains("richeditarea")){
+          flds[field.getAttribute("name")] = tinymce.get(field.id).getContent();
+        } else {
+          flds[field.getAttribute("name")] = field.innerHTML;
+        }
+      }else if (field.type == "checkbox" ){
+        if (field.checked){
+          flds[field.getAttribute("name")] = "1";
+        } else {
+          flds[field.getAttribute("name")] = "";
+        }
+      }
+      else if (field.tagName == "SELECT" && field.multiple == true){
+        flds[field.getAttribute("name")] = dataflds[field.getAttribute("id")].selected();
+      } 
+      else if (field.tagName == "SELECT"){
+         flds[field.getAttribute("name")] = dataflds[field.getAttribute("id")].selected();
+      }
+      else {
+        flds[field.getAttribute("name")] = field.value;
+      }
+    }
+  }
+  return flds;
+},
+cleanform: function(frmname){
+  var frm = document.getElementById("frm_" + frmname);
+  for (var f in frm){
+    if (frm[f] && frm[f].id){
+    if (frm[f].tagName == 'INPUT'){
+      if (frm[f].type == "checkbox"){
+        frm[f].checked = false;
+      } else if (frm[f].classList.contains("datefield")){
+          if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
+      } 
+      // else if (frm[f].classList.contains("choices__input")){
+      //   if (choice[frmname][frm[f].id]){
+      //     choice[frmname][frm[f].id].removeActiveItems();
+      //   }
+      // } 
+      else {
+        frm[f].value = "";
+      }
+    }
+    if (frm[f].tagName == 'SELECT'){
+      if (frm[f].multiple == true){
+        if (frm[f].classList.contains("choices__input")){
+          choice[frmname][frm[f].id].removeActiveItems();
+        }
+      } else {
+        frm[f].value = "";
+      }
+      
+    }
+    if (frm[f].tagName == 'TEXTAREA'){
+      if (frm[f].classList.contains("richeditarea")){
+        tinymce.get(frm[f].id).setContent("");
+      } else {
+        frm[f].innerHTML = "";
+      } 
+    }
+  }
+  }
+  return false;
+},
+cleanform2: function(frmname,choices){
+  var frm = document.getElementById("frm_" + frmname);
+  for (var f in frm){
+    if (frm[f] && frm[f].id){
+    if (frm[f].tagName == 'INPUT'){
+      if (frm[f].type == "checkbox"){
+        frm[f].checked = false;
+      } else if (frm[f].classList.contains("datefield")){
+          if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
+      } 
+      // else if (frm[f].classList.contains("choices__input")){
+      //   if (choices[frm[f].id]){
+      //     choices[frm[f].id].removeActiveItems();
+      //   }
+      // } 
+      else {
+        frm[f].value = "";
+      }
+    }
+    if (frm[f].tagName == 'SELECT'){
+      if (frm[f].multiple == true){
+        if (frm[f].classList.contains("choices__input")){
+          choices[frm[f].id].removeActiveItems();
+        }
+      } else {
+        frm[f].value = "";
+      }
+      
+    }
+    if (frm[f].tagName == 'TEXTAREA'){
+      if (frm[f].classList.contains("richeditarea")){
+        tinymce.get(frm[f].id).setContent("");
+      } else {
+        frm[f].innerHTML = "";
+      } 
+    }
+  }
+  }
+  return false;
+},
+fillformbydataclass2: function(dataclass,choices,data,onblur){
+  var frm = document.getElementsByClassName('data_'+ dataclass);
+  //console.log("frmdata",frm);
+  if (data){
+    for (var f in frm){
+      //console.log("field",frm[f].id);
+      if (frm[f].id){
+        frm[f].dataset.id=data['id'];
+      }
+      if (data[frm[f].id]){
+
+        if (frm[f].tagName == 'INPUT'){
+          if (frm[f].type == "checkbox"){
+            if (data[frm[f].id] == "1"){
+              frm[f].checked = true;
+            } else {
+              frm[f].checked = false;
+            }
+          } 
+          else if (frm[f].classList.contains("datefield")){ 
+            frm[f]._flatpickr.setDate(data[frm[f].id]);
+          } 
+          else if (frm[f].classList.contains("timefield")){
+            frm[f].value = timecalc.StringToTime(data[frm[f].id]);
+          }
+          else {
+            frm[f].value=data[frm[f].id];
+          }
+        }
+        if (frm[f].tagName == 'SELECT'){
+          if (frm[f].multiple == true){
+       
+            choices[frm[f].id].set(JSON.parse(data[frm[f].id]));
+          } else {
+            frm[f].value=data[frm[f].id];
+          }
+        }
+      } 
+    }
+  }
+},
+fillselectlist: function(obj,data,vidcol,vvalcol){
+  var sellist = [];
+  let csel = obj.value;
+  if (data){
+    for (var i in data){
+      sellist.push({value:data[i][vidcol],text:data[i][vvalcol]});
+    }
+  }
+  obj.setData(sellist);
+  if (obj.select.element.dataset.selected && obj.select.element.dataset.selected != ""){
+     obj.set(obj.select.element.dataset.selected);
+  }
+  return false;
+},
+savefield: function(obj,callback){
+  fdata = obj.dataset;
+  fdata["save"] = "field";
+  fdata["schemata"] = schemata;
+  if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA'){
+    if (obj.type == 'checkbox' || obj.type == 'radio'){
+      if (obj.checked == true){
+        fdata["value"] = 1;
+      } else {
+        fdata["value"] = null;
+      }
+    }else {
+      fdata["value"] = obj.value;
+    }
+  }
+  postData("db.cgi",fdata).then(data => { if (callback){callback(data);}});
+  return false;
+},
+saveschemafield: function(obj,schema){
+  fdata = obj.dataset;
+  fdata["save"] = "field";
+  fdata["schemata"] = schema;
+  if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA'){
+    if (obj.type == 'checkbox' || obj.type == 'radio'){
+      if (obj.checked == true){
+        fdata["value"] = 1;
+      } else {
+        fdata["value"] = null;
+      }
+    }else {
+      fdata["value"] = obj.value;
+    }
+  }
+  postData("db.cgi",fdata).then(data => { });
+  return false;
+},
+cleanfield: function(objid){
+  document.getElementById(objid).value='';
+}
+
+
+}
\ No newline at end of file
diff --git a/admin/js/modules/galleries.js b/admin/js/modules/galleries.js
new file mode 100644 (file)
index 0000000..5869ce1
--- /dev/null
@@ -0,0 +1,20 @@
+let galleries = {
+  tbl: null,
+  init: function(){
+    console.log("Init Galleries!");
+    galleries.tbl= new Tabulator("#tbl_galleries",{
+      height: "calc(100vh - 60px)",
+      layout: "fitColumns",
+      responsiveLayout:true,
+      selectable: 1,
+      rowContext:function(e, row){ e.preventDefault(); },
+        columns: [
+          {title: "Gallerie", field: "name"},
+      ]
+    });
+    galleries.gettbldata();
+  },
+  gettbldata: function(){
+    // postData()
+  }
+} 
\ No newline at end of file
diff --git a/admin/js/modules/rendezvous.js b/admin/js/modules/rendezvous.js
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/js/modules/shop.js b/admin/js/modules/shop.js
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/js/modules/users.js b/admin/js/modules/users.js
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/js/modules/websites.js b/admin/js/modules/websites.js
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/js/report.js b/admin/js/report.js
new file mode 100644 (file)
index 0000000..97733df
--- /dev/null
@@ -0,0 +1,13 @@
+var report ={
+  generate: function(repname,filename,data){
+    showdataloaddlg("Création PDF encours","Attendez s.v.p.");//closedataloaddlg();
+    postData("report.cgi",{"generate":repname,"file": filename + ".pdf","data":data}).then(data => {closedataloaddlg();;report.openreport(data.result)}).catch(e => {closedataloaddlg();});
+    return false;
+  },
+  openreport(data){
+    
+    if (data && data.file){
+      window.open(api + "report.cgi?open=" + encodeURIComponent(data.file));
+    }
+  }
+}
\ No newline at end of file
diff --git a/admin/js/request.js b/admin/js/request.js
new file mode 100644 (file)
index 0000000..bf0a98f
--- /dev/null
@@ -0,0 +1,56 @@
+var api = location.origin + location.pathname.substring(0,location.pathname.lastIndexOf('/')) + '/';
+console.log(api);
+// var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}
+
+async function postData(url = '', data = {}) {
+  const response = await fetch(api + url, {
+    method: 'POST', 
+    mode: 'same-origin', 
+    cache: 'no-cache', 
+    credentials: 'same-origin', 
+    headers: {
+      'Content-Type': 'application/json'
+      
+    },
+    redirect: 'follow', 
+    referrerPolicy: 'strict-origin', 
+    body: JSON.stringify(data) 
+  });
+  
+  return response.json();
+}
+
+// var report ={
+//   generate: function(repname,filename,data){
+//     showdataloaddlg("Création PDF encours","Attendez s.v.p.");
+//     postData("report.cgi",{"generate":repname,"file": filename + ".pdf","data":data}).then (data => {closedataloaddlg();report.openreport(data);});
+//     return false;
+//   },
+//   openreport(data){
+//     if (data && data.file){
+//       window.open(api + "report.cgi?open=" + encodeURIComponent(data.file));
+//     }
+//   }
+// }
+
+// async function syncData(url,username,password, data = {}) {
+//   //var decodedString = Base64.decode(encodedString);
+//   let hh = {};
+//   hh['Content-Type'] = 'application/json'; 
+//   if ((username != null) && (username != '')){
+//     hh['Authorization'] = Base64.encode(username + ":" + password);
+//   }
+//   const response = await fetch(url, {
+//     method: 'POST', 
+//     mode: 'cors', 
+//     cache: 'no-cache', 
+//     credentials: 'omit', 
+//     headers: hh,  
+//     redirect: 'follow', 
+//     referrerPolicy: 'strict-origin', 
+//     body: JSON.stringify(data) 
+//   });
+  
+//   return response.json();
+// }
+
diff --git a/admin/js/timecalc.js b/admin/js/timecalc.js
new file mode 100644 (file)
index 0000000..72425a2
--- /dev/null
@@ -0,0 +1,128 @@
+let timecalc = {
+  MinutesToTime:function (minutes) {
+    minutes = parseInt(minutes);
+    if ((minutes == null) || (minutes == 0)){ return "00:00";};
+    let hours = parseInt(minutes/60);
+    
+    let restminutes = minutes-(hours*60);
+    // console.log(hours + " : " + restminutes);
+    return timecalc.lpad(hours,2,'0') + ":"+ timecalc.lpad(restminutes,2,'0');
+  },
+  TimeToMinutes:function (strtime){
+    let hours = parseInt(strtime.substring(0,2)) * 60;
+    let minutes = parseInt(strtime.substring(3,5));
+    return hours+minutes;
+  },
+  lpad: function(str, length,padString) {
+    let xstr = str.toString();
+    while (xstr.length < length){xstr = padString + xstr};
+    return xstr;
+  },
+  mondayBefore: function(sdate){
+     if (sdate == null){
+       sdate=new Date();
+     }
+    let day = sdate.getDay();
+    let prevMonday = new Date();
+     if(sdate.getDay() == 0){
+         prevMonday = new Date().setDate(sdate.getDate() - 0);
+    }
+    else{
+         prevMonday = new Date().setDate(sdate.getDate() - day);
+   }
+    return new Date(prevMonday);
+  },
+  sundayAfter: function(sdate){
+    let nextSunday = new Date();
+  },
+  StringToTime: function(strin){
+    strin = strin.toString().substring(0,5);
+    strin = strin.replace(/\D/g,'');
+    //console.log("StT:",strin);
+    if (strin.length == 0){ return "";}
+    if (strin.length <= 2){
+      if (strin > "23") {return ""} else {
+        //console.log("xtime",timecalc.lpad(strin,2,'0')+":00");
+        return timecalc.lpad(strin,2,'0')+":00";
+      }
+    } else if (strin.length == 3){
+      let hours = strin.substring(0,1);
+      let minutes = strin.substring(1,3);
+      if (minutes > "59"){ return "";} 
+      return timecalc.lpad(hours,2,'0')+ ":"+ timecalc.lpad(minutes,2,'0');
+    } else if (strin.length == 4){
+      let hours = strin.substring(0,2);
+      let minutes = strin.substring(2,4);
+      if ((hours > "23") || (minutes > "59")){return "";}
+      return timecalc.lpad(hours,2,'0')+ ":"+ timecalc.lpad(minutes,2,'0');
+    }
+    return "";
+  },
+  StringToInterval: function(strin){
+    let minus = "";
+    if (strin.startsWith('-')){
+      minus = '-';
+    }
+    if (strin.indexOf(":") > 0){
+      let spl = strin.split(":");
+      hours = spl[0].replace(/\D/g,'');
+      if (hours == ""){
+        hours =  "0";
+      }
+      minutes = spl[1].replace(/\D/g,'');
+      if (minutes > "59"){
+        minutes = "0";
+      }
+      return minus + hours + ":" + timecalc.lpad(minutes,2,'0');
+    } 
+    if (strin == ""){ return "";}
+    strin = strin.replace(/\D/g,'');
+    return minus + strin + ":00";
+    
+  },
+  MinutesToInterval: function(minutes){
+    if ((minutes == null) || (minutes == "")){ return "0:00";}
+    let prep ="";
+    if (minutes < 0){
+      prep = "-";
+      minutes = minutes * -1;
+    }
+    let hours = parseInt(minutes/60);
+    let restminutes = minutes-(hours*60);
+    restminutes = Math.round(restminutes);
+    return prep+hours+ ":"+ timecalc.lpad(restminutes,2,'0');
+  },
+  IntervalToMinutes: function(strin){
+    if (strin == "" || strin == null){
+      return 0;
+    }
+    let mult = 1;
+    if (strin.startsWith("-")){
+      mult = -1;
+      strin =  strin.replace(/-/g,'');
+    }
+    let spl = strin.split(":");
+    let hours = parseInt(spl[0]) * 60;
+    let minutes = parseInt(spl[1]);
+    return (hours+minutes) * mult;
+  },
+  validateTime(obj){
+    obj.value = timecalc.StringToTime(obj.value);
+    return false;
+  },
+  validateInterval(obj){
+    obj.value = timecalc.StringToInterval(obj.value);
+    return false;
+  },
+  copyInterval(obj,idobjout,factor){
+    if (factor){
+      let mval = timecalc.IntervalToMinutes(obj.value) * factor;
+      document.getElementById(idobjout).value = timecalc.MinutesToInterval(mval);
+    }else {
+      document.getElementById(idobjout).value=obj.value;
+    }
+    if (document.getElementById(idobjout).value == '0:00'){
+      document.getElementById(idobjout).value = '';
+    }
+  }
+}
similarity index 99%
rename from website/js/vendor/flatpickr/flatpickr.js
rename to admin/js/vendors/flatpickr/flatpickr.js
index 59bb267..a94e6ac 100644 (file)
@@ -5,38 +5,38 @@
     (global = global || self, global.flatpickr = factory());
 }(this, (function () { 'use strict';
 
     (global = global || self, global.flatpickr = factory());
 }(this, (function () { 'use strict';
 
-    /*! *****************************************************************************\r
-    Copyright (c) Microsoft Corporation.\r
-\r
-    Permission to use, copy, modify, and/or distribute this software for any\r
-    purpose with or without fee is hereby granted.\r
-\r
-    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r
-    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r
-    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r
-    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r
-    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r
-    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r
-    PERFORMANCE OF THIS SOFTWARE.\r
-    ***************************************************************************** */\r
-\r
-    var __assign = function() {\r
-        __assign = Object.assign || function __assign(t) {\r
-            for (var s, i = 1, n = arguments.length; i < n; i++) {\r
-                s = arguments[i];\r
-                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r
-            }\r
-            return t;\r
-        };\r
-        return __assign.apply(this, arguments);\r
-    };\r
-\r
-    function __spreadArrays() {\r
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r
-                r[k] = a[j];\r
-        return r;\r
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    function __spreadArrays() {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
     }
 
     var HOOKS = [
     }
 
     var HOOKS = [
@@ -4,30 +4,30 @@
     (global = global || self, global.confirmDatePlugin = factory());
 }(this, (function () { 'use strict';
 
     (global = global || self, global.confirmDatePlugin = factory());
 }(this, (function () { 'use strict';
 
-    /*! *****************************************************************************\r
-    Copyright (c) Microsoft Corporation.\r
-\r
-    Permission to use, copy, modify, and/or distribute this software for any\r
-    purpose with or without fee is hereby granted.\r
-\r
-    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r
-    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r
-    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r
-    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r
-    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r
-    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r
-    PERFORMANCE OF THIS SOFTWARE.\r
-    ***************************************************************************** */\r
-\r
-    var __assign = function() {\r
-        __assign = Object.assign || function __assign(t) {\r
-            for (var s, i = 1, n = arguments.length; i < n; i++) {\r
-                s = arguments[i];\r
-                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r
-            }\r
-            return t;\r
-        };\r
-        return __assign.apply(this, arguments);\r
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
     };
 
     function getEventTarget(event) {
     };
 
     function getEventTarget(event) {
@@ -4,30 +4,30 @@
     (global = global || self, global.monthSelectPlugin = factory());
 }(this, (function () { 'use strict';
 
     (global = global || self, global.monthSelectPlugin = factory());
 }(this, (function () { 'use strict';
 
-    /*! *****************************************************************************\r
-    Copyright (c) Microsoft Corporation.\r
-\r
-    Permission to use, copy, modify, and/or distribute this software for any\r
-    purpose with or without fee is hereby granted.\r
-\r
-    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r
-    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r
-    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r
-    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r
-    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r
-    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r
-    PERFORMANCE OF THIS SOFTWARE.\r
-    ***************************************************************************** */\r
-\r
-    var __assign = function() {\r
-        __assign = Object.assign || function __assign(t) {\r
-            for (var s, i = 1, n = arguments.length; i < n; i++) {\r
-                s = arguments[i];\r
-                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r
-            }\r
-            return t;\r
-        };\r
-        return __assign.apply(this, arguments);\r
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
     };
 
     var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? "shorthand" : "longhand"][monthNumber]; };
     };
 
     var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? "shorthand" : "longhand"][monthNumber]; };
diff --git a/admin/js/vendors/flatpickr/utils/polyfills.d.ts b/admin/js/vendors/flatpickr/utils/polyfills.d.ts
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/js/vendors/moment/locales.js b/admin/js/vendors/moment/locales.js
new file mode 100644 (file)
index 0000000..caabe6a
--- /dev/null
@@ -0,0 +1,12105 @@
+;(function (global, factory) {
+   typeof exports === 'object' && typeof module !== 'undefined'
+       && typeof require === 'function' ? factory(require('../moment')) :
+   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
+   factory(global.moment)
+}(this, (function (moment) { 'use strict';
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('af', {
+        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
+        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
+            '_'
+        ),
+        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
+        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
+        meridiemParse: /vm|nm/i,
+        isPM: function (input) {
+            return /^nm$/i.test(input);
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 12) {
+                return isLower ? 'vm' : 'VM';
+            } else {
+                return isLower ? 'nm' : 'NM';
+            }
+        },
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Vandag om] LT',
+            nextDay: '[Môre om] LT',
+            nextWeek: 'dddd [om] LT',
+            lastDay: '[Gister om] LT',
+            lastWeek: '[Laas] dddd [om] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'oor %s',
+            past: '%s gelede',
+            s: "'n paar sekondes",
+            ss: '%d sekondes',
+            m: "'n minuut",
+            mm: '%d minute',
+            h: "'n uur",
+            hh: '%d ure',
+            d: "'n dag",
+            dd: '%d dae',
+            M: "'n maand",
+            MM: '%d maande',
+            y: "'n jaar",
+            yy: '%d jaar',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
+        ordinal: function (number) {
+            return (
+                number +
+                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
+            ); // Thanks to Joris Röling : https://github.com/jjupiter
+        },
+        week: {
+            dow: 1, // Maandag is die eerste dag van die week.
+            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var pluralForm = function (n) {
+            return n === 0
+                ? 0
+                : n === 1
+                ? 1
+                : n === 2
+                ? 2
+                : n % 100 >= 3 && n % 100 <= 10
+                ? 3
+                : n % 100 >= 11
+                ? 4
+                : 5;
+        },
+        plurals = {
+            s: [
+                'أقل من ثانية',
+                'ثانية واحدة',
+                ['ثانيتان', 'ثانيتين'],
+                '%d ثوان',
+                '%d ثانية',
+                '%d ثانية',
+            ],
+            m: [
+                'أقل من دقيقة',
+                'دقيقة واحدة',
+                ['دقيقتان', 'دقيقتين'],
+                '%d دقائق',
+                '%d دقيقة',
+                '%d دقيقة',
+            ],
+            h: [
+                'أقل من ساعة',
+                'ساعة واحدة',
+                ['ساعتان', 'ساعتين'],
+                '%d ساعات',
+                '%d ساعة',
+                '%d ساعة',
+            ],
+            d: [
+                'أقل من يوم',
+                'يوم واحد',
+                ['يومان', 'يومين'],
+                '%d أيام',
+                '%d يومًا',
+                '%d يوم',
+            ],
+            M: [
+                'أقل من شهر',
+                'شهر واحد',
+                ['شهران', 'شهرين'],
+                '%d أشهر',
+                '%d شهرا',
+                '%d شهر',
+            ],
+            y: [
+                'أقل من عام',
+                'عام واحد',
+                ['عامان', 'عامين'],
+                '%d أعوام',
+                '%d عامًا',
+                '%d عام',
+            ],
+        },
+        pluralize = function (u) {
+            return function (number, withoutSuffix, string, isFuture) {
+                var f = pluralForm(number),
+                    str = plurals[u][pluralForm(number)];
+                if (f === 2) {
+                    str = str[withoutSuffix ? 0 : 1];
+                }
+                return str.replace(/%d/i, number);
+            };
+        },
+        months = [
+            'جانفي',
+            'فيفري',
+            'مارس',
+            'أفريل',
+            'ماي',
+            'جوان',
+            'جويلية',
+            'أوت',
+            'سبتمبر',
+            'أكتوبر',
+            'نوفمبر',
+            'ديسمبر',
+        ];
+
+    moment.defineLocale('ar-dz', {
+        months: months,
+        monthsShort: months,
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'D/\u200FM/\u200FYYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ص|م/,
+        isPM: function (input) {
+            return 'م' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ص';
+            } else {
+                return 'م';
+            }
+        },
+        calendar: {
+            sameDay: '[اليوم عند الساعة] LT',
+            nextDay: '[غدًا عند الساعة] LT',
+            nextWeek: 'dddd [عند الساعة] LT',
+            lastDay: '[أمس عند الساعة] LT',
+            lastWeek: 'dddd [عند الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'بعد %s',
+            past: 'منذ %s',
+            s: pluralize('s'),
+            ss: pluralize('s'),
+            m: pluralize('m'),
+            mm: pluralize('m'),
+            h: pluralize('h'),
+            hh: pluralize('h'),
+            d: pluralize('d'),
+            dd: pluralize('d'),
+            M: pluralize('M'),
+            MM: pluralize('M'),
+            y: pluralize('y'),
+            yy: pluralize('y'),
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ar-kw', {
+        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
+            '_'
+        ),
+        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
+            '_'
+        ),
+        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[اليوم على الساعة] LT',
+            nextDay: '[غدا على الساعة] LT',
+            nextWeek: 'dddd [على الساعة] LT',
+            lastDay: '[أمس على الساعة] LT',
+            lastWeek: 'dddd [على الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'في %s',
+            past: 'منذ %s',
+            s: 'ثوان',
+            ss: '%d ثانية',
+            m: 'دقيقة',
+            mm: '%d دقائق',
+            h: 'ساعة',
+            hh: '%d ساعات',
+            d: 'يوم',
+            dd: '%d أيام',
+            M: 'شهر',
+            MM: '%d أشهر',
+            y: 'سنة',
+            yy: '%d سنوات',
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap = {
+            '1': '1',
+            '2': '2',
+            '3': '3',
+            '4': '4',
+            '5': '5',
+            '6': '6',
+            '7': '7',
+            '8': '8',
+            '9': '9',
+            '0': '0',
+        },
+        pluralForm$1 = function (n) {
+            return n === 0
+                ? 0
+                : n === 1
+                ? 1
+                : n === 2
+                ? 2
+                : n % 100 >= 3 && n % 100 <= 10
+                ? 3
+                : n % 100 >= 11
+                ? 4
+                : 5;
+        },
+        plurals$1 = {
+            s: [
+                'أقل من ثانية',
+                'ثانية واحدة',
+                ['ثانيتان', 'ثانيتين'],
+                '%d ثوان',
+                '%d ثانية',
+                '%d ثانية',
+            ],
+            m: [
+                'أقل من دقيقة',
+                'دقيقة واحدة',
+                ['دقيقتان', 'دقيقتين'],
+                '%d دقائق',
+                '%d دقيقة',
+                '%d دقيقة',
+            ],
+            h: [
+                'أقل من ساعة',
+                'ساعة واحدة',
+                ['ساعتان', 'ساعتين'],
+                '%d ساعات',
+                '%d ساعة',
+                '%d ساعة',
+            ],
+            d: [
+                'أقل من يوم',
+                'يوم واحد',
+                ['يومان', 'يومين'],
+                '%d أيام',
+                '%d يومًا',
+                '%d يوم',
+            ],
+            M: [
+                'أقل من شهر',
+                'شهر واحد',
+                ['شهران', 'شهرين'],
+                '%d أشهر',
+                '%d شهرا',
+                '%d شهر',
+            ],
+            y: [
+                'أقل من عام',
+                'عام واحد',
+                ['عامان', 'عامين'],
+                '%d أعوام',
+                '%d عامًا',
+                '%d عام',
+            ],
+        },
+        pluralize$1 = function (u) {
+            return function (number, withoutSuffix, string, isFuture) {
+                var f = pluralForm$1(number),
+                    str = plurals$1[u][pluralForm$1(number)];
+                if (f === 2) {
+                    str = str[withoutSuffix ? 0 : 1];
+                }
+                return str.replace(/%d/i, number);
+            };
+        },
+        months$1 = [
+            'يناير',
+            'فبراير',
+            'مارس',
+            'أبريل',
+            'مايو',
+            'يونيو',
+            'يوليو',
+            'أغسطس',
+            'سبتمبر',
+            'أكتوبر',
+            'نوفمبر',
+            'ديسمبر',
+        ];
+
+    moment.defineLocale('ar-ly', {
+        months: months$1,
+        monthsShort: months$1,
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'D/\u200FM/\u200FYYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ص|م/,
+        isPM: function (input) {
+            return 'م' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ص';
+            } else {
+                return 'م';
+            }
+        },
+        calendar: {
+            sameDay: '[اليوم عند الساعة] LT',
+            nextDay: '[غدًا عند الساعة] LT',
+            nextWeek: 'dddd [عند الساعة] LT',
+            lastDay: '[أمس عند الساعة] LT',
+            lastWeek: 'dddd [عند الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'بعد %s',
+            past: 'منذ %s',
+            s: pluralize$1('s'),
+            ss: pluralize$1('s'),
+            m: pluralize$1('m'),
+            mm: pluralize$1('m'),
+            h: pluralize$1('h'),
+            hh: pluralize$1('h'),
+            d: pluralize$1('d'),
+            dd: pluralize$1('d'),
+            M: pluralize$1('M'),
+            MM: pluralize$1('M'),
+            y: pluralize$1('y'),
+            yy: pluralize$1('y'),
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap[match];
+                })
+                .replace(/,/g, '،');
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ar-ma', {
+        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
+            '_'
+        ),
+        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
+            '_'
+        ),
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[اليوم على الساعة] LT',
+            nextDay: '[غدا على الساعة] LT',
+            nextWeek: 'dddd [على الساعة] LT',
+            lastDay: '[أمس على الساعة] LT',
+            lastWeek: 'dddd [على الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'في %s',
+            past: 'منذ %s',
+            s: 'ثوان',
+            ss: '%d ثانية',
+            m: 'دقيقة',
+            mm: '%d دقائق',
+            h: 'ساعة',
+            hh: '%d ساعات',
+            d: 'يوم',
+            dd: '%d أيام',
+            M: 'شهر',
+            MM: '%d أشهر',
+            y: 'سنة',
+            yy: '%d سنوات',
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$1 = {
+            '1': '١',
+            '2': '٢',
+            '3': '٣',
+            '4': '٤',
+            '5': '٥',
+            '6': '٦',
+            '7': '٧',
+            '8': '٨',
+            '9': '٩',
+            '0': '٠',
+        },
+        numberMap = {
+            '١': '1',
+            '٢': '2',
+            '٣': '3',
+            '٤': '4',
+            '٥': '5',
+            '٦': '6',
+            '٧': '7',
+            '٨': '8',
+            '٩': '9',
+            '٠': '0',
+        };
+
+    moment.defineLocale('ar-sa', {
+        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
+            '_'
+        ),
+        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
+            '_'
+        ),
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ص|م/,
+        isPM: function (input) {
+            return 'م' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ص';
+            } else {
+                return 'م';
+            }
+        },
+        calendar: {
+            sameDay: '[اليوم على الساعة] LT',
+            nextDay: '[غدا على الساعة] LT',
+            nextWeek: 'dddd [على الساعة] LT',
+            lastDay: '[أمس على الساعة] LT',
+            lastWeek: 'dddd [على الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'في %s',
+            past: 'منذ %s',
+            s: 'ثوان',
+            ss: '%d ثانية',
+            m: 'دقيقة',
+            mm: '%d دقائق',
+            h: 'ساعة',
+            hh: '%d ساعات',
+            d: 'يوم',
+            dd: '%d أيام',
+            M: 'شهر',
+            MM: '%d أشهر',
+            y: 'سنة',
+            yy: '%d سنوات',
+        },
+        preparse: function (string) {
+            return string
+                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+                    return numberMap[match];
+                })
+                .replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap$1[match];
+                })
+                .replace(/,/g, '،');
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ar-tn', {
+        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
+            '_'
+        ),
+        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
+            '_'
+        ),
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[اليوم على الساعة] LT',
+            nextDay: '[غدا على الساعة] LT',
+            nextWeek: 'dddd [على الساعة] LT',
+            lastDay: '[أمس على الساعة] LT',
+            lastWeek: 'dddd [على الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'في %s',
+            past: 'منذ %s',
+            s: 'ثوان',
+            ss: '%d ثانية',
+            m: 'دقيقة',
+            mm: '%d دقائق',
+            h: 'ساعة',
+            hh: '%d ساعات',
+            d: 'يوم',
+            dd: '%d أيام',
+            M: 'شهر',
+            MM: '%d أشهر',
+            y: 'سنة',
+            yy: '%d سنوات',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$2 = {
+            '1': '١',
+            '2': '٢',
+            '3': '٣',
+            '4': '٤',
+            '5': '٥',
+            '6': '٦',
+            '7': '٧',
+            '8': '٨',
+            '9': '٩',
+            '0': '٠',
+        },
+        numberMap$1 = {
+            '١': '1',
+            '٢': '2',
+            '٣': '3',
+            '٤': '4',
+            '٥': '5',
+            '٦': '6',
+            '٧': '7',
+            '٨': '8',
+            '٩': '9',
+            '٠': '0',
+        },
+        pluralForm$2 = function (n) {
+            return n === 0
+                ? 0
+                : n === 1
+                ? 1
+                : n === 2
+                ? 2
+                : n % 100 >= 3 && n % 100 <= 10
+                ? 3
+                : n % 100 >= 11
+                ? 4
+                : 5;
+        },
+        plurals$2 = {
+            s: [
+                'أقل من ثانية',
+                'ثانية واحدة',
+                ['ثانيتان', 'ثانيتين'],
+                '%d ثوان',
+                '%d ثانية',
+                '%d ثانية',
+            ],
+            m: [
+                'أقل من دقيقة',
+                'دقيقة واحدة',
+                ['دقيقتان', 'دقيقتين'],
+                '%d دقائق',
+                '%d دقيقة',
+                '%d دقيقة',
+            ],
+            h: [
+                'أقل من ساعة',
+                'ساعة واحدة',
+                ['ساعتان', 'ساعتين'],
+                '%d ساعات',
+                '%d ساعة',
+                '%d ساعة',
+            ],
+            d: [
+                'أقل من يوم',
+                'يوم واحد',
+                ['يومان', 'يومين'],
+                '%d أيام',
+                '%d يومًا',
+                '%d يوم',
+            ],
+            M: [
+                'أقل من شهر',
+                'شهر واحد',
+                ['شهران', 'شهرين'],
+                '%d أشهر',
+                '%d شهرا',
+                '%d شهر',
+            ],
+            y: [
+                'أقل من عام',
+                'عام واحد',
+                ['عامان', 'عامين'],
+                '%d أعوام',
+                '%d عامًا',
+                '%d عام',
+            ],
+        },
+        pluralize$2 = function (u) {
+            return function (number, withoutSuffix, string, isFuture) {
+                var f = pluralForm$2(number),
+                    str = plurals$2[u][pluralForm$2(number)];
+                if (f === 2) {
+                    str = str[withoutSuffix ? 0 : 1];
+                }
+                return str.replace(/%d/i, number);
+            };
+        },
+        months$2 = [
+            'يناير',
+            'فبراير',
+            'مارس',
+            'أبريل',
+            'مايو',
+            'يونيو',
+            'يوليو',
+            'أغسطس',
+            'سبتمبر',
+            'أكتوبر',
+            'نوفمبر',
+            'ديسمبر',
+        ];
+
+    moment.defineLocale('ar', {
+        months: months$2,
+        monthsShort: months$2,
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'D/\u200FM/\u200FYYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ص|م/,
+        isPM: function (input) {
+            return 'م' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ص';
+            } else {
+                return 'م';
+            }
+        },
+        calendar: {
+            sameDay: '[اليوم عند الساعة] LT',
+            nextDay: '[غدًا عند الساعة] LT',
+            nextWeek: 'dddd [عند الساعة] LT',
+            lastDay: '[أمس عند الساعة] LT',
+            lastWeek: 'dddd [عند الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'بعد %s',
+            past: 'منذ %s',
+            s: pluralize$2('s'),
+            ss: pluralize$2('s'),
+            m: pluralize$2('m'),
+            mm: pluralize$2('m'),
+            h: pluralize$2('h'),
+            hh: pluralize$2('h'),
+            d: pluralize$2('d'),
+            dd: pluralize$2('d'),
+            M: pluralize$2('M'),
+            MM: pluralize$2('M'),
+            y: pluralize$2('y'),
+            yy: pluralize$2('y'),
+        },
+        preparse: function (string) {
+            return string
+                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+                    return numberMap$1[match];
+                })
+                .replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap$2[match];
+                })
+                .replace(/,/g, '،');
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes = {
+        1: '-inci',
+        5: '-inci',
+        8: '-inci',
+        70: '-inci',
+        80: '-inci',
+        2: '-nci',
+        7: '-nci',
+        20: '-nci',
+        50: '-nci',
+        3: '-üncü',
+        4: '-üncü',
+        100: '-üncü',
+        6: '-ncı',
+        9: '-uncu',
+        10: '-uncu',
+        30: '-uncu',
+        60: '-ıncı',
+        90: '-ıncı',
+    };
+
+    moment.defineLocale('az', {
+        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
+            '_'
+        ),
+        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
+        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
+            '_'
+        ),
+        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
+        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[bugün saat] LT',
+            nextDay: '[sabah saat] LT',
+            nextWeek: '[gələn həftə] dddd [saat] LT',
+            lastDay: '[dünən] LT',
+            lastWeek: '[keçən həftə] dddd [saat] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s sonra',
+            past: '%s əvvəl',
+            s: 'bir neçə saniyə',
+            ss: '%d saniyə',
+            m: 'bir dəqiqə',
+            mm: '%d dəqiqə',
+            h: 'bir saat',
+            hh: '%d saat',
+            d: 'bir gün',
+            dd: '%d gün',
+            M: 'bir ay',
+            MM: '%d ay',
+            y: 'bir il',
+            yy: '%d il',
+        },
+        meridiemParse: /gecə|səhər|gündüz|axşam/,
+        isPM: function (input) {
+            return /^(gündüz|axşam)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'gecə';
+            } else if (hour < 12) {
+                return 'səhər';
+            } else if (hour < 17) {
+                return 'gündüz';
+            } else {
+                return 'axşam';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
+        ordinal: function (number) {
+            if (number === 0) {
+                // special case for zero
+                return number + '-ıncı';
+            }
+            var a = number % 10,
+                b = (number % 100) - a,
+                c = number >= 100 ? 100 : null;
+            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function plural(word, num) {
+        var forms = word.split('_');
+        return num % 10 === 1 && num % 100 !== 11
+            ? forms[0]
+            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
+            ? forms[1]
+            : forms[2];
+    }
+    function relativeTimeWithPlural(number, withoutSuffix, key) {
+        var format = {
+            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
+            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
+            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
+            dd: 'дзень_дні_дзён',
+            MM: 'месяц_месяцы_месяцаў',
+            yy: 'год_гады_гадоў',
+        };
+        if (key === 'm') {
+            return withoutSuffix ? 'хвіліна' : 'хвіліну';
+        } else if (key === 'h') {
+            return withoutSuffix ? 'гадзіна' : 'гадзіну';
+        } else {
+            return number + ' ' + plural(format[key], +number);
+        }
+    }
+
+    moment.defineLocale('be', {
+        months: {
+            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
+                '_'
+            ),
+            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
+                '_'
+            ),
+        },
+        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(
+            '_'
+        ),
+        weekdays: {
+            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
+                '_'
+            ),
+            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
+                '_'
+            ),
+            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
+        },
+        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
+        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY г.',
+            LLL: 'D MMMM YYYY г., HH:mm',
+            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
+        },
+        calendar: {
+            sameDay: '[Сёння ў] LT',
+            nextDay: '[Заўтра ў] LT',
+            lastDay: '[Учора ў] LT',
+            nextWeek: function () {
+                return '[У] dddd [ў] LT';
+            },
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                    case 5:
+                    case 6:
+                        return '[У мінулую] dddd [ў] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                        return '[У мінулы] dddd [ў] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'праз %s',
+            past: '%s таму',
+            s: 'некалькі секунд',
+            m: relativeTimeWithPlural,
+            mm: relativeTimeWithPlural,
+            h: relativeTimeWithPlural,
+            hh: relativeTimeWithPlural,
+            d: 'дзень',
+            dd: relativeTimeWithPlural,
+            M: 'месяц',
+            MM: relativeTimeWithPlural,
+            y: 'год',
+            yy: relativeTimeWithPlural,
+        },
+        meridiemParse: /ночы|раніцы|дня|вечара/,
+        isPM: function (input) {
+            return /^(дня|вечара)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ночы';
+            } else if (hour < 12) {
+                return 'раніцы';
+            } else if (hour < 17) {
+                return 'дня';
+            } else {
+                return 'вечара';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'M':
+                case 'd':
+                case 'DDD':
+                case 'w':
+                case 'W':
+                    return (number % 10 === 2 || number % 10 === 3) &&
+                        number % 100 !== 12 &&
+                        number % 100 !== 13
+                        ? number + '-і'
+                        : number + '-ы';
+                case 'D':
+                    return number + '-га';
+                default:
+                    return number;
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('bg', {
+        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
+            '_'
+        ),
+        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
+        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
+            '_'
+        ),
+        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
+        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'D.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY H:mm',
+            LLLL: 'dddd, D MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[Днес в] LT',
+            nextDay: '[Утре в] LT',
+            nextWeek: 'dddd [в] LT',
+            lastDay: '[Вчера в] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                    case 6:
+                        return '[Миналата] dddd [в] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[Миналия] dddd [в] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'след %s',
+            past: 'преди %s',
+            s: 'няколко секунди',
+            ss: '%d секунди',
+            m: 'минута',
+            mm: '%d минути',
+            h: 'час',
+            hh: '%d часа',
+            d: 'ден',
+            dd: '%d дена',
+            M: 'месец',
+            MM: '%d месеца',
+            y: 'година',
+            yy: '%d години',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
+        ordinal: function (number) {
+            var lastDigit = number % 10,
+                last2Digits = number % 100;
+            if (number === 0) {
+                return number + '-ев';
+            } else if (last2Digits === 0) {
+                return number + '-ен';
+            } else if (last2Digits > 10 && last2Digits < 20) {
+                return number + '-ти';
+            } else if (lastDigit === 1) {
+                return number + '-ви';
+            } else if (lastDigit === 2) {
+                return number + '-ри';
+            } else if (lastDigit === 7 || lastDigit === 8) {
+                return number + '-ми';
+            } else {
+                return number + '-ти';
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('bm', {
+        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
+            '_'
+        ),
+        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
+        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
+        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
+        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'MMMM [tile] D [san] YYYY',
+            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
+            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
+        },
+        calendar: {
+            sameDay: '[Bi lɛrɛ] LT',
+            nextDay: '[Sini lɛrɛ] LT',
+            nextWeek: 'dddd [don lɛrɛ] LT',
+            lastDay: '[Kunu lɛrɛ] LT',
+            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s kɔnɔ',
+            past: 'a bɛ %s bɔ',
+            s: 'sanga dama dama',
+            ss: 'sekondi %d',
+            m: 'miniti kelen',
+            mm: 'miniti %d',
+            h: 'lɛrɛ kelen',
+            hh: 'lɛrɛ %d',
+            d: 'tile kelen',
+            dd: 'tile %d',
+            M: 'kalo kelen',
+            MM: 'kalo %d',
+            y: 'san kelen',
+            yy: 'san %d',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$3 = {
+            '1': '১',
+            '2': '২',
+            '3': '৩',
+            '4': '৪',
+            '5': '৫',
+            '6': '৬',
+            '7': '৭',
+            '8': '৮',
+            '9': '৯',
+            '0': '০',
+        },
+        numberMap$2 = {
+            '১': '1',
+            '২': '2',
+            '৩': '3',
+            '৪': '4',
+            '৫': '5',
+            '৬': '6',
+            '৭': '7',
+            '৮': '8',
+            '৯': '9',
+            '০': '0',
+        };
+
+    moment.defineLocale('bn', {
+        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
+            '_'
+        ),
+        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
+            '_'
+        ),
+        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
+            '_'
+        ),
+        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
+        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm সময়',
+            LTS: 'A h:mm:ss সময়',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm সময়',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
+        },
+        calendar: {
+            sameDay: '[আজ] LT',
+            nextDay: '[আগামীকাল] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[গতকাল] LT',
+            lastWeek: '[গত] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s পরে',
+            past: '%s আগে',
+            s: 'কয়েক সেকেন্ড',
+            ss: '%d সেকেন্ড',
+            m: 'এক মিনিট',
+            mm: '%d মিনিট',
+            h: 'এক ঘন্টা',
+            hh: '%d ঘন্টা',
+            d: 'এক দিন',
+            dd: '%d দিন',
+            M: 'এক মাস',
+            MM: '%d মাস',
+            y: 'এক বছর',
+            yy: '%d বছর',
+        },
+        preparse: function (string) {
+            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
+                return numberMap$2[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$3[match];
+            });
+        },
+        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (
+                (meridiem === 'রাত' && hour >= 4) ||
+                (meridiem === 'দুপুর' && hour < 5) ||
+                meridiem === 'বিকাল'
+            ) {
+                return hour + 12;
+            } else {
+                return hour;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'রাত';
+            } else if (hour < 10) {
+                return 'সকাল';
+            } else if (hour < 17) {
+                return 'দুপুর';
+            } else if (hour < 20) {
+                return 'বিকাল';
+            } else {
+                return 'রাত';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$4 = {
+            '1': '༡',
+            '2': '༢',
+            '3': '༣',
+            '4': '༤',
+            '5': '༥',
+            '6': '༦',
+            '7': '༧',
+            '8': '༨',
+            '9': '༩',
+            '0': '༠',
+        },
+        numberMap$3 = {
+            '༡': '1',
+            '༢': '2',
+            '༣': '3',
+            '༤': '4',
+            '༥': '5',
+            '༦': '6',
+            '༧': '7',
+            '༨': '8',
+            '༩': '9',
+            '༠': '0',
+        };
+
+    moment.defineLocale('bo', {
+        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
+            '_'
+        ),
+        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
+            '_'
+        ),
+        monthsShortRegex: /^(ཟླ་\d{1,2})/,
+        monthsParseExact: true,
+        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
+            '_'
+        ),
+        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
+            '_'
+        ),
+        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm',
+            LTS: 'A h:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm',
+        },
+        calendar: {
+            sameDay: '[དི་རིང] LT',
+            nextDay: '[སང་ཉིན] LT',
+            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
+            lastDay: '[ཁ་སང] LT',
+            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ལ་',
+            past: '%s སྔན་ལ',
+            s: 'ལམ་སང',
+            ss: '%d སྐར་ཆ།',
+            m: 'སྐར་མ་གཅིག',
+            mm: '%d སྐར་མ',
+            h: 'ཆུ་ཚོད་གཅིག',
+            hh: '%d ཆུ་ཚོད',
+            d: 'ཉིན་གཅིག',
+            dd: '%d ཉིན་',
+            M: 'ཟླ་བ་གཅིག',
+            MM: '%d ཟླ་བ',
+            y: 'ལོ་གཅིག',
+            yy: '%d ལོ',
+        },
+        preparse: function (string) {
+            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
+                return numberMap$3[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$4[match];
+            });
+        },
+        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (
+                (meridiem === 'མཚན་མོ' && hour >= 4) ||
+                (meridiem === 'ཉིན་གུང' && hour < 5) ||
+                meridiem === 'དགོང་དག'
+            ) {
+                return hour + 12;
+            } else {
+                return hour;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'མཚན་མོ';
+            } else if (hour < 10) {
+                return 'ཞོགས་ཀས';
+            } else if (hour < 17) {
+                return 'ཉིན་གུང';
+            } else if (hour < 20) {
+                return 'དགོང་དག';
+            } else {
+                return 'མཚན་མོ';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function relativeTimeWithMutation(number, withoutSuffix, key) {
+        var format = {
+            mm: 'munutenn',
+            MM: 'miz',
+            dd: 'devezh',
+        };
+        return number + ' ' + mutation(format[key], number);
+    }
+    function specialMutationForYears(number) {
+        switch (lastNumber(number)) {
+            case 1:
+            case 3:
+            case 4:
+            case 5:
+            case 9:
+                return number + ' bloaz';
+            default:
+                return number + ' vloaz';
+        }
+    }
+    function lastNumber(number) {
+        if (number > 9) {
+            return lastNumber(number % 10);
+        }
+        return number;
+    }
+    function mutation(text, number) {
+        if (number === 2) {
+            return softMutation(text);
+        }
+        return text;
+    }
+    function softMutation(text) {
+        var mutationTable = {
+            m: 'v',
+            b: 'v',
+            d: 'z',
+        };
+        if (mutationTable[text.charAt(0)] === undefined) {
+            return text;
+        }
+        return mutationTable[text.charAt(0)] + text.substring(1);
+    }
+
+    var monthsParse = [
+            /^gen/i,
+            /^c[ʼ\']hwe/i,
+            /^meu/i,
+            /^ebr/i,
+            /^mae/i,
+            /^(mez|eve)/i,
+            /^gou/i,
+            /^eos/i,
+            /^gwe/i,
+            /^her/i,
+            /^du/i,
+            /^ker/i,
+        ],
+        monthsRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
+        monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
+        monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
+        fullWeekdaysParse = [
+            /^sul/i,
+            /^lun/i,
+            /^meurzh/i,
+            /^merc[ʼ\']her/i,
+            /^yaou/i,
+            /^gwener/i,
+            /^sadorn/i,
+        ],
+        shortWeekdaysParse = [
+            /^Sul/i,
+            /^Lun/i,
+            /^Meu/i,
+            /^Mer/i,
+            /^Yao/i,
+            /^Gwe/i,
+            /^Sad/i,
+        ],
+        minWeekdaysParse = [
+            /^Su/i,
+            /^Lu/i,
+            /^Me([^r]|$)/i,
+            /^Mer/i,
+            /^Ya/i,
+            /^Gw/i,
+            /^Sa/i,
+        ];
+
+    moment.defineLocale('br', {
+        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
+            '_'
+        ),
+        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
+        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
+        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
+        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
+        weekdaysParse: minWeekdaysParse,
+        fullWeekdaysParse: fullWeekdaysParse,
+        shortWeekdaysParse: shortWeekdaysParse,
+        minWeekdaysParse: minWeekdaysParse,
+
+        monthsRegex: monthsRegex,
+        monthsShortRegex: monthsRegex,
+        monthsStrictRegex: monthsStrictRegex,
+        monthsShortStrictRegex: monthsShortStrictRegex,
+        monthsParse: monthsParse,
+        longMonthsParse: monthsParse,
+        shortMonthsParse: monthsParse,
+
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [a viz] MMMM YYYY',
+            LLL: 'D [a viz] MMMM YYYY HH:mm',
+            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Hiziv da] LT',
+            nextDay: '[Warcʼhoazh da] LT',
+            nextWeek: 'dddd [da] LT',
+            lastDay: '[Decʼh da] LT',
+            lastWeek: 'dddd [paset da] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'a-benn %s',
+            past: '%s ʼzo',
+            s: 'un nebeud segondennoù',
+            ss: '%d eilenn',
+            m: 'ur vunutenn',
+            mm: relativeTimeWithMutation,
+            h: 'un eur',
+            hh: '%d eur',
+            d: 'un devezh',
+            dd: relativeTimeWithMutation,
+            M: 'ur miz',
+            MM: relativeTimeWithMutation,
+            y: 'ur bloaz',
+            yy: specialMutationForYears,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
+        ordinal: function (number) {
+            var output = number === 1 ? 'añ' : 'vet';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
+        isPM: function (token) {
+            return token === 'g.m.';
+        },
+        meridiem: function (hour, minute, isLower) {
+            return hour < 12 ? 'a.m.' : 'g.m.';
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function translate(number, withoutSuffix, key) {
+        var result = number + ' ';
+        switch (key) {
+            case 'ss':
+                if (number === 1) {
+                    result += 'sekunda';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'sekunde';
+                } else {
+                    result += 'sekundi';
+                }
+                return result;
+            case 'm':
+                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
+            case 'mm':
+                if (number === 1) {
+                    result += 'minuta';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'minute';
+                } else {
+                    result += 'minuta';
+                }
+                return result;
+            case 'h':
+                return withoutSuffix ? 'jedan sat' : 'jednog sata';
+            case 'hh':
+                if (number === 1) {
+                    result += 'sat';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'sata';
+                } else {
+                    result += 'sati';
+                }
+                return result;
+            case 'dd':
+                if (number === 1) {
+                    result += 'dan';
+                } else {
+                    result += 'dana';
+                }
+                return result;
+            case 'MM':
+                if (number === 1) {
+                    result += 'mjesec';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'mjeseca';
+                } else {
+                    result += 'mjeseci';
+                }
+                return result;
+            case 'yy':
+                if (number === 1) {
+                    result += 'godina';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'godine';
+                } else {
+                    result += 'godina';
+                }
+                return result;
+        }
+    }
+
+    moment.defineLocale('bs', {
+        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danas u] LT',
+            nextDay: '[sutra u] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[u] [nedjelju] [u] LT';
+                    case 3:
+                        return '[u] [srijedu] [u] LT';
+                    case 6:
+                        return '[u] [subotu] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[u] dddd [u] LT';
+                }
+            },
+            lastDay: '[jučer u] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                        return '[prošlu] dddd [u] LT';
+                    case 6:
+                        return '[prošle] [subote] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[prošli] dddd [u] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'prije %s',
+            s: 'par sekundi',
+            ss: translate,
+            m: translate,
+            mm: translate,
+            h: translate,
+            hh: translate,
+            d: 'dan',
+            dd: translate,
+            M: 'mjesec',
+            MM: translate,
+            y: 'godinu',
+            yy: translate,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ca', {
+        months: {
+            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
+                '_'
+            ),
+            format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
+                '_'
+            ),
+            isFormat: /D[oD]?(\s)+MMMM/,
+        },
+        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
+            '_'
+        ),
+        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
+        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM [de] YYYY',
+            ll: 'D MMM YYYY',
+            LLL: 'D MMMM [de] YYYY [a les] H:mm',
+            lll: 'D MMM YYYY, H:mm',
+            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
+            llll: 'ddd D MMM YYYY, H:mm',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
+            },
+            nextDay: function () {
+                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
+            },
+            lastDay: function () {
+                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[el] dddd [passat a ' +
+                    (this.hours() !== 1 ? 'les' : 'la') +
+                    '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: "d'aquí %s",
+            past: 'fa %s',
+            s: 'uns segons',
+            ss: '%d segons',
+            m: 'un minut',
+            mm: '%d minuts',
+            h: 'una hora',
+            hh: '%d hores',
+            d: 'un dia',
+            dd: '%d dies',
+            M: 'un mes',
+            MM: '%d mesos',
+            y: 'un any',
+            yy: '%d anys',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
+        ordinal: function (number, period) {
+            var output =
+                number === 1
+                    ? 'r'
+                    : number === 2
+                    ? 'n'
+                    : number === 3
+                    ? 'r'
+                    : number === 4
+                    ? 't'
+                    : 'è';
+            if (period === 'w' || period === 'W') {
+                output = 'a';
+            }
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
+            '_'
+        ),
+        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
+        monthsParse$1 = [
+            /^led/i,
+            /^úno/i,
+            /^bře/i,
+            /^dub/i,
+            /^kvě/i,
+            /^(čvn|červen$|června)/i,
+            /^(čvc|červenec|července)/i,
+            /^srp/i,
+            /^zář/i,
+            /^říj/i,
+            /^lis/i,
+            /^pro/i,
+        ],
+        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
+        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
+        monthsRegex$1 = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
+
+    function plural$1(n) {
+        return n > 1 && n < 5 && ~~(n / 10) !== 1;
+    }
+    function translate$1(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        switch (key) {
+            case 's': // a few seconds / in a few seconds / a few seconds ago
+                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
+            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'sekundy' : 'sekund');
+                } else {
+                    return result + 'sekundami';
+                }
+            case 'm': // a minute / in a minute / a minute ago
+                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
+            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'minuty' : 'minut');
+                } else {
+                    return result + 'minutami';
+                }
+            case 'h': // an hour / in an hour / an hour ago
+                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
+            case 'hh': // 9 hours / in 9 hours / 9 hours ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
+                } else {
+                    return result + 'hodinami';
+                }
+            case 'd': // a day / in a day / a day ago
+                return withoutSuffix || isFuture ? 'den' : 'dnem';
+            case 'dd': // 9 days / in 9 days / 9 days ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'dny' : 'dní');
+                } else {
+                    return result + 'dny';
+                }
+            case 'M': // a month / in a month / a month ago
+                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
+            case 'MM': // 9 months / in 9 months / 9 months ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
+                } else {
+                    return result + 'měsíci';
+                }
+            case 'y': // a year / in a year / a year ago
+                return withoutSuffix || isFuture ? 'rok' : 'rokem';
+            case 'yy': // 9 years / in 9 years / 9 years ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'roky' : 'let');
+                } else {
+                    return result + 'lety';
+                }
+        }
+    }
+
+    moment.defineLocale('cs', {
+        months: months$3,
+        monthsShort: monthsShort,
+        monthsRegex: monthsRegex$1,
+        monthsShortRegex: monthsRegex$1,
+        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
+        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
+        monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
+        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
+        monthsParse: monthsParse$1,
+        longMonthsParse: monthsParse$1,
+        shortMonthsParse: monthsParse$1,
+        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
+        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
+        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd D. MMMM YYYY H:mm',
+            l: 'D. M. YYYY',
+        },
+        calendar: {
+            sameDay: '[dnes v] LT',
+            nextDay: '[zítra v] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[v neděli v] LT';
+                    case 1:
+                    case 2:
+                        return '[v] dddd [v] LT';
+                    case 3:
+                        return '[ve středu v] LT';
+                    case 4:
+                        return '[ve čtvrtek v] LT';
+                    case 5:
+                        return '[v pátek v] LT';
+                    case 6:
+                        return '[v sobotu v] LT';
+                }
+            },
+            lastDay: '[včera v] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[minulou neděli v] LT';
+                    case 1:
+                    case 2:
+                        return '[minulé] dddd [v] LT';
+                    case 3:
+                        return '[minulou středu v] LT';
+                    case 4:
+                    case 5:
+                        return '[minulý] dddd [v] LT';
+                    case 6:
+                        return '[minulou sobotu v] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'před %s',
+            s: translate$1,
+            ss: translate$1,
+            m: translate$1,
+            mm: translate$1,
+            h: translate$1,
+            hh: translate$1,
+            d: translate$1,
+            dd: translate$1,
+            M: translate$1,
+            MM: translate$1,
+            y: translate$1,
+            yy: translate$1,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('cv', {
+        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
+            '_'
+        ),
+        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
+        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
+            '_'
+        ),
+        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
+        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD-MM-YYYY',
+            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
+            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
+            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
+        },
+        calendar: {
+            sameDay: '[Паян] LT [сехетре]',
+            nextDay: '[Ыран] LT [сехетре]',
+            lastDay: '[Ӗнер] LT [сехетре]',
+            nextWeek: '[Ҫитес] dddd LT [сехетре]',
+            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: function (output) {
+                var affix = /сехет$/i.exec(output)
+                    ? 'рен'
+                    : /ҫул$/i.exec(output)
+                    ? 'тан'
+                    : 'ран';
+                return output + affix;
+            },
+            past: '%s каялла',
+            s: 'пӗр-ик ҫеккунт',
+            ss: '%d ҫеккунт',
+            m: 'пӗр минут',
+            mm: '%d минут',
+            h: 'пӗр сехет',
+            hh: '%d сехет',
+            d: 'пӗр кун',
+            dd: '%d кун',
+            M: 'пӗр уйӑх',
+            MM: '%d уйӑх',
+            y: 'пӗр ҫул',
+            yy: '%d ҫул',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
+        ordinal: '%d-мӗш',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('cy', {
+        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
+            '_'
+        ),
+        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
+            '_'
+        ),
+        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
+        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
+        weekdaysParseExact: true,
+        // time formats are the same as en-gb
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Heddiw am] LT',
+            nextDay: '[Yfory am] LT',
+            nextWeek: 'dddd [am] LT',
+            lastDay: '[Ddoe am] LT',
+            lastWeek: 'dddd [diwethaf am] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'mewn %s',
+            past: '%s yn ôl',
+            s: 'ychydig eiliadau',
+            ss: '%d eiliad',
+            m: 'munud',
+            mm: '%d munud',
+            h: 'awr',
+            hh: '%d awr',
+            d: 'diwrnod',
+            dd: '%d diwrnod',
+            M: 'mis',
+            MM: '%d mis',
+            y: 'blwyddyn',
+            yy: '%d flynedd',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
+        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
+        ordinal: function (number) {
+            var b = number,
+                output = '',
+                lookup = [
+                    '',
+                    'af',
+                    'il',
+                    'ydd',
+                    'ydd',
+                    'ed',
+                    'ed',
+                    'ed',
+                    'fed',
+                    'fed',
+                    'fed', // 1af to 10fed
+                    'eg',
+                    'fed',
+                    'eg',
+                    'eg',
+                    'fed',
+                    'eg',
+                    'eg',
+                    'fed',
+                    'eg',
+                    'fed', // 11eg to 20fed
+                ];
+            if (b > 20) {
+                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
+                    output = 'fed'; // not 30ain, 70ain or 90ain
+                } else {
+                    output = 'ain';
+                }
+            } else if (b > 0) {
+                output = lookup[b];
+            }
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('da', {
+        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
+        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
+        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY HH:mm',
+            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
+        },
+        calendar: {
+            sameDay: '[i dag kl.] LT',
+            nextDay: '[i morgen kl.] LT',
+            nextWeek: 'på dddd [kl.] LT',
+            lastDay: '[i går kl.] LT',
+            lastWeek: '[i] dddd[s kl.] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'om %s',
+            past: '%s siden',
+            s: 'få sekunder',
+            ss: '%d sekunder',
+            m: 'et minut',
+            mm: '%d minutter',
+            h: 'en time',
+            hh: '%d timer',
+            d: 'en dag',
+            dd: '%d dage',
+            M: 'en måned',
+            MM: '%d måneder',
+            y: 'et år',
+            yy: '%d år',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime(number, withoutSuffix, key, isFuture) {
+        var format = {
+            m: ['eine Minute', 'einer Minute'],
+            h: ['eine Stunde', 'einer Stunde'],
+            d: ['ein Tag', 'einem Tag'],
+            dd: [number + ' Tage', number + ' Tagen'],
+            w: ['eine Woche', 'einer Woche'],
+            M: ['ein Monat', 'einem Monat'],
+            MM: [number + ' Monate', number + ' Monaten'],
+            y: ['ein Jahr', 'einem Jahr'],
+            yy: [number + ' Jahre', number + ' Jahren'],
+        };
+        return withoutSuffix ? format[key][0] : format[key][1];
+    }
+
+    moment.defineLocale('de-at', {
+        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
+            '_'
+        ),
+        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
+            '_'
+        ),
+        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
+        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY HH:mm',
+            LLLL: 'dddd, D. MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[heute um] LT [Uhr]',
+            sameElse: 'L',
+            nextDay: '[morgen um] LT [Uhr]',
+            nextWeek: 'dddd [um] LT [Uhr]',
+            lastDay: '[gestern um] LT [Uhr]',
+            lastWeek: '[letzten] dddd [um] LT [Uhr]',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: 'vor %s',
+            s: 'ein paar Sekunden',
+            ss: '%d Sekunden',
+            m: processRelativeTime,
+            mm: '%d Minuten',
+            h: processRelativeTime,
+            hh: '%d Stunden',
+            d: processRelativeTime,
+            dd: processRelativeTime,
+            w: processRelativeTime,
+            ww: '%d Wochen',
+            M: processRelativeTime,
+            MM: processRelativeTime,
+            y: processRelativeTime,
+            yy: processRelativeTime,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
+        var format = {
+            m: ['eine Minute', 'einer Minute'],
+            h: ['eine Stunde', 'einer Stunde'],
+            d: ['ein Tag', 'einem Tag'],
+            dd: [number + ' Tage', number + ' Tagen'],
+            w: ['eine Woche', 'einer Woche'],
+            M: ['ein Monat', 'einem Monat'],
+            MM: [number + ' Monate', number + ' Monaten'],
+            y: ['ein Jahr', 'einem Jahr'],
+            yy: [number + ' Jahre', number + ' Jahren'],
+        };
+        return withoutSuffix ? format[key][0] : format[key][1];
+    }
+
+    moment.defineLocale('de-ch', {
+        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
+            '_'
+        ),
+        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY HH:mm',
+            LLLL: 'dddd, D. MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[heute um] LT [Uhr]',
+            sameElse: 'L',
+            nextDay: '[morgen um] LT [Uhr]',
+            nextWeek: 'dddd [um] LT [Uhr]',
+            lastDay: '[gestern um] LT [Uhr]',
+            lastWeek: '[letzten] dddd [um] LT [Uhr]',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: 'vor %s',
+            s: 'ein paar Sekunden',
+            ss: '%d Sekunden',
+            m: processRelativeTime$1,
+            mm: '%d Minuten',
+            h: processRelativeTime$1,
+            hh: '%d Stunden',
+            d: processRelativeTime$1,
+            dd: processRelativeTime$1,
+            w: processRelativeTime$1,
+            ww: '%d Wochen',
+            M: processRelativeTime$1,
+            MM: processRelativeTime$1,
+            y: processRelativeTime$1,
+            yy: processRelativeTime$1,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
+        var format = {
+            m: ['eine Minute', 'einer Minute'],
+            h: ['eine Stunde', 'einer Stunde'],
+            d: ['ein Tag', 'einem Tag'],
+            dd: [number + ' Tage', number + ' Tagen'],
+            w: ['eine Woche', 'einer Woche'],
+            M: ['ein Monat', 'einem Monat'],
+            MM: [number + ' Monate', number + ' Monaten'],
+            y: ['ein Jahr', 'einem Jahr'],
+            yy: [number + ' Jahre', number + ' Jahren'],
+        };
+        return withoutSuffix ? format[key][0] : format[key][1];
+    }
+
+    moment.defineLocale('de', {
+        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
+            '_'
+        ),
+        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
+        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY HH:mm',
+            LLLL: 'dddd, D. MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[heute um] LT [Uhr]',
+            sameElse: 'L',
+            nextDay: '[morgen um] LT [Uhr]',
+            nextWeek: 'dddd [um] LT [Uhr]',
+            lastDay: '[gestern um] LT [Uhr]',
+            lastWeek: '[letzten] dddd [um] LT [Uhr]',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: 'vor %s',
+            s: 'ein paar Sekunden',
+            ss: '%d Sekunden',
+            m: processRelativeTime$2,
+            mm: '%d Minuten',
+            h: processRelativeTime$2,
+            hh: '%d Stunden',
+            d: processRelativeTime$2,
+            dd: processRelativeTime$2,
+            w: processRelativeTime$2,
+            ww: '%d Wochen',
+            M: processRelativeTime$2,
+            MM: processRelativeTime$2,
+            y: processRelativeTime$2,
+            yy: processRelativeTime$2,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$4 = [
+            'ޖެނުއަރީ',
+            'ފެބްރުއަރީ',
+            'މާރިޗު',
+            'އޭޕްރީލު',
+            'މޭ',
+            'ޖޫން',
+            'ޖުލައި',
+            'އޯގަސްޓު',
+            'ސެޕްޓެމްބަރު',
+            'އޮކްޓޯބަރު',
+            'ނޮވެމްބަރު',
+            'ޑިސެމްބަރު',
+        ],
+        weekdays = [
+            'އާދިއްތަ',
+            'ހޯމަ',
+            'އަންގާރަ',
+            'ބުދަ',
+            'ބުރާސްފަތި',
+            'ހުކުރު',
+            'ހޮނިހިރު',
+        ];
+
+    moment.defineLocale('dv', {
+        months: months$4,
+        monthsShort: months$4,
+        weekdays: weekdays,
+        weekdaysShort: weekdays,
+        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'D/M/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /މކ|މފ/,
+        isPM: function (input) {
+            return 'މފ' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'މކ';
+            } else {
+                return 'މފ';
+            }
+        },
+        calendar: {
+            sameDay: '[މިއަދު] LT',
+            nextDay: '[މާދަމާ] LT',
+            nextWeek: 'dddd LT',
+            lastDay: '[އިއްޔެ] LT',
+            lastWeek: '[ފާއިތުވި] dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ތެރޭގައި %s',
+            past: 'ކުރިން %s',
+            s: 'ސިކުންތުކޮޅެއް',
+            ss: 'd% ސިކުންތު',
+            m: 'މިނިޓެއް',
+            mm: 'މިނިޓު %d',
+            h: 'ގަޑިއިރެއް',
+            hh: 'ގަޑިއިރު %d',
+            d: 'ދުވަހެއް',
+            dd: 'ދުވަސް %d',
+            M: 'މަހެއް',
+            MM: 'މަސް %d',
+            y: 'އަހަރެއް',
+            yy: 'އަހަރު %d',
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            dow: 7, // Sunday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function isFunction(input) {
+        return (
+            (typeof Function !== 'undefined' && input instanceof Function) ||
+            Object.prototype.toString.call(input) === '[object Function]'
+        );
+    }
+
+    moment.defineLocale('el', {
+        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
+            '_'
+        ),
+        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
+            '_'
+        ),
+        months: function (momentToFormat, format) {
+            if (!momentToFormat) {
+                return this._monthsNominativeEl;
+            } else if (
+                typeof format === 'string' &&
+                /D/.test(format.substring(0, format.indexOf('MMMM')))
+            ) {
+                // if there is a day number before 'MMMM'
+                return this._monthsGenitiveEl[momentToFormat.month()];
+            } else {
+                return this._monthsNominativeEl[momentToFormat.month()];
+            }
+        },
+        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
+        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
+            '_'
+        ),
+        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
+        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
+        meridiem: function (hours, minutes, isLower) {
+            if (hours > 11) {
+                return isLower ? 'μμ' : 'ΜΜ';
+            } else {
+                return isLower ? 'πμ' : 'ΠΜ';
+            }
+        },
+        isPM: function (input) {
+            return (input + '').toLowerCase()[0] === 'μ';
+        },
+        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendarEl: {
+            sameDay: '[Σήμερα {}] LT',
+            nextDay: '[Αύριο {}] LT',
+            nextWeek: 'dddd [{}] LT',
+            lastDay: '[Χθες {}] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 6:
+                        return '[το προηγούμενο] dddd [{}] LT';
+                    default:
+                        return '[την προηγούμενη] dddd [{}] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        calendar: function (key, mom) {
+            var output = this._calendarEl[key],
+                hours = mom && mom.hours();
+            if (isFunction(output)) {
+                output = output.apply(mom);
+            }
+            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
+        },
+        relativeTime: {
+            future: 'σε %s',
+            past: '%s πριν',
+            s: 'λίγα δευτερόλεπτα',
+            ss: '%d δευτερόλεπτα',
+            m: 'ένα λεπτό',
+            mm: '%d λεπτά',
+            h: 'μία ώρα',
+            hh: '%d ώρες',
+            d: 'μία μέρα',
+            dd: '%d μέρες',
+            M: 'ένας μήνας',
+            MM: '%d μήνες',
+            y: 'ένας χρόνος',
+            yy: '%d χρόνια',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}η/,
+        ordinal: '%dη',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4st is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('en-au', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('en-ca', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'YYYY-MM-DD',
+            LL: 'MMMM D, YYYY',
+            LLL: 'MMMM D, YYYY h:mm A',
+            LLLL: 'dddd, MMMM D, YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('en-gb', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('en-ie', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('en-il', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('en-in', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 1st is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('en-nz', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('en-sg', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('eo', {
+        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
+        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
+        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
+        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: '[la] D[-an de] MMMM, YYYY',
+            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
+            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
+            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
+        },
+        meridiemParse: /[ap]\.t\.m/i,
+        isPM: function (input) {
+            return input.charAt(0).toLowerCase() === 'p';
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours > 11) {
+                return isLower ? 'p.t.m.' : 'P.T.M.';
+            } else {
+                return isLower ? 'a.t.m.' : 'A.T.M.';
+            }
+        },
+        calendar: {
+            sameDay: '[Hodiaŭ je] LT',
+            nextDay: '[Morgaŭ je] LT',
+            nextWeek: 'dddd[n je] LT',
+            lastDay: '[Hieraŭ je] LT',
+            lastWeek: '[pasintan] dddd[n je] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'post %s',
+            past: 'antaŭ %s',
+            s: 'kelkaj sekundoj',
+            ss: '%d sekundoj',
+            m: 'unu minuto',
+            mm: '%d minutoj',
+            h: 'unu horo',
+            hh: '%d horoj',
+            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
+            dd: '%d tagoj',
+            M: 'unu monato',
+            MM: '%d monatoj',
+            y: 'unu jaro',
+            yy: '%d jaroj',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}a/,
+        ordinal: '%da',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
+            '_'
+        ),
+        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+        monthsParse$2 = [
+            /^ene/i,
+            /^feb/i,
+            /^mar/i,
+            /^abr/i,
+            /^may/i,
+            /^jun/i,
+            /^jul/i,
+            /^ago/i,
+            /^sep/i,
+            /^oct/i,
+            /^nov/i,
+            /^dic/i,
+        ],
+        monthsRegex$2 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
+
+    moment.defineLocale('es-do', {
+        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortDot;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShort$1[m.month()];
+            } else {
+                return monthsShortDot[m.month()];
+            }
+        },
+        monthsRegex: monthsRegex$2,
+        monthsShortRegex: monthsRegex$2,
+        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
+        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
+        monthsParse: monthsParse$2,
+        longMonthsParse: monthsParse$2,
+        shortMonthsParse: monthsParse$2,
+        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY h:mm A',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextDay: function () {
+                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastDay: function () {
+                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[el] dddd [pasado a la' +
+                    (this.hours() !== 1 ? 's' : '') +
+                    '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'en %s',
+            past: 'hace %s',
+            s: 'unos segundos',
+            ss: '%d segundos',
+            m: 'un minuto',
+            mm: '%d minutos',
+            h: 'una hora',
+            hh: '%d horas',
+            d: 'un día',
+            dd: '%d días',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un año',
+            yy: '%d años',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
+            '_'
+        ),
+        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+        monthsParse$3 = [
+            /^ene/i,
+            /^feb/i,
+            /^mar/i,
+            /^abr/i,
+            /^may/i,
+            /^jun/i,
+            /^jul/i,
+            /^ago/i,
+            /^sep/i,
+            /^oct/i,
+            /^nov/i,
+            /^dic/i,
+        ],
+        monthsRegex$3 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
+
+    moment.defineLocale('es-us', {
+        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortDot$1;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShort$2[m.month()];
+            } else {
+                return monthsShortDot$1[m.month()];
+            }
+        },
+        monthsRegex: monthsRegex$3,
+        monthsShortRegex: monthsRegex$3,
+        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
+        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
+        monthsParse: monthsParse$3,
+        longMonthsParse: monthsParse$3,
+        shortMonthsParse: monthsParse$3,
+        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'MM/DD/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY h:mm A',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextDay: function () {
+                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastDay: function () {
+                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[el] dddd [pasado a la' +
+                    (this.hours() !== 1 ? 's' : '') +
+                    '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'en %s',
+            past: 'hace %s',
+            s: 'unos segundos',
+            ss: '%d segundos',
+            m: 'un minuto',
+            mm: '%d minutos',
+            h: 'una hora',
+            hh: '%d horas',
+            d: 'un día',
+            dd: '%d días',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un año',
+            yy: '%d años',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
+            '_'
+        ),
+        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+        monthsParse$4 = [
+            /^ene/i,
+            /^feb/i,
+            /^mar/i,
+            /^abr/i,
+            /^may/i,
+            /^jun/i,
+            /^jul/i,
+            /^ago/i,
+            /^sep/i,
+            /^oct/i,
+            /^nov/i,
+            /^dic/i,
+        ],
+        monthsRegex$4 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
+
+    moment.defineLocale('es', {
+        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortDot$2;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShort$3[m.month()];
+            } else {
+                return monthsShortDot$2[m.month()];
+            }
+        },
+        monthsRegex: monthsRegex$4,
+        monthsShortRegex: monthsRegex$4,
+        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
+        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
+        monthsParse: monthsParse$4,
+        longMonthsParse: monthsParse$4,
+        shortMonthsParse: monthsParse$4,
+        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY H:mm',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextDay: function () {
+                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastDay: function () {
+                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[el] dddd [pasado a la' +
+                    (this.hours() !== 1 ? 's' : '') +
+                    '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'en %s',
+            past: 'hace %s',
+            s: 'unos segundos',
+            ss: '%d segundos',
+            m: 'un minuto',
+            mm: '%d minutos',
+            h: 'una hora',
+            hh: '%d horas',
+            d: 'un día',
+            dd: '%d días',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un año',
+            yy: '%d años',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+        invalidDate: 'Fecha inválida',
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
+        var format = {
+            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
+            ss: [number + 'sekundi', number + 'sekundit'],
+            m: ['ühe minuti', 'üks minut'],
+            mm: [number + ' minuti', number + ' minutit'],
+            h: ['ühe tunni', 'tund aega', 'üks tund'],
+            hh: [number + ' tunni', number + ' tundi'],
+            d: ['ühe päeva', 'üks päev'],
+            M: ['kuu aja', 'kuu aega', 'üks kuu'],
+            MM: [number + ' kuu', number + ' kuud'],
+            y: ['ühe aasta', 'aasta', 'üks aasta'],
+            yy: [number + ' aasta', number + ' aastat'],
+        };
+        if (withoutSuffix) {
+            return format[key][2] ? format[key][2] : format[key][1];
+        }
+        return isFuture ? format[key][0] : format[key][1];
+    }
+
+    moment.defineLocale('et', {
+        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
+            '_'
+        ),
+        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(
+            '_'
+        ),
+        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
+            '_'
+        ),
+        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
+        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[Täna,] LT',
+            nextDay: '[Homme,] LT',
+            nextWeek: '[Järgmine] dddd LT',
+            lastDay: '[Eile,] LT',
+            lastWeek: '[Eelmine] dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s pärast',
+            past: '%s tagasi',
+            s: processRelativeTime$3,
+            ss: processRelativeTime$3,
+            m: processRelativeTime$3,
+            mm: processRelativeTime$3,
+            h: processRelativeTime$3,
+            hh: processRelativeTime$3,
+            d: processRelativeTime$3,
+            dd: '%d päeva',
+            M: processRelativeTime$3,
+            MM: processRelativeTime$3,
+            y: processRelativeTime$3,
+            yy: processRelativeTime$3,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('eu', {
+        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
+            '_'
+        ),
+        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
+            '_'
+        ),
+        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
+        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'YYYY[ko] MMMM[ren] D[a]',
+            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
+            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
+            l: 'YYYY-M-D',
+            ll: 'YYYY[ko] MMM D[a]',
+            lll: 'YYYY[ko] MMM D[a] HH:mm',
+            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
+        },
+        calendar: {
+            sameDay: '[gaur] LT[etan]',
+            nextDay: '[bihar] LT[etan]',
+            nextWeek: 'dddd LT[etan]',
+            lastDay: '[atzo] LT[etan]',
+            lastWeek: '[aurreko] dddd LT[etan]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s barru',
+            past: 'duela %s',
+            s: 'segundo batzuk',
+            ss: '%d segundo',
+            m: 'minutu bat',
+            mm: '%d minutu',
+            h: 'ordu bat',
+            hh: '%d ordu',
+            d: 'egun bat',
+            dd: '%d egun',
+            M: 'hilabete bat',
+            MM: '%d hilabete',
+            y: 'urte bat',
+            yy: '%d urte',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$5 = {
+            '1': '۱',
+            '2': '۲',
+            '3': '۳',
+            '4': '۴',
+            '5': '۵',
+            '6': '۶',
+            '7': '۷',
+            '8': '۸',
+            '9': '۹',
+            '0': '۰',
+        },
+        numberMap$4 = {
+            '۱': '1',
+            '۲': '2',
+            '۳': '3',
+            '۴': '4',
+            '۵': '5',
+            '۶': '6',
+            '۷': '7',
+            '۸': '8',
+            '۹': '9',
+            '۰': '0',
+        };
+
+    moment.defineLocale('fa', {
+        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
+            '_'
+        ),
+        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
+            '_'
+        ),
+        weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
+            '_'
+        ),
+        weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
+            '_'
+        ),
+        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /قبل از ظهر|بعد از ظهر/,
+        isPM: function (input) {
+            return /بعد از ظهر/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'قبل از ظهر';
+            } else {
+                return 'بعد از ظهر';
+            }
+        },
+        calendar: {
+            sameDay: '[امروز ساعت] LT',
+            nextDay: '[فردا ساعت] LT',
+            nextWeek: 'dddd [ساعت] LT',
+            lastDay: '[دیروز ساعت] LT',
+            lastWeek: 'dddd [پیش] [ساعت] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'در %s',
+            past: '%s پیش',
+            s: 'چند ثانیه',
+            ss: '%d ثانیه',
+            m: 'یک دقیقه',
+            mm: '%d دقیقه',
+            h: 'یک ساعت',
+            hh: '%d ساعت',
+            d: 'یک روز',
+            dd: '%d روز',
+            M: 'یک ماه',
+            MM: '%d ماه',
+            y: 'یک سال',
+            yy: '%d سال',
+        },
+        preparse: function (string) {
+            return string
+                .replace(/[۰-۹]/g, function (match) {
+                    return numberMap$4[match];
+                })
+                .replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap$5[match];
+                })
+                .replace(/,/g, '،');
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}م/,
+        ordinal: '%dم',
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
+            ' '
+        ),
+        numbersFuture = [
+            'nolla',
+            'yhden',
+            'kahden',
+            'kolmen',
+            'neljän',
+            'viiden',
+            'kuuden',
+            numbersPast[7],
+            numbersPast[8],
+            numbersPast[9],
+        ];
+    function translate$2(number, withoutSuffix, key, isFuture) {
+        var result = '';
+        switch (key) {
+            case 's':
+                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
+            case 'ss':
+                result = isFuture ? 'sekunnin' : 'sekuntia';
+                break;
+            case 'm':
+                return isFuture ? 'minuutin' : 'minuutti';
+            case 'mm':
+                result = isFuture ? 'minuutin' : 'minuuttia';
+                break;
+            case 'h':
+                return isFuture ? 'tunnin' : 'tunti';
+            case 'hh':
+                result = isFuture ? 'tunnin' : 'tuntia';
+                break;
+            case 'd':
+                return isFuture ? 'päivän' : 'päivä';
+            case 'dd':
+                result = isFuture ? 'päivän' : 'päivää';
+                break;
+            case 'M':
+                return isFuture ? 'kuukauden' : 'kuukausi';
+            case 'MM':
+                result = isFuture ? 'kuukauden' : 'kuukautta';
+                break;
+            case 'y':
+                return isFuture ? 'vuoden' : 'vuosi';
+            case 'yy':
+                result = isFuture ? 'vuoden' : 'vuotta';
+                break;
+        }
+        result = verbalNumber(number, isFuture) + ' ' + result;
+        return result;
+    }
+    function verbalNumber(number, isFuture) {
+        return number < 10
+            ? isFuture
+                ? numbersFuture[number]
+                : numbersPast[number]
+            : number;
+    }
+
+    moment.defineLocale('fi', {
+        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
+            '_'
+        ),
+        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
+            '_'
+        ),
+        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
+            '_'
+        ),
+        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
+        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD.MM.YYYY',
+            LL: 'Do MMMM[ta] YYYY',
+            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
+            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
+            l: 'D.M.YYYY',
+            ll: 'Do MMM YYYY',
+            lll: 'Do MMM YYYY, [klo] HH.mm',
+            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
+        },
+        calendar: {
+            sameDay: '[tänään] [klo] LT',
+            nextDay: '[huomenna] [klo] LT',
+            nextWeek: 'dddd [klo] LT',
+            lastDay: '[eilen] [klo] LT',
+            lastWeek: '[viime] dddd[na] [klo] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s päästä',
+            past: '%s sitten',
+            s: translate$2,
+            ss: translate$2,
+            m: translate$2,
+            mm: translate$2,
+            h: translate$2,
+            hh: translate$2,
+            d: translate$2,
+            dd: translate$2,
+            M: translate$2,
+            MM: translate$2,
+            y: translate$2,
+            yy: translate$2,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('fil', {
+        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
+            '_'
+        ),
+        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
+        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
+            '_'
+        ),
+        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
+        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'MM/D/YYYY',
+            LL: 'MMMM D, YYYY',
+            LLL: 'MMMM D, YYYY HH:mm',
+            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: 'LT [ngayong araw]',
+            nextDay: '[Bukas ng] LT',
+            nextWeek: 'LT [sa susunod na] dddd',
+            lastDay: 'LT [kahapon]',
+            lastWeek: 'LT [noong nakaraang] dddd',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'sa loob ng %s',
+            past: '%s ang nakalipas',
+            s: 'ilang segundo',
+            ss: '%d segundo',
+            m: 'isang minuto',
+            mm: '%d minuto',
+            h: 'isang oras',
+            hh: '%d oras',
+            d: 'isang araw',
+            dd: '%d araw',
+            M: 'isang buwan',
+            MM: '%d buwan',
+            y: 'isang taon',
+            yy: '%d taon',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}/,
+        ordinal: function (number) {
+            return number;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('fo', {
+        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
+        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
+            '_'
+        ),
+        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
+        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D. MMMM, YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Í dag kl.] LT',
+            nextDay: '[Í morgin kl.] LT',
+            nextWeek: 'dddd [kl.] LT',
+            lastDay: '[Í gjár kl.] LT',
+            lastWeek: '[síðstu] dddd [kl] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'um %s',
+            past: '%s síðani',
+            s: 'fá sekund',
+            ss: '%d sekundir',
+            m: 'ein minuttur',
+            mm: '%d minuttir',
+            h: 'ein tími',
+            hh: '%d tímar',
+            d: 'ein dagur',
+            dd: '%d dagar',
+            M: 'ein mánaður',
+            MM: '%d mánaðir',
+            y: 'eitt ár',
+            yy: '%d ár',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('fr-ca', {
+        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
+            '_'
+        ),
+        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Aujourd’hui à] LT',
+            nextDay: '[Demain à] LT',
+            nextWeek: 'dddd [à] LT',
+            lastDay: '[Hier à] LT',
+            lastWeek: 'dddd [dernier à] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dans %s',
+            past: 'il y a %s',
+            s: 'quelques secondes',
+            ss: '%d secondes',
+            m: 'une minute',
+            mm: '%d minutes',
+            h: 'une heure',
+            hh: '%d heures',
+            d: 'un jour',
+            dd: '%d jours',
+            M: 'un mois',
+            MM: '%d mois',
+            y: 'un an',
+            yy: '%d ans',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // Words with masculine grammatical gender: mois, trimestre, jour
+                default:
+                case 'M':
+                case 'Q':
+                case 'D':
+                case 'DDD':
+                case 'd':
+                    return number + (number === 1 ? 'er' : 'e');
+
+                // Words with feminine grammatical gender: semaine
+                case 'w':
+                case 'W':
+                    return number + (number === 1 ? 're' : 'e');
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('fr-ch', {
+        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
+            '_'
+        ),
+        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Aujourd’hui à] LT',
+            nextDay: '[Demain à] LT',
+            nextWeek: 'dddd [à] LT',
+            lastDay: '[Hier à] LT',
+            lastWeek: 'dddd [dernier à] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dans %s',
+            past: 'il y a %s',
+            s: 'quelques secondes',
+            ss: '%d secondes',
+            m: 'une minute',
+            mm: '%d minutes',
+            h: 'une heure',
+            hh: '%d heures',
+            d: 'un jour',
+            dd: '%d jours',
+            M: 'un mois',
+            MM: '%d mois',
+            y: 'un an',
+            yy: '%d ans',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // Words with masculine grammatical gender: mois, trimestre, jour
+                default:
+                case 'M':
+                case 'Q':
+                case 'D':
+                case 'DDD':
+                case 'd':
+                    return number + (number === 1 ? 'er' : 'e');
+
+                // Words with feminine grammatical gender: semaine
+                case 'w':
+                case 'W':
+                    return number + (number === 1 ? 're' : 'e');
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsStrictRegex$1 = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
+        monthsShortStrictRegex$1 = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
+        monthsRegex$5 = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
+        monthsParse$5 = [
+            /^janv/i,
+            /^févr/i,
+            /^mars/i,
+            /^avr/i,
+            /^mai/i,
+            /^juin/i,
+            /^juil/i,
+            /^août/i,
+            /^sept/i,
+            /^oct/i,
+            /^nov/i,
+            /^déc/i,
+        ];
+
+    moment.defineLocale('fr', {
+        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
+            '_'
+        ),
+        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
+            '_'
+        ),
+        monthsRegex: monthsRegex$5,
+        monthsShortRegex: monthsRegex$5,
+        monthsStrictRegex: monthsStrictRegex$1,
+        monthsShortStrictRegex: monthsShortStrictRegex$1,
+        monthsParse: monthsParse$5,
+        longMonthsParse: monthsParse$5,
+        shortMonthsParse: monthsParse$5,
+        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Aujourd’hui à] LT',
+            nextDay: '[Demain à] LT',
+            nextWeek: 'dddd [à] LT',
+            lastDay: '[Hier à] LT',
+            lastWeek: 'dddd [dernier à] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dans %s',
+            past: 'il y a %s',
+            s: 'quelques secondes',
+            ss: '%d secondes',
+            m: 'une minute',
+            mm: '%d minutes',
+            h: 'une heure',
+            hh: '%d heures',
+            d: 'un jour',
+            dd: '%d jours',
+            M: 'un mois',
+            MM: '%d mois',
+            y: 'un an',
+            yy: '%d ans',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // TODO: Return 'e' when day of month > 1. Move this case inside
+                // block for masculine words below.
+                // See https://github.com/moment/moment/issues/3375
+                case 'D':
+                    return number + (number === 1 ? 'er' : '');
+
+                // Words with masculine grammatical gender: mois, trimestre, jour
+                default:
+                case 'M':
+                case 'Q':
+                case 'DDD':
+                case 'd':
+                    return number + (number === 1 ? 'er' : 'e');
+
+                // Words with feminine grammatical gender: semaine
+                case 'w':
+                case 'W':
+                    return number + (number === 1 ? 're' : 'e');
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(
+            '_'
+        ),
+        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(
+            '_'
+        );
+
+    moment.defineLocale('fy', {
+        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortWithDots;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShortWithoutDots[m.month()];
+            } else {
+                return monthsShortWithDots[m.month()];
+            }
+        },
+        monthsParseExact: true,
+        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
+            '_'
+        ),
+        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
+        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD-MM-YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[hjoed om] LT',
+            nextDay: '[moarn om] LT',
+            nextWeek: 'dddd [om] LT',
+            lastDay: '[juster om] LT',
+            lastWeek: '[ôfrûne] dddd [om] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'oer %s',
+            past: '%s lyn',
+            s: 'in pear sekonden',
+            ss: '%d sekonden',
+            m: 'ien minút',
+            mm: '%d minuten',
+            h: 'ien oere',
+            hh: '%d oeren',
+            d: 'ien dei',
+            dd: '%d dagen',
+            M: 'ien moanne',
+            MM: '%d moannen',
+            y: 'ien jier',
+            yy: '%d jierren',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
+        ordinal: function (number) {
+            return (
+                number +
+                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
+            );
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$5 = [
+            'Eanáir',
+            'Feabhra',
+            'Márta',
+            'Aibreán',
+            'Bealtaine',
+            'Meitheamh',
+            'Iúil',
+            'Lúnasa',
+            'Meán Fómhair',
+            'Deireadh Fómhair',
+            'Samhain',
+            'Nollaig',
+        ],
+        monthsShort$4 = [
+            'Ean',
+            'Feabh',
+            'Márt',
+            'Aib',
+            'Beal',
+            'Meith',
+            'Iúil',
+            'Lún',
+            'M.F.',
+            'D.F.',
+            'Samh',
+            'Noll',
+        ],
+        weekdays$1 = [
+            'Dé Domhnaigh',
+            'Dé Luain',
+            'Dé Máirt',
+            'Dé Céadaoin',
+            'Déardaoin',
+            'Dé hAoine',
+            'Dé Sathairn',
+        ],
+        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
+        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
+
+    moment.defineLocale('ga', {
+        months: months$5,
+        monthsShort: monthsShort$4,
+        monthsParseExact: true,
+        weekdays: weekdays$1,
+        weekdaysShort: weekdaysShort,
+        weekdaysMin: weekdaysMin,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Inniu ag] LT',
+            nextDay: '[Amárach ag] LT',
+            nextWeek: 'dddd [ag] LT',
+            lastDay: '[Inné ag] LT',
+            lastWeek: 'dddd [seo caite] [ag] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'i %s',
+            past: '%s ó shin',
+            s: 'cúpla soicind',
+            ss: '%d soicind',
+            m: 'nóiméad',
+            mm: '%d nóiméad',
+            h: 'uair an chloig',
+            hh: '%d uair an chloig',
+            d: 'lá',
+            dd: '%d lá',
+            M: 'mí',
+            MM: '%d míonna',
+            y: 'bliain',
+            yy: '%d bliain',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
+        ordinal: function (number) {
+            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$6 = [
+            'Am Faoilleach',
+            'An Gearran',
+            'Am Màrt',
+            'An Giblean',
+            'An Cèitean',
+            'An t-Ògmhios',
+            'An t-Iuchar',
+            'An Lùnastal',
+            'An t-Sultain',
+            'An Dàmhair',
+            'An t-Samhain',
+            'An Dùbhlachd',
+        ],
+        monthsShort$5 = [
+            'Faoi',
+            'Gear',
+            'Màrt',
+            'Gibl',
+            'Cèit',
+            'Ògmh',
+            'Iuch',
+            'Lùn',
+            'Sult',
+            'Dàmh',
+            'Samh',
+            'Dùbh',
+        ],
+        weekdays$2 = [
+            'Didòmhnaich',
+            'Diluain',
+            'Dimàirt',
+            'Diciadain',
+            'Diardaoin',
+            'Dihaoine',
+            'Disathairne',
+        ],
+        weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
+        weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
+
+    moment.defineLocale('gd', {
+        months: months$6,
+        monthsShort: monthsShort$5,
+        monthsParseExact: true,
+        weekdays: weekdays$2,
+        weekdaysShort: weekdaysShort$1,
+        weekdaysMin: weekdaysMin$1,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[An-diugh aig] LT',
+            nextDay: '[A-màireach aig] LT',
+            nextWeek: 'dddd [aig] LT',
+            lastDay: '[An-dè aig] LT',
+            lastWeek: 'dddd [seo chaidh] [aig] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ann an %s',
+            past: 'bho chionn %s',
+            s: 'beagan diogan',
+            ss: '%d diogan',
+            m: 'mionaid',
+            mm: '%d mionaidean',
+            h: 'uair',
+            hh: '%d uairean',
+            d: 'latha',
+            dd: '%d latha',
+            M: 'mìos',
+            MM: '%d mìosan',
+            y: 'bliadhna',
+            yy: '%d bliadhna',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
+        ordinal: function (number) {
+            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('gl', {
+        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
+            '_'
+        ),
+        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
+        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
+        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY H:mm',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
+            },
+            nextDay: function () {
+                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
+            },
+            lastDay: function () {
+                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: function (str) {
+                if (str.indexOf('un') === 0) {
+                    return 'n' + str;
+                }
+                return 'en ' + str;
+            },
+            past: 'hai %s',
+            s: 'uns segundos',
+            ss: '%d segundos',
+            m: 'un minuto',
+            mm: '%d minutos',
+            h: 'unha hora',
+            hh: '%d horas',
+            d: 'un día',
+            dd: '%d días',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un ano',
+            yy: '%d anos',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
+        var format = {
+            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
+            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
+            m: ['एका मिणटान', 'एक मिनूट'],
+            mm: [number + ' मिणटांनी', number + ' मिणटां'],
+            h: ['एका वरान', 'एक वर'],
+            hh: [number + ' वरांनी', number + ' वरां'],
+            d: ['एका दिसान', 'एक दीस'],
+            dd: [number + ' दिसांनी', number + ' दीस'],
+            M: ['एका म्हयन्यान', 'एक म्हयनो'],
+            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
+            y: ['एका वर्सान', 'एक वर्स'],
+            yy: [number + ' वर्सांनी', number + ' वर्सां'],
+        };
+        return isFuture ? format[key][0] : format[key][1];
+    }
+
+    moment.defineLocale('gom-deva', {
+        months: {
+            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
+                '_'
+            ),
+            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
+                '_'
+            ),
+            isFormat: /MMMM(\s)+D[oD]?/,
+        },
+        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
+        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
+        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'A h:mm [वाजतां]',
+            LTS: 'A h:mm:ss [वाजतां]',
+            L: 'DD-MM-YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
+            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
+            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
+        },
+        calendar: {
+            sameDay: '[आयज] LT',
+            nextDay: '[फाल्यां] LT',
+            nextWeek: '[फुडलो] dddd[,] LT',
+            lastDay: '[काल] LT',
+            lastWeek: '[फाटलो] dddd[,] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s',
+            past: '%s आदीं',
+            s: processRelativeTime$4,
+            ss: processRelativeTime$4,
+            m: processRelativeTime$4,
+            mm: processRelativeTime$4,
+            h: processRelativeTime$4,
+            hh: processRelativeTime$4,
+            d: processRelativeTime$4,
+            dd: processRelativeTime$4,
+            M: processRelativeTime$4,
+            MM: processRelativeTime$4,
+            y: processRelativeTime$4,
+            yy: processRelativeTime$4,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // the ordinal 'वेर' only applies to day of the month
+                case 'D':
+                    return number + 'वेर';
+                default:
+                case 'M':
+                case 'Q':
+                case 'DDD':
+                case 'd':
+                case 'w':
+                case 'W':
+                    return number;
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week
+            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
+        },
+        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'राती') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'सकाळीं') {
+                return hour;
+            } else if (meridiem === 'दनपारां') {
+                return hour > 12 ? hour : hour + 12;
+            } else if (meridiem === 'सांजे') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'राती';
+            } else if (hour < 12) {
+                return 'सकाळीं';
+            } else if (hour < 16) {
+                return 'दनपारां';
+            } else if (hour < 20) {
+                return 'सांजे';
+            } else {
+                return 'राती';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
+        var format = {
+            s: ['thoddea sekondamni', 'thodde sekond'],
+            ss: [number + ' sekondamni', number + ' sekond'],
+            m: ['eka mintan', 'ek minut'],
+            mm: [number + ' mintamni', number + ' mintam'],
+            h: ['eka voran', 'ek vor'],
+            hh: [number + ' voramni', number + ' voram'],
+            d: ['eka disan', 'ek dis'],
+            dd: [number + ' disamni', number + ' dis'],
+            M: ['eka mhoinean', 'ek mhoino'],
+            MM: [number + ' mhoineamni', number + ' mhoine'],
+            y: ['eka vorsan', 'ek voros'],
+            yy: [number + ' vorsamni', number + ' vorsam'],
+        };
+        return isFuture ? format[key][0] : format[key][1];
+    }
+
+    moment.defineLocale('gom-latn', {
+        months: {
+            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
+                '_'
+            ),
+            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
+                '_'
+            ),
+            isFormat: /MMMM(\s)+D[oD]?/,
+        },
+        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
+        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
+        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'A h:mm [vazta]',
+            LTS: 'A h:mm:ss [vazta]',
+            L: 'DD-MM-YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY A h:mm [vazta]',
+            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
+            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
+        },
+        calendar: {
+            sameDay: '[Aiz] LT',
+            nextDay: '[Faleam] LT',
+            nextWeek: '[Fuddlo] dddd[,] LT',
+            lastDay: '[Kal] LT',
+            lastWeek: '[Fattlo] dddd[,] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s',
+            past: '%s adim',
+            s: processRelativeTime$5,
+            ss: processRelativeTime$5,
+            m: processRelativeTime$5,
+            mm: processRelativeTime$5,
+            h: processRelativeTime$5,
+            hh: processRelativeTime$5,
+            d: processRelativeTime$5,
+            dd: processRelativeTime$5,
+            M: processRelativeTime$5,
+            MM: processRelativeTime$5,
+            y: processRelativeTime$5,
+            yy: processRelativeTime$5,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // the ordinal 'er' only applies to day of the month
+                case 'D':
+                    return number + 'er';
+                default:
+                case 'M':
+                case 'Q':
+                case 'DDD':
+                case 'd':
+                case 'w':
+                case 'W':
+                    return number;
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week
+            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
+        },
+        meridiemParse: /rati|sokallim|donparam|sanje/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'rati') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'sokallim') {
+                return hour;
+            } else if (meridiem === 'donparam') {
+                return hour > 12 ? hour : hour + 12;
+            } else if (meridiem === 'sanje') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'rati';
+            } else if (hour < 12) {
+                return 'sokallim';
+            } else if (hour < 16) {
+                return 'donparam';
+            } else if (hour < 20) {
+                return 'sanje';
+            } else {
+                return 'rati';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$6 = {
+            '1': '૧',
+            '2': '૨',
+            '3': '૩',
+            '4': '૪',
+            '5': '૫',
+            '6': '૬',
+            '7': '૭',
+            '8': '૮',
+            '9': '૯',
+            '0': '૦',
+        },
+        numberMap$5 = {
+            '૧': '1',
+            '૨': '2',
+            '૩': '3',
+            '૪': '4',
+            '૫': '5',
+            '૬': '6',
+            '૭': '7',
+            '૮': '8',
+            '૯': '9',
+            '૦': '0',
+        };
+
+    moment.defineLocale('gu', {
+        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
+            '_'
+        ),
+        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
+            '_'
+        ),
+        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
+        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm વાગ્યે',
+            LTS: 'A h:mm:ss વાગ્યે',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
+        },
+        calendar: {
+            sameDay: '[આજ] LT',
+            nextDay: '[કાલે] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[ગઇકાલે] LT',
+            lastWeek: '[પાછલા] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s મા',
+            past: '%s પહેલા',
+            s: 'અમુક પળો',
+            ss: '%d સેકંડ',
+            m: 'એક મિનિટ',
+            mm: '%d મિનિટ',
+            h: 'એક કલાક',
+            hh: '%d કલાક',
+            d: 'એક દિવસ',
+            dd: '%d દિવસ',
+            M: 'એક મહિનો',
+            MM: '%d મહિનો',
+            y: 'એક વર્ષ',
+            yy: '%d વર્ષ',
+        },
+        preparse: function (string) {
+            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
+                return numberMap$5[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$6[match];
+            });
+        },
+        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
+        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
+        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'રાત') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'સવાર') {
+                return hour;
+            } else if (meridiem === 'બપોર') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'સાંજ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'રાત';
+            } else if (hour < 10) {
+                return 'સવાર';
+            } else if (hour < 17) {
+                return 'બપોર';
+            } else if (hour < 20) {
+                return 'સાંજ';
+            } else {
+                return 'રાત';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('he', {
+        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
+            '_'
+        ),
+        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(
+            '_'
+        ),
+        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
+        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
+        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [ב]MMMM YYYY',
+            LLL: 'D [ב]MMMM YYYY HH:mm',
+            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
+            l: 'D/M/YYYY',
+            ll: 'D MMM YYYY',
+            lll: 'D MMM YYYY HH:mm',
+            llll: 'ddd, D MMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[היום ב־]LT',
+            nextDay: '[מחר ב־]LT',
+            nextWeek: 'dddd [בשעה] LT',
+            lastDay: '[אתמול ב־]LT',
+            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'בעוד %s',
+            past: 'לפני %s',
+            s: 'מספר שניות',
+            ss: '%d שניות',
+            m: 'דקה',
+            mm: '%d דקות',
+            h: 'שעה',
+            hh: function (number) {
+                if (number === 2) {
+                    return 'שעתיים';
+                }
+                return number + ' שעות';
+            },
+            d: 'יום',
+            dd: function (number) {
+                if (number === 2) {
+                    return 'יומיים';
+                }
+                return number + ' ימים';
+            },
+            M: 'חודש',
+            MM: function (number) {
+                if (number === 2) {
+                    return 'חודשיים';
+                }
+                return number + ' חודשים';
+            },
+            y: 'שנה',
+            yy: function (number) {
+                if (number === 2) {
+                    return 'שנתיים';
+                } else if (number % 10 === 0 && number !== 10) {
+                    return number + ' שנה';
+                }
+                return number + ' שנים';
+            },
+        },
+        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
+        isPM: function (input) {
+            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 5) {
+                return 'לפנות בוקר';
+            } else if (hour < 10) {
+                return 'בבוקר';
+            } else if (hour < 12) {
+                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
+            } else if (hour < 18) {
+                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
+            } else {
+                return 'בערב';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$7 = {
+            '1': '१',
+            '2': '२',
+            '3': '३',
+            '4': '४',
+            '5': '५',
+            '6': '६',
+            '7': '७',
+            '8': '८',
+            '9': '९',
+            '0': '०',
+        },
+        numberMap$6 = {
+            '१': '1',
+            '२': '2',
+            '३': '3',
+            '४': '4',
+            '५': '5',
+            '६': '6',
+            '७': '7',
+            '८': '8',
+            '९': '9',
+            '०': '0',
+        };
+
+    moment.defineLocale('hi', {
+        months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
+            '_'
+        ),
+        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
+        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
+        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm बजे',
+            LTS: 'A h:mm:ss बजे',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm बजे',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
+        },
+        calendar: {
+            sameDay: '[आज] LT',
+            nextDay: '[कल] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[कल] LT',
+            lastWeek: '[पिछले] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s में',
+            past: '%s पहले',
+            s: 'कुछ ही क्षण',
+            ss: '%d सेकंड',
+            m: 'एक मिनट',
+            mm: '%d मिनट',
+            h: 'एक घंटा',
+            hh: '%d घंटे',
+            d: 'एक दिन',
+            dd: '%d दिन',
+            M: 'एक महीने',
+            MM: '%d महीने',
+            y: 'एक वर्ष',
+            yy: '%d वर्ष',
+        },
+        preparse: function (string) {
+            return string.replace(/[१२३४५६७८९०]/g, function (match) {
+                return numberMap$6[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$7[match];
+            });
+        },
+        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
+        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
+        meridiemParse: /रात|सुबह|दोपहर|शाम/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'रात') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'सुबह') {
+                return hour;
+            } else if (meridiem === 'दोपहर') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'शाम') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'रात';
+            } else if (hour < 10) {
+                return 'सुबह';
+            } else if (hour < 17) {
+                return 'दोपहर';
+            } else if (hour < 20) {
+                return 'शाम';
+            } else {
+                return 'रात';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function translate$3(number, withoutSuffix, key) {
+        var result = number + ' ';
+        switch (key) {
+            case 'ss':
+                if (number === 1) {
+                    result += 'sekunda';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'sekunde';
+                } else {
+                    result += 'sekundi';
+                }
+                return result;
+            case 'm':
+                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
+            case 'mm':
+                if (number === 1) {
+                    result += 'minuta';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'minute';
+                } else {
+                    result += 'minuta';
+                }
+                return result;
+            case 'h':
+                return withoutSuffix ? 'jedan sat' : 'jednog sata';
+            case 'hh':
+                if (number === 1) {
+                    result += 'sat';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'sata';
+                } else {
+                    result += 'sati';
+                }
+                return result;
+            case 'dd':
+                if (number === 1) {
+                    result += 'dan';
+                } else {
+                    result += 'dana';
+                }
+                return result;
+            case 'MM':
+                if (number === 1) {
+                    result += 'mjesec';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'mjeseca';
+                } else {
+                    result += 'mjeseci';
+                }
+                return result;
+            case 'yy':
+                if (number === 1) {
+                    result += 'godina';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'godine';
+                } else {
+                    result += 'godina';
+                }
+                return result;
+        }
+    }
+
+    moment.defineLocale('hr', {
+        months: {
+            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
+                '_'
+            ),
+            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
+                '_'
+            ),
+        },
+        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'Do MMMM YYYY',
+            LLL: 'Do MMMM YYYY H:mm',
+            LLLL: 'dddd, Do MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danas u] LT',
+            nextDay: '[sutra u] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[u] [nedjelju] [u] LT';
+                    case 3:
+                        return '[u] [srijedu] [u] LT';
+                    case 6:
+                        return '[u] [subotu] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[u] dddd [u] LT';
+                }
+            },
+            lastDay: '[jučer u] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[prošlu] [nedjelju] [u] LT';
+                    case 3:
+                        return '[prošlu] [srijedu] [u] LT';
+                    case 6:
+                        return '[prošle] [subote] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[prošli] dddd [u] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'prije %s',
+            s: 'par sekundi',
+            ss: translate$3,
+            m: translate$3,
+            mm: translate$3,
+            h: translate$3,
+            hh: translate$3,
+            d: 'dan',
+            dd: translate$3,
+            M: 'mjesec',
+            MM: translate$3,
+            y: 'godinu',
+            yy: translate$3,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(
+        ' '
+    );
+    function translate$4(number, withoutSuffix, key, isFuture) {
+        var num = number;
+        switch (key) {
+            case 's':
+                return isFuture || withoutSuffix
+                    ? 'néhány másodperc'
+                    : 'néhány másodperce';
+            case 'ss':
+                return num + (isFuture || withoutSuffix)
+                    ? ' másodperc'
+                    : ' másodperce';
+            case 'm':
+                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
+            case 'mm':
+                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
+            case 'h':
+                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
+            case 'hh':
+                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
+            case 'd':
+                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
+            case 'dd':
+                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
+            case 'M':
+                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
+            case 'MM':
+                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
+            case 'y':
+                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
+            case 'yy':
+                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
+        }
+        return '';
+    }
+    function week(isFuture) {
+        return (
+            (isFuture ? '' : '[múlt] ') +
+            '[' +
+            weekEndings[this.day()] +
+            '] LT[-kor]'
+        );
+    }
+
+    moment.defineLocale('hu', {
+        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(
+            '_'
+        ),
+        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
+        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
+        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'YYYY.MM.DD.',
+            LL: 'YYYY. MMMM D.',
+            LLL: 'YYYY. MMMM D. H:mm',
+            LLLL: 'YYYY. MMMM D., dddd H:mm',
+        },
+        meridiemParse: /de|du/i,
+        isPM: function (input) {
+            return input.charAt(1).toLowerCase() === 'u';
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 12) {
+                return isLower === true ? 'de' : 'DE';
+            } else {
+                return isLower === true ? 'du' : 'DU';
+            }
+        },
+        calendar: {
+            sameDay: '[ma] LT[-kor]',
+            nextDay: '[holnap] LT[-kor]',
+            nextWeek: function () {
+                return week.call(this, true);
+            },
+            lastDay: '[tegnap] LT[-kor]',
+            lastWeek: function () {
+                return week.call(this, false);
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s múlva',
+            past: '%s',
+            s: translate$4,
+            ss: translate$4,
+            m: translate$4,
+            mm: translate$4,
+            h: translate$4,
+            hh: translate$4,
+            d: translate$4,
+            dd: translate$4,
+            M: translate$4,
+            MM: translate$4,
+            y: translate$4,
+            yy: translate$4,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('hy-am', {
+        months: {
+            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
+                '_'
+            ),
+            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
+                '_'
+            ),
+        },
+        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
+        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
+            '_'
+        ),
+        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
+        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY թ.',
+            LLL: 'D MMMM YYYY թ., HH:mm',
+            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
+        },
+        calendar: {
+            sameDay: '[այսօր] LT',
+            nextDay: '[վաղը] LT',
+            lastDay: '[երեկ] LT',
+            nextWeek: function () {
+                return 'dddd [օրը ժամը] LT';
+            },
+            lastWeek: function () {
+                return '[անցած] dddd [օրը ժամը] LT';
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s հետո',
+            past: '%s առաջ',
+            s: 'մի քանի վայրկյան',
+            ss: '%d վայրկյան',
+            m: 'րոպե',
+            mm: '%d րոպե',
+            h: 'ժամ',
+            hh: '%d ժամ',
+            d: 'օր',
+            dd: '%d օր',
+            M: 'ամիս',
+            MM: '%d ամիս',
+            y: 'տարի',
+            yy: '%d տարի',
+        },
+        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
+        isPM: function (input) {
+            return /^(ցերեկվա|երեկոյան)$/.test(input);
+        },
+        meridiem: function (hour) {
+            if (hour < 4) {
+                return 'գիշերվա';
+            } else if (hour < 12) {
+                return 'առավոտվա';
+            } else if (hour < 17) {
+                return 'ցերեկվա';
+            } else {
+                return 'երեկոյան';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'DDD':
+                case 'w':
+                case 'W':
+                case 'DDDo':
+                    if (number === 1) {
+                        return number + '-ին';
+                    }
+                    return number + '-րդ';
+                default:
+                    return number;
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('id', {
+        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
+        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
+        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
+        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [pukul] HH.mm',
+            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
+        },
+        meridiemParse: /pagi|siang|sore|malam/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'pagi') {
+                return hour;
+            } else if (meridiem === 'siang') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'sore' || meridiem === 'malam') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'pagi';
+            } else if (hours < 15) {
+                return 'siang';
+            } else if (hours < 19) {
+                return 'sore';
+            } else {
+                return 'malam';
+            }
+        },
+        calendar: {
+            sameDay: '[Hari ini pukul] LT',
+            nextDay: '[Besok pukul] LT',
+            nextWeek: 'dddd [pukul] LT',
+            lastDay: '[Kemarin pukul] LT',
+            lastWeek: 'dddd [lalu pukul] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dalam %s',
+            past: '%s yang lalu',
+            s: 'beberapa detik',
+            ss: '%d detik',
+            m: 'semenit',
+            mm: '%d menit',
+            h: 'sejam',
+            hh: '%d jam',
+            d: 'sehari',
+            dd: '%d hari',
+            M: 'sebulan',
+            MM: '%d bulan',
+            y: 'setahun',
+            yy: '%d tahun',
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function plural$2(n) {
+        if (n % 100 === 11) {
+            return true;
+        } else if (n % 10 === 1) {
+            return false;
+        }
+        return true;
+    }
+    function translate$5(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        switch (key) {
+            case 's':
+                return withoutSuffix || isFuture
+                    ? 'nokkrar sekúndur'
+                    : 'nokkrum sekúndum';
+            case 'ss':
+                if (plural$2(number)) {
+                    return (
+                        result +
+                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
+                    );
+                }
+                return result + 'sekúnda';
+            case 'm':
+                return withoutSuffix ? 'mínúta' : 'mínútu';
+            case 'mm':
+                if (plural$2(number)) {
+                    return (
+                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
+                    );
+                } else if (withoutSuffix) {
+                    return result + 'mínúta';
+                }
+                return result + 'mínútu';
+            case 'hh':
+                if (plural$2(number)) {
+                    return (
+                        result +
+                        (withoutSuffix || isFuture
+                            ? 'klukkustundir'
+                            : 'klukkustundum')
+                    );
+                }
+                return result + 'klukkustund';
+            case 'd':
+                if (withoutSuffix) {
+                    return 'dagur';
+                }
+                return isFuture ? 'dag' : 'degi';
+            case 'dd':
+                if (plural$2(number)) {
+                    if (withoutSuffix) {
+                        return result + 'dagar';
+                    }
+                    return result + (isFuture ? 'daga' : 'dögum');
+                } else if (withoutSuffix) {
+                    return result + 'dagur';
+                }
+                return result + (isFuture ? 'dag' : 'degi');
+            case 'M':
+                if (withoutSuffix) {
+                    return 'mánuður';
+                }
+                return isFuture ? 'mánuð' : 'mánuði';
+            case 'MM':
+                if (plural$2(number)) {
+                    if (withoutSuffix) {
+                        return result + 'mánuðir';
+                    }
+                    return result + (isFuture ? 'mánuði' : 'mánuðum');
+                } else if (withoutSuffix) {
+                    return result + 'mánuður';
+                }
+                return result + (isFuture ? 'mánuð' : 'mánuði');
+            case 'y':
+                return withoutSuffix || isFuture ? 'ár' : 'ári';
+            case 'yy':
+                if (plural$2(number)) {
+                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
+                }
+                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
+        }
+    }
+
+    moment.defineLocale('is', {
+        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
+        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
+            '_'
+        ),
+        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
+        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY [kl.] H:mm',
+            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
+        },
+        calendar: {
+            sameDay: '[í dag kl.] LT',
+            nextDay: '[á morgun kl.] LT',
+            nextWeek: 'dddd [kl.] LT',
+            lastDay: '[í gær kl.] LT',
+            lastWeek: '[síðasta] dddd [kl.] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'eftir %s',
+            past: 'fyrir %s síðan',
+            s: translate$5,
+            ss: translate$5,
+            m: translate$5,
+            mm: translate$5,
+            h: 'klukkustund',
+            hh: translate$5,
+            d: translate$5,
+            dd: translate$5,
+            M: translate$5,
+            MM: translate$5,
+            y: translate$5,
+            yy: translate$5,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('it-ch', {
+        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
+            '_'
+        ),
+        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
+        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
+            '_'
+        ),
+        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
+        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Oggi alle] LT',
+            nextDay: '[Domani alle] LT',
+            nextWeek: 'dddd [alle] LT',
+            lastDay: '[Ieri alle] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[la scorsa] dddd [alle] LT';
+                    default:
+                        return '[lo scorso] dddd [alle] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: function (s) {
+                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
+            },
+            past: '%s fa',
+            s: 'alcuni secondi',
+            ss: '%d secondi',
+            m: 'un minuto',
+            mm: '%d minuti',
+            h: "un'ora",
+            hh: '%d ore',
+            d: 'un giorno',
+            dd: '%d giorni',
+            M: 'un mese',
+            MM: '%d mesi',
+            y: 'un anno',
+            yy: '%d anni',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('it', {
+        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
+            '_'
+        ),
+        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
+        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
+            '_'
+        ),
+        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
+        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: function () {
+                return (
+                    '[Oggi a' +
+                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
+                    ']LT'
+                );
+            },
+            nextDay: function () {
+                return (
+                    '[Domani a' +
+                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
+                    ']LT'
+                );
+            },
+            nextWeek: function () {
+                return (
+                    'dddd [a' +
+                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
+                    ']LT'
+                );
+            },
+            lastDay: function () {
+                return (
+                    '[Ieri a' +
+                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
+                    ']LT'
+                );
+            },
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return (
+                            '[La scorsa] dddd [a' +
+                            (this.hours() > 1
+                                ? 'lle '
+                                : this.hours() === 0
+                                ? ' '
+                                : "ll'") +
+                            ']LT'
+                        );
+                    default:
+                        return (
+                            '[Lo scorso] dddd [a' +
+                            (this.hours() > 1
+                                ? 'lle '
+                                : this.hours() === 0
+                                ? ' '
+                                : "ll'") +
+                            ']LT'
+                        );
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'tra %s',
+            past: '%s fa',
+            s: 'alcuni secondi',
+            ss: '%d secondi',
+            m: 'un minuto',
+            mm: '%d minuti',
+            h: "un'ora",
+            hh: '%d ore',
+            d: 'un giorno',
+            dd: '%d giorni',
+            M: 'un mese',
+            MM: '%d mesi',
+            y: 'un anno',
+            yy: '%d anni',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ja', {
+        eras: [
+            {
+                since: '2019-05-01',
+                offset: 1,
+                name: '令和',
+                narrow: '㋿',
+                abbr: 'R',
+            },
+            {
+                since: '1989-01-08',
+                until: '2019-04-30',
+                offset: 1,
+                name: '平成',
+                narrow: '㍻',
+                abbr: 'H',
+            },
+            {
+                since: '1926-12-25',
+                until: '1989-01-07',
+                offset: 1,
+                name: '昭和',
+                narrow: '㍼',
+                abbr: 'S',
+            },
+            {
+                since: '1912-07-30',
+                until: '1926-12-24',
+                offset: 1,
+                name: '大正',
+                narrow: '㍽',
+                abbr: 'T',
+            },
+            {
+                since: '1873-01-01',
+                until: '1912-07-29',
+                offset: 6,
+                name: '明治',
+                narrow: '㍾',
+                abbr: 'M',
+            },
+            {
+                since: '0001-01-01',
+                until: '1873-12-31',
+                offset: 1,
+                name: '西暦',
+                narrow: 'AD',
+                abbr: 'AD',
+            },
+            {
+                since: '0000-12-31',
+                until: -Infinity,
+                offset: 1,
+                name: '紀元前',
+                narrow: 'BC',
+                abbr: 'BC',
+            },
+        ],
+        eraYearOrdinalRegex: /(元|\d+)年/,
+        eraYearOrdinalParse: function (input, match) {
+            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
+        },
+        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
+        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
+        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日 HH:mm',
+            LLLL: 'YYYY年M月D日 dddd HH:mm',
+            l: 'YYYY/MM/DD',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日(ddd) HH:mm',
+        },
+        meridiemParse: /午前|午後/i,
+        isPM: function (input) {
+            return input === '午後';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return '午前';
+            } else {
+                return '午後';
+            }
+        },
+        calendar: {
+            sameDay: '[今日] LT',
+            nextDay: '[明日] LT',
+            nextWeek: function (now) {
+                if (now.week() !== this.week()) {
+                    return '[来週]dddd LT';
+                } else {
+                    return 'dddd LT';
+                }
+            },
+            lastDay: '[昨日] LT',
+            lastWeek: function (now) {
+                if (this.week() !== now.week()) {
+                    return '[先週]dddd LT';
+                } else {
+                    return 'dddd LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}日/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'y':
+                    return number === 1 ? '元年' : number + '年';
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s後',
+            past: '%s前',
+            s: '数秒',
+            ss: '%d秒',
+            m: '1分',
+            mm: '%d分',
+            h: '1時間',
+            hh: '%d時間',
+            d: '1日',
+            dd: '%d日',
+            M: '1ヶ月',
+            MM: '%dヶ月',
+            y: '1年',
+            yy: '%d年',
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('jv', {
+        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
+        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
+        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
+        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [pukul] HH.mm',
+            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
+        },
+        meridiemParse: /enjing|siyang|sonten|ndalu/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'enjing') {
+                return hour;
+            } else if (meridiem === 'siyang') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'enjing';
+            } else if (hours < 15) {
+                return 'siyang';
+            } else if (hours < 19) {
+                return 'sonten';
+            } else {
+                return 'ndalu';
+            }
+        },
+        calendar: {
+            sameDay: '[Dinten puniko pukul] LT',
+            nextDay: '[Mbenjang pukul] LT',
+            nextWeek: 'dddd [pukul] LT',
+            lastDay: '[Kala wingi pukul] LT',
+            lastWeek: 'dddd [kepengker pukul] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'wonten ing %s',
+            past: '%s ingkang kepengker',
+            s: 'sawetawis detik',
+            ss: '%d detik',
+            m: 'setunggal menit',
+            mm: '%d menit',
+            h: 'setunggal jam',
+            hh: '%d jam',
+            d: 'sedinten',
+            dd: '%d dinten',
+            M: 'sewulan',
+            MM: '%d wulan',
+            y: 'setaun',
+            yy: '%d taun',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ka', {
+        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
+            '_'
+        ),
+        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
+        weekdays: {
+            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
+                '_'
+            ),
+            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
+                '_'
+            ),
+            isFormat: /(წინა|შემდეგ)/,
+        },
+        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
+        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[დღეს] LT[-ზე]',
+            nextDay: '[ხვალ] LT[-ზე]',
+            lastDay: '[გუშინ] LT[-ზე]',
+            nextWeek: '[შემდეგ] dddd LT[-ზე]',
+            lastWeek: '[წინა] dddd LT-ზე',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: function (s) {
+                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (
+                    $0,
+                    $1,
+                    $2
+                ) {
+                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
+                });
+            },
+            past: function (s) {
+                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
+                    return s.replace(/(ი|ე)$/, 'ის წინ');
+                }
+                if (/წელი/.test(s)) {
+                    return s.replace(/წელი$/, 'წლის წინ');
+                }
+                return s;
+            },
+            s: 'რამდენიმე წამი',
+            ss: '%d წამი',
+            m: 'წუთი',
+            mm: '%d წუთი',
+            h: 'საათი',
+            hh: '%d საათი',
+            d: 'დღე',
+            dd: '%d დღე',
+            M: 'თვე',
+            MM: '%d თვე',
+            y: 'წელი',
+            yy: '%d წელი',
+        },
+        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
+        ordinal: function (number) {
+            if (number === 0) {
+                return number;
+            }
+            if (number === 1) {
+                return number + '-ლი';
+            }
+            if (
+                number < 20 ||
+                (number <= 100 && number % 20 === 0) ||
+                number % 100 === 0
+            ) {
+                return 'მე-' + number;
+            }
+            return number + '-ე';
+        },
+        week: {
+            dow: 1,
+            doy: 7,
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$1 = {
+        0: '-ші',
+        1: '-ші',
+        2: '-ші',
+        3: '-ші',
+        4: '-ші',
+        5: '-ші',
+        6: '-шы',
+        7: '-ші',
+        8: '-ші',
+        9: '-шы',
+        10: '-шы',
+        20: '-шы',
+        30: '-шы',
+        40: '-шы',
+        50: '-ші',
+        60: '-шы',
+        70: '-ші',
+        80: '-ші',
+        90: '-шы',
+        100: '-ші',
+    };
+
+    moment.defineLocale('kk', {
+        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
+            '_'
+        ),
+        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
+        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
+            '_'
+        ),
+        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
+        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Бүгін сағат] LT',
+            nextDay: '[Ертең сағат] LT',
+            nextWeek: 'dddd [сағат] LT',
+            lastDay: '[Кеше сағат] LT',
+            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ішінде',
+            past: '%s бұрын',
+            s: 'бірнеше секунд',
+            ss: '%d секунд',
+            m: 'бір минут',
+            mm: '%d минут',
+            h: 'бір сағат',
+            hh: '%d сағат',
+            d: 'бір күн',
+            dd: '%d күн',
+            M: 'бір ай',
+            MM: '%d ай',
+            y: 'бір жыл',
+            yy: '%d жыл',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
+        ordinal: function (number) {
+            var a = number % 10,
+                b = number >= 100 ? 100 : null;
+            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$8 = {
+            '1': '១',
+            '2': '២',
+            '3': '៣',
+            '4': '៤',
+            '5': '៥',
+            '6': '៦',
+            '7': '៧',
+            '8': '៨',
+            '9': '៩',
+            '0': '០',
+        },
+        numberMap$7 = {
+            '១': '1',
+            '២': '2',
+            '៣': '3',
+            '៤': '4',
+            '៥': '5',
+            '៦': '6',
+            '៧': '7',
+            '៨': '8',
+            '៩': '9',
+            '០': '0',
+        };
+
+    moment.defineLocale('km', {
+        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
+            '_'
+        ),
+        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
+            '_'
+        ),
+        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
+        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
+        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ព្រឹក|ល្ងាច/,
+        isPM: function (input) {
+            return input === 'ល្ងាច';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ព្រឹក';
+            } else {
+                return 'ល្ងាច';
+            }
+        },
+        calendar: {
+            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
+            nextDay: '[ស្អែក ម៉ោង] LT',
+            nextWeek: 'dddd [ម៉ោង] LT',
+            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
+            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%sទៀត',
+            past: '%sមុន',
+            s: 'ប៉ុន្មានវិនាទី',
+            ss: '%d វិនាទី',
+            m: 'មួយនាទី',
+            mm: '%d នាទី',
+            h: 'មួយម៉ោង',
+            hh: '%d ម៉ោង',
+            d: 'មួយថ្ងៃ',
+            dd: '%d ថ្ងៃ',
+            M: 'មួយខែ',
+            MM: '%d ខែ',
+            y: 'មួយឆ្នាំ',
+            yy: '%d ឆ្នាំ',
+        },
+        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
+        ordinal: 'ទី%d',
+        preparse: function (string) {
+            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
+                return numberMap$7[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$8[match];
+            });
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$9 = {
+            '1': '೧',
+            '2': '೨',
+            '3': '೩',
+            '4': '೪',
+            '5': '೫',
+            '6': '೬',
+            '7': '೭',
+            '8': '೮',
+            '9': '೯',
+            '0': '೦',
+        },
+        numberMap$8 = {
+            '೧': '1',
+            '೨': '2',
+            '೩': '3',
+            '೪': '4',
+            '೫': '5',
+            '೬': '6',
+            '೭': '7',
+            '೮': '8',
+            '೯': '9',
+            '೦': '0',
+        };
+
+    moment.defineLocale('kn', {
+        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
+            '_'
+        ),
+        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
+            '_'
+        ),
+        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
+        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm',
+            LTS: 'A h:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm',
+        },
+        calendar: {
+            sameDay: '[ಇಂದು] LT',
+            nextDay: '[ನಾಳೆ] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[ನಿನ್ನೆ] LT',
+            lastWeek: '[ಕೊನೆಯ] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ನಂತರ',
+            past: '%s ಹಿಂದೆ',
+            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
+            ss: '%d ಸೆಕೆಂಡುಗಳು',
+            m: 'ಒಂದು ನಿಮಿಷ',
+            mm: '%d ನಿಮಿಷ',
+            h: 'ಒಂದು ಗಂಟೆ',
+            hh: '%d ಗಂಟೆ',
+            d: 'ಒಂದು ದಿನ',
+            dd: '%d ದಿನ',
+            M: 'ಒಂದು ತಿಂಗಳು',
+            MM: '%d ತಿಂಗಳು',
+            y: 'ಒಂದು ವರ್ಷ',
+            yy: '%d ವರ್ಷ',
+        },
+        preparse: function (string) {
+            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
+                return numberMap$8[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$9[match];
+            });
+        },
+        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'ರಾತ್ರಿ') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
+                return hour;
+            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'ಸಂಜೆ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ರಾತ್ರಿ';
+            } else if (hour < 10) {
+                return 'ಬೆಳಿಗ್ಗೆ';
+            } else if (hour < 17) {
+                return 'ಮಧ್ಯಾಹ್ನ';
+            } else if (hour < 20) {
+                return 'ಸಂಜೆ';
+            } else {
+                return 'ರಾತ್ರಿ';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
+        ordinal: function (number) {
+            return number + 'ನೇ';
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ko', {
+        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
+        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
+            '_'
+        ),
+        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
+        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
+        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm',
+            LTS: 'A h:mm:ss',
+            L: 'YYYY.MM.DD.',
+            LL: 'YYYY년 MMMM D일',
+            LLL: 'YYYY년 MMMM D일 A h:mm',
+            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
+            l: 'YYYY.MM.DD.',
+            ll: 'YYYY년 MMMM D일',
+            lll: 'YYYY년 MMMM D일 A h:mm',
+            llll: 'YYYY년 MMMM D일 dddd A h:mm',
+        },
+        calendar: {
+            sameDay: '오늘 LT',
+            nextDay: '내일 LT',
+            nextWeek: 'dddd LT',
+            lastDay: '어제 LT',
+            lastWeek: '지난주 dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s 후',
+            past: '%s 전',
+            s: '몇 초',
+            ss: '%d초',
+            m: '1분',
+            mm: '%d분',
+            h: '한 시간',
+            hh: '%d시간',
+            d: '하루',
+            dd: '%d일',
+            M: '한 달',
+            MM: '%d달',
+            y: '일 년',
+            yy: '%d년',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '일';
+                case 'M':
+                    return number + '월';
+                case 'w':
+                case 'W':
+                    return number + '주';
+                default:
+                    return number;
+            }
+        },
+        meridiemParse: /오전|오후/,
+        isPM: function (token) {
+            return token === '오후';
+        },
+        meridiem: function (hour, minute, isUpper) {
+            return hour < 12 ? '오전' : '오후';
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$a = {
+            '1': '١',
+            '2': '٢',
+            '3': '٣',
+            '4': '٤',
+            '5': '٥',
+            '6': '٦',
+            '7': '٧',
+            '8': '٨',
+            '9': '٩',
+            '0': '٠',
+        },
+        numberMap$9 = {
+            '١': '1',
+            '٢': '2',
+            '٣': '3',
+            '٤': '4',
+            '٥': '5',
+            '٦': '6',
+            '٧': '7',
+            '٨': '8',
+            '٩': '9',
+            '٠': '0',
+        },
+        months$7 = [
+            'کانونی دووەم',
+            'شوبات',
+            'ئازار',
+            'نیسان',
+            'ئایار',
+            'حوزەیران',
+            'تەمموز',
+            'ئاب',
+            'ئەیلوول',
+            'تشرینی یەكەم',
+            'تشرینی دووەم',
+            'كانونی یەکەم',
+        ];
+
+    moment.defineLocale('ku', {
+        months: months$7,
+        monthsShort: months$7,
+        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
+            '_'
+        ),
+        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(
+            '_'
+        ),
+        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ئێواره‌|به‌یانی/,
+        isPM: function (input) {
+            return /ئێواره‌/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'به‌یانی';
+            } else {
+                return 'ئێواره‌';
+            }
+        },
+        calendar: {
+            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
+            nextDay: '[به‌یانی كاتژمێر] LT',
+            nextWeek: 'dddd [كاتژمێر] LT',
+            lastDay: '[دوێنێ كاتژمێر] LT',
+            lastWeek: 'dddd [كاتژمێر] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'له‌ %s',
+            past: '%s',
+            s: 'چه‌ند چركه‌یه‌ك',
+            ss: 'چركه‌ %d',
+            m: 'یه‌ك خوله‌ك',
+            mm: '%d خوله‌ك',
+            h: 'یه‌ك كاتژمێر',
+            hh: '%d كاتژمێر',
+            d: 'یه‌ك ڕۆژ',
+            dd: '%d ڕۆژ',
+            M: 'یه‌ك مانگ',
+            MM: '%d مانگ',
+            y: 'یه‌ك ساڵ',
+            yy: '%d ساڵ',
+        },
+        preparse: function (string) {
+            return string
+                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+                    return numberMap$9[match];
+                })
+                .replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap$a[match];
+                })
+                .replace(/,/g, '،');
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$2 = {
+        0: '-чү',
+        1: '-чи',
+        2: '-чи',
+        3: '-чү',
+        4: '-чү',
+        5: '-чи',
+        6: '-чы',
+        7: '-чи',
+        8: '-чи',
+        9: '-чу',
+        10: '-чу',
+        20: '-чы',
+        30: '-чу',
+        40: '-чы',
+        50: '-чү',
+        60: '-чы',
+        70: '-чи',
+        80: '-чи',
+        90: '-чу',
+        100: '-чү',
+    };
+
+    moment.defineLocale('ky', {
+        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
+            '_'
+        ),
+        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
+            '_'
+        ),
+        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
+            '_'
+        ),
+        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
+        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Бүгүн саат] LT',
+            nextDay: '[Эртең саат] LT',
+            nextWeek: 'dddd [саат] LT',
+            lastDay: '[Кечээ саат] LT',
+            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ичинде',
+            past: '%s мурун',
+            s: 'бирнече секунд',
+            ss: '%d секунд',
+            m: 'бир мүнөт',
+            mm: '%d мүнөт',
+            h: 'бир саат',
+            hh: '%d саат',
+            d: 'бир күн',
+            dd: '%d күн',
+            M: 'бир ай',
+            MM: '%d ай',
+            y: 'бир жыл',
+            yy: '%d жыл',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
+        ordinal: function (number) {
+            var a = number % 10,
+                b = number >= 100 ? 100 : null;
+            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
+        var format = {
+            m: ['eng Minutt', 'enger Minutt'],
+            h: ['eng Stonn', 'enger Stonn'],
+            d: ['een Dag', 'engem Dag'],
+            M: ['ee Mount', 'engem Mount'],
+            y: ['ee Joer', 'engem Joer'],
+        };
+        return withoutSuffix ? format[key][0] : format[key][1];
+    }
+    function processFutureTime(string) {
+        var number = string.substr(0, string.indexOf(' '));
+        if (eifelerRegelAppliesToNumber(number)) {
+            return 'a ' + string;
+        }
+        return 'an ' + string;
+    }
+    function processPastTime(string) {
+        var number = string.substr(0, string.indexOf(' '));
+        if (eifelerRegelAppliesToNumber(number)) {
+            return 'viru ' + string;
+        }
+        return 'virun ' + string;
+    }
+    /**
+     * Returns true if the word before the given number loses the '-n' ending.
+     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
+     *
+     * @param number {integer}
+     * @returns {boolean}
+     */
+    function eifelerRegelAppliesToNumber(number) {
+        number = parseInt(number, 10);
+        if (isNaN(number)) {
+            return false;
+        }
+        if (number < 0) {
+            // Negative Number --> always true
+            return true;
+        } else if (number < 10) {
+            // Only 1 digit
+            if (4 <= number && number <= 7) {
+                return true;
+            }
+            return false;
+        } else if (number < 100) {
+            // 2 digits
+            var lastDigit = number % 10,
+                firstDigit = number / 10;
+            if (lastDigit === 0) {
+                return eifelerRegelAppliesToNumber(firstDigit);
+            }
+            return eifelerRegelAppliesToNumber(lastDigit);
+        } else if (number < 10000) {
+            // 3 or 4 digits --> recursively check first digit
+            while (number >= 10) {
+                number = number / 10;
+            }
+            return eifelerRegelAppliesToNumber(number);
+        } else {
+            // Anything larger than 4 digits: recursively check first n-3 digits
+            number = number / 1000;
+            return eifelerRegelAppliesToNumber(number);
+        }
+    }
+
+    moment.defineLocale('lb', {
+        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
+            '_'
+        ),
+        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
+        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm [Auer]',
+            LTS: 'H:mm:ss [Auer]',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm [Auer]',
+            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
+        },
+        calendar: {
+            sameDay: '[Haut um] LT',
+            sameElse: 'L',
+            nextDay: '[Muer um] LT',
+            nextWeek: 'dddd [um] LT',
+            lastDay: '[Gëschter um] LT',
+            lastWeek: function () {
+                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
+                switch (this.day()) {
+                    case 2:
+                    case 4:
+                        return '[Leschten] dddd [um] LT';
+                    default:
+                        return '[Leschte] dddd [um] LT';
+                }
+            },
+        },
+        relativeTime: {
+            future: processFutureTime,
+            past: processPastTime,
+            s: 'e puer Sekonnen',
+            ss: '%d Sekonnen',
+            m: processRelativeTime$6,
+            mm: '%d Minutten',
+            h: processRelativeTime$6,
+            hh: '%d Stonnen',
+            d: processRelativeTime$6,
+            dd: '%d Deeg',
+            M: processRelativeTime$6,
+            MM: '%d Méint',
+            y: processRelativeTime$6,
+            yy: '%d Joer',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('lo', {
+        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
+            '_'
+        ),
+        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
+            '_'
+        ),
+        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
+        isPM: function (input) {
+            return input === 'ຕອນແລງ';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ຕອນເຊົ້າ';
+            } else {
+                return 'ຕອນແລງ';
+            }
+        },
+        calendar: {
+            sameDay: '[ມື້ນີ້ເວລາ] LT',
+            nextDay: '[ມື້ອື່ນເວລາ] LT',
+            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
+            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
+            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ອີກ %s',
+            past: '%sຜ່ານມາ',
+            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
+            ss: '%d ວິນາທີ',
+            m: '1 ນາທີ',
+            mm: '%d ນາທີ',
+            h: '1 ຊົ່ວໂມງ',
+            hh: '%d ຊົ່ວໂມງ',
+            d: '1 ມື້',
+            dd: '%d ມື້',
+            M: '1 ເດືອນ',
+            MM: '%d ເດືອນ',
+            y: '1 ປີ',
+            yy: '%d ປີ',
+        },
+        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
+        ordinal: function (number) {
+            return 'ທີ່' + number;
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var units = {
+        ss: 'sekundė_sekundžių_sekundes',
+        m: 'minutė_minutės_minutę',
+        mm: 'minutės_minučių_minutes',
+        h: 'valanda_valandos_valandą',
+        hh: 'valandos_valandų_valandas',
+        d: 'diena_dienos_dieną',
+        dd: 'dienos_dienų_dienas',
+        M: 'mėnuo_mėnesio_mėnesį',
+        MM: 'mėnesiai_mėnesių_mėnesius',
+        y: 'metai_metų_metus',
+        yy: 'metai_metų_metus',
+    };
+    function translateSeconds(number, withoutSuffix, key, isFuture) {
+        if (withoutSuffix) {
+            return 'kelios sekundės';
+        } else {
+            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
+        }
+    }
+    function translateSingular(number, withoutSuffix, key, isFuture) {
+        return withoutSuffix
+            ? forms(key)[0]
+            : isFuture
+            ? forms(key)[1]
+            : forms(key)[2];
+    }
+    function special(number) {
+        return number % 10 === 0 || (number > 10 && number < 20);
+    }
+    function forms(key) {
+        return units[key].split('_');
+    }
+    function translate$6(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        if (number === 1) {
+            return (
+                result + translateSingular(number, withoutSuffix, key[0], isFuture)
+            );
+        } else if (withoutSuffix) {
+            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
+        } else {
+            if (isFuture) {
+                return result + forms(key)[1];
+            } else {
+                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
+            }
+        }
+    }
+    moment.defineLocale('lt', {
+        months: {
+            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
+                '_'
+            ),
+            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
+                '_'
+            ),
+            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
+        },
+        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
+        weekdays: {
+            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
+                '_'
+            ),
+            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
+                '_'
+            ),
+            isFormat: /dddd HH:mm/,
+        },
+        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
+        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'YYYY [m.] MMMM D [d.]',
+            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
+            l: 'YYYY-MM-DD',
+            ll: 'YYYY [m.] MMMM D [d.]',
+            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
+        },
+        calendar: {
+            sameDay: '[Šiandien] LT',
+            nextDay: '[Rytoj] LT',
+            nextWeek: 'dddd LT',
+            lastDay: '[Vakar] LT',
+            lastWeek: '[Praėjusį] dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'po %s',
+            past: 'prieš %s',
+            s: translateSeconds,
+            ss: translate$6,
+            m: translateSingular,
+            mm: translate$6,
+            h: translateSingular,
+            hh: translate$6,
+            d: translateSingular,
+            dd: translate$6,
+            M: translateSingular,
+            MM: translate$6,
+            y: translateSingular,
+            yy: translate$6,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
+        ordinal: function (number) {
+            return number + '-oji';
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var units$1 = {
+        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
+        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
+        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
+        h: 'stundas_stundām_stunda_stundas'.split('_'),
+        hh: 'stundas_stundām_stunda_stundas'.split('_'),
+        d: 'dienas_dienām_diena_dienas'.split('_'),
+        dd: 'dienas_dienām_diena_dienas'.split('_'),
+        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
+        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
+        y: 'gada_gadiem_gads_gadi'.split('_'),
+        yy: 'gada_gadiem_gads_gadi'.split('_'),
+    };
+    /**
+     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
+     */
+    function format(forms, number, withoutSuffix) {
+        if (withoutSuffix) {
+            // E.g. "21 minūte", "3 minūtes".
+            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
+        } else {
+            // E.g. "21 minūtes" as in "pēc 21 minūtes".
+            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
+            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
+        }
+    }
+    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
+        return number + ' ' + format(units$1[key], number, withoutSuffix);
+    }
+    function relativeTimeWithSingular(number, withoutSuffix, key) {
+        return format(units$1[key], number, withoutSuffix);
+    }
+    function relativeSeconds(number, withoutSuffix) {
+        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
+    }
+
+    moment.defineLocale('lv', {
+        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
+        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
+        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY.',
+            LL: 'YYYY. [gada] D. MMMM',
+            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
+            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
+        },
+        calendar: {
+            sameDay: '[Šodien pulksten] LT',
+            nextDay: '[Rīt pulksten] LT',
+            nextWeek: 'dddd [pulksten] LT',
+            lastDay: '[Vakar pulksten] LT',
+            lastWeek: '[Pagājušā] dddd [pulksten] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'pēc %s',
+            past: 'pirms %s',
+            s: relativeSeconds,
+            ss: relativeTimeWithPlural$1,
+            m: relativeTimeWithSingular,
+            mm: relativeTimeWithPlural$1,
+            h: relativeTimeWithSingular,
+            hh: relativeTimeWithPlural$1,
+            d: relativeTimeWithSingular,
+            dd: relativeTimeWithPlural$1,
+            M: relativeTimeWithSingular,
+            MM: relativeTimeWithPlural$1,
+            y: relativeTimeWithSingular,
+            yy: relativeTimeWithPlural$1,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var translator = {
+        words: {
+            //Different grammatical cases
+            ss: ['sekund', 'sekunda', 'sekundi'],
+            m: ['jedan minut', 'jednog minuta'],
+            mm: ['minut', 'minuta', 'minuta'],
+            h: ['jedan sat', 'jednog sata'],
+            hh: ['sat', 'sata', 'sati'],
+            dd: ['dan', 'dana', 'dana'],
+            MM: ['mjesec', 'mjeseca', 'mjeseci'],
+            yy: ['godina', 'godine', 'godina'],
+        },
+        correctGrammaticalCase: function (number, wordKey) {
+            return number === 1
+                ? wordKey[0]
+                : number >= 2 && number <= 4
+                ? wordKey[1]
+                : wordKey[2];
+        },
+        translate: function (number, withoutSuffix, key) {
+            var wordKey = translator.words[key];
+            if (key.length === 1) {
+                return withoutSuffix ? wordKey[0] : wordKey[1];
+            } else {
+                return (
+                    number +
+                    ' ' +
+                    translator.correctGrammaticalCase(number, wordKey)
+                );
+            }
+        },
+    };
+
+    moment.defineLocale('me', {
+        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danas u] LT',
+            nextDay: '[sjutra u] LT',
+
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[u] [nedjelju] [u] LT';
+                    case 3:
+                        return '[u] [srijedu] [u] LT';
+                    case 6:
+                        return '[u] [subotu] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[u] dddd [u] LT';
+                }
+            },
+            lastDay: '[juče u] LT',
+            lastWeek: function () {
+                var lastWeekDays = [
+                    '[prošle] [nedjelje] [u] LT',
+                    '[prošlog] [ponedjeljka] [u] LT',
+                    '[prošlog] [utorka] [u] LT',
+                    '[prošle] [srijede] [u] LT',
+                    '[prošlog] [četvrtka] [u] LT',
+                    '[prošlog] [petka] [u] LT',
+                    '[prošle] [subote] [u] LT',
+                ];
+                return lastWeekDays[this.day()];
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'prije %s',
+            s: 'nekoliko sekundi',
+            ss: translator.translate,
+            m: translator.translate,
+            mm: translator.translate,
+            h: translator.translate,
+            hh: translator.translate,
+            d: 'dan',
+            dd: translator.translate,
+            M: 'mjesec',
+            MM: translator.translate,
+            y: 'godinu',
+            yy: translator.translate,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('mi', {
+        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
+            '_'
+        ),
+        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
+            '_'
+        ),
+        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
+        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
+        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
+        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
+        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
+        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
+        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [i] HH:mm',
+            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
+        },
+        calendar: {
+            sameDay: '[i teie mahana, i] LT',
+            nextDay: '[apopo i] LT',
+            nextWeek: 'dddd [i] LT',
+            lastDay: '[inanahi i] LT',
+            lastWeek: 'dddd [whakamutunga i] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'i roto i %s',
+            past: '%s i mua',
+            s: 'te hēkona ruarua',
+            ss: '%d hēkona',
+            m: 'he meneti',
+            mm: '%d meneti',
+            h: 'te haora',
+            hh: '%d haora',
+            d: 'he ra',
+            dd: '%d ra',
+            M: 'he marama',
+            MM: '%d marama',
+            y: 'he tau',
+            yy: '%d tau',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('mk', {
+        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
+            '_'
+        ),
+        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
+        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
+            '_'
+        ),
+        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
+        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'D.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY H:mm',
+            LLLL: 'dddd, D MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[Денес во] LT',
+            nextDay: '[Утре во] LT',
+            nextWeek: '[Во] dddd [во] LT',
+            lastDay: '[Вчера во] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                    case 6:
+                        return '[Изминатата] dddd [во] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[Изминатиот] dddd [во] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'за %s',
+            past: 'пред %s',
+            s: 'неколку секунди',
+            ss: '%d секунди',
+            m: 'една минута',
+            mm: '%d минути',
+            h: 'еден час',
+            hh: '%d часа',
+            d: 'еден ден',
+            dd: '%d дена',
+            M: 'еден месец',
+            MM: '%d месеци',
+            y: 'една година',
+            yy: '%d години',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
+        ordinal: function (number) {
+            var lastDigit = number % 10,
+                last2Digits = number % 100;
+            if (number === 0) {
+                return number + '-ев';
+            } else if (last2Digits === 0) {
+                return number + '-ен';
+            } else if (last2Digits > 10 && last2Digits < 20) {
+                return number + '-ти';
+            } else if (lastDigit === 1) {
+                return number + '-ви';
+            } else if (lastDigit === 2) {
+                return number + '-ри';
+            } else if (lastDigit === 7 || lastDigit === 8) {
+                return number + '-ми';
+            } else {
+                return number + '-ти';
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ml', {
+        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
+            '_'
+        ),
+        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
+            '_'
+        ),
+        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
+        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm -നു',
+            LTS: 'A h:mm:ss -നു',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm -നു',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
+        },
+        calendar: {
+            sameDay: '[ഇന്ന്] LT',
+            nextDay: '[നാളെ] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[ഇന്നലെ] LT',
+            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s കഴിഞ്ഞ്',
+            past: '%s മുൻപ്',
+            s: 'അൽപ നിമിഷങ്ങൾ',
+            ss: '%d സെക്കൻഡ്',
+            m: 'ഒരു മിനിറ്റ്',
+            mm: '%d മിനിറ്റ്',
+            h: 'ഒരു മണിക്കൂർ',
+            hh: '%d മണിക്കൂർ',
+            d: 'ഒരു ദിവസം',
+            dd: '%d ദിവസം',
+            M: 'ഒരു മാസം',
+            MM: '%d മാസം',
+            y: 'ഒരു വർഷം',
+            yy: '%d വർഷം',
+        },
+        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (
+                (meridiem === 'രാത്രി' && hour >= 4) ||
+                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
+                meridiem === 'വൈകുന്നേരം'
+            ) {
+                return hour + 12;
+            } else {
+                return hour;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'രാത്രി';
+            } else if (hour < 12) {
+                return 'രാവിലെ';
+            } else if (hour < 17) {
+                return 'ഉച്ച കഴിഞ്ഞ്';
+            } else if (hour < 20) {
+                return 'വൈകുന്നേരം';
+            } else {
+                return 'രാത്രി';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function translate$7(number, withoutSuffix, key, isFuture) {
+        switch (key) {
+            case 's':
+                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
+            case 'ss':
+                return number + (withoutSuffix ? ' секунд' : ' секундын');
+            case 'm':
+            case 'mm':
+                return number + (withoutSuffix ? ' минут' : ' минутын');
+            case 'h':
+            case 'hh':
+                return number + (withoutSuffix ? ' цаг' : ' цагийн');
+            case 'd':
+            case 'dd':
+                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
+            case 'M':
+            case 'MM':
+                return number + (withoutSuffix ? ' сар' : ' сарын');
+            case 'y':
+            case 'yy':
+                return number + (withoutSuffix ? ' жил' : ' жилийн');
+            default:
+                return number;
+        }
+    }
+
+    moment.defineLocale('mn', {
+        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
+            '_'
+        ),
+        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
+        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
+        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'YYYY оны MMMMын D',
+            LLL: 'YYYY оны MMMMын D HH:mm',
+            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
+        },
+        meridiemParse: /ҮӨ|ҮХ/i,
+        isPM: function (input) {
+            return input === 'ҮХ';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ҮӨ';
+            } else {
+                return 'ҮХ';
+            }
+        },
+        calendar: {
+            sameDay: '[Өнөөдөр] LT',
+            nextDay: '[Маргааш] LT',
+            nextWeek: '[Ирэх] dddd LT',
+            lastDay: '[Өчигдөр] LT',
+            lastWeek: '[Өнгөрсөн] dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s дараа',
+            past: '%s өмнө',
+            s: translate$7,
+            ss: translate$7,
+            m: translate$7,
+            mm: translate$7,
+            h: translate$7,
+            hh: translate$7,
+            d: translate$7,
+            dd: translate$7,
+            M: translate$7,
+            MM: translate$7,
+            y: translate$7,
+            yy: translate$7,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + ' өдөр';
+                default:
+                    return number;
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$b = {
+            '1': '१',
+            '2': '२',
+            '3': '३',
+            '4': '४',
+            '5': '५',
+            '6': '६',
+            '7': '७',
+            '8': '८',
+            '9': '९',
+            '0': '०',
+        },
+        numberMap$a = {
+            '१': '1',
+            '२': '2',
+            '३': '3',
+            '४': '4',
+            '५': '5',
+            '६': '6',
+            '७': '7',
+            '८': '8',
+            '९': '9',
+            '०': '0',
+        };
+
+    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
+        var output = '';
+        if (withoutSuffix) {
+            switch (string) {
+                case 's':
+                    output = 'काही सेकंद';
+                    break;
+                case 'ss':
+                    output = '%d सेकंद';
+                    break;
+                case 'm':
+                    output = 'एक मिनिट';
+                    break;
+                case 'mm':
+                    output = '%d मिनिटे';
+                    break;
+                case 'h':
+                    output = 'एक तास';
+                    break;
+                case 'hh':
+                    output = '%d तास';
+                    break;
+                case 'd':
+                    output = 'एक दिवस';
+                    break;
+                case 'dd':
+                    output = '%d दिवस';
+                    break;
+                case 'M':
+                    output = 'एक महिना';
+                    break;
+                case 'MM':
+                    output = '%d महिने';
+                    break;
+                case 'y':
+                    output = 'एक वर्ष';
+                    break;
+                case 'yy':
+                    output = '%d वर्षे';
+                    break;
+            }
+        } else {
+            switch (string) {
+                case 's':
+                    output = 'काही सेकंदां';
+                    break;
+                case 'ss':
+                    output = '%d सेकंदां';
+                    break;
+                case 'm':
+                    output = 'एका मिनिटा';
+                    break;
+                case 'mm':
+                    output = '%d मिनिटां';
+                    break;
+                case 'h':
+                    output = 'एका तासा';
+                    break;
+                case 'hh':
+                    output = '%d तासां';
+                    break;
+                case 'd':
+                    output = 'एका दिवसा';
+                    break;
+                case 'dd':
+                    output = '%d दिवसां';
+                    break;
+                case 'M':
+                    output = 'एका महिन्या';
+                    break;
+                case 'MM':
+                    output = '%d महिन्यां';
+                    break;
+                case 'y':
+                    output = 'एका वर्षा';
+                    break;
+                case 'yy':
+                    output = '%d वर्षां';
+                    break;
+            }
+        }
+        return output.replace(/%d/i, number);
+    }
+
+    moment.defineLocale('mr', {
+        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
+            '_'
+        ),
+        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
+        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
+        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm वाजता',
+            LTS: 'A h:mm:ss वाजता',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm वाजता',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
+        },
+        calendar: {
+            sameDay: '[आज] LT',
+            nextDay: '[उद्या] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[काल] LT',
+            lastWeek: '[मागील] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%sमध्ये',
+            past: '%sपूर्वी',
+            s: relativeTimeMr,
+            ss: relativeTimeMr,
+            m: relativeTimeMr,
+            mm: relativeTimeMr,
+            h: relativeTimeMr,
+            hh: relativeTimeMr,
+            d: relativeTimeMr,
+            dd: relativeTimeMr,
+            M: relativeTimeMr,
+            MM: relativeTimeMr,
+            y: relativeTimeMr,
+            yy: relativeTimeMr,
+        },
+        preparse: function (string) {
+            return string.replace(/[१२३४५६७८९०]/g, function (match) {
+                return numberMap$a[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$b[match];
+            });
+        },
+        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
+                return hour;
+            } else if (
+                meridiem === 'दुपारी' ||
+                meridiem === 'सायंकाळी' ||
+                meridiem === 'रात्री'
+            ) {
+                return hour >= 12 ? hour : hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour >= 0 && hour < 6) {
+                return 'पहाटे';
+            } else if (hour < 12) {
+                return 'सकाळी';
+            } else if (hour < 17) {
+                return 'दुपारी';
+            } else if (hour < 20) {
+                return 'सायंकाळी';
+            } else {
+                return 'रात्री';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ms-my', {
+        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
+        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
+        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
+        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [pukul] HH.mm',
+            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
+        },
+        meridiemParse: /pagi|tengahari|petang|malam/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'pagi') {
+                return hour;
+            } else if (meridiem === 'tengahari') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'petang' || meridiem === 'malam') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'pagi';
+            } else if (hours < 15) {
+                return 'tengahari';
+            } else if (hours < 19) {
+                return 'petang';
+            } else {
+                return 'malam';
+            }
+        },
+        calendar: {
+            sameDay: '[Hari ini pukul] LT',
+            nextDay: '[Esok pukul] LT',
+            nextWeek: 'dddd [pukul] LT',
+            lastDay: '[Kelmarin pukul] LT',
+            lastWeek: 'dddd [lepas pukul] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dalam %s',
+            past: '%s yang lepas',
+            s: 'beberapa saat',
+            ss: '%d saat',
+            m: 'seminit',
+            mm: '%d minit',
+            h: 'sejam',
+            hh: '%d jam',
+            d: 'sehari',
+            dd: '%d hari',
+            M: 'sebulan',
+            MM: '%d bulan',
+            y: 'setahun',
+            yy: '%d tahun',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ms', {
+        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
+        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
+        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
+        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [pukul] HH.mm',
+            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
+        },
+        meridiemParse: /pagi|tengahari|petang|malam/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'pagi') {
+                return hour;
+            } else if (meridiem === 'tengahari') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'petang' || meridiem === 'malam') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'pagi';
+            } else if (hours < 15) {
+                return 'tengahari';
+            } else if (hours < 19) {
+                return 'petang';
+            } else {
+                return 'malam';
+            }
+        },
+        calendar: {
+            sameDay: '[Hari ini pukul] LT',
+            nextDay: '[Esok pukul] LT',
+            nextWeek: 'dddd [pukul] LT',
+            lastDay: '[Kelmarin pukul] LT',
+            lastWeek: 'dddd [lepas pukul] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dalam %s',
+            past: '%s yang lepas',
+            s: 'beberapa saat',
+            ss: '%d saat',
+            m: 'seminit',
+            mm: '%d minit',
+            h: 'sejam',
+            hh: '%d jam',
+            d: 'sehari',
+            dd: '%d hari',
+            M: 'sebulan',
+            MM: '%d bulan',
+            y: 'setahun',
+            yy: '%d tahun',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('mt', {
+        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
+        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
+            '_'
+        ),
+        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
+        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Illum fil-]LT',
+            nextDay: '[Għada fil-]LT',
+            nextWeek: 'dddd [fil-]LT',
+            lastDay: '[Il-bieraħ fil-]LT',
+            lastWeek: 'dddd [li għadda] [fil-]LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'f’ %s',
+            past: '%s ilu',
+            s: 'ftit sekondi',
+            ss: '%d sekondi',
+            m: 'minuta',
+            mm: '%d minuti',
+            h: 'siegħa',
+            hh: '%d siegħat',
+            d: 'ġurnata',
+            dd: '%d ġranet',
+            M: 'xahar',
+            MM: '%d xhur',
+            y: 'sena',
+            yy: '%d sni',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$c = {
+            '1': '၁',
+            '2': '၂',
+            '3': '၃',
+            '4': '၄',
+            '5': '၅',
+            '6': '၆',
+            '7': '၇',
+            '8': '၈',
+            '9': '၉',
+            '0': '၀',
+        },
+        numberMap$b = {
+            '၁': '1',
+            '၂': '2',
+            '၃': '3',
+            '၄': '4',
+            '၅': '5',
+            '၆': '6',
+            '၇': '7',
+            '၈': '8',
+            '၉': '9',
+            '၀': '0',
+        };
+
+    moment.defineLocale('my', {
+        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
+            '_'
+        ),
+        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
+        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
+            '_'
+        ),
+        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[ယနေ.] LT [မှာ]',
+            nextDay: '[မနက်ဖြန်] LT [မှာ]',
+            nextWeek: 'dddd LT [မှာ]',
+            lastDay: '[မနေ.က] LT [မှာ]',
+            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'လာမည့် %s မှာ',
+            past: 'လွန်ခဲ့သော %s က',
+            s: 'စက္ကန်.အနည်းငယ်',
+            ss: '%d စက္ကန့်',
+            m: 'တစ်မိနစ်',
+            mm: '%d မိနစ်',
+            h: 'တစ်နာရီ',
+            hh: '%d နာရီ',
+            d: 'တစ်ရက်',
+            dd: '%d ရက်',
+            M: 'တစ်လ',
+            MM: '%d လ',
+            y: 'တစ်နှစ်',
+            yy: '%d နှစ်',
+        },
+        preparse: function (string) {
+            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
+                return numberMap$b[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$c[match];
+            });
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('nb', {
+        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
+        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
+        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY [kl.] HH:mm',
+            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
+        },
+        calendar: {
+            sameDay: '[i dag kl.] LT',
+            nextDay: '[i morgen kl.] LT',
+            nextWeek: 'dddd [kl.] LT',
+            lastDay: '[i går kl.] LT',
+            lastWeek: '[forrige] dddd [kl.] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'om %s',
+            past: '%s siden',
+            s: 'noen sekunder',
+            ss: '%d sekunder',
+            m: 'ett minutt',
+            mm: '%d minutter',
+            h: 'en time',
+            hh: '%d timer',
+            d: 'en dag',
+            dd: '%d dager',
+            M: 'en måned',
+            MM: '%d måneder',
+            y: 'ett år',
+            yy: '%d år',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$d = {
+            '1': '१',
+            '2': '२',
+            '3': '३',
+            '4': '४',
+            '5': '५',
+            '6': '६',
+            '7': '७',
+            '8': '८',
+            '9': '९',
+            '0': '०',
+        },
+        numberMap$c = {
+            '१': '1',
+            '२': '2',
+            '३': '3',
+            '४': '4',
+            '५': '5',
+            '६': '6',
+            '७': '7',
+            '८': '8',
+            '९': '9',
+            '०': '0',
+        };
+
+    moment.defineLocale('ne', {
+        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
+            '_'
+        ),
+        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
+            '_'
+        ),
+        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
+        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'Aको h:mm बजे',
+            LTS: 'Aको h:mm:ss बजे',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, Aको h:mm बजे',
+            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
+        },
+        preparse: function (string) {
+            return string.replace(/[१२३४५६७८९०]/g, function (match) {
+                return numberMap$c[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$d[match];
+            });
+        },
+        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'राति') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'बिहान') {
+                return hour;
+            } else if (meridiem === 'दिउँसो') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'साँझ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 3) {
+                return 'राति';
+            } else if (hour < 12) {
+                return 'बिहान';
+            } else if (hour < 16) {
+                return 'दिउँसो';
+            } else if (hour < 20) {
+                return 'साँझ';
+            } else {
+                return 'राति';
+            }
+        },
+        calendar: {
+            sameDay: '[आज] LT',
+            nextDay: '[भोलि] LT',
+            nextWeek: '[आउँदो] dddd[,] LT',
+            lastDay: '[हिजो] LT',
+            lastWeek: '[गएको] dddd[,] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%sमा',
+            past: '%s अगाडि',
+            s: 'केही क्षण',
+            ss: '%d सेकेण्ड',
+            m: 'एक मिनेट',
+            mm: '%d मिनेट',
+            h: 'एक घण्टा',
+            hh: '%d घण्टा',
+            d: 'एक दिन',
+            dd: '%d दिन',
+            M: 'एक महिना',
+            MM: '%d महिना',
+            y: 'एक बर्ष',
+            yy: '%d बर्ष',
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
+            '_'
+        ),
+        monthsParse$6 = [
+            /^jan/i,
+            /^feb/i,
+            /^maart|mrt.?$/i,
+            /^apr/i,
+            /^mei$/i,
+            /^jun[i.]?$/i,
+            /^jul[i.]?$/i,
+            /^aug/i,
+            /^sep/i,
+            /^okt/i,
+            /^nov/i,
+            /^dec/i,
+        ],
+        monthsRegex$6 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
+
+    moment.defineLocale('nl-be', {
+        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortWithDots$1;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShortWithoutDots$1[m.month()];
+            } else {
+                return monthsShortWithDots$1[m.month()];
+            }
+        },
+
+        monthsRegex: monthsRegex$6,
+        monthsShortRegex: monthsRegex$6,
+        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
+        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
+
+        monthsParse: monthsParse$6,
+        longMonthsParse: monthsParse$6,
+        shortMonthsParse: monthsParse$6,
+
+        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
+            '_'
+        ),
+        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
+        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[vandaag om] LT',
+            nextDay: '[morgen om] LT',
+            nextWeek: 'dddd [om] LT',
+            lastDay: '[gisteren om] LT',
+            lastWeek: '[afgelopen] dddd [om] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'over %s',
+            past: '%s geleden',
+            s: 'een paar seconden',
+            ss: '%d seconden',
+            m: 'één minuut',
+            mm: '%d minuten',
+            h: 'één uur',
+            hh: '%d uur',
+            d: 'één dag',
+            dd: '%d dagen',
+            M: 'één maand',
+            MM: '%d maanden',
+            y: 'één jaar',
+            yy: '%d jaar',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
+        ordinal: function (number) {
+            return (
+                number +
+                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
+            );
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
+            '_'
+        ),
+        monthsParse$7 = [
+            /^jan/i,
+            /^feb/i,
+            /^maart|mrt.?$/i,
+            /^apr/i,
+            /^mei$/i,
+            /^jun[i.]?$/i,
+            /^jul[i.]?$/i,
+            /^aug/i,
+            /^sep/i,
+            /^okt/i,
+            /^nov/i,
+            /^dec/i,
+        ],
+        monthsRegex$7 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
+
+    moment.defineLocale('nl', {
+        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortWithDots$2;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShortWithoutDots$2[m.month()];
+            } else {
+                return monthsShortWithDots$2[m.month()];
+            }
+        },
+
+        monthsRegex: monthsRegex$7,
+        monthsShortRegex: monthsRegex$7,
+        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
+        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
+
+        monthsParse: monthsParse$7,
+        longMonthsParse: monthsParse$7,
+        shortMonthsParse: monthsParse$7,
+
+        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
+            '_'
+        ),
+        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
+        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD-MM-YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[vandaag om] LT',
+            nextDay: '[morgen om] LT',
+            nextWeek: 'dddd [om] LT',
+            lastDay: '[gisteren om] LT',
+            lastWeek: '[afgelopen] dddd [om] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'over %s',
+            past: '%s geleden',
+            s: 'een paar seconden',
+            ss: '%d seconden',
+            m: 'één minuut',
+            mm: '%d minuten',
+            h: 'één uur',
+            hh: '%d uur',
+            d: 'één dag',
+            dd: '%d dagen',
+            M: 'één maand',
+            MM: '%d maanden',
+            y: 'één jaar',
+            yy: '%d jaar',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
+        ordinal: function (number) {
+            return (
+                number +
+                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
+            );
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('nn', {
+        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
+        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
+        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY [kl.] H:mm',
+            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
+        },
+        calendar: {
+            sameDay: '[I dag klokka] LT',
+            nextDay: '[I morgon klokka] LT',
+            nextWeek: 'dddd [klokka] LT',
+            lastDay: '[I går klokka] LT',
+            lastWeek: '[Føregåande] dddd [klokka] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'om %s',
+            past: '%s sidan',
+            s: 'nokre sekund',
+            ss: '%d sekund',
+            m: 'eit minutt',
+            mm: '%d minutt',
+            h: 'ein time',
+            hh: '%d timar',
+            d: 'ein dag',
+            dd: '%d dagar',
+            M: 'ein månad',
+            MM: '%d månader',
+            y: 'eit år',
+            yy: '%d år',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('oc-lnc', {
+        months: {
+            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
+                '_'
+            ),
+            format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
+                '_'
+            ),
+            isFormat: /D[oD]?(\s)+MMMM/,
+        },
+        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
+            '_'
+        ),
+        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
+        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM [de] YYYY',
+            ll: 'D MMM YYYY',
+            LLL: 'D MMMM [de] YYYY [a] H:mm',
+            lll: 'D MMM YYYY, H:mm',
+            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
+            llll: 'ddd D MMM YYYY, H:mm',
+        },
+        calendar: {
+            sameDay: '[uèi a] LT',
+            nextDay: '[deman a] LT',
+            nextWeek: 'dddd [a] LT',
+            lastDay: '[ièr a] LT',
+            lastWeek: 'dddd [passat a] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: "d'aquí %s",
+            past: 'fa %s',
+            s: 'unas segondas',
+            ss: '%d segondas',
+            m: 'una minuta',
+            mm: '%d minutas',
+            h: 'una ora',
+            hh: '%d oras',
+            d: 'un jorn',
+            dd: '%d jorns',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un an',
+            yy: '%d ans',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
+        ordinal: function (number, period) {
+            var output =
+                number === 1
+                    ? 'r'
+                    : number === 2
+                    ? 'n'
+                    : number === 3
+                    ? 'r'
+                    : number === 4
+                    ? 't'
+                    : 'è';
+            if (period === 'w' || period === 'W') {
+                output = 'a';
+            }
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4,
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$e = {
+            '1': '੧',
+            '2': '੨',
+            '3': '੩',
+            '4': '੪',
+            '5': '੫',
+            '6': '੬',
+            '7': '੭',
+            '8': '੮',
+            '9': '੯',
+            '0': '੦',
+        },
+        numberMap$d = {
+            '੧': '1',
+            '੨': '2',
+            '੩': '3',
+            '੪': '4',
+            '੫': '5',
+            '੬': '6',
+            '੭': '7',
+            '੮': '8',
+            '੯': '9',
+            '੦': '0',
+        };
+
+    moment.defineLocale('pa-in', {
+        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
+        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
+            '_'
+        ),
+        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
+            '_'
+        ),
+        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
+            '_'
+        ),
+        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
+        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm ਵਜੇ',
+            LTS: 'A h:mm:ss ਵਜੇ',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
+        },
+        calendar: {
+            sameDay: '[ਅਜ] LT',
+            nextDay: '[ਕਲ] LT',
+            nextWeek: '[ਅਗਲਾ] dddd, LT',
+            lastDay: '[ਕਲ] LT',
+            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ਵਿੱਚ',
+            past: '%s ਪਿਛਲੇ',
+            s: 'ਕੁਝ ਸਕਿੰਟ',
+            ss: '%d ਸਕਿੰਟ',
+            m: 'ਇਕ ਮਿੰਟ',
+            mm: '%d ਮਿੰਟ',
+            h: 'ਇੱਕ ਘੰਟਾ',
+            hh: '%d ਘੰਟੇ',
+            d: 'ਇੱਕ ਦਿਨ',
+            dd: '%d ਦਿਨ',
+            M: 'ਇੱਕ ਮਹੀਨਾ',
+            MM: '%d ਮਹੀਨੇ',
+            y: 'ਇੱਕ ਸਾਲ',
+            yy: '%d ਸਾਲ',
+        },
+        preparse: function (string) {
+            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
+                return numberMap$d[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$e[match];
+            });
+        },
+        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
+        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
+        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'ਰਾਤ') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'ਸਵੇਰ') {
+                return hour;
+            } else if (meridiem === 'ਦੁਪਹਿਰ') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'ਸ਼ਾਮ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ਰਾਤ';
+            } else if (hour < 10) {
+                return 'ਸਵੇਰ';
+            } else if (hour < 17) {
+                return 'ਦੁਪਹਿਰ';
+            } else if (hour < 20) {
+                return 'ਸ਼ਾਮ';
+            } else {
+                return 'ਰਾਤ';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
+            '_'
+        ),
+        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
+            '_'
+        );
+    function plural$3(n) {
+        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
+    }
+    function translate$8(number, withoutSuffix, key) {
+        var result = number + ' ';
+        switch (key) {
+            case 'ss':
+                return result + (plural$3(number) ? 'sekundy' : 'sekund');
+            case 'm':
+                return withoutSuffix ? 'minuta' : 'minutę';
+            case 'mm':
+                return result + (plural$3(number) ? 'minuty' : 'minut');
+            case 'h':
+                return withoutSuffix ? 'godzina' : 'godzinę';
+            case 'hh':
+                return result + (plural$3(number) ? 'godziny' : 'godzin');
+            case 'MM':
+                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
+            case 'yy':
+                return result + (plural$3(number) ? 'lata' : 'lat');
+        }
+    }
+
+    moment.defineLocale('pl', {
+        months: function (momentToFormat, format) {
+            if (!momentToFormat) {
+                return monthsNominative;
+            } else if (format === '') {
+                // Hack: if format empty we know this is used to generate
+                // RegExp by moment. Give then back both valid forms of months
+                // in RegExp ready format.
+                return (
+                    '(' +
+                    monthsSubjective[momentToFormat.month()] +
+                    '|' +
+                    monthsNominative[momentToFormat.month()] +
+                    ')'
+                );
+            } else if (/D MMMM/.test(format)) {
+                return monthsSubjective[momentToFormat.month()];
+            } else {
+                return monthsNominative[momentToFormat.month()];
+            }
+        },
+        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
+        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
+        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Dziś o] LT',
+            nextDay: '[Jutro o] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[W niedzielę o] LT';
+
+                    case 2:
+                        return '[We wtorek o] LT';
+
+                    case 3:
+                        return '[W środę o] LT';
+
+                    case 6:
+                        return '[W sobotę o] LT';
+
+                    default:
+                        return '[W] dddd [o] LT';
+                }
+            },
+            lastDay: '[Wczoraj o] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[W zeszłą niedzielę o] LT';
+                    case 3:
+                        return '[W zeszłą środę o] LT';
+                    case 6:
+                        return '[W zeszłą sobotę o] LT';
+                    default:
+                        return '[W zeszły] dddd [o] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: '%s temu',
+            s: 'kilka sekund',
+            ss: translate$8,
+            m: translate$8,
+            mm: translate$8,
+            h: translate$8,
+            hh: translate$8,
+            d: '1 dzień',
+            dd: '%d dni',
+            M: 'miesiąc',
+            MM: translate$8,
+            y: 'rok',
+            yy: translate$8,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('pt-br', {
+        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
+            '_'
+        ),
+        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
+        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
+            '_'
+        ),
+        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
+        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
+        },
+        calendar: {
+            sameDay: '[Hoje às] LT',
+            nextDay: '[Amanhã às] LT',
+            nextWeek: 'dddd [às] LT',
+            lastDay: '[Ontem às] LT',
+            lastWeek: function () {
+                return this.day() === 0 || this.day() === 6
+                    ? '[Último] dddd [às] LT' // Saturday + Sunday
+                    : '[Última] dddd [às] LT'; // Monday - Friday
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'em %s',
+            past: 'há %s',
+            s: 'poucos segundos',
+            ss: '%d segundos',
+            m: 'um minuto',
+            mm: '%d minutos',
+            h: 'uma hora',
+            hh: '%d horas',
+            d: 'um dia',
+            dd: '%d dias',
+            M: 'um mês',
+            MM: '%d meses',
+            y: 'um ano',
+            yy: '%d anos',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('pt', {
+        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
+            '_'
+        ),
+        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
+        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
+            '_'
+        ),
+        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
+        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY HH:mm',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Hoje às] LT',
+            nextDay: '[Amanhã às] LT',
+            nextWeek: 'dddd [às] LT',
+            lastDay: '[Ontem às] LT',
+            lastWeek: function () {
+                return this.day() === 0 || this.day() === 6
+                    ? '[Último] dddd [às] LT' // Saturday + Sunday
+                    : '[Última] dddd [às] LT'; // Monday - Friday
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'em %s',
+            past: 'há %s',
+            s: 'segundos',
+            ss: '%d segundos',
+            m: 'um minuto',
+            mm: '%d minutos',
+            h: 'uma hora',
+            hh: '%d horas',
+            d: 'um dia',
+            dd: '%d dias',
+            M: 'um mês',
+            MM: '%d meses',
+            y: 'um ano',
+            yy: '%d anos',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
+        var format = {
+                ss: 'secunde',
+                mm: 'minute',
+                hh: 'ore',
+                dd: 'zile',
+                MM: 'luni',
+                yy: 'ani',
+            },
+            separator = ' ';
+        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
+            separator = ' de ';
+        }
+        return number + separator + format[key];
+    }
+
+    moment.defineLocale('ro', {
+        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
+            '_'
+        ),
+        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
+        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
+        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY H:mm',
+            LLLL: 'dddd, D MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[azi la] LT',
+            nextDay: '[mâine la] LT',
+            nextWeek: 'dddd [la] LT',
+            lastDay: '[ieri la] LT',
+            lastWeek: '[fosta] dddd [la] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'peste %s',
+            past: '%s în urmă',
+            s: 'câteva secunde',
+            ss: relativeTimeWithPlural$2,
+            m: 'un minut',
+            mm: relativeTimeWithPlural$2,
+            h: 'o oră',
+            hh: relativeTimeWithPlural$2,
+            d: 'o zi',
+            dd: relativeTimeWithPlural$2,
+            M: 'o lună',
+            MM: relativeTimeWithPlural$2,
+            y: 'un an',
+            yy: relativeTimeWithPlural$2,
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function plural$4(word, num) {
+        var forms = word.split('_');
+        return num % 10 === 1 && num % 100 !== 11
+            ? forms[0]
+            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
+            ? forms[1]
+            : forms[2];
+    }
+    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
+        var format = {
+            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
+            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
+            hh: 'час_часа_часов',
+            dd: 'день_дня_дней',
+            MM: 'месяц_месяца_месяцев',
+            yy: 'год_года_лет',
+        };
+        if (key === 'm') {
+            return withoutSuffix ? 'минута' : 'минуту';
+        } else {
+            return number + ' ' + plural$4(format[key], +number);
+        }
+    }
+    var monthsParse$8 = [
+        /^янв/i,
+        /^фев/i,
+        /^мар/i,
+        /^апр/i,
+        /^ма[йя]/i,
+        /^июн/i,
+        /^июл/i,
+        /^авг/i,
+        /^сен/i,
+        /^окт/i,
+        /^ноя/i,
+        /^дек/i,
+    ];
+
+    // http://new.gramota.ru/spravka/rules/139-prop : § 103
+    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
+    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
+    moment.defineLocale('ru', {
+        months: {
+            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
+                '_'
+            ),
+            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
+                '_'
+            ),
+        },
+        monthsShort: {
+            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
+            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
+                '_'
+            ),
+            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
+                '_'
+            ),
+        },
+        weekdays: {
+            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
+                '_'
+            ),
+            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
+                '_'
+            ),
+            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
+        },
+        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
+        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
+        monthsParse: monthsParse$8,
+        longMonthsParse: monthsParse$8,
+        shortMonthsParse: monthsParse$8,
+
+        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
+        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
+
+        // копия предыдущего
+        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
+
+        // полные названия с падежами
+        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
+
+        // Выражение, которое соответствует только сокращённым формам
+        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY г.',
+            LLL: 'D MMMM YYYY г., H:mm',
+            LLLL: 'dddd, D MMMM YYYY г., H:mm',
+        },
+        calendar: {
+            sameDay: '[Сегодня, в] LT',
+            nextDay: '[Завтра, в] LT',
+            lastDay: '[Вчера, в] LT',
+            nextWeek: function (now) {
+                if (now.week() !== this.week()) {
+                    switch (this.day()) {
+                        case 0:
+                            return '[В следующее] dddd, [в] LT';
+                        case 1:
+                        case 2:
+                        case 4:
+                            return '[В следующий] dddd, [в] LT';
+                        case 3:
+                        case 5:
+                        case 6:
+                            return '[В следующую] dddd, [в] LT';
+                    }
+                } else {
+                    if (this.day() === 2) {
+                        return '[Во] dddd, [в] LT';
+                    } else {
+                        return '[В] dddd, [в] LT';
+                    }
+                }
+            },
+            lastWeek: function (now) {
+                if (now.week() !== this.week()) {
+                    switch (this.day()) {
+                        case 0:
+                            return '[В прошлое] dddd, [в] LT';
+                        case 1:
+                        case 2:
+                        case 4:
+                            return '[В прошлый] dddd, [в] LT';
+                        case 3:
+                        case 5:
+                        case 6:
+                            return '[В прошлую] dddd, [в] LT';
+                    }
+                } else {
+                    if (this.day() === 2) {
+                        return '[Во] dddd, [в] LT';
+                    } else {
+                        return '[В] dddd, [в] LT';
+                    }
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'через %s',
+            past: '%s назад',
+            s: 'несколько секунд',
+            ss: relativeTimeWithPlural$3,
+            m: relativeTimeWithPlural$3,
+            mm: relativeTimeWithPlural$3,
+            h: 'час',
+            hh: relativeTimeWithPlural$3,
+            d: 'день',
+            dd: relativeTimeWithPlural$3,
+            M: 'месяц',
+            MM: relativeTimeWithPlural$3,
+            y: 'год',
+            yy: relativeTimeWithPlural$3,
+        },
+        meridiemParse: /ночи|утра|дня|вечера/i,
+        isPM: function (input) {
+            return /^(дня|вечера)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ночи';
+            } else if (hour < 12) {
+                return 'утра';
+            } else if (hour < 17) {
+                return 'дня';
+            } else {
+                return 'вечера';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'M':
+                case 'd':
+                case 'DDD':
+                    return number + '-й';
+                case 'D':
+                    return number + '-го';
+                case 'w':
+                case 'W':
+                    return number + '-я';
+                default:
+                    return number;
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$8 = [
+            'جنوري',
+            'فيبروري',
+            'مارچ',
+            'اپريل',
+            'مئي',
+            'جون',
+            'جولاءِ',
+            'آگسٽ',
+            'سيپٽمبر',
+            'آڪٽوبر',
+            'نومبر',
+            'ڊسمبر',
+        ],
+        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
+
+    moment.defineLocale('sd', {
+        months: months$8,
+        monthsShort: months$8,
+        weekdays: days,
+        weekdaysShort: days,
+        weekdaysMin: days,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd، D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /صبح|شام/,
+        isPM: function (input) {
+            return 'شام' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'صبح';
+            }
+            return 'شام';
+        },
+        calendar: {
+            sameDay: '[اڄ] LT',
+            nextDay: '[سڀاڻي] LT',
+            nextWeek: 'dddd [اڳين هفتي تي] LT',
+            lastDay: '[ڪالهه] LT',
+            lastWeek: '[گزريل هفتي] dddd [تي] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s پوء',
+            past: '%s اڳ',
+            s: 'چند سيڪنڊ',
+            ss: '%d سيڪنڊ',
+            m: 'هڪ منٽ',
+            mm: '%d منٽ',
+            h: 'هڪ ڪلاڪ',
+            hh: '%d ڪلاڪ',
+            d: 'هڪ ڏينهن',
+            dd: '%d ڏينهن',
+            M: 'هڪ مهينو',
+            MM: '%d مهينا',
+            y: 'هڪ سال',
+            yy: '%d سال',
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('se', {
+        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
+            '_'
+        ),
+        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(
+            '_'
+        ),
+        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
+            '_'
+        ),
+        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
+        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'MMMM D. [b.] YYYY',
+            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
+            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
+        },
+        calendar: {
+            sameDay: '[otne ti] LT',
+            nextDay: '[ihttin ti] LT',
+            nextWeek: 'dddd [ti] LT',
+            lastDay: '[ikte ti] LT',
+            lastWeek: '[ovddit] dddd [ti] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s geažes',
+            past: 'maŋit %s',
+            s: 'moadde sekunddat',
+            ss: '%d sekunddat',
+            m: 'okta minuhta',
+            mm: '%d minuhtat',
+            h: 'okta diimmu',
+            hh: '%d diimmut',
+            d: 'okta beaivi',
+            dd: '%d beaivvit',
+            M: 'okta mánnu',
+            MM: '%d mánut',
+            y: 'okta jahki',
+            yy: '%d jagit',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    /*jshint -W100*/
+    moment.defineLocale('si', {
+        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
+            '_'
+        ),
+        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
+            '_'
+        ),
+        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
+            '_'
+        ),
+        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
+        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'a h:mm',
+            LTS: 'a h:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY MMMM D',
+            LLL: 'YYYY MMMM D, a h:mm',
+            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
+        },
+        calendar: {
+            sameDay: '[අද] LT[ට]',
+            nextDay: '[හෙට] LT[ට]',
+            nextWeek: 'dddd LT[ට]',
+            lastDay: '[ඊයේ] LT[ට]',
+            lastWeek: '[පසුගිය] dddd LT[ට]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%sකින්',
+            past: '%sකට පෙර',
+            s: 'තත්පර කිහිපය',
+            ss: 'තත්පර %d',
+            m: 'මිනිත්තුව',
+            mm: 'මිනිත්තු %d',
+            h: 'පැය',
+            hh: 'පැය %d',
+            d: 'දිනය',
+            dd: 'දින %d',
+            M: 'මාසය',
+            MM: 'මාස %d',
+            y: 'වසර',
+            yy: 'වසර %d',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
+        ordinal: function (number) {
+            return number + ' වැනි';
+        },
+        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
+        isPM: function (input) {
+            return input === 'ප.ව.' || input === 'පස් වරු';
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours > 11) {
+                return isLower ? 'ප.ව.' : 'පස් වරු';
+            } else {
+                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$9 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
+            '_'
+        ),
+        monthsShort$6 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
+    function plural$5(n) {
+        return n > 1 && n < 5;
+    }
+    function translate$9(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        switch (key) {
+            case 's': // a few seconds / in a few seconds / a few seconds ago
+                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
+            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
+                } else {
+                    return result + 'sekundami';
+                }
+            case 'm': // a minute / in a minute / a minute ago
+                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
+            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'minúty' : 'minút');
+                } else {
+                    return result + 'minútami';
+                }
+            case 'h': // an hour / in an hour / an hour ago
+                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
+            case 'hh': // 9 hours / in 9 hours / 9 hours ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
+                } else {
+                    return result + 'hodinami';
+                }
+            case 'd': // a day / in a day / a day ago
+                return withoutSuffix || isFuture ? 'deň' : 'dňom';
+            case 'dd': // 9 days / in 9 days / 9 days ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'dni' : 'dní');
+                } else {
+                    return result + 'dňami';
+                }
+            case 'M': // a month / in a month / a month ago
+                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
+            case 'MM': // 9 months / in 9 months / 9 months ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
+                } else {
+                    return result + 'mesiacmi';
+                }
+            case 'y': // a year / in a year / a year ago
+                return withoutSuffix || isFuture ? 'rok' : 'rokom';
+            case 'yy': // 9 years / in 9 years / 9 years ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'roky' : 'rokov');
+                } else {
+                    return result + 'rokmi';
+                }
+        }
+    }
+
+    moment.defineLocale('sk', {
+        months: months$9,
+        monthsShort: monthsShort$6,
+        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
+        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
+        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[dnes o] LT',
+            nextDay: '[zajtra o] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[v nedeľu o] LT';
+                    case 1:
+                    case 2:
+                        return '[v] dddd [o] LT';
+                    case 3:
+                        return '[v stredu o] LT';
+                    case 4:
+                        return '[vo štvrtok o] LT';
+                    case 5:
+                        return '[v piatok o] LT';
+                    case 6:
+                        return '[v sobotu o] LT';
+                }
+            },
+            lastDay: '[včera o] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[minulú nedeľu o] LT';
+                    case 1:
+                    case 2:
+                        return '[minulý] dddd [o] LT';
+                    case 3:
+                        return '[minulú stredu o] LT';
+                    case 4:
+                    case 5:
+                        return '[minulý] dddd [o] LT';
+                    case 6:
+                        return '[minulú sobotu o] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'pred %s',
+            s: translate$9,
+            ss: translate$9,
+            m: translate$9,
+            mm: translate$9,
+            h: translate$9,
+            hh: translate$9,
+            d: translate$9,
+            dd: translate$9,
+            M: translate$9,
+            MM: translate$9,
+            y: translate$9,
+            yy: translate$9,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        switch (key) {
+            case 's':
+                return withoutSuffix || isFuture
+                    ? 'nekaj sekund'
+                    : 'nekaj sekundami';
+            case 'ss':
+                if (number === 1) {
+                    result += withoutSuffix ? 'sekundo' : 'sekundi';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
+                } else {
+                    result += 'sekund';
+                }
+                return result;
+            case 'm':
+                return withoutSuffix ? 'ena minuta' : 'eno minuto';
+            case 'mm':
+                if (number === 1) {
+                    result += withoutSuffix ? 'minuta' : 'minuto';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
+                } else {
+                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
+                }
+                return result;
+            case 'h':
+                return withoutSuffix ? 'ena ura' : 'eno uro';
+            case 'hh':
+                if (number === 1) {
+                    result += withoutSuffix ? 'ura' : 'uro';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
+                } else {
+                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
+                }
+                return result;
+            case 'd':
+                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
+            case 'dd':
+                if (number === 1) {
+                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
+                } else {
+                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
+                }
+                return result;
+            case 'M':
+                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
+            case 'MM':
+                if (number === 1) {
+                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
+                } else {
+                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
+                }
+                return result;
+            case 'y':
+                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
+            case 'yy':
+                if (number === 1) {
+                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
+                } else {
+                    result += withoutSuffix || isFuture ? 'let' : 'leti';
+                }
+                return result;
+        }
+    }
+
+    moment.defineLocale('sl', {
+        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
+        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
+        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD. MM. YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danes ob] LT',
+            nextDay: '[jutri ob] LT',
+
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[v] [nedeljo] [ob] LT';
+                    case 3:
+                        return '[v] [sredo] [ob] LT';
+                    case 6:
+                        return '[v] [soboto] [ob] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[v] dddd [ob] LT';
+                }
+            },
+            lastDay: '[včeraj ob] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[prejšnjo] [nedeljo] [ob] LT';
+                    case 3:
+                        return '[prejšnjo] [sredo] [ob] LT';
+                    case 6:
+                        return '[prejšnjo] [soboto] [ob] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[prejšnji] dddd [ob] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'čez %s',
+            past: 'pred %s',
+            s: processRelativeTime$7,
+            ss: processRelativeTime$7,
+            m: processRelativeTime$7,
+            mm: processRelativeTime$7,
+            h: processRelativeTime$7,
+            hh: processRelativeTime$7,
+            d: processRelativeTime$7,
+            dd: processRelativeTime$7,
+            M: processRelativeTime$7,
+            MM: processRelativeTime$7,
+            y: processRelativeTime$7,
+            yy: processRelativeTime$7,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('sq', {
+        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
+        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
+            '_'
+        ),
+        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
+        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
+        weekdaysParseExact: true,
+        meridiemParse: /PD|MD/,
+        isPM: function (input) {
+            return input.charAt(0) === 'M';
+        },
+        meridiem: function (hours, minutes, isLower) {
+            return hours < 12 ? 'PD' : 'MD';
+        },
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Sot në] LT',
+            nextDay: '[Nesër në] LT',
+            nextWeek: 'dddd [në] LT',
+            lastDay: '[Dje në] LT',
+            lastWeek: 'dddd [e kaluar në] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'në %s',
+            past: '%s më parë',
+            s: 'disa sekonda',
+            ss: '%d sekonda',
+            m: 'një minutë',
+            mm: '%d minuta',
+            h: 'një orë',
+            hh: '%d orë',
+            d: 'një ditë',
+            dd: '%d ditë',
+            M: 'një muaj',
+            MM: '%d muaj',
+            y: 'një vit',
+            yy: '%d vite',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var translator$1 = {
+        words: {
+            //Different grammatical cases
+            ss: ['секунда', 'секунде', 'секунди'],
+            m: ['један минут', 'једне минуте'],
+            mm: ['минут', 'минуте', 'минута'],
+            h: ['један сат', 'једног сата'],
+            hh: ['сат', 'сата', 'сати'],
+            dd: ['дан', 'дана', 'дана'],
+            MM: ['месец', 'месеца', 'месеци'],
+            yy: ['година', 'године', 'година'],
+        },
+        correctGrammaticalCase: function (number, wordKey) {
+            return number === 1
+                ? wordKey[0]
+                : number >= 2 && number <= 4
+                ? wordKey[1]
+                : wordKey[2];
+        },
+        translate: function (number, withoutSuffix, key) {
+            var wordKey = translator$1.words[key];
+            if (key.length === 1) {
+                return withoutSuffix ? wordKey[0] : wordKey[1];
+            } else {
+                return (
+                    number +
+                    ' ' +
+                    translator$1.correctGrammaticalCase(number, wordKey)
+                );
+            }
+        },
+    };
+
+    moment.defineLocale('sr-cyrl', {
+        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
+            '_'
+        ),
+        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
+        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
+        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[данас у] LT',
+            nextDay: '[сутра у] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[у] [недељу] [у] LT';
+                    case 3:
+                        return '[у] [среду] [у] LT';
+                    case 6:
+                        return '[у] [суботу] [у] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[у] dddd [у] LT';
+                }
+            },
+            lastDay: '[јуче у] LT',
+            lastWeek: function () {
+                var lastWeekDays = [
+                    '[прошле] [недеље] [у] LT',
+                    '[прошлог] [понедељка] [у] LT',
+                    '[прошлог] [уторка] [у] LT',
+                    '[прошле] [среде] [у] LT',
+                    '[прошлог] [четвртка] [у] LT',
+                    '[прошлог] [петка] [у] LT',
+                    '[прошле] [суботе] [у] LT',
+                ];
+                return lastWeekDays[this.day()];
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'за %s',
+            past: 'пре %s',
+            s: 'неколико секунди',
+            ss: translator$1.translate,
+            m: translator$1.translate,
+            mm: translator$1.translate,
+            h: translator$1.translate,
+            hh: translator$1.translate,
+            d: 'дан',
+            dd: translator$1.translate,
+            M: 'месец',
+            MM: translator$1.translate,
+            y: 'годину',
+            yy: translator$1.translate,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var translator$2 = {
+        words: {
+            //Different grammatical cases
+            ss: ['sekunda', 'sekunde', 'sekundi'],
+            m: ['jedan minut', 'jedne minute'],
+            mm: ['minut', 'minute', 'minuta'],
+            h: ['jedan sat', 'jednog sata'],
+            hh: ['sat', 'sata', 'sati'],
+            dd: ['dan', 'dana', 'dana'],
+            MM: ['mesec', 'meseca', 'meseci'],
+            yy: ['godina', 'godine', 'godina'],
+        },
+        correctGrammaticalCase: function (number, wordKey) {
+            return number === 1
+                ? wordKey[0]
+                : number >= 2 && number <= 4
+                ? wordKey[1]
+                : wordKey[2];
+        },
+        translate: function (number, withoutSuffix, key) {
+            var wordKey = translator$2.words[key];
+            if (key.length === 1) {
+                return withoutSuffix ? wordKey[0] : wordKey[1];
+            } else {
+                return (
+                    number +
+                    ' ' +
+                    translator$2.correctGrammaticalCase(number, wordKey)
+                );
+            }
+        },
+    };
+
+    moment.defineLocale('sr', {
+        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
+        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danas u] LT',
+            nextDay: '[sutra u] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[u] [nedelju] [u] LT';
+                    case 3:
+                        return '[u] [sredu] [u] LT';
+                    case 6:
+                        return '[u] [subotu] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[u] dddd [u] LT';
+                }
+            },
+            lastDay: '[juče u] LT',
+            lastWeek: function () {
+                var lastWeekDays = [
+                    '[prošle] [nedelje] [u] LT',
+                    '[prošlog] [ponedeljka] [u] LT',
+                    '[prošlog] [utorka] [u] LT',
+                    '[prošle] [srede] [u] LT',
+                    '[prošlog] [četvrtka] [u] LT',
+                    '[prošlog] [petka] [u] LT',
+                    '[prošle] [subote] [u] LT',
+                ];
+                return lastWeekDays[this.day()];
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'pre %s',
+            s: 'nekoliko sekundi',
+            ss: translator$2.translate,
+            m: translator$2.translate,
+            mm: translator$2.translate,
+            h: translator$2.translate,
+            hh: translator$2.translate,
+            d: 'dan',
+            dd: translator$2.translate,
+            M: 'mesec',
+            MM: translator$2.translate,
+            y: 'godinu',
+            yy: translator$2.translate,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ss', {
+        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
+            '_'
+        ),
+        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
+        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
+            '_'
+        ),
+        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
+        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Namuhla nga] LT',
+            nextDay: '[Kusasa nga] LT',
+            nextWeek: 'dddd [nga] LT',
+            lastDay: '[Itolo nga] LT',
+            lastWeek: 'dddd [leliphelile] [nga] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'nga %s',
+            past: 'wenteka nga %s',
+            s: 'emizuzwana lomcane',
+            ss: '%d mzuzwana',
+            m: 'umzuzu',
+            mm: '%d emizuzu',
+            h: 'lihora',
+            hh: '%d emahora',
+            d: 'lilanga',
+            dd: '%d emalanga',
+            M: 'inyanga',
+            MM: '%d tinyanga',
+            y: 'umnyaka',
+            yy: '%d iminyaka',
+        },
+        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'ekuseni';
+            } else if (hours < 15) {
+                return 'emini';
+            } else if (hours < 19) {
+                return 'entsambama';
+            } else {
+                return 'ebusuku';
+            }
+        },
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'ekuseni') {
+                return hour;
+            } else if (meridiem === 'emini') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
+                if (hour === 0) {
+                    return 0;
+                }
+                return hour + 12;
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}/,
+        ordinal: '%d',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('sv', {
+        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
+        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
+        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [kl.] HH:mm',
+            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
+            lll: 'D MMM YYYY HH:mm',
+            llll: 'ddd D MMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Idag] LT',
+            nextDay: '[Imorgon] LT',
+            lastDay: '[Igår] LT',
+            nextWeek: '[På] dddd LT',
+            lastWeek: '[I] dddd[s] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'om %s',
+            past: 'för %s sedan',
+            s: 'några sekunder',
+            ss: '%d sekunder',
+            m: 'en minut',
+            mm: '%d minuter',
+            h: 'en timme',
+            hh: '%d timmar',
+            d: 'en dag',
+            dd: '%d dagar',
+            M: 'en månad',
+            MM: '%d månader',
+            y: 'ett år',
+            yy: '%d år',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? ':e'
+                        : b === 1
+                        ? ':a'
+                        : b === 2
+                        ? ':a'
+                        : b === 3
+                        ? ':e'
+                        : ':e';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('sw', {
+        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
+        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
+            '_'
+        ),
+        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
+        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'hh:mm A',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[leo saa] LT',
+            nextDay: '[kesho saa] LT',
+            nextWeek: '[wiki ijayo] dddd [saat] LT',
+            lastDay: '[jana] LT',
+            lastWeek: '[wiki iliyopita] dddd [saat] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s baadaye',
+            past: 'tokea %s',
+            s: 'hivi punde',
+            ss: 'sekunde %d',
+            m: 'dakika moja',
+            mm: 'dakika %d',
+            h: 'saa limoja',
+            hh: 'masaa %d',
+            d: 'siku moja',
+            dd: 'siku %d',
+            M: 'mwezi mmoja',
+            MM: 'miezi %d',
+            y: 'mwaka mmoja',
+            yy: 'miaka %d',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$f = {
+            '1': '௧',
+            '2': '௨',
+            '3': '௩',
+            '4': '௪',
+            '5': '௫',
+            '6': '௬',
+            '7': '௭',
+            '8': '௮',
+            '9': '௯',
+            '0': '௦',
+        },
+        numberMap$e = {
+            '௧': '1',
+            '௨': '2',
+            '௩': '3',
+            '௪': '4',
+            '௫': '5',
+            '௬': '6',
+            '௭': '7',
+            '௮': '8',
+            '௯': '9',
+            '௦': '0',
+        };
+
+    moment.defineLocale('ta', {
+        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
+            '_'
+        ),
+        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
+            '_'
+        ),
+        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
+            '_'
+        ),
+        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
+            '_'
+        ),
+        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, HH:mm',
+            LLLL: 'dddd, D MMMM YYYY, HH:mm',
+        },
+        calendar: {
+            sameDay: '[இன்று] LT',
+            nextDay: '[நாளை] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[நேற்று] LT',
+            lastWeek: '[கடந்த வாரம்] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s இல்',
+            past: '%s முன்',
+            s: 'ஒரு சில விநாடிகள்',
+            ss: '%d விநாடிகள்',
+            m: 'ஒரு நிமிடம்',
+            mm: '%d நிமிடங்கள்',
+            h: 'ஒரு மணி நேரம்',
+            hh: '%d மணி நேரம்',
+            d: 'ஒரு நாள்',
+            dd: '%d நாட்கள்',
+            M: 'ஒரு மாதம்',
+            MM: '%d மாதங்கள்',
+            y: 'ஒரு வருடம்',
+            yy: '%d ஆண்டுகள்',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}வது/,
+        ordinal: function (number) {
+            return number + 'வது';
+        },
+        preparse: function (string) {
+            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
+                return numberMap$e[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$f[match];
+            });
+        },
+        // refer http://ta.wikipedia.org/s/1er1
+        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 2) {
+                return ' யாமம்';
+            } else if (hour < 6) {
+                return ' வைகறை'; // வைகறை
+            } else if (hour < 10) {
+                return ' காலை'; // காலை
+            } else if (hour < 14) {
+                return ' நண்பகல்'; // நண்பகல்
+            } else if (hour < 18) {
+                return ' எற்பாடு'; // எற்பாடு
+            } else if (hour < 22) {
+                return ' மாலை'; // மாலை
+            } else {
+                return ' யாமம்';
+            }
+        },
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'யாமம்') {
+                return hour < 2 ? hour : hour + 12;
+            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
+                return hour;
+            } else if (meridiem === 'நண்பகல்') {
+                return hour >= 10 ? hour : hour + 12;
+            } else {
+                return hour + 12;
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('te', {
+        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
+            '_'
+        ),
+        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
+            '_'
+        ),
+        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
+        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm',
+            LTS: 'A h:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm',
+        },
+        calendar: {
+            sameDay: '[నేడు] LT',
+            nextDay: '[రేపు] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[నిన్న] LT',
+            lastWeek: '[గత] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s లో',
+            past: '%s క్రితం',
+            s: 'కొన్ని క్షణాలు',
+            ss: '%d సెకన్లు',
+            m: 'ఒక నిమిషం',
+            mm: '%d నిమిషాలు',
+            h: 'ఒక గంట',
+            hh: '%d గంటలు',
+            d: 'ఒక రోజు',
+            dd: '%d రోజులు',
+            M: 'ఒక నెల',
+            MM: '%d నెలలు',
+            y: 'ఒక సంవత్సరం',
+            yy: '%d సంవత్సరాలు',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}వ/,
+        ordinal: '%dవ',
+        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'రాత్రి') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'ఉదయం') {
+                return hour;
+            } else if (meridiem === 'మధ్యాహ్నం') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'సాయంత్రం') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'రాత్రి';
+            } else if (hour < 10) {
+                return 'ఉదయం';
+            } else if (hour < 17) {
+                return 'మధ్యాహ్నం';
+            } else if (hour < 20) {
+                return 'సాయంత్రం';
+            } else {
+                return 'రాత్రి';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('tet', {
+        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
+        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
+        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
+        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Ohin iha] LT',
+            nextDay: '[Aban iha] LT',
+            nextWeek: 'dddd [iha] LT',
+            lastDay: '[Horiseik iha] LT',
+            lastWeek: 'dddd [semana kotuk] [iha] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'iha %s',
+            past: '%s liuba',
+            s: 'segundu balun',
+            ss: 'segundu %d',
+            m: 'minutu ida',
+            mm: 'minutu %d',
+            h: 'oras ida',
+            hh: 'oras %d',
+            d: 'loron ida',
+            dd: 'loron %d',
+            M: 'fulan ida',
+            MM: 'fulan %d',
+            y: 'tinan ida',
+            yy: 'tinan %d',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$3 = {
+        0: '-ум',
+        1: '-ум',
+        2: '-юм',
+        3: '-юм',
+        4: '-ум',
+        5: '-ум',
+        6: '-ум',
+        7: '-ум',
+        8: '-ум',
+        9: '-ум',
+        10: '-ум',
+        12: '-ум',
+        13: '-ум',
+        20: '-ум',
+        30: '-юм',
+        40: '-ум',
+        50: '-ум',
+        60: '-ум',
+        70: '-ум',
+        80: '-ум',
+        90: '-ум',
+        100: '-ум',
+    };
+
+    moment.defineLocale('tg', {
+        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
+            '_'
+        ),
+        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
+        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
+            '_'
+        ),
+        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
+        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Имрӯз соати] LT',
+            nextDay: '[Пагоҳ соати] LT',
+            lastDay: '[Дирӯз соати] LT',
+            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
+            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'баъди %s',
+            past: '%s пеш',
+            s: 'якчанд сония',
+            m: 'як дақиқа',
+            mm: '%d дақиқа',
+            h: 'як соат',
+            hh: '%d соат',
+            d: 'як рӯз',
+            dd: '%d рӯз',
+            M: 'як моҳ',
+            MM: '%d моҳ',
+            y: 'як сол',
+            yy: '%d сол',
+        },
+        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'шаб') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'субҳ') {
+                return hour;
+            } else if (meridiem === 'рӯз') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'бегоҳ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'шаб';
+            } else if (hour < 11) {
+                return 'субҳ';
+            } else if (hour < 16) {
+                return 'рӯз';
+            } else if (hour < 19) {
+                return 'бегоҳ';
+            } else {
+                return 'шаб';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
+        ordinal: function (number) {
+            var a = number % 10,
+                b = number >= 100 ? 100 : null;
+            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 1th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('th', {
+        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
+            '_'
+        ),
+        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
+        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
+        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY เวลา H:mm',
+            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
+        },
+        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
+        isPM: function (input) {
+            return input === 'หลังเที่ยง';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ก่อนเที่ยง';
+            } else {
+                return 'หลังเที่ยง';
+            }
+        },
+        calendar: {
+            sameDay: '[วันนี้ เวลา] LT',
+            nextDay: '[พรุ่งนี้ เวลา] LT',
+            nextWeek: 'dddd[หน้า เวลา] LT',
+            lastDay: '[เมื่อวานนี้ เวลา] LT',
+            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'อีก %s',
+            past: '%sที่แล้ว',
+            s: 'ไม่กี่วินาที',
+            ss: '%d วินาที',
+            m: '1 นาที',
+            mm: '%d นาที',
+            h: '1 ชั่วโมง',
+            hh: '%d ชั่วโมง',
+            d: '1 วัน',
+            dd: '%d วัน',
+            M: '1 เดือน',
+            MM: '%d เดือน',
+            y: '1 ปี',
+            yy: '%d ปี',
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$4 = {
+        1: "'inji",
+        5: "'inji",
+        8: "'inji",
+        70: "'inji",
+        80: "'inji",
+        2: "'nji",
+        7: "'nji",
+        20: "'nji",
+        50: "'nji",
+        3: "'ünji",
+        4: "'ünji",
+        100: "'ünji",
+        6: "'njy",
+        9: "'unjy",
+        10: "'unjy",
+        30: "'unjy",
+        60: "'ynjy",
+        90: "'ynjy",
+    };
+
+    moment.defineLocale('tk', {
+        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
+            '_'
+        ),
+        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
+        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
+            '_'
+        ),
+        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
+        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[bugün sagat] LT',
+            nextDay: '[ertir sagat] LT',
+            nextWeek: '[indiki] dddd [sagat] LT',
+            lastDay: '[düýn] LT',
+            lastWeek: '[geçen] dddd [sagat] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s soň',
+            past: '%s öň',
+            s: 'birnäçe sekunt',
+            m: 'bir minut',
+            mm: '%d minut',
+            h: 'bir sagat',
+            hh: '%d sagat',
+            d: 'bir gün',
+            dd: '%d gün',
+            M: 'bir aý',
+            MM: '%d aý',
+            y: 'bir ýyl',
+            yy: '%d ýyl',
+        },
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'Do':
+                case 'DD':
+                    return number;
+                default:
+                    if (number === 0) {
+                        // special case for zero
+                        return number + "'unjy";
+                    }
+                    var a = number % 10,
+                        b = (number % 100) - a,
+                        c = number >= 100 ? 100 : null;
+                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('tl-ph', {
+        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
+            '_'
+        ),
+        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
+        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
+            '_'
+        ),
+        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
+        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'MM/D/YYYY',
+            LL: 'MMMM D, YYYY',
+            LLL: 'MMMM D, YYYY HH:mm',
+            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: 'LT [ngayong araw]',
+            nextDay: '[Bukas ng] LT',
+            nextWeek: 'LT [sa susunod na] dddd',
+            lastDay: 'LT [kahapon]',
+            lastWeek: 'LT [noong nakaraang] dddd',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'sa loob ng %s',
+            past: '%s ang nakalipas',
+            s: 'ilang segundo',
+            ss: '%d segundo',
+            m: 'isang minuto',
+            mm: '%d minuto',
+            h: 'isang oras',
+            hh: '%d oras',
+            d: 'isang araw',
+            dd: '%d araw',
+            M: 'isang buwan',
+            MM: '%d buwan',
+            y: 'isang taon',
+            yy: '%d taon',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}/,
+        ordinal: function (number) {
+            return number;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
+
+    function translateFuture(output) {
+        var time = output;
+        time =
+            output.indexOf('jaj') !== -1
+                ? time.slice(0, -3) + 'leS'
+                : output.indexOf('jar') !== -1
+                ? time.slice(0, -3) + 'waQ'
+                : output.indexOf('DIS') !== -1
+                ? time.slice(0, -3) + 'nem'
+                : time + ' pIq';
+        return time;
+    }
+
+    function translatePast(output) {
+        var time = output;
+        time =
+            output.indexOf('jaj') !== -1
+                ? time.slice(0, -3) + 'Hu’'
+                : output.indexOf('jar') !== -1
+                ? time.slice(0, -3) + 'wen'
+                : output.indexOf('DIS') !== -1
+                ? time.slice(0, -3) + 'ben'
+                : time + ' ret';
+        return time;
+    }
+
+    function translate$a(number, withoutSuffix, string, isFuture) {
+        var numberNoun = numberAsNoun(number);
+        switch (string) {
+            case 'ss':
+                return numberNoun + ' lup';
+            case 'mm':
+                return numberNoun + ' tup';
+            case 'hh':
+                return numberNoun + ' rep';
+            case 'dd':
+                return numberNoun + ' jaj';
+            case 'MM':
+                return numberNoun + ' jar';
+            case 'yy':
+                return numberNoun + ' DIS';
+        }
+    }
+
+    function numberAsNoun(number) {
+        var hundred = Math.floor((number % 1000) / 100),
+            ten = Math.floor((number % 100) / 10),
+            one = number % 10,
+            word = '';
+        if (hundred > 0) {
+            word += numbersNouns[hundred] + 'vatlh';
+        }
+        if (ten > 0) {
+            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
+        }
+        if (one > 0) {
+            word += (word !== '' ? ' ' : '') + numbersNouns[one];
+        }
+        return word === '' ? 'pagh' : word;
+    }
+
+    moment.defineLocale('tlh', {
+        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
+            '_'
+        ),
+        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
+            '_'
+        ),
+        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
+            '_'
+        ),
+        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
+            '_'
+        ),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[DaHjaj] LT',
+            nextDay: '[wa’leS] LT',
+            nextWeek: 'LLL',
+            lastDay: '[wa’Hu’] LT',
+            lastWeek: 'LLL',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: translateFuture,
+            past: translatePast,
+            s: 'puS lup',
+            ss: translate$a,
+            m: 'wa’ tup',
+            mm: translate$a,
+            h: 'wa’ rep',
+            hh: translate$a,
+            d: 'wa’ jaj',
+            dd: translate$a,
+            M: 'wa’ jar',
+            MM: translate$a,
+            y: 'wa’ DIS',
+            yy: translate$a,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$5 = {
+        1: "'inci",
+        5: "'inci",
+        8: "'inci",
+        70: "'inci",
+        80: "'inci",
+        2: "'nci",
+        7: "'nci",
+        20: "'nci",
+        50: "'nci",
+        3: "'üncü",
+        4: "'üncü",
+        100: "'üncü",
+        6: "'ncı",
+        9: "'uncu",
+        10: "'uncu",
+        30: "'uncu",
+        60: "'ıncı",
+        90: "'ıncı",
+    };
+
+    moment.defineLocale('tr', {
+        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
+            '_'
+        ),
+        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
+        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
+            '_'
+        ),
+        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
+        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 12) {
+                return isLower ? 'öö' : 'ÖÖ';
+            } else {
+                return isLower ? 'ös' : 'ÖS';
+            }
+        },
+        meridiemParse: /öö|ÖÖ|ös|ÖS/,
+        isPM: function (input) {
+            return input === 'ös' || input === 'ÖS';
+        },
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[bugün saat] LT',
+            nextDay: '[yarın saat] LT',
+            nextWeek: '[gelecek] dddd [saat] LT',
+            lastDay: '[dün] LT',
+            lastWeek: '[geçen] dddd [saat] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s sonra',
+            past: '%s önce',
+            s: 'birkaç saniye',
+            ss: '%d saniye',
+            m: 'bir dakika',
+            mm: '%d dakika',
+            h: 'bir saat',
+            hh: '%d saat',
+            d: 'bir gün',
+            dd: '%d gün',
+            M: 'bir ay',
+            MM: '%d ay',
+            y: 'bir yıl',
+            yy: '%d yıl',
+        },
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'Do':
+                case 'DD':
+                    return number;
+                default:
+                    if (number === 0) {
+                        // special case for zero
+                        return number + "'ıncı";
+                    }
+                    var a = number % 10,
+                        b = (number % 100) - a,
+                        c = number >= 100 ? 100 : null;
+                    return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
+    // This is currently too difficult (maybe even impossible) to add.
+    moment.defineLocale('tzl', {
+        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
+        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
+        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
+        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM [dallas] YYYY',
+            LLL: 'D. MMMM [dallas] YYYY HH.mm',
+            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
+        },
+        meridiemParse: /d\'o|d\'a/i,
+        isPM: function (input) {
+            return "d'o" === input.toLowerCase();
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours > 11) {
+                return isLower ? "d'o" : "D'O";
+            } else {
+                return isLower ? "d'a" : "D'A";
+            }
+        },
+        calendar: {
+            sameDay: '[oxhi à] LT',
+            nextDay: '[demà à] LT',
+            nextWeek: 'dddd [à] LT',
+            lastDay: '[ieiri à] LT',
+            lastWeek: '[sür el] dddd [lasteu à] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'osprei %s',
+            past: 'ja%s',
+            s: processRelativeTime$8,
+            ss: processRelativeTime$8,
+            m: processRelativeTime$8,
+            mm: processRelativeTime$8,
+            h: processRelativeTime$8,
+            hh: processRelativeTime$8,
+            d: processRelativeTime$8,
+            dd: processRelativeTime$8,
+            M: processRelativeTime$8,
+            MM: processRelativeTime$8,
+            y: processRelativeTime$8,
+            yy: processRelativeTime$8,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    function processRelativeTime$8(number, withoutSuffix, key, isFuture) {
+        var format = {
+            s: ['viensas secunds', "'iensas secunds"],
+            ss: [number + ' secunds', '' + number + ' secunds'],
+            m: ["'n míut", "'iens míut"],
+            mm: [number + ' míuts', '' + number + ' míuts'],
+            h: ["'n þora", "'iensa þora"],
+            hh: [number + ' þoras', '' + number + ' þoras'],
+            d: ["'n ziua", "'iensa ziua"],
+            dd: [number + ' ziuas', '' + number + ' ziuas'],
+            M: ["'n mes", "'iens mes"],
+            MM: [number + ' mesen', '' + number + ' mesen'],
+            y: ["'n ar", "'iens ar"],
+            yy: [number + ' ars', '' + number + ' ars'],
+        };
+        return isFuture
+            ? format[key][0]
+            : withoutSuffix
+            ? format[key][0]
+            : format[key][1];
+    }
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('tzm-latn', {
+        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
+            '_'
+        ),
+        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
+            '_'
+        ),
+        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[asdkh g] LT',
+            nextDay: '[aska g] LT',
+            nextWeek: 'dddd [g] LT',
+            lastDay: '[assant g] LT',
+            lastWeek: 'dddd [g] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dadkh s yan %s',
+            past: 'yan %s',
+            s: 'imik',
+            ss: '%d imik',
+            m: 'minuḍ',
+            mm: '%d minuḍ',
+            h: 'saɛa',
+            hh: '%d tassaɛin',
+            d: 'ass',
+            dd: '%d ossan',
+            M: 'ayowr',
+            MM: '%d iyyirn',
+            y: 'asgas',
+            yy: '%d isgasn',
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('tzm', {
+        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
+            '_'
+        ),
+        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
+            '_'
+        ),
+        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
+            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
+            nextWeek: 'dddd [ⴴ] LT',
+            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
+            lastWeek: 'dddd [ⴴ] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
+            past: 'ⵢⴰⵏ %s',
+            s: 'ⵉⵎⵉⴽ',
+            ss: '%d ⵉⵎⵉⴽ',
+            m: 'ⵎⵉⵏⵓⴺ',
+            mm: '%d ⵎⵉⵏⵓⴺ',
+            h: 'ⵙⴰⵄⴰ',
+            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
+            d: 'ⴰⵙⵙ',
+            dd: '%d oⵙⵙⴰⵏ',
+            M: 'ⴰⵢoⵓⵔ',
+            MM: '%d ⵉⵢⵢⵉⵔⵏ',
+            y: 'ⴰⵙⴳⴰⵙ',
+            yy: '%d ⵉⵙⴳⴰⵙⵏ',
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('ug-cn', {
+        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
+            '_'
+        ),
+        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
+            '_'
+        ),
+        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
+            '_'
+        ),
+        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
+        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
+            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
+            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
+        },
+        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (
+                meridiem === 'يېرىم كېچە' ||
+                meridiem === 'سەھەر' ||
+                meridiem === 'چۈشتىن بۇرۇن'
+            ) {
+                return hour;
+            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
+                return hour + 12;
+            } else {
+                return hour >= 11 ? hour : hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return 'يېرىم كېچە';
+            } else if (hm < 900) {
+                return 'سەھەر';
+            } else if (hm < 1130) {
+                return 'چۈشتىن بۇرۇن';
+            } else if (hm < 1230) {
+                return 'چۈش';
+            } else if (hm < 1800) {
+                return 'چۈشتىن كېيىن';
+            } else {
+                return 'كەچ';
+            }
+        },
+        calendar: {
+            sameDay: '[بۈگۈن سائەت] LT',
+            nextDay: '[ئەتە سائەت] LT',
+            nextWeek: '[كېلەركى] dddd [سائەت] LT',
+            lastDay: '[تۆنۈگۈن] LT',
+            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s كېيىن',
+            past: '%s بۇرۇن',
+            s: 'نەچچە سېكونت',
+            ss: '%d سېكونت',
+            m: 'بىر مىنۇت',
+            mm: '%d مىنۇت',
+            h: 'بىر سائەت',
+            hh: '%d سائەت',
+            d: 'بىر كۈن',
+            dd: '%d كۈن',
+            M: 'بىر ئاي',
+            MM: '%d ئاي',
+            y: 'بىر يىل',
+            yy: '%d يىل',
+        },
+
+        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '-كۈنى';
+                case 'w':
+                case 'W':
+                    return number + '-ھەپتە';
+                default:
+                    return number;
+            }
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 1st is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function plural$6(word, num) {
+        var forms = word.split('_');
+        return num % 10 === 1 && num % 100 !== 11
+            ? forms[0]
+            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
+            ? forms[1]
+            : forms[2];
+    }
+    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
+        var format = {
+            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
+            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
+            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
+            dd: 'день_дні_днів',
+            MM: 'місяць_місяці_місяців',
+            yy: 'рік_роки_років',
+        };
+        if (key === 'm') {
+            return withoutSuffix ? 'хвилина' : 'хвилину';
+        } else if (key === 'h') {
+            return withoutSuffix ? 'година' : 'годину';
+        } else {
+            return number + ' ' + plural$6(format[key], +number);
+        }
+    }
+    function weekdaysCaseReplace(m, format) {
+        var weekdays = {
+                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
+                    '_'
+                ),
+                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
+                    '_'
+                ),
+                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
+                    '_'
+                ),
+            },
+            nounCase;
+
+        if (m === true) {
+            return weekdays['nominative']
+                .slice(1, 7)
+                .concat(weekdays['nominative'].slice(0, 1));
+        }
+        if (!m) {
+            return weekdays['nominative'];
+        }
+
+        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
+            ? 'accusative'
+            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
+            ? 'genitive'
+            : 'nominative';
+        return weekdays[nounCase][m.day()];
+    }
+    function processHoursFunction(str) {
+        return function () {
+            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
+        };
+    }
+
+    moment.defineLocale('uk', {
+        months: {
+            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
+                '_'
+            ),
+            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
+                '_'
+            ),
+        },
+        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
+            '_'
+        ),
+        weekdays: weekdaysCaseReplace,
+        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
+        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY р.',
+            LLL: 'D MMMM YYYY р., HH:mm',
+            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
+        },
+        calendar: {
+            sameDay: processHoursFunction('[Сьогодні '),
+            nextDay: processHoursFunction('[Завтра '),
+            lastDay: processHoursFunction('[Вчора '),
+            nextWeek: processHoursFunction('[У] dddd ['),
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                    case 5:
+                    case 6:
+                        return processHoursFunction('[Минулої] dddd [').call(this);
+                    case 1:
+                    case 2:
+                    case 4:
+                        return processHoursFunction('[Минулого] dddd [').call(this);
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'за %s',
+            past: '%s тому',
+            s: 'декілька секунд',
+            ss: relativeTimeWithPlural$4,
+            m: relativeTimeWithPlural$4,
+            mm: relativeTimeWithPlural$4,
+            h: 'годину',
+            hh: relativeTimeWithPlural$4,
+            d: 'день',
+            dd: relativeTimeWithPlural$4,
+            M: 'місяць',
+            MM: relativeTimeWithPlural$4,
+            y: 'рік',
+            yy: relativeTimeWithPlural$4,
+        },
+        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
+        meridiemParse: /ночі|ранку|дня|вечора/,
+        isPM: function (input) {
+            return /^(дня|вечора)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ночі';
+            } else if (hour < 12) {
+                return 'ранку';
+            } else if (hour < 17) {
+                return 'дня';
+            } else {
+                return 'вечора';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'M':
+                case 'd':
+                case 'DDD':
+                case 'w':
+                case 'W':
+                    return number + '-й';
+                case 'D':
+                    return number + '-го';
+                default:
+                    return number;
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$a = [
+            'جنوری',
+            'فروری',
+            'مارچ',
+            'اپریل',
+            'مئی',
+            'جون',
+            'جولائی',
+            'اگست',
+            'ستمبر',
+            'اکتوبر',
+            'نومبر',
+            'دسمبر',
+        ],
+        days$1 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
+
+    moment.defineLocale('ur', {
+        months: months$a,
+        monthsShort: months$a,
+        weekdays: days$1,
+        weekdaysShort: days$1,
+        weekdaysMin: days$1,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd، D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /صبح|شام/,
+        isPM: function (input) {
+            return 'شام' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'صبح';
+            }
+            return 'شام';
+        },
+        calendar: {
+            sameDay: '[آج بوقت] LT',
+            nextDay: '[کل بوقت] LT',
+            nextWeek: 'dddd [بوقت] LT',
+            lastDay: '[گذشتہ روز بوقت] LT',
+            lastWeek: '[گذشتہ] dddd [بوقت] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s بعد',
+            past: '%s قبل',
+            s: 'چند سیکنڈ',
+            ss: '%d سیکنڈ',
+            m: 'ایک منٹ',
+            mm: '%d منٹ',
+            h: 'ایک گھنٹہ',
+            hh: '%d گھنٹے',
+            d: 'ایک دن',
+            dd: '%d دن',
+            M: 'ایک ماہ',
+            MM: '%d ماہ',
+            y: 'ایک سال',
+            yy: '%d سال',
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('uz-latn', {
+        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
+            '_'
+        ),
+        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
+        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
+            '_'
+        ),
+        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
+        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'D MMMM YYYY, dddd HH:mm',
+        },
+        calendar: {
+            sameDay: '[Bugun soat] LT [da]',
+            nextDay: '[Ertaga] LT [da]',
+            nextWeek: 'dddd [kuni soat] LT [da]',
+            lastDay: '[Kecha soat] LT [da]',
+            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'Yaqin %s ichida',
+            past: 'Bir necha %s oldin',
+            s: 'soniya',
+            ss: '%d soniya',
+            m: 'bir daqiqa',
+            mm: '%d daqiqa',
+            h: 'bir soat',
+            hh: '%d soat',
+            d: 'bir kun',
+            dd: '%d kun',
+            M: 'bir oy',
+            MM: '%d oy',
+            y: 'bir yil',
+            yy: '%d yil',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('uz', {
+        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
+            '_'
+        ),
+        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
+        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
+        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
+        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'D MMMM YYYY, dddd HH:mm',
+        },
+        calendar: {
+            sameDay: '[Бугун соат] LT [да]',
+            nextDay: '[Эртага] LT [да]',
+            nextWeek: 'dddd [куни соат] LT [да]',
+            lastDay: '[Кеча соат] LT [да]',
+            lastWeek: '[Утган] dddd [куни соат] LT [да]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'Якин %s ичида',
+            past: 'Бир неча %s олдин',
+            s: 'фурсат',
+            ss: '%d фурсат',
+            m: 'бир дакика',
+            mm: '%d дакика',
+            h: 'бир соат',
+            hh: '%d соат',
+            d: 'бир кун',
+            dd: '%d кун',
+            M: 'бир ой',
+            MM: '%d ой',
+            y: 'бир йил',
+            yy: '%d йил',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('vi', {
+        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
+            '_'
+        ),
+        monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
+            '_'
+        ),
+        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
+        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
+        weekdaysParseExact: true,
+        meridiemParse: /sa|ch/i,
+        isPM: function (input) {
+            return /^ch$/i.test(input);
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 12) {
+                return isLower ? 'sa' : 'SA';
+            } else {
+                return isLower ? 'ch' : 'CH';
+            }
+        },
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM [năm] YYYY',
+            LLL: 'D MMMM [năm] YYYY HH:mm',
+            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
+            l: 'DD/M/YYYY',
+            ll: 'D MMM YYYY',
+            lll: 'D MMM YYYY HH:mm',
+            llll: 'ddd, D MMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Hôm nay lúc] LT',
+            nextDay: '[Ngày mai lúc] LT',
+            nextWeek: 'dddd [tuần tới lúc] LT',
+            lastDay: '[Hôm qua lúc] LT',
+            lastWeek: 'dddd [tuần trước lúc] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s tới',
+            past: '%s trước',
+            s: 'vài giây',
+            ss: '%d giây',
+            m: 'một phút',
+            mm: '%d phút',
+            h: 'một giờ',
+            hh: '%d giờ',
+            d: 'một ngày',
+            dd: '%d ngày',
+            M: 'một tháng',
+            MM: '%d tháng',
+            y: 'một năm',
+            yy: '%d năm',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}/,
+        ordinal: function (number) {
+            return number;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('x-pseudo', {
+        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
+            '_'
+        ),
+        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
+            '_'
+        ),
+        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
+        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[T~ódá~ý át] LT',
+            nextDay: '[T~ómó~rró~w át] LT',
+            nextWeek: 'dddd [át] LT',
+            lastDay: '[Ý~ést~érdá~ý át] LT',
+            lastWeek: '[L~ást] dddd [át] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'í~ñ %s',
+            past: '%s á~gó',
+            s: 'á ~féw ~sécó~ñds',
+            ss: '%d s~écóñ~ds',
+            m: 'á ~míñ~úté',
+            mm: '%d m~íñú~tés',
+            h: 'á~ñ hó~úr',
+            hh: '%d h~óúrs',
+            d: 'á ~dáý',
+            dd: '%d d~áýs',
+            M: 'á ~móñ~th',
+            MM: '%d m~óñt~hs',
+            y: 'á ~ýéár',
+            yy: '%d ý~éárs',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('yo', {
+        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
+            '_'
+        ),
+        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
+        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
+        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
+        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Ònì ni] LT',
+            nextDay: '[Ọ̀la ni] LT',
+            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
+            lastDay: '[Àna ni] LT',
+            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ní %s',
+            past: '%s kọjá',
+            s: 'ìsẹjú aayá die',
+            ss: 'aayá %d',
+            m: 'ìsẹjú kan',
+            mm: 'ìsẹjú %d',
+            h: 'wákati kan',
+            hh: 'wákati %d',
+            d: 'ọjọ́ kan',
+            dd: 'ọjọ́ %d',
+            M: 'osù kan',
+            MM: 'osù %d',
+            y: 'ọdún kan',
+            yy: 'ọdún %d',
+        },
+        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
+        ordinal: 'ọjọ́ %d',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('zh-cn', {
+        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
+            '_'
+        ),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
+        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日Ah点mm分',
+            LLLL: 'YYYY年M月D日ddddAh点mm分',
+            l: 'YYYY/M/D',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日dddd HH:mm',
+        },
+        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
+                return hour;
+            } else if (meridiem === '下午' || meridiem === '晚上') {
+                return hour + 12;
+            } else {
+                // '中午'
+                return hour >= 11 ? hour : hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return '凌晨';
+            } else if (hm < 900) {
+                return '早上';
+            } else if (hm < 1130) {
+                return '上午';
+            } else if (hm < 1230) {
+                return '中午';
+            } else if (hm < 1800) {
+                return '下午';
+            } else {
+                return '晚上';
+            }
+        },
+        calendar: {
+            sameDay: '[今天]LT',
+            nextDay: '[明天]LT',
+            nextWeek: function (now) {
+                if (now.week() !== this.week()) {
+                    return '[下]dddLT';
+                } else {
+                    return '[本]dddLT';
+                }
+            },
+            lastDay: '[昨天]LT',
+            lastWeek: function (now) {
+                if (this.week() !== now.week()) {
+                    return '[上]dddLT';
+                } else {
+                    return '[本]dddLT';
+                }
+            },
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                case 'M':
+                    return number + '月';
+                case 'w':
+                case 'W':
+                    return number + '周';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s后',
+            past: '%s前',
+            s: '几秒',
+            ss: '%d 秒',
+            m: '1 分钟',
+            mm: '%d 分钟',
+            h: '1 小时',
+            hh: '%d 小时',
+            d: '1 天',
+            dd: '%d 天',
+            M: '1 个月',
+            MM: '%d 个月',
+            y: '1 年',
+            yy: '%d 年',
+        },
+        week: {
+            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('zh-hk', {
+        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
+            '_'
+        ),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日 HH:mm',
+            LLLL: 'YYYY年M月D日dddd HH:mm',
+            l: 'YYYY/M/D',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日dddd HH:mm',
+        },
+        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
+                return hour;
+            } else if (meridiem === '中午') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === '下午' || meridiem === '晚上') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return '凌晨';
+            } else if (hm < 900) {
+                return '早上';
+            } else if (hm < 1200) {
+                return '上午';
+            } else if (hm === 1200) {
+                return '中午';
+            } else if (hm < 1800) {
+                return '下午';
+            } else {
+                return '晚上';
+            }
+        },
+        calendar: {
+            sameDay: '[今天]LT',
+            nextDay: '[明天]LT',
+            nextWeek: '[下]ddddLT',
+            lastDay: '[昨天]LT',
+            lastWeek: '[上]ddddLT',
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                case 'M':
+                    return number + '月';
+                case 'w':
+                case 'W':
+                    return number + '週';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s後',
+            past: '%s前',
+            s: '幾秒',
+            ss: '%d 秒',
+            m: '1 分鐘',
+            mm: '%d 分鐘',
+            h: '1 小時',
+            hh: '%d 小時',
+            d: '1 天',
+            dd: '%d 天',
+            M: '1 個月',
+            MM: '%d 個月',
+            y: '1 年',
+            yy: '%d 年',
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('zh-mo', {
+        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
+            '_'
+        ),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日 HH:mm',
+            LLLL: 'YYYY年M月D日dddd HH:mm',
+            l: 'D/M/YYYY',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日dddd HH:mm',
+        },
+        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
+                return hour;
+            } else if (meridiem === '中午') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === '下午' || meridiem === '晚上') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return '凌晨';
+            } else if (hm < 900) {
+                return '早上';
+            } else if (hm < 1130) {
+                return '上午';
+            } else if (hm < 1230) {
+                return '中午';
+            } else if (hm < 1800) {
+                return '下午';
+            } else {
+                return '晚上';
+            }
+        },
+        calendar: {
+            sameDay: '[今天] LT',
+            nextDay: '[明天] LT',
+            nextWeek: '[下]dddd LT',
+            lastDay: '[昨天] LT',
+            lastWeek: '[上]dddd LT',
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                case 'M':
+                    return number + '月';
+                case 'w':
+                case 'W':
+                    return number + '週';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s內',
+            past: '%s前',
+            s: '幾秒',
+            ss: '%d 秒',
+            m: '1 分鐘',
+            mm: '%d 分鐘',
+            h: '1 小時',
+            hh: '%d 小時',
+            d: '1 天',
+            dd: '%d 天',
+            M: '1 個月',
+            MM: '%d 個月',
+            y: '1 年',
+            yy: '%d 年',
+        },
+    });
+
+    //! moment.js locale configuration
+
+    moment.defineLocale('zh-tw', {
+        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
+            '_'
+        ),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日 HH:mm',
+            LLLL: 'YYYY年M月D日dddd HH:mm',
+            l: 'YYYY/M/D',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日dddd HH:mm',
+        },
+        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
+                return hour;
+            } else if (meridiem === '中午') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === '下午' || meridiem === '晚上') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return '凌晨';
+            } else if (hm < 900) {
+                return '早上';
+            } else if (hm < 1130) {
+                return '上午';
+            } else if (hm < 1230) {
+                return '中午';
+            } else if (hm < 1800) {
+                return '下午';
+            } else {
+                return '晚上';
+            }
+        },
+        calendar: {
+            sameDay: '[今天] LT',
+            nextDay: '[明天] LT',
+            nextWeek: '[下]dddd LT',
+            lastDay: '[昨天] LT',
+            lastWeek: '[上]dddd LT',
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                case 'M':
+                    return number + '月';
+                case 'w':
+                case 'W':
+                    return number + '週';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s後',
+            past: '%s前',
+            s: '幾秒',
+            ss: '%d 秒',
+            m: '1 分鐘',
+            mm: '%d 分鐘',
+            h: '1 小時',
+            hh: '%d 小時',
+            d: '1 天',
+            dd: '%d 天',
+            M: '1 個月',
+            MM: '%d 個月',
+            y: '1 年',
+            yy: '%d 年',
+        },
+    });
+
+    moment.locale('en');
+
+    return moment;
+
+})));
diff --git a/admin/js/vendors/moment/locales.min.js b/admin/js/vendors/moment/locales.min.js
new file mode 100644 (file)
index 0000000..56da071
--- /dev/null
@@ -0,0 +1,2 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,_){return e<12?_?"vm":"VM":_?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});function r(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function a(n){return function(e,a,_,s){var d=r(e),t=i[n][r(e)];return 2===d&&(t=t[a?0:1]),t.replace(/%d/i,e)}}var i={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},_=["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];e.defineLocale("ar-dz",{months:_,monthsShort:_,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:0,doy:4}}),e.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}});function m(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function s(n){return function(e,a,_,s){var d=m(e),t=o[n][m(e)];return 2===d&&(t=t[a?0:1]),t.replace(/%d/i,e)}}var d={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},o={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},t=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];e.defineLocale("ar-ly",{months:t,monthsShort:t,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return d[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),e.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}});var n={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},u={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};e.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return u[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return n[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),e.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}});function l(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function M(n){return function(e,a,_,s){var d=l(e),t=h[n][l(e)];return 2===d&&(t=t[a?0:1]),t.replace(/%d/i,e)}}var L={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},Y={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},h={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},y=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];e.defineLocale("ar",{months:y,monthsShort:y,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:M("s"),ss:M("s"),m:M("m"),mm:M("m"),h:M("h"),hh:M("h"),d:M("d"),dd:M("d"),M:M("M"),MM:M("M"),y:M("y"),yy:M("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Y[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return L[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var c={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};function k(e,a,_){var s,d;return"m"===_?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===_?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(s=+e,d={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[_].split("_"),s%10==1&&s%100!=11?d[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?d[1]:d[2])}e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,_){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){if(0===e)return e+"-\u0131nc\u0131";var a=e%10;return e+(c[a]||c[e%100-a]||c[100<=e?100:null])},week:{dow:1,doy:7}}),e.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:k,mm:k,h:k,hh:k,d:"\u0434\u0437\u0435\u043d\u044c",dd:k,M:"\u043c\u0435\u0441\u044f\u0446",MM:k,y:"\u0433\u043e\u0434",yy:k},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,_){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),e.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,_=e%100;return 0===e?e+"-\u0435\u0432":0==_?e+"-\u0435\u043d":10<_&&_<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var D={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},p={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};e.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return p[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return D[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,_){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}});var T={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},f={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function g(e,a,_){var s;return e+" "+(s={mm:"munutenn",MM:"miz",dd:"devezh"}[_],2!==e?s:function(e){var a={m:"v",b:"v",d:"z"};return void 0!==a[e.charAt(0)]?a[e.charAt(0)]+e.substring(1):e}(s))}e.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12".split("_"),monthsShortRegex:/^(\u0f5f\u0fb3\u0f0b\d{1,2})/,monthsParseExact:!0,weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u0f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return f[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return T[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,_){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}});var w=[/^gen/i,/^c[\u02bc\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],H=/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,b=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];function v(e,a,_){var s=e+" ";switch(_){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}e.defineLocale("br",{months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:b,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[\u02bc\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:b,monthsRegex:H,monthsShortRegex:H,monthsStrictRegex:/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:w,longMonthsParse:w,shortMonthsParse:w,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc\u02bchoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec\u02bch da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:g,h:"un eur",hh:"%d eur",d:"un devezh",dd:g,M:"ur miz",MM:g,y:"ur bloaz",yy:function(e){switch(function e(a){if(9<a)return e(a%10);return a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(e){return e+(1===e?"a\xf1":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,a,_){return e<12?"a.m.":"g.m."}}),e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:v,m:v,mm:v,h:v,hh:v,d:"dan",dd:v,M:"mjesec",MM:v,y:"godinu",yy:v},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),e.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}});var S="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),j="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),x=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],P=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function W(e){return 1<e&&e<5&&1!=~~(e/10)}function A(e,a,_,s){var d=e+" ";switch(_){case"s":return a||s?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return a||s?d+(W(e)?"sekundy":"sekund"):d+"sekundami";case"m":return a?"minuta":s?"minutu":"minutou";case"mm":return a||s?d+(W(e)?"minuty":"minut"):d+"minutami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?d+(W(e)?"hodiny":"hodin"):d+"hodinami";case"d":return a||s?"den":"dnem";case"dd":return a||s?d+(W(e)?"dny":"dn\xed"):d+"dny";case"M":return a||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||s?d+(W(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):d+"m\u011bs\xedci";case"y":return a||s?"rok":"rokem";case"yy":return a||s?d+(W(e)?"roky":"let"):d+"lety"}}function O(e,a,_,s){var d={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?d[_][0]:d[_][1]}function E(e,a,_,s){var d={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?d[_][0]:d[_][1]}function F(e,a,_,s){var d={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?d[_][0]:d[_][1]}e.defineLocale("cs",{months:S,monthsShort:j,monthsRegex:P,monthsShortRegex:P,monthsStrictRegex:/^(leden|ledna|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:x,longMonthsParse:x,shortMonthsParse:x,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:A,ss:A,m:A,mm:A,h:A,hh:A,d:A,dd:A,M:A,MM:A,y:A,yy:A},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){return e+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}}),e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a="";return 20<e?a=40===e||50===e||60===e||80===e||100===e?"fed":"ain":0<e&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+a},week:{dow:1,doy:4}}),e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:O,mm:"%d Minuten",h:O,hh:"%d Stunden",d:O,dd:O,w:O,ww:"%d Wochen",M:O,MM:O,y:O,yy:O},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:E,mm:"%d Minuten",h:E,hh:"%d Stunden",d:E,dd:E,w:E,ww:"%d Wochen",M:E,MM:E,y:E,yy:E},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:F,mm:"%d Minuten",h:F,hh:"%d Stunden",d:F,dd:F,w:F,ww:"%d Wochen",M:F,MM:F,y:F,yy:F},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var z=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],J=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];e.defineLocale("dv",{months:z,monthsShort:z,weekdays:J,weekdaysShort:J,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,a,_){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}}),e.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,a,_){return 11<e?_?"\u03bc\u03bc":"\u039c\u039c":_?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(e){return"\u03bc"===(e+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var _,s=this._calendarEl[e],d=a&&a.hours();return _=s,("undefined"!=typeof Function&&_ instanceof Function||"[object Function]"===Object.prototype.toString.call(_))&&(s=s.apply(a)),s.replace("{}",d%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}}),e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:4}}),e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:6}}),e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_a\u016dg_sept_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,_){return 11<e?_?"p.t.m.":"P.T.M.":_?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});var I="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),N="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),R=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],C=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?N[e.month()]:I[e.month()]:I},monthsRegex:C,monthsShortRegex:C,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:R,longMonthsParse:R,shortMonthsParse:R,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var K="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),G="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),B=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],q=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?G[e.month()]:K[e.month()]:K},monthsRegex:q,monthsShortRegex:q,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:B,longMonthsParse:B,shortMonthsParse:B,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}});var U="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),$="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),Q=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],V=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;function Z(e,a,_,s){var d={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[e+" minuti",e+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[e+" tunni",e+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[e+" kuu",e+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[e+" aasta",e+" aastat"]};return a?d[_][2]?d[_][2]:d[_][1]:s?d[_][0]:d[_][1]}e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?$[e.month()]:U[e.month()]:U},monthsRegex:V,monthsShortRegex:V,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:Q,longMonthsParse:Q,shortMonthsParse:Q,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4},invalidDate:"Fecha inv\xe1lida"}),e.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:Z,ss:Z,m:Z,mm:Z,h:Z,hh:Z,d:Z,dd:"%d p\xe4eva",M:Z,MM:Z,y:Z,yy:Z},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var X={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},ee={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};e.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,a,_){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"%d \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return ee[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return X[e]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}});var ae="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),_e=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",ae[7],ae[8],ae[9]];function se(e,a,_,s){var d,t,n="";switch(_){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":n=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":n=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":n=s?"tunnin":"tuntia";break;case"d":return s?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":n=s?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return s?"kuukauden":"kuukausi";case"MM":n=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":n=s?"vuoden":"vuotta";break}return t=s,n=((d=e)<10?t?_e[d]:ae[d]:d)+" "+n}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:se,ss:se,m:se,mm:se,h:se,hh:se,d:se,dd:se,M:se,MM:se,y:se,yy:se},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),e.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}}),e.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var de=/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?|janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,te=[/^janv/i,/^f\xe9vr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^ao\xfbt/i,/^sept/i,/^oct/i,/^nov/i,/^d\xe9c/i];e.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsRegex:de,monthsShortRegex:de,monthsStrictRegex:/^(janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,monthsShortStrictRegex:/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?)/i,monthsParse:te,longMonthsParse:te,shortMonthsParse:te,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var ne="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),re="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?re[e.month()]:ne[e.month()]:ne},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});e.defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","Meitheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","M\xe1rt","Aib","Beal","Meith","I\xfail","L\xfan","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Sathairn"],weekdaysShort:["Domh","Luan","M\xe1irt","C\xe9ad","D\xe9ar","Aoine","Sath"],weekdaysMin:["Do","Lu","M\xe1","C\xe9","D\xe9","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Am\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xedonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}});function ie(e,a,_,s){var d={s:["\u0925\u094b\u0921\u092f\u093e \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940","\u0925\u094b\u0921\u0947 \u0938\u0945\u0915\u0902\u0921"],ss:[e+" \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940",e+" \u0938\u0945\u0915\u0902\u0921"],m:["\u090f\u0915\u093e \u092e\u093f\u0923\u091f\u093e\u0928","\u090f\u0915 \u092e\u093f\u0928\u0942\u091f"],mm:[e+" \u092e\u093f\u0923\u091f\u093e\u0902\u0928\u0940",e+" \u092e\u093f\u0923\u091f\u093e\u0902"],h:["\u090f\u0915\u093e \u0935\u0930\u093e\u0928","\u090f\u0915 \u0935\u0930"],hh:[e+" \u0935\u0930\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u093e\u0902"],d:["\u090f\u0915\u093e \u0926\u093f\u0938\u093e\u0928","\u090f\u0915 \u0926\u0940\u0938"],dd:[e+" \u0926\u093f\u0938\u093e\u0902\u0928\u0940",e+" \u0926\u0940\u0938"],M:["\u090f\u0915\u093e \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928","\u090f\u0915 \u092e\u094d\u0939\u092f\u0928\u094b"],MM:[e+" \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928\u0940",e+" \u092e\u094d\u0939\u092f\u0928\u0947"],y:["\u090f\u0915\u093e \u0935\u0930\u094d\u0938\u093e\u0928","\u090f\u0915 \u0935\u0930\u094d\u0938"],yy:[e+" \u0935\u0930\u094d\u0938\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u094d\u0938\u093e\u0902"]};return s?d[_][0]:d[_][1]}function me(e,a,_,s){var d={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return s?d[_][0]:d[_][1]}e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}}),e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("gom-deva",{months:{standalone:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u092f_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),format:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092e\u093e\u0930\u094d\u091a\u093e\u091a\u094d\u092f\u093e_\u090f\u092a\u094d\u0930\u0940\u0932\u093e\u091a\u094d\u092f\u093e_\u092e\u0947\u092f\u093e\u091a\u094d\u092f\u093e_\u091c\u0942\u0928\u093e\u091a\u094d\u092f\u093e_\u091c\u0941\u0932\u092f\u093e\u091a\u094d\u092f\u093e_\u0911\u0917\u0938\u094d\u091f\u093e\u091a\u094d\u092f\u093e_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0911\u0915\u094d\u091f\u094b\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0921\u093f\u0938\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940._\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u092f\u0924\u093e\u0930_\u0938\u094b\u092e\u093e\u0930_\u092e\u0902\u0917\u0933\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u092c\u093f\u0930\u0947\u0938\u094d\u0924\u093e\u0930_\u0938\u0941\u0915\u094d\u0930\u093e\u0930_\u0936\u0947\u0928\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0906\u092f\u0924._\u0938\u094b\u092e._\u092e\u0902\u0917\u0933._\u092c\u0941\u0927._\u092c\u094d\u0930\u0947\u0938\u094d\u0924._\u0938\u0941\u0915\u094d\u0930._\u0936\u0947\u0928.".split("_"),weekdaysMin:"\u0906_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u092c\u094d\u0930\u0947_\u0938\u0941_\u0936\u0947".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LTS:"A h:mm:ss [\u0935\u093e\u091c\u0924\u093e\u0902]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",llll:"ddd, D MMM YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]"},calendar:{sameDay:"[\u0906\u092f\u091c] LT",nextDay:"[\u092b\u093e\u0932\u094d\u092f\u093e\u0902] LT",nextWeek:"[\u092b\u0941\u0921\u0932\u094b] dddd[,] LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092b\u093e\u091f\u0932\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s \u0906\u0926\u0940\u0902",s:ie,ss:ie,m:ie,mm:ie,h:ie,hh:ie,d:ie,dd:ie,M:ie,MM:ie,y:ie,yy:ie},dayOfMonthOrdinalParse:/\d{1,2}(\u0935\u0947\u0930)/,ordinal:function(e,a){switch(a){case"D":return e+"\u0935\u0947\u0930";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/\u0930\u093e\u0924\u0940|\u0938\u0915\u093e\u0933\u0940\u0902|\u0926\u0928\u092a\u093e\u0930\u093e\u0902|\u0938\u093e\u0902\u091c\u0947/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u0940"===a?e<4?e:e+12:"\u0938\u0915\u093e\u0933\u0940\u0902"===a?e:"\u0926\u0928\u092a\u093e\u0930\u093e\u0902"===a?12<e?e:e+12:"\u0938\u093e\u0902\u091c\u0947"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0930\u093e\u0924\u0940":e<12?"\u0938\u0915\u093e\u0933\u0940\u0902":e<16?"\u0926\u0928\u092a\u093e\u0930\u093e\u0902":e<20?"\u0938\u093e\u0902\u091c\u0947":"\u0930\u093e\u0924\u0940"}}),e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:me,ss:me,m:me,mm:me,h:me,hh:me,d:me,dd:me,M:me,MM:me,y:me,yy:me},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokallim"===a?e:"donparam"===a?12<e?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}});var oe={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},ue={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};e.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(e){return ue[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return oe[e]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===a?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===a?e:"\u0aac\u0aaa\u0acb\u0ab0"===a?10<=e?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}}),e.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(e){return 2===e?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":e+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(e){return 2===e?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":e+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(e){return 2===e?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":e+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(e){return 2===e?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":e%10==0&&10!==e?e+" \u05e9\u05e0\u05d4":e+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(e){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(e)},meridiem:function(e,a,_){return e<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":e<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":e<12?_?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":e<18?_?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}});var le={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Me={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function Le(e,a,_){var s=e+" ";switch(_){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}e.defineLocale("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Me[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return le[e]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924"===a?e<4?e:e+12:"\u0938\u0941\u092c\u0939"===a?e:"\u0926\u094b\u092a\u0939\u0930"===a?10<=e?e:e+12:"\u0936\u093e\u092e"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0930\u093e\u0924":e<10?"\u0938\u0941\u092c\u0939":e<17?"\u0926\u094b\u092a\u0939\u0930":e<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}}),e.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:return"[pro\u0161lu] [nedjelju] [u] LT";case 3:return"[pro\u0161lu] [srijedu] [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:Le,m:Le,mm:Le,h:Le,hh:Le,d:"dan",dd:Le,M:"mjesec",MM:Le,y:"godinu",yy:Le},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Ye="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function he(e,a,_,s){var d=e;switch(_){case"s":return s||a?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return d+(s||a)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(s||a?" perc":" perce");case"mm":return d+(s||a?" perc":" perce");case"h":return"egy"+(s||a?" \xf3ra":" \xf3r\xe1ja");case"hh":return d+(s||a?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(s||a?" nap":" napja");case"dd":return d+(s||a?" nap":" napja");case"M":return"egy"+(s||a?" h\xf3nap":" h\xf3napja");case"MM":return d+(s||a?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(s||a?" \xe9v":" \xe9ve");case"yy":return d+(s||a?" \xe9v":" \xe9ve")}return""}function ye(e){return(e?"":"[m\xfalt] ")+"["+Ye[this.day()]+"] LT[-kor]"}function ce(e){return e%100==11||e%10!=1}function ke(e,a,_,s){var d=e+" ";switch(_){case"s":return a||s?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return ce(e)?d+(a||s?"sek\xfandur":"sek\xfandum"):d+"sek\xfanda";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return ce(e)?d+(a||s?"m\xedn\xfatur":"m\xedn\xfatum"):a?d+"m\xedn\xfata":d+"m\xedn\xfatu";case"hh":return ce(e)?d+(a||s?"klukkustundir":"klukkustundum"):d+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return ce(e)?a?d+"dagar":d+(s?"daga":"d\xf6gum"):a?d+"dagur":d+(s?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":s?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return ce(e)?a?d+"m\xe1nu\xf0ir":d+(s?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?d+"m\xe1nu\xf0ur":d+(s?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||s?"\xe1r":"\xe1ri";case"yy":return ce(e)?d+(a||s?"\xe1r":"\xe1rum"):d+(a||s?"\xe1r":"\xe1ri")}}e.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,_){return e<12?!0===_?"de":"DE":!0===_?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return ye.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return ye.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:he,ss:he,m:he,mm:he,h:he,hh:he,d:he,dd:he,M:he,MM:he,y:he,yy:he},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(e){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(e)},meridiem:function(e){return e<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":e<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":e<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-\u056b\u0576":e+"-\u0580\u0564";default:return e}},week:{dow:1,doy:7}}),e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?11<=e?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,_){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}}),e.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:ke,ss:ke,m:ke,mm:ke,h:"klukkustund",hh:ke,d:ke,dd:ke,M:ke,MM:ke,y:ke,yy:ke},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"\u4ee4\u548c",narrow:"\u32ff",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"\u5e73\u6210",narrow:"\u337b",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"\u662d\u548c",narrow:"\u337c",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"\u5927\u6b63",narrow:"\u337d",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"\u660e\u6cbb",narrow:"\u337e",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"\u897f\u66a6",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"\u7d00\u5143\u524d",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(\u5143|\d+)\u5e74/,eraYearOrdinalParse:function(e,a){return"\u5143"===a[1]?1:parseInt(a[1]||e,10)},months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(e){return"\u5348\u5f8c"===e},meridiem:function(e,a,_){return e<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(e){return e.week()!==this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(e){return this.week()!==e.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(e,a){switch(a){case"y":return 1===e?"\u5143\u5e74":e+"\u5e74";case"d":case"D":case"DDD":return e+"\u65e5";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}}),e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?11<=e?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,_){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),e.defineLocale("ka",{months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(\u10ec\u10d0\u10db|\u10ec\u10e3\u10d7|\u10e1\u10d0\u10d0\u10d7|\u10ec\u10d4\u10da|\u10d3\u10e6|\u10d7\u10d5)(\u10d8|\u10d4)/,function(e,a,_){return"\u10d8"===_?a+"\u10e8\u10d8":a+_+"\u10e8\u10d8"})},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):e},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":e<20||e<=100&&e%20==0||e%100==0?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}});var De={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};e.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(e){return e+(De[e]||De[e%10]||De[100<=e?100:null])},week:{dow:1,doy:7}});var pe={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},Te={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};e.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,a,_){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(e){return Te[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return pe[e]})},week:{dow:1,doy:4}});var fe={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},ge={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};e.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(e){return ge[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return fe[e]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===a?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===a?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===a?10<=e?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}}),e.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\uc77c";case"M":return e+"\uc6d4";case"w":case"W":return e+"\uc8fc";default:return e}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(e){return"\uc624\ud6c4"===e},meridiem:function(e,a,_){return e<12?"\uc624\uc804":"\uc624\ud6c4"}});var we={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},He={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},be=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];e.defineLocale("ku",{months:be,monthsShort:be,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(e){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(e)},meridiem:function(e,a,_){return e<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return He[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return we[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var ve={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};function Se(e,a,_,s){var d={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?d[_][0]:d[_][1]}function je(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10;return 0==a?je(e/10):je(a)}if(e<1e4){for(;10<=e;)e/=10;return je(e)}return je(e/=1e3)}e.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(e){return e+(ve[e]||ve[e%10]||ve[100<=e?100:null])},week:{dow:1,doy:7}}),e.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return je(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return je(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:Se,mm:"%d Minutten",h:Se,hh:"%d Stonnen",d:Se,dd:"%d Deeg",M:Se,MM:"%d M\xe9int",y:Se,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(e){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===e},meridiem:function(e,a,_){return e<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(e){return"\u0e97\u0eb5\u0ec8"+e}});var xe={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function Pe(e,a,_,s){return a?Ae(_)[0]:s?Ae(_)[1]:Ae(_)[2]}function We(e){return e%10==0||10<e&&e<20}function Ae(e){return xe[e].split("_")}function Oe(e,a,_,s){var d=e+" ";return 1===e?d+Pe(0,a,_[0],s):a?d+(We(e)?Ae(_)[1]:Ae(_)[0]):s?d+Ae(_)[1]:d+(We(e)?Ae(_)[1]:Ae(_)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(e,a,_,s){return a?"kelios sekund\u0117s":s?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:Oe,m:Pe,mm:Oe,h:Pe,hh:Oe,d:Pe,dd:Oe,M:Pe,MM:Oe,y:Pe,yy:Oe},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});var Ee={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function Fe(e,a,_){return _?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function ze(e,a,_){return e+" "+Fe(Ee[_],e,a)}function Je(e,a,_){return Fe(Ee[_],e,a)}e.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(e,a){return a?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:ze,m:Je,mm:ze,h:Je,hh:ze,d:Je,dd:ze,M:Je,MM:ze,y:Je,yy:ze},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Ie={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,_){var s=Ie.words[_];return 1===_.length?a?s[0]:s[1]:e+" "+Ie.correctGrammaticalCase(e,s)}};function Ne(e,a,_,s){switch(_){case"s":return a?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return e+(a?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return e+(a?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return e+(a?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return e+(a?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return e+(a?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return e+(a?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return e}}e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:Ie.translate,m:Ie.translate,mm:Ie.translate,h:Ie.translate,hh:Ie.translate,d:"dan",dd:Ie.translate,M:"mjesec",MM:Ie.translate,y:"godinu",yy:Ie.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),e.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u0435\u0434\u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0435\u0434\u0435\u043d \u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0435\u0434\u0435\u043d \u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,_=e%100;return 0===e?e+"-\u0435\u0432":0==_?e+"-\u0435\u043d":10<_&&_<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),e.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&4<=e||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?e+12:e},meridiem:function(e,a,_){return e<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":e<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":e<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":e<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}}),e.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(e){return"\u04ae\u0425"===e},meridiem:function(e,a,_){return e<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:Ne,ss:Ne,m:Ne,mm:Ne,h:Ne,hh:Ne,d:Ne,dd:Ne,M:Ne,MM:Ne,y:Ne,yy:Ne},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" \u04e9\u0434\u04e9\u0440";default:return e}}});var Re={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Ce={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function Ke(e,a,_,s){var d="";if(a)switch(_){case"s":d="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":d="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":d="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":d="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":d="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":d="%d \u0924\u093e\u0938";break;case"d":d="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":d="%d \u0926\u093f\u0935\u0938";break;case"M":d="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":d="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":d="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":d="%d \u0935\u0930\u094d\u0937\u0947";break}else switch(_){case"s":d="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":d="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":d="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":d="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":d="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":d="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":d="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":d="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":d="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":d="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":d="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":d="%d \u0935\u0930\u094d\u0937\u093e\u0902";break}return d.replace(/%d/i,e)}e.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:Ke,ss:Ke,m:Ke,mm:Ke,h:Ke,hh:Ke,d:Ke,dd:Ke,M:Ke,MM:Ke,y:Ke,yy:Ke},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Ce[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Re[e]})},meridiemParse:/\u092a\u0939\u093e\u091f\u0947|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940|\u0930\u093e\u0924\u094d\u0930\u0940/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u092a\u0939\u093e\u091f\u0947"===a||"\u0938\u0915\u093e\u0933\u0940"===a?e:"\u0926\u0941\u092a\u093e\u0930\u0940"===a||"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===a||"\u0930\u093e\u0924\u094d\u0930\u0940"===a?12<=e?e:e+12:void 0},meridiem:function(e,a,_){return 0<=e&&e<6?"\u092a\u0939\u093e\u091f\u0947":e<12?"\u0938\u0915\u093e\u0933\u0940":e<17?"\u0926\u0941\u092a\u093e\u0930\u0940":e<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}}),e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,_){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,_){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[G\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var Ge={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},Be={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};e.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(e){return Be[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Ge[e]})},week:{dow:1,doy:4}}),e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var qe={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Ue={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};e.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Ue[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return qe[e]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===a?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===a?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===a?10<=e?e:e+12:"\u0938\u093e\u0901\u091d"===a?e+12:void 0},meridiem:function(e,a,_){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}});var $e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),Qe="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),Ve=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],Ze=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Qe[e.month()]:$e[e.month()]:$e},monthsRegex:Ze,monthsShortRegex:Ze,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:Ve,longMonthsParse:Ve,shortMonthsParse:Ve,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});var Xe="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),ea="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),aa=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],_a=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?ea[e.month()]:Xe[e.month()]:Xe},monthsRegex:_a,monthsShortRegex:_a,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:aa,longMonthsParse:aa,shortMonthsParse:aa,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._m\xe5._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("oc-lnc",{months:{standalone:"geni\xe8r_febri\xe8r_mar\xe7_abril_mai_junh_julhet_agost_setembre_oct\xf2bre_novembre_decembre".split("_"),format:"de geni\xe8r_de febri\xe8r_de mar\xe7_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct\xf2bre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dim\xe8cres_dij\xf2us_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[u\xe8i a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[i\xe8r a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}});var sa={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},da={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};e.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(e){return da[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return sa[e]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===a?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===a?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===a?10<=e?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}});var ta="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),na="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");function ra(e){return e%10<5&&1<e%10&&~~(e/10)%10!=1}function ia(e,a,_){var s=e+" ";switch(_){case"ss":return s+(ra(e)?"sekundy":"sekund");case"m":return a?"minuta":"minut\u0119";case"mm":return s+(ra(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return s+(ra(e)?"godziny":"godzin");case"MM":return s+(ra(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return s+(ra(e)?"lata":"lat")}}function ma(e,a,_){return e+(20<=e%100||100<=e&&e%100==0?" de ":" ")+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[_]}function oa(e,a,_){var s,d;return"m"===_?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(s=+e,d={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[_].split("_"),s%10==1&&s%100!=11?d[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?d[1]:d[2])}e.defineLocale("pl",{months:function(e,a){return e?""===a?"("+na[e.month()]+"|"+ta[e.month()]+")":/D MMMM/.test(a)?na[e.month()]:ta[e.month()]:ta},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:ia,m:ia,mm:ia,h:ia,hh:ia,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:ia,y:"rok",yy:ia},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"}),e.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:ma,m:"un minut",mm:ma,h:"o or\u0103",hh:ma,d:"o zi",dd:ma,M:"o lun\u0103",MM:ma,y:"un an",yy:ma},week:{dow:1,doy:7}});var ua=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];e.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:ua,longMonthsParse:ua,shortMonthsParse:ua,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:oa,m:oa,mm:oa,h:"\u0447\u0430\u0441",hh:oa,d:"\u0434\u0435\u043d\u044c",dd:oa,M:"\u043c\u0435\u0441\u044f\u0446",MM:oa,y:"\u0433\u043e\u0434",yy:oa},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(e)},meridiem:function(e,a,_){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:4}});var la=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],Ma=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];e.defineLocale("sd",{months:la,monthsShort:la,weekdays:Ma,weekdaysShort:Ma,weekdaysMin:Ma,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),e.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(e){return e+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(e){return"\u0db4.\u0dc0."===e||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===e},meridiem:function(e,a,_){return 11<e?_?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":_?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}});var La="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),Ya="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function ha(e){return 1<e&&e<5}function ya(e,a,_,s){var d=e+" ";switch(_){case"s":return a||s?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return a||s?d+(ha(e)?"sekundy":"sek\xfand"):d+"sekundami";case"m":return a?"min\xfata":s?"min\xfatu":"min\xfatou";case"mm":return a||s?d+(ha(e)?"min\xfaty":"min\xfat"):d+"min\xfatami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?d+(ha(e)?"hodiny":"hod\xedn"):d+"hodinami";case"d":return a||s?"de\u0148":"d\u0148om";case"dd":return a||s?d+(ha(e)?"dni":"dn\xed"):d+"d\u0148ami";case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?d+(ha(e)?"mesiace":"mesiacov"):d+"mesiacmi";case"y":return a||s?"rok":"rokom";case"yy":return a||s?d+(ha(e)?"roky":"rokov"):d+"rokmi"}}function ca(e,a,_,s){var d=e+" ";switch(_){case"s":return a||s?"nekaj sekund":"nekaj sekundami";case"ss":return d+=1===e?a?"sekundo":"sekundi":2===e?a||s?"sekundi":"sekundah":e<5?a||s?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return d+=1===e?a?"minuta":"minuto":2===e?a||s?"minuti":"minutama":e<5?a||s?"minute":"minutami":a||s?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return d+=1===e?a?"ura":"uro":2===e?a||s?"uri":"urama":e<5?a||s?"ure":"urami":a||s?"ur":"urami";case"d":return a||s?"en dan":"enim dnem";case"dd":return d+=1===e?a||s?"dan":"dnem":2===e?a||s?"dni":"dnevoma":a||s?"dni":"dnevi";case"M":return a||s?"en mesec":"enim mesecem";case"MM":return d+=1===e?a||s?"mesec":"mesecem":2===e?a||s?"meseca":"mesecema":e<5?a||s?"mesece":"meseci":a||s?"mesecev":"meseci";case"y":return a||s?"eno leto":"enim letom";case"yy":return d+=1===e?a||s?"leto":"letom":2===e?a||s?"leti":"letoma":e<5?a||s?"leta":"leti":a||s?"let":"leti"}}e.defineLocale("sk",{months:La,monthsShort:Ya,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:ya,ss:ya,m:ya,mm:ya,h:ya,hh:ya,d:ya,dd:ya,M:ya,MM:ya,y:ya,yy:ya},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:ca,ss:ca,m:ca,mm:ca,h:ca,hh:ca,d:ca,dd:ca,M:ca,MM:ca,y:ca,yy:ca},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,_){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var ka={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,_){var s=ka.words[_];return 1===_.length?a?s[0]:s[1]:e+" "+ka.correctGrammaticalCase(e,s)}};e.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:ka.translate,m:ka.translate,mm:ka.translate,h:ka.translate,hh:ka.translate,d:"\u0434\u0430\u043d",dd:ka.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:ka.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",yy:ka.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Da={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,_){var s=Da.words[_];return 1===_.length?a?s[0]:s[1]:e+" "+Da.correctGrammaticalCase(e,s)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:Da.translate,m:Da.translate,mm:Da.translate,h:Da.translate,hh:Da.translate,d:"dan",dd:Da.translate,M:"mesec",MM:Da.translate,y:"godinu",yy:Da.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,_){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?11<=e?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10;return e+(1!=~~(e%100/10)&&(1==a||2==a)?":a":":e")},week:{dow:1,doy:4}}),e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});var pa={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},Ta={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};e.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(e){return Ta[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return pa[e]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,a,_){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,a){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===a?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===a||"\u0b95\u0bbe\u0bb2\u0bc8"===a||"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===a&&10<=e?e:e+12},week:{dow:0,doy:6}}),e.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?e<4?e:e+12:"\u0c09\u0c26\u0c2f\u0c02"===a?e:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?10<=e?e:e+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":e<10?"\u0c09\u0c26\u0c2f\u0c02":e<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":e<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}}),e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}});var fa={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};e.defineLocale("tg",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u041f\u0430\u0433\u043e\u04b3 \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0448\u0430\u0431"===a?e<4?e:e+12:"\u0441\u0443\u0431\u04b3"===a?e:"\u0440\u04ef\u0437"===a?11<=e?e:e+12:"\u0431\u0435\u0433\u043e\u04b3"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0448\u0430\u0431":e<11?"\u0441\u0443\u0431\u04b3":e<16?"\u0440\u04ef\u0437":e<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(e){return e+(fa[e]||fa[e%10]||fa[100<=e?100:null])},week:{dow:1,doy:7}}),e.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(e){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===e},meridiem:function(e,a,_){return e<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}});var ga={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'\xfcnji",4:"'\xfcnji",100:"'\xfcnji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[d\xfc\xfdn] LT",lastWeek:"[ge\xe7en] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var _=e%10;return e+(ga[_]||ga[e%100-_]||ga[100<=e?100:null])}},week:{dow:1,doy:7}}),e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});var wa="pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function Ha(e,a,_,s){var d=function(e){var a=Math.floor(e%1e3/100),_=Math.floor(e%100/10),s=e%10,d="";0<a&&(d+=wa[a]+"vatlh");0<_&&(d+=(""!==d?" ":"")+wa[_]+"maH");0<s&&(d+=(""!==d?" ":"")+wa[s]);return""===d?"pagh":d}(e);switch(_){case"ss":return d+" lup";case"mm":return d+" tup";case"hh":return d+" rep";case"dd":return d+" jaj";case"MM":return d+" jar";case"yy":return d+" DIS"}}e.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu\u2019":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:Ha,m:"wa\u2019 tup",mm:Ha,h:"wa\u2019 rep",hh:Ha,d:"wa\u2019 jaj",dd:Ha,M:"wa\u2019 jar",MM:Ha,y:"wa\u2019 DIS",yy:Ha},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var ba={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};function va(e,a,_,s){var d={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[e+" m\xeduts",e+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[e+" \xfeoras",e+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s||a?d[_][0]:d[_][1]}function Sa(e,a,_){var s,d;return"m"===_?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===_?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(s=+e,d={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:a?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[_].split("_"),s%10==1&&s%100!=11?d[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?d[1]:d[2])}function ja(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}e.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),meridiem:function(e,a,_){return e<12?_?"\xf6\xf6":"\xd6\xd6":_?"\xf6s":"\xd6S"},meridiemParse:/\xf6\xf6|\xd6\xd6|\xf6s|\xd6S/,isPM:function(e){return"\xf6s"===e||"\xd6S"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'\u0131nc\u0131";var _=e%10;return e+(ba[_]||ba[e%100-_]||ba[100<=e?100:null])}},week:{dow:1,doy:7}}),e.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,_){return 11<e?_?"d'o":"D'O":_?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:va,ss:va,m:va,mm:va,h:va,hh:va,d:va,dd:va,M:va,MM:va,y:va,yy:va},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),e.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}}),e.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"!==a&&"\u0643\u06d5\u0686"!==a&&11<=e?e:e+12},meridiem:function(e,a,_){var s=100*e+a;return s<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":s<900?"\u0633\u06d5\u06be\u06d5\u0631":s<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":s<1230?"\u0686\u06c8\u0634":s<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return e+"-\u06be\u06d5\u067e\u062a\u06d5";default:return e}},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:7}}),e.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(e,a){var _={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===e?_.nominative.slice(1,7).concat(_.nominative.slice(0,1)):e?_[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(a)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:_.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:ja("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:ja("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:ja("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:ja("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return ja("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return ja("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:Sa,m:Sa,mm:Sa,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:Sa,d:"\u0434\u0435\u043d\u044c",dd:Sa,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:Sa,y:"\u0440\u0456\u043a",yy:Sa},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(e)},meridiem:function(e,a,_){return e<4?"\u043d\u043e\u0447\u0456":e<12?"\u0440\u0430\u043d\u043a\u0443":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}});var xa=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],Pa=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];return e.defineLocale("ur",{months:xa,monthsShort:xa,weekdays:Pa,weekdaysShort:Pa,weekdaysMin:Pa,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),e.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}}),e.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,_){return e<12?_?"sa":"SA":_?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[H\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n tr\u01b0\u1edbc l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),e.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}}),e.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a||"\u4e0b\u5348"!==a&&"\u665a\u4e0a"!==a&&11<=e?e:e+12},meridiem:function(e,a,_){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:function(e){return e.week()!==this.week()?"[\u4e0b]dddLT":"[\u672c]dddLT"},lastDay:"[\u6628\u5929]LT",lastWeek:function(e){return this.week()!==e.week()?"[\u4e0a]dddLT":"[\u672c]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}),e.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,_){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1200?"\u4e0a\u5348":1200===s?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),e.defineLocale("zh-mo",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"D/M/YYYY",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,_){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),e.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,_){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),e.locale("en"),e});
+//# sourceMappingURL=locales.min.js.map
\ No newline at end of file
diff --git a/admin/js/vendors/moment/locales.min.js.map b/admin/js/vendors/moment/locales.min.js.map
new file mode 100644 (file)
index 0000000..d5df049
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"locales.min.js","sources":["locales.js"],"names":["global","factory","exports","module","require","define","amd","moment","this","defineLocale","months","split","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","input","test","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","m","mm","h","hh","d","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","pluralForm","n","pluralize","u","withoutSuffix","string","isFuture","f","str","plurals","replace","weekdaysParseExact","hour","minute","postformat","pluralForm$1","pluralize$1","plurals$1","symbolMap","1","2","3","4","5","6","7","8","9","0","months$1","preparse","match","symbolMap$1","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","pluralForm$2","pluralize$2","plurals$2","symbolMap$2","numberMap$1","months$2","suffixes","70","80","20","50","100","10","30","60","90","relativeTimeWithPlural","key","num","forms","a","format","standalone","isFormat","day","period","lastDigit","last2Digits","symbolMap$3","numberMap$2","১","২","৩","৪","৫","৬","৭","৮","৯","০","meridiemHour","symbolMap$4","numberMap$3","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","relativeTimeWithMutation","text","mutationTable","b","undefined","charAt","substring","softMutation","monthsShortRegex","monthsParseExact","monthsParse","monthsRegex","minWeekdaysParse","translate","result","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","token","ll","lll","llll","months$3","monthsParse$1","monthsRegex$1","plural$1","translate$1","processRelativeTime","w","processRelativeTime$1","processRelativeTime$2","l","output","exec","ww","months$4","monthsNominativeEl","monthsGenitiveEl","momentToFormat","indexOf","_monthsGenitiveEl","month","_monthsNominativeEl","toLowerCase","calendarEl","mom","_calendarEl","Function","Object","prototype","toString","call","apply","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$2","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$3","monthsShortDot$2","monthsShort$3","monthsParse$4","monthsRegex$4","processRelativeTime$3","invalidDate","symbolMap$5","numberMap$4","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","numbersPast","numbersFuture","translate$2","monthsRegex$5","monthsParse$5","monthsShortWithDots","monthsShortWithoutDots","processRelativeTime$4","processRelativeTime$5","symbolMap$6","numberMap$5","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","symbolMap$7","numberMap$6","१","२","३","४","५","६","७","८","९","०","translate$3","weekEndings","translate$4","plural$2","translate$5","eras","since","offset","name","narrow","abbr","until","Infinity","eraYearOrdinalRegex","eraYearOrdinalParse","parseInt","now","$0","$1","$2","suffixes$1","40","symbolMap$8","numberMap$7","១","២","៣","៤","៥","៦","៧","៨","៩","០","symbolMap$9","numberMap$8","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","isUpper","symbolMap$a","numberMap$9","months$7","suffixes$2","processRelativeTime$6","eifelerRegelAppliesToNumber","isNaN","substr","units","translateSingular","special","translate$6","units$1","relativeTimeWithPlural$1","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","length","translate$7","symbolMap$b","numberMap$a","relativeTimeMr","symbolMap$c","numberMap$b","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","symbolMap$d","numberMap$c","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$6","monthsRegex$6","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$7","monthsRegex$7","symbolMap$e","numberMap$d","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","monthsNominative","monthsSubjective","plural$3","translate$8","relativeTimeWithPlural$2","relativeTimeWithPlural$3","monthsParse$8","months$8","days","months$9","monthsShort$6","plural$5","translate$9","processRelativeTime$7","translator$1","translator$2","symbolMap$f","numberMap$e","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","suffixes$3","12","13","suffixes$4","numbersNouns","translate$a","numberNoun","hundred","Math","floor","ten","one","word","numberAsNoun","time","slice","suffixes$5","processRelativeTime$8","relativeTimeWithPlural$4","processHoursFunction","hm","nominative","accusative","genitive","concat","months$a","days$1","locale"],"mappings":"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"}
\ No newline at end of file
diff --git a/admin/js/vendors/moment/moment-with-locales.js b/admin/js/vendors/moment/moment-with-locales.js
new file mode 100644 (file)
index 0000000..94903ff
--- /dev/null
@@ -0,0 +1,17757 @@
+;(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    global.moment = factory()
+}(this, (function () { 'use strict';
+
+    var hookCallback;
+
+    function hooks() {
+        return hookCallback.apply(null, arguments);
+    }
+
+    // This is done to register the method called with moment()
+    // without creating circular dependencies.
+    function setHookCallback(callback) {
+        hookCallback = callback;
+    }
+
+    function isArray(input) {
+        return (
+            input instanceof Array ||
+            Object.prototype.toString.call(input) === '[object Array]'
+        );
+    }
+
+    function isObject(input) {
+        // IE8 will treat undefined and null as object if it wasn't for
+        // input != null
+        return (
+            input != null &&
+            Object.prototype.toString.call(input) === '[object Object]'
+        );
+    }
+
+    function hasOwnProp(a, b) {
+        return Object.prototype.hasOwnProperty.call(a, b);
+    }
+
+    function isObjectEmpty(obj) {
+        if (Object.getOwnPropertyNames) {
+            return Object.getOwnPropertyNames(obj).length === 0;
+        } else {
+            var k;
+            for (k in obj) {
+                if (hasOwnProp(obj, k)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    function isUndefined(input) {
+        return input === void 0;
+    }
+
+    function isNumber(input) {
+        return (
+            typeof input === 'number' ||
+            Object.prototype.toString.call(input) === '[object Number]'
+        );
+    }
+
+    function isDate(input) {
+        return (
+            input instanceof Date ||
+            Object.prototype.toString.call(input) === '[object Date]'
+        );
+    }
+
+    function map(arr, fn) {
+        var res = [],
+            i;
+        for (i = 0; i < arr.length; ++i) {
+            res.push(fn(arr[i], i));
+        }
+        return res;
+    }
+
+    function extend(a, b) {
+        for (var i in b) {
+            if (hasOwnProp(b, i)) {
+                a[i] = b[i];
+            }
+        }
+
+        if (hasOwnProp(b, 'toString')) {
+            a.toString = b.toString;
+        }
+
+        if (hasOwnProp(b, 'valueOf')) {
+            a.valueOf = b.valueOf;
+        }
+
+        return a;
+    }
+
+    function createUTC(input, format, locale, strict) {
+        return createLocalOrUTC(input, format, locale, strict, true).utc();
+    }
+
+    function defaultParsingFlags() {
+        // We need to deep clone this object.
+        return {
+            empty: false,
+            unusedTokens: [],
+            unusedInput: [],
+            overflow: -2,
+            charsLeftOver: 0,
+            nullInput: false,
+            invalidEra: null,
+            invalidMonth: null,
+            invalidFormat: false,
+            userInvalidated: false,
+            iso: false,
+            parsedDateParts: [],
+            era: null,
+            meridiem: null,
+            rfc2822: false,
+            weekdayMismatch: false,
+        };
+    }
+
+    function getParsingFlags(m) {
+        if (m._pf == null) {
+            m._pf = defaultParsingFlags();
+        }
+        return m._pf;
+    }
+
+    var some;
+    if (Array.prototype.some) {
+        some = Array.prototype.some;
+    } else {
+        some = function (fun) {
+            var t = Object(this),
+                len = t.length >>> 0,
+                i;
+
+            for (i = 0; i < len; i++) {
+                if (i in t && fun.call(this, t[i], i, t)) {
+                    return true;
+                }
+            }
+
+            return false;
+        };
+    }
+
+    function isValid(m) {
+        if (m._isValid == null) {
+            var flags = getParsingFlags(m),
+                parsedParts = some.call(flags.parsedDateParts, function (i) {
+                    return i != null;
+                }),
+                isNowValid =
+                    !isNaN(m._d.getTime()) &&
+                    flags.overflow < 0 &&
+                    !flags.empty &&
+                    !flags.invalidEra &&
+                    !flags.invalidMonth &&
+                    !flags.invalidWeekday &&
+                    !flags.weekdayMismatch &&
+                    !flags.nullInput &&
+                    !flags.invalidFormat &&
+                    !flags.userInvalidated &&
+                    (!flags.meridiem || (flags.meridiem && parsedParts));
+
+            if (m._strict) {
+                isNowValid =
+                    isNowValid &&
+                    flags.charsLeftOver === 0 &&
+                    flags.unusedTokens.length === 0 &&
+                    flags.bigHour === undefined;
+            }
+
+            if (Object.isFrozen == null || !Object.isFrozen(m)) {
+                m._isValid = isNowValid;
+            } else {
+                return isNowValid;
+            }
+        }
+        return m._isValid;
+    }
+
+    function createInvalid(flags) {
+        var m = createUTC(NaN);
+        if (flags != null) {
+            extend(getParsingFlags(m), flags);
+        } else {
+            getParsingFlags(m).userInvalidated = true;
+        }
+
+        return m;
+    }
+
+    // Plugins that add properties should also add the key here (null value),
+    // so we can properly clone ourselves.
+    var momentProperties = (hooks.momentProperties = []),
+        updateInProgress = false;
+
+    function copyConfig(to, from) {
+        var i, prop, val;
+
+        if (!isUndefined(from._isAMomentObject)) {
+            to._isAMomentObject = from._isAMomentObject;
+        }
+        if (!isUndefined(from._i)) {
+            to._i = from._i;
+        }
+        if (!isUndefined(from._f)) {
+            to._f = from._f;
+        }
+        if (!isUndefined(from._l)) {
+            to._l = from._l;
+        }
+        if (!isUndefined(from._strict)) {
+            to._strict = from._strict;
+        }
+        if (!isUndefined(from._tzm)) {
+            to._tzm = from._tzm;
+        }
+        if (!isUndefined(from._isUTC)) {
+            to._isUTC = from._isUTC;
+        }
+        if (!isUndefined(from._offset)) {
+            to._offset = from._offset;
+        }
+        if (!isUndefined(from._pf)) {
+            to._pf = getParsingFlags(from);
+        }
+        if (!isUndefined(from._locale)) {
+            to._locale = from._locale;
+        }
+
+        if (momentProperties.length > 0) {
+            for (i = 0; i < momentProperties.length; i++) {
+                prop = momentProperties[i];
+                val = from[prop];
+                if (!isUndefined(val)) {
+                    to[prop] = val;
+                }
+            }
+        }
+
+        return to;
+    }
+
+    // Moment prototype object
+    function Moment(config) {
+        copyConfig(this, config);
+        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
+        if (!this.isValid()) {
+            this._d = new Date(NaN);
+        }
+        // Prevent infinite loop in case updateOffset creates new moment
+        // objects.
+        if (updateInProgress === false) {
+            updateInProgress = true;
+            hooks.updateOffset(this);
+            updateInProgress = false;
+        }
+    }
+
+    function isMoment(obj) {
+        return (
+            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
+        );
+    }
+
+    function warn(msg) {
+        if (
+            hooks.suppressDeprecationWarnings === false &&
+            typeof console !== 'undefined' &&
+            console.warn
+        ) {
+            console.warn('Deprecation warning: ' + msg);
+        }
+    }
+
+    function deprecate(msg, fn) {
+        var firstTime = true;
+
+        return extend(function () {
+            if (hooks.deprecationHandler != null) {
+                hooks.deprecationHandler(null, msg);
+            }
+            if (firstTime) {
+                var args = [],
+                    arg,
+                    i,
+                    key;
+                for (i = 0; i < arguments.length; i++) {
+                    arg = '';
+                    if (typeof arguments[i] === 'object') {
+                        arg += '\n[' + i + '] ';
+                        for (key in arguments[0]) {
+                            if (hasOwnProp(arguments[0], key)) {
+                                arg += key + ': ' + arguments[0][key] + ', ';
+                            }
+                        }
+                        arg = arg.slice(0, -2); // Remove trailing comma and space
+                    } else {
+                        arg = arguments[i];
+                    }
+                    args.push(arg);
+                }
+                warn(
+                    msg +
+                        '\nArguments: ' +
+                        Array.prototype.slice.call(args).join('') +
+                        '\n' +
+                        new Error().stack
+                );
+                firstTime = false;
+            }
+            return fn.apply(this, arguments);
+        }, fn);
+    }
+
+    var deprecations = {};
+
+    function deprecateSimple(name, msg) {
+        if (hooks.deprecationHandler != null) {
+            hooks.deprecationHandler(name, msg);
+        }
+        if (!deprecations[name]) {
+            warn(msg);
+            deprecations[name] = true;
+        }
+    }
+
+    hooks.suppressDeprecationWarnings = false;
+    hooks.deprecationHandler = null;
+
+    function isFunction(input) {
+        return (
+            (typeof Function !== 'undefined' && input instanceof Function) ||
+            Object.prototype.toString.call(input) === '[object Function]'
+        );
+    }
+
+    function set(config) {
+        var prop, i;
+        for (i in config) {
+            if (hasOwnProp(config, i)) {
+                prop = config[i];
+                if (isFunction(prop)) {
+                    this[i] = prop;
+                } else {
+                    this['_' + i] = prop;
+                }
+            }
+        }
+        this._config = config;
+        // Lenient ordinal parsing accepts just a number in addition to
+        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
+        // TODO: Remove "ordinalParse" fallback in next major release.
+        this._dayOfMonthOrdinalParseLenient = new RegExp(
+            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
+                '|' +
+                /\d{1,2}/.source
+        );
+    }
+
+    function mergeConfigs(parentConfig, childConfig) {
+        var res = extend({}, parentConfig),
+            prop;
+        for (prop in childConfig) {
+            if (hasOwnProp(childConfig, prop)) {
+                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
+                    res[prop] = {};
+                    extend(res[prop], parentConfig[prop]);
+                    extend(res[prop], childConfig[prop]);
+                } else if (childConfig[prop] != null) {
+                    res[prop] = childConfig[prop];
+                } else {
+                    delete res[prop];
+                }
+            }
+        }
+        for (prop in parentConfig) {
+            if (
+                hasOwnProp(parentConfig, prop) &&
+                !hasOwnProp(childConfig, prop) &&
+                isObject(parentConfig[prop])
+            ) {
+                // make sure changes to properties don't modify parent config
+                res[prop] = extend({}, res[prop]);
+            }
+        }
+        return res;
+    }
+
+    function Locale(config) {
+        if (config != null) {
+            this.set(config);
+        }
+    }
+
+    var keys;
+
+    if (Object.keys) {
+        keys = Object.keys;
+    } else {
+        keys = function (obj) {
+            var i,
+                res = [];
+            for (i in obj) {
+                if (hasOwnProp(obj, i)) {
+                    res.push(i);
+                }
+            }
+            return res;
+        };
+    }
+
+    var defaultCalendar = {
+        sameDay: '[Today at] LT',
+        nextDay: '[Tomorrow at] LT',
+        nextWeek: 'dddd [at] LT',
+        lastDay: '[Yesterday at] LT',
+        lastWeek: '[Last] dddd [at] LT',
+        sameElse: 'L',
+    };
+
+    function calendar(key, mom, now) {
+        var output = this._calendar[key] || this._calendar['sameElse'];
+        return isFunction(output) ? output.call(mom, now) : output;
+    }
+
+    function zeroFill(number, targetLength, forceSign) {
+        var absNumber = '' + Math.abs(number),
+            zerosToFill = targetLength - absNumber.length,
+            sign = number >= 0;
+        return (
+            (sign ? (forceSign ? '+' : '') : '-') +
+            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
+            absNumber
+        );
+    }
+
+    var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
+        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
+        formatFunctions = {},
+        formatTokenFunctions = {};
+
+    // token:    'M'
+    // padded:   ['MM', 2]
+    // ordinal:  'Mo'
+    // callback: function () { this.month() + 1 }
+    function addFormatToken(token, padded, ordinal, callback) {
+        var func = callback;
+        if (typeof callback === 'string') {
+            func = function () {
+                return this[callback]();
+            };
+        }
+        if (token) {
+            formatTokenFunctions[token] = func;
+        }
+        if (padded) {
+            formatTokenFunctions[padded[0]] = function () {
+                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
+            };
+        }
+        if (ordinal) {
+            formatTokenFunctions[ordinal] = function () {
+                return this.localeData().ordinal(
+                    func.apply(this, arguments),
+                    token
+                );
+            };
+        }
+    }
+
+    function removeFormattingTokens(input) {
+        if (input.match(/\[[\s\S]/)) {
+            return input.replace(/^\[|\]$/g, '');
+        }
+        return input.replace(/\\/g, '');
+    }
+
+    function makeFormatFunction(format) {
+        var array = format.match(formattingTokens),
+            i,
+            length;
+
+        for (i = 0, length = array.length; i < length; i++) {
+            if (formatTokenFunctions[array[i]]) {
+                array[i] = formatTokenFunctions[array[i]];
+            } else {
+                array[i] = removeFormattingTokens(array[i]);
+            }
+        }
+
+        return function (mom) {
+            var output = '',
+                i;
+            for (i = 0; i < length; i++) {
+                output += isFunction(array[i])
+                    ? array[i].call(mom, format)
+                    : array[i];
+            }
+            return output;
+        };
+    }
+
+    // format date using native date object
+    function formatMoment(m, format) {
+        if (!m.isValid()) {
+            return m.localeData().invalidDate();
+        }
+
+        format = expandFormat(format, m.localeData());
+        formatFunctions[format] =
+            formatFunctions[format] || makeFormatFunction(format);
+
+        return formatFunctions[format](m);
+    }
+
+    function expandFormat(format, locale) {
+        var i = 5;
+
+        function replaceLongDateFormatTokens(input) {
+            return locale.longDateFormat(input) || input;
+        }
+
+        localFormattingTokens.lastIndex = 0;
+        while (i >= 0 && localFormattingTokens.test(format)) {
+            format = format.replace(
+                localFormattingTokens,
+                replaceLongDateFormatTokens
+            );
+            localFormattingTokens.lastIndex = 0;
+            i -= 1;
+        }
+
+        return format;
+    }
+
+    var defaultLongDateFormat = {
+        LTS: 'h:mm:ss A',
+        LT: 'h:mm A',
+        L: 'MM/DD/YYYY',
+        LL: 'MMMM D, YYYY',
+        LLL: 'MMMM D, YYYY h:mm A',
+        LLLL: 'dddd, MMMM D, YYYY h:mm A',
+    };
+
+    function longDateFormat(key) {
+        var format = this._longDateFormat[key],
+            formatUpper = this._longDateFormat[key.toUpperCase()];
+
+        if (format || !formatUpper) {
+            return format;
+        }
+
+        this._longDateFormat[key] = formatUpper
+            .match(formattingTokens)
+            .map(function (tok) {
+                if (
+                    tok === 'MMMM' ||
+                    tok === 'MM' ||
+                    tok === 'DD' ||
+                    tok === 'dddd'
+                ) {
+                    return tok.slice(1);
+                }
+                return tok;
+            })
+            .join('');
+
+        return this._longDateFormat[key];
+    }
+
+    var defaultInvalidDate = 'Invalid date';
+
+    function invalidDate() {
+        return this._invalidDate;
+    }
+
+    var defaultOrdinal = '%d',
+        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
+
+    function ordinal(number) {
+        return this._ordinal.replace('%d', number);
+    }
+
+    var defaultRelativeTime = {
+        future: 'in %s',
+        past: '%s ago',
+        s: 'a few seconds',
+        ss: '%d seconds',
+        m: 'a minute',
+        mm: '%d minutes',
+        h: 'an hour',
+        hh: '%d hours',
+        d: 'a day',
+        dd: '%d days',
+        w: 'a week',
+        ww: '%d weeks',
+        M: 'a month',
+        MM: '%d months',
+        y: 'a year',
+        yy: '%d years',
+    };
+
+    function relativeTime(number, withoutSuffix, string, isFuture) {
+        var output = this._relativeTime[string];
+        return isFunction(output)
+            ? output(number, withoutSuffix, string, isFuture)
+            : output.replace(/%d/i, number);
+    }
+
+    function pastFuture(diff, output) {
+        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
+        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
+    }
+
+    var aliases = {};
+
+    function addUnitAlias(unit, shorthand) {
+        var lowerCase = unit.toLowerCase();
+        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
+    }
+
+    function normalizeUnits(units) {
+        return typeof units === 'string'
+            ? aliases[units] || aliases[units.toLowerCase()]
+            : undefined;
+    }
+
+    function normalizeObjectUnits(inputObject) {
+        var normalizedInput = {},
+            normalizedProp,
+            prop;
+
+        for (prop in inputObject) {
+            if (hasOwnProp(inputObject, prop)) {
+                normalizedProp = normalizeUnits(prop);
+                if (normalizedProp) {
+                    normalizedInput[normalizedProp] = inputObject[prop];
+                }
+            }
+        }
+
+        return normalizedInput;
+    }
+
+    var priorities = {};
+
+    function addUnitPriority(unit, priority) {
+        priorities[unit] = priority;
+    }
+
+    function getPrioritizedUnits(unitsObj) {
+        var units = [],
+            u;
+        for (u in unitsObj) {
+            if (hasOwnProp(unitsObj, u)) {
+                units.push({ unit: u, priority: priorities[u] });
+            }
+        }
+        units.sort(function (a, b) {
+            return a.priority - b.priority;
+        });
+        return units;
+    }
+
+    function isLeapYear(year) {
+        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
+    }
+
+    function absFloor(number) {
+        if (number < 0) {
+            // -0 -> 0
+            return Math.ceil(number) || 0;
+        } else {
+            return Math.floor(number);
+        }
+    }
+
+    function toInt(argumentForCoercion) {
+        var coercedNumber = +argumentForCoercion,
+            value = 0;
+
+        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
+            value = absFloor(coercedNumber);
+        }
+
+        return value;
+    }
+
+    function makeGetSet(unit, keepTime) {
+        return function (value) {
+            if (value != null) {
+                set$1(this, unit, value);
+                hooks.updateOffset(this, keepTime);
+                return this;
+            } else {
+                return get(this, unit);
+            }
+        };
+    }
+
+    function get(mom, unit) {
+        return mom.isValid()
+            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()
+            : NaN;
+    }
+
+    function set$1(mom, unit, value) {
+        if (mom.isValid() && !isNaN(value)) {
+            if (
+                unit === 'FullYear' &&
+                isLeapYear(mom.year()) &&
+                mom.month() === 1 &&
+                mom.date() === 29
+            ) {
+                value = toInt(value);
+                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](
+                    value,
+                    mom.month(),
+                    daysInMonth(value, mom.month())
+                );
+            } else {
+                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
+            }
+        }
+    }
+
+    // MOMENTS
+
+    function stringGet(units) {
+        units = normalizeUnits(units);
+        if (isFunction(this[units])) {
+            return this[units]();
+        }
+        return this;
+    }
+
+    function stringSet(units, value) {
+        if (typeof units === 'object') {
+            units = normalizeObjectUnits(units);
+            var prioritized = getPrioritizedUnits(units),
+                i;
+            for (i = 0; i < prioritized.length; i++) {
+                this[prioritized[i].unit](units[prioritized[i].unit]);
+            }
+        } else {
+            units = normalizeUnits(units);
+            if (isFunction(this[units])) {
+                return this[units](value);
+            }
+        }
+        return this;
+    }
+
+    var match1 = /\d/, //       0 - 9
+        match2 = /\d\d/, //      00 - 99
+        match3 = /\d{3}/, //     000 - 999
+        match4 = /\d{4}/, //    0000 - 9999
+        match6 = /[+-]?\d{6}/, // -999999 - 999999
+        match1to2 = /\d\d?/, //       0 - 99
+        match3to4 = /\d\d\d\d?/, //     999 - 9999
+        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
+        match1to3 = /\d{1,3}/, //       0 - 999
+        match1to4 = /\d{1,4}/, //       0 - 9999
+        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
+        matchUnsigned = /\d+/, //       0 - inf
+        matchSigned = /[+-]?\d+/, //    -inf - inf
+        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
+        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
+        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
+        // any word (or two) characters or numbers including two/three word month in arabic.
+        // includes scottish gaelic two word and hyphenated months
+        matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
+        regexes;
+
+    regexes = {};
+
+    function addRegexToken(token, regex, strictRegex) {
+        regexes[token] = isFunction(regex)
+            ? regex
+            : function (isStrict, localeData) {
+                  return isStrict && strictRegex ? strictRegex : regex;
+              };
+    }
+
+    function getParseRegexForToken(token, config) {
+        if (!hasOwnProp(regexes, token)) {
+            return new RegExp(unescapeFormat(token));
+        }
+
+        return regexes[token](config._strict, config._locale);
+    }
+
+    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
+    function unescapeFormat(s) {
+        return regexEscape(
+            s
+                .replace('\\', '')
+                .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (
+                    matched,
+                    p1,
+                    p2,
+                    p3,
+                    p4
+                ) {
+                    return p1 || p2 || p3 || p4;
+                })
+        );
+    }
+
+    function regexEscape(s) {
+        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+    }
+
+    var tokens = {};
+
+    function addParseToken(token, callback) {
+        var i,
+            func = callback;
+        if (typeof token === 'string') {
+            token = [token];
+        }
+        if (isNumber(callback)) {
+            func = function (input, array) {
+                array[callback] = toInt(input);
+            };
+        }
+        for (i = 0; i < token.length; i++) {
+            tokens[token[i]] = func;
+        }
+    }
+
+    function addWeekParseToken(token, callback) {
+        addParseToken(token, function (input, array, config, token) {
+            config._w = config._w || {};
+            callback(input, config._w, config, token);
+        });
+    }
+
+    function addTimeToArrayFromToken(token, input, config) {
+        if (input != null && hasOwnProp(tokens, token)) {
+            tokens[token](input, config._a, config, token);
+        }
+    }
+
+    var YEAR = 0,
+        MONTH = 1,
+        DATE = 2,
+        HOUR = 3,
+        MINUTE = 4,
+        SECOND = 5,
+        MILLISECOND = 6,
+        WEEK = 7,
+        WEEKDAY = 8;
+
+    function mod(n, x) {
+        return ((n % x) + x) % x;
+    }
+
+    var indexOf;
+
+    if (Array.prototype.indexOf) {
+        indexOf = Array.prototype.indexOf;
+    } else {
+        indexOf = function (o) {
+            // I know
+            var i;
+            for (i = 0; i < this.length; ++i) {
+                if (this[i] === o) {
+                    return i;
+                }
+            }
+            return -1;
+        };
+    }
+
+    function daysInMonth(year, month) {
+        if (isNaN(year) || isNaN(month)) {
+            return NaN;
+        }
+        var modMonth = mod(month, 12);
+        year += (month - modMonth) / 12;
+        return modMonth === 1
+            ? isLeapYear(year)
+                ? 29
+                : 28
+            : 31 - ((modMonth % 7) % 2);
+    }
+
+    // FORMATTING
+
+    addFormatToken('M', ['MM', 2], 'Mo', function () {
+        return this.month() + 1;
+    });
+
+    addFormatToken('MMM', 0, 0, function (format) {
+        return this.localeData().monthsShort(this, format);
+    });
+
+    addFormatToken('MMMM', 0, 0, function (format) {
+        return this.localeData().months(this, format);
+    });
+
+    // ALIASES
+
+    addUnitAlias('month', 'M');
+
+    // PRIORITY
+
+    addUnitPriority('month', 8);
+
+    // PARSING
+
+    addRegexToken('M', match1to2);
+    addRegexToken('MM', match1to2, match2);
+    addRegexToken('MMM', function (isStrict, locale) {
+        return locale.monthsShortRegex(isStrict);
+    });
+    addRegexToken('MMMM', function (isStrict, locale) {
+        return locale.monthsRegex(isStrict);
+    });
+
+    addParseToken(['M', 'MM'], function (input, array) {
+        array[MONTH] = toInt(input) - 1;
+    });
+
+    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
+        var month = config._locale.monthsParse(input, token, config._strict);
+        // if we didn't find a month name, mark the date as invalid.
+        if (month != null) {
+            array[MONTH] = month;
+        } else {
+            getParsingFlags(config).invalidMonth = input;
+        }
+    });
+
+    // LOCALES
+
+    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(
+            '_'
+        ),
+        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
+        defaultMonthsShortRegex = matchWord,
+        defaultMonthsRegex = matchWord;
+
+    function localeMonths(m, format) {
+        if (!m) {
+            return isArray(this._months)
+                ? this._months
+                : this._months['standalone'];
+        }
+        return isArray(this._months)
+            ? this._months[m.month()]
+            : this._months[
+                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
+                      ? 'format'
+                      : 'standalone'
+              ][m.month()];
+    }
+
+    function localeMonthsShort(m, format) {
+        if (!m) {
+            return isArray(this._monthsShort)
+                ? this._monthsShort
+                : this._monthsShort['standalone'];
+        }
+        return isArray(this._monthsShort)
+            ? this._monthsShort[m.month()]
+            : this._monthsShort[
+                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
+              ][m.month()];
+    }
+
+    function handleStrictParse(monthName, format, strict) {
+        var i,
+            ii,
+            mom,
+            llc = monthName.toLocaleLowerCase();
+        if (!this._monthsParse) {
+            // this is not used
+            this._monthsParse = [];
+            this._longMonthsParse = [];
+            this._shortMonthsParse = [];
+            for (i = 0; i < 12; ++i) {
+                mom = createUTC([2000, i]);
+                this._shortMonthsParse[i] = this.monthsShort(
+                    mom,
+                    ''
+                ).toLocaleLowerCase();
+                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
+            }
+        }
+
+        if (strict) {
+            if (format === 'MMM') {
+                ii = indexOf.call(this._shortMonthsParse, llc);
+                return ii !== -1 ? ii : null;
+            } else {
+                ii = indexOf.call(this._longMonthsParse, llc);
+                return ii !== -1 ? ii : null;
+            }
+        } else {
+            if (format === 'MMM') {
+                ii = indexOf.call(this._shortMonthsParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._longMonthsParse, llc);
+                return ii !== -1 ? ii : null;
+            } else {
+                ii = indexOf.call(this._longMonthsParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._shortMonthsParse, llc);
+                return ii !== -1 ? ii : null;
+            }
+        }
+    }
+
+    function localeMonthsParse(monthName, format, strict) {
+        var i, mom, regex;
+
+        if (this._monthsParseExact) {
+            return handleStrictParse.call(this, monthName, format, strict);
+        }
+
+        if (!this._monthsParse) {
+            this._monthsParse = [];
+            this._longMonthsParse = [];
+            this._shortMonthsParse = [];
+        }
+
+        // TODO: add sorting
+        // Sorting makes sure if one month (or abbr) is a prefix of another
+        // see sorting in computeMonthsParse
+        for (i = 0; i < 12; i++) {
+            // make the regex if we don't have it already
+            mom = createUTC([2000, i]);
+            if (strict && !this._longMonthsParse[i]) {
+                this._longMonthsParse[i] = new RegExp(
+                    '^' + this.months(mom, '').replace('.', '') + '$',
+                    'i'
+                );
+                this._shortMonthsParse[i] = new RegExp(
+                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
+                    'i'
+                );
+            }
+            if (!strict && !this._monthsParse[i]) {
+                regex =
+                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
+                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
+            }
+            // test the regex
+            if (
+                strict &&
+                format === 'MMMM' &&
+                this._longMonthsParse[i].test(monthName)
+            ) {
+                return i;
+            } else if (
+                strict &&
+                format === 'MMM' &&
+                this._shortMonthsParse[i].test(monthName)
+            ) {
+                return i;
+            } else if (!strict && this._monthsParse[i].test(monthName)) {
+                return i;
+            }
+        }
+    }
+
+    // MOMENTS
+
+    function setMonth(mom, value) {
+        var dayOfMonth;
+
+        if (!mom.isValid()) {
+            // No op
+            return mom;
+        }
+
+        if (typeof value === 'string') {
+            if (/^\d+$/.test(value)) {
+                value = toInt(value);
+            } else {
+                value = mom.localeData().monthsParse(value);
+                // TODO: Another silent failure?
+                if (!isNumber(value)) {
+                    return mom;
+                }
+            }
+        }
+
+        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
+        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
+        return mom;
+    }
+
+    function getSetMonth(value) {
+        if (value != null) {
+            setMonth(this, value);
+            hooks.updateOffset(this, true);
+            return this;
+        } else {
+            return get(this, 'Month');
+        }
+    }
+
+    function getDaysInMonth() {
+        return daysInMonth(this.year(), this.month());
+    }
+
+    function monthsShortRegex(isStrict) {
+        if (this._monthsParseExact) {
+            if (!hasOwnProp(this, '_monthsRegex')) {
+                computeMonthsParse.call(this);
+            }
+            if (isStrict) {
+                return this._monthsShortStrictRegex;
+            } else {
+                return this._monthsShortRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_monthsShortRegex')) {
+                this._monthsShortRegex = defaultMonthsShortRegex;
+            }
+            return this._monthsShortStrictRegex && isStrict
+                ? this._monthsShortStrictRegex
+                : this._monthsShortRegex;
+        }
+    }
+
+    function monthsRegex(isStrict) {
+        if (this._monthsParseExact) {
+            if (!hasOwnProp(this, '_monthsRegex')) {
+                computeMonthsParse.call(this);
+            }
+            if (isStrict) {
+                return this._monthsStrictRegex;
+            } else {
+                return this._monthsRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_monthsRegex')) {
+                this._monthsRegex = defaultMonthsRegex;
+            }
+            return this._monthsStrictRegex && isStrict
+                ? this._monthsStrictRegex
+                : this._monthsRegex;
+        }
+    }
+
+    function computeMonthsParse() {
+        function cmpLenRev(a, b) {
+            return b.length - a.length;
+        }
+
+        var shortPieces = [],
+            longPieces = [],
+            mixedPieces = [],
+            i,
+            mom;
+        for (i = 0; i < 12; i++) {
+            // make the regex if we don't have it already
+            mom = createUTC([2000, i]);
+            shortPieces.push(this.monthsShort(mom, ''));
+            longPieces.push(this.months(mom, ''));
+            mixedPieces.push(this.months(mom, ''));
+            mixedPieces.push(this.monthsShort(mom, ''));
+        }
+        // Sorting makes sure if one month (or abbr) is a prefix of another it
+        // will match the longer piece.
+        shortPieces.sort(cmpLenRev);
+        longPieces.sort(cmpLenRev);
+        mixedPieces.sort(cmpLenRev);
+        for (i = 0; i < 12; i++) {
+            shortPieces[i] = regexEscape(shortPieces[i]);
+            longPieces[i] = regexEscape(longPieces[i]);
+        }
+        for (i = 0; i < 24; i++) {
+            mixedPieces[i] = regexEscape(mixedPieces[i]);
+        }
+
+        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
+        this._monthsShortRegex = this._monthsRegex;
+        this._monthsStrictRegex = new RegExp(
+            '^(' + longPieces.join('|') + ')',
+            'i'
+        );
+        this._monthsShortStrictRegex = new RegExp(
+            '^(' + shortPieces.join('|') + ')',
+            'i'
+        );
+    }
+
+    // FORMATTING
+
+    addFormatToken('Y', 0, 0, function () {
+        var y = this.year();
+        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
+    });
+
+    addFormatToken(0, ['YY', 2], 0, function () {
+        return this.year() % 100;
+    });
+
+    addFormatToken(0, ['YYYY', 4], 0, 'year');
+    addFormatToken(0, ['YYYYY', 5], 0, 'year');
+    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
+
+    // ALIASES
+
+    addUnitAlias('year', 'y');
+
+    // PRIORITIES
+
+    addUnitPriority('year', 1);
+
+    // PARSING
+
+    addRegexToken('Y', matchSigned);
+    addRegexToken('YY', match1to2, match2);
+    addRegexToken('YYYY', match1to4, match4);
+    addRegexToken('YYYYY', match1to6, match6);
+    addRegexToken('YYYYYY', match1to6, match6);
+
+    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
+    addParseToken('YYYY', function (input, array) {
+        array[YEAR] =
+            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
+    });
+    addParseToken('YY', function (input, array) {
+        array[YEAR] = hooks.parseTwoDigitYear(input);
+    });
+    addParseToken('Y', function (input, array) {
+        array[YEAR] = parseInt(input, 10);
+    });
+
+    // HELPERS
+
+    function daysInYear(year) {
+        return isLeapYear(year) ? 366 : 365;
+    }
+
+    // HOOKS
+
+    hooks.parseTwoDigitYear = function (input) {
+        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
+    };
+
+    // MOMENTS
+
+    var getSetYear = makeGetSet('FullYear', true);
+
+    function getIsLeapYear() {
+        return isLeapYear(this.year());
+    }
+
+    function createDate(y, m, d, h, M, s, ms) {
+        // can't just apply() to create a date:
+        // https://stackoverflow.com/q/181348
+        var date;
+        // the date constructor remaps years 0-99 to 1900-1999
+        if (y < 100 && y >= 0) {
+            // preserve leap years using a full 400 year cycle, then reset
+            date = new Date(y + 400, m, d, h, M, s, ms);
+            if (isFinite(date.getFullYear())) {
+                date.setFullYear(y);
+            }
+        } else {
+            date = new Date(y, m, d, h, M, s, ms);
+        }
+
+        return date;
+    }
+
+    function createUTCDate(y) {
+        var date, args;
+        // the Date.UTC function remaps years 0-99 to 1900-1999
+        if (y < 100 && y >= 0) {
+            args = Array.prototype.slice.call(arguments);
+            // preserve leap years using a full 400 year cycle, then reset
+            args[0] = y + 400;
+            date = new Date(Date.UTC.apply(null, args));
+            if (isFinite(date.getUTCFullYear())) {
+                date.setUTCFullYear(y);
+            }
+        } else {
+            date = new Date(Date.UTC.apply(null, arguments));
+        }
+
+        return date;
+    }
+
+    // start-of-first-week - start-of-year
+    function firstWeekOffset(year, dow, doy) {
+        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
+            fwd = 7 + dow - doy,
+            // first-week day local weekday -- which local weekday is fwd
+            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
+
+        return -fwdlw + fwd - 1;
+    }
+
+    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
+    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
+        var localWeekday = (7 + weekday - dow) % 7,
+            weekOffset = firstWeekOffset(year, dow, doy),
+            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
+            resYear,
+            resDayOfYear;
+
+        if (dayOfYear <= 0) {
+            resYear = year - 1;
+            resDayOfYear = daysInYear(resYear) + dayOfYear;
+        } else if (dayOfYear > daysInYear(year)) {
+            resYear = year + 1;
+            resDayOfYear = dayOfYear - daysInYear(year);
+        } else {
+            resYear = year;
+            resDayOfYear = dayOfYear;
+        }
+
+        return {
+            year: resYear,
+            dayOfYear: resDayOfYear,
+        };
+    }
+
+    function weekOfYear(mom, dow, doy) {
+        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
+            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
+            resWeek,
+            resYear;
+
+        if (week < 1) {
+            resYear = mom.year() - 1;
+            resWeek = week + weeksInYear(resYear, dow, doy);
+        } else if (week > weeksInYear(mom.year(), dow, doy)) {
+            resWeek = week - weeksInYear(mom.year(), dow, doy);
+            resYear = mom.year() + 1;
+        } else {
+            resYear = mom.year();
+            resWeek = week;
+        }
+
+        return {
+            week: resWeek,
+            year: resYear,
+        };
+    }
+
+    function weeksInYear(year, dow, doy) {
+        var weekOffset = firstWeekOffset(year, dow, doy),
+            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
+        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
+    }
+
+    // FORMATTING
+
+    addFormatToken('w', ['ww', 2], 'wo', 'week');
+    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
+
+    // ALIASES
+
+    addUnitAlias('week', 'w');
+    addUnitAlias('isoWeek', 'W');
+
+    // PRIORITIES
+
+    addUnitPriority('week', 5);
+    addUnitPriority('isoWeek', 5);
+
+    // PARSING
+
+    addRegexToken('w', match1to2);
+    addRegexToken('ww', match1to2, match2);
+    addRegexToken('W', match1to2);
+    addRegexToken('WW', match1to2, match2);
+
+    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (
+        input,
+        week,
+        config,
+        token
+    ) {
+        week[token.substr(0, 1)] = toInt(input);
+    });
+
+    // HELPERS
+
+    // LOCALES
+
+    function localeWeek(mom) {
+        return weekOfYear(mom, this._week.dow, this._week.doy).week;
+    }
+
+    var defaultLocaleWeek = {
+        dow: 0, // Sunday is the first day of the week.
+        doy: 6, // The week that contains Jan 6th is the first week of the year.
+    };
+
+    function localeFirstDayOfWeek() {
+        return this._week.dow;
+    }
+
+    function localeFirstDayOfYear() {
+        return this._week.doy;
+    }
+
+    // MOMENTS
+
+    function getSetWeek(input) {
+        var week = this.localeData().week(this);
+        return input == null ? week : this.add((input - week) * 7, 'd');
+    }
+
+    function getSetISOWeek(input) {
+        var week = weekOfYear(this, 1, 4).week;
+        return input == null ? week : this.add((input - week) * 7, 'd');
+    }
+
+    // FORMATTING
+
+    addFormatToken('d', 0, 'do', 'day');
+
+    addFormatToken('dd', 0, 0, function (format) {
+        return this.localeData().weekdaysMin(this, format);
+    });
+
+    addFormatToken('ddd', 0, 0, function (format) {
+        return this.localeData().weekdaysShort(this, format);
+    });
+
+    addFormatToken('dddd', 0, 0, function (format) {
+        return this.localeData().weekdays(this, format);
+    });
+
+    addFormatToken('e', 0, 0, 'weekday');
+    addFormatToken('E', 0, 0, 'isoWeekday');
+
+    // ALIASES
+
+    addUnitAlias('day', 'd');
+    addUnitAlias('weekday', 'e');
+    addUnitAlias('isoWeekday', 'E');
+
+    // PRIORITY
+    addUnitPriority('day', 11);
+    addUnitPriority('weekday', 11);
+    addUnitPriority('isoWeekday', 11);
+
+    // PARSING
+
+    addRegexToken('d', match1to2);
+    addRegexToken('e', match1to2);
+    addRegexToken('E', match1to2);
+    addRegexToken('dd', function (isStrict, locale) {
+        return locale.weekdaysMinRegex(isStrict);
+    });
+    addRegexToken('ddd', function (isStrict, locale) {
+        return locale.weekdaysShortRegex(isStrict);
+    });
+    addRegexToken('dddd', function (isStrict, locale) {
+        return locale.weekdaysRegex(isStrict);
+    });
+
+    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
+        var weekday = config._locale.weekdaysParse(input, token, config._strict);
+        // if we didn't get a weekday name, mark the date as invalid
+        if (weekday != null) {
+            week.d = weekday;
+        } else {
+            getParsingFlags(config).invalidWeekday = input;
+        }
+    });
+
+    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
+        week[token] = toInt(input);
+    });
+
+    // HELPERS
+
+    function parseWeekday(input, locale) {
+        if (typeof input !== 'string') {
+            return input;
+        }
+
+        if (!isNaN(input)) {
+            return parseInt(input, 10);
+        }
+
+        input = locale.weekdaysParse(input);
+        if (typeof input === 'number') {
+            return input;
+        }
+
+        return null;
+    }
+
+    function parseIsoWeekday(input, locale) {
+        if (typeof input === 'string') {
+            return locale.weekdaysParse(input) % 7 || 7;
+        }
+        return isNaN(input) ? null : input;
+    }
+
+    // LOCALES
+    function shiftWeekdays(ws, n) {
+        return ws.slice(n, 7).concat(ws.slice(0, n));
+    }
+
+    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        defaultWeekdaysRegex = matchWord,
+        defaultWeekdaysShortRegex = matchWord,
+        defaultWeekdaysMinRegex = matchWord;
+
+    function localeWeekdays(m, format) {
+        var weekdays = isArray(this._weekdays)
+            ? this._weekdays
+            : this._weekdays[
+                  m && m !== true && this._weekdays.isFormat.test(format)
+                      ? 'format'
+                      : 'standalone'
+              ];
+        return m === true
+            ? shiftWeekdays(weekdays, this._week.dow)
+            : m
+            ? weekdays[m.day()]
+            : weekdays;
+    }
+
+    function localeWeekdaysShort(m) {
+        return m === true
+            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
+            : m
+            ? this._weekdaysShort[m.day()]
+            : this._weekdaysShort;
+    }
+
+    function localeWeekdaysMin(m) {
+        return m === true
+            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
+            : m
+            ? this._weekdaysMin[m.day()]
+            : this._weekdaysMin;
+    }
+
+    function handleStrictParse$1(weekdayName, format, strict) {
+        var i,
+            ii,
+            mom,
+            llc = weekdayName.toLocaleLowerCase();
+        if (!this._weekdaysParse) {
+            this._weekdaysParse = [];
+            this._shortWeekdaysParse = [];
+            this._minWeekdaysParse = [];
+
+            for (i = 0; i < 7; ++i) {
+                mom = createUTC([2000, 1]).day(i);
+                this._minWeekdaysParse[i] = this.weekdaysMin(
+                    mom,
+                    ''
+                ).toLocaleLowerCase();
+                this._shortWeekdaysParse[i] = this.weekdaysShort(
+                    mom,
+                    ''
+                ).toLocaleLowerCase();
+                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
+            }
+        }
+
+        if (strict) {
+            if (format === 'dddd') {
+                ii = indexOf.call(this._weekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            } else if (format === 'ddd') {
+                ii = indexOf.call(this._shortWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            } else {
+                ii = indexOf.call(this._minWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            }
+        } else {
+            if (format === 'dddd') {
+                ii = indexOf.call(this._weekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._shortWeekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._minWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            } else if (format === 'ddd') {
+                ii = indexOf.call(this._shortWeekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._weekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._minWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            } else {
+                ii = indexOf.call(this._minWeekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._weekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._shortWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            }
+        }
+    }
+
+    function localeWeekdaysParse(weekdayName, format, strict) {
+        var i, mom, regex;
+
+        if (this._weekdaysParseExact) {
+            return handleStrictParse$1.call(this, weekdayName, format, strict);
+        }
+
+        if (!this._weekdaysParse) {
+            this._weekdaysParse = [];
+            this._minWeekdaysParse = [];
+            this._shortWeekdaysParse = [];
+            this._fullWeekdaysParse = [];
+        }
+
+        for (i = 0; i < 7; i++) {
+            // make the regex if we don't have it already
+
+            mom = createUTC([2000, 1]).day(i);
+            if (strict && !this._fullWeekdaysParse[i]) {
+                this._fullWeekdaysParse[i] = new RegExp(
+                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
+                    'i'
+                );
+                this._shortWeekdaysParse[i] = new RegExp(
+                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
+                    'i'
+                );
+                this._minWeekdaysParse[i] = new RegExp(
+                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
+                    'i'
+                );
+            }
+            if (!this._weekdaysParse[i]) {
+                regex =
+                    '^' +
+                    this.weekdays(mom, '') +
+                    '|^' +
+                    this.weekdaysShort(mom, '') +
+                    '|^' +
+                    this.weekdaysMin(mom, '');
+                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
+            }
+            // test the regex
+            if (
+                strict &&
+                format === 'dddd' &&
+                this._fullWeekdaysParse[i].test(weekdayName)
+            ) {
+                return i;
+            } else if (
+                strict &&
+                format === 'ddd' &&
+                this._shortWeekdaysParse[i].test(weekdayName)
+            ) {
+                return i;
+            } else if (
+                strict &&
+                format === 'dd' &&
+                this._minWeekdaysParse[i].test(weekdayName)
+            ) {
+                return i;
+            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
+                return i;
+            }
+        }
+    }
+
+    // MOMENTS
+
+    function getSetDayOfWeek(input) {
+        if (!this.isValid()) {
+            return input != null ? this : NaN;
+        }
+        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
+        if (input != null) {
+            input = parseWeekday(input, this.localeData());
+            return this.add(input - day, 'd');
+        } else {
+            return day;
+        }
+    }
+
+    function getSetLocaleDayOfWeek(input) {
+        if (!this.isValid()) {
+            return input != null ? this : NaN;
+        }
+        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
+        return input == null ? weekday : this.add(input - weekday, 'd');
+    }
+
+    function getSetISODayOfWeek(input) {
+        if (!this.isValid()) {
+            return input != null ? this : NaN;
+        }
+
+        // behaves the same as moment#day except
+        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
+        // as a setter, sunday should belong to the previous week.
+
+        if (input != null) {
+            var weekday = parseIsoWeekday(input, this.localeData());
+            return this.day(this.day() % 7 ? weekday : weekday - 7);
+        } else {
+            return this.day() || 7;
+        }
+    }
+
+    function weekdaysRegex(isStrict) {
+        if (this._weekdaysParseExact) {
+            if (!hasOwnProp(this, '_weekdaysRegex')) {
+                computeWeekdaysParse.call(this);
+            }
+            if (isStrict) {
+                return this._weekdaysStrictRegex;
+            } else {
+                return this._weekdaysRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_weekdaysRegex')) {
+                this._weekdaysRegex = defaultWeekdaysRegex;
+            }
+            return this._weekdaysStrictRegex && isStrict
+                ? this._weekdaysStrictRegex
+                : this._weekdaysRegex;
+        }
+    }
+
+    function weekdaysShortRegex(isStrict) {
+        if (this._weekdaysParseExact) {
+            if (!hasOwnProp(this, '_weekdaysRegex')) {
+                computeWeekdaysParse.call(this);
+            }
+            if (isStrict) {
+                return this._weekdaysShortStrictRegex;
+            } else {
+                return this._weekdaysShortRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
+                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
+            }
+            return this._weekdaysShortStrictRegex && isStrict
+                ? this._weekdaysShortStrictRegex
+                : this._weekdaysShortRegex;
+        }
+    }
+
+    function weekdaysMinRegex(isStrict) {
+        if (this._weekdaysParseExact) {
+            if (!hasOwnProp(this, '_weekdaysRegex')) {
+                computeWeekdaysParse.call(this);
+            }
+            if (isStrict) {
+                return this._weekdaysMinStrictRegex;
+            } else {
+                return this._weekdaysMinRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
+                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
+            }
+            return this._weekdaysMinStrictRegex && isStrict
+                ? this._weekdaysMinStrictRegex
+                : this._weekdaysMinRegex;
+        }
+    }
+
+    function computeWeekdaysParse() {
+        function cmpLenRev(a, b) {
+            return b.length - a.length;
+        }
+
+        var minPieces = [],
+            shortPieces = [],
+            longPieces = [],
+            mixedPieces = [],
+            i,
+            mom,
+            minp,
+            shortp,
+            longp;
+        for (i = 0; i < 7; i++) {
+            // make the regex if we don't have it already
+            mom = createUTC([2000, 1]).day(i);
+            minp = regexEscape(this.weekdaysMin(mom, ''));
+            shortp = regexEscape(this.weekdaysShort(mom, ''));
+            longp = regexEscape(this.weekdays(mom, ''));
+            minPieces.push(minp);
+            shortPieces.push(shortp);
+            longPieces.push(longp);
+            mixedPieces.push(minp);
+            mixedPieces.push(shortp);
+            mixedPieces.push(longp);
+        }
+        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
+        // will match the longer piece.
+        minPieces.sort(cmpLenRev);
+        shortPieces.sort(cmpLenRev);
+        longPieces.sort(cmpLenRev);
+        mixedPieces.sort(cmpLenRev);
+
+        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
+        this._weekdaysShortRegex = this._weekdaysRegex;
+        this._weekdaysMinRegex = this._weekdaysRegex;
+
+        this._weekdaysStrictRegex = new RegExp(
+            '^(' + longPieces.join('|') + ')',
+            'i'
+        );
+        this._weekdaysShortStrictRegex = new RegExp(
+            '^(' + shortPieces.join('|') + ')',
+            'i'
+        );
+        this._weekdaysMinStrictRegex = new RegExp(
+            '^(' + minPieces.join('|') + ')',
+            'i'
+        );
+    }
+
+    // FORMATTING
+
+    function hFormat() {
+        return this.hours() % 12 || 12;
+    }
+
+    function kFormat() {
+        return this.hours() || 24;
+    }
+
+    addFormatToken('H', ['HH', 2], 0, 'hour');
+    addFormatToken('h', ['hh', 2], 0, hFormat);
+    addFormatToken('k', ['kk', 2], 0, kFormat);
+
+    addFormatToken('hmm', 0, 0, function () {
+        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
+    });
+
+    addFormatToken('hmmss', 0, 0, function () {
+        return (
+            '' +
+            hFormat.apply(this) +
+            zeroFill(this.minutes(), 2) +
+            zeroFill(this.seconds(), 2)
+        );
+    });
+
+    addFormatToken('Hmm', 0, 0, function () {
+        return '' + this.hours() + zeroFill(this.minutes(), 2);
+    });
+
+    addFormatToken('Hmmss', 0, 0, function () {
+        return (
+            '' +
+            this.hours() +
+            zeroFill(this.minutes(), 2) +
+            zeroFill(this.seconds(), 2)
+        );
+    });
+
+    function meridiem(token, lowercase) {
+        addFormatToken(token, 0, 0, function () {
+            return this.localeData().meridiem(
+                this.hours(),
+                this.minutes(),
+                lowercase
+            );
+        });
+    }
+
+    meridiem('a', true);
+    meridiem('A', false);
+
+    // ALIASES
+
+    addUnitAlias('hour', 'h');
+
+    // PRIORITY
+    addUnitPriority('hour', 13);
+
+    // PARSING
+
+    function matchMeridiem(isStrict, locale) {
+        return locale._meridiemParse;
+    }
+
+    addRegexToken('a', matchMeridiem);
+    addRegexToken('A', matchMeridiem);
+    addRegexToken('H', match1to2);
+    addRegexToken('h', match1to2);
+    addRegexToken('k', match1to2);
+    addRegexToken('HH', match1to2, match2);
+    addRegexToken('hh', match1to2, match2);
+    addRegexToken('kk', match1to2, match2);
+
+    addRegexToken('hmm', match3to4);
+    addRegexToken('hmmss', match5to6);
+    addRegexToken('Hmm', match3to4);
+    addRegexToken('Hmmss', match5to6);
+
+    addParseToken(['H', 'HH'], HOUR);
+    addParseToken(['k', 'kk'], function (input, array, config) {
+        var kInput = toInt(input);
+        array[HOUR] = kInput === 24 ? 0 : kInput;
+    });
+    addParseToken(['a', 'A'], function (input, array, config) {
+        config._isPm = config._locale.isPM(input);
+        config._meridiem = input;
+    });
+    addParseToken(['h', 'hh'], function (input, array, config) {
+        array[HOUR] = toInt(input);
+        getParsingFlags(config).bigHour = true;
+    });
+    addParseToken('hmm', function (input, array, config) {
+        var pos = input.length - 2;
+        array[HOUR] = toInt(input.substr(0, pos));
+        array[MINUTE] = toInt(input.substr(pos));
+        getParsingFlags(config).bigHour = true;
+    });
+    addParseToken('hmmss', function (input, array, config) {
+        var pos1 = input.length - 4,
+            pos2 = input.length - 2;
+        array[HOUR] = toInt(input.substr(0, pos1));
+        array[MINUTE] = toInt(input.substr(pos1, 2));
+        array[SECOND] = toInt(input.substr(pos2));
+        getParsingFlags(config).bigHour = true;
+    });
+    addParseToken('Hmm', function (input, array, config) {
+        var pos = input.length - 2;
+        array[HOUR] = toInt(input.substr(0, pos));
+        array[MINUTE] = toInt(input.substr(pos));
+    });
+    addParseToken('Hmmss', function (input, array, config) {
+        var pos1 = input.length - 4,
+            pos2 = input.length - 2;
+        array[HOUR] = toInt(input.substr(0, pos1));
+        array[MINUTE] = toInt(input.substr(pos1, 2));
+        array[SECOND] = toInt(input.substr(pos2));
+    });
+
+    // LOCALES
+
+    function localeIsPM(input) {
+        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
+        // Using charAt should be more compatible.
+        return (input + '').toLowerCase().charAt(0) === 'p';
+    }
+
+    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
+        // Setting the hour should keep the time, because the user explicitly
+        // specified which hour they want. So trying to maintain the same hour (in
+        // a new timezone) makes sense. Adding/subtracting hours does not follow
+        // this rule.
+        getSetHour = makeGetSet('Hours', true);
+
+    function localeMeridiem(hours, minutes, isLower) {
+        if (hours > 11) {
+            return isLower ? 'pm' : 'PM';
+        } else {
+            return isLower ? 'am' : 'AM';
+        }
+    }
+
+    var baseConfig = {
+        calendar: defaultCalendar,
+        longDateFormat: defaultLongDateFormat,
+        invalidDate: defaultInvalidDate,
+        ordinal: defaultOrdinal,
+        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
+        relativeTime: defaultRelativeTime,
+
+        months: defaultLocaleMonths,
+        monthsShort: defaultLocaleMonthsShort,
+
+        week: defaultLocaleWeek,
+
+        weekdays: defaultLocaleWeekdays,
+        weekdaysMin: defaultLocaleWeekdaysMin,
+        weekdaysShort: defaultLocaleWeekdaysShort,
+
+        meridiemParse: defaultLocaleMeridiemParse,
+    };
+
+    // internal storage for locale config files
+    var locales = {},
+        localeFamilies = {},
+        globalLocale;
+
+    function commonPrefix(arr1, arr2) {
+        var i,
+            minl = Math.min(arr1.length, arr2.length);
+        for (i = 0; i < minl; i += 1) {
+            if (arr1[i] !== arr2[i]) {
+                return i;
+            }
+        }
+        return minl;
+    }
+
+    function normalizeLocale(key) {
+        return key ? key.toLowerCase().replace('_', '-') : key;
+    }
+
+    // pick the locale from the array
+    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
+    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
+    function chooseLocale(names) {
+        var i = 0,
+            j,
+            next,
+            locale,
+            split;
+
+        while (i < names.length) {
+            split = normalizeLocale(names[i]).split('-');
+            j = split.length;
+            next = normalizeLocale(names[i + 1]);
+            next = next ? next.split('-') : null;
+            while (j > 0) {
+                locale = loadLocale(split.slice(0, j).join('-'));
+                if (locale) {
+                    return locale;
+                }
+                if (
+                    next &&
+                    next.length >= j &&
+                    commonPrefix(split, next) >= j - 1
+                ) {
+                    //the next array item is better than a shallower substring of this one
+                    break;
+                }
+                j--;
+            }
+            i++;
+        }
+        return globalLocale;
+    }
+
+    function loadLocale(name) {
+        var oldLocale = null,
+            aliasedRequire;
+        // TODO: Find a better way to register and load all the locales in Node
+        if (
+            locales[name] === undefined &&
+            typeof module !== 'undefined' &&
+            module &&
+            module.exports
+        ) {
+            try {
+                oldLocale = globalLocale._abbr;
+                aliasedRequire = require;
+                aliasedRequire('./locale/' + name);
+                getSetGlobalLocale(oldLocale);
+            } catch (e) {
+                // mark as not found to avoid repeating expensive file require call causing high CPU
+                // when trying to find en-US, en_US, en-us for every format call
+                locales[name] = null; // null means not found
+            }
+        }
+        return locales[name];
+    }
+
+    // This function will load locale and then set the global locale.  If
+    // no arguments are passed in, it will simply return the current global
+    // locale key.
+    function getSetGlobalLocale(key, values) {
+        var data;
+        if (key) {
+            if (isUndefined(values)) {
+                data = getLocale(key);
+            } else {
+                data = defineLocale(key, values);
+            }
+
+            if (data) {
+                // moment.duration._locale = moment._locale = data;
+                globalLocale = data;
+            } else {
+                if (typeof console !== 'undefined' && console.warn) {
+                    //warn user if arguments are passed but the locale could not be set
+                    console.warn(
+                        'Locale ' + key + ' not found. Did you forget to load it?'
+                    );
+                }
+            }
+        }
+
+        return globalLocale._abbr;
+    }
+
+    function defineLocale(name, config) {
+        if (config !== null) {
+            var locale,
+                parentConfig = baseConfig;
+            config.abbr = name;
+            if (locales[name] != null) {
+                deprecateSimple(
+                    'defineLocaleOverride',
+                    'use moment.updateLocale(localeName, config) to change ' +
+                        'an existing locale. moment.defineLocale(localeName, ' +
+                        'config) should only be used for creating a new locale ' +
+                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
+                );
+                parentConfig = locales[name]._config;
+            } else if (config.parentLocale != null) {
+                if (locales[config.parentLocale] != null) {
+                    parentConfig = locales[config.parentLocale]._config;
+                } else {
+                    locale = loadLocale(config.parentLocale);
+                    if (locale != null) {
+                        parentConfig = locale._config;
+                    } else {
+                        if (!localeFamilies[config.parentLocale]) {
+                            localeFamilies[config.parentLocale] = [];
+                        }
+                        localeFamilies[config.parentLocale].push({
+                            name: name,
+                            config: config,
+                        });
+                        return null;
+                    }
+                }
+            }
+            locales[name] = new Locale(mergeConfigs(parentConfig, config));
+
+            if (localeFamilies[name]) {
+                localeFamilies[name].forEach(function (x) {
+                    defineLocale(x.name, x.config);
+                });
+            }
+
+            // backwards compat for now: also set the locale
+            // make sure we set the locale AFTER all child locales have been
+            // created, so we won't end up with the child locale set.
+            getSetGlobalLocale(name);
+
+            return locales[name];
+        } else {
+            // useful for testing
+            delete locales[name];
+            return null;
+        }
+    }
+
+    function updateLocale(name, config) {
+        if (config != null) {
+            var locale,
+                tmpLocale,
+                parentConfig = baseConfig;
+
+            if (locales[name] != null && locales[name].parentLocale != null) {
+                // Update existing child locale in-place to avoid memory-leaks
+                locales[name].set(mergeConfigs(locales[name]._config, config));
+            } else {
+                // MERGE
+                tmpLocale = loadLocale(name);
+                if (tmpLocale != null) {
+                    parentConfig = tmpLocale._config;
+                }
+                config = mergeConfigs(parentConfig, config);
+                if (tmpLocale == null) {
+                    // updateLocale is called for creating a new locale
+                    // Set abbr so it will have a name (getters return
+                    // undefined otherwise).
+                    config.abbr = name;
+                }
+                locale = new Locale(config);
+                locale.parentLocale = locales[name];
+                locales[name] = locale;
+            }
+
+            // backwards compat for now: also set the locale
+            getSetGlobalLocale(name);
+        } else {
+            // pass null for config to unupdate, useful for tests
+            if (locales[name] != null) {
+                if (locales[name].parentLocale != null) {
+                    locales[name] = locales[name].parentLocale;
+                    if (name === getSetGlobalLocale()) {
+                        getSetGlobalLocale(name);
+                    }
+                } else if (locales[name] != null) {
+                    delete locales[name];
+                }
+            }
+        }
+        return locales[name];
+    }
+
+    // returns locale data
+    function getLocale(key) {
+        var locale;
+
+        if (key && key._locale && key._locale._abbr) {
+            key = key._locale._abbr;
+        }
+
+        if (!key) {
+            return globalLocale;
+        }
+
+        if (!isArray(key)) {
+            //short-circuit everything else
+            locale = loadLocale(key);
+            if (locale) {
+                return locale;
+            }
+            key = [key];
+        }
+
+        return chooseLocale(key);
+    }
+
+    function listLocales() {
+        return keys(locales);
+    }
+
+    function checkOverflow(m) {
+        var overflow,
+            a = m._a;
+
+        if (a && getParsingFlags(m).overflow === -2) {
+            overflow =
+                a[MONTH] < 0 || a[MONTH] > 11
+                    ? MONTH
+                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
+                    ? DATE
+                    : a[HOUR] < 0 ||
+                      a[HOUR] > 24 ||
+                      (a[HOUR] === 24 &&
+                          (a[MINUTE] !== 0 ||
+                              a[SECOND] !== 0 ||
+                              a[MILLISECOND] !== 0))
+                    ? HOUR
+                    : a[MINUTE] < 0 || a[MINUTE] > 59
+                    ? MINUTE
+                    : a[SECOND] < 0 || a[SECOND] > 59
+                    ? SECOND
+                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
+                    ? MILLISECOND
+                    : -1;
+
+            if (
+                getParsingFlags(m)._overflowDayOfYear &&
+                (overflow < YEAR || overflow > DATE)
+            ) {
+                overflow = DATE;
+            }
+            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
+                overflow = WEEK;
+            }
+            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
+                overflow = WEEKDAY;
+            }
+
+            getParsingFlags(m).overflow = overflow;
+        }
+
+        return m;
+    }
+
+    // iso 8601 regex
+    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
+    var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
+        basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
+        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
+        isoDates = [
+            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
+            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
+            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
+            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
+            ['YYYY-DDD', /\d{4}-\d{3}/],
+            ['YYYY-MM', /\d{4}-\d\d/, false],
+            ['YYYYYYMMDD', /[+-]\d{10}/],
+            ['YYYYMMDD', /\d{8}/],
+            ['GGGG[W]WWE', /\d{4}W\d{3}/],
+            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
+            ['YYYYDDD', /\d{7}/],
+            ['YYYYMM', /\d{6}/, false],
+            ['YYYY', /\d{4}/, false],
+        ],
+        // iso time formats and regexes
+        isoTimes = [
+            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
+            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
+            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
+            ['HH:mm', /\d\d:\d\d/],
+            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
+            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
+            ['HHmmss', /\d\d\d\d\d\d/],
+            ['HHmm', /\d\d\d\d/],
+            ['HH', /\d\d/],
+        ],
+        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
+        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
+        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
+        obsOffsets = {
+            UT: 0,
+            GMT: 0,
+            EDT: -4 * 60,
+            EST: -5 * 60,
+            CDT: -5 * 60,
+            CST: -6 * 60,
+            MDT: -6 * 60,
+            MST: -7 * 60,
+            PDT: -7 * 60,
+            PST: -8 * 60,
+        };
+
+    // date from iso format
+    function configFromISO(config) {
+        var i,
+            l,
+            string = config._i,
+            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
+            allowTime,
+            dateFormat,
+            timeFormat,
+            tzFormat;
+
+        if (match) {
+            getParsingFlags(config).iso = true;
+
+            for (i = 0, l = isoDates.length; i < l; i++) {
+                if (isoDates[i][1].exec(match[1])) {
+                    dateFormat = isoDates[i][0];
+                    allowTime = isoDates[i][2] !== false;
+                    break;
+                }
+            }
+            if (dateFormat == null) {
+                config._isValid = false;
+                return;
+            }
+            if (match[3]) {
+                for (i = 0, l = isoTimes.length; i < l; i++) {
+                    if (isoTimes[i][1].exec(match[3])) {
+                        // match[2] should be 'T' or space
+                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
+                        break;
+                    }
+                }
+                if (timeFormat == null) {
+                    config._isValid = false;
+                    return;
+                }
+            }
+            if (!allowTime && timeFormat != null) {
+                config._isValid = false;
+                return;
+            }
+            if (match[4]) {
+                if (tzRegex.exec(match[4])) {
+                    tzFormat = 'Z';
+                } else {
+                    config._isValid = false;
+                    return;
+                }
+            }
+            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
+            configFromStringAndFormat(config);
+        } else {
+            config._isValid = false;
+        }
+    }
+
+    function extractFromRFC2822Strings(
+        yearStr,
+        monthStr,
+        dayStr,
+        hourStr,
+        minuteStr,
+        secondStr
+    ) {
+        var result = [
+            untruncateYear(yearStr),
+            defaultLocaleMonthsShort.indexOf(monthStr),
+            parseInt(dayStr, 10),
+            parseInt(hourStr, 10),
+            parseInt(minuteStr, 10),
+        ];
+
+        if (secondStr) {
+            result.push(parseInt(secondStr, 10));
+        }
+
+        return result;
+    }
+
+    function untruncateYear(yearStr) {
+        var year = parseInt(yearStr, 10);
+        if (year <= 49) {
+            return 2000 + year;
+        } else if (year <= 999) {
+            return 1900 + year;
+        }
+        return year;
+    }
+
+    function preprocessRFC2822(s) {
+        // Remove comments and folding whitespace and replace multiple-spaces with a single space
+        return s
+            .replace(/\([^)]*\)|[\n\t]/g, ' ')
+            .replace(/(\s\s+)/g, ' ')
+            .replace(/^\s\s*/, '')
+            .replace(/\s\s*$/, '');
+    }
+
+    function checkWeekday(weekdayStr, parsedInput, config) {
+        if (weekdayStr) {
+            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
+            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
+                weekdayActual = new Date(
+                    parsedInput[0],
+                    parsedInput[1],
+                    parsedInput[2]
+                ).getDay();
+            if (weekdayProvided !== weekdayActual) {
+                getParsingFlags(config).weekdayMismatch = true;
+                config._isValid = false;
+                return false;
+            }
+        }
+        return true;
+    }
+
+    function calculateOffset(obsOffset, militaryOffset, numOffset) {
+        if (obsOffset) {
+            return obsOffsets[obsOffset];
+        } else if (militaryOffset) {
+            // the only allowed military tz is Z
+            return 0;
+        } else {
+            var hm = parseInt(numOffset, 10),
+                m = hm % 100,
+                h = (hm - m) / 100;
+            return h * 60 + m;
+        }
+    }
+
+    // date and time from ref 2822 format
+    function configFromRFC2822(config) {
+        var match = rfc2822.exec(preprocessRFC2822(config._i)),
+            parsedArray;
+        if (match) {
+            parsedArray = extractFromRFC2822Strings(
+                match[4],
+                match[3],
+                match[2],
+                match[5],
+                match[6],
+                match[7]
+            );
+            if (!checkWeekday(match[1], parsedArray, config)) {
+                return;
+            }
+
+            config._a = parsedArray;
+            config._tzm = calculateOffset(match[8], match[9], match[10]);
+
+            config._d = createUTCDate.apply(null, config._a);
+            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
+
+            getParsingFlags(config).rfc2822 = true;
+        } else {
+            config._isValid = false;
+        }
+    }
+
+    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
+    function configFromString(config) {
+        var matched = aspNetJsonRegex.exec(config._i);
+        if (matched !== null) {
+            config._d = new Date(+matched[1]);
+            return;
+        }
+
+        configFromISO(config);
+        if (config._isValid === false) {
+            delete config._isValid;
+        } else {
+            return;
+        }
+
+        configFromRFC2822(config);
+        if (config._isValid === false) {
+            delete config._isValid;
+        } else {
+            return;
+        }
+
+        if (config._strict) {
+            config._isValid = false;
+        } else {
+            // Final attempt, use Input Fallback
+            hooks.createFromInputFallback(config);
+        }
+    }
+
+    hooks.createFromInputFallback = deprecate(
+        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
+            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
+            'discouraged and will be removed in an upcoming major release. Please refer to ' +
+            'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
+        function (config) {
+            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
+        }
+    );
+
+    // Pick the first defined of two or three arguments.
+    function defaults(a, b, c) {
+        if (a != null) {
+            return a;
+        }
+        if (b != null) {
+            return b;
+        }
+        return c;
+    }
+
+    function currentDateArray(config) {
+        // hooks is actually the exported moment object
+        var nowValue = new Date(hooks.now());
+        if (config._useUTC) {
+            return [
+                nowValue.getUTCFullYear(),
+                nowValue.getUTCMonth(),
+                nowValue.getUTCDate(),
+            ];
+        }
+        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
+    }
+
+    // convert an array to a date.
+    // the array should mirror the parameters below
+    // note: all values past the year are optional and will default to the lowest possible value.
+    // [year, month, day , hour, minute, second, millisecond]
+    function configFromArray(config) {
+        var i,
+            date,
+            input = [],
+            currentDate,
+            expectedWeekday,
+            yearToUse;
+
+        if (config._d) {
+            return;
+        }
+
+        currentDate = currentDateArray(config);
+
+        //compute day of the year from weeks and weekdays
+        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
+            dayOfYearFromWeekInfo(config);
+        }
+
+        //if the day of the year is set, figure out what it is
+        if (config._dayOfYear != null) {
+            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
+
+            if (
+                config._dayOfYear > daysInYear(yearToUse) ||
+                config._dayOfYear === 0
+            ) {
+                getParsingFlags(config)._overflowDayOfYear = true;
+            }
+
+            date = createUTCDate(yearToUse, 0, config._dayOfYear);
+            config._a[MONTH] = date.getUTCMonth();
+            config._a[DATE] = date.getUTCDate();
+        }
+
+        // Default to current date.
+        // * if no year, month, day of month are given, default to today
+        // * if day of month is given, default month and year
+        // * if month is given, default only year
+        // * if year is given, don't default anything
+        for (i = 0; i < 3 && config._a[i] == null; ++i) {
+            config._a[i] = input[i] = currentDate[i];
+        }
+
+        // Zero out whatever was not defaulted, including time
+        for (; i < 7; i++) {
+            config._a[i] = input[i] =
+                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
+        }
+
+        // Check for 24:00:00.000
+        if (
+            config._a[HOUR] === 24 &&
+            config._a[MINUTE] === 0 &&
+            config._a[SECOND] === 0 &&
+            config._a[MILLISECOND] === 0
+        ) {
+            config._nextDay = true;
+            config._a[HOUR] = 0;
+        }
+
+        config._d = (config._useUTC ? createUTCDate : createDate).apply(
+            null,
+            input
+        );
+        expectedWeekday = config._useUTC
+            ? config._d.getUTCDay()
+            : config._d.getDay();
+
+        // Apply timezone offset from input. The actual utcOffset can be changed
+        // with parseZone.
+        if (config._tzm != null) {
+            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
+        }
+
+        if (config._nextDay) {
+            config._a[HOUR] = 24;
+        }
+
+        // check for mismatching day of week
+        if (
+            config._w &&
+            typeof config._w.d !== 'undefined' &&
+            config._w.d !== expectedWeekday
+        ) {
+            getParsingFlags(config).weekdayMismatch = true;
+        }
+    }
+
+    function dayOfYearFromWeekInfo(config) {
+        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
+
+        w = config._w;
+        if (w.GG != null || w.W != null || w.E != null) {
+            dow = 1;
+            doy = 4;
+
+            // TODO: We need to take the current isoWeekYear, but that depends on
+            // how we interpret now (local, utc, fixed offset). So create
+            // a now version of current config (take local/utc/offset flags, and
+            // create now).
+            weekYear = defaults(
+                w.GG,
+                config._a[YEAR],
+                weekOfYear(createLocal(), 1, 4).year
+            );
+            week = defaults(w.W, 1);
+            weekday = defaults(w.E, 1);
+            if (weekday < 1 || weekday > 7) {
+                weekdayOverflow = true;
+            }
+        } else {
+            dow = config._locale._week.dow;
+            doy = config._locale._week.doy;
+
+            curWeek = weekOfYear(createLocal(), dow, doy);
+
+            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
+
+            // Default to current week.
+            week = defaults(w.w, curWeek.week);
+
+            if (w.d != null) {
+                // weekday -- low day numbers are considered next week
+                weekday = w.d;
+                if (weekday < 0 || weekday > 6) {
+                    weekdayOverflow = true;
+                }
+            } else if (w.e != null) {
+                // local weekday -- counting starts from beginning of week
+                weekday = w.e + dow;
+                if (w.e < 0 || w.e > 6) {
+                    weekdayOverflow = true;
+                }
+            } else {
+                // default to beginning of week
+                weekday = dow;
+            }
+        }
+        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
+            getParsingFlags(config)._overflowWeeks = true;
+        } else if (weekdayOverflow != null) {
+            getParsingFlags(config)._overflowWeekday = true;
+        } else {
+            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
+            config._a[YEAR] = temp.year;
+            config._dayOfYear = temp.dayOfYear;
+        }
+    }
+
+    // constant that refers to the ISO standard
+    hooks.ISO_8601 = function () {};
+
+    // constant that refers to the RFC 2822 form
+    hooks.RFC_2822 = function () {};
+
+    // date from string and format string
+    function configFromStringAndFormat(config) {
+        // TODO: Move this to another part of the creation flow to prevent circular deps
+        if (config._f === hooks.ISO_8601) {
+            configFromISO(config);
+            return;
+        }
+        if (config._f === hooks.RFC_2822) {
+            configFromRFC2822(config);
+            return;
+        }
+        config._a = [];
+        getParsingFlags(config).empty = true;
+
+        // This array is used to make a Date, either with `new Date` or `Date.UTC`
+        var string = '' + config._i,
+            i,
+            parsedInput,
+            tokens,
+            token,
+            skipped,
+            stringLength = string.length,
+            totalParsedInputLength = 0,
+            era;
+
+        tokens =
+            expandFormat(config._f, config._locale).match(formattingTokens) || [];
+
+        for (i = 0; i < tokens.length; i++) {
+            token = tokens[i];
+            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
+                [])[0];
+            if (parsedInput) {
+                skipped = string.substr(0, string.indexOf(parsedInput));
+                if (skipped.length > 0) {
+                    getParsingFlags(config).unusedInput.push(skipped);
+                }
+                string = string.slice(
+                    string.indexOf(parsedInput) + parsedInput.length
+                );
+                totalParsedInputLength += parsedInput.length;
+            }
+            // don't parse if it's not a known token
+            if (formatTokenFunctions[token]) {
+                if (parsedInput) {
+                    getParsingFlags(config).empty = false;
+                } else {
+                    getParsingFlags(config).unusedTokens.push(token);
+                }
+                addTimeToArrayFromToken(token, parsedInput, config);
+            } else if (config._strict && !parsedInput) {
+                getParsingFlags(config).unusedTokens.push(token);
+            }
+        }
+
+        // add remaining unparsed input length to the string
+        getParsingFlags(config).charsLeftOver =
+            stringLength - totalParsedInputLength;
+        if (string.length > 0) {
+            getParsingFlags(config).unusedInput.push(string);
+        }
+
+        // clear _12h flag if hour is <= 12
+        if (
+            config._a[HOUR] <= 12 &&
+            getParsingFlags(config).bigHour === true &&
+            config._a[HOUR] > 0
+        ) {
+            getParsingFlags(config).bigHour = undefined;
+        }
+
+        getParsingFlags(config).parsedDateParts = config._a.slice(0);
+        getParsingFlags(config).meridiem = config._meridiem;
+        // handle meridiem
+        config._a[HOUR] = meridiemFixWrap(
+            config._locale,
+            config._a[HOUR],
+            config._meridiem
+        );
+
+        // handle era
+        era = getParsingFlags(config).era;
+        if (era !== null) {
+            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
+        }
+
+        configFromArray(config);
+        checkOverflow(config);
+    }
+
+    function meridiemFixWrap(locale, hour, meridiem) {
+        var isPm;
+
+        if (meridiem == null) {
+            // nothing to do
+            return hour;
+        }
+        if (locale.meridiemHour != null) {
+            return locale.meridiemHour(hour, meridiem);
+        } else if (locale.isPM != null) {
+            // Fallback
+            isPm = locale.isPM(meridiem);
+            if (isPm && hour < 12) {
+                hour += 12;
+            }
+            if (!isPm && hour === 12) {
+                hour = 0;
+            }
+            return hour;
+        } else {
+            // this is not supposed to happen
+            return hour;
+        }
+    }
+
+    // date from string and array of format strings
+    function configFromStringAndArray(config) {
+        var tempConfig,
+            bestMoment,
+            scoreToBeat,
+            i,
+            currentScore,
+            validFormatFound,
+            bestFormatIsValid = false;
+
+        if (config._f.length === 0) {
+            getParsingFlags(config).invalidFormat = true;
+            config._d = new Date(NaN);
+            return;
+        }
+
+        for (i = 0; i < config._f.length; i++) {
+            currentScore = 0;
+            validFormatFound = false;
+            tempConfig = copyConfig({}, config);
+            if (config._useUTC != null) {
+                tempConfig._useUTC = config._useUTC;
+            }
+            tempConfig._f = config._f[i];
+            configFromStringAndFormat(tempConfig);
+
+            if (isValid(tempConfig)) {
+                validFormatFound = true;
+            }
+
+            // if there is any input that was not parsed add a penalty for that format
+            currentScore += getParsingFlags(tempConfig).charsLeftOver;
+
+            //or tokens
+            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
+
+            getParsingFlags(tempConfig).score = currentScore;
+
+            if (!bestFormatIsValid) {
+                if (
+                    scoreToBeat == null ||
+                    currentScore < scoreToBeat ||
+                    validFormatFound
+                ) {
+                    scoreToBeat = currentScore;
+                    bestMoment = tempConfig;
+                    if (validFormatFound) {
+                        bestFormatIsValid = true;
+                    }
+                }
+            } else {
+                if (currentScore < scoreToBeat) {
+                    scoreToBeat = currentScore;
+                    bestMoment = tempConfig;
+                }
+            }
+        }
+
+        extend(config, bestMoment || tempConfig);
+    }
+
+    function configFromObject(config) {
+        if (config._d) {
+            return;
+        }
+
+        var i = normalizeObjectUnits(config._i),
+            dayOrDate = i.day === undefined ? i.date : i.day;
+        config._a = map(
+            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
+            function (obj) {
+                return obj && parseInt(obj, 10);
+            }
+        );
+
+        configFromArray(config);
+    }
+
+    function createFromConfig(config) {
+        var res = new Moment(checkOverflow(prepareConfig(config)));
+        if (res._nextDay) {
+            // Adding is smart enough around DST
+            res.add(1, 'd');
+            res._nextDay = undefined;
+        }
+
+        return res;
+    }
+
+    function prepareConfig(config) {
+        var input = config._i,
+            format = config._f;
+
+        config._locale = config._locale || getLocale(config._l);
+
+        if (input === null || (format === undefined && input === '')) {
+            return createInvalid({ nullInput: true });
+        }
+
+        if (typeof input === 'string') {
+            config._i = input = config._locale.preparse(input);
+        }
+
+        if (isMoment(input)) {
+            return new Moment(checkOverflow(input));
+        } else if (isDate(input)) {
+            config._d = input;
+        } else if (isArray(format)) {
+            configFromStringAndArray(config);
+        } else if (format) {
+            configFromStringAndFormat(config);
+        } else {
+            configFromInput(config);
+        }
+
+        if (!isValid(config)) {
+            config._d = null;
+        }
+
+        return config;
+    }
+
+    function configFromInput(config) {
+        var input = config._i;
+        if (isUndefined(input)) {
+            config._d = new Date(hooks.now());
+        } else if (isDate(input)) {
+            config._d = new Date(input.valueOf());
+        } else if (typeof input === 'string') {
+            configFromString(config);
+        } else if (isArray(input)) {
+            config._a = map(input.slice(0), function (obj) {
+                return parseInt(obj, 10);
+            });
+            configFromArray(config);
+        } else if (isObject(input)) {
+            configFromObject(config);
+        } else if (isNumber(input)) {
+            // from milliseconds
+            config._d = new Date(input);
+        } else {
+            hooks.createFromInputFallback(config);
+        }
+    }
+
+    function createLocalOrUTC(input, format, locale, strict, isUTC) {
+        var c = {};
+
+        if (format === true || format === false) {
+            strict = format;
+            format = undefined;
+        }
+
+        if (locale === true || locale === false) {
+            strict = locale;
+            locale = undefined;
+        }
+
+        if (
+            (isObject(input) && isObjectEmpty(input)) ||
+            (isArray(input) && input.length === 0)
+        ) {
+            input = undefined;
+        }
+        // object construction must be done this way.
+        // https://github.com/moment/moment/issues/1423
+        c._isAMomentObject = true;
+        c._useUTC = c._isUTC = isUTC;
+        c._l = locale;
+        c._i = input;
+        c._f = format;
+        c._strict = strict;
+
+        return createFromConfig(c);
+    }
+
+    function createLocal(input, format, locale, strict) {
+        return createLocalOrUTC(input, format, locale, strict, false);
+    }
+
+    var prototypeMin = deprecate(
+            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
+            function () {
+                var other = createLocal.apply(null, arguments);
+                if (this.isValid() && other.isValid()) {
+                    return other < this ? this : other;
+                } else {
+                    return createInvalid();
+                }
+            }
+        ),
+        prototypeMax = deprecate(
+            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
+            function () {
+                var other = createLocal.apply(null, arguments);
+                if (this.isValid() && other.isValid()) {
+                    return other > this ? this : other;
+                } else {
+                    return createInvalid();
+                }
+            }
+        );
+
+    // Pick a moment m from moments so that m[fn](other) is true for all
+    // other. This relies on the function fn to be transitive.
+    //
+    // moments should either be an array of moment objects or an array, whose
+    // first element is an array of moment objects.
+    function pickBy(fn, moments) {
+        var res, i;
+        if (moments.length === 1 && isArray(moments[0])) {
+            moments = moments[0];
+        }
+        if (!moments.length) {
+            return createLocal();
+        }
+        res = moments[0];
+        for (i = 1; i < moments.length; ++i) {
+            if (!moments[i].isValid() || moments[i][fn](res)) {
+                res = moments[i];
+            }
+        }
+        return res;
+    }
+
+    // TODO: Use [].sort instead?
+    function min() {
+        var args = [].slice.call(arguments, 0);
+
+        return pickBy('isBefore', args);
+    }
+
+    function max() {
+        var args = [].slice.call(arguments, 0);
+
+        return pickBy('isAfter', args);
+    }
+
+    var now = function () {
+        return Date.now ? Date.now() : +new Date();
+    };
+
+    var ordering = [
+        'year',
+        'quarter',
+        'month',
+        'week',
+        'day',
+        'hour',
+        'minute',
+        'second',
+        'millisecond',
+    ];
+
+    function isDurationValid(m) {
+        var key,
+            unitHasDecimal = false,
+            i;
+        for (key in m) {
+            if (
+                hasOwnProp(m, key) &&
+                !(
+                    indexOf.call(ordering, key) !== -1 &&
+                    (m[key] == null || !isNaN(m[key]))
+                )
+            ) {
+                return false;
+            }
+        }
+
+        for (i = 0; i < ordering.length; ++i) {
+            if (m[ordering[i]]) {
+                if (unitHasDecimal) {
+                    return false; // only allow non-integers for smallest unit
+                }
+                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
+                    unitHasDecimal = true;
+                }
+            }
+        }
+
+        return true;
+    }
+
+    function isValid$1() {
+        return this._isValid;
+    }
+
+    function createInvalid$1() {
+        return createDuration(NaN);
+    }
+
+    function Duration(duration) {
+        var normalizedInput = normalizeObjectUnits(duration),
+            years = normalizedInput.year || 0,
+            quarters = normalizedInput.quarter || 0,
+            months = normalizedInput.month || 0,
+            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
+            days = normalizedInput.day || 0,
+            hours = normalizedInput.hour || 0,
+            minutes = normalizedInput.minute || 0,
+            seconds = normalizedInput.second || 0,
+            milliseconds = normalizedInput.millisecond || 0;
+
+        this._isValid = isDurationValid(normalizedInput);
+
+        // representation for dateAddRemove
+        this._milliseconds =
+            +milliseconds +
+            seconds * 1e3 + // 1000
+            minutes * 6e4 + // 1000 * 60
+            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
+        // Because of dateAddRemove treats 24 hours as different from a
+        // day when working around DST, we need to store them separately
+        this._days = +days + weeks * 7;
+        // It is impossible to translate months into days without knowing
+        // which months you are are talking about, so we have to store
+        // it separately.
+        this._months = +months + quarters * 3 + years * 12;
+
+        this._data = {};
+
+        this._locale = getLocale();
+
+        this._bubble();
+    }
+
+    function isDuration(obj) {
+        return obj instanceof Duration;
+    }
+
+    function absRound(number) {
+        if (number < 0) {
+            return Math.round(-1 * number) * -1;
+        } else {
+            return Math.round(number);
+        }
+    }
+
+    // compare two arrays, return the number of differences
+    function compareArrays(array1, array2, dontConvert) {
+        var len = Math.min(array1.length, array2.length),
+            lengthDiff = Math.abs(array1.length - array2.length),
+            diffs = 0,
+            i;
+        for (i = 0; i < len; i++) {
+            if (
+                (dontConvert && array1[i] !== array2[i]) ||
+                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
+            ) {
+                diffs++;
+            }
+        }
+        return diffs + lengthDiff;
+    }
+
+    // FORMATTING
+
+    function offset(token, separator) {
+        addFormatToken(token, 0, 0, function () {
+            var offset = this.utcOffset(),
+                sign = '+';
+            if (offset < 0) {
+                offset = -offset;
+                sign = '-';
+            }
+            return (
+                sign +
+                zeroFill(~~(offset / 60), 2) +
+                separator +
+                zeroFill(~~offset % 60, 2)
+            );
+        });
+    }
+
+    offset('Z', ':');
+    offset('ZZ', '');
+
+    // PARSING
+
+    addRegexToken('Z', matchShortOffset);
+    addRegexToken('ZZ', matchShortOffset);
+    addParseToken(['Z', 'ZZ'], function (input, array, config) {
+        config._useUTC = true;
+        config._tzm = offsetFromString(matchShortOffset, input);
+    });
+
+    // HELPERS
+
+    // timezone chunker
+    // '+10:00' > ['10',  '00']
+    // '-1530'  > ['-15', '30']
+    var chunkOffset = /([\+\-]|\d\d)/gi;
+
+    function offsetFromString(matcher, string) {
+        var matches = (string || '').match(matcher),
+            chunk,
+            parts,
+            minutes;
+
+        if (matches === null) {
+            return null;
+        }
+
+        chunk = matches[matches.length - 1] || [];
+        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
+        minutes = +(parts[1] * 60) + toInt(parts[2]);
+
+        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
+    }
+
+    // Return a moment from input, that is local/utc/zone equivalent to model.
+    function cloneWithOffset(input, model) {
+        var res, diff;
+        if (model._isUTC) {
+            res = model.clone();
+            diff =
+                (isMoment(input) || isDate(input)
+                    ? input.valueOf()
+                    : createLocal(input).valueOf()) - res.valueOf();
+            // Use low-level api, because this fn is low-level api.
+            res._d.setTime(res._d.valueOf() + diff);
+            hooks.updateOffset(res, false);
+            return res;
+        } else {
+            return createLocal(input).local();
+        }
+    }
+
+    function getDateOffset(m) {
+        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
+        // https://github.com/moment/moment/pull/1871
+        return -Math.round(m._d.getTimezoneOffset());
+    }
+
+    // HOOKS
+
+    // This function will be called whenever a moment is mutated.
+    // It is intended to keep the offset in sync with the timezone.
+    hooks.updateOffset = function () {};
+
+    // MOMENTS
+
+    // keepLocalTime = true means only change the timezone, without
+    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
+    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
+    // +0200, so we adjust the time as needed, to be valid.
+    //
+    // Keeping the time actually adds/subtracts (one hour)
+    // from the actual represented time. That is why we call updateOffset
+    // a second time. In case it wants us to change the offset again
+    // _changeInProgress == true case, then we have to adjust, because
+    // there is no such time in the given timezone.
+    function getSetOffset(input, keepLocalTime, keepMinutes) {
+        var offset = this._offset || 0,
+            localAdjust;
+        if (!this.isValid()) {
+            return input != null ? this : NaN;
+        }
+        if (input != null) {
+            if (typeof input === 'string') {
+                input = offsetFromString(matchShortOffset, input);
+                if (input === null) {
+                    return this;
+                }
+            } else if (Math.abs(input) < 16 && !keepMinutes) {
+                input = input * 60;
+            }
+            if (!this._isUTC && keepLocalTime) {
+                localAdjust = getDateOffset(this);
+            }
+            this._offset = input;
+            this._isUTC = true;
+            if (localAdjust != null) {
+                this.add(localAdjust, 'm');
+            }
+            if (offset !== input) {
+                if (!keepLocalTime || this._changeInProgress) {
+                    addSubtract(
+                        this,
+                        createDuration(input - offset, 'm'),
+                        1,
+                        false
+                    );
+                } else if (!this._changeInProgress) {
+                    this._changeInProgress = true;
+                    hooks.updateOffset(this, true);
+                    this._changeInProgress = null;
+                }
+            }
+            return this;
+        } else {
+            return this._isUTC ? offset : getDateOffset(this);
+        }
+    }
+
+    function getSetZone(input, keepLocalTime) {
+        if (input != null) {
+            if (typeof input !== 'string') {
+                input = -input;
+            }
+
+            this.utcOffset(input, keepLocalTime);
+
+            return this;
+        } else {
+            return -this.utcOffset();
+        }
+    }
+
+    function setOffsetToUTC(keepLocalTime) {
+        return this.utcOffset(0, keepLocalTime);
+    }
+
+    function setOffsetToLocal(keepLocalTime) {
+        if (this._isUTC) {
+            this.utcOffset(0, keepLocalTime);
+            this._isUTC = false;
+
+            if (keepLocalTime) {
+                this.subtract(getDateOffset(this), 'm');
+            }
+        }
+        return this;
+    }
+
+    function setOffsetToParsedOffset() {
+        if (this._tzm != null) {
+            this.utcOffset(this._tzm, false, true);
+        } else if (typeof this._i === 'string') {
+            var tZone = offsetFromString(matchOffset, this._i);
+            if (tZone != null) {
+                this.utcOffset(tZone);
+            } else {
+                this.utcOffset(0, true);
+            }
+        }
+        return this;
+    }
+
+    function hasAlignedHourOffset(input) {
+        if (!this.isValid()) {
+            return false;
+        }
+        input = input ? createLocal(input).utcOffset() : 0;
+
+        return (this.utcOffset() - input) % 60 === 0;
+    }
+
+    function isDaylightSavingTime() {
+        return (
+            this.utcOffset() > this.clone().month(0).utcOffset() ||
+            this.utcOffset() > this.clone().month(5).utcOffset()
+        );
+    }
+
+    function isDaylightSavingTimeShifted() {
+        if (!isUndefined(this._isDSTShifted)) {
+            return this._isDSTShifted;
+        }
+
+        var c = {},
+            other;
+
+        copyConfig(c, this);
+        c = prepareConfig(c);
+
+        if (c._a) {
+            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
+            this._isDSTShifted =
+                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
+        } else {
+            this._isDSTShifted = false;
+        }
+
+        return this._isDSTShifted;
+    }
+
+    function isLocal() {
+        return this.isValid() ? !this._isUTC : false;
+    }
+
+    function isUtcOffset() {
+        return this.isValid() ? this._isUTC : false;
+    }
+
+    function isUtc() {
+        return this.isValid() ? this._isUTC && this._offset === 0 : false;
+    }
+
+    // ASP.NET json date format regex
+    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
+        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
+        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
+        // and further modified to allow for strings containing both week and day
+        isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
+
+    function createDuration(input, key) {
+        var duration = input,
+            // matching against regexp is expensive, do it on demand
+            match = null,
+            sign,
+            ret,
+            diffRes;
+
+        if (isDuration(input)) {
+            duration = {
+                ms: input._milliseconds,
+                d: input._days,
+                M: input._months,
+            };
+        } else if (isNumber(input) || !isNaN(+input)) {
+            duration = {};
+            if (key) {
+                duration[key] = +input;
+            } else {
+                duration.milliseconds = +input;
+            }
+        } else if ((match = aspNetRegex.exec(input))) {
+            sign = match[1] === '-' ? -1 : 1;
+            duration = {
+                y: 0,
+                d: toInt(match[DATE]) * sign,
+                h: toInt(match[HOUR]) * sign,
+                m: toInt(match[MINUTE]) * sign,
+                s: toInt(match[SECOND]) * sign,
+                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
+            };
+        } else if ((match = isoRegex.exec(input))) {
+            sign = match[1] === '-' ? -1 : 1;
+            duration = {
+                y: parseIso(match[2], sign),
+                M: parseIso(match[3], sign),
+                w: parseIso(match[4], sign),
+                d: parseIso(match[5], sign),
+                h: parseIso(match[6], sign),
+                m: parseIso(match[7], sign),
+                s: parseIso(match[8], sign),
+            };
+        } else if (duration == null) {
+            // checks for null or undefined
+            duration = {};
+        } else if (
+            typeof duration === 'object' &&
+            ('from' in duration || 'to' in duration)
+        ) {
+            diffRes = momentsDifference(
+                createLocal(duration.from),
+                createLocal(duration.to)
+            );
+
+            duration = {};
+            duration.ms = diffRes.milliseconds;
+            duration.M = diffRes.months;
+        }
+
+        ret = new Duration(duration);
+
+        if (isDuration(input) && hasOwnProp(input, '_locale')) {
+            ret._locale = input._locale;
+        }
+
+        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
+            ret._isValid = input._isValid;
+        }
+
+        return ret;
+    }
+
+    createDuration.fn = Duration.prototype;
+    createDuration.invalid = createInvalid$1;
+
+    function parseIso(inp, sign) {
+        // We'd normally use ~~inp for this, but unfortunately it also
+        // converts floats to ints.
+        // inp may be undefined, so careful calling replace on it.
+        var res = inp && parseFloat(inp.replace(',', '.'));
+        // apply sign while we're at it
+        return (isNaN(res) ? 0 : res) * sign;
+    }
+
+    function positiveMomentsDifference(base, other) {
+        var res = {};
+
+        res.months =
+            other.month() - base.month() + (other.year() - base.year()) * 12;
+        if (base.clone().add(res.months, 'M').isAfter(other)) {
+            --res.months;
+        }
+
+        res.milliseconds = +other - +base.clone().add(res.months, 'M');
+
+        return res;
+    }
+
+    function momentsDifference(base, other) {
+        var res;
+        if (!(base.isValid() && other.isValid())) {
+            return { milliseconds: 0, months: 0 };
+        }
+
+        other = cloneWithOffset(other, base);
+        if (base.isBefore(other)) {
+            res = positiveMomentsDifference(base, other);
+        } else {
+            res = positiveMomentsDifference(other, base);
+            res.milliseconds = -res.milliseconds;
+            res.months = -res.months;
+        }
+
+        return res;
+    }
+
+    // TODO: remove 'name' arg after deprecation is removed
+    function createAdder(direction, name) {
+        return function (val, period) {
+            var dur, tmp;
+            //invert the arguments, but complain about it
+            if (period !== null && !isNaN(+period)) {
+                deprecateSimple(
+                    name,
+                    'moment().' +
+                        name +
+                        '(period, number) is deprecated. Please use moment().' +
+                        name +
+                        '(number, period). ' +
+                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
+                );
+                tmp = val;
+                val = period;
+                period = tmp;
+            }
+
+            dur = createDuration(val, period);
+            addSubtract(this, dur, direction);
+            return this;
+        };
+    }
+
+    function addSubtract(mom, duration, isAdding, updateOffset) {
+        var milliseconds = duration._milliseconds,
+            days = absRound(duration._days),
+            months = absRound(duration._months);
+
+        if (!mom.isValid()) {
+            // No op
+            return;
+        }
+
+        updateOffset = updateOffset == null ? true : updateOffset;
+
+        if (months) {
+            setMonth(mom, get(mom, 'Month') + months * isAdding);
+        }
+        if (days) {
+            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
+        }
+        if (milliseconds) {
+            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
+        }
+        if (updateOffset) {
+            hooks.updateOffset(mom, days || months);
+        }
+    }
+
+    var add = createAdder(1, 'add'),
+        subtract = createAdder(-1, 'subtract');
+
+    function isString(input) {
+        return typeof input === 'string' || input instanceof String;
+    }
+
+    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
+    function isMomentInput(input) {
+        return (
+            isMoment(input) ||
+            isDate(input) ||
+            isString(input) ||
+            isNumber(input) ||
+            isNumberOrStringArray(input) ||
+            isMomentInputObject(input) ||
+            input === null ||
+            input === undefined
+        );
+    }
+
+    function isMomentInputObject(input) {
+        var objectTest = isObject(input) && !isObjectEmpty(input),
+            propertyTest = false,
+            properties = [
+                'years',
+                'year',
+                'y',
+                'months',
+                'month',
+                'M',
+                'days',
+                'day',
+                'd',
+                'dates',
+                'date',
+                'D',
+                'hours',
+                'hour',
+                'h',
+                'minutes',
+                'minute',
+                'm',
+                'seconds',
+                'second',
+                's',
+                'milliseconds',
+                'millisecond',
+                'ms',
+            ],
+            i,
+            property;
+
+        for (i = 0; i < properties.length; i += 1) {
+            property = properties[i];
+            propertyTest = propertyTest || hasOwnProp(input, property);
+        }
+
+        return objectTest && propertyTest;
+    }
+
+    function isNumberOrStringArray(input) {
+        var arrayTest = isArray(input),
+            dataTypeTest = false;
+        if (arrayTest) {
+            dataTypeTest =
+                input.filter(function (item) {
+                    return !isNumber(item) && isString(input);
+                }).length === 0;
+        }
+        return arrayTest && dataTypeTest;
+    }
+
+    function isCalendarSpec(input) {
+        var objectTest = isObject(input) && !isObjectEmpty(input),
+            propertyTest = false,
+            properties = [
+                'sameDay',
+                'nextDay',
+                'lastDay',
+                'nextWeek',
+                'lastWeek',
+                'sameElse',
+            ],
+            i,
+            property;
+
+        for (i = 0; i < properties.length; i += 1) {
+            property = properties[i];
+            propertyTest = propertyTest || hasOwnProp(input, property);
+        }
+
+        return objectTest && propertyTest;
+    }
+
+    function getCalendarFormat(myMoment, now) {
+        var diff = myMoment.diff(now, 'days', true);
+        return diff < -6
+            ? 'sameElse'
+            : diff < -1
+            ? 'lastWeek'
+            : diff < 0
+            ? 'lastDay'
+            : diff < 1
+            ? 'sameDay'
+            : diff < 2
+            ? 'nextDay'
+            : diff < 7
+            ? 'nextWeek'
+            : 'sameElse';
+    }
+
+    function calendar$1(time, formats) {
+        // Support for single parameter, formats only overload to the calendar function
+        if (arguments.length === 1) {
+            if (isMomentInput(arguments[0])) {
+                time = arguments[0];
+                formats = undefined;
+            } else if (isCalendarSpec(arguments[0])) {
+                formats = arguments[0];
+                time = undefined;
+            }
+        }
+        // We want to compare the start of today, vs this.
+        // Getting start-of-today depends on whether we're local/utc/offset or not.
+        var now = time || createLocal(),
+            sod = cloneWithOffset(now, this).startOf('day'),
+            format = hooks.calendarFormat(this, sod) || 'sameElse',
+            output =
+                formats &&
+                (isFunction(formats[format])
+                    ? formats[format].call(this, now)
+                    : formats[format]);
+
+        return this.format(
+            output || this.localeData().calendar(format, this, createLocal(now))
+        );
+    }
+
+    function clone() {
+        return new Moment(this);
+    }
+
+    function isAfter(input, units) {
+        var localInput = isMoment(input) ? input : createLocal(input);
+        if (!(this.isValid() && localInput.isValid())) {
+            return false;
+        }
+        units = normalizeUnits(units) || 'millisecond';
+        if (units === 'millisecond') {
+            return this.valueOf() > localInput.valueOf();
+        } else {
+            return localInput.valueOf() < this.clone().startOf(units).valueOf();
+        }
+    }
+
+    function isBefore(input, units) {
+        var localInput = isMoment(input) ? input : createLocal(input);
+        if (!(this.isValid() && localInput.isValid())) {
+            return false;
+        }
+        units = normalizeUnits(units) || 'millisecond';
+        if (units === 'millisecond') {
+            return this.valueOf() < localInput.valueOf();
+        } else {
+            return this.clone().endOf(units).valueOf() < localInput.valueOf();
+        }
+    }
+
+    function isBetween(from, to, units, inclusivity) {
+        var localFrom = isMoment(from) ? from : createLocal(from),
+            localTo = isMoment(to) ? to : createLocal(to);
+        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
+            return false;
+        }
+        inclusivity = inclusivity || '()';
+        return (
+            (inclusivity[0] === '('
+                ? this.isAfter(localFrom, units)
+                : !this.isBefore(localFrom, units)) &&
+            (inclusivity[1] === ')'
+                ? this.isBefore(localTo, units)
+                : !this.isAfter(localTo, units))
+        );
+    }
+
+    function isSame(input, units) {
+        var localInput = isMoment(input) ? input : createLocal(input),
+            inputMs;
+        if (!(this.isValid() && localInput.isValid())) {
+            return false;
+        }
+        units = normalizeUnits(units) || 'millisecond';
+        if (units === 'millisecond') {
+            return this.valueOf() === localInput.valueOf();
+        } else {
+            inputMs = localInput.valueOf();
+            return (
+                this.clone().startOf(units).valueOf() <= inputMs &&
+                inputMs <= this.clone().endOf(units).valueOf()
+            );
+        }
+    }
+
+    function isSameOrAfter(input, units) {
+        return this.isSame(input, units) || this.isAfter(input, units);
+    }
+
+    function isSameOrBefore(input, units) {
+        return this.isSame(input, units) || this.isBefore(input, units);
+    }
+
+    function diff(input, units, asFloat) {
+        var that, zoneDelta, output;
+
+        if (!this.isValid()) {
+            return NaN;
+        }
+
+        that = cloneWithOffset(input, this);
+
+        if (!that.isValid()) {
+            return NaN;
+        }
+
+        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
+
+        units = normalizeUnits(units);
+
+        switch (units) {
+            case 'year':
+                output = monthDiff(this, that) / 12;
+                break;
+            case 'month':
+                output = monthDiff(this, that);
+                break;
+            case 'quarter':
+                output = monthDiff(this, that) / 3;
+                break;
+            case 'second':
+                output = (this - that) / 1e3;
+                break; // 1000
+            case 'minute':
+                output = (this - that) / 6e4;
+                break; // 1000 * 60
+            case 'hour':
+                output = (this - that) / 36e5;
+                break; // 1000 * 60 * 60
+            case 'day':
+                output = (this - that - zoneDelta) / 864e5;
+                break; // 1000 * 60 * 60 * 24, negate dst
+            case 'week':
+                output = (this - that - zoneDelta) / 6048e5;
+                break; // 1000 * 60 * 60 * 24 * 7, negate dst
+            default:
+                output = this - that;
+        }
+
+        return asFloat ? output : absFloor(output);
+    }
+
+    function monthDiff(a, b) {
+        if (a.date() < b.date()) {
+            // end-of-month calculations work correct when the start month has more
+            // days than the end month.
+            return -monthDiff(b, a);
+        }
+        // difference in months
+        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
+            // b is in (anchor - 1 month, anchor + 1 month)
+            anchor = a.clone().add(wholeMonthDiff, 'months'),
+            anchor2,
+            adjust;
+
+        if (b - anchor < 0) {
+            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
+            // linear across the month
+            adjust = (b - anchor) / (anchor - anchor2);
+        } else {
+            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
+            // linear across the month
+            adjust = (b - anchor) / (anchor2 - anchor);
+        }
+
+        //check for negative zero, return zero if negative zero
+        return -(wholeMonthDiff + adjust) || 0;
+    }
+
+    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
+    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
+
+    function toString() {
+        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
+    }
+
+    function toISOString(keepOffset) {
+        if (!this.isValid()) {
+            return null;
+        }
+        var utc = keepOffset !== true,
+            m = utc ? this.clone().utc() : this;
+        if (m.year() < 0 || m.year() > 9999) {
+            return formatMoment(
+                m,
+                utc
+                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
+                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
+            );
+        }
+        if (isFunction(Date.prototype.toISOString)) {
+            // native implementation is ~50x faster, use it when we can
+            if (utc) {
+                return this.toDate().toISOString();
+            } else {
+                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
+                    .toISOString()
+                    .replace('Z', formatMoment(m, 'Z'));
+            }
+        }
+        return formatMoment(
+            m,
+            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
+        );
+    }
+
+    /**
+     * Return a human readable representation of a moment that can
+     * also be evaluated to get a new moment which is the same
+     *
+     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
+     */
+    function inspect() {
+        if (!this.isValid()) {
+            return 'moment.invalid(/* ' + this._i + ' */)';
+        }
+        var func = 'moment',
+            zone = '',
+            prefix,
+            year,
+            datetime,
+            suffix;
+        if (!this.isLocal()) {
+            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
+            zone = 'Z';
+        }
+        prefix = '[' + func + '("]';
+        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
+        datetime = '-MM-DD[T]HH:mm:ss.SSS';
+        suffix = zone + '[")]';
+
+        return this.format(prefix + year + datetime + suffix);
+    }
+
+    function format(inputString) {
+        if (!inputString) {
+            inputString = this.isUtc()
+                ? hooks.defaultFormatUtc
+                : hooks.defaultFormat;
+        }
+        var output = formatMoment(this, inputString);
+        return this.localeData().postformat(output);
+    }
+
+    function from(time, withoutSuffix) {
+        if (
+            this.isValid() &&
+            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
+        ) {
+            return createDuration({ to: this, from: time })
+                .locale(this.locale())
+                .humanize(!withoutSuffix);
+        } else {
+            return this.localeData().invalidDate();
+        }
+    }
+
+    function fromNow(withoutSuffix) {
+        return this.from(createLocal(), withoutSuffix);
+    }
+
+    function to(time, withoutSuffix) {
+        if (
+            this.isValid() &&
+            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
+        ) {
+            return createDuration({ from: this, to: time })
+                .locale(this.locale())
+                .humanize(!withoutSuffix);
+        } else {
+            return this.localeData().invalidDate();
+        }
+    }
+
+    function toNow(withoutSuffix) {
+        return this.to(createLocal(), withoutSuffix);
+    }
+
+    // If passed a locale key, it will set the locale for this
+    // instance.  Otherwise, it will return the locale configuration
+    // variables for this instance.
+    function locale(key) {
+        var newLocaleData;
+
+        if (key === undefined) {
+            return this._locale._abbr;
+        } else {
+            newLocaleData = getLocale(key);
+            if (newLocaleData != null) {
+                this._locale = newLocaleData;
+            }
+            return this;
+        }
+    }
+
+    var lang = deprecate(
+        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
+        function (key) {
+            if (key === undefined) {
+                return this.localeData();
+            } else {
+                return this.locale(key);
+            }
+        }
+    );
+
+    function localeData() {
+        return this._locale;
+    }
+
+    var MS_PER_SECOND = 1000,
+        MS_PER_MINUTE = 60 * MS_PER_SECOND,
+        MS_PER_HOUR = 60 * MS_PER_MINUTE,
+        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
+
+    // actual modulo - handles negative numbers (for dates before 1970):
+    function mod$1(dividend, divisor) {
+        return ((dividend % divisor) + divisor) % divisor;
+    }
+
+    function localStartOfDate(y, m, d) {
+        // the date constructor remaps years 0-99 to 1900-1999
+        if (y < 100 && y >= 0) {
+            // preserve leap years using a full 400 year cycle, then reset
+            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
+        } else {
+            return new Date(y, m, d).valueOf();
+        }
+    }
+
+    function utcStartOfDate(y, m, d) {
+        // Date.UTC remaps years 0-99 to 1900-1999
+        if (y < 100 && y >= 0) {
+            // preserve leap years using a full 400 year cycle, then reset
+            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
+        } else {
+            return Date.UTC(y, m, d);
+        }
+    }
+
+    function startOf(units) {
+        var time, startOfDate;
+        units = normalizeUnits(units);
+        if (units === undefined || units === 'millisecond' || !this.isValid()) {
+            return this;
+        }
+
+        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
+
+        switch (units) {
+            case 'year':
+                time = startOfDate(this.year(), 0, 1);
+                break;
+            case 'quarter':
+                time = startOfDate(
+                    this.year(),
+                    this.month() - (this.month() % 3),
+                    1
+                );
+                break;
+            case 'month':
+                time = startOfDate(this.year(), this.month(), 1);
+                break;
+            case 'week':
+                time = startOfDate(
+                    this.year(),
+                    this.month(),
+                    this.date() - this.weekday()
+                );
+                break;
+            case 'isoWeek':
+                time = startOfDate(
+                    this.year(),
+                    this.month(),
+                    this.date() - (this.isoWeekday() - 1)
+                );
+                break;
+            case 'day':
+            case 'date':
+                time = startOfDate(this.year(), this.month(), this.date());
+                break;
+            case 'hour':
+                time = this._d.valueOf();
+                time -= mod$1(
+                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
+                    MS_PER_HOUR
+                );
+                break;
+            case 'minute':
+                time = this._d.valueOf();
+                time -= mod$1(time, MS_PER_MINUTE);
+                break;
+            case 'second':
+                time = this._d.valueOf();
+                time -= mod$1(time, MS_PER_SECOND);
+                break;
+        }
+
+        this._d.setTime(time);
+        hooks.updateOffset(this, true);
+        return this;
+    }
+
+    function endOf(units) {
+        var time, startOfDate;
+        units = normalizeUnits(units);
+        if (units === undefined || units === 'millisecond' || !this.isValid()) {
+            return this;
+        }
+
+        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
+
+        switch (units) {
+            case 'year':
+                time = startOfDate(this.year() + 1, 0, 1) - 1;
+                break;
+            case 'quarter':
+                time =
+                    startOfDate(
+                        this.year(),
+                        this.month() - (this.month() % 3) + 3,
+                        1
+                    ) - 1;
+                break;
+            case 'month':
+                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
+                break;
+            case 'week':
+                time =
+                    startOfDate(
+                        this.year(),
+                        this.month(),
+                        this.date() - this.weekday() + 7
+                    ) - 1;
+                break;
+            case 'isoWeek':
+                time =
+                    startOfDate(
+                        this.year(),
+                        this.month(),
+                        this.date() - (this.isoWeekday() - 1) + 7
+                    ) - 1;
+                break;
+            case 'day':
+            case 'date':
+                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
+                break;
+            case 'hour':
+                time = this._d.valueOf();
+                time +=
+                    MS_PER_HOUR -
+                    mod$1(
+                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
+                        MS_PER_HOUR
+                    ) -
+                    1;
+                break;
+            case 'minute':
+                time = this._d.valueOf();
+                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
+                break;
+            case 'second':
+                time = this._d.valueOf();
+                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
+                break;
+        }
+
+        this._d.setTime(time);
+        hooks.updateOffset(this, true);
+        return this;
+    }
+
+    function valueOf() {
+        return this._d.valueOf() - (this._offset || 0) * 60000;
+    }
+
+    function unix() {
+        return Math.floor(this.valueOf() / 1000);
+    }
+
+    function toDate() {
+        return new Date(this.valueOf());
+    }
+
+    function toArray() {
+        var m = this;
+        return [
+            m.year(),
+            m.month(),
+            m.date(),
+            m.hour(),
+            m.minute(),
+            m.second(),
+            m.millisecond(),
+        ];
+    }
+
+    function toObject() {
+        var m = this;
+        return {
+            years: m.year(),
+            months: m.month(),
+            date: m.date(),
+            hours: m.hours(),
+            minutes: m.minutes(),
+            seconds: m.seconds(),
+            milliseconds: m.milliseconds(),
+        };
+    }
+
+    function toJSON() {
+        // new Date(NaN).toJSON() === null
+        return this.isValid() ? this.toISOString() : null;
+    }
+
+    function isValid$2() {
+        return isValid(this);
+    }
+
+    function parsingFlags() {
+        return extend({}, getParsingFlags(this));
+    }
+
+    function invalidAt() {
+        return getParsingFlags(this).overflow;
+    }
+
+    function creationData() {
+        return {
+            input: this._i,
+            format: this._f,
+            locale: this._locale,
+            isUTC: this._isUTC,
+            strict: this._strict,
+        };
+    }
+
+    addFormatToken('N', 0, 0, 'eraAbbr');
+    addFormatToken('NN', 0, 0, 'eraAbbr');
+    addFormatToken('NNN', 0, 0, 'eraAbbr');
+    addFormatToken('NNNN', 0, 0, 'eraName');
+    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
+
+    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
+    addFormatToken('y', ['yy', 2], 0, 'eraYear');
+    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
+    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
+
+    addRegexToken('N', matchEraAbbr);
+    addRegexToken('NN', matchEraAbbr);
+    addRegexToken('NNN', matchEraAbbr);
+    addRegexToken('NNNN', matchEraName);
+    addRegexToken('NNNNN', matchEraNarrow);
+
+    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (
+        input,
+        array,
+        config,
+        token
+    ) {
+        var era = config._locale.erasParse(input, token, config._strict);
+        if (era) {
+            getParsingFlags(config).era = era;
+        } else {
+            getParsingFlags(config).invalidEra = input;
+        }
+    });
+
+    addRegexToken('y', matchUnsigned);
+    addRegexToken('yy', matchUnsigned);
+    addRegexToken('yyy', matchUnsigned);
+    addRegexToken('yyyy', matchUnsigned);
+    addRegexToken('yo', matchEraYearOrdinal);
+
+    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
+    addParseToken(['yo'], function (input, array, config, token) {
+        var match;
+        if (config._locale._eraYearOrdinalRegex) {
+            match = input.match(config._locale._eraYearOrdinalRegex);
+        }
+
+        if (config._locale.eraYearOrdinalParse) {
+            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
+        } else {
+            array[YEAR] = parseInt(input, 10);
+        }
+    });
+
+    function localeEras(m, format) {
+        var i,
+            l,
+            date,
+            eras = this._eras || getLocale('en')._eras;
+        for (i = 0, l = eras.length; i < l; ++i) {
+            switch (typeof eras[i].since) {
+                case 'string':
+                    // truncate time
+                    date = hooks(eras[i].since).startOf('day');
+                    eras[i].since = date.valueOf();
+                    break;
+            }
+
+            switch (typeof eras[i].until) {
+                case 'undefined':
+                    eras[i].until = +Infinity;
+                    break;
+                case 'string':
+                    // truncate time
+                    date = hooks(eras[i].until).startOf('day').valueOf();
+                    eras[i].until = date.valueOf();
+                    break;
+            }
+        }
+        return eras;
+    }
+
+    function localeErasParse(eraName, format, strict) {
+        var i,
+            l,
+            eras = this.eras(),
+            name,
+            abbr,
+            narrow;
+        eraName = eraName.toUpperCase();
+
+        for (i = 0, l = eras.length; i < l; ++i) {
+            name = eras[i].name.toUpperCase();
+            abbr = eras[i].abbr.toUpperCase();
+            narrow = eras[i].narrow.toUpperCase();
+
+            if (strict) {
+                switch (format) {
+                    case 'N':
+                    case 'NN':
+                    case 'NNN':
+                        if (abbr === eraName) {
+                            return eras[i];
+                        }
+                        break;
+
+                    case 'NNNN':
+                        if (name === eraName) {
+                            return eras[i];
+                        }
+                        break;
+
+                    case 'NNNNN':
+                        if (narrow === eraName) {
+                            return eras[i];
+                        }
+                        break;
+                }
+            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
+                return eras[i];
+            }
+        }
+    }
+
+    function localeErasConvertYear(era, year) {
+        var dir = era.since <= era.until ? +1 : -1;
+        if (year === undefined) {
+            return hooks(era.since).year();
+        } else {
+            return hooks(era.since).year() + (year - era.offset) * dir;
+        }
+    }
+
+    function getEraName() {
+        var i,
+            l,
+            val,
+            eras = this.localeData().eras();
+        for (i = 0, l = eras.length; i < l; ++i) {
+            // truncate time
+            val = this.clone().startOf('day').valueOf();
+
+            if (eras[i].since <= val && val <= eras[i].until) {
+                return eras[i].name;
+            }
+            if (eras[i].until <= val && val <= eras[i].since) {
+                return eras[i].name;
+            }
+        }
+
+        return '';
+    }
+
+    function getEraNarrow() {
+        var i,
+            l,
+            val,
+            eras = this.localeData().eras();
+        for (i = 0, l = eras.length; i < l; ++i) {
+            // truncate time
+            val = this.clone().startOf('day').valueOf();
+
+            if (eras[i].since <= val && val <= eras[i].until) {
+                return eras[i].narrow;
+            }
+            if (eras[i].until <= val && val <= eras[i].since) {
+                return eras[i].narrow;
+            }
+        }
+
+        return '';
+    }
+
+    function getEraAbbr() {
+        var i,
+            l,
+            val,
+            eras = this.localeData().eras();
+        for (i = 0, l = eras.length; i < l; ++i) {
+            // truncate time
+            val = this.clone().startOf('day').valueOf();
+
+            if (eras[i].since <= val && val <= eras[i].until) {
+                return eras[i].abbr;
+            }
+            if (eras[i].until <= val && val <= eras[i].since) {
+                return eras[i].abbr;
+            }
+        }
+
+        return '';
+    }
+
+    function getEraYear() {
+        var i,
+            l,
+            dir,
+            val,
+            eras = this.localeData().eras();
+        for (i = 0, l = eras.length; i < l; ++i) {
+            dir = eras[i].since <= eras[i].until ? +1 : -1;
+
+            // truncate time
+            val = this.clone().startOf('day').valueOf();
+
+            if (
+                (eras[i].since <= val && val <= eras[i].until) ||
+                (eras[i].until <= val && val <= eras[i].since)
+            ) {
+                return (
+                    (this.year() - hooks(eras[i].since).year()) * dir +
+                    eras[i].offset
+                );
+            }
+        }
+
+        return this.year();
+    }
+
+    function erasNameRegex(isStrict) {
+        if (!hasOwnProp(this, '_erasNameRegex')) {
+            computeErasParse.call(this);
+        }
+        return isStrict ? this._erasNameRegex : this._erasRegex;
+    }
+
+    function erasAbbrRegex(isStrict) {
+        if (!hasOwnProp(this, '_erasAbbrRegex')) {
+            computeErasParse.call(this);
+        }
+        return isStrict ? this._erasAbbrRegex : this._erasRegex;
+    }
+
+    function erasNarrowRegex(isStrict) {
+        if (!hasOwnProp(this, '_erasNarrowRegex')) {
+            computeErasParse.call(this);
+        }
+        return isStrict ? this._erasNarrowRegex : this._erasRegex;
+    }
+
+    function matchEraAbbr(isStrict, locale) {
+        return locale.erasAbbrRegex(isStrict);
+    }
+
+    function matchEraName(isStrict, locale) {
+        return locale.erasNameRegex(isStrict);
+    }
+
+    function matchEraNarrow(isStrict, locale) {
+        return locale.erasNarrowRegex(isStrict);
+    }
+
+    function matchEraYearOrdinal(isStrict, locale) {
+        return locale._eraYearOrdinalRegex || matchUnsigned;
+    }
+
+    function computeErasParse() {
+        var abbrPieces = [],
+            namePieces = [],
+            narrowPieces = [],
+            mixedPieces = [],
+            i,
+            l,
+            eras = this.eras();
+
+        for (i = 0, l = eras.length; i < l; ++i) {
+            namePieces.push(regexEscape(eras[i].name));
+            abbrPieces.push(regexEscape(eras[i].abbr));
+            narrowPieces.push(regexEscape(eras[i].narrow));
+
+            mixedPieces.push(regexEscape(eras[i].name));
+            mixedPieces.push(regexEscape(eras[i].abbr));
+            mixedPieces.push(regexEscape(eras[i].narrow));
+        }
+
+        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
+        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
+        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
+        this._erasNarrowRegex = new RegExp(
+            '^(' + narrowPieces.join('|') + ')',
+            'i'
+        );
+    }
+
+    // FORMATTING
+
+    addFormatToken(0, ['gg', 2], 0, function () {
+        return this.weekYear() % 100;
+    });
+
+    addFormatToken(0, ['GG', 2], 0, function () {
+        return this.isoWeekYear() % 100;
+    });
+
+    function addWeekYearFormatToken(token, getter) {
+        addFormatToken(0, [token, token.length], 0, getter);
+    }
+
+    addWeekYearFormatToken('gggg', 'weekYear');
+    addWeekYearFormatToken('ggggg', 'weekYear');
+    addWeekYearFormatToken('GGGG', 'isoWeekYear');
+    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
+
+    // ALIASES
+
+    addUnitAlias('weekYear', 'gg');
+    addUnitAlias('isoWeekYear', 'GG');
+
+    // PRIORITY
+
+    addUnitPriority('weekYear', 1);
+    addUnitPriority('isoWeekYear', 1);
+
+    // PARSING
+
+    addRegexToken('G', matchSigned);
+    addRegexToken('g', matchSigned);
+    addRegexToken('GG', match1to2, match2);
+    addRegexToken('gg', match1to2, match2);
+    addRegexToken('GGGG', match1to4, match4);
+    addRegexToken('gggg', match1to4, match4);
+    addRegexToken('GGGGG', match1to6, match6);
+    addRegexToken('ggggg', match1to6, match6);
+
+    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (
+        input,
+        week,
+        config,
+        token
+    ) {
+        week[token.substr(0, 2)] = toInt(input);
+    });
+
+    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
+        week[token] = hooks.parseTwoDigitYear(input);
+    });
+
+    // MOMENTS
+
+    function getSetWeekYear(input) {
+        return getSetWeekYearHelper.call(
+            this,
+            input,
+            this.week(),
+            this.weekday(),
+            this.localeData()._week.dow,
+            this.localeData()._week.doy
+        );
+    }
+
+    function getSetISOWeekYear(input) {
+        return getSetWeekYearHelper.call(
+            this,
+            input,
+            this.isoWeek(),
+            this.isoWeekday(),
+            1,
+            4
+        );
+    }
+
+    function getISOWeeksInYear() {
+        return weeksInYear(this.year(), 1, 4);
+    }
+
+    function getISOWeeksInISOWeekYear() {
+        return weeksInYear(this.isoWeekYear(), 1, 4);
+    }
+
+    function getWeeksInYear() {
+        var weekInfo = this.localeData()._week;
+        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
+    }
+
+    function getWeeksInWeekYear() {
+        var weekInfo = this.localeData()._week;
+        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
+    }
+
+    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
+        var weeksTarget;
+        if (input == null) {
+            return weekOfYear(this, dow, doy).year;
+        } else {
+            weeksTarget = weeksInYear(input, dow, doy);
+            if (week > weeksTarget) {
+                week = weeksTarget;
+            }
+            return setWeekAll.call(this, input, week, weekday, dow, doy);
+        }
+    }
+
+    function setWeekAll(weekYear, week, weekday, dow, doy) {
+        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
+            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
+
+        this.year(date.getUTCFullYear());
+        this.month(date.getUTCMonth());
+        this.date(date.getUTCDate());
+        return this;
+    }
+
+    // FORMATTING
+
+    addFormatToken('Q', 0, 'Qo', 'quarter');
+
+    // ALIASES
+
+    addUnitAlias('quarter', 'Q');
+
+    // PRIORITY
+
+    addUnitPriority('quarter', 7);
+
+    // PARSING
+
+    addRegexToken('Q', match1);
+    addParseToken('Q', function (input, array) {
+        array[MONTH] = (toInt(input) - 1) * 3;
+    });
+
+    // MOMENTS
+
+    function getSetQuarter(input) {
+        return input == null
+            ? Math.ceil((this.month() + 1) / 3)
+            : this.month((input - 1) * 3 + (this.month() % 3));
+    }
+
+    // FORMATTING
+
+    addFormatToken('D', ['DD', 2], 'Do', 'date');
+
+    // ALIASES
+
+    addUnitAlias('date', 'D');
+
+    // PRIORITY
+    addUnitPriority('date', 9);
+
+    // PARSING
+
+    addRegexToken('D', match1to2);
+    addRegexToken('DD', match1to2, match2);
+    addRegexToken('Do', function (isStrict, locale) {
+        // TODO: Remove "ordinalParse" fallback in next major release.
+        return isStrict
+            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
+            : locale._dayOfMonthOrdinalParseLenient;
+    });
+
+    addParseToken(['D', 'DD'], DATE);
+    addParseToken('Do', function (input, array) {
+        array[DATE] = toInt(input.match(match1to2)[0]);
+    });
+
+    // MOMENTS
+
+    var getSetDayOfMonth = makeGetSet('Date', true);
+
+    // FORMATTING
+
+    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
+
+    // ALIASES
+
+    addUnitAlias('dayOfYear', 'DDD');
+
+    // PRIORITY
+    addUnitPriority('dayOfYear', 4);
+
+    // PARSING
+
+    addRegexToken('DDD', match1to3);
+    addRegexToken('DDDD', match3);
+    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
+        config._dayOfYear = toInt(input);
+    });
+
+    // HELPERS
+
+    // MOMENTS
+
+    function getSetDayOfYear(input) {
+        var dayOfYear =
+            Math.round(
+                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
+            ) + 1;
+        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
+    }
+
+    // FORMATTING
+
+    addFormatToken('m', ['mm', 2], 0, 'minute');
+
+    // ALIASES
+
+    addUnitAlias('minute', 'm');
+
+    // PRIORITY
+
+    addUnitPriority('minute', 14);
+
+    // PARSING
+
+    addRegexToken('m', match1to2);
+    addRegexToken('mm', match1to2, match2);
+    addParseToken(['m', 'mm'], MINUTE);
+
+    // MOMENTS
+
+    var getSetMinute = makeGetSet('Minutes', false);
+
+    // FORMATTING
+
+    addFormatToken('s', ['ss', 2], 0, 'second');
+
+    // ALIASES
+
+    addUnitAlias('second', 's');
+
+    // PRIORITY
+
+    addUnitPriority('second', 15);
+
+    // PARSING
+
+    addRegexToken('s', match1to2);
+    addRegexToken('ss', match1to2, match2);
+    addParseToken(['s', 'ss'], SECOND);
+
+    // MOMENTS
+
+    var getSetSecond = makeGetSet('Seconds', false);
+
+    // FORMATTING
+
+    addFormatToken('S', 0, 0, function () {
+        return ~~(this.millisecond() / 100);
+    });
+
+    addFormatToken(0, ['SS', 2], 0, function () {
+        return ~~(this.millisecond() / 10);
+    });
+
+    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
+    addFormatToken(0, ['SSSS', 4], 0, function () {
+        return this.millisecond() * 10;
+    });
+    addFormatToken(0, ['SSSSS', 5], 0, function () {
+        return this.millisecond() * 100;
+    });
+    addFormatToken(0, ['SSSSSS', 6], 0, function () {
+        return this.millisecond() * 1000;
+    });
+    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
+        return this.millisecond() * 10000;
+    });
+    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
+        return this.millisecond() * 100000;
+    });
+    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
+        return this.millisecond() * 1000000;
+    });
+
+    // ALIASES
+
+    addUnitAlias('millisecond', 'ms');
+
+    // PRIORITY
+
+    addUnitPriority('millisecond', 16);
+
+    // PARSING
+
+    addRegexToken('S', match1to3, match1);
+    addRegexToken('SS', match1to3, match2);
+    addRegexToken('SSS', match1to3, match3);
+
+    var token, getSetMillisecond;
+    for (token = 'SSSS'; token.length <= 9; token += 'S') {
+        addRegexToken(token, matchUnsigned);
+    }
+
+    function parseMs(input, array) {
+        array[MILLISECOND] = toInt(('0.' + input) * 1000);
+    }
+
+    for (token = 'S'; token.length <= 9; token += 'S') {
+        addParseToken(token, parseMs);
+    }
+
+    getSetMillisecond = makeGetSet('Milliseconds', false);
+
+    // FORMATTING
+
+    addFormatToken('z', 0, 0, 'zoneAbbr');
+    addFormatToken('zz', 0, 0, 'zoneName');
+
+    // MOMENTS
+
+    function getZoneAbbr() {
+        return this._isUTC ? 'UTC' : '';
+    }
+
+    function getZoneName() {
+        return this._isUTC ? 'Coordinated Universal Time' : '';
+    }
+
+    var proto = Moment.prototype;
+
+    proto.add = add;
+    proto.calendar = calendar$1;
+    proto.clone = clone;
+    proto.diff = diff;
+    proto.endOf = endOf;
+    proto.format = format;
+    proto.from = from;
+    proto.fromNow = fromNow;
+    proto.to = to;
+    proto.toNow = toNow;
+    proto.get = stringGet;
+    proto.invalidAt = invalidAt;
+    proto.isAfter = isAfter;
+    proto.isBefore = isBefore;
+    proto.isBetween = isBetween;
+    proto.isSame = isSame;
+    proto.isSameOrAfter = isSameOrAfter;
+    proto.isSameOrBefore = isSameOrBefore;
+    proto.isValid = isValid$2;
+    proto.lang = lang;
+    proto.locale = locale;
+    proto.localeData = localeData;
+    proto.max = prototypeMax;
+    proto.min = prototypeMin;
+    proto.parsingFlags = parsingFlags;
+    proto.set = stringSet;
+    proto.startOf = startOf;
+    proto.subtract = subtract;
+    proto.toArray = toArray;
+    proto.toObject = toObject;
+    proto.toDate = toDate;
+    proto.toISOString = toISOString;
+    proto.inspect = inspect;
+    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
+        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
+            return 'Moment<' + this.format() + '>';
+        };
+    }
+    proto.toJSON = toJSON;
+    proto.toString = toString;
+    proto.unix = unix;
+    proto.valueOf = valueOf;
+    proto.creationData = creationData;
+    proto.eraName = getEraName;
+    proto.eraNarrow = getEraNarrow;
+    proto.eraAbbr = getEraAbbr;
+    proto.eraYear = getEraYear;
+    proto.year = getSetYear;
+    proto.isLeapYear = getIsLeapYear;
+    proto.weekYear = getSetWeekYear;
+    proto.isoWeekYear = getSetISOWeekYear;
+    proto.quarter = proto.quarters = getSetQuarter;
+    proto.month = getSetMonth;
+    proto.daysInMonth = getDaysInMonth;
+    proto.week = proto.weeks = getSetWeek;
+    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
+    proto.weeksInYear = getWeeksInYear;
+    proto.weeksInWeekYear = getWeeksInWeekYear;
+    proto.isoWeeksInYear = getISOWeeksInYear;
+    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
+    proto.date = getSetDayOfMonth;
+    proto.day = proto.days = getSetDayOfWeek;
+    proto.weekday = getSetLocaleDayOfWeek;
+    proto.isoWeekday = getSetISODayOfWeek;
+    proto.dayOfYear = getSetDayOfYear;
+    proto.hour = proto.hours = getSetHour;
+    proto.minute = proto.minutes = getSetMinute;
+    proto.second = proto.seconds = getSetSecond;
+    proto.millisecond = proto.milliseconds = getSetMillisecond;
+    proto.utcOffset = getSetOffset;
+    proto.utc = setOffsetToUTC;
+    proto.local = setOffsetToLocal;
+    proto.parseZone = setOffsetToParsedOffset;
+    proto.hasAlignedHourOffset = hasAlignedHourOffset;
+    proto.isDST = isDaylightSavingTime;
+    proto.isLocal = isLocal;
+    proto.isUtcOffset = isUtcOffset;
+    proto.isUtc = isUtc;
+    proto.isUTC = isUtc;
+    proto.zoneAbbr = getZoneAbbr;
+    proto.zoneName = getZoneName;
+    proto.dates = deprecate(
+        'dates accessor is deprecated. Use date instead.',
+        getSetDayOfMonth
+    );
+    proto.months = deprecate(
+        'months accessor is deprecated. Use month instead',
+        getSetMonth
+    );
+    proto.years = deprecate(
+        'years accessor is deprecated. Use year instead',
+        getSetYear
+    );
+    proto.zone = deprecate(
+        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
+        getSetZone
+    );
+    proto.isDSTShifted = deprecate(
+        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
+        isDaylightSavingTimeShifted
+    );
+
+    function createUnix(input) {
+        return createLocal(input * 1000);
+    }
+
+    function createInZone() {
+        return createLocal.apply(null, arguments).parseZone();
+    }
+
+    function preParsePostFormat(string) {
+        return string;
+    }
+
+    var proto$1 = Locale.prototype;
+
+    proto$1.calendar = calendar;
+    proto$1.longDateFormat = longDateFormat;
+    proto$1.invalidDate = invalidDate;
+    proto$1.ordinal = ordinal;
+    proto$1.preparse = preParsePostFormat;
+    proto$1.postformat = preParsePostFormat;
+    proto$1.relativeTime = relativeTime;
+    proto$1.pastFuture = pastFuture;
+    proto$1.set = set;
+    proto$1.eras = localeEras;
+    proto$1.erasParse = localeErasParse;
+    proto$1.erasConvertYear = localeErasConvertYear;
+    proto$1.erasAbbrRegex = erasAbbrRegex;
+    proto$1.erasNameRegex = erasNameRegex;
+    proto$1.erasNarrowRegex = erasNarrowRegex;
+
+    proto$1.months = localeMonths;
+    proto$1.monthsShort = localeMonthsShort;
+    proto$1.monthsParse = localeMonthsParse;
+    proto$1.monthsRegex = monthsRegex;
+    proto$1.monthsShortRegex = monthsShortRegex;
+    proto$1.week = localeWeek;
+    proto$1.firstDayOfYear = localeFirstDayOfYear;
+    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
+
+    proto$1.weekdays = localeWeekdays;
+    proto$1.weekdaysMin = localeWeekdaysMin;
+    proto$1.weekdaysShort = localeWeekdaysShort;
+    proto$1.weekdaysParse = localeWeekdaysParse;
+
+    proto$1.weekdaysRegex = weekdaysRegex;
+    proto$1.weekdaysShortRegex = weekdaysShortRegex;
+    proto$1.weekdaysMinRegex = weekdaysMinRegex;
+
+    proto$1.isPM = localeIsPM;
+    proto$1.meridiem = localeMeridiem;
+
+    function get$1(format, index, field, setter) {
+        var locale = getLocale(),
+            utc = createUTC().set(setter, index);
+        return locale[field](utc, format);
+    }
+
+    function listMonthsImpl(format, index, field) {
+        if (isNumber(format)) {
+            index = format;
+            format = undefined;
+        }
+
+        format = format || '';
+
+        if (index != null) {
+            return get$1(format, index, field, 'month');
+        }
+
+        var i,
+            out = [];
+        for (i = 0; i < 12; i++) {
+            out[i] = get$1(format, i, field, 'month');
+        }
+        return out;
+    }
+
+    // ()
+    // (5)
+    // (fmt, 5)
+    // (fmt)
+    // (true)
+    // (true, 5)
+    // (true, fmt, 5)
+    // (true, fmt)
+    function listWeekdaysImpl(localeSorted, format, index, field) {
+        if (typeof localeSorted === 'boolean') {
+            if (isNumber(format)) {
+                index = format;
+                format = undefined;
+            }
+
+            format = format || '';
+        } else {
+            format = localeSorted;
+            index = format;
+            localeSorted = false;
+
+            if (isNumber(format)) {
+                index = format;
+                format = undefined;
+            }
+
+            format = format || '';
+        }
+
+        var locale = getLocale(),
+            shift = localeSorted ? locale._week.dow : 0,
+            i,
+            out = [];
+
+        if (index != null) {
+            return get$1(format, (index + shift) % 7, field, 'day');
+        }
+
+        for (i = 0; i < 7; i++) {
+            out[i] = get$1(format, (i + shift) % 7, field, 'day');
+        }
+        return out;
+    }
+
+    function listMonths(format, index) {
+        return listMonthsImpl(format, index, 'months');
+    }
+
+    function listMonthsShort(format, index) {
+        return listMonthsImpl(format, index, 'monthsShort');
+    }
+
+    function listWeekdays(localeSorted, format, index) {
+        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
+    }
+
+    function listWeekdaysShort(localeSorted, format, index) {
+        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
+    }
+
+    function listWeekdaysMin(localeSorted, format, index) {
+        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
+    }
+
+    getSetGlobalLocale('en', {
+        eras: [
+            {
+                since: '0001-01-01',
+                until: +Infinity,
+                offset: 1,
+                name: 'Anno Domini',
+                narrow: 'AD',
+                abbr: 'AD',
+            },
+            {
+                since: '0000-12-31',
+                until: -Infinity,
+                offset: 1,
+                name: 'Before Christ',
+                narrow: 'BC',
+                abbr: 'BC',
+            },
+        ],
+        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    toInt((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+    });
+
+    // Side effect imports
+
+    hooks.lang = deprecate(
+        'moment.lang is deprecated. Use moment.locale instead.',
+        getSetGlobalLocale
+    );
+    hooks.langData = deprecate(
+        'moment.langData is deprecated. Use moment.localeData instead.',
+        getLocale
+    );
+
+    var mathAbs = Math.abs;
+
+    function abs() {
+        var data = this._data;
+
+        this._milliseconds = mathAbs(this._milliseconds);
+        this._days = mathAbs(this._days);
+        this._months = mathAbs(this._months);
+
+        data.milliseconds = mathAbs(data.milliseconds);
+        data.seconds = mathAbs(data.seconds);
+        data.minutes = mathAbs(data.minutes);
+        data.hours = mathAbs(data.hours);
+        data.months = mathAbs(data.months);
+        data.years = mathAbs(data.years);
+
+        return this;
+    }
+
+    function addSubtract$1(duration, input, value, direction) {
+        var other = createDuration(input, value);
+
+        duration._milliseconds += direction * other._milliseconds;
+        duration._days += direction * other._days;
+        duration._months += direction * other._months;
+
+        return duration._bubble();
+    }
+
+    // supports only 2.0-style add(1, 's') or add(duration)
+    function add$1(input, value) {
+        return addSubtract$1(this, input, value, 1);
+    }
+
+    // supports only 2.0-style subtract(1, 's') or subtract(duration)
+    function subtract$1(input, value) {
+        return addSubtract$1(this, input, value, -1);
+    }
+
+    function absCeil(number) {
+        if (number < 0) {
+            return Math.floor(number);
+        } else {
+            return Math.ceil(number);
+        }
+    }
+
+    function bubble() {
+        var milliseconds = this._milliseconds,
+            days = this._days,
+            months = this._months,
+            data = this._data,
+            seconds,
+            minutes,
+            hours,
+            years,
+            monthsFromDays;
+
+        // if we have a mix of positive and negative values, bubble down first
+        // check: https://github.com/moment/moment/issues/2166
+        if (
+            !(
+                (milliseconds >= 0 && days >= 0 && months >= 0) ||
+                (milliseconds <= 0 && days <= 0 && months <= 0)
+            )
+        ) {
+            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
+            days = 0;
+            months = 0;
+        }
+
+        // The following code bubbles up values, see the tests for
+        // examples of what that means.
+        data.milliseconds = milliseconds % 1000;
+
+        seconds = absFloor(milliseconds / 1000);
+        data.seconds = seconds % 60;
+
+        minutes = absFloor(seconds / 60);
+        data.minutes = minutes % 60;
+
+        hours = absFloor(minutes / 60);
+        data.hours = hours % 24;
+
+        days += absFloor(hours / 24);
+
+        // convert days to months
+        monthsFromDays = absFloor(daysToMonths(days));
+        months += monthsFromDays;
+        days -= absCeil(monthsToDays(monthsFromDays));
+
+        // 12 months -> 1 year
+        years = absFloor(months / 12);
+        months %= 12;
+
+        data.days = days;
+        data.months = months;
+        data.years = years;
+
+        return this;
+    }
+
+    function daysToMonths(days) {
+        // 400 years have 146097 days (taking into account leap year rules)
+        // 400 years have 12 months === 4800
+        return (days * 4800) / 146097;
+    }
+
+    function monthsToDays(months) {
+        // the reverse of daysToMonths
+        return (months * 146097) / 4800;
+    }
+
+    function as(units) {
+        if (!this.isValid()) {
+            return NaN;
+        }
+        var days,
+            months,
+            milliseconds = this._milliseconds;
+
+        units = normalizeUnits(units);
+
+        if (units === 'month' || units === 'quarter' || units === 'year') {
+            days = this._days + milliseconds / 864e5;
+            months = this._months + daysToMonths(days);
+            switch (units) {
+                case 'month':
+                    return months;
+                case 'quarter':
+                    return months / 3;
+                case 'year':
+                    return months / 12;
+            }
+        } else {
+            // handle milliseconds separately because of floating point math errors (issue #1867)
+            days = this._days + Math.round(monthsToDays(this._months));
+            switch (units) {
+                case 'week':
+                    return days / 7 + milliseconds / 6048e5;
+                case 'day':
+                    return days + milliseconds / 864e5;
+                case 'hour':
+                    return days * 24 + milliseconds / 36e5;
+                case 'minute':
+                    return days * 1440 + milliseconds / 6e4;
+                case 'second':
+                    return days * 86400 + milliseconds / 1000;
+                // Math.floor prevents floating point math errors here
+                case 'millisecond':
+                    return Math.floor(days * 864e5) + milliseconds;
+                default:
+                    throw new Error('Unknown unit ' + units);
+            }
+        }
+    }
+
+    // TODO: Use this.as('ms')?
+    function valueOf$1() {
+        if (!this.isValid()) {
+            return NaN;
+        }
+        return (
+            this._milliseconds +
+            this._days * 864e5 +
+            (this._months % 12) * 2592e6 +
+            toInt(this._months / 12) * 31536e6
+        );
+    }
+
+    function makeAs(alias) {
+        return function () {
+            return this.as(alias);
+        };
+    }
+
+    var asMilliseconds = makeAs('ms'),
+        asSeconds = makeAs('s'),
+        asMinutes = makeAs('m'),
+        asHours = makeAs('h'),
+        asDays = makeAs('d'),
+        asWeeks = makeAs('w'),
+        asMonths = makeAs('M'),
+        asQuarters = makeAs('Q'),
+        asYears = makeAs('y');
+
+    function clone$1() {
+        return createDuration(this);
+    }
+
+    function get$2(units) {
+        units = normalizeUnits(units);
+        return this.isValid() ? this[units + 's']() : NaN;
+    }
+
+    function makeGetter(name) {
+        return function () {
+            return this.isValid() ? this._data[name] : NaN;
+        };
+    }
+
+    var milliseconds = makeGetter('milliseconds'),
+        seconds = makeGetter('seconds'),
+        minutes = makeGetter('minutes'),
+        hours = makeGetter('hours'),
+        days = makeGetter('days'),
+        months = makeGetter('months'),
+        years = makeGetter('years');
+
+    function weeks() {
+        return absFloor(this.days() / 7);
+    }
+
+    var round = Math.round,
+        thresholds = {
+            ss: 44, // a few seconds to seconds
+            s: 45, // seconds to minute
+            m: 45, // minutes to hour
+            h: 22, // hours to day
+            d: 26, // days to month/week
+            w: null, // weeks to month
+            M: 11, // months to year
+        };
+
+    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
+    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
+        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
+    }
+
+    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
+        var duration = createDuration(posNegDuration).abs(),
+            seconds = round(duration.as('s')),
+            minutes = round(duration.as('m')),
+            hours = round(duration.as('h')),
+            days = round(duration.as('d')),
+            months = round(duration.as('M')),
+            weeks = round(duration.as('w')),
+            years = round(duration.as('y')),
+            a =
+                (seconds <= thresholds.ss && ['s', seconds]) ||
+                (seconds < thresholds.s && ['ss', seconds]) ||
+                (minutes <= 1 && ['m']) ||
+                (minutes < thresholds.m && ['mm', minutes]) ||
+                (hours <= 1 && ['h']) ||
+                (hours < thresholds.h && ['hh', hours]) ||
+                (days <= 1 && ['d']) ||
+                (days < thresholds.d && ['dd', days]);
+
+        if (thresholds.w != null) {
+            a =
+                a ||
+                (weeks <= 1 && ['w']) ||
+                (weeks < thresholds.w && ['ww', weeks]);
+        }
+        a = a ||
+            (months <= 1 && ['M']) ||
+            (months < thresholds.M && ['MM', months]) ||
+            (years <= 1 && ['y']) || ['yy', years];
+
+        a[2] = withoutSuffix;
+        a[3] = +posNegDuration > 0;
+        a[4] = locale;
+        return substituteTimeAgo.apply(null, a);
+    }
+
+    // This function allows you to set the rounding function for relative time strings
+    function getSetRelativeTimeRounding(roundingFunction) {
+        if (roundingFunction === undefined) {
+            return round;
+        }
+        if (typeof roundingFunction === 'function') {
+            round = roundingFunction;
+            return true;
+        }
+        return false;
+    }
+
+    // This function allows you to set a threshold for relative time strings
+    function getSetRelativeTimeThreshold(threshold, limit) {
+        if (thresholds[threshold] === undefined) {
+            return false;
+        }
+        if (limit === undefined) {
+            return thresholds[threshold];
+        }
+        thresholds[threshold] = limit;
+        if (threshold === 's') {
+            thresholds.ss = limit - 1;
+        }
+        return true;
+    }
+
+    function humanize(argWithSuffix, argThresholds) {
+        if (!this.isValid()) {
+            return this.localeData().invalidDate();
+        }
+
+        var withSuffix = false,
+            th = thresholds,
+            locale,
+            output;
+
+        if (typeof argWithSuffix === 'object') {
+            argThresholds = argWithSuffix;
+            argWithSuffix = false;
+        }
+        if (typeof argWithSuffix === 'boolean') {
+            withSuffix = argWithSuffix;
+        }
+        if (typeof argThresholds === 'object') {
+            th = Object.assign({}, thresholds, argThresholds);
+            if (argThresholds.s != null && argThresholds.ss == null) {
+                th.ss = argThresholds.s - 1;
+            }
+        }
+
+        locale = this.localeData();
+        output = relativeTime$1(this, !withSuffix, th, locale);
+
+        if (withSuffix) {
+            output = locale.pastFuture(+this, output);
+        }
+
+        return locale.postformat(output);
+    }
+
+    var abs$1 = Math.abs;
+
+    function sign(x) {
+        return (x > 0) - (x < 0) || +x;
+    }
+
+    function toISOString$1() {
+        // for ISO strings we do not use the normal bubbling rules:
+        //  * milliseconds bubble up until they become hours
+        //  * days do not bubble at all
+        //  * months bubble up until they become years
+        // This is because there is no context-free conversion between hours and days
+        // (think of clock changes)
+        // and also not between days and months (28-31 days per month)
+        if (!this.isValid()) {
+            return this.localeData().invalidDate();
+        }
+
+        var seconds = abs$1(this._milliseconds) / 1000,
+            days = abs$1(this._days),
+            months = abs$1(this._months),
+            minutes,
+            hours,
+            years,
+            s,
+            total = this.asSeconds(),
+            totalSign,
+            ymSign,
+            daysSign,
+            hmsSign;
+
+        if (!total) {
+            // this is the same as C#'s (Noda) and python (isodate)...
+            // but not other JS (goog.date)
+            return 'P0D';
+        }
+
+        // 3600 seconds -> 60 minutes -> 1 hour
+        minutes = absFloor(seconds / 60);
+        hours = absFloor(minutes / 60);
+        seconds %= 60;
+        minutes %= 60;
+
+        // 12 months -> 1 year
+        years = absFloor(months / 12);
+        months %= 12;
+
+        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
+        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
+
+        totalSign = total < 0 ? '-' : '';
+        ymSign = sign(this._months) !== sign(total) ? '-' : '';
+        daysSign = sign(this._days) !== sign(total) ? '-' : '';
+        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
+
+        return (
+            totalSign +
+            'P' +
+            (years ? ymSign + years + 'Y' : '') +
+            (months ? ymSign + months + 'M' : '') +
+            (days ? daysSign + days + 'D' : '') +
+            (hours || minutes || seconds ? 'T' : '') +
+            (hours ? hmsSign + hours + 'H' : '') +
+            (minutes ? hmsSign + minutes + 'M' : '') +
+            (seconds ? hmsSign + s + 'S' : '')
+        );
+    }
+
+    var proto$2 = Duration.prototype;
+
+    proto$2.isValid = isValid$1;
+    proto$2.abs = abs;
+    proto$2.add = add$1;
+    proto$2.subtract = subtract$1;
+    proto$2.as = as;
+    proto$2.asMilliseconds = asMilliseconds;
+    proto$2.asSeconds = asSeconds;
+    proto$2.asMinutes = asMinutes;
+    proto$2.asHours = asHours;
+    proto$2.asDays = asDays;
+    proto$2.asWeeks = asWeeks;
+    proto$2.asMonths = asMonths;
+    proto$2.asQuarters = asQuarters;
+    proto$2.asYears = asYears;
+    proto$2.valueOf = valueOf$1;
+    proto$2._bubble = bubble;
+    proto$2.clone = clone$1;
+    proto$2.get = get$2;
+    proto$2.milliseconds = milliseconds;
+    proto$2.seconds = seconds;
+    proto$2.minutes = minutes;
+    proto$2.hours = hours;
+    proto$2.days = days;
+    proto$2.weeks = weeks;
+    proto$2.months = months;
+    proto$2.years = years;
+    proto$2.humanize = humanize;
+    proto$2.toISOString = toISOString$1;
+    proto$2.toString = toISOString$1;
+    proto$2.toJSON = toISOString$1;
+    proto$2.locale = locale;
+    proto$2.localeData = localeData;
+
+    proto$2.toIsoString = deprecate(
+        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
+        toISOString$1
+    );
+    proto$2.lang = lang;
+
+    // FORMATTING
+
+    addFormatToken('X', 0, 0, 'unix');
+    addFormatToken('x', 0, 0, 'valueOf');
+
+    // PARSING
+
+    addRegexToken('x', matchSigned);
+    addRegexToken('X', matchTimestamp);
+    addParseToken('X', function (input, array, config) {
+        config._d = new Date(parseFloat(input) * 1000);
+    });
+    addParseToken('x', function (input, array, config) {
+        config._d = new Date(toInt(input));
+    });
+
+    //! moment.js
+
+    hooks.version = '2.28.0';
+
+    setHookCallback(createLocal);
+
+    hooks.fn = proto;
+    hooks.min = min;
+    hooks.max = max;
+    hooks.now = now;
+    hooks.utc = createUTC;
+    hooks.unix = createUnix;
+    hooks.months = listMonths;
+    hooks.isDate = isDate;
+    hooks.locale = getSetGlobalLocale;
+    hooks.invalid = createInvalid;
+    hooks.duration = createDuration;
+    hooks.isMoment = isMoment;
+    hooks.weekdays = listWeekdays;
+    hooks.parseZone = createInZone;
+    hooks.localeData = getLocale;
+    hooks.isDuration = isDuration;
+    hooks.monthsShort = listMonthsShort;
+    hooks.weekdaysMin = listWeekdaysMin;
+    hooks.defineLocale = defineLocale;
+    hooks.updateLocale = updateLocale;
+    hooks.locales = listLocales;
+    hooks.weekdaysShort = listWeekdaysShort;
+    hooks.normalizeUnits = normalizeUnits;
+    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
+    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
+    hooks.calendarFormat = getCalendarFormat;
+    hooks.prototype = proto;
+
+    // currently HTML5 input type only supports 24-hour formats
+    hooks.HTML5_FMT = {
+        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
+        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
+        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
+        DATE: 'YYYY-MM-DD', // <input type="date" />
+        TIME: 'HH:mm', // <input type="time" />
+        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
+        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
+        WEEK: 'GGGG-[W]WW', // <input type="week" />
+        MONTH: 'YYYY-MM', // <input type="month" />
+    };
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('af', {
+        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
+        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
+            '_'
+        ),
+        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
+        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
+        meridiemParse: /vm|nm/i,
+        isPM: function (input) {
+            return /^nm$/i.test(input);
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 12) {
+                return isLower ? 'vm' : 'VM';
+            } else {
+                return isLower ? 'nm' : 'NM';
+            }
+        },
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Vandag om] LT',
+            nextDay: '[Môre om] LT',
+            nextWeek: 'dddd [om] LT',
+            lastDay: '[Gister om] LT',
+            lastWeek: '[Laas] dddd [om] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'oor %s',
+            past: '%s gelede',
+            s: "'n paar sekondes",
+            ss: '%d sekondes',
+            m: "'n minuut",
+            mm: '%d minute',
+            h: "'n uur",
+            hh: '%d ure',
+            d: "'n dag",
+            dd: '%d dae',
+            M: "'n maand",
+            MM: '%d maande',
+            y: "'n jaar",
+            yy: '%d jaar',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
+        ordinal: function (number) {
+            return (
+                number +
+                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
+            ); // Thanks to Joris Röling : https://github.com/jjupiter
+        },
+        week: {
+            dow: 1, // Maandag is die eerste dag van die week.
+            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var pluralForm = function (n) {
+            return n === 0
+                ? 0
+                : n === 1
+                ? 1
+                : n === 2
+                ? 2
+                : n % 100 >= 3 && n % 100 <= 10
+                ? 3
+                : n % 100 >= 11
+                ? 4
+                : 5;
+        },
+        plurals = {
+            s: [
+                'أقل من ثانية',
+                'ثانية واحدة',
+                ['ثانيتان', 'ثانيتين'],
+                '%d ثوان',
+                '%d ثانية',
+                '%d ثانية',
+            ],
+            m: [
+                'أقل من دقيقة',
+                'دقيقة واحدة',
+                ['دقيقتان', 'دقيقتين'],
+                '%d دقائق',
+                '%d دقيقة',
+                '%d دقيقة',
+            ],
+            h: [
+                'أقل من ساعة',
+                'ساعة واحدة',
+                ['ساعتان', 'ساعتين'],
+                '%d ساعات',
+                '%d ساعة',
+                '%d ساعة',
+            ],
+            d: [
+                'أقل من يوم',
+                'يوم واحد',
+                ['يومان', 'يومين'],
+                '%d أيام',
+                '%d يومًا',
+                '%d يوم',
+            ],
+            M: [
+                'أقل من شهر',
+                'شهر واحد',
+                ['شهران', 'شهرين'],
+                '%d أشهر',
+                '%d شهرا',
+                '%d شهر',
+            ],
+            y: [
+                'أقل من عام',
+                'عام واحد',
+                ['عامان', 'عامين'],
+                '%d أعوام',
+                '%d عامًا',
+                '%d عام',
+            ],
+        },
+        pluralize = function (u) {
+            return function (number, withoutSuffix, string, isFuture) {
+                var f = pluralForm(number),
+                    str = plurals[u][pluralForm(number)];
+                if (f === 2) {
+                    str = str[withoutSuffix ? 0 : 1];
+                }
+                return str.replace(/%d/i, number);
+            };
+        },
+        months$1 = [
+            'جانفي',
+            'فيفري',
+            'مارس',
+            'أفريل',
+            'ماي',
+            'جوان',
+            'جويلية',
+            'أوت',
+            'سبتمبر',
+            'أكتوبر',
+            'نوفمبر',
+            'ديسمبر',
+        ];
+
+    hooks.defineLocale('ar-dz', {
+        months: months$1,
+        monthsShort: months$1,
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'D/\u200FM/\u200FYYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ص|م/,
+        isPM: function (input) {
+            return 'م' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ص';
+            } else {
+                return 'م';
+            }
+        },
+        calendar: {
+            sameDay: '[اليوم عند الساعة] LT',
+            nextDay: '[غدًا عند الساعة] LT',
+            nextWeek: 'dddd [عند الساعة] LT',
+            lastDay: '[أمس عند الساعة] LT',
+            lastWeek: 'dddd [عند الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'بعد %s',
+            past: 'منذ %s',
+            s: pluralize('s'),
+            ss: pluralize('s'),
+            m: pluralize('m'),
+            mm: pluralize('m'),
+            h: pluralize('h'),
+            hh: pluralize('h'),
+            d: pluralize('d'),
+            dd: pluralize('d'),
+            M: pluralize('M'),
+            MM: pluralize('M'),
+            y: pluralize('y'),
+            yy: pluralize('y'),
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ar-kw', {
+        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
+            '_'
+        ),
+        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
+            '_'
+        ),
+        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[اليوم على الساعة] LT',
+            nextDay: '[غدا على الساعة] LT',
+            nextWeek: 'dddd [على الساعة] LT',
+            lastDay: '[أمس على الساعة] LT',
+            lastWeek: 'dddd [على الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'في %s',
+            past: 'منذ %s',
+            s: 'ثوان',
+            ss: '%d ثانية',
+            m: 'دقيقة',
+            mm: '%d دقائق',
+            h: 'ساعة',
+            hh: '%d ساعات',
+            d: 'يوم',
+            dd: '%d أيام',
+            M: 'شهر',
+            MM: '%d أشهر',
+            y: 'سنة',
+            yy: '%d سنوات',
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap = {
+            '1': '1',
+            '2': '2',
+            '3': '3',
+            '4': '4',
+            '5': '5',
+            '6': '6',
+            '7': '7',
+            '8': '8',
+            '9': '9',
+            '0': '0',
+        },
+        pluralForm$1 = function (n) {
+            return n === 0
+                ? 0
+                : n === 1
+                ? 1
+                : n === 2
+                ? 2
+                : n % 100 >= 3 && n % 100 <= 10
+                ? 3
+                : n % 100 >= 11
+                ? 4
+                : 5;
+        },
+        plurals$1 = {
+            s: [
+                'أقل من ثانية',
+                'ثانية واحدة',
+                ['ثانيتان', 'ثانيتين'],
+                '%d ثوان',
+                '%d ثانية',
+                '%d ثانية',
+            ],
+            m: [
+                'أقل من دقيقة',
+                'دقيقة واحدة',
+                ['دقيقتان', 'دقيقتين'],
+                '%d دقائق',
+                '%d دقيقة',
+                '%d دقيقة',
+            ],
+            h: [
+                'أقل من ساعة',
+                'ساعة واحدة',
+                ['ساعتان', 'ساعتين'],
+                '%d ساعات',
+                '%d ساعة',
+                '%d ساعة',
+            ],
+            d: [
+                'أقل من يوم',
+                'يوم واحد',
+                ['يومان', 'يومين'],
+                '%d أيام',
+                '%d يومًا',
+                '%d يوم',
+            ],
+            M: [
+                'أقل من شهر',
+                'شهر واحد',
+                ['شهران', 'شهرين'],
+                '%d أشهر',
+                '%d شهرا',
+                '%d شهر',
+            ],
+            y: [
+                'أقل من عام',
+                'عام واحد',
+                ['عامان', 'عامين'],
+                '%d أعوام',
+                '%d عامًا',
+                '%d عام',
+            ],
+        },
+        pluralize$1 = function (u) {
+            return function (number, withoutSuffix, string, isFuture) {
+                var f = pluralForm$1(number),
+                    str = plurals$1[u][pluralForm$1(number)];
+                if (f === 2) {
+                    str = str[withoutSuffix ? 0 : 1];
+                }
+                return str.replace(/%d/i, number);
+            };
+        },
+        months$2 = [
+            'يناير',
+            'فبراير',
+            'مارس',
+            'أبريل',
+            'مايو',
+            'يونيو',
+            'يوليو',
+            'أغسطس',
+            'سبتمبر',
+            'أكتوبر',
+            'نوفمبر',
+            'ديسمبر',
+        ];
+
+    hooks.defineLocale('ar-ly', {
+        months: months$2,
+        monthsShort: months$2,
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'D/\u200FM/\u200FYYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ص|م/,
+        isPM: function (input) {
+            return 'م' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ص';
+            } else {
+                return 'م';
+            }
+        },
+        calendar: {
+            sameDay: '[اليوم عند الساعة] LT',
+            nextDay: '[غدًا عند الساعة] LT',
+            nextWeek: 'dddd [عند الساعة] LT',
+            lastDay: '[أمس عند الساعة] LT',
+            lastWeek: 'dddd [عند الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'بعد %s',
+            past: 'منذ %s',
+            s: pluralize$1('s'),
+            ss: pluralize$1('s'),
+            m: pluralize$1('m'),
+            mm: pluralize$1('m'),
+            h: pluralize$1('h'),
+            hh: pluralize$1('h'),
+            d: pluralize$1('d'),
+            dd: pluralize$1('d'),
+            M: pluralize$1('M'),
+            MM: pluralize$1('M'),
+            y: pluralize$1('y'),
+            yy: pluralize$1('y'),
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap[match];
+                })
+                .replace(/,/g, '،');
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ar-ma', {
+        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
+            '_'
+        ),
+        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
+            '_'
+        ),
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[اليوم على الساعة] LT',
+            nextDay: '[غدا على الساعة] LT',
+            nextWeek: 'dddd [على الساعة] LT',
+            lastDay: '[أمس على الساعة] LT',
+            lastWeek: 'dddd [على الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'في %s',
+            past: 'منذ %s',
+            s: 'ثوان',
+            ss: '%d ثانية',
+            m: 'دقيقة',
+            mm: '%d دقائق',
+            h: 'ساعة',
+            hh: '%d ساعات',
+            d: 'يوم',
+            dd: '%d أيام',
+            M: 'شهر',
+            MM: '%d أشهر',
+            y: 'سنة',
+            yy: '%d سنوات',
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$1 = {
+            '1': '١',
+            '2': '٢',
+            '3': '٣',
+            '4': '٤',
+            '5': '٥',
+            '6': '٦',
+            '7': '٧',
+            '8': '٨',
+            '9': '٩',
+            '0': '٠',
+        },
+        numberMap = {
+            '١': '1',
+            '٢': '2',
+            '٣': '3',
+            '٤': '4',
+            '٥': '5',
+            '٦': '6',
+            '٧': '7',
+            '٨': '8',
+            '٩': '9',
+            '٠': '0',
+        };
+
+    hooks.defineLocale('ar-sa', {
+        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
+            '_'
+        ),
+        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
+            '_'
+        ),
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ص|م/,
+        isPM: function (input) {
+            return 'م' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ص';
+            } else {
+                return 'م';
+            }
+        },
+        calendar: {
+            sameDay: '[اليوم على الساعة] LT',
+            nextDay: '[غدا على الساعة] LT',
+            nextWeek: 'dddd [على الساعة] LT',
+            lastDay: '[أمس على الساعة] LT',
+            lastWeek: 'dddd [على الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'في %s',
+            past: 'منذ %s',
+            s: 'ثوان',
+            ss: '%d ثانية',
+            m: 'دقيقة',
+            mm: '%d دقائق',
+            h: 'ساعة',
+            hh: '%d ساعات',
+            d: 'يوم',
+            dd: '%d أيام',
+            M: 'شهر',
+            MM: '%d أشهر',
+            y: 'سنة',
+            yy: '%d سنوات',
+        },
+        preparse: function (string) {
+            return string
+                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+                    return numberMap[match];
+                })
+                .replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap$1[match];
+                })
+                .replace(/,/g, '،');
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ar-tn', {
+        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
+            '_'
+        ),
+        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
+            '_'
+        ),
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[اليوم على الساعة] LT',
+            nextDay: '[غدا على الساعة] LT',
+            nextWeek: 'dddd [على الساعة] LT',
+            lastDay: '[أمس على الساعة] LT',
+            lastWeek: 'dddd [على الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'في %s',
+            past: 'منذ %s',
+            s: 'ثوان',
+            ss: '%d ثانية',
+            m: 'دقيقة',
+            mm: '%d دقائق',
+            h: 'ساعة',
+            hh: '%d ساعات',
+            d: 'يوم',
+            dd: '%d أيام',
+            M: 'شهر',
+            MM: '%d أشهر',
+            y: 'سنة',
+            yy: '%d سنوات',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$2 = {
+            '1': '١',
+            '2': '٢',
+            '3': '٣',
+            '4': '٤',
+            '5': '٥',
+            '6': '٦',
+            '7': '٧',
+            '8': '٨',
+            '9': '٩',
+            '0': '٠',
+        },
+        numberMap$1 = {
+            '١': '1',
+            '٢': '2',
+            '٣': '3',
+            '٤': '4',
+            '٥': '5',
+            '٦': '6',
+            '٧': '7',
+            '٨': '8',
+            '٩': '9',
+            '٠': '0',
+        },
+        pluralForm$2 = function (n) {
+            return n === 0
+                ? 0
+                : n === 1
+                ? 1
+                : n === 2
+                ? 2
+                : n % 100 >= 3 && n % 100 <= 10
+                ? 3
+                : n % 100 >= 11
+                ? 4
+                : 5;
+        },
+        plurals$2 = {
+            s: [
+                'أقل من ثانية',
+                'ثانية واحدة',
+                ['ثانيتان', 'ثانيتين'],
+                '%d ثوان',
+                '%d ثانية',
+                '%d ثانية',
+            ],
+            m: [
+                'أقل من دقيقة',
+                'دقيقة واحدة',
+                ['دقيقتان', 'دقيقتين'],
+                '%d دقائق',
+                '%d دقيقة',
+                '%d دقيقة',
+            ],
+            h: [
+                'أقل من ساعة',
+                'ساعة واحدة',
+                ['ساعتان', 'ساعتين'],
+                '%d ساعات',
+                '%d ساعة',
+                '%d ساعة',
+            ],
+            d: [
+                'أقل من يوم',
+                'يوم واحد',
+                ['يومان', 'يومين'],
+                '%d أيام',
+                '%d يومًا',
+                '%d يوم',
+            ],
+            M: [
+                'أقل من شهر',
+                'شهر واحد',
+                ['شهران', 'شهرين'],
+                '%d أشهر',
+                '%d شهرا',
+                '%d شهر',
+            ],
+            y: [
+                'أقل من عام',
+                'عام واحد',
+                ['عامان', 'عامين'],
+                '%d أعوام',
+                '%d عامًا',
+                '%d عام',
+            ],
+        },
+        pluralize$2 = function (u) {
+            return function (number, withoutSuffix, string, isFuture) {
+                var f = pluralForm$2(number),
+                    str = plurals$2[u][pluralForm$2(number)];
+                if (f === 2) {
+                    str = str[withoutSuffix ? 0 : 1];
+                }
+                return str.replace(/%d/i, number);
+            };
+        },
+        months$3 = [
+            'يناير',
+            'فبراير',
+            'مارس',
+            'أبريل',
+            'مايو',
+            'يونيو',
+            'يوليو',
+            'أغسطس',
+            'سبتمبر',
+            'أكتوبر',
+            'نوفمبر',
+            'ديسمبر',
+        ];
+
+    hooks.defineLocale('ar', {
+        months: months$3,
+        monthsShort: months$3,
+        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'D/\u200FM/\u200FYYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ص|م/,
+        isPM: function (input) {
+            return 'م' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ص';
+            } else {
+                return 'م';
+            }
+        },
+        calendar: {
+            sameDay: '[اليوم عند الساعة] LT',
+            nextDay: '[غدًا عند الساعة] LT',
+            nextWeek: 'dddd [عند الساعة] LT',
+            lastDay: '[أمس عند الساعة] LT',
+            lastWeek: 'dddd [عند الساعة] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'بعد %s',
+            past: 'منذ %s',
+            s: pluralize$2('s'),
+            ss: pluralize$2('s'),
+            m: pluralize$2('m'),
+            mm: pluralize$2('m'),
+            h: pluralize$2('h'),
+            hh: pluralize$2('h'),
+            d: pluralize$2('d'),
+            dd: pluralize$2('d'),
+            M: pluralize$2('M'),
+            MM: pluralize$2('M'),
+            y: pluralize$2('y'),
+            yy: pluralize$2('y'),
+        },
+        preparse: function (string) {
+            return string
+                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+                    return numberMap$1[match];
+                })
+                .replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap$2[match];
+                })
+                .replace(/,/g, '،');
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes = {
+        1: '-inci',
+        5: '-inci',
+        8: '-inci',
+        70: '-inci',
+        80: '-inci',
+        2: '-nci',
+        7: '-nci',
+        20: '-nci',
+        50: '-nci',
+        3: '-üncü',
+        4: '-üncü',
+        100: '-üncü',
+        6: '-ncı',
+        9: '-uncu',
+        10: '-uncu',
+        30: '-uncu',
+        60: '-ıncı',
+        90: '-ıncı',
+    };
+
+    hooks.defineLocale('az', {
+        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
+            '_'
+        ),
+        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
+        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
+            '_'
+        ),
+        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
+        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[bugün saat] LT',
+            nextDay: '[sabah saat] LT',
+            nextWeek: '[gələn həftə] dddd [saat] LT',
+            lastDay: '[dünən] LT',
+            lastWeek: '[keçən həftə] dddd [saat] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s sonra',
+            past: '%s əvvəl',
+            s: 'bir neçə saniyə',
+            ss: '%d saniyə',
+            m: 'bir dəqiqə',
+            mm: '%d dəqiqə',
+            h: 'bir saat',
+            hh: '%d saat',
+            d: 'bir gün',
+            dd: '%d gün',
+            M: 'bir ay',
+            MM: '%d ay',
+            y: 'bir il',
+            yy: '%d il',
+        },
+        meridiemParse: /gecə|səhər|gündüz|axşam/,
+        isPM: function (input) {
+            return /^(gündüz|axşam)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'gecə';
+            } else if (hour < 12) {
+                return 'səhər';
+            } else if (hour < 17) {
+                return 'gündüz';
+            } else {
+                return 'axşam';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
+        ordinal: function (number) {
+            if (number === 0) {
+                // special case for zero
+                return number + '-ıncı';
+            }
+            var a = number % 10,
+                b = (number % 100) - a,
+                c = number >= 100 ? 100 : null;
+            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function plural(word, num) {
+        var forms = word.split('_');
+        return num % 10 === 1 && num % 100 !== 11
+            ? forms[0]
+            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
+            ? forms[1]
+            : forms[2];
+    }
+    function relativeTimeWithPlural(number, withoutSuffix, key) {
+        var format = {
+            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
+            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
+            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
+            dd: 'дзень_дні_дзён',
+            MM: 'месяц_месяцы_месяцаў',
+            yy: 'год_гады_гадоў',
+        };
+        if (key === 'm') {
+            return withoutSuffix ? 'хвіліна' : 'хвіліну';
+        } else if (key === 'h') {
+            return withoutSuffix ? 'гадзіна' : 'гадзіну';
+        } else {
+            return number + ' ' + plural(format[key], +number);
+        }
+    }
+
+    hooks.defineLocale('be', {
+        months: {
+            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
+                '_'
+            ),
+            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
+                '_'
+            ),
+        },
+        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(
+            '_'
+        ),
+        weekdays: {
+            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
+                '_'
+            ),
+            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
+                '_'
+            ),
+            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
+        },
+        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
+        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY г.',
+            LLL: 'D MMMM YYYY г., HH:mm',
+            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
+        },
+        calendar: {
+            sameDay: '[Сёння ў] LT',
+            nextDay: '[Заўтра ў] LT',
+            lastDay: '[Учора ў] LT',
+            nextWeek: function () {
+                return '[У] dddd [ў] LT';
+            },
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                    case 5:
+                    case 6:
+                        return '[У мінулую] dddd [ў] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                        return '[У мінулы] dddd [ў] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'праз %s',
+            past: '%s таму',
+            s: 'некалькі секунд',
+            m: relativeTimeWithPlural,
+            mm: relativeTimeWithPlural,
+            h: relativeTimeWithPlural,
+            hh: relativeTimeWithPlural,
+            d: 'дзень',
+            dd: relativeTimeWithPlural,
+            M: 'месяц',
+            MM: relativeTimeWithPlural,
+            y: 'год',
+            yy: relativeTimeWithPlural,
+        },
+        meridiemParse: /ночы|раніцы|дня|вечара/,
+        isPM: function (input) {
+            return /^(дня|вечара)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ночы';
+            } else if (hour < 12) {
+                return 'раніцы';
+            } else if (hour < 17) {
+                return 'дня';
+            } else {
+                return 'вечара';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'M':
+                case 'd':
+                case 'DDD':
+                case 'w':
+                case 'W':
+                    return (number % 10 === 2 || number % 10 === 3) &&
+                        number % 100 !== 12 &&
+                        number % 100 !== 13
+                        ? number + '-і'
+                        : number + '-ы';
+                case 'D':
+                    return number + '-га';
+                default:
+                    return number;
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('bg', {
+        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
+            '_'
+        ),
+        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
+        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
+            '_'
+        ),
+        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
+        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'D.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY H:mm',
+            LLLL: 'dddd, D MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[Днес в] LT',
+            nextDay: '[Утре в] LT',
+            nextWeek: 'dddd [в] LT',
+            lastDay: '[Вчера в] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                    case 6:
+                        return '[Миналата] dddd [в] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[Миналия] dddd [в] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'след %s',
+            past: 'преди %s',
+            s: 'няколко секунди',
+            ss: '%d секунди',
+            m: 'минута',
+            mm: '%d минути',
+            h: 'час',
+            hh: '%d часа',
+            d: 'ден',
+            dd: '%d дена',
+            M: 'месец',
+            MM: '%d месеца',
+            y: 'година',
+            yy: '%d години',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
+        ordinal: function (number) {
+            var lastDigit = number % 10,
+                last2Digits = number % 100;
+            if (number === 0) {
+                return number + '-ев';
+            } else if (last2Digits === 0) {
+                return number + '-ен';
+            } else if (last2Digits > 10 && last2Digits < 20) {
+                return number + '-ти';
+            } else if (lastDigit === 1) {
+                return number + '-ви';
+            } else if (lastDigit === 2) {
+                return number + '-ри';
+            } else if (lastDigit === 7 || lastDigit === 8) {
+                return number + '-ми';
+            } else {
+                return number + '-ти';
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('bm', {
+        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
+            '_'
+        ),
+        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
+        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
+        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
+        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'MMMM [tile] D [san] YYYY',
+            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
+            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
+        },
+        calendar: {
+            sameDay: '[Bi lɛrɛ] LT',
+            nextDay: '[Sini lɛrɛ] LT',
+            nextWeek: 'dddd [don lɛrɛ] LT',
+            lastDay: '[Kunu lɛrɛ] LT',
+            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s kɔnɔ',
+            past: 'a bɛ %s bɔ',
+            s: 'sanga dama dama',
+            ss: 'sekondi %d',
+            m: 'miniti kelen',
+            mm: 'miniti %d',
+            h: 'lɛrɛ kelen',
+            hh: 'lɛrɛ %d',
+            d: 'tile kelen',
+            dd: 'tile %d',
+            M: 'kalo kelen',
+            MM: 'kalo %d',
+            y: 'san kelen',
+            yy: 'san %d',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$3 = {
+            '1': '১',
+            '2': '২',
+            '3': '৩',
+            '4': '৪',
+            '5': '৫',
+            '6': '৬',
+            '7': '৭',
+            '8': '৮',
+            '9': '৯',
+            '0': '০',
+        },
+        numberMap$2 = {
+            '১': '1',
+            '২': '2',
+            '৩': '3',
+            '৪': '4',
+            '৫': '5',
+            '৬': '6',
+            '৭': '7',
+            '৮': '8',
+            '৯': '9',
+            '০': '0',
+        };
+
+    hooks.defineLocale('bn', {
+        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
+            '_'
+        ),
+        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
+            '_'
+        ),
+        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
+            '_'
+        ),
+        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
+        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm সময়',
+            LTS: 'A h:mm:ss সময়',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm সময়',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
+        },
+        calendar: {
+            sameDay: '[আজ] LT',
+            nextDay: '[আগামীকাল] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[গতকাল] LT',
+            lastWeek: '[গত] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s পরে',
+            past: '%s আগে',
+            s: 'কয়েক সেকেন্ড',
+            ss: '%d সেকেন্ড',
+            m: 'এক মিনিট',
+            mm: '%d মিনিট',
+            h: 'এক ঘন্টা',
+            hh: '%d ঘন্টা',
+            d: 'এক দিন',
+            dd: '%d দিন',
+            M: 'এক মাস',
+            MM: '%d মাস',
+            y: 'এক বছর',
+            yy: '%d বছর',
+        },
+        preparse: function (string) {
+            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
+                return numberMap$2[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$3[match];
+            });
+        },
+        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (
+                (meridiem === 'রাত' && hour >= 4) ||
+                (meridiem === 'দুপুর' && hour < 5) ||
+                meridiem === 'বিকাল'
+            ) {
+                return hour + 12;
+            } else {
+                return hour;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'রাত';
+            } else if (hour < 10) {
+                return 'সকাল';
+            } else if (hour < 17) {
+                return 'দুপুর';
+            } else if (hour < 20) {
+                return 'বিকাল';
+            } else {
+                return 'রাত';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$4 = {
+            '1': '༡',
+            '2': '༢',
+            '3': '༣',
+            '4': '༤',
+            '5': '༥',
+            '6': '༦',
+            '7': '༧',
+            '8': '༨',
+            '9': '༩',
+            '0': '༠',
+        },
+        numberMap$3 = {
+            '༡': '1',
+            '༢': '2',
+            '༣': '3',
+            '༤': '4',
+            '༥': '5',
+            '༦': '6',
+            '༧': '7',
+            '༨': '8',
+            '༩': '9',
+            '༠': '0',
+        };
+
+    hooks.defineLocale('bo', {
+        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
+            '_'
+        ),
+        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
+            '_'
+        ),
+        monthsShortRegex: /^(ཟླ་\d{1,2})/,
+        monthsParseExact: true,
+        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
+            '_'
+        ),
+        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
+            '_'
+        ),
+        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm',
+            LTS: 'A h:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm',
+        },
+        calendar: {
+            sameDay: '[དི་རིང] LT',
+            nextDay: '[སང་ཉིན] LT',
+            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
+            lastDay: '[ཁ་སང] LT',
+            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ལ་',
+            past: '%s སྔན་ལ',
+            s: 'ལམ་སང',
+            ss: '%d སྐར་ཆ།',
+            m: 'སྐར་མ་གཅིག',
+            mm: '%d སྐར་མ',
+            h: 'ཆུ་ཚོད་གཅིག',
+            hh: '%d ཆུ་ཚོད',
+            d: 'ཉིན་གཅིག',
+            dd: '%d ཉིན་',
+            M: 'ཟླ་བ་གཅིག',
+            MM: '%d ཟླ་བ',
+            y: 'ལོ་གཅིག',
+            yy: '%d ལོ',
+        },
+        preparse: function (string) {
+            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
+                return numberMap$3[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$4[match];
+            });
+        },
+        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (
+                (meridiem === 'མཚན་མོ' && hour >= 4) ||
+                (meridiem === 'ཉིན་གུང' && hour < 5) ||
+                meridiem === 'དགོང་དག'
+            ) {
+                return hour + 12;
+            } else {
+                return hour;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'མཚན་མོ';
+            } else if (hour < 10) {
+                return 'ཞོགས་ཀས';
+            } else if (hour < 17) {
+                return 'ཉིན་གུང';
+            } else if (hour < 20) {
+                return 'དགོང་དག';
+            } else {
+                return 'མཚན་མོ';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function relativeTimeWithMutation(number, withoutSuffix, key) {
+        var format = {
+            mm: 'munutenn',
+            MM: 'miz',
+            dd: 'devezh',
+        };
+        return number + ' ' + mutation(format[key], number);
+    }
+    function specialMutationForYears(number) {
+        switch (lastNumber(number)) {
+            case 1:
+            case 3:
+            case 4:
+            case 5:
+            case 9:
+                return number + ' bloaz';
+            default:
+                return number + ' vloaz';
+        }
+    }
+    function lastNumber(number) {
+        if (number > 9) {
+            return lastNumber(number % 10);
+        }
+        return number;
+    }
+    function mutation(text, number) {
+        if (number === 2) {
+            return softMutation(text);
+        }
+        return text;
+    }
+    function softMutation(text) {
+        var mutationTable = {
+            m: 'v',
+            b: 'v',
+            d: 'z',
+        };
+        if (mutationTable[text.charAt(0)] === undefined) {
+            return text;
+        }
+        return mutationTable[text.charAt(0)] + text.substring(1);
+    }
+
+    var monthsParse = [
+            /^gen/i,
+            /^c[ʼ\']hwe/i,
+            /^meu/i,
+            /^ebr/i,
+            /^mae/i,
+            /^(mez|eve)/i,
+            /^gou/i,
+            /^eos/i,
+            /^gwe/i,
+            /^her/i,
+            /^du/i,
+            /^ker/i,
+        ],
+        monthsRegex$1 = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
+        monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
+        monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
+        fullWeekdaysParse = [
+            /^sul/i,
+            /^lun/i,
+            /^meurzh/i,
+            /^merc[ʼ\']her/i,
+            /^yaou/i,
+            /^gwener/i,
+            /^sadorn/i,
+        ],
+        shortWeekdaysParse = [
+            /^Sul/i,
+            /^Lun/i,
+            /^Meu/i,
+            /^Mer/i,
+            /^Yao/i,
+            /^Gwe/i,
+            /^Sad/i,
+        ],
+        minWeekdaysParse = [
+            /^Su/i,
+            /^Lu/i,
+            /^Me([^r]|$)/i,
+            /^Mer/i,
+            /^Ya/i,
+            /^Gw/i,
+            /^Sa/i,
+        ];
+
+    hooks.defineLocale('br', {
+        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
+            '_'
+        ),
+        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
+        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
+        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
+        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
+        weekdaysParse: minWeekdaysParse,
+        fullWeekdaysParse: fullWeekdaysParse,
+        shortWeekdaysParse: shortWeekdaysParse,
+        minWeekdaysParse: minWeekdaysParse,
+
+        monthsRegex: monthsRegex$1,
+        monthsShortRegex: monthsRegex$1,
+        monthsStrictRegex: monthsStrictRegex,
+        monthsShortStrictRegex: monthsShortStrictRegex,
+        monthsParse: monthsParse,
+        longMonthsParse: monthsParse,
+        shortMonthsParse: monthsParse,
+
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [a viz] MMMM YYYY',
+            LLL: 'D [a viz] MMMM YYYY HH:mm',
+            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Hiziv da] LT',
+            nextDay: '[Warcʼhoazh da] LT',
+            nextWeek: 'dddd [da] LT',
+            lastDay: '[Decʼh da] LT',
+            lastWeek: 'dddd [paset da] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'a-benn %s',
+            past: '%s ʼzo',
+            s: 'un nebeud segondennoù',
+            ss: '%d eilenn',
+            m: 'ur vunutenn',
+            mm: relativeTimeWithMutation,
+            h: 'un eur',
+            hh: '%d eur',
+            d: 'un devezh',
+            dd: relativeTimeWithMutation,
+            M: 'ur miz',
+            MM: relativeTimeWithMutation,
+            y: 'ur bloaz',
+            yy: specialMutationForYears,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
+        ordinal: function (number) {
+            var output = number === 1 ? 'añ' : 'vet';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
+        isPM: function (token) {
+            return token === 'g.m.';
+        },
+        meridiem: function (hour, minute, isLower) {
+            return hour < 12 ? 'a.m.' : 'g.m.';
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function translate(number, withoutSuffix, key) {
+        var result = number + ' ';
+        switch (key) {
+            case 'ss':
+                if (number === 1) {
+                    result += 'sekunda';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'sekunde';
+                } else {
+                    result += 'sekundi';
+                }
+                return result;
+            case 'm':
+                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
+            case 'mm':
+                if (number === 1) {
+                    result += 'minuta';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'minute';
+                } else {
+                    result += 'minuta';
+                }
+                return result;
+            case 'h':
+                return withoutSuffix ? 'jedan sat' : 'jednog sata';
+            case 'hh':
+                if (number === 1) {
+                    result += 'sat';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'sata';
+                } else {
+                    result += 'sati';
+                }
+                return result;
+            case 'dd':
+                if (number === 1) {
+                    result += 'dan';
+                } else {
+                    result += 'dana';
+                }
+                return result;
+            case 'MM':
+                if (number === 1) {
+                    result += 'mjesec';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'mjeseca';
+                } else {
+                    result += 'mjeseci';
+                }
+                return result;
+            case 'yy':
+                if (number === 1) {
+                    result += 'godina';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'godine';
+                } else {
+                    result += 'godina';
+                }
+                return result;
+        }
+    }
+
+    hooks.defineLocale('bs', {
+        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danas u] LT',
+            nextDay: '[sutra u] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[u] [nedjelju] [u] LT';
+                    case 3:
+                        return '[u] [srijedu] [u] LT';
+                    case 6:
+                        return '[u] [subotu] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[u] dddd [u] LT';
+                }
+            },
+            lastDay: '[jučer u] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                        return '[prošlu] dddd [u] LT';
+                    case 6:
+                        return '[prošle] [subote] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[prošli] dddd [u] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'prije %s',
+            s: 'par sekundi',
+            ss: translate,
+            m: translate,
+            mm: translate,
+            h: translate,
+            hh: translate,
+            d: 'dan',
+            dd: translate,
+            M: 'mjesec',
+            MM: translate,
+            y: 'godinu',
+            yy: translate,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ca', {
+        months: {
+            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
+                '_'
+            ),
+            format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
+                '_'
+            ),
+            isFormat: /D[oD]?(\s)+MMMM/,
+        },
+        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
+            '_'
+        ),
+        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
+        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM [de] YYYY',
+            ll: 'D MMM YYYY',
+            LLL: 'D MMMM [de] YYYY [a les] H:mm',
+            lll: 'D MMM YYYY, H:mm',
+            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
+            llll: 'ddd D MMM YYYY, H:mm',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
+            },
+            nextDay: function () {
+                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
+            },
+            lastDay: function () {
+                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[el] dddd [passat a ' +
+                    (this.hours() !== 1 ? 'les' : 'la') +
+                    '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: "d'aquí %s",
+            past: 'fa %s',
+            s: 'uns segons',
+            ss: '%d segons',
+            m: 'un minut',
+            mm: '%d minuts',
+            h: 'una hora',
+            hh: '%d hores',
+            d: 'un dia',
+            dd: '%d dies',
+            M: 'un mes',
+            MM: '%d mesos',
+            y: 'un any',
+            yy: '%d anys',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
+        ordinal: function (number, period) {
+            var output =
+                number === 1
+                    ? 'r'
+                    : number === 2
+                    ? 'n'
+                    : number === 3
+                    ? 'r'
+                    : number === 4
+                    ? 't'
+                    : 'è';
+            if (period === 'w' || period === 'W') {
+                output = 'a';
+            }
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$4 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
+            '_'
+        ),
+        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
+        monthsParse$1 = [
+            /^led/i,
+            /^úno/i,
+            /^bře/i,
+            /^dub/i,
+            /^kvě/i,
+            /^(čvn|červen$|června)/i,
+            /^(čvc|červenec|července)/i,
+            /^srp/i,
+            /^zář/i,
+            /^říj/i,
+            /^lis/i,
+            /^pro/i,
+        ],
+        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
+        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
+        monthsRegex$2 = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
+
+    function plural$1(n) {
+        return n > 1 && n < 5 && ~~(n / 10) !== 1;
+    }
+    function translate$1(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        switch (key) {
+            case 's': // a few seconds / in a few seconds / a few seconds ago
+                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
+            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'sekundy' : 'sekund');
+                } else {
+                    return result + 'sekundami';
+                }
+            case 'm': // a minute / in a minute / a minute ago
+                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
+            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'minuty' : 'minut');
+                } else {
+                    return result + 'minutami';
+                }
+            case 'h': // an hour / in an hour / an hour ago
+                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
+            case 'hh': // 9 hours / in 9 hours / 9 hours ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
+                } else {
+                    return result + 'hodinami';
+                }
+            case 'd': // a day / in a day / a day ago
+                return withoutSuffix || isFuture ? 'den' : 'dnem';
+            case 'dd': // 9 days / in 9 days / 9 days ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'dny' : 'dní');
+                } else {
+                    return result + 'dny';
+                }
+            case 'M': // a month / in a month / a month ago
+                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
+            case 'MM': // 9 months / in 9 months / 9 months ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
+                } else {
+                    return result + 'měsíci';
+                }
+            case 'y': // a year / in a year / a year ago
+                return withoutSuffix || isFuture ? 'rok' : 'rokem';
+            case 'yy': // 9 years / in 9 years / 9 years ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$1(number) ? 'roky' : 'let');
+                } else {
+                    return result + 'lety';
+                }
+        }
+    }
+
+    hooks.defineLocale('cs', {
+        months: months$4,
+        monthsShort: monthsShort,
+        monthsRegex: monthsRegex$2,
+        monthsShortRegex: monthsRegex$2,
+        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
+        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
+        monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
+        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
+        monthsParse: monthsParse$1,
+        longMonthsParse: monthsParse$1,
+        shortMonthsParse: monthsParse$1,
+        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
+        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
+        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd D. MMMM YYYY H:mm',
+            l: 'D. M. YYYY',
+        },
+        calendar: {
+            sameDay: '[dnes v] LT',
+            nextDay: '[zítra v] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[v neděli v] LT';
+                    case 1:
+                    case 2:
+                        return '[v] dddd [v] LT';
+                    case 3:
+                        return '[ve středu v] LT';
+                    case 4:
+                        return '[ve čtvrtek v] LT';
+                    case 5:
+                        return '[v pátek v] LT';
+                    case 6:
+                        return '[v sobotu v] LT';
+                }
+            },
+            lastDay: '[včera v] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[minulou neděli v] LT';
+                    case 1:
+                    case 2:
+                        return '[minulé] dddd [v] LT';
+                    case 3:
+                        return '[minulou středu v] LT';
+                    case 4:
+                    case 5:
+                        return '[minulý] dddd [v] LT';
+                    case 6:
+                        return '[minulou sobotu v] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'před %s',
+            s: translate$1,
+            ss: translate$1,
+            m: translate$1,
+            mm: translate$1,
+            h: translate$1,
+            hh: translate$1,
+            d: translate$1,
+            dd: translate$1,
+            M: translate$1,
+            MM: translate$1,
+            y: translate$1,
+            yy: translate$1,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('cv', {
+        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
+            '_'
+        ),
+        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
+        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
+            '_'
+        ),
+        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
+        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD-MM-YYYY',
+            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
+            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
+            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
+        },
+        calendar: {
+            sameDay: '[Паян] LT [сехетре]',
+            nextDay: '[Ыран] LT [сехетре]',
+            lastDay: '[Ӗнер] LT [сехетре]',
+            nextWeek: '[Ҫитес] dddd LT [сехетре]',
+            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: function (output) {
+                var affix = /сехет$/i.exec(output)
+                    ? 'рен'
+                    : /ҫул$/i.exec(output)
+                    ? 'тан'
+                    : 'ран';
+                return output + affix;
+            },
+            past: '%s каялла',
+            s: 'пӗр-ик ҫеккунт',
+            ss: '%d ҫеккунт',
+            m: 'пӗр минут',
+            mm: '%d минут',
+            h: 'пӗр сехет',
+            hh: '%d сехет',
+            d: 'пӗр кун',
+            dd: '%d кун',
+            M: 'пӗр уйӑх',
+            MM: '%d уйӑх',
+            y: 'пӗр ҫул',
+            yy: '%d ҫул',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
+        ordinal: '%d-мӗш',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('cy', {
+        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
+            '_'
+        ),
+        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
+            '_'
+        ),
+        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
+        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
+        weekdaysParseExact: true,
+        // time formats are the same as en-gb
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Heddiw am] LT',
+            nextDay: '[Yfory am] LT',
+            nextWeek: 'dddd [am] LT',
+            lastDay: '[Ddoe am] LT',
+            lastWeek: 'dddd [diwethaf am] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'mewn %s',
+            past: '%s yn ôl',
+            s: 'ychydig eiliadau',
+            ss: '%d eiliad',
+            m: 'munud',
+            mm: '%d munud',
+            h: 'awr',
+            hh: '%d awr',
+            d: 'diwrnod',
+            dd: '%d diwrnod',
+            M: 'mis',
+            MM: '%d mis',
+            y: 'blwyddyn',
+            yy: '%d flynedd',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
+        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
+        ordinal: function (number) {
+            var b = number,
+                output = '',
+                lookup = [
+                    '',
+                    'af',
+                    'il',
+                    'ydd',
+                    'ydd',
+                    'ed',
+                    'ed',
+                    'ed',
+                    'fed',
+                    'fed',
+                    'fed', // 1af to 10fed
+                    'eg',
+                    'fed',
+                    'eg',
+                    'eg',
+                    'fed',
+                    'eg',
+                    'eg',
+                    'fed',
+                    'eg',
+                    'fed', // 11eg to 20fed
+                ];
+            if (b > 20) {
+                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
+                    output = 'fed'; // not 30ain, 70ain or 90ain
+                } else {
+                    output = 'ain';
+                }
+            } else if (b > 0) {
+                output = lookup[b];
+            }
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('da', {
+        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
+        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
+        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY HH:mm',
+            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
+        },
+        calendar: {
+            sameDay: '[i dag kl.] LT',
+            nextDay: '[i morgen kl.] LT',
+            nextWeek: 'på dddd [kl.] LT',
+            lastDay: '[i går kl.] LT',
+            lastWeek: '[i] dddd[s kl.] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'om %s',
+            past: '%s siden',
+            s: 'få sekunder',
+            ss: '%d sekunder',
+            m: 'et minut',
+            mm: '%d minutter',
+            h: 'en time',
+            hh: '%d timer',
+            d: 'en dag',
+            dd: '%d dage',
+            M: 'en måned',
+            MM: '%d måneder',
+            y: 'et år',
+            yy: '%d år',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime(number, withoutSuffix, key, isFuture) {
+        var format = {
+            m: ['eine Minute', 'einer Minute'],
+            h: ['eine Stunde', 'einer Stunde'],
+            d: ['ein Tag', 'einem Tag'],
+            dd: [number + ' Tage', number + ' Tagen'],
+            w: ['eine Woche', 'einer Woche'],
+            M: ['ein Monat', 'einem Monat'],
+            MM: [number + ' Monate', number + ' Monaten'],
+            y: ['ein Jahr', 'einem Jahr'],
+            yy: [number + ' Jahre', number + ' Jahren'],
+        };
+        return withoutSuffix ? format[key][0] : format[key][1];
+    }
+
+    hooks.defineLocale('de-at', {
+        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
+            '_'
+        ),
+        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
+            '_'
+        ),
+        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
+        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY HH:mm',
+            LLLL: 'dddd, D. MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[heute um] LT [Uhr]',
+            sameElse: 'L',
+            nextDay: '[morgen um] LT [Uhr]',
+            nextWeek: 'dddd [um] LT [Uhr]',
+            lastDay: '[gestern um] LT [Uhr]',
+            lastWeek: '[letzten] dddd [um] LT [Uhr]',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: 'vor %s',
+            s: 'ein paar Sekunden',
+            ss: '%d Sekunden',
+            m: processRelativeTime,
+            mm: '%d Minuten',
+            h: processRelativeTime,
+            hh: '%d Stunden',
+            d: processRelativeTime,
+            dd: processRelativeTime,
+            w: processRelativeTime,
+            ww: '%d Wochen',
+            M: processRelativeTime,
+            MM: processRelativeTime,
+            y: processRelativeTime,
+            yy: processRelativeTime,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
+        var format = {
+            m: ['eine Minute', 'einer Minute'],
+            h: ['eine Stunde', 'einer Stunde'],
+            d: ['ein Tag', 'einem Tag'],
+            dd: [number + ' Tage', number + ' Tagen'],
+            w: ['eine Woche', 'einer Woche'],
+            M: ['ein Monat', 'einem Monat'],
+            MM: [number + ' Monate', number + ' Monaten'],
+            y: ['ein Jahr', 'einem Jahr'],
+            yy: [number + ' Jahre', number + ' Jahren'],
+        };
+        return withoutSuffix ? format[key][0] : format[key][1];
+    }
+
+    hooks.defineLocale('de-ch', {
+        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
+            '_'
+        ),
+        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY HH:mm',
+            LLLL: 'dddd, D. MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[heute um] LT [Uhr]',
+            sameElse: 'L',
+            nextDay: '[morgen um] LT [Uhr]',
+            nextWeek: 'dddd [um] LT [Uhr]',
+            lastDay: '[gestern um] LT [Uhr]',
+            lastWeek: '[letzten] dddd [um] LT [Uhr]',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: 'vor %s',
+            s: 'ein paar Sekunden',
+            ss: '%d Sekunden',
+            m: processRelativeTime$1,
+            mm: '%d Minuten',
+            h: processRelativeTime$1,
+            hh: '%d Stunden',
+            d: processRelativeTime$1,
+            dd: processRelativeTime$1,
+            w: processRelativeTime$1,
+            ww: '%d Wochen',
+            M: processRelativeTime$1,
+            MM: processRelativeTime$1,
+            y: processRelativeTime$1,
+            yy: processRelativeTime$1,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
+        var format = {
+            m: ['eine Minute', 'einer Minute'],
+            h: ['eine Stunde', 'einer Stunde'],
+            d: ['ein Tag', 'einem Tag'],
+            dd: [number + ' Tage', number + ' Tagen'],
+            w: ['eine Woche', 'einer Woche'],
+            M: ['ein Monat', 'einem Monat'],
+            MM: [number + ' Monate', number + ' Monaten'],
+            y: ['ein Jahr', 'einem Jahr'],
+            yy: [number + ' Jahre', number + ' Jahren'],
+        };
+        return withoutSuffix ? format[key][0] : format[key][1];
+    }
+
+    hooks.defineLocale('de', {
+        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
+            '_'
+        ),
+        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
+        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY HH:mm',
+            LLLL: 'dddd, D. MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[heute um] LT [Uhr]',
+            sameElse: 'L',
+            nextDay: '[morgen um] LT [Uhr]',
+            nextWeek: 'dddd [um] LT [Uhr]',
+            lastDay: '[gestern um] LT [Uhr]',
+            lastWeek: '[letzten] dddd [um] LT [Uhr]',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: 'vor %s',
+            s: 'ein paar Sekunden',
+            ss: '%d Sekunden',
+            m: processRelativeTime$2,
+            mm: '%d Minuten',
+            h: processRelativeTime$2,
+            hh: '%d Stunden',
+            d: processRelativeTime$2,
+            dd: processRelativeTime$2,
+            w: processRelativeTime$2,
+            ww: '%d Wochen',
+            M: processRelativeTime$2,
+            MM: processRelativeTime$2,
+            y: processRelativeTime$2,
+            yy: processRelativeTime$2,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$5 = [
+            'ޖެނުއަރީ',
+            'ފެބްރުއަރީ',
+            'މާރިޗު',
+            'އޭޕްރީލު',
+            'މޭ',
+            'ޖޫން',
+            'ޖުލައި',
+            'އޯގަސްޓު',
+            'ސެޕްޓެމްބަރު',
+            'އޮކްޓޯބަރު',
+            'ނޮވެމްބަރު',
+            'ޑިސެމްބަރު',
+        ],
+        weekdays = [
+            'އާދިއްތަ',
+            'ހޯމަ',
+            'އަންގާރަ',
+            'ބުދަ',
+            'ބުރާސްފަތި',
+            'ހުކުރު',
+            'ހޮނިހިރު',
+        ];
+
+    hooks.defineLocale('dv', {
+        months: months$5,
+        monthsShort: months$5,
+        weekdays: weekdays,
+        weekdaysShort: weekdays,
+        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'D/M/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /މކ|މފ/,
+        isPM: function (input) {
+            return 'މފ' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'މކ';
+            } else {
+                return 'މފ';
+            }
+        },
+        calendar: {
+            sameDay: '[މިއަދު] LT',
+            nextDay: '[މާދަމާ] LT',
+            nextWeek: 'dddd LT',
+            lastDay: '[އިއްޔެ] LT',
+            lastWeek: '[ފާއިތުވި] dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ތެރޭގައި %s',
+            past: 'ކުރިން %s',
+            s: 'ސިކުންތުކޮޅެއް',
+            ss: 'd% ސިކުންތު',
+            m: 'މިނިޓެއް',
+            mm: 'މިނިޓު %d',
+            h: 'ގަޑިއިރެއް',
+            hh: 'ގަޑިއިރު %d',
+            d: 'ދުވަހެއް',
+            dd: 'ދުވަސް %d',
+            M: 'މަހެއް',
+            MM: 'މަސް %d',
+            y: 'އަހަރެއް',
+            yy: 'އަހަރު %d',
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            dow: 7, // Sunday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function isFunction$1(input) {
+        return (
+            (typeof Function !== 'undefined' && input instanceof Function) ||
+            Object.prototype.toString.call(input) === '[object Function]'
+        );
+    }
+
+    hooks.defineLocale('el', {
+        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
+            '_'
+        ),
+        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
+            '_'
+        ),
+        months: function (momentToFormat, format) {
+            if (!momentToFormat) {
+                return this._monthsNominativeEl;
+            } else if (
+                typeof format === 'string' &&
+                /D/.test(format.substring(0, format.indexOf('MMMM')))
+            ) {
+                // if there is a day number before 'MMMM'
+                return this._monthsGenitiveEl[momentToFormat.month()];
+            } else {
+                return this._monthsNominativeEl[momentToFormat.month()];
+            }
+        },
+        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
+        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
+            '_'
+        ),
+        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
+        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
+        meridiem: function (hours, minutes, isLower) {
+            if (hours > 11) {
+                return isLower ? 'μμ' : 'ΜΜ';
+            } else {
+                return isLower ? 'πμ' : 'ΠΜ';
+            }
+        },
+        isPM: function (input) {
+            return (input + '').toLowerCase()[0] === 'μ';
+        },
+        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendarEl: {
+            sameDay: '[Σήμερα {}] LT',
+            nextDay: '[Αύριο {}] LT',
+            nextWeek: 'dddd [{}] LT',
+            lastDay: '[Χθες {}] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 6:
+                        return '[το προηγούμενο] dddd [{}] LT';
+                    default:
+                        return '[την προηγούμενη] dddd [{}] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        calendar: function (key, mom) {
+            var output = this._calendarEl[key],
+                hours = mom && mom.hours();
+            if (isFunction$1(output)) {
+                output = output.apply(mom);
+            }
+            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
+        },
+        relativeTime: {
+            future: 'σε %s',
+            past: '%s πριν',
+            s: 'λίγα δευτερόλεπτα',
+            ss: '%d δευτερόλεπτα',
+            m: 'ένα λεπτό',
+            mm: '%d λεπτά',
+            h: 'μία ώρα',
+            hh: '%d ώρες',
+            d: 'μία μέρα',
+            dd: '%d μέρες',
+            M: 'ένας μήνας',
+            MM: '%d μήνες',
+            y: 'ένας χρόνος',
+            yy: '%d χρόνια',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}η/,
+        ordinal: '%dη',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4st is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('en-au', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('en-ca', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'YYYY-MM-DD',
+            LL: 'MMMM D, YYYY',
+            LLL: 'MMMM D, YYYY h:mm A',
+            LLLL: 'dddd, MMMM D, YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('en-gb', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('en-ie', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('en-il', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('en-in', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 1st is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('en-nz', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('en-sg', {
+        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Today at] LT',
+            nextDay: '[Tomorrow at] LT',
+            nextWeek: 'dddd [at] LT',
+            lastDay: '[Yesterday at] LT',
+            lastWeek: '[Last] dddd [at] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'in %s',
+            past: '%s ago',
+            s: 'a few seconds',
+            ss: '%d seconds',
+            m: 'a minute',
+            mm: '%d minutes',
+            h: 'an hour',
+            hh: '%d hours',
+            d: 'a day',
+            dd: '%d days',
+            M: 'a month',
+            MM: '%d months',
+            y: 'a year',
+            yy: '%d years',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('eo', {
+        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
+        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
+        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
+        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: '[la] D[-an de] MMMM, YYYY',
+            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
+            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
+            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
+        },
+        meridiemParse: /[ap]\.t\.m/i,
+        isPM: function (input) {
+            return input.charAt(0).toLowerCase() === 'p';
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours > 11) {
+                return isLower ? 'p.t.m.' : 'P.T.M.';
+            } else {
+                return isLower ? 'a.t.m.' : 'A.T.M.';
+            }
+        },
+        calendar: {
+            sameDay: '[Hodiaŭ je] LT',
+            nextDay: '[Morgaŭ je] LT',
+            nextWeek: 'dddd[n je] LT',
+            lastDay: '[Hieraŭ je] LT',
+            lastWeek: '[pasintan] dddd[n je] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'post %s',
+            past: 'antaŭ %s',
+            s: 'kelkaj sekundoj',
+            ss: '%d sekundoj',
+            m: 'unu minuto',
+            mm: '%d minutoj',
+            h: 'unu horo',
+            hh: '%d horoj',
+            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
+            dd: '%d tagoj',
+            M: 'unu monato',
+            MM: '%d monatoj',
+            y: 'unu jaro',
+            yy: '%d jaroj',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}a/,
+        ordinal: '%da',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
+            '_'
+        ),
+        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+        monthsParse$2 = [
+            /^ene/i,
+            /^feb/i,
+            /^mar/i,
+            /^abr/i,
+            /^may/i,
+            /^jun/i,
+            /^jul/i,
+            /^ago/i,
+            /^sep/i,
+            /^oct/i,
+            /^nov/i,
+            /^dic/i,
+        ],
+        monthsRegex$3 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
+
+    hooks.defineLocale('es-do', {
+        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortDot;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShort$1[m.month()];
+            } else {
+                return monthsShortDot[m.month()];
+            }
+        },
+        monthsRegex: monthsRegex$3,
+        monthsShortRegex: monthsRegex$3,
+        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
+        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
+        monthsParse: monthsParse$2,
+        longMonthsParse: monthsParse$2,
+        shortMonthsParse: monthsParse$2,
+        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY h:mm A',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextDay: function () {
+                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastDay: function () {
+                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[el] dddd [pasado a la' +
+                    (this.hours() !== 1 ? 's' : '') +
+                    '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'en %s',
+            past: 'hace %s',
+            s: 'unos segundos',
+            ss: '%d segundos',
+            m: 'un minuto',
+            mm: '%d minutos',
+            h: 'una hora',
+            hh: '%d horas',
+            d: 'un día',
+            dd: '%d días',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un año',
+            yy: '%d años',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
+            '_'
+        ),
+        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+        monthsParse$3 = [
+            /^ene/i,
+            /^feb/i,
+            /^mar/i,
+            /^abr/i,
+            /^may/i,
+            /^jun/i,
+            /^jul/i,
+            /^ago/i,
+            /^sep/i,
+            /^oct/i,
+            /^nov/i,
+            /^dic/i,
+        ],
+        monthsRegex$4 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
+
+    hooks.defineLocale('es-us', {
+        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortDot$1;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShort$2[m.month()];
+            } else {
+                return monthsShortDot$1[m.month()];
+            }
+        },
+        monthsRegex: monthsRegex$4,
+        monthsShortRegex: monthsRegex$4,
+        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
+        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
+        monthsParse: monthsParse$3,
+        longMonthsParse: monthsParse$3,
+        shortMonthsParse: monthsParse$3,
+        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'MM/DD/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY h:mm A',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextDay: function () {
+                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastDay: function () {
+                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[el] dddd [pasado a la' +
+                    (this.hours() !== 1 ? 's' : '') +
+                    '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'en %s',
+            past: 'hace %s',
+            s: 'unos segundos',
+            ss: '%d segundos',
+            m: 'un minuto',
+            mm: '%d minutos',
+            h: 'una hora',
+            hh: '%d horas',
+            d: 'un día',
+            dd: '%d días',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un año',
+            yy: '%d años',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
+            '_'
+        ),
+        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+        monthsParse$4 = [
+            /^ene/i,
+            /^feb/i,
+            /^mar/i,
+            /^abr/i,
+            /^may/i,
+            /^jun/i,
+            /^jul/i,
+            /^ago/i,
+            /^sep/i,
+            /^oct/i,
+            /^nov/i,
+            /^dic/i,
+        ],
+        monthsRegex$5 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
+
+    hooks.defineLocale('es', {
+        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortDot$2;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShort$3[m.month()];
+            } else {
+                return monthsShortDot$2[m.month()];
+            }
+        },
+        monthsRegex: monthsRegex$5,
+        monthsShortRegex: monthsRegex$5,
+        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
+        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
+        monthsParse: monthsParse$4,
+        longMonthsParse: monthsParse$4,
+        shortMonthsParse: monthsParse$4,
+        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY H:mm',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextDay: function () {
+                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastDay: function () {
+                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[el] dddd [pasado a la' +
+                    (this.hours() !== 1 ? 's' : '') +
+                    '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'en %s',
+            past: 'hace %s',
+            s: 'unos segundos',
+            ss: '%d segundos',
+            m: 'un minuto',
+            mm: '%d minutos',
+            h: 'una hora',
+            hh: '%d horas',
+            d: 'un día',
+            dd: '%d días',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un año',
+            yy: '%d años',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+        invalidDate: 'Fecha inválida',
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
+        var format = {
+            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
+            ss: [number + 'sekundi', number + 'sekundit'],
+            m: ['ühe minuti', 'üks minut'],
+            mm: [number + ' minuti', number + ' minutit'],
+            h: ['ühe tunni', 'tund aega', 'üks tund'],
+            hh: [number + ' tunni', number + ' tundi'],
+            d: ['ühe päeva', 'üks päev'],
+            M: ['kuu aja', 'kuu aega', 'üks kuu'],
+            MM: [number + ' kuu', number + ' kuud'],
+            y: ['ühe aasta', 'aasta', 'üks aasta'],
+            yy: [number + ' aasta', number + ' aastat'],
+        };
+        if (withoutSuffix) {
+            return format[key][2] ? format[key][2] : format[key][1];
+        }
+        return isFuture ? format[key][0] : format[key][1];
+    }
+
+    hooks.defineLocale('et', {
+        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
+            '_'
+        ),
+        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(
+            '_'
+        ),
+        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
+            '_'
+        ),
+        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
+        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[Täna,] LT',
+            nextDay: '[Homme,] LT',
+            nextWeek: '[Järgmine] dddd LT',
+            lastDay: '[Eile,] LT',
+            lastWeek: '[Eelmine] dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s pärast',
+            past: '%s tagasi',
+            s: processRelativeTime$3,
+            ss: processRelativeTime$3,
+            m: processRelativeTime$3,
+            mm: processRelativeTime$3,
+            h: processRelativeTime$3,
+            hh: processRelativeTime$3,
+            d: processRelativeTime$3,
+            dd: '%d päeva',
+            M: processRelativeTime$3,
+            MM: processRelativeTime$3,
+            y: processRelativeTime$3,
+            yy: processRelativeTime$3,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('eu', {
+        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
+            '_'
+        ),
+        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
+            '_'
+        ),
+        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
+        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'YYYY[ko] MMMM[ren] D[a]',
+            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
+            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
+            l: 'YYYY-M-D',
+            ll: 'YYYY[ko] MMM D[a]',
+            lll: 'YYYY[ko] MMM D[a] HH:mm',
+            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
+        },
+        calendar: {
+            sameDay: '[gaur] LT[etan]',
+            nextDay: '[bihar] LT[etan]',
+            nextWeek: 'dddd LT[etan]',
+            lastDay: '[atzo] LT[etan]',
+            lastWeek: '[aurreko] dddd LT[etan]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s barru',
+            past: 'duela %s',
+            s: 'segundo batzuk',
+            ss: '%d segundo',
+            m: 'minutu bat',
+            mm: '%d minutu',
+            h: 'ordu bat',
+            hh: '%d ordu',
+            d: 'egun bat',
+            dd: '%d egun',
+            M: 'hilabete bat',
+            MM: '%d hilabete',
+            y: 'urte bat',
+            yy: '%d urte',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$5 = {
+            '1': '۱',
+            '2': '۲',
+            '3': '۳',
+            '4': '۴',
+            '5': '۵',
+            '6': '۶',
+            '7': '۷',
+            '8': '۸',
+            '9': '۹',
+            '0': '۰',
+        },
+        numberMap$4 = {
+            '۱': '1',
+            '۲': '2',
+            '۳': '3',
+            '۴': '4',
+            '۵': '5',
+            '۶': '6',
+            '۷': '7',
+            '۸': '8',
+            '۹': '9',
+            '۰': '0',
+        };
+
+    hooks.defineLocale('fa', {
+        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
+            '_'
+        ),
+        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
+            '_'
+        ),
+        weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
+            '_'
+        ),
+        weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
+            '_'
+        ),
+        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /قبل از ظهر|بعد از ظهر/,
+        isPM: function (input) {
+            return /بعد از ظهر/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'قبل از ظهر';
+            } else {
+                return 'بعد از ظهر';
+            }
+        },
+        calendar: {
+            sameDay: '[امروز ساعت] LT',
+            nextDay: '[فردا ساعت] LT',
+            nextWeek: 'dddd [ساعت] LT',
+            lastDay: '[دیروز ساعت] LT',
+            lastWeek: 'dddd [پیش] [ساعت] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'در %s',
+            past: '%s پیش',
+            s: 'چند ثانیه',
+            ss: '%d ثانیه',
+            m: 'یک دقیقه',
+            mm: '%d دقیقه',
+            h: 'یک ساعت',
+            hh: '%d ساعت',
+            d: 'یک روز',
+            dd: '%d روز',
+            M: 'یک ماه',
+            MM: '%d ماه',
+            y: 'یک سال',
+            yy: '%d سال',
+        },
+        preparse: function (string) {
+            return string
+                .replace(/[۰-۹]/g, function (match) {
+                    return numberMap$4[match];
+                })
+                .replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap$5[match];
+                })
+                .replace(/,/g, '،');
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}م/,
+        ordinal: '%dم',
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
+            ' '
+        ),
+        numbersFuture = [
+            'nolla',
+            'yhden',
+            'kahden',
+            'kolmen',
+            'neljän',
+            'viiden',
+            'kuuden',
+            numbersPast[7],
+            numbersPast[8],
+            numbersPast[9],
+        ];
+    function translate$2(number, withoutSuffix, key, isFuture) {
+        var result = '';
+        switch (key) {
+            case 's':
+                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
+            case 'ss':
+                result = isFuture ? 'sekunnin' : 'sekuntia';
+                break;
+            case 'm':
+                return isFuture ? 'minuutin' : 'minuutti';
+            case 'mm':
+                result = isFuture ? 'minuutin' : 'minuuttia';
+                break;
+            case 'h':
+                return isFuture ? 'tunnin' : 'tunti';
+            case 'hh':
+                result = isFuture ? 'tunnin' : 'tuntia';
+                break;
+            case 'd':
+                return isFuture ? 'päivän' : 'päivä';
+            case 'dd':
+                result = isFuture ? 'päivän' : 'päivää';
+                break;
+            case 'M':
+                return isFuture ? 'kuukauden' : 'kuukausi';
+            case 'MM':
+                result = isFuture ? 'kuukauden' : 'kuukautta';
+                break;
+            case 'y':
+                return isFuture ? 'vuoden' : 'vuosi';
+            case 'yy':
+                result = isFuture ? 'vuoden' : 'vuotta';
+                break;
+        }
+        result = verbalNumber(number, isFuture) + ' ' + result;
+        return result;
+    }
+    function verbalNumber(number, isFuture) {
+        return number < 10
+            ? isFuture
+                ? numbersFuture[number]
+                : numbersPast[number]
+            : number;
+    }
+
+    hooks.defineLocale('fi', {
+        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
+            '_'
+        ),
+        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
+            '_'
+        ),
+        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
+            '_'
+        ),
+        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
+        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD.MM.YYYY',
+            LL: 'Do MMMM[ta] YYYY',
+            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
+            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
+            l: 'D.M.YYYY',
+            ll: 'Do MMM YYYY',
+            lll: 'Do MMM YYYY, [klo] HH.mm',
+            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
+        },
+        calendar: {
+            sameDay: '[tänään] [klo] LT',
+            nextDay: '[huomenna] [klo] LT',
+            nextWeek: 'dddd [klo] LT',
+            lastDay: '[eilen] [klo] LT',
+            lastWeek: '[viime] dddd[na] [klo] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s päästä',
+            past: '%s sitten',
+            s: translate$2,
+            ss: translate$2,
+            m: translate$2,
+            mm: translate$2,
+            h: translate$2,
+            hh: translate$2,
+            d: translate$2,
+            dd: translate$2,
+            M: translate$2,
+            MM: translate$2,
+            y: translate$2,
+            yy: translate$2,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('fil', {
+        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
+            '_'
+        ),
+        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
+        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
+            '_'
+        ),
+        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
+        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'MM/D/YYYY',
+            LL: 'MMMM D, YYYY',
+            LLL: 'MMMM D, YYYY HH:mm',
+            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: 'LT [ngayong araw]',
+            nextDay: '[Bukas ng] LT',
+            nextWeek: 'LT [sa susunod na] dddd',
+            lastDay: 'LT [kahapon]',
+            lastWeek: 'LT [noong nakaraang] dddd',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'sa loob ng %s',
+            past: '%s ang nakalipas',
+            s: 'ilang segundo',
+            ss: '%d segundo',
+            m: 'isang minuto',
+            mm: '%d minuto',
+            h: 'isang oras',
+            hh: '%d oras',
+            d: 'isang araw',
+            dd: '%d araw',
+            M: 'isang buwan',
+            MM: '%d buwan',
+            y: 'isang taon',
+            yy: '%d taon',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}/,
+        ordinal: function (number) {
+            return number;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('fo', {
+        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
+        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
+            '_'
+        ),
+        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
+        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D. MMMM, YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Í dag kl.] LT',
+            nextDay: '[Í morgin kl.] LT',
+            nextWeek: 'dddd [kl.] LT',
+            lastDay: '[Í gjár kl.] LT',
+            lastWeek: '[síðstu] dddd [kl] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'um %s',
+            past: '%s síðani',
+            s: 'fá sekund',
+            ss: '%d sekundir',
+            m: 'ein minuttur',
+            mm: '%d minuttir',
+            h: 'ein tími',
+            hh: '%d tímar',
+            d: 'ein dagur',
+            dd: '%d dagar',
+            M: 'ein mánaður',
+            MM: '%d mánaðir',
+            y: 'eitt ár',
+            yy: '%d ár',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('fr-ca', {
+        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
+            '_'
+        ),
+        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Aujourd’hui à] LT',
+            nextDay: '[Demain à] LT',
+            nextWeek: 'dddd [à] LT',
+            lastDay: '[Hier à] LT',
+            lastWeek: 'dddd [dernier à] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dans %s',
+            past: 'il y a %s',
+            s: 'quelques secondes',
+            ss: '%d secondes',
+            m: 'une minute',
+            mm: '%d minutes',
+            h: 'une heure',
+            hh: '%d heures',
+            d: 'un jour',
+            dd: '%d jours',
+            M: 'un mois',
+            MM: '%d mois',
+            y: 'un an',
+            yy: '%d ans',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // Words with masculine grammatical gender: mois, trimestre, jour
+                default:
+                case 'M':
+                case 'Q':
+                case 'D':
+                case 'DDD':
+                case 'd':
+                    return number + (number === 1 ? 'er' : 'e');
+
+                // Words with feminine grammatical gender: semaine
+                case 'w':
+                case 'W':
+                    return number + (number === 1 ? 're' : 'e');
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('fr-ch', {
+        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
+            '_'
+        ),
+        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Aujourd’hui à] LT',
+            nextDay: '[Demain à] LT',
+            nextWeek: 'dddd [à] LT',
+            lastDay: '[Hier à] LT',
+            lastWeek: 'dddd [dernier à] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dans %s',
+            past: 'il y a %s',
+            s: 'quelques secondes',
+            ss: '%d secondes',
+            m: 'une minute',
+            mm: '%d minutes',
+            h: 'une heure',
+            hh: '%d heures',
+            d: 'un jour',
+            dd: '%d jours',
+            M: 'un mois',
+            MM: '%d mois',
+            y: 'un an',
+            yy: '%d ans',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // Words with masculine grammatical gender: mois, trimestre, jour
+                default:
+                case 'M':
+                case 'Q':
+                case 'D':
+                case 'DDD':
+                case 'd':
+                    return number + (number === 1 ? 'er' : 'e');
+
+                // Words with feminine grammatical gender: semaine
+                case 'w':
+                case 'W':
+                    return number + (number === 1 ? 're' : 'e');
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsStrictRegex$1 = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
+        monthsShortStrictRegex$1 = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
+        monthsRegex$6 = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
+        monthsParse$5 = [
+            /^janv/i,
+            /^févr/i,
+            /^mars/i,
+            /^avr/i,
+            /^mai/i,
+            /^juin/i,
+            /^juil/i,
+            /^août/i,
+            /^sept/i,
+            /^oct/i,
+            /^nov/i,
+            /^déc/i,
+        ];
+
+    hooks.defineLocale('fr', {
+        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
+            '_'
+        ),
+        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
+            '_'
+        ),
+        monthsRegex: monthsRegex$6,
+        monthsShortRegex: monthsRegex$6,
+        monthsStrictRegex: monthsStrictRegex$1,
+        monthsShortStrictRegex: monthsShortStrictRegex$1,
+        monthsParse: monthsParse$5,
+        longMonthsParse: monthsParse$5,
+        shortMonthsParse: monthsParse$5,
+        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Aujourd’hui à] LT',
+            nextDay: '[Demain à] LT',
+            nextWeek: 'dddd [à] LT',
+            lastDay: '[Hier à] LT',
+            lastWeek: 'dddd [dernier à] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dans %s',
+            past: 'il y a %s',
+            s: 'quelques secondes',
+            ss: '%d secondes',
+            m: 'une minute',
+            mm: '%d minutes',
+            h: 'une heure',
+            hh: '%d heures',
+            d: 'un jour',
+            dd: '%d jours',
+            M: 'un mois',
+            MM: '%d mois',
+            y: 'un an',
+            yy: '%d ans',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // TODO: Return 'e' when day of month > 1. Move this case inside
+                // block for masculine words below.
+                // See https://github.com/moment/moment/issues/3375
+                case 'D':
+                    return number + (number === 1 ? 'er' : '');
+
+                // Words with masculine grammatical gender: mois, trimestre, jour
+                default:
+                case 'M':
+                case 'Q':
+                case 'DDD':
+                case 'd':
+                    return number + (number === 1 ? 'er' : 'e');
+
+                // Words with feminine grammatical gender: semaine
+                case 'w':
+                case 'W':
+                    return number + (number === 1 ? 're' : 'e');
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(
+            '_'
+        ),
+        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(
+            '_'
+        );
+
+    hooks.defineLocale('fy', {
+        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortWithDots;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShortWithoutDots[m.month()];
+            } else {
+                return monthsShortWithDots[m.month()];
+            }
+        },
+        monthsParseExact: true,
+        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
+            '_'
+        ),
+        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
+        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD-MM-YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[hjoed om] LT',
+            nextDay: '[moarn om] LT',
+            nextWeek: 'dddd [om] LT',
+            lastDay: '[juster om] LT',
+            lastWeek: '[ôfrûne] dddd [om] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'oer %s',
+            past: '%s lyn',
+            s: 'in pear sekonden',
+            ss: '%d sekonden',
+            m: 'ien minút',
+            mm: '%d minuten',
+            h: 'ien oere',
+            hh: '%d oeren',
+            d: 'ien dei',
+            dd: '%d dagen',
+            M: 'ien moanne',
+            MM: '%d moannen',
+            y: 'ien jier',
+            yy: '%d jierren',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
+        ordinal: function (number) {
+            return (
+                number +
+                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
+            );
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$6 = [
+            'Eanáir',
+            'Feabhra',
+            'Márta',
+            'Aibreán',
+            'Bealtaine',
+            'Meitheamh',
+            'Iúil',
+            'Lúnasa',
+            'Meán Fómhair',
+            'Deireadh Fómhair',
+            'Samhain',
+            'Nollaig',
+        ],
+        monthsShort$4 = [
+            'Ean',
+            'Feabh',
+            'Márt',
+            'Aib',
+            'Beal',
+            'Meith',
+            'Iúil',
+            'Lún',
+            'M.F.',
+            'D.F.',
+            'Samh',
+            'Noll',
+        ],
+        weekdays$1 = [
+            'Dé Domhnaigh',
+            'Dé Luain',
+            'Dé Máirt',
+            'Dé Céadaoin',
+            'Déardaoin',
+            'Dé hAoine',
+            'Dé Sathairn',
+        ],
+        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
+        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
+
+    hooks.defineLocale('ga', {
+        months: months$6,
+        monthsShort: monthsShort$4,
+        monthsParseExact: true,
+        weekdays: weekdays$1,
+        weekdaysShort: weekdaysShort,
+        weekdaysMin: weekdaysMin,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Inniu ag] LT',
+            nextDay: '[Amárach ag] LT',
+            nextWeek: 'dddd [ag] LT',
+            lastDay: '[Inné ag] LT',
+            lastWeek: 'dddd [seo caite] [ag] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'i %s',
+            past: '%s ó shin',
+            s: 'cúpla soicind',
+            ss: '%d soicind',
+            m: 'nóiméad',
+            mm: '%d nóiméad',
+            h: 'uair an chloig',
+            hh: '%d uair an chloig',
+            d: 'lá',
+            dd: '%d lá',
+            M: 'mí',
+            MM: '%d míonna',
+            y: 'bliain',
+            yy: '%d bliain',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
+        ordinal: function (number) {
+            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$7 = [
+            'Am Faoilleach',
+            'An Gearran',
+            'Am Màrt',
+            'An Giblean',
+            'An Cèitean',
+            'An t-Ògmhios',
+            'An t-Iuchar',
+            'An Lùnastal',
+            'An t-Sultain',
+            'An Dàmhair',
+            'An t-Samhain',
+            'An Dùbhlachd',
+        ],
+        monthsShort$5 = [
+            'Faoi',
+            'Gear',
+            'Màrt',
+            'Gibl',
+            'Cèit',
+            'Ògmh',
+            'Iuch',
+            'Lùn',
+            'Sult',
+            'Dàmh',
+            'Samh',
+            'Dùbh',
+        ],
+        weekdays$2 = [
+            'Didòmhnaich',
+            'Diluain',
+            'Dimàirt',
+            'Diciadain',
+            'Diardaoin',
+            'Dihaoine',
+            'Disathairne',
+        ],
+        weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
+        weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
+
+    hooks.defineLocale('gd', {
+        months: months$7,
+        monthsShort: monthsShort$5,
+        monthsParseExact: true,
+        weekdays: weekdays$2,
+        weekdaysShort: weekdaysShort$1,
+        weekdaysMin: weekdaysMin$1,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[An-diugh aig] LT',
+            nextDay: '[A-màireach aig] LT',
+            nextWeek: 'dddd [aig] LT',
+            lastDay: '[An-dè aig] LT',
+            lastWeek: 'dddd [seo chaidh] [aig] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ann an %s',
+            past: 'bho chionn %s',
+            s: 'beagan diogan',
+            ss: '%d diogan',
+            m: 'mionaid',
+            mm: '%d mionaidean',
+            h: 'uair',
+            hh: '%d uairean',
+            d: 'latha',
+            dd: '%d latha',
+            M: 'mìos',
+            MM: '%d mìosan',
+            y: 'bliadhna',
+            yy: '%d bliadhna',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
+        ordinal: function (number) {
+            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('gl', {
+        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
+            '_'
+        ),
+        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
+        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
+        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY H:mm',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
+        },
+        calendar: {
+            sameDay: function () {
+                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
+            },
+            nextDay: function () {
+                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
+            },
+            nextWeek: function () {
+                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
+            },
+            lastDay: function () {
+                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
+            },
+            lastWeek: function () {
+                return (
+                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
+                );
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: function (str) {
+                if (str.indexOf('un') === 0) {
+                    return 'n' + str;
+                }
+                return 'en ' + str;
+            },
+            past: 'hai %s',
+            s: 'uns segundos',
+            ss: '%d segundos',
+            m: 'un minuto',
+            mm: '%d minutos',
+            h: 'unha hora',
+            hh: '%d horas',
+            d: 'un día',
+            dd: '%d días',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un ano',
+            yy: '%d anos',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
+        var format = {
+            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
+            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
+            m: ['एका मिणटान', 'एक मिनूट'],
+            mm: [number + ' मिणटांनी', number + ' मिणटां'],
+            h: ['एका वरान', 'एक वर'],
+            hh: [number + ' वरांनी', number + ' वरां'],
+            d: ['एका दिसान', 'एक दीस'],
+            dd: [number + ' दिसांनी', number + ' दीस'],
+            M: ['एका म्हयन्यान', 'एक म्हयनो'],
+            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
+            y: ['एका वर्सान', 'एक वर्स'],
+            yy: [number + ' वर्सांनी', number + ' वर्सां'],
+        };
+        return isFuture ? format[key][0] : format[key][1];
+    }
+
+    hooks.defineLocale('gom-deva', {
+        months: {
+            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
+                '_'
+            ),
+            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
+                '_'
+            ),
+            isFormat: /MMMM(\s)+D[oD]?/,
+        },
+        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
+        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
+        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'A h:mm [वाजतां]',
+            LTS: 'A h:mm:ss [वाजतां]',
+            L: 'DD-MM-YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
+            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
+            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
+        },
+        calendar: {
+            sameDay: '[आयज] LT',
+            nextDay: '[फाल्यां] LT',
+            nextWeek: '[फुडलो] dddd[,] LT',
+            lastDay: '[काल] LT',
+            lastWeek: '[फाटलो] dddd[,] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s',
+            past: '%s आदीं',
+            s: processRelativeTime$4,
+            ss: processRelativeTime$4,
+            m: processRelativeTime$4,
+            mm: processRelativeTime$4,
+            h: processRelativeTime$4,
+            hh: processRelativeTime$4,
+            d: processRelativeTime$4,
+            dd: processRelativeTime$4,
+            M: processRelativeTime$4,
+            MM: processRelativeTime$4,
+            y: processRelativeTime$4,
+            yy: processRelativeTime$4,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // the ordinal 'वेर' only applies to day of the month
+                case 'D':
+                    return number + 'वेर';
+                default:
+                case 'M':
+                case 'Q':
+                case 'DDD':
+                case 'd':
+                case 'w':
+                case 'W':
+                    return number;
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week
+            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
+        },
+        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'राती') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'सकाळीं') {
+                return hour;
+            } else if (meridiem === 'दनपारां') {
+                return hour > 12 ? hour : hour + 12;
+            } else if (meridiem === 'सांजे') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'राती';
+            } else if (hour < 12) {
+                return 'सकाळीं';
+            } else if (hour < 16) {
+                return 'दनपारां';
+            } else if (hour < 20) {
+                return 'सांजे';
+            } else {
+                return 'राती';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
+        var format = {
+            s: ['thoddea sekondamni', 'thodde sekond'],
+            ss: [number + ' sekondamni', number + ' sekond'],
+            m: ['eka mintan', 'ek minut'],
+            mm: [number + ' mintamni', number + ' mintam'],
+            h: ['eka voran', 'ek vor'],
+            hh: [number + ' voramni', number + ' voram'],
+            d: ['eka disan', 'ek dis'],
+            dd: [number + ' disamni', number + ' dis'],
+            M: ['eka mhoinean', 'ek mhoino'],
+            MM: [number + ' mhoineamni', number + ' mhoine'],
+            y: ['eka vorsan', 'ek voros'],
+            yy: [number + ' vorsamni', number + ' vorsam'],
+        };
+        return isFuture ? format[key][0] : format[key][1];
+    }
+
+    hooks.defineLocale('gom-latn', {
+        months: {
+            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
+                '_'
+            ),
+            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
+                '_'
+            ),
+            isFormat: /MMMM(\s)+D[oD]?/,
+        },
+        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
+        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
+        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'A h:mm [vazta]',
+            LTS: 'A h:mm:ss [vazta]',
+            L: 'DD-MM-YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY A h:mm [vazta]',
+            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
+            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
+        },
+        calendar: {
+            sameDay: '[Aiz] LT',
+            nextDay: '[Faleam] LT',
+            nextWeek: '[Fuddlo] dddd[,] LT',
+            lastDay: '[Kal] LT',
+            lastWeek: '[Fattlo] dddd[,] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s',
+            past: '%s adim',
+            s: processRelativeTime$5,
+            ss: processRelativeTime$5,
+            m: processRelativeTime$5,
+            mm: processRelativeTime$5,
+            h: processRelativeTime$5,
+            hh: processRelativeTime$5,
+            d: processRelativeTime$5,
+            dd: processRelativeTime$5,
+            M: processRelativeTime$5,
+            MM: processRelativeTime$5,
+            y: processRelativeTime$5,
+            yy: processRelativeTime$5,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                // the ordinal 'er' only applies to day of the month
+                case 'D':
+                    return number + 'er';
+                default:
+                case 'M':
+                case 'Q':
+                case 'DDD':
+                case 'd':
+                case 'w':
+                case 'W':
+                    return number;
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week
+            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
+        },
+        meridiemParse: /rati|sokallim|donparam|sanje/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'rati') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'sokallim') {
+                return hour;
+            } else if (meridiem === 'donparam') {
+                return hour > 12 ? hour : hour + 12;
+            } else if (meridiem === 'sanje') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'rati';
+            } else if (hour < 12) {
+                return 'sokallim';
+            } else if (hour < 16) {
+                return 'donparam';
+            } else if (hour < 20) {
+                return 'sanje';
+            } else {
+                return 'rati';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$6 = {
+            '1': '૧',
+            '2': '૨',
+            '3': '૩',
+            '4': '૪',
+            '5': '૫',
+            '6': '૬',
+            '7': '૭',
+            '8': '૮',
+            '9': '૯',
+            '0': '૦',
+        },
+        numberMap$5 = {
+            '૧': '1',
+            '૨': '2',
+            '૩': '3',
+            '૪': '4',
+            '૫': '5',
+            '૬': '6',
+            '૭': '7',
+            '૮': '8',
+            '૯': '9',
+            '૦': '0',
+        };
+
+    hooks.defineLocale('gu', {
+        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
+            '_'
+        ),
+        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
+            '_'
+        ),
+        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
+        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm વાગ્યે',
+            LTS: 'A h:mm:ss વાગ્યે',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
+        },
+        calendar: {
+            sameDay: '[આજ] LT',
+            nextDay: '[કાલે] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[ગઇકાલે] LT',
+            lastWeek: '[પાછલા] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s મા',
+            past: '%s પહેલા',
+            s: 'અમુક પળો',
+            ss: '%d સેકંડ',
+            m: 'એક મિનિટ',
+            mm: '%d મિનિટ',
+            h: 'એક કલાક',
+            hh: '%d કલાક',
+            d: 'એક દિવસ',
+            dd: '%d દિવસ',
+            M: 'એક મહિનો',
+            MM: '%d મહિનો',
+            y: 'એક વર્ષ',
+            yy: '%d વર્ષ',
+        },
+        preparse: function (string) {
+            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
+                return numberMap$5[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$6[match];
+            });
+        },
+        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
+        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
+        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'રાત') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'સવાર') {
+                return hour;
+            } else if (meridiem === 'બપોર') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'સાંજ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'રાત';
+            } else if (hour < 10) {
+                return 'સવાર';
+            } else if (hour < 17) {
+                return 'બપોર';
+            } else if (hour < 20) {
+                return 'સાંજ';
+            } else {
+                return 'રાત';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('he', {
+        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
+            '_'
+        ),
+        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(
+            '_'
+        ),
+        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
+        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
+        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [ב]MMMM YYYY',
+            LLL: 'D [ב]MMMM YYYY HH:mm',
+            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
+            l: 'D/M/YYYY',
+            ll: 'D MMM YYYY',
+            lll: 'D MMM YYYY HH:mm',
+            llll: 'ddd, D MMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[היום ב־]LT',
+            nextDay: '[מחר ב־]LT',
+            nextWeek: 'dddd [בשעה] LT',
+            lastDay: '[אתמול ב־]LT',
+            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'בעוד %s',
+            past: 'לפני %s',
+            s: 'מספר שניות',
+            ss: '%d שניות',
+            m: 'דקה',
+            mm: '%d דקות',
+            h: 'שעה',
+            hh: function (number) {
+                if (number === 2) {
+                    return 'שעתיים';
+                }
+                return number + ' שעות';
+            },
+            d: 'יום',
+            dd: function (number) {
+                if (number === 2) {
+                    return 'יומיים';
+                }
+                return number + ' ימים';
+            },
+            M: 'חודש',
+            MM: function (number) {
+                if (number === 2) {
+                    return 'חודשיים';
+                }
+                return number + ' חודשים';
+            },
+            y: 'שנה',
+            yy: function (number) {
+                if (number === 2) {
+                    return 'שנתיים';
+                } else if (number % 10 === 0 && number !== 10) {
+                    return number + ' שנה';
+                }
+                return number + ' שנים';
+            },
+        },
+        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
+        isPM: function (input) {
+            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 5) {
+                return 'לפנות בוקר';
+            } else if (hour < 10) {
+                return 'בבוקר';
+            } else if (hour < 12) {
+                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
+            } else if (hour < 18) {
+                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
+            } else {
+                return 'בערב';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$7 = {
+            '1': '१',
+            '2': '२',
+            '3': '३',
+            '4': '४',
+            '5': '५',
+            '6': '६',
+            '7': '७',
+            '8': '८',
+            '9': '९',
+            '0': '०',
+        },
+        numberMap$6 = {
+            '१': '1',
+            '२': '2',
+            '३': '3',
+            '४': '4',
+            '५': '5',
+            '६': '6',
+            '७': '7',
+            '८': '8',
+            '९': '9',
+            '०': '0',
+        };
+
+    hooks.defineLocale('hi', {
+        months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
+            '_'
+        ),
+        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
+        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
+        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm बजे',
+            LTS: 'A h:mm:ss बजे',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm बजे',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
+        },
+        calendar: {
+            sameDay: '[आज] LT',
+            nextDay: '[कल] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[कल] LT',
+            lastWeek: '[पिछले] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s में',
+            past: '%s पहले',
+            s: 'कुछ ही क्षण',
+            ss: '%d सेकंड',
+            m: 'एक मिनट',
+            mm: '%d मिनट',
+            h: 'एक घंटा',
+            hh: '%d घंटे',
+            d: 'एक दिन',
+            dd: '%d दिन',
+            M: 'एक महीने',
+            MM: '%d महीने',
+            y: 'एक वर्ष',
+            yy: '%d वर्ष',
+        },
+        preparse: function (string) {
+            return string.replace(/[१२३४५६७८९०]/g, function (match) {
+                return numberMap$6[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$7[match];
+            });
+        },
+        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
+        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
+        meridiemParse: /रात|सुबह|दोपहर|शाम/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'रात') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'सुबह') {
+                return hour;
+            } else if (meridiem === 'दोपहर') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'शाम') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'रात';
+            } else if (hour < 10) {
+                return 'सुबह';
+            } else if (hour < 17) {
+                return 'दोपहर';
+            } else if (hour < 20) {
+                return 'शाम';
+            } else {
+                return 'रात';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function translate$3(number, withoutSuffix, key) {
+        var result = number + ' ';
+        switch (key) {
+            case 'ss':
+                if (number === 1) {
+                    result += 'sekunda';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'sekunde';
+                } else {
+                    result += 'sekundi';
+                }
+                return result;
+            case 'm':
+                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
+            case 'mm':
+                if (number === 1) {
+                    result += 'minuta';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'minute';
+                } else {
+                    result += 'minuta';
+                }
+                return result;
+            case 'h':
+                return withoutSuffix ? 'jedan sat' : 'jednog sata';
+            case 'hh':
+                if (number === 1) {
+                    result += 'sat';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'sata';
+                } else {
+                    result += 'sati';
+                }
+                return result;
+            case 'dd':
+                if (number === 1) {
+                    result += 'dan';
+                } else {
+                    result += 'dana';
+                }
+                return result;
+            case 'MM':
+                if (number === 1) {
+                    result += 'mjesec';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'mjeseca';
+                } else {
+                    result += 'mjeseci';
+                }
+                return result;
+            case 'yy':
+                if (number === 1) {
+                    result += 'godina';
+                } else if (number === 2 || number === 3 || number === 4) {
+                    result += 'godine';
+                } else {
+                    result += 'godina';
+                }
+                return result;
+        }
+    }
+
+    hooks.defineLocale('hr', {
+        months: {
+            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
+                '_'
+            ),
+            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
+                '_'
+            ),
+        },
+        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'Do MMMM YYYY',
+            LLL: 'Do MMMM YYYY H:mm',
+            LLLL: 'dddd, Do MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danas u] LT',
+            nextDay: '[sutra u] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[u] [nedjelju] [u] LT';
+                    case 3:
+                        return '[u] [srijedu] [u] LT';
+                    case 6:
+                        return '[u] [subotu] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[u] dddd [u] LT';
+                }
+            },
+            lastDay: '[jučer u] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[prošlu] [nedjelju] [u] LT';
+                    case 3:
+                        return '[prošlu] [srijedu] [u] LT';
+                    case 6:
+                        return '[prošle] [subote] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[prošli] dddd [u] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'prije %s',
+            s: 'par sekundi',
+            ss: translate$3,
+            m: translate$3,
+            mm: translate$3,
+            h: translate$3,
+            hh: translate$3,
+            d: 'dan',
+            dd: translate$3,
+            M: 'mjesec',
+            MM: translate$3,
+            y: 'godinu',
+            yy: translate$3,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(
+        ' '
+    );
+    function translate$4(number, withoutSuffix, key, isFuture) {
+        var num = number;
+        switch (key) {
+            case 's':
+                return isFuture || withoutSuffix
+                    ? 'néhány másodperc'
+                    : 'néhány másodperce';
+            case 'ss':
+                return num + (isFuture || withoutSuffix)
+                    ? ' másodperc'
+                    : ' másodperce';
+            case 'm':
+                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
+            case 'mm':
+                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
+            case 'h':
+                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
+            case 'hh':
+                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
+            case 'd':
+                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
+            case 'dd':
+                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
+            case 'M':
+                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
+            case 'MM':
+                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
+            case 'y':
+                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
+            case 'yy':
+                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
+        }
+        return '';
+    }
+    function week(isFuture) {
+        return (
+            (isFuture ? '' : '[múlt] ') +
+            '[' +
+            weekEndings[this.day()] +
+            '] LT[-kor]'
+        );
+    }
+
+    hooks.defineLocale('hu', {
+        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(
+            '_'
+        ),
+        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
+        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
+        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'YYYY.MM.DD.',
+            LL: 'YYYY. MMMM D.',
+            LLL: 'YYYY. MMMM D. H:mm',
+            LLLL: 'YYYY. MMMM D., dddd H:mm',
+        },
+        meridiemParse: /de|du/i,
+        isPM: function (input) {
+            return input.charAt(1).toLowerCase() === 'u';
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 12) {
+                return isLower === true ? 'de' : 'DE';
+            } else {
+                return isLower === true ? 'du' : 'DU';
+            }
+        },
+        calendar: {
+            sameDay: '[ma] LT[-kor]',
+            nextDay: '[holnap] LT[-kor]',
+            nextWeek: function () {
+                return week.call(this, true);
+            },
+            lastDay: '[tegnap] LT[-kor]',
+            lastWeek: function () {
+                return week.call(this, false);
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s múlva',
+            past: '%s',
+            s: translate$4,
+            ss: translate$4,
+            m: translate$4,
+            mm: translate$4,
+            h: translate$4,
+            hh: translate$4,
+            d: translate$4,
+            dd: translate$4,
+            M: translate$4,
+            MM: translate$4,
+            y: translate$4,
+            yy: translate$4,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('hy-am', {
+        months: {
+            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
+                '_'
+            ),
+            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
+                '_'
+            ),
+        },
+        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
+        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
+            '_'
+        ),
+        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
+        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY թ.',
+            LLL: 'D MMMM YYYY թ., HH:mm',
+            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
+        },
+        calendar: {
+            sameDay: '[այսօր] LT',
+            nextDay: '[վաղը] LT',
+            lastDay: '[երեկ] LT',
+            nextWeek: function () {
+                return 'dddd [օրը ժամը] LT';
+            },
+            lastWeek: function () {
+                return '[անցած] dddd [օրը ժամը] LT';
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s հետո',
+            past: '%s առաջ',
+            s: 'մի քանի վայրկյան',
+            ss: '%d վայրկյան',
+            m: 'րոպե',
+            mm: '%d րոպե',
+            h: 'ժամ',
+            hh: '%d ժամ',
+            d: 'օր',
+            dd: '%d օր',
+            M: 'ամիս',
+            MM: '%d ամիս',
+            y: 'տարի',
+            yy: '%d տարի',
+        },
+        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
+        isPM: function (input) {
+            return /^(ցերեկվա|երեկոյան)$/.test(input);
+        },
+        meridiem: function (hour) {
+            if (hour < 4) {
+                return 'գիշերվա';
+            } else if (hour < 12) {
+                return 'առավոտվա';
+            } else if (hour < 17) {
+                return 'ցերեկվա';
+            } else {
+                return 'երեկոյան';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'DDD':
+                case 'w':
+                case 'W':
+                case 'DDDo':
+                    if (number === 1) {
+                        return number + '-ին';
+                    }
+                    return number + '-րդ';
+                default:
+                    return number;
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('id', {
+        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
+        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
+        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
+        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [pukul] HH.mm',
+            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
+        },
+        meridiemParse: /pagi|siang|sore|malam/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'pagi') {
+                return hour;
+            } else if (meridiem === 'siang') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'sore' || meridiem === 'malam') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'pagi';
+            } else if (hours < 15) {
+                return 'siang';
+            } else if (hours < 19) {
+                return 'sore';
+            } else {
+                return 'malam';
+            }
+        },
+        calendar: {
+            sameDay: '[Hari ini pukul] LT',
+            nextDay: '[Besok pukul] LT',
+            nextWeek: 'dddd [pukul] LT',
+            lastDay: '[Kemarin pukul] LT',
+            lastWeek: 'dddd [lalu pukul] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dalam %s',
+            past: '%s yang lalu',
+            s: 'beberapa detik',
+            ss: '%d detik',
+            m: 'semenit',
+            mm: '%d menit',
+            h: 'sejam',
+            hh: '%d jam',
+            d: 'sehari',
+            dd: '%d hari',
+            M: 'sebulan',
+            MM: '%d bulan',
+            y: 'setahun',
+            yy: '%d tahun',
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function plural$2(n) {
+        if (n % 100 === 11) {
+            return true;
+        } else if (n % 10 === 1) {
+            return false;
+        }
+        return true;
+    }
+    function translate$5(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        switch (key) {
+            case 's':
+                return withoutSuffix || isFuture
+                    ? 'nokkrar sekúndur'
+                    : 'nokkrum sekúndum';
+            case 'ss':
+                if (plural$2(number)) {
+                    return (
+                        result +
+                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
+                    );
+                }
+                return result + 'sekúnda';
+            case 'm':
+                return withoutSuffix ? 'mínúta' : 'mínútu';
+            case 'mm':
+                if (plural$2(number)) {
+                    return (
+                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
+                    );
+                } else if (withoutSuffix) {
+                    return result + 'mínúta';
+                }
+                return result + 'mínútu';
+            case 'hh':
+                if (plural$2(number)) {
+                    return (
+                        result +
+                        (withoutSuffix || isFuture
+                            ? 'klukkustundir'
+                            : 'klukkustundum')
+                    );
+                }
+                return result + 'klukkustund';
+            case 'd':
+                if (withoutSuffix) {
+                    return 'dagur';
+                }
+                return isFuture ? 'dag' : 'degi';
+            case 'dd':
+                if (plural$2(number)) {
+                    if (withoutSuffix) {
+                        return result + 'dagar';
+                    }
+                    return result + (isFuture ? 'daga' : 'dögum');
+                } else if (withoutSuffix) {
+                    return result + 'dagur';
+                }
+                return result + (isFuture ? 'dag' : 'degi');
+            case 'M':
+                if (withoutSuffix) {
+                    return 'mánuður';
+                }
+                return isFuture ? 'mánuð' : 'mánuði';
+            case 'MM':
+                if (plural$2(number)) {
+                    if (withoutSuffix) {
+                        return result + 'mánuðir';
+                    }
+                    return result + (isFuture ? 'mánuði' : 'mánuðum');
+                } else if (withoutSuffix) {
+                    return result + 'mánuður';
+                }
+                return result + (isFuture ? 'mánuð' : 'mánuði');
+            case 'y':
+                return withoutSuffix || isFuture ? 'ár' : 'ári';
+            case 'yy':
+                if (plural$2(number)) {
+                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
+                }
+                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
+        }
+    }
+
+    hooks.defineLocale('is', {
+        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
+        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
+            '_'
+        ),
+        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
+        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY [kl.] H:mm',
+            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
+        },
+        calendar: {
+            sameDay: '[í dag kl.] LT',
+            nextDay: '[á morgun kl.] LT',
+            nextWeek: 'dddd [kl.] LT',
+            lastDay: '[í gær kl.] LT',
+            lastWeek: '[síðasta] dddd [kl.] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'eftir %s',
+            past: 'fyrir %s síðan',
+            s: translate$5,
+            ss: translate$5,
+            m: translate$5,
+            mm: translate$5,
+            h: 'klukkustund',
+            hh: translate$5,
+            d: translate$5,
+            dd: translate$5,
+            M: translate$5,
+            MM: translate$5,
+            y: translate$5,
+            yy: translate$5,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('it-ch', {
+        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
+            '_'
+        ),
+        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
+        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
+            '_'
+        ),
+        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
+        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Oggi alle] LT',
+            nextDay: '[Domani alle] LT',
+            nextWeek: 'dddd [alle] LT',
+            lastDay: '[Ieri alle] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[la scorsa] dddd [alle] LT';
+                    default:
+                        return '[lo scorso] dddd [alle] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: function (s) {
+                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
+            },
+            past: '%s fa',
+            s: 'alcuni secondi',
+            ss: '%d secondi',
+            m: 'un minuto',
+            mm: '%d minuti',
+            h: "un'ora",
+            hh: '%d ore',
+            d: 'un giorno',
+            dd: '%d giorni',
+            M: 'un mese',
+            MM: '%d mesi',
+            y: 'un anno',
+            yy: '%d anni',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('it', {
+        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
+            '_'
+        ),
+        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
+        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
+            '_'
+        ),
+        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
+        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: function () {
+                return (
+                    '[Oggi a' +
+                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
+                    ']LT'
+                );
+            },
+            nextDay: function () {
+                return (
+                    '[Domani a' +
+                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
+                    ']LT'
+                );
+            },
+            nextWeek: function () {
+                return (
+                    'dddd [a' +
+                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
+                    ']LT'
+                );
+            },
+            lastDay: function () {
+                return (
+                    '[Ieri a' +
+                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
+                    ']LT'
+                );
+            },
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return (
+                            '[La scorsa] dddd [a' +
+                            (this.hours() > 1
+                                ? 'lle '
+                                : this.hours() === 0
+                                ? ' '
+                                : "ll'") +
+                            ']LT'
+                        );
+                    default:
+                        return (
+                            '[Lo scorso] dddd [a' +
+                            (this.hours() > 1
+                                ? 'lle '
+                                : this.hours() === 0
+                                ? ' '
+                                : "ll'") +
+                            ']LT'
+                        );
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'tra %s',
+            past: '%s fa',
+            s: 'alcuni secondi',
+            ss: '%d secondi',
+            m: 'un minuto',
+            mm: '%d minuti',
+            h: "un'ora",
+            hh: '%d ore',
+            d: 'un giorno',
+            dd: '%d giorni',
+            M: 'un mese',
+            MM: '%d mesi',
+            y: 'un anno',
+            yy: '%d anni',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ja', {
+        eras: [
+            {
+                since: '2019-05-01',
+                offset: 1,
+                name: '令和',
+                narrow: '㋿',
+                abbr: 'R',
+            },
+            {
+                since: '1989-01-08',
+                until: '2019-04-30',
+                offset: 1,
+                name: '平成',
+                narrow: '㍻',
+                abbr: 'H',
+            },
+            {
+                since: '1926-12-25',
+                until: '1989-01-07',
+                offset: 1,
+                name: '昭和',
+                narrow: '㍼',
+                abbr: 'S',
+            },
+            {
+                since: '1912-07-30',
+                until: '1926-12-24',
+                offset: 1,
+                name: '大正',
+                narrow: '㍽',
+                abbr: 'T',
+            },
+            {
+                since: '1873-01-01',
+                until: '1912-07-29',
+                offset: 6,
+                name: '明治',
+                narrow: '㍾',
+                abbr: 'M',
+            },
+            {
+                since: '0001-01-01',
+                until: '1873-12-31',
+                offset: 1,
+                name: '西暦',
+                narrow: 'AD',
+                abbr: 'AD',
+            },
+            {
+                since: '0000-12-31',
+                until: -Infinity,
+                offset: 1,
+                name: '紀元前',
+                narrow: 'BC',
+                abbr: 'BC',
+            },
+        ],
+        eraYearOrdinalRegex: /(元|\d+)年/,
+        eraYearOrdinalParse: function (input, match) {
+            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
+        },
+        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
+        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
+        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日 HH:mm',
+            LLLL: 'YYYY年M月D日 dddd HH:mm',
+            l: 'YYYY/MM/DD',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日(ddd) HH:mm',
+        },
+        meridiemParse: /午前|午後/i,
+        isPM: function (input) {
+            return input === '午後';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return '午前';
+            } else {
+                return '午後';
+            }
+        },
+        calendar: {
+            sameDay: '[今日] LT',
+            nextDay: '[明日] LT',
+            nextWeek: function (now) {
+                if (now.week() !== this.week()) {
+                    return '[来週]dddd LT';
+                } else {
+                    return 'dddd LT';
+                }
+            },
+            lastDay: '[昨日] LT',
+            lastWeek: function (now) {
+                if (this.week() !== now.week()) {
+                    return '[先週]dddd LT';
+                } else {
+                    return 'dddd LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}日/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'y':
+                    return number === 1 ? '元年' : number + '年';
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s後',
+            past: '%s前',
+            s: '数秒',
+            ss: '%d秒',
+            m: '1分',
+            mm: '%d分',
+            h: '1時間',
+            hh: '%d時間',
+            d: '1日',
+            dd: '%d日',
+            M: '1ヶ月',
+            MM: '%dヶ月',
+            y: '1年',
+            yy: '%d年',
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('jv', {
+        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
+        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
+        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
+        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [pukul] HH.mm',
+            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
+        },
+        meridiemParse: /enjing|siyang|sonten|ndalu/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'enjing') {
+                return hour;
+            } else if (meridiem === 'siyang') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'enjing';
+            } else if (hours < 15) {
+                return 'siyang';
+            } else if (hours < 19) {
+                return 'sonten';
+            } else {
+                return 'ndalu';
+            }
+        },
+        calendar: {
+            sameDay: '[Dinten puniko pukul] LT',
+            nextDay: '[Mbenjang pukul] LT',
+            nextWeek: 'dddd [pukul] LT',
+            lastDay: '[Kala wingi pukul] LT',
+            lastWeek: 'dddd [kepengker pukul] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'wonten ing %s',
+            past: '%s ingkang kepengker',
+            s: 'sawetawis detik',
+            ss: '%d detik',
+            m: 'setunggal menit',
+            mm: '%d menit',
+            h: 'setunggal jam',
+            hh: '%d jam',
+            d: 'sedinten',
+            dd: '%d dinten',
+            M: 'sewulan',
+            MM: '%d wulan',
+            y: 'setaun',
+            yy: '%d taun',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ka', {
+        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
+            '_'
+        ),
+        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
+        weekdays: {
+            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
+                '_'
+            ),
+            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
+                '_'
+            ),
+            isFormat: /(წინა|შემდეგ)/,
+        },
+        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
+        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[დღეს] LT[-ზე]',
+            nextDay: '[ხვალ] LT[-ზე]',
+            lastDay: '[გუშინ] LT[-ზე]',
+            nextWeek: '[შემდეგ] dddd LT[-ზე]',
+            lastWeek: '[წინა] dddd LT-ზე',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: function (s) {
+                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (
+                    $0,
+                    $1,
+                    $2
+                ) {
+                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
+                });
+            },
+            past: function (s) {
+                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
+                    return s.replace(/(ი|ე)$/, 'ის წინ');
+                }
+                if (/წელი/.test(s)) {
+                    return s.replace(/წელი$/, 'წლის წინ');
+                }
+                return s;
+            },
+            s: 'რამდენიმე წამი',
+            ss: '%d წამი',
+            m: 'წუთი',
+            mm: '%d წუთი',
+            h: 'საათი',
+            hh: '%d საათი',
+            d: 'დღე',
+            dd: '%d დღე',
+            M: 'თვე',
+            MM: '%d თვე',
+            y: 'წელი',
+            yy: '%d წელი',
+        },
+        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
+        ordinal: function (number) {
+            if (number === 0) {
+                return number;
+            }
+            if (number === 1) {
+                return number + '-ლი';
+            }
+            if (
+                number < 20 ||
+                (number <= 100 && number % 20 === 0) ||
+                number % 100 === 0
+            ) {
+                return 'მე-' + number;
+            }
+            return number + '-ე';
+        },
+        week: {
+            dow: 1,
+            doy: 7,
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$1 = {
+        0: '-ші',
+        1: '-ші',
+        2: '-ші',
+        3: '-ші',
+        4: '-ші',
+        5: '-ші',
+        6: '-шы',
+        7: '-ші',
+        8: '-ші',
+        9: '-шы',
+        10: '-шы',
+        20: '-шы',
+        30: '-шы',
+        40: '-шы',
+        50: '-ші',
+        60: '-шы',
+        70: '-ші',
+        80: '-ші',
+        90: '-шы',
+        100: '-ші',
+    };
+
+    hooks.defineLocale('kk', {
+        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
+            '_'
+        ),
+        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
+        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
+            '_'
+        ),
+        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
+        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Бүгін сағат] LT',
+            nextDay: '[Ертең сағат] LT',
+            nextWeek: 'dddd [сағат] LT',
+            lastDay: '[Кеше сағат] LT',
+            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ішінде',
+            past: '%s бұрын',
+            s: 'бірнеше секунд',
+            ss: '%d секунд',
+            m: 'бір минут',
+            mm: '%d минут',
+            h: 'бір сағат',
+            hh: '%d сағат',
+            d: 'бір күн',
+            dd: '%d күн',
+            M: 'бір ай',
+            MM: '%d ай',
+            y: 'бір жыл',
+            yy: '%d жыл',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
+        ordinal: function (number) {
+            var a = number % 10,
+                b = number >= 100 ? 100 : null;
+            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$8 = {
+            '1': '១',
+            '2': '២',
+            '3': '៣',
+            '4': '៤',
+            '5': '៥',
+            '6': '៦',
+            '7': '៧',
+            '8': '៨',
+            '9': '៩',
+            '0': '០',
+        },
+        numberMap$7 = {
+            '១': '1',
+            '២': '2',
+            '៣': '3',
+            '៤': '4',
+            '៥': '5',
+            '៦': '6',
+            '៧': '7',
+            '៨': '8',
+            '៩': '9',
+            '០': '0',
+        };
+
+    hooks.defineLocale('km', {
+        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
+            '_'
+        ),
+        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
+            '_'
+        ),
+        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
+        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
+        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ព្រឹក|ល្ងាច/,
+        isPM: function (input) {
+            return input === 'ល្ងាច';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ព្រឹក';
+            } else {
+                return 'ល្ងាច';
+            }
+        },
+        calendar: {
+            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
+            nextDay: '[ស្អែក ម៉ោង] LT',
+            nextWeek: 'dddd [ម៉ោង] LT',
+            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
+            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%sទៀត',
+            past: '%sមុន',
+            s: 'ប៉ុន្មានវិនាទី',
+            ss: '%d វិនាទី',
+            m: 'មួយនាទី',
+            mm: '%d នាទី',
+            h: 'មួយម៉ោង',
+            hh: '%d ម៉ោង',
+            d: 'មួយថ្ងៃ',
+            dd: '%d ថ្ងៃ',
+            M: 'មួយខែ',
+            MM: '%d ខែ',
+            y: 'មួយឆ្នាំ',
+            yy: '%d ឆ្នាំ',
+        },
+        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
+        ordinal: 'ទី%d',
+        preparse: function (string) {
+            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
+                return numberMap$7[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$8[match];
+            });
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$9 = {
+            '1': '೧',
+            '2': '೨',
+            '3': '೩',
+            '4': '೪',
+            '5': '೫',
+            '6': '೬',
+            '7': '೭',
+            '8': '೮',
+            '9': '೯',
+            '0': '೦',
+        },
+        numberMap$8 = {
+            '೧': '1',
+            '೨': '2',
+            '೩': '3',
+            '೪': '4',
+            '೫': '5',
+            '೬': '6',
+            '೭': '7',
+            '೮': '8',
+            '೯': '9',
+            '೦': '0',
+        };
+
+    hooks.defineLocale('kn', {
+        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
+            '_'
+        ),
+        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
+            '_'
+        ),
+        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
+        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm',
+            LTS: 'A h:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm',
+        },
+        calendar: {
+            sameDay: '[ಇಂದು] LT',
+            nextDay: '[ನಾಳೆ] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[ನಿನ್ನೆ] LT',
+            lastWeek: '[ಕೊನೆಯ] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ನಂತರ',
+            past: '%s ಹಿಂದೆ',
+            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
+            ss: '%d ಸೆಕೆಂಡುಗಳು',
+            m: 'ಒಂದು ನಿಮಿಷ',
+            mm: '%d ನಿಮಿಷ',
+            h: 'ಒಂದು ಗಂಟೆ',
+            hh: '%d ಗಂಟೆ',
+            d: 'ಒಂದು ದಿನ',
+            dd: '%d ದಿನ',
+            M: 'ಒಂದು ತಿಂಗಳು',
+            MM: '%d ತಿಂಗಳು',
+            y: 'ಒಂದು ವರ್ಷ',
+            yy: '%d ವರ್ಷ',
+        },
+        preparse: function (string) {
+            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
+                return numberMap$8[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$9[match];
+            });
+        },
+        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'ರಾತ್ರಿ') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
+                return hour;
+            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'ಸಂಜೆ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ರಾತ್ರಿ';
+            } else if (hour < 10) {
+                return 'ಬೆಳಿಗ್ಗೆ';
+            } else if (hour < 17) {
+                return 'ಮಧ್ಯಾಹ್ನ';
+            } else if (hour < 20) {
+                return 'ಸಂಜೆ';
+            } else {
+                return 'ರಾತ್ರಿ';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
+        ordinal: function (number) {
+            return number + 'ನೇ';
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ko', {
+        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
+        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
+            '_'
+        ),
+        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
+        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
+        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm',
+            LTS: 'A h:mm:ss',
+            L: 'YYYY.MM.DD.',
+            LL: 'YYYY년 MMMM D일',
+            LLL: 'YYYY년 MMMM D일 A h:mm',
+            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
+            l: 'YYYY.MM.DD.',
+            ll: 'YYYY년 MMMM D일',
+            lll: 'YYYY년 MMMM D일 A h:mm',
+            llll: 'YYYY년 MMMM D일 dddd A h:mm',
+        },
+        calendar: {
+            sameDay: '오늘 LT',
+            nextDay: '내일 LT',
+            nextWeek: 'dddd LT',
+            lastDay: '어제 LT',
+            lastWeek: '지난주 dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s 후',
+            past: '%s 전',
+            s: '몇 초',
+            ss: '%d초',
+            m: '1분',
+            mm: '%d분',
+            h: '한 시간',
+            hh: '%d시간',
+            d: '하루',
+            dd: '%d일',
+            M: '한 달',
+            MM: '%d달',
+            y: '일 년',
+            yy: '%d년',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '일';
+                case 'M':
+                    return number + '월';
+                case 'w':
+                case 'W':
+                    return number + '주';
+                default:
+                    return number;
+            }
+        },
+        meridiemParse: /오전|오후/,
+        isPM: function (token) {
+            return token === '오후';
+        },
+        meridiem: function (hour, minute, isUpper) {
+            return hour < 12 ? '오전' : '오후';
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$a = {
+            '1': '١',
+            '2': '٢',
+            '3': '٣',
+            '4': '٤',
+            '5': '٥',
+            '6': '٦',
+            '7': '٧',
+            '8': '٨',
+            '9': '٩',
+            '0': '٠',
+        },
+        numberMap$9 = {
+            '١': '1',
+            '٢': '2',
+            '٣': '3',
+            '٤': '4',
+            '٥': '5',
+            '٦': '6',
+            '٧': '7',
+            '٨': '8',
+            '٩': '9',
+            '٠': '0',
+        },
+        months$8 = [
+            'کانونی دووەم',
+            'شوبات',
+            'ئازار',
+            'نیسان',
+            'ئایار',
+            'حوزەیران',
+            'تەمموز',
+            'ئاب',
+            'ئەیلوول',
+            'تشرینی یەكەم',
+            'تشرینی دووەم',
+            'كانونی یەکەم',
+        ];
+
+    hooks.defineLocale('ku', {
+        months: months$8,
+        monthsShort: months$8,
+        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
+            '_'
+        ),
+        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(
+            '_'
+        ),
+        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ئێواره‌|به‌یانی/,
+        isPM: function (input) {
+            return /ئێواره‌/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'به‌یانی';
+            } else {
+                return 'ئێواره‌';
+            }
+        },
+        calendar: {
+            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
+            nextDay: '[به‌یانی كاتژمێر] LT',
+            nextWeek: 'dddd [كاتژمێر] LT',
+            lastDay: '[دوێنێ كاتژمێر] LT',
+            lastWeek: 'dddd [كاتژمێر] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'له‌ %s',
+            past: '%s',
+            s: 'چه‌ند چركه‌یه‌ك',
+            ss: 'چركه‌ %d',
+            m: 'یه‌ك خوله‌ك',
+            mm: '%d خوله‌ك',
+            h: 'یه‌ك كاتژمێر',
+            hh: '%d كاتژمێر',
+            d: 'یه‌ك ڕۆژ',
+            dd: '%d ڕۆژ',
+            M: 'یه‌ك مانگ',
+            MM: '%d مانگ',
+            y: 'یه‌ك ساڵ',
+            yy: '%d ساڵ',
+        },
+        preparse: function (string) {
+            return string
+                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
+                    return numberMap$9[match];
+                })
+                .replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string
+                .replace(/\d/g, function (match) {
+                    return symbolMap$a[match];
+                })
+                .replace(/,/g, '،');
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$2 = {
+        0: '-чү',
+        1: '-чи',
+        2: '-чи',
+        3: '-чү',
+        4: '-чү',
+        5: '-чи',
+        6: '-чы',
+        7: '-чи',
+        8: '-чи',
+        9: '-чу',
+        10: '-чу',
+        20: '-чы',
+        30: '-чу',
+        40: '-чы',
+        50: '-чү',
+        60: '-чы',
+        70: '-чи',
+        80: '-чи',
+        90: '-чу',
+        100: '-чү',
+    };
+
+    hooks.defineLocale('ky', {
+        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
+            '_'
+        ),
+        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
+            '_'
+        ),
+        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
+            '_'
+        ),
+        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
+        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Бүгүн саат] LT',
+            nextDay: '[Эртең саат] LT',
+            nextWeek: 'dddd [саат] LT',
+            lastDay: '[Кечээ саат] LT',
+            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ичинде',
+            past: '%s мурун',
+            s: 'бирнече секунд',
+            ss: '%d секунд',
+            m: 'бир мүнөт',
+            mm: '%d мүнөт',
+            h: 'бир саат',
+            hh: '%d саат',
+            d: 'бир күн',
+            dd: '%d күн',
+            M: 'бир ай',
+            MM: '%d ай',
+            y: 'бир жыл',
+            yy: '%d жыл',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
+        ordinal: function (number) {
+            var a = number % 10,
+                b = number >= 100 ? 100 : null;
+            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
+        var format = {
+            m: ['eng Minutt', 'enger Minutt'],
+            h: ['eng Stonn', 'enger Stonn'],
+            d: ['een Dag', 'engem Dag'],
+            M: ['ee Mount', 'engem Mount'],
+            y: ['ee Joer', 'engem Joer'],
+        };
+        return withoutSuffix ? format[key][0] : format[key][1];
+    }
+    function processFutureTime(string) {
+        var number = string.substr(0, string.indexOf(' '));
+        if (eifelerRegelAppliesToNumber(number)) {
+            return 'a ' + string;
+        }
+        return 'an ' + string;
+    }
+    function processPastTime(string) {
+        var number = string.substr(0, string.indexOf(' '));
+        if (eifelerRegelAppliesToNumber(number)) {
+            return 'viru ' + string;
+        }
+        return 'virun ' + string;
+    }
+    /**
+     * Returns true if the word before the given number loses the '-n' ending.
+     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
+     *
+     * @param number {integer}
+     * @returns {boolean}
+     */
+    function eifelerRegelAppliesToNumber(number) {
+        number = parseInt(number, 10);
+        if (isNaN(number)) {
+            return false;
+        }
+        if (number < 0) {
+            // Negative Number --> always true
+            return true;
+        } else if (number < 10) {
+            // Only 1 digit
+            if (4 <= number && number <= 7) {
+                return true;
+            }
+            return false;
+        } else if (number < 100) {
+            // 2 digits
+            var lastDigit = number % 10,
+                firstDigit = number / 10;
+            if (lastDigit === 0) {
+                return eifelerRegelAppliesToNumber(firstDigit);
+            }
+            return eifelerRegelAppliesToNumber(lastDigit);
+        } else if (number < 10000) {
+            // 3 or 4 digits --> recursively check first digit
+            while (number >= 10) {
+                number = number / 10;
+            }
+            return eifelerRegelAppliesToNumber(number);
+        } else {
+            // Anything larger than 4 digits: recursively check first n-3 digits
+            number = number / 1000;
+            return eifelerRegelAppliesToNumber(number);
+        }
+    }
+
+    hooks.defineLocale('lb', {
+        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
+            '_'
+        ),
+        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
+        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm [Auer]',
+            LTS: 'H:mm:ss [Auer]',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm [Auer]',
+            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
+        },
+        calendar: {
+            sameDay: '[Haut um] LT',
+            sameElse: 'L',
+            nextDay: '[Muer um] LT',
+            nextWeek: 'dddd [um] LT',
+            lastDay: '[Gëschter um] LT',
+            lastWeek: function () {
+                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
+                switch (this.day()) {
+                    case 2:
+                    case 4:
+                        return '[Leschten] dddd [um] LT';
+                    default:
+                        return '[Leschte] dddd [um] LT';
+                }
+            },
+        },
+        relativeTime: {
+            future: processFutureTime,
+            past: processPastTime,
+            s: 'e puer Sekonnen',
+            ss: '%d Sekonnen',
+            m: processRelativeTime$6,
+            mm: '%d Minutten',
+            h: processRelativeTime$6,
+            hh: '%d Stonnen',
+            d: processRelativeTime$6,
+            dd: '%d Deeg',
+            M: processRelativeTime$6,
+            MM: '%d Méint',
+            y: processRelativeTime$6,
+            yy: '%d Joer',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('lo', {
+        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
+            '_'
+        ),
+        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
+            '_'
+        ),
+        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
+        isPM: function (input) {
+            return input === 'ຕອນແລງ';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ຕອນເຊົ້າ';
+            } else {
+                return 'ຕອນແລງ';
+            }
+        },
+        calendar: {
+            sameDay: '[ມື້ນີ້ເວລາ] LT',
+            nextDay: '[ມື້ອື່ນເວລາ] LT',
+            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
+            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
+            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ອີກ %s',
+            past: '%sຜ່ານມາ',
+            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
+            ss: '%d ວິນາທີ',
+            m: '1 ນາທີ',
+            mm: '%d ນາທີ',
+            h: '1 ຊົ່ວໂມງ',
+            hh: '%d ຊົ່ວໂມງ',
+            d: '1 ມື້',
+            dd: '%d ມື້',
+            M: '1 ເດືອນ',
+            MM: '%d ເດືອນ',
+            y: '1 ປີ',
+            yy: '%d ປີ',
+        },
+        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
+        ordinal: function (number) {
+            return 'ທີ່' + number;
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var units = {
+        ss: 'sekundė_sekundžių_sekundes',
+        m: 'minutė_minutės_minutę',
+        mm: 'minutės_minučių_minutes',
+        h: 'valanda_valandos_valandą',
+        hh: 'valandos_valandų_valandas',
+        d: 'diena_dienos_dieną',
+        dd: 'dienos_dienų_dienas',
+        M: 'mėnuo_mėnesio_mėnesį',
+        MM: 'mėnesiai_mėnesių_mėnesius',
+        y: 'metai_metų_metus',
+        yy: 'metai_metų_metus',
+    };
+    function translateSeconds(number, withoutSuffix, key, isFuture) {
+        if (withoutSuffix) {
+            return 'kelios sekundės';
+        } else {
+            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
+        }
+    }
+    function translateSingular(number, withoutSuffix, key, isFuture) {
+        return withoutSuffix
+            ? forms(key)[0]
+            : isFuture
+            ? forms(key)[1]
+            : forms(key)[2];
+    }
+    function special(number) {
+        return number % 10 === 0 || (number > 10 && number < 20);
+    }
+    function forms(key) {
+        return units[key].split('_');
+    }
+    function translate$6(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        if (number === 1) {
+            return (
+                result + translateSingular(number, withoutSuffix, key[0], isFuture)
+            );
+        } else if (withoutSuffix) {
+            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
+        } else {
+            if (isFuture) {
+                return result + forms(key)[1];
+            } else {
+                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
+            }
+        }
+    }
+    hooks.defineLocale('lt', {
+        months: {
+            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
+                '_'
+            ),
+            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
+                '_'
+            ),
+            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
+        },
+        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
+        weekdays: {
+            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
+                '_'
+            ),
+            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
+                '_'
+            ),
+            isFormat: /dddd HH:mm/,
+        },
+        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
+        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'YYYY [m.] MMMM D [d.]',
+            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
+            l: 'YYYY-MM-DD',
+            ll: 'YYYY [m.] MMMM D [d.]',
+            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
+        },
+        calendar: {
+            sameDay: '[Šiandien] LT',
+            nextDay: '[Rytoj] LT',
+            nextWeek: 'dddd LT',
+            lastDay: '[Vakar] LT',
+            lastWeek: '[Praėjusį] dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'po %s',
+            past: 'prieš %s',
+            s: translateSeconds,
+            ss: translate$6,
+            m: translateSingular,
+            mm: translate$6,
+            h: translateSingular,
+            hh: translate$6,
+            d: translateSingular,
+            dd: translate$6,
+            M: translateSingular,
+            MM: translate$6,
+            y: translateSingular,
+            yy: translate$6,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
+        ordinal: function (number) {
+            return number + '-oji';
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var units$1 = {
+        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
+        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
+        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
+        h: 'stundas_stundām_stunda_stundas'.split('_'),
+        hh: 'stundas_stundām_stunda_stundas'.split('_'),
+        d: 'dienas_dienām_diena_dienas'.split('_'),
+        dd: 'dienas_dienām_diena_dienas'.split('_'),
+        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
+        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
+        y: 'gada_gadiem_gads_gadi'.split('_'),
+        yy: 'gada_gadiem_gads_gadi'.split('_'),
+    };
+    /**
+     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
+     */
+    function format$1(forms, number, withoutSuffix) {
+        if (withoutSuffix) {
+            // E.g. "21 minūte", "3 minūtes".
+            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
+        } else {
+            // E.g. "21 minūtes" as in "pēc 21 minūtes".
+            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
+            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
+        }
+    }
+    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
+        return number + ' ' + format$1(units$1[key], number, withoutSuffix);
+    }
+    function relativeTimeWithSingular(number, withoutSuffix, key) {
+        return format$1(units$1[key], number, withoutSuffix);
+    }
+    function relativeSeconds(number, withoutSuffix) {
+        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
+    }
+
+    hooks.defineLocale('lv', {
+        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
+        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
+            '_'
+        ),
+        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
+        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY.',
+            LL: 'YYYY. [gada] D. MMMM',
+            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
+            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
+        },
+        calendar: {
+            sameDay: '[Šodien pulksten] LT',
+            nextDay: '[Rīt pulksten] LT',
+            nextWeek: 'dddd [pulksten] LT',
+            lastDay: '[Vakar pulksten] LT',
+            lastWeek: '[Pagājušā] dddd [pulksten] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'pēc %s',
+            past: 'pirms %s',
+            s: relativeSeconds,
+            ss: relativeTimeWithPlural$1,
+            m: relativeTimeWithSingular,
+            mm: relativeTimeWithPlural$1,
+            h: relativeTimeWithSingular,
+            hh: relativeTimeWithPlural$1,
+            d: relativeTimeWithSingular,
+            dd: relativeTimeWithPlural$1,
+            M: relativeTimeWithSingular,
+            MM: relativeTimeWithPlural$1,
+            y: relativeTimeWithSingular,
+            yy: relativeTimeWithPlural$1,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var translator = {
+        words: {
+            //Different grammatical cases
+            ss: ['sekund', 'sekunda', 'sekundi'],
+            m: ['jedan minut', 'jednog minuta'],
+            mm: ['minut', 'minuta', 'minuta'],
+            h: ['jedan sat', 'jednog sata'],
+            hh: ['sat', 'sata', 'sati'],
+            dd: ['dan', 'dana', 'dana'],
+            MM: ['mjesec', 'mjeseca', 'mjeseci'],
+            yy: ['godina', 'godine', 'godina'],
+        },
+        correctGrammaticalCase: function (number, wordKey) {
+            return number === 1
+                ? wordKey[0]
+                : number >= 2 && number <= 4
+                ? wordKey[1]
+                : wordKey[2];
+        },
+        translate: function (number, withoutSuffix, key) {
+            var wordKey = translator.words[key];
+            if (key.length === 1) {
+                return withoutSuffix ? wordKey[0] : wordKey[1];
+            } else {
+                return (
+                    number +
+                    ' ' +
+                    translator.correctGrammaticalCase(number, wordKey)
+                );
+            }
+        },
+    };
+
+    hooks.defineLocale('me', {
+        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danas u] LT',
+            nextDay: '[sjutra u] LT',
+
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[u] [nedjelju] [u] LT';
+                    case 3:
+                        return '[u] [srijedu] [u] LT';
+                    case 6:
+                        return '[u] [subotu] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[u] dddd [u] LT';
+                }
+            },
+            lastDay: '[juče u] LT',
+            lastWeek: function () {
+                var lastWeekDays = [
+                    '[prošle] [nedjelje] [u] LT',
+                    '[prošlog] [ponedjeljka] [u] LT',
+                    '[prošlog] [utorka] [u] LT',
+                    '[prošle] [srijede] [u] LT',
+                    '[prošlog] [četvrtka] [u] LT',
+                    '[prošlog] [petka] [u] LT',
+                    '[prošle] [subote] [u] LT',
+                ];
+                return lastWeekDays[this.day()];
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'prije %s',
+            s: 'nekoliko sekundi',
+            ss: translator.translate,
+            m: translator.translate,
+            mm: translator.translate,
+            h: translator.translate,
+            hh: translator.translate,
+            d: 'dan',
+            dd: translator.translate,
+            M: 'mjesec',
+            MM: translator.translate,
+            y: 'godinu',
+            yy: translator.translate,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('mi', {
+        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
+            '_'
+        ),
+        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
+            '_'
+        ),
+        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
+        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
+        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
+        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
+        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
+        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
+        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [i] HH:mm',
+            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
+        },
+        calendar: {
+            sameDay: '[i teie mahana, i] LT',
+            nextDay: '[apopo i] LT',
+            nextWeek: 'dddd [i] LT',
+            lastDay: '[inanahi i] LT',
+            lastWeek: 'dddd [whakamutunga i] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'i roto i %s',
+            past: '%s i mua',
+            s: 'te hēkona ruarua',
+            ss: '%d hēkona',
+            m: 'he meneti',
+            mm: '%d meneti',
+            h: 'te haora',
+            hh: '%d haora',
+            d: 'he ra',
+            dd: '%d ra',
+            M: 'he marama',
+            MM: '%d marama',
+            y: 'he tau',
+            yy: '%d tau',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('mk', {
+        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
+            '_'
+        ),
+        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
+        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
+            '_'
+        ),
+        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
+        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'D.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY H:mm',
+            LLLL: 'dddd, D MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[Денес во] LT',
+            nextDay: '[Утре во] LT',
+            nextWeek: '[Во] dddd [во] LT',
+            lastDay: '[Вчера во] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                    case 6:
+                        return '[Изминатата] dddd [во] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[Изминатиот] dddd [во] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'за %s',
+            past: 'пред %s',
+            s: 'неколку секунди',
+            ss: '%d секунди',
+            m: 'една минута',
+            mm: '%d минути',
+            h: 'еден час',
+            hh: '%d часа',
+            d: 'еден ден',
+            dd: '%d дена',
+            M: 'еден месец',
+            MM: '%d месеци',
+            y: 'една година',
+            yy: '%d години',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
+        ordinal: function (number) {
+            var lastDigit = number % 10,
+                last2Digits = number % 100;
+            if (number === 0) {
+                return number + '-ев';
+            } else if (last2Digits === 0) {
+                return number + '-ен';
+            } else if (last2Digits > 10 && last2Digits < 20) {
+                return number + '-ти';
+            } else if (lastDigit === 1) {
+                return number + '-ви';
+            } else if (lastDigit === 2) {
+                return number + '-ри';
+            } else if (lastDigit === 7 || lastDigit === 8) {
+                return number + '-ми';
+            } else {
+                return number + '-ти';
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ml', {
+        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
+            '_'
+        ),
+        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
+            '_'
+        ),
+        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
+        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm -നു',
+            LTS: 'A h:mm:ss -നു',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm -നു',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
+        },
+        calendar: {
+            sameDay: '[ഇന്ന്] LT',
+            nextDay: '[നാളെ] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[ഇന്നലെ] LT',
+            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s കഴിഞ്ഞ്',
+            past: '%s മുൻപ്',
+            s: 'അൽപ നിമിഷങ്ങൾ',
+            ss: '%d സെക്കൻഡ്',
+            m: 'ഒരു മിനിറ്റ്',
+            mm: '%d മിനിറ്റ്',
+            h: 'ഒരു മണിക്കൂർ',
+            hh: '%d മണിക്കൂർ',
+            d: 'ഒരു ദിവസം',
+            dd: '%d ദിവസം',
+            M: 'ഒരു മാസം',
+            MM: '%d മാസം',
+            y: 'ഒരു വർഷം',
+            yy: '%d വർഷം',
+        },
+        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (
+                (meridiem === 'രാത്രി' && hour >= 4) ||
+                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
+                meridiem === 'വൈകുന്നേരം'
+            ) {
+                return hour + 12;
+            } else {
+                return hour;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'രാത്രി';
+            } else if (hour < 12) {
+                return 'രാവിലെ';
+            } else if (hour < 17) {
+                return 'ഉച്ച കഴിഞ്ഞ്';
+            } else if (hour < 20) {
+                return 'വൈകുന്നേരം';
+            } else {
+                return 'രാത്രി';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function translate$7(number, withoutSuffix, key, isFuture) {
+        switch (key) {
+            case 's':
+                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
+            case 'ss':
+                return number + (withoutSuffix ? ' секунд' : ' секундын');
+            case 'm':
+            case 'mm':
+                return number + (withoutSuffix ? ' минут' : ' минутын');
+            case 'h':
+            case 'hh':
+                return number + (withoutSuffix ? ' цаг' : ' цагийн');
+            case 'd':
+            case 'dd':
+                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
+            case 'M':
+            case 'MM':
+                return number + (withoutSuffix ? ' сар' : ' сарын');
+            case 'y':
+            case 'yy':
+                return number + (withoutSuffix ? ' жил' : ' жилийн');
+            default:
+                return number;
+        }
+    }
+
+    hooks.defineLocale('mn', {
+        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
+            '_'
+        ),
+        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
+        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
+        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'YYYY оны MMMMын D',
+            LLL: 'YYYY оны MMMMын D HH:mm',
+            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
+        },
+        meridiemParse: /ҮӨ|ҮХ/i,
+        isPM: function (input) {
+            return input === 'ҮХ';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ҮӨ';
+            } else {
+                return 'ҮХ';
+            }
+        },
+        calendar: {
+            sameDay: '[Өнөөдөр] LT',
+            nextDay: '[Маргааш] LT',
+            nextWeek: '[Ирэх] dddd LT',
+            lastDay: '[Өчигдөр] LT',
+            lastWeek: '[Өнгөрсөн] dddd LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s дараа',
+            past: '%s өмнө',
+            s: translate$7,
+            ss: translate$7,
+            m: translate$7,
+            mm: translate$7,
+            h: translate$7,
+            hh: translate$7,
+            d: translate$7,
+            dd: translate$7,
+            M: translate$7,
+            MM: translate$7,
+            y: translate$7,
+            yy: translate$7,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + ' өдөр';
+                default:
+                    return number;
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$b = {
+            '1': '१',
+            '2': '२',
+            '3': '३',
+            '4': '४',
+            '5': '५',
+            '6': '६',
+            '7': '७',
+            '8': '८',
+            '9': '९',
+            '0': '०',
+        },
+        numberMap$a = {
+            '१': '1',
+            '२': '2',
+            '३': '3',
+            '४': '4',
+            '५': '5',
+            '६': '6',
+            '७': '7',
+            '८': '8',
+            '९': '9',
+            '०': '0',
+        };
+
+    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
+        var output = '';
+        if (withoutSuffix) {
+            switch (string) {
+                case 's':
+                    output = 'काही सेकंद';
+                    break;
+                case 'ss':
+                    output = '%d सेकंद';
+                    break;
+                case 'm':
+                    output = 'एक मिनिट';
+                    break;
+                case 'mm':
+                    output = '%d मिनिटे';
+                    break;
+                case 'h':
+                    output = 'एक तास';
+                    break;
+                case 'hh':
+                    output = '%d तास';
+                    break;
+                case 'd':
+                    output = 'एक दिवस';
+                    break;
+                case 'dd':
+                    output = '%d दिवस';
+                    break;
+                case 'M':
+                    output = 'एक महिना';
+                    break;
+                case 'MM':
+                    output = '%d महिने';
+                    break;
+                case 'y':
+                    output = 'एक वर्ष';
+                    break;
+                case 'yy':
+                    output = '%d वर्षे';
+                    break;
+            }
+        } else {
+            switch (string) {
+                case 's':
+                    output = 'काही सेकंदां';
+                    break;
+                case 'ss':
+                    output = '%d सेकंदां';
+                    break;
+                case 'm':
+                    output = 'एका मिनिटा';
+                    break;
+                case 'mm':
+                    output = '%d मिनिटां';
+                    break;
+                case 'h':
+                    output = 'एका तासा';
+                    break;
+                case 'hh':
+                    output = '%d तासां';
+                    break;
+                case 'd':
+                    output = 'एका दिवसा';
+                    break;
+                case 'dd':
+                    output = '%d दिवसां';
+                    break;
+                case 'M':
+                    output = 'एका महिन्या';
+                    break;
+                case 'MM':
+                    output = '%d महिन्यां';
+                    break;
+                case 'y':
+                    output = 'एका वर्षा';
+                    break;
+                case 'yy':
+                    output = '%d वर्षां';
+                    break;
+            }
+        }
+        return output.replace(/%d/i, number);
+    }
+
+    hooks.defineLocale('mr', {
+        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
+            '_'
+        ),
+        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
+        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
+        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm वाजता',
+            LTS: 'A h:mm:ss वाजता',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm वाजता',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
+        },
+        calendar: {
+            sameDay: '[आज] LT',
+            nextDay: '[उद्या] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[काल] LT',
+            lastWeek: '[मागील] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%sमध्ये',
+            past: '%sपूर्वी',
+            s: relativeTimeMr,
+            ss: relativeTimeMr,
+            m: relativeTimeMr,
+            mm: relativeTimeMr,
+            h: relativeTimeMr,
+            hh: relativeTimeMr,
+            d: relativeTimeMr,
+            dd: relativeTimeMr,
+            M: relativeTimeMr,
+            MM: relativeTimeMr,
+            y: relativeTimeMr,
+            yy: relativeTimeMr,
+        },
+        preparse: function (string) {
+            return string.replace(/[१२३४५६७८९०]/g, function (match) {
+                return numberMap$a[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$b[match];
+            });
+        },
+        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
+                return hour;
+            } else if (
+                meridiem === 'दुपारी' ||
+                meridiem === 'सायंकाळी' ||
+                meridiem === 'रात्री'
+            ) {
+                return hour >= 12 ? hour : hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour >= 0 && hour < 6) {
+                return 'पहाटे';
+            } else if (hour < 12) {
+                return 'सकाळी';
+            } else if (hour < 17) {
+                return 'दुपारी';
+            } else if (hour < 20) {
+                return 'सायंकाळी';
+            } else {
+                return 'रात्री';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ms-my', {
+        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
+        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
+        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
+        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [pukul] HH.mm',
+            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
+        },
+        meridiemParse: /pagi|tengahari|petang|malam/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'pagi') {
+                return hour;
+            } else if (meridiem === 'tengahari') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'petang' || meridiem === 'malam') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'pagi';
+            } else if (hours < 15) {
+                return 'tengahari';
+            } else if (hours < 19) {
+                return 'petang';
+            } else {
+                return 'malam';
+            }
+        },
+        calendar: {
+            sameDay: '[Hari ini pukul] LT',
+            nextDay: '[Esok pukul] LT',
+            nextWeek: 'dddd [pukul] LT',
+            lastDay: '[Kelmarin pukul] LT',
+            lastWeek: 'dddd [lepas pukul] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dalam %s',
+            past: '%s yang lepas',
+            s: 'beberapa saat',
+            ss: '%d saat',
+            m: 'seminit',
+            mm: '%d minit',
+            h: 'sejam',
+            hh: '%d jam',
+            d: 'sehari',
+            dd: '%d hari',
+            M: 'sebulan',
+            MM: '%d bulan',
+            y: 'setahun',
+            yy: '%d tahun',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ms', {
+        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
+        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
+        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
+        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [pukul] HH.mm',
+            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
+        },
+        meridiemParse: /pagi|tengahari|petang|malam/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'pagi') {
+                return hour;
+            } else if (meridiem === 'tengahari') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'petang' || meridiem === 'malam') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'pagi';
+            } else if (hours < 15) {
+                return 'tengahari';
+            } else if (hours < 19) {
+                return 'petang';
+            } else {
+                return 'malam';
+            }
+        },
+        calendar: {
+            sameDay: '[Hari ini pukul] LT',
+            nextDay: '[Esok pukul] LT',
+            nextWeek: 'dddd [pukul] LT',
+            lastDay: '[Kelmarin pukul] LT',
+            lastWeek: 'dddd [lepas pukul] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dalam %s',
+            past: '%s yang lepas',
+            s: 'beberapa saat',
+            ss: '%d saat',
+            m: 'seminit',
+            mm: '%d minit',
+            h: 'sejam',
+            hh: '%d jam',
+            d: 'sehari',
+            dd: '%d hari',
+            M: 'sebulan',
+            MM: '%d bulan',
+            y: 'setahun',
+            yy: '%d tahun',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('mt', {
+        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
+        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
+            '_'
+        ),
+        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
+        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Illum fil-]LT',
+            nextDay: '[Għada fil-]LT',
+            nextWeek: 'dddd [fil-]LT',
+            lastDay: '[Il-bieraħ fil-]LT',
+            lastWeek: 'dddd [li għadda] [fil-]LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'f’ %s',
+            past: '%s ilu',
+            s: 'ftit sekondi',
+            ss: '%d sekondi',
+            m: 'minuta',
+            mm: '%d minuti',
+            h: 'siegħa',
+            hh: '%d siegħat',
+            d: 'ġurnata',
+            dd: '%d ġranet',
+            M: 'xahar',
+            MM: '%d xhur',
+            y: 'sena',
+            yy: '%d sni',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$c = {
+            '1': '၁',
+            '2': '၂',
+            '3': '၃',
+            '4': '၄',
+            '5': '၅',
+            '6': '၆',
+            '7': '၇',
+            '8': '၈',
+            '9': '၉',
+            '0': '၀',
+        },
+        numberMap$b = {
+            '၁': '1',
+            '၂': '2',
+            '၃': '3',
+            '၄': '4',
+            '၅': '5',
+            '၆': '6',
+            '၇': '7',
+            '၈': '8',
+            '၉': '9',
+            '၀': '0',
+        };
+
+    hooks.defineLocale('my', {
+        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
+            '_'
+        ),
+        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
+        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
+            '_'
+        ),
+        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
+
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[ယနေ.] LT [မှာ]',
+            nextDay: '[မနက်ဖြန်] LT [မှာ]',
+            nextWeek: 'dddd LT [မှာ]',
+            lastDay: '[မနေ.က] LT [မှာ]',
+            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'လာမည့် %s မှာ',
+            past: 'လွန်ခဲ့သော %s က',
+            s: 'စက္ကန်.အနည်းငယ်',
+            ss: '%d စက္ကန့်',
+            m: 'တစ်မိနစ်',
+            mm: '%d မိနစ်',
+            h: 'တစ်နာရီ',
+            hh: '%d နာရီ',
+            d: 'တစ်ရက်',
+            dd: '%d ရက်',
+            M: 'တစ်လ',
+            MM: '%d လ',
+            y: 'တစ်နှစ်',
+            yy: '%d နှစ်',
+        },
+        preparse: function (string) {
+            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
+                return numberMap$b[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$c[match];
+            });
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('nb', {
+        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
+        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
+        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY [kl.] HH:mm',
+            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
+        },
+        calendar: {
+            sameDay: '[i dag kl.] LT',
+            nextDay: '[i morgen kl.] LT',
+            nextWeek: 'dddd [kl.] LT',
+            lastDay: '[i går kl.] LT',
+            lastWeek: '[forrige] dddd [kl.] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'om %s',
+            past: '%s siden',
+            s: 'noen sekunder',
+            ss: '%d sekunder',
+            m: 'ett minutt',
+            mm: '%d minutter',
+            h: 'en time',
+            hh: '%d timer',
+            d: 'en dag',
+            dd: '%d dager',
+            M: 'en måned',
+            MM: '%d måneder',
+            y: 'ett år',
+            yy: '%d år',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$d = {
+            '1': '१',
+            '2': '२',
+            '3': '३',
+            '4': '४',
+            '5': '५',
+            '6': '६',
+            '7': '७',
+            '8': '८',
+            '9': '९',
+            '0': '०',
+        },
+        numberMap$c = {
+            '१': '1',
+            '२': '2',
+            '३': '3',
+            '४': '4',
+            '५': '5',
+            '६': '6',
+            '७': '7',
+            '८': '8',
+            '९': '9',
+            '०': '0',
+        };
+
+    hooks.defineLocale('ne', {
+        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
+            '_'
+        ),
+        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
+            '_'
+        ),
+        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
+        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'Aको h:mm बजे',
+            LTS: 'Aको h:mm:ss बजे',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, Aको h:mm बजे',
+            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
+        },
+        preparse: function (string) {
+            return string.replace(/[१२३४५६७८९०]/g, function (match) {
+                return numberMap$c[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$d[match];
+            });
+        },
+        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'राति') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'बिहान') {
+                return hour;
+            } else if (meridiem === 'दिउँसो') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'साँझ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 3) {
+                return 'राति';
+            } else if (hour < 12) {
+                return 'बिहान';
+            } else if (hour < 16) {
+                return 'दिउँसो';
+            } else if (hour < 20) {
+                return 'साँझ';
+            } else {
+                return 'राति';
+            }
+        },
+        calendar: {
+            sameDay: '[आज] LT',
+            nextDay: '[भोलि] LT',
+            nextWeek: '[आउँदो] dddd[,] LT',
+            lastDay: '[हिजो] LT',
+            lastWeek: '[गएको] dddd[,] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%sमा',
+            past: '%s अगाडि',
+            s: 'केही क्षण',
+            ss: '%d सेकेण्ड',
+            m: 'एक मिनेट',
+            mm: '%d मिनेट',
+            h: 'एक घण्टा',
+            hh: '%d घण्टा',
+            d: 'एक दिन',
+            dd: '%d दिन',
+            M: 'एक महिना',
+            MM: '%d महिना',
+            y: 'एक बर्ष',
+            yy: '%d बर्ष',
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
+            '_'
+        ),
+        monthsParse$6 = [
+            /^jan/i,
+            /^feb/i,
+            /^maart|mrt.?$/i,
+            /^apr/i,
+            /^mei$/i,
+            /^jun[i.]?$/i,
+            /^jul[i.]?$/i,
+            /^aug/i,
+            /^sep/i,
+            /^okt/i,
+            /^nov/i,
+            /^dec/i,
+        ],
+        monthsRegex$7 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
+
+    hooks.defineLocale('nl-be', {
+        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortWithDots$1;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShortWithoutDots$1[m.month()];
+            } else {
+                return monthsShortWithDots$1[m.month()];
+            }
+        },
+
+        monthsRegex: monthsRegex$7,
+        monthsShortRegex: monthsRegex$7,
+        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
+        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
+
+        monthsParse: monthsParse$6,
+        longMonthsParse: monthsParse$6,
+        shortMonthsParse: monthsParse$6,
+
+        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
+            '_'
+        ),
+        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
+        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[vandaag om] LT',
+            nextDay: '[morgen om] LT',
+            nextWeek: 'dddd [om] LT',
+            lastDay: '[gisteren om] LT',
+            lastWeek: '[afgelopen] dddd [om] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'over %s',
+            past: '%s geleden',
+            s: 'een paar seconden',
+            ss: '%d seconden',
+            m: 'één minuut',
+            mm: '%d minuten',
+            h: 'één uur',
+            hh: '%d uur',
+            d: 'één dag',
+            dd: '%d dagen',
+            M: 'één maand',
+            MM: '%d maanden',
+            y: 'één jaar',
+            yy: '%d jaar',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
+        ordinal: function (number) {
+            return (
+                number +
+                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
+            );
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
+            '_'
+        ),
+        monthsParse$7 = [
+            /^jan/i,
+            /^feb/i,
+            /^maart|mrt.?$/i,
+            /^apr/i,
+            /^mei$/i,
+            /^jun[i.]?$/i,
+            /^jul[i.]?$/i,
+            /^aug/i,
+            /^sep/i,
+            /^okt/i,
+            /^nov/i,
+            /^dec/i,
+        ],
+        monthsRegex$8 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
+
+    hooks.defineLocale('nl', {
+        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: function (m, format) {
+            if (!m) {
+                return monthsShortWithDots$2;
+            } else if (/-MMM-/.test(format)) {
+                return monthsShortWithoutDots$2[m.month()];
+            } else {
+                return monthsShortWithDots$2[m.month()];
+            }
+        },
+
+        monthsRegex: monthsRegex$8,
+        monthsShortRegex: monthsRegex$8,
+        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
+        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
+
+        monthsParse: monthsParse$7,
+        longMonthsParse: monthsParse$7,
+        shortMonthsParse: monthsParse$7,
+
+        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
+            '_'
+        ),
+        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
+        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD-MM-YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[vandaag om] LT',
+            nextDay: '[morgen om] LT',
+            nextWeek: 'dddd [om] LT',
+            lastDay: '[gisteren om] LT',
+            lastWeek: '[afgelopen] dddd [om] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'over %s',
+            past: '%s geleden',
+            s: 'een paar seconden',
+            ss: '%d seconden',
+            m: 'één minuut',
+            mm: '%d minuten',
+            h: 'één uur',
+            hh: '%d uur',
+            d: 'één dag',
+            dd: '%d dagen',
+            M: 'één maand',
+            MM: '%d maanden',
+            y: 'één jaar',
+            yy: '%d jaar',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
+        ordinal: function (number) {
+            return (
+                number +
+                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
+            );
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('nn', {
+        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
+        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
+        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY [kl.] H:mm',
+            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
+        },
+        calendar: {
+            sameDay: '[I dag klokka] LT',
+            nextDay: '[I morgon klokka] LT',
+            nextWeek: 'dddd [klokka] LT',
+            lastDay: '[I går klokka] LT',
+            lastWeek: '[Føregåande] dddd [klokka] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'om %s',
+            past: '%s sidan',
+            s: 'nokre sekund',
+            ss: '%d sekund',
+            m: 'eit minutt',
+            mm: '%d minutt',
+            h: 'ein time',
+            hh: '%d timar',
+            d: 'ein dag',
+            dd: '%d dagar',
+            M: 'ein månad',
+            MM: '%d månader',
+            y: 'eit år',
+            yy: '%d år',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('oc-lnc', {
+        months: {
+            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
+                '_'
+            ),
+            format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
+                '_'
+            ),
+            isFormat: /D[oD]?(\s)+MMMM/,
+        },
+        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
+            '_'
+        ),
+        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
+        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM [de] YYYY',
+            ll: 'D MMM YYYY',
+            LLL: 'D MMMM [de] YYYY [a] H:mm',
+            lll: 'D MMM YYYY, H:mm',
+            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
+            llll: 'ddd D MMM YYYY, H:mm',
+        },
+        calendar: {
+            sameDay: '[uèi a] LT',
+            nextDay: '[deman a] LT',
+            nextWeek: 'dddd [a] LT',
+            lastDay: '[ièr a] LT',
+            lastWeek: 'dddd [passat a] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: "d'aquí %s",
+            past: 'fa %s',
+            s: 'unas segondas',
+            ss: '%d segondas',
+            m: 'una minuta',
+            mm: '%d minutas',
+            h: 'una ora',
+            hh: '%d oras',
+            d: 'un jorn',
+            dd: '%d jorns',
+            M: 'un mes',
+            MM: '%d meses',
+            y: 'un an',
+            yy: '%d ans',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
+        ordinal: function (number, period) {
+            var output =
+                number === 1
+                    ? 'r'
+                    : number === 2
+                    ? 'n'
+                    : number === 3
+                    ? 'r'
+                    : number === 4
+                    ? 't'
+                    : 'è';
+            if (period === 'w' || period === 'W') {
+                output = 'a';
+            }
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4,
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$e = {
+            '1': '੧',
+            '2': '੨',
+            '3': '੩',
+            '4': '੪',
+            '5': '੫',
+            '6': '੬',
+            '7': '੭',
+            '8': '੮',
+            '9': '੯',
+            '0': '੦',
+        },
+        numberMap$d = {
+            '੧': '1',
+            '੨': '2',
+            '੩': '3',
+            '੪': '4',
+            '੫': '5',
+            '੬': '6',
+            '੭': '7',
+            '੮': '8',
+            '੯': '9',
+            '੦': '0',
+        };
+
+    hooks.defineLocale('pa-in', {
+        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
+        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
+            '_'
+        ),
+        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
+            '_'
+        ),
+        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
+            '_'
+        ),
+        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
+        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm ਵਜੇ',
+            LTS: 'A h:mm:ss ਵਜੇ',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
+        },
+        calendar: {
+            sameDay: '[ਅਜ] LT',
+            nextDay: '[ਕਲ] LT',
+            nextWeek: '[ਅਗਲਾ] dddd, LT',
+            lastDay: '[ਕਲ] LT',
+            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s ਵਿੱਚ',
+            past: '%s ਪਿਛਲੇ',
+            s: 'ਕੁਝ ਸਕਿੰਟ',
+            ss: '%d ਸਕਿੰਟ',
+            m: 'ਇਕ ਮਿੰਟ',
+            mm: '%d ਮਿੰਟ',
+            h: 'ਇੱਕ ਘੰਟਾ',
+            hh: '%d ਘੰਟੇ',
+            d: 'ਇੱਕ ਦਿਨ',
+            dd: '%d ਦਿਨ',
+            M: 'ਇੱਕ ਮਹੀਨਾ',
+            MM: '%d ਮਹੀਨੇ',
+            y: 'ਇੱਕ ਸਾਲ',
+            yy: '%d ਸਾਲ',
+        },
+        preparse: function (string) {
+            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
+                return numberMap$d[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$e[match];
+            });
+        },
+        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
+        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
+        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'ਰਾਤ') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'ਸਵੇਰ') {
+                return hour;
+            } else if (meridiem === 'ਦੁਪਹਿਰ') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'ਸ਼ਾਮ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ਰਾਤ';
+            } else if (hour < 10) {
+                return 'ਸਵੇਰ';
+            } else if (hour < 17) {
+                return 'ਦੁਪਹਿਰ';
+            } else if (hour < 20) {
+                return 'ਸ਼ਾਮ';
+            } else {
+                return 'ਰਾਤ';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
+            '_'
+        ),
+        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
+            '_'
+        );
+    function plural$3(n) {
+        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
+    }
+    function translate$8(number, withoutSuffix, key) {
+        var result = number + ' ';
+        switch (key) {
+            case 'ss':
+                return result + (plural$3(number) ? 'sekundy' : 'sekund');
+            case 'm':
+                return withoutSuffix ? 'minuta' : 'minutę';
+            case 'mm':
+                return result + (plural$3(number) ? 'minuty' : 'minut');
+            case 'h':
+                return withoutSuffix ? 'godzina' : 'godzinę';
+            case 'hh':
+                return result + (plural$3(number) ? 'godziny' : 'godzin');
+            case 'MM':
+                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
+            case 'yy':
+                return result + (plural$3(number) ? 'lata' : 'lat');
+        }
+    }
+
+    hooks.defineLocale('pl', {
+        months: function (momentToFormat, format) {
+            if (!momentToFormat) {
+                return monthsNominative;
+            } else if (format === '') {
+                // Hack: if format empty we know this is used to generate
+                // RegExp by moment. Give then back both valid forms of months
+                // in RegExp ready format.
+                return (
+                    '(' +
+                    monthsSubjective[momentToFormat.month()] +
+                    '|' +
+                    monthsNominative[momentToFormat.month()] +
+                    ')'
+                );
+            } else if (/D MMMM/.test(format)) {
+                return monthsSubjective[momentToFormat.month()];
+            } else {
+                return monthsNominative[momentToFormat.month()];
+            }
+        },
+        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
+        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
+        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Dziś o] LT',
+            nextDay: '[Jutro o] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[W niedzielę o] LT';
+
+                    case 2:
+                        return '[We wtorek o] LT';
+
+                    case 3:
+                        return '[W środę o] LT';
+
+                    case 6:
+                        return '[W sobotę o] LT';
+
+                    default:
+                        return '[W] dddd [o] LT';
+                }
+            },
+            lastDay: '[Wczoraj o] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[W zeszłą niedzielę o] LT';
+                    case 3:
+                        return '[W zeszłą środę o] LT';
+                    case 6:
+                        return '[W zeszłą sobotę o] LT';
+                    default:
+                        return '[W zeszły] dddd [o] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: '%s temu',
+            s: 'kilka sekund',
+            ss: translate$8,
+            m: translate$8,
+            mm: translate$8,
+            h: translate$8,
+            hh: translate$8,
+            d: '1 dzień',
+            dd: '%d dni',
+            M: 'miesiąc',
+            MM: translate$8,
+            y: 'rok',
+            yy: translate$8,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('pt-br', {
+        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
+            '_'
+        ),
+        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
+        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
+            '_'
+        ),
+        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
+        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
+        },
+        calendar: {
+            sameDay: '[Hoje às] LT',
+            nextDay: '[Amanhã às] LT',
+            nextWeek: 'dddd [às] LT',
+            lastDay: '[Ontem às] LT',
+            lastWeek: function () {
+                return this.day() === 0 || this.day() === 6
+                    ? '[Último] dddd [às] LT' // Saturday + Sunday
+                    : '[Última] dddd [às] LT'; // Monday - Friday
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'em %s',
+            past: 'há %s',
+            s: 'poucos segundos',
+            ss: '%d segundos',
+            m: 'um minuto',
+            mm: '%d minutos',
+            h: 'uma hora',
+            hh: '%d horas',
+            d: 'um dia',
+            dd: '%d dias',
+            M: 'um mês',
+            MM: '%d meses',
+            y: 'um ano',
+            yy: '%d anos',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('pt', {
+        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
+            '_'
+        ),
+        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
+        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
+            '_'
+        ),
+        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
+        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D [de] MMMM [de] YYYY',
+            LLL: 'D [de] MMMM [de] YYYY HH:mm',
+            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Hoje às] LT',
+            nextDay: '[Amanhã às] LT',
+            nextWeek: 'dddd [às] LT',
+            lastDay: '[Ontem às] LT',
+            lastWeek: function () {
+                return this.day() === 0 || this.day() === 6
+                    ? '[Último] dddd [às] LT' // Saturday + Sunday
+                    : '[Última] dddd [às] LT'; // Monday - Friday
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'em %s',
+            past: 'há %s',
+            s: 'segundos',
+            ss: '%d segundos',
+            m: 'um minuto',
+            mm: '%d minutos',
+            h: 'uma hora',
+            hh: '%d horas',
+            d: 'um dia',
+            dd: '%d dias',
+            M: 'um mês',
+            MM: '%d meses',
+            y: 'um ano',
+            yy: '%d anos',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}º/,
+        ordinal: '%dº',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
+        var format = {
+                ss: 'secunde',
+                mm: 'minute',
+                hh: 'ore',
+                dd: 'zile',
+                MM: 'luni',
+                yy: 'ani',
+            },
+            separator = ' ';
+        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
+            separator = ' de ';
+        }
+        return number + separator + format[key];
+    }
+
+    hooks.defineLocale('ro', {
+        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
+            '_'
+        ),
+        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
+        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
+        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY H:mm',
+            LLLL: 'dddd, D MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[azi la] LT',
+            nextDay: '[mâine la] LT',
+            nextWeek: 'dddd [la] LT',
+            lastDay: '[ieri la] LT',
+            lastWeek: '[fosta] dddd [la] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'peste %s',
+            past: '%s în urmă',
+            s: 'câteva secunde',
+            ss: relativeTimeWithPlural$2,
+            m: 'un minut',
+            mm: relativeTimeWithPlural$2,
+            h: 'o oră',
+            hh: relativeTimeWithPlural$2,
+            d: 'o zi',
+            dd: relativeTimeWithPlural$2,
+            M: 'o lună',
+            MM: relativeTimeWithPlural$2,
+            y: 'un an',
+            yy: relativeTimeWithPlural$2,
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function plural$4(word, num) {
+        var forms = word.split('_');
+        return num % 10 === 1 && num % 100 !== 11
+            ? forms[0]
+            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
+            ? forms[1]
+            : forms[2];
+    }
+    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
+        var format = {
+            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
+            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
+            hh: 'час_часа_часов',
+            dd: 'день_дня_дней',
+            MM: 'месяц_месяца_месяцев',
+            yy: 'год_года_лет',
+        };
+        if (key === 'm') {
+            return withoutSuffix ? 'минута' : 'минуту';
+        } else {
+            return number + ' ' + plural$4(format[key], +number);
+        }
+    }
+    var monthsParse$8 = [
+        /^янв/i,
+        /^фев/i,
+        /^мар/i,
+        /^апр/i,
+        /^ма[йя]/i,
+        /^июн/i,
+        /^июл/i,
+        /^авг/i,
+        /^сен/i,
+        /^окт/i,
+        /^ноя/i,
+        /^дек/i,
+    ];
+
+    // http://new.gramota.ru/spravka/rules/139-prop : § 103
+    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
+    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
+    hooks.defineLocale('ru', {
+        months: {
+            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
+                '_'
+            ),
+            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
+                '_'
+            ),
+        },
+        monthsShort: {
+            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
+            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
+                '_'
+            ),
+            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
+                '_'
+            ),
+        },
+        weekdays: {
+            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
+                '_'
+            ),
+            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
+                '_'
+            ),
+            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
+        },
+        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
+        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
+        monthsParse: monthsParse$8,
+        longMonthsParse: monthsParse$8,
+        shortMonthsParse: monthsParse$8,
+
+        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
+        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
+
+        // копия предыдущего
+        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
+
+        // полные названия с падежами
+        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
+
+        // Выражение, которое соответствует только сокращённым формам
+        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY г.',
+            LLL: 'D MMMM YYYY г., H:mm',
+            LLLL: 'dddd, D MMMM YYYY г., H:mm',
+        },
+        calendar: {
+            sameDay: '[Сегодня, в] LT',
+            nextDay: '[Завтра, в] LT',
+            lastDay: '[Вчера, в] LT',
+            nextWeek: function (now) {
+                if (now.week() !== this.week()) {
+                    switch (this.day()) {
+                        case 0:
+                            return '[В следующее] dddd, [в] LT';
+                        case 1:
+                        case 2:
+                        case 4:
+                            return '[В следующий] dddd, [в] LT';
+                        case 3:
+                        case 5:
+                        case 6:
+                            return '[В следующую] dddd, [в] LT';
+                    }
+                } else {
+                    if (this.day() === 2) {
+                        return '[Во] dddd, [в] LT';
+                    } else {
+                        return '[В] dddd, [в] LT';
+                    }
+                }
+            },
+            lastWeek: function (now) {
+                if (now.week() !== this.week()) {
+                    switch (this.day()) {
+                        case 0:
+                            return '[В прошлое] dddd, [в] LT';
+                        case 1:
+                        case 2:
+                        case 4:
+                            return '[В прошлый] dddd, [в] LT';
+                        case 3:
+                        case 5:
+                        case 6:
+                            return '[В прошлую] dddd, [в] LT';
+                    }
+                } else {
+                    if (this.day() === 2) {
+                        return '[Во] dddd, [в] LT';
+                    } else {
+                        return '[В] dddd, [в] LT';
+                    }
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'через %s',
+            past: '%s назад',
+            s: 'несколько секунд',
+            ss: relativeTimeWithPlural$3,
+            m: relativeTimeWithPlural$3,
+            mm: relativeTimeWithPlural$3,
+            h: 'час',
+            hh: relativeTimeWithPlural$3,
+            d: 'день',
+            dd: relativeTimeWithPlural$3,
+            M: 'месяц',
+            MM: relativeTimeWithPlural$3,
+            y: 'год',
+            yy: relativeTimeWithPlural$3,
+        },
+        meridiemParse: /ночи|утра|дня|вечера/i,
+        isPM: function (input) {
+            return /^(дня|вечера)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ночи';
+            } else if (hour < 12) {
+                return 'утра';
+            } else if (hour < 17) {
+                return 'дня';
+            } else {
+                return 'вечера';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'M':
+                case 'd':
+                case 'DDD':
+                    return number + '-й';
+                case 'D':
+                    return number + '-го';
+                case 'w':
+                case 'W':
+                    return number + '-я';
+                default:
+                    return number;
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$9 = [
+            'جنوري',
+            'فيبروري',
+            'مارچ',
+            'اپريل',
+            'مئي',
+            'جون',
+            'جولاءِ',
+            'آگسٽ',
+            'سيپٽمبر',
+            'آڪٽوبر',
+            'نومبر',
+            'ڊسمبر',
+        ],
+        days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
+
+    hooks.defineLocale('sd', {
+        months: months$9,
+        monthsShort: months$9,
+        weekdays: days$1,
+        weekdaysShort: days$1,
+        weekdaysMin: days$1,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd، D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /صبح|شام/,
+        isPM: function (input) {
+            return 'شام' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'صبح';
+            }
+            return 'شام';
+        },
+        calendar: {
+            sameDay: '[اڄ] LT',
+            nextDay: '[سڀاڻي] LT',
+            nextWeek: 'dddd [اڳين هفتي تي] LT',
+            lastDay: '[ڪالهه] LT',
+            lastWeek: '[گزريل هفتي] dddd [تي] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s پوء',
+            past: '%s اڳ',
+            s: 'چند سيڪنڊ',
+            ss: '%d سيڪنڊ',
+            m: 'هڪ منٽ',
+            mm: '%d منٽ',
+            h: 'هڪ ڪلاڪ',
+            hh: '%d ڪلاڪ',
+            d: 'هڪ ڏينهن',
+            dd: '%d ڏينهن',
+            M: 'هڪ مهينو',
+            MM: '%d مهينا',
+            y: 'هڪ سال',
+            yy: '%d سال',
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('se', {
+        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
+            '_'
+        ),
+        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(
+            '_'
+        ),
+        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
+            '_'
+        ),
+        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
+        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'MMMM D. [b.] YYYY',
+            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
+            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
+        },
+        calendar: {
+            sameDay: '[otne ti] LT',
+            nextDay: '[ihttin ti] LT',
+            nextWeek: 'dddd [ti] LT',
+            lastDay: '[ikte ti] LT',
+            lastWeek: '[ovddit] dddd [ti] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s geažes',
+            past: 'maŋit %s',
+            s: 'moadde sekunddat',
+            ss: '%d sekunddat',
+            m: 'okta minuhta',
+            mm: '%d minuhtat',
+            h: 'okta diimmu',
+            hh: '%d diimmut',
+            d: 'okta beaivi',
+            dd: '%d beaivvit',
+            M: 'okta mánnu',
+            MM: '%d mánut',
+            y: 'okta jahki',
+            yy: '%d jagit',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    /*jshint -W100*/
+    hooks.defineLocale('si', {
+        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
+            '_'
+        ),
+        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
+            '_'
+        ),
+        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
+            '_'
+        ),
+        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
+        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'a h:mm',
+            LTS: 'a h:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY MMMM D',
+            LLL: 'YYYY MMMM D, a h:mm',
+            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
+        },
+        calendar: {
+            sameDay: '[අද] LT[ට]',
+            nextDay: '[හෙට] LT[ට]',
+            nextWeek: 'dddd LT[ට]',
+            lastDay: '[ඊයේ] LT[ට]',
+            lastWeek: '[පසුගිය] dddd LT[ට]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%sකින්',
+            past: '%sකට පෙර',
+            s: 'තත්පර කිහිපය',
+            ss: 'තත්පර %d',
+            m: 'මිනිත්තුව',
+            mm: 'මිනිත්තු %d',
+            h: 'පැය',
+            hh: 'පැය %d',
+            d: 'දිනය',
+            dd: 'දින %d',
+            M: 'මාසය',
+            MM: 'මාස %d',
+            y: 'වසර',
+            yy: 'වසර %d',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
+        ordinal: function (number) {
+            return number + ' වැනි';
+        },
+        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
+        isPM: function (input) {
+            return input === 'ප.ව.' || input === 'පස් වරු';
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours > 11) {
+                return isLower ? 'ප.ව.' : 'පස් වරු';
+            } else {
+                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
+            }
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$a = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
+            '_'
+        ),
+        monthsShort$6 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
+    function plural$5(n) {
+        return n > 1 && n < 5;
+    }
+    function translate$9(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        switch (key) {
+            case 's': // a few seconds / in a few seconds / a few seconds ago
+                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
+            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
+                } else {
+                    return result + 'sekundami';
+                }
+            case 'm': // a minute / in a minute / a minute ago
+                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
+            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'minúty' : 'minút');
+                } else {
+                    return result + 'minútami';
+                }
+            case 'h': // an hour / in an hour / an hour ago
+                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
+            case 'hh': // 9 hours / in 9 hours / 9 hours ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
+                } else {
+                    return result + 'hodinami';
+                }
+            case 'd': // a day / in a day / a day ago
+                return withoutSuffix || isFuture ? 'deň' : 'dňom';
+            case 'dd': // 9 days / in 9 days / 9 days ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'dni' : 'dní');
+                } else {
+                    return result + 'dňami';
+                }
+            case 'M': // a month / in a month / a month ago
+                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
+            case 'MM': // 9 months / in 9 months / 9 months ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
+                } else {
+                    return result + 'mesiacmi';
+                }
+            case 'y': // a year / in a year / a year ago
+                return withoutSuffix || isFuture ? 'rok' : 'rokom';
+            case 'yy': // 9 years / in 9 years / 9 years ago
+                if (withoutSuffix || isFuture) {
+                    return result + (plural$5(number) ? 'roky' : 'rokov');
+                } else {
+                    return result + 'rokmi';
+                }
+        }
+    }
+
+    hooks.defineLocale('sk', {
+        months: months$a,
+        monthsShort: monthsShort$6,
+        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
+        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
+        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[dnes o] LT',
+            nextDay: '[zajtra o] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[v nedeľu o] LT';
+                    case 1:
+                    case 2:
+                        return '[v] dddd [o] LT';
+                    case 3:
+                        return '[v stredu o] LT';
+                    case 4:
+                        return '[vo štvrtok o] LT';
+                    case 5:
+                        return '[v piatok o] LT';
+                    case 6:
+                        return '[v sobotu o] LT';
+                }
+            },
+            lastDay: '[včera o] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[minulú nedeľu o] LT';
+                    case 1:
+                    case 2:
+                        return '[minulý] dddd [o] LT';
+                    case 3:
+                        return '[minulú stredu o] LT';
+                    case 4:
+                    case 5:
+                        return '[minulý] dddd [o] LT';
+                    case 6:
+                        return '[minulú sobotu o] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'pred %s',
+            s: translate$9,
+            ss: translate$9,
+            m: translate$9,
+            mm: translate$9,
+            h: translate$9,
+            hh: translate$9,
+            d: translate$9,
+            dd: translate$9,
+            M: translate$9,
+            MM: translate$9,
+            y: translate$9,
+            yy: translate$9,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
+        var result = number + ' ';
+        switch (key) {
+            case 's':
+                return withoutSuffix || isFuture
+                    ? 'nekaj sekund'
+                    : 'nekaj sekundami';
+            case 'ss':
+                if (number === 1) {
+                    result += withoutSuffix ? 'sekundo' : 'sekundi';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
+                } else {
+                    result += 'sekund';
+                }
+                return result;
+            case 'm':
+                return withoutSuffix ? 'ena minuta' : 'eno minuto';
+            case 'mm':
+                if (number === 1) {
+                    result += withoutSuffix ? 'minuta' : 'minuto';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
+                } else {
+                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
+                }
+                return result;
+            case 'h':
+                return withoutSuffix ? 'ena ura' : 'eno uro';
+            case 'hh':
+                if (number === 1) {
+                    result += withoutSuffix ? 'ura' : 'uro';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
+                } else {
+                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
+                }
+                return result;
+            case 'd':
+                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
+            case 'dd':
+                if (number === 1) {
+                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
+                } else {
+                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
+                }
+                return result;
+            case 'M':
+                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
+            case 'MM':
+                if (number === 1) {
+                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
+                } else {
+                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
+                }
+                return result;
+            case 'y':
+                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
+            case 'yy':
+                if (number === 1) {
+                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
+                } else if (number === 2) {
+                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
+                } else if (number < 5) {
+                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
+                } else {
+                    result += withoutSuffix || isFuture ? 'let' : 'leti';
+                }
+                return result;
+        }
+    }
+
+    hooks.defineLocale('sl', {
+        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
+        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
+        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD. MM. YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danes ob] LT',
+            nextDay: '[jutri ob] LT',
+
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[v] [nedeljo] [ob] LT';
+                    case 3:
+                        return '[v] [sredo] [ob] LT';
+                    case 6:
+                        return '[v] [soboto] [ob] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[v] dddd [ob] LT';
+                }
+            },
+            lastDay: '[včeraj ob] LT',
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[prejšnjo] [nedeljo] [ob] LT';
+                    case 3:
+                        return '[prejšnjo] [sredo] [ob] LT';
+                    case 6:
+                        return '[prejšnjo] [soboto] [ob] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[prejšnji] dddd [ob] LT';
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'čez %s',
+            past: 'pred %s',
+            s: processRelativeTime$7,
+            ss: processRelativeTime$7,
+            m: processRelativeTime$7,
+            mm: processRelativeTime$7,
+            h: processRelativeTime$7,
+            hh: processRelativeTime$7,
+            d: processRelativeTime$7,
+            dd: processRelativeTime$7,
+            M: processRelativeTime$7,
+            MM: processRelativeTime$7,
+            y: processRelativeTime$7,
+            yy: processRelativeTime$7,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('sq', {
+        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
+        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
+            '_'
+        ),
+        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
+        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
+        weekdaysParseExact: true,
+        meridiemParse: /PD|MD/,
+        isPM: function (input) {
+            return input.charAt(0) === 'M';
+        },
+        meridiem: function (hours, minutes, isLower) {
+            return hours < 12 ? 'PD' : 'MD';
+        },
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Sot në] LT',
+            nextDay: '[Nesër në] LT',
+            nextWeek: 'dddd [në] LT',
+            lastDay: '[Dje në] LT',
+            lastWeek: 'dddd [e kaluar në] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'në %s',
+            past: '%s më parë',
+            s: 'disa sekonda',
+            ss: '%d sekonda',
+            m: 'një minutë',
+            mm: '%d minuta',
+            h: 'një orë',
+            hh: '%d orë',
+            d: 'një ditë',
+            dd: '%d ditë',
+            M: 'një muaj',
+            MM: '%d muaj',
+            y: 'një vit',
+            yy: '%d vite',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var translator$1 = {
+        words: {
+            //Different grammatical cases
+            ss: ['секунда', 'секунде', 'секунди'],
+            m: ['један минут', 'једне минуте'],
+            mm: ['минут', 'минуте', 'минута'],
+            h: ['један сат', 'једног сата'],
+            hh: ['сат', 'сата', 'сати'],
+            dd: ['дан', 'дана', 'дана'],
+            MM: ['месец', 'месеца', 'месеци'],
+            yy: ['година', 'године', 'година'],
+        },
+        correctGrammaticalCase: function (number, wordKey) {
+            return number === 1
+                ? wordKey[0]
+                : number >= 2 && number <= 4
+                ? wordKey[1]
+                : wordKey[2];
+        },
+        translate: function (number, withoutSuffix, key) {
+            var wordKey = translator$1.words[key];
+            if (key.length === 1) {
+                return withoutSuffix ? wordKey[0] : wordKey[1];
+            } else {
+                return (
+                    number +
+                    ' ' +
+                    translator$1.correctGrammaticalCase(number, wordKey)
+                );
+            }
+        },
+    };
+
+    hooks.defineLocale('sr-cyrl', {
+        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
+            '_'
+        ),
+        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
+        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
+        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[данас у] LT',
+            nextDay: '[сутра у] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[у] [недељу] [у] LT';
+                    case 3:
+                        return '[у] [среду] [у] LT';
+                    case 6:
+                        return '[у] [суботу] [у] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[у] dddd [у] LT';
+                }
+            },
+            lastDay: '[јуче у] LT',
+            lastWeek: function () {
+                var lastWeekDays = [
+                    '[прошле] [недеље] [у] LT',
+                    '[прошлог] [понедељка] [у] LT',
+                    '[прошлог] [уторка] [у] LT',
+                    '[прошле] [среде] [у] LT',
+                    '[прошлог] [четвртка] [у] LT',
+                    '[прошлог] [петка] [у] LT',
+                    '[прошле] [суботе] [у] LT',
+                ];
+                return lastWeekDays[this.day()];
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'за %s',
+            past: 'пре %s',
+            s: 'неколико секунди',
+            ss: translator$1.translate,
+            m: translator$1.translate,
+            mm: translator$1.translate,
+            h: translator$1.translate,
+            hh: translator$1.translate,
+            d: 'дан',
+            dd: translator$1.translate,
+            M: 'месец',
+            MM: translator$1.translate,
+            y: 'годину',
+            yy: translator$1.translate,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var translator$2 = {
+        words: {
+            //Different grammatical cases
+            ss: ['sekunda', 'sekunde', 'sekundi'],
+            m: ['jedan minut', 'jedne minute'],
+            mm: ['minut', 'minute', 'minuta'],
+            h: ['jedan sat', 'jednog sata'],
+            hh: ['sat', 'sata', 'sati'],
+            dd: ['dan', 'dana', 'dana'],
+            MM: ['mesec', 'meseca', 'meseci'],
+            yy: ['godina', 'godine', 'godina'],
+        },
+        correctGrammaticalCase: function (number, wordKey) {
+            return number === 1
+                ? wordKey[0]
+                : number >= 2 && number <= 4
+                ? wordKey[1]
+                : wordKey[2];
+        },
+        translate: function (number, withoutSuffix, key) {
+            var wordKey = translator$2.words[key];
+            if (key.length === 1) {
+                return withoutSuffix ? wordKey[0] : wordKey[1];
+            } else {
+                return (
+                    number +
+                    ' ' +
+                    translator$2.correctGrammaticalCase(number, wordKey)
+                );
+            }
+        },
+    };
+
+    hooks.defineLocale('sr', {
+        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
+            '_'
+        ),
+        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
+            '_'
+        ),
+        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
+        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM YYYY',
+            LLL: 'D. MMMM YYYY H:mm',
+            LLLL: 'dddd, D. MMMM YYYY H:mm',
+        },
+        calendar: {
+            sameDay: '[danas u] LT',
+            nextDay: '[sutra u] LT',
+            nextWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                        return '[u] [nedelju] [u] LT';
+                    case 3:
+                        return '[u] [sredu] [u] LT';
+                    case 6:
+                        return '[u] [subotu] [u] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                    case 5:
+                        return '[u] dddd [u] LT';
+                }
+            },
+            lastDay: '[juče u] LT',
+            lastWeek: function () {
+                var lastWeekDays = [
+                    '[prošle] [nedelje] [u] LT',
+                    '[prošlog] [ponedeljka] [u] LT',
+                    '[prošlog] [utorka] [u] LT',
+                    '[prošle] [srede] [u] LT',
+                    '[prošlog] [četvrtka] [u] LT',
+                    '[prošlog] [petka] [u] LT',
+                    '[prošle] [subote] [u] LT',
+                ];
+                return lastWeekDays[this.day()];
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'za %s',
+            past: 'pre %s',
+            s: 'nekoliko sekundi',
+            ss: translator$2.translate,
+            m: translator$2.translate,
+            mm: translator$2.translate,
+            h: translator$2.translate,
+            hh: translator$2.translate,
+            d: 'dan',
+            dd: translator$2.translate,
+            M: 'mesec',
+            MM: translator$2.translate,
+            y: 'godinu',
+            yy: translator$2.translate,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ss', {
+        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
+            '_'
+        ),
+        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
+        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
+            '_'
+        ),
+        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
+        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Namuhla nga] LT',
+            nextDay: '[Kusasa nga] LT',
+            nextWeek: 'dddd [nga] LT',
+            lastDay: '[Itolo nga] LT',
+            lastWeek: 'dddd [leliphelile] [nga] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'nga %s',
+            past: 'wenteka nga %s',
+            s: 'emizuzwana lomcane',
+            ss: '%d mzuzwana',
+            m: 'umzuzu',
+            mm: '%d emizuzu',
+            h: 'lihora',
+            hh: '%d emahora',
+            d: 'lilanga',
+            dd: '%d emalanga',
+            M: 'inyanga',
+            MM: '%d tinyanga',
+            y: 'umnyaka',
+            yy: '%d iminyaka',
+        },
+        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 11) {
+                return 'ekuseni';
+            } else if (hours < 15) {
+                return 'emini';
+            } else if (hours < 19) {
+                return 'entsambama';
+            } else {
+                return 'ebusuku';
+            }
+        },
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'ekuseni') {
+                return hour;
+            } else if (meridiem === 'emini') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
+                if (hour === 0) {
+                    return 0;
+                }
+                return hour + 12;
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}/,
+        ordinal: '%d',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('sv', {
+        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
+            '_'
+        ),
+        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
+        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
+        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY [kl.] HH:mm',
+            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
+            lll: 'D MMM YYYY HH:mm',
+            llll: 'ddd D MMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Idag] LT',
+            nextDay: '[Imorgon] LT',
+            lastDay: '[Igår] LT',
+            nextWeek: '[På] dddd LT',
+            lastWeek: '[I] dddd[s] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'om %s',
+            past: 'för %s sedan',
+            s: 'några sekunder',
+            ss: '%d sekunder',
+            m: 'en minut',
+            mm: '%d minuter',
+            h: 'en timme',
+            hh: '%d timmar',
+            d: 'en dag',
+            dd: '%d dagar',
+            M: 'en månad',
+            MM: '%d månader',
+            y: 'ett år',
+            yy: '%d år',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? ':e'
+                        : b === 1
+                        ? ':a'
+                        : b === 2
+                        ? ':a'
+                        : b === 3
+                        ? ':e'
+                        : ':e';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('sw', {
+        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
+        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
+            '_'
+        ),
+        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
+        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'hh:mm A',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[leo saa] LT',
+            nextDay: '[kesho saa] LT',
+            nextWeek: '[wiki ijayo] dddd [saat] LT',
+            lastDay: '[jana] LT',
+            lastWeek: '[wiki iliyopita] dddd [saat] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s baadaye',
+            past: 'tokea %s',
+            s: 'hivi punde',
+            ss: 'sekunde %d',
+            m: 'dakika moja',
+            mm: 'dakika %d',
+            h: 'saa limoja',
+            hh: 'masaa %d',
+            d: 'siku moja',
+            dd: 'siku %d',
+            M: 'mwezi mmoja',
+            MM: 'miezi %d',
+            y: 'mwaka mmoja',
+            yy: 'miaka %d',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var symbolMap$f = {
+            '1': '௧',
+            '2': '௨',
+            '3': '௩',
+            '4': '௪',
+            '5': '௫',
+            '6': '௬',
+            '7': '௭',
+            '8': '௮',
+            '9': '௯',
+            '0': '௦',
+        },
+        numberMap$e = {
+            '௧': '1',
+            '௨': '2',
+            '௩': '3',
+            '௪': '4',
+            '௫': '5',
+            '௬': '6',
+            '௭': '7',
+            '௮': '8',
+            '௯': '9',
+            '௦': '0',
+        };
+
+    hooks.defineLocale('ta', {
+        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
+            '_'
+        ),
+        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
+            '_'
+        ),
+        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
+            '_'
+        ),
+        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
+            '_'
+        ),
+        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, HH:mm',
+            LLLL: 'dddd, D MMMM YYYY, HH:mm',
+        },
+        calendar: {
+            sameDay: '[இன்று] LT',
+            nextDay: '[நாளை] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[நேற்று] LT',
+            lastWeek: '[கடந்த வாரம்] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s இல்',
+            past: '%s முன்',
+            s: 'ஒரு சில விநாடிகள்',
+            ss: '%d விநாடிகள்',
+            m: 'ஒரு நிமிடம்',
+            mm: '%d நிமிடங்கள்',
+            h: 'ஒரு மணி நேரம்',
+            hh: '%d மணி நேரம்',
+            d: 'ஒரு நாள்',
+            dd: '%d நாட்கள்',
+            M: 'ஒரு மாதம்',
+            MM: '%d மாதங்கள்',
+            y: 'ஒரு வருடம்',
+            yy: '%d ஆண்டுகள்',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}வது/,
+        ordinal: function (number) {
+            return number + 'வது';
+        },
+        preparse: function (string) {
+            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
+                return numberMap$e[match];
+            });
+        },
+        postformat: function (string) {
+            return string.replace(/\d/g, function (match) {
+                return symbolMap$f[match];
+            });
+        },
+        // refer http://ta.wikipedia.org/s/1er1
+        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 2) {
+                return ' யாமம்';
+            } else if (hour < 6) {
+                return ' வைகறை'; // வைகறை
+            } else if (hour < 10) {
+                return ' காலை'; // காலை
+            } else if (hour < 14) {
+                return ' நண்பகல்'; // நண்பகல்
+            } else if (hour < 18) {
+                return ' எற்பாடு'; // எற்பாடு
+            } else if (hour < 22) {
+                return ' மாலை'; // மாலை
+            } else {
+                return ' யாமம்';
+            }
+        },
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'யாமம்') {
+                return hour < 2 ? hour : hour + 12;
+            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
+                return hour;
+            } else if (meridiem === 'நண்பகல்') {
+                return hour >= 10 ? hour : hour + 12;
+            } else {
+                return hour + 12;
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('te', {
+        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
+            '_'
+        ),
+        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
+            '_'
+        ),
+        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
+        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
+        longDateFormat: {
+            LT: 'A h:mm',
+            LTS: 'A h:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY, A h:mm',
+            LLLL: 'dddd, D MMMM YYYY, A h:mm',
+        },
+        calendar: {
+            sameDay: '[నేడు] LT',
+            nextDay: '[రేపు] LT',
+            nextWeek: 'dddd, LT',
+            lastDay: '[నిన్న] LT',
+            lastWeek: '[గత] dddd, LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s లో',
+            past: '%s క్రితం',
+            s: 'కొన్ని క్షణాలు',
+            ss: '%d సెకన్లు',
+            m: 'ఒక నిమిషం',
+            mm: '%d నిమిషాలు',
+            h: 'ఒక గంట',
+            hh: '%d గంటలు',
+            d: 'ఒక రోజు',
+            dd: '%d రోజులు',
+            M: 'ఒక నెల',
+            MM: '%d నెలలు',
+            y: 'ఒక సంవత్సరం',
+            yy: '%d సంవత్సరాలు',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}వ/,
+        ordinal: '%dవ',
+        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'రాత్రి') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'ఉదయం') {
+                return hour;
+            } else if (meridiem === 'మధ్యాహ్నం') {
+                return hour >= 10 ? hour : hour + 12;
+            } else if (meridiem === 'సాయంత్రం') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'రాత్రి';
+            } else if (hour < 10) {
+                return 'ఉదయం';
+            } else if (hour < 17) {
+                return 'మధ్యాహ్నం';
+            } else if (hour < 20) {
+                return 'సాయంత్రం';
+            } else {
+                return 'రాత్రి';
+            }
+        },
+        week: {
+            dow: 0, // Sunday is the first day of the week.
+            doy: 6, // The week that contains Jan 6th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('tet', {
+        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
+        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
+        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
+        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Ohin iha] LT',
+            nextDay: '[Aban iha] LT',
+            nextWeek: 'dddd [iha] LT',
+            lastDay: '[Horiseik iha] LT',
+            lastWeek: 'dddd [semana kotuk] [iha] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'iha %s',
+            past: '%s liuba',
+            s: 'segundu balun',
+            ss: 'segundu %d',
+            m: 'minutu ida',
+            mm: 'minutu %d',
+            h: 'oras ida',
+            hh: 'oras %d',
+            d: 'loron ida',
+            dd: 'loron %d',
+            M: 'fulan ida',
+            MM: 'fulan %d',
+            y: 'tinan ida',
+            yy: 'tinan %d',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$3 = {
+        0: '-ум',
+        1: '-ум',
+        2: '-юм',
+        3: '-юм',
+        4: '-ум',
+        5: '-ум',
+        6: '-ум',
+        7: '-ум',
+        8: '-ум',
+        9: '-ум',
+        10: '-ум',
+        12: '-ум',
+        13: '-ум',
+        20: '-ум',
+        30: '-юм',
+        40: '-ум',
+        50: '-ум',
+        60: '-ум',
+        70: '-ум',
+        80: '-ум',
+        90: '-ум',
+        100: '-ум',
+    };
+
+    hooks.defineLocale('tg', {
+        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
+            '_'
+        ),
+        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
+        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
+            '_'
+        ),
+        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
+        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Имрӯз соати] LT',
+            nextDay: '[Пагоҳ соати] LT',
+            lastDay: '[Дирӯз соати] LT',
+            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
+            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'баъди %s',
+            past: '%s пеш',
+            s: 'якчанд сония',
+            m: 'як дақиқа',
+            mm: '%d дақиқа',
+            h: 'як соат',
+            hh: '%d соат',
+            d: 'як рӯз',
+            dd: '%d рӯз',
+            M: 'як моҳ',
+            MM: '%d моҳ',
+            y: 'як сол',
+            yy: '%d сол',
+        },
+        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === 'шаб') {
+                return hour < 4 ? hour : hour + 12;
+            } else if (meridiem === 'субҳ') {
+                return hour;
+            } else if (meridiem === 'рӯз') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === 'бегоҳ') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'шаб';
+            } else if (hour < 11) {
+                return 'субҳ';
+            } else if (hour < 16) {
+                return 'рӯз';
+            } else if (hour < 19) {
+                return 'бегоҳ';
+            } else {
+                return 'шаб';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
+        ordinal: function (number) {
+            var a = number % 10,
+                b = number >= 100 ? 100 : null;
+            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 1th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('th', {
+        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
+            '_'
+        ),
+        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
+        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
+        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'H:mm',
+            LTS: 'H:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY เวลา H:mm',
+            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
+        },
+        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
+        isPM: function (input) {
+            return input === 'หลังเที่ยง';
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'ก่อนเที่ยง';
+            } else {
+                return 'หลังเที่ยง';
+            }
+        },
+        calendar: {
+            sameDay: '[วันนี้ เวลา] LT',
+            nextDay: '[พรุ่งนี้ เวลา] LT',
+            nextWeek: 'dddd[หน้า เวลา] LT',
+            lastDay: '[เมื่อวานนี้ เวลา] LT',
+            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'อีก %s',
+            past: '%sที่แล้ว',
+            s: 'ไม่กี่วินาที',
+            ss: '%d วินาที',
+            m: '1 นาที',
+            mm: '%d นาที',
+            h: '1 ชั่วโมง',
+            hh: '%d ชั่วโมง',
+            d: '1 วัน',
+            dd: '%d วัน',
+            M: '1 เดือน',
+            MM: '%d เดือน',
+            y: '1 ปี',
+            yy: '%d ปี',
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$4 = {
+        1: "'inji",
+        5: "'inji",
+        8: "'inji",
+        70: "'inji",
+        80: "'inji",
+        2: "'nji",
+        7: "'nji",
+        20: "'nji",
+        50: "'nji",
+        3: "'ünji",
+        4: "'ünji",
+        100: "'ünji",
+        6: "'njy",
+        9: "'unjy",
+        10: "'unjy",
+        30: "'unjy",
+        60: "'ynjy",
+        90: "'ynjy",
+    };
+
+    hooks.defineLocale('tk', {
+        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
+            '_'
+        ),
+        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
+        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
+            '_'
+        ),
+        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
+        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[bugün sagat] LT',
+            nextDay: '[ertir sagat] LT',
+            nextWeek: '[indiki] dddd [sagat] LT',
+            lastDay: '[düýn] LT',
+            lastWeek: '[geçen] dddd [sagat] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s soň',
+            past: '%s öň',
+            s: 'birnäçe sekunt',
+            m: 'bir minut',
+            mm: '%d minut',
+            h: 'bir sagat',
+            hh: '%d sagat',
+            d: 'bir gün',
+            dd: '%d gün',
+            M: 'bir aý',
+            MM: '%d aý',
+            y: 'bir ýyl',
+            yy: '%d ýyl',
+        },
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'Do':
+                case 'DD':
+                    return number;
+                default:
+                    if (number === 0) {
+                        // special case for zero
+                        return number + "'unjy";
+                    }
+                    var a = number % 10,
+                        b = (number % 100) - a,
+                        c = number >= 100 ? 100 : null;
+                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('tl-ph', {
+        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
+            '_'
+        ),
+        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
+        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
+            '_'
+        ),
+        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
+        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'MM/D/YYYY',
+            LL: 'MMMM D, YYYY',
+            LLL: 'MMMM D, YYYY HH:mm',
+            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: 'LT [ngayong araw]',
+            nextDay: '[Bukas ng] LT',
+            nextWeek: 'LT [sa susunod na] dddd',
+            lastDay: 'LT [kahapon]',
+            lastWeek: 'LT [noong nakaraang] dddd',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'sa loob ng %s',
+            past: '%s ang nakalipas',
+            s: 'ilang segundo',
+            ss: '%d segundo',
+            m: 'isang minuto',
+            mm: '%d minuto',
+            h: 'isang oras',
+            hh: '%d oras',
+            d: 'isang araw',
+            dd: '%d araw',
+            M: 'isang buwan',
+            MM: '%d buwan',
+            y: 'isang taon',
+            yy: '%d taon',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}/,
+        ordinal: function (number) {
+            return number;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
+
+    function translateFuture(output) {
+        var time = output;
+        time =
+            output.indexOf('jaj') !== -1
+                ? time.slice(0, -3) + 'leS'
+                : output.indexOf('jar') !== -1
+                ? time.slice(0, -3) + 'waQ'
+                : output.indexOf('DIS') !== -1
+                ? time.slice(0, -3) + 'nem'
+                : time + ' pIq';
+        return time;
+    }
+
+    function translatePast(output) {
+        var time = output;
+        time =
+            output.indexOf('jaj') !== -1
+                ? time.slice(0, -3) + 'Hu’'
+                : output.indexOf('jar') !== -1
+                ? time.slice(0, -3) + 'wen'
+                : output.indexOf('DIS') !== -1
+                ? time.slice(0, -3) + 'ben'
+                : time + ' ret';
+        return time;
+    }
+
+    function translate$a(number, withoutSuffix, string, isFuture) {
+        var numberNoun = numberAsNoun(number);
+        switch (string) {
+            case 'ss':
+                return numberNoun + ' lup';
+            case 'mm':
+                return numberNoun + ' tup';
+            case 'hh':
+                return numberNoun + ' rep';
+            case 'dd':
+                return numberNoun + ' jaj';
+            case 'MM':
+                return numberNoun + ' jar';
+            case 'yy':
+                return numberNoun + ' DIS';
+        }
+    }
+
+    function numberAsNoun(number) {
+        var hundred = Math.floor((number % 1000) / 100),
+            ten = Math.floor((number % 100) / 10),
+            one = number % 10,
+            word = '';
+        if (hundred > 0) {
+            word += numbersNouns[hundred] + 'vatlh';
+        }
+        if (ten > 0) {
+            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
+        }
+        if (one > 0) {
+            word += (word !== '' ? ' ' : '') + numbersNouns[one];
+        }
+        return word === '' ? 'pagh' : word;
+    }
+
+    hooks.defineLocale('tlh', {
+        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
+            '_'
+        ),
+        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
+            '_'
+        ),
+        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
+            '_'
+        ),
+        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
+            '_'
+        ),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[DaHjaj] LT',
+            nextDay: '[wa’leS] LT',
+            nextWeek: 'LLL',
+            lastDay: '[wa’Hu’] LT',
+            lastWeek: 'LLL',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: translateFuture,
+            past: translatePast,
+            s: 'puS lup',
+            ss: translate$a,
+            m: 'wa’ tup',
+            mm: translate$a,
+            h: 'wa’ rep',
+            hh: translate$a,
+            d: 'wa’ jaj',
+            dd: translate$a,
+            M: 'wa’ jar',
+            MM: translate$a,
+            y: 'wa’ DIS',
+            yy: translate$a,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var suffixes$5 = {
+        1: "'inci",
+        5: "'inci",
+        8: "'inci",
+        70: "'inci",
+        80: "'inci",
+        2: "'nci",
+        7: "'nci",
+        20: "'nci",
+        50: "'nci",
+        3: "'üncü",
+        4: "'üncü",
+        100: "'üncü",
+        6: "'ncı",
+        9: "'uncu",
+        10: "'uncu",
+        30: "'uncu",
+        60: "'ıncı",
+        90: "'ıncı",
+    };
+
+    hooks.defineLocale('tr', {
+        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
+            '_'
+        ),
+        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
+        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
+            '_'
+        ),
+        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
+        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 12) {
+                return isLower ? 'öö' : 'ÖÖ';
+            } else {
+                return isLower ? 'ös' : 'ÖS';
+            }
+        },
+        meridiemParse: /öö|ÖÖ|ös|ÖS/,
+        isPM: function (input) {
+            return input === 'ös' || input === 'ÖS';
+        },
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[bugün saat] LT',
+            nextDay: '[yarın saat] LT',
+            nextWeek: '[gelecek] dddd [saat] LT',
+            lastDay: '[dün] LT',
+            lastWeek: '[geçen] dddd [saat] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s sonra',
+            past: '%s önce',
+            s: 'birkaç saniye',
+            ss: '%d saniye',
+            m: 'bir dakika',
+            mm: '%d dakika',
+            h: 'bir saat',
+            hh: '%d saat',
+            d: 'bir gün',
+            dd: '%d gün',
+            M: 'bir ay',
+            MM: '%d ay',
+            y: 'bir yıl',
+            yy: '%d yıl',
+        },
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'Do':
+                case 'DD':
+                    return number;
+                default:
+                    if (number === 0) {
+                        // special case for zero
+                        return number + "'ıncı";
+                    }
+                    var a = number % 10,
+                        b = (number % 100) - a,
+                        c = number >= 100 ? 100 : null;
+                    return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
+    // This is currently too difficult (maybe even impossible) to add.
+    hooks.defineLocale('tzl', {
+        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
+            '_'
+        ),
+        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
+        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
+        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
+        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
+        longDateFormat: {
+            LT: 'HH.mm',
+            LTS: 'HH.mm.ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D. MMMM [dallas] YYYY',
+            LLL: 'D. MMMM [dallas] YYYY HH.mm',
+            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
+        },
+        meridiemParse: /d\'o|d\'a/i,
+        isPM: function (input) {
+            return "d'o" === input.toLowerCase();
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours > 11) {
+                return isLower ? "d'o" : "D'O";
+            } else {
+                return isLower ? "d'a" : "D'A";
+            }
+        },
+        calendar: {
+            sameDay: '[oxhi à] LT',
+            nextDay: '[demà à] LT',
+            nextWeek: 'dddd [à] LT',
+            lastDay: '[ieiri à] LT',
+            lastWeek: '[sür el] dddd [lasteu à] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'osprei %s',
+            past: 'ja%s',
+            s: processRelativeTime$8,
+            ss: processRelativeTime$8,
+            m: processRelativeTime$8,
+            mm: processRelativeTime$8,
+            h: processRelativeTime$8,
+            hh: processRelativeTime$8,
+            d: processRelativeTime$8,
+            dd: processRelativeTime$8,
+            M: processRelativeTime$8,
+            MM: processRelativeTime$8,
+            y: processRelativeTime$8,
+            yy: processRelativeTime$8,
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}\./,
+        ordinal: '%d.',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    function processRelativeTime$8(number, withoutSuffix, key, isFuture) {
+        var format = {
+            s: ['viensas secunds', "'iensas secunds"],
+            ss: [number + ' secunds', '' + number + ' secunds'],
+            m: ["'n míut", "'iens míut"],
+            mm: [number + ' míuts', '' + number + ' míuts'],
+            h: ["'n þora", "'iensa þora"],
+            hh: [number + ' þoras', '' + number + ' þoras'],
+            d: ["'n ziua", "'iensa ziua"],
+            dd: [number + ' ziuas', '' + number + ' ziuas'],
+            M: ["'n mes", "'iens mes"],
+            MM: [number + ' mesen', '' + number + ' mesen'],
+            y: ["'n ar", "'iens ar"],
+            yy: [number + ' ars', '' + number + ' ars'],
+        };
+        return isFuture
+            ? format[key][0]
+            : withoutSuffix
+            ? format[key][0]
+            : format[key][1];
+    }
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('tzm-latn', {
+        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
+            '_'
+        ),
+        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
+            '_'
+        ),
+        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[asdkh g] LT',
+            nextDay: '[aska g] LT',
+            nextWeek: 'dddd [g] LT',
+            lastDay: '[assant g] LT',
+            lastWeek: 'dddd [g] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'dadkh s yan %s',
+            past: 'yan %s',
+            s: 'imik',
+            ss: '%d imik',
+            m: 'minuḍ',
+            mm: '%d minuḍ',
+            h: 'saɛa',
+            hh: '%d tassaɛin',
+            d: 'ass',
+            dd: '%d ossan',
+            M: 'ayowr',
+            MM: '%d iyyirn',
+            y: 'asgas',
+            yy: '%d isgasn',
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('tzm', {
+        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
+            '_'
+        ),
+        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
+            '_'
+        ),
+        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
+            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
+            nextWeek: 'dddd [ⴴ] LT',
+            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
+            lastWeek: 'dddd [ⴴ] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
+            past: 'ⵢⴰⵏ %s',
+            s: 'ⵉⵎⵉⴽ',
+            ss: '%d ⵉⵎⵉⴽ',
+            m: 'ⵎⵉⵏⵓⴺ',
+            mm: '%d ⵎⵉⵏⵓⴺ',
+            h: 'ⵙⴰⵄⴰ',
+            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
+            d: 'ⴰⵙⵙ',
+            dd: '%d oⵙⵙⴰⵏ',
+            M: 'ⴰⵢoⵓⵔ',
+            MM: '%d ⵉⵢⵢⵉⵔⵏ',
+            y: 'ⴰⵙⴳⴰⵙ',
+            yy: '%d ⵉⵙⴳⴰⵙⵏ',
+        },
+        week: {
+            dow: 6, // Saturday is the first day of the week.
+            doy: 12, // The week that contains Jan 12th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('ug-cn', {
+        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
+            '_'
+        ),
+        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
+            '_'
+        ),
+        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
+            '_'
+        ),
+        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
+        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY-MM-DD',
+            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
+            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
+            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
+        },
+        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (
+                meridiem === 'يېرىم كېچە' ||
+                meridiem === 'سەھەر' ||
+                meridiem === 'چۈشتىن بۇرۇن'
+            ) {
+                return hour;
+            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
+                return hour + 12;
+            } else {
+                return hour >= 11 ? hour : hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return 'يېرىم كېچە';
+            } else if (hm < 900) {
+                return 'سەھەر';
+            } else if (hm < 1130) {
+                return 'چۈشتىن بۇرۇن';
+            } else if (hm < 1230) {
+                return 'چۈش';
+            } else if (hm < 1800) {
+                return 'چۈشتىن كېيىن';
+            } else {
+                return 'كەچ';
+            }
+        },
+        calendar: {
+            sameDay: '[بۈگۈن سائەت] LT',
+            nextDay: '[ئەتە سائەت] LT',
+            nextWeek: '[كېلەركى] dddd [سائەت] LT',
+            lastDay: '[تۆنۈگۈن] LT',
+            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s كېيىن',
+            past: '%s بۇرۇن',
+            s: 'نەچچە سېكونت',
+            ss: '%d سېكونت',
+            m: 'بىر مىنۇت',
+            mm: '%d مىنۇت',
+            h: 'بىر سائەت',
+            hh: '%d سائەت',
+            d: 'بىر كۈن',
+            dd: '%d كۈن',
+            M: 'بىر ئاي',
+            MM: '%d ئاي',
+            y: 'بىر يىل',
+            yy: '%d يىل',
+        },
+
+        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '-كۈنى';
+                case 'w':
+                case 'W':
+                    return number + '-ھەپتە';
+                default:
+                    return number;
+            }
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 1st is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    function plural$6(word, num) {
+        var forms = word.split('_');
+        return num % 10 === 1 && num % 100 !== 11
+            ? forms[0]
+            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
+            ? forms[1]
+            : forms[2];
+    }
+    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
+        var format = {
+            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
+            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
+            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
+            dd: 'день_дні_днів',
+            MM: 'місяць_місяці_місяців',
+            yy: 'рік_роки_років',
+        };
+        if (key === 'm') {
+            return withoutSuffix ? 'хвилина' : 'хвилину';
+        } else if (key === 'h') {
+            return withoutSuffix ? 'година' : 'годину';
+        } else {
+            return number + ' ' + plural$6(format[key], +number);
+        }
+    }
+    function weekdaysCaseReplace(m, format) {
+        var weekdays = {
+                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
+                    '_'
+                ),
+                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
+                    '_'
+                ),
+                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
+                    '_'
+                ),
+            },
+            nounCase;
+
+        if (m === true) {
+            return weekdays['nominative']
+                .slice(1, 7)
+                .concat(weekdays['nominative'].slice(0, 1));
+        }
+        if (!m) {
+            return weekdays['nominative'];
+        }
+
+        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
+            ? 'accusative'
+            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
+            ? 'genitive'
+            : 'nominative';
+        return weekdays[nounCase][m.day()];
+    }
+    function processHoursFunction(str) {
+        return function () {
+            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
+        };
+    }
+
+    hooks.defineLocale('uk', {
+        months: {
+            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
+                '_'
+            ),
+            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
+                '_'
+            ),
+        },
+        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
+            '_'
+        ),
+        weekdays: weekdaysCaseReplace,
+        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
+        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD.MM.YYYY',
+            LL: 'D MMMM YYYY р.',
+            LLL: 'D MMMM YYYY р., HH:mm',
+            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
+        },
+        calendar: {
+            sameDay: processHoursFunction('[Сьогодні '),
+            nextDay: processHoursFunction('[Завтра '),
+            lastDay: processHoursFunction('[Вчора '),
+            nextWeek: processHoursFunction('[У] dddd ['),
+            lastWeek: function () {
+                switch (this.day()) {
+                    case 0:
+                    case 3:
+                    case 5:
+                    case 6:
+                        return processHoursFunction('[Минулої] dddd [').call(this);
+                    case 1:
+                    case 2:
+                    case 4:
+                        return processHoursFunction('[Минулого] dddd [').call(this);
+                }
+            },
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'за %s',
+            past: '%s тому',
+            s: 'декілька секунд',
+            ss: relativeTimeWithPlural$4,
+            m: relativeTimeWithPlural$4,
+            mm: relativeTimeWithPlural$4,
+            h: 'годину',
+            hh: relativeTimeWithPlural$4,
+            d: 'день',
+            dd: relativeTimeWithPlural$4,
+            M: 'місяць',
+            MM: relativeTimeWithPlural$4,
+            y: 'рік',
+            yy: relativeTimeWithPlural$4,
+        },
+        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
+        meridiemParse: /ночі|ранку|дня|вечора/,
+        isPM: function (input) {
+            return /^(дня|вечора)$/.test(input);
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 4) {
+                return 'ночі';
+            } else if (hour < 12) {
+                return 'ранку';
+            } else if (hour < 17) {
+                return 'дня';
+            } else {
+                return 'вечора';
+            }
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'M':
+                case 'd':
+                case 'DDD':
+                case 'w':
+                case 'W':
+                    return number + '-й';
+                case 'D':
+                    return number + '-го';
+                default:
+                    return number;
+            }
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    var months$b = [
+            'جنوری',
+            'فروری',
+            'مارچ',
+            'اپریل',
+            'مئی',
+            'جون',
+            'جولائی',
+            'اگست',
+            'ستمبر',
+            'اکتوبر',
+            'نومبر',
+            'دسمبر',
+        ],
+        days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
+
+    hooks.defineLocale('ur', {
+        months: months$b,
+        monthsShort: months$b,
+        weekdays: days$2,
+        weekdaysShort: days$2,
+        weekdaysMin: days$2,
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd، D MMMM YYYY HH:mm',
+        },
+        meridiemParse: /صبح|شام/,
+        isPM: function (input) {
+            return 'شام' === input;
+        },
+        meridiem: function (hour, minute, isLower) {
+            if (hour < 12) {
+                return 'صبح';
+            }
+            return 'شام';
+        },
+        calendar: {
+            sameDay: '[آج بوقت] LT',
+            nextDay: '[کل بوقت] LT',
+            nextWeek: 'dddd [بوقت] LT',
+            lastDay: '[گذشتہ روز بوقت] LT',
+            lastWeek: '[گذشتہ] dddd [بوقت] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s بعد',
+            past: '%s قبل',
+            s: 'چند سیکنڈ',
+            ss: '%d سیکنڈ',
+            m: 'ایک منٹ',
+            mm: '%d منٹ',
+            h: 'ایک گھنٹہ',
+            hh: '%d گھنٹے',
+            d: 'ایک دن',
+            dd: '%d دن',
+            M: 'ایک ماہ',
+            MM: '%d ماہ',
+            y: 'ایک سال',
+            yy: '%d سال',
+        },
+        preparse: function (string) {
+            return string.replace(/،/g, ',');
+        },
+        postformat: function (string) {
+            return string.replace(/,/g, '،');
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('uz-latn', {
+        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
+            '_'
+        ),
+        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
+        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
+            '_'
+        ),
+        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
+        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'D MMMM YYYY, dddd HH:mm',
+        },
+        calendar: {
+            sameDay: '[Bugun soat] LT [da]',
+            nextDay: '[Ertaga] LT [da]',
+            nextWeek: 'dddd [kuni soat] LT [da]',
+            lastDay: '[Kecha soat] LT [da]',
+            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'Yaqin %s ichida',
+            past: 'Bir necha %s oldin',
+            s: 'soniya',
+            ss: '%d soniya',
+            m: 'bir daqiqa',
+            mm: '%d daqiqa',
+            h: 'bir soat',
+            hh: '%d soat',
+            d: 'bir kun',
+            dd: '%d kun',
+            M: 'bir oy',
+            MM: '%d oy',
+            y: 'bir yil',
+            yy: '%d yil',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 7th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('uz', {
+        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
+            '_'
+        ),
+        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
+        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
+        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
+        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'D MMMM YYYY, dddd HH:mm',
+        },
+        calendar: {
+            sameDay: '[Бугун соат] LT [да]',
+            nextDay: '[Эртага] LT [да]',
+            nextWeek: 'dddd [куни соат] LT [да]',
+            lastDay: '[Кеча соат] LT [да]',
+            lastWeek: '[Утган] dddd [куни соат] LT [да]',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'Якин %s ичида',
+            past: 'Бир неча %s олдин',
+            s: 'фурсат',
+            ss: '%d фурсат',
+            m: 'бир дакика',
+            mm: '%d дакика',
+            h: 'бир соат',
+            hh: '%d соат',
+            d: 'бир кун',
+            dd: '%d кун',
+            M: 'бир ой',
+            MM: '%d ой',
+            y: 'бир йил',
+            yy: '%d йил',
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 7, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('vi', {
+        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
+            '_'
+        ),
+        monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
+            '_'
+        ),
+        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
+        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
+        weekdaysParseExact: true,
+        meridiemParse: /sa|ch/i,
+        isPM: function (input) {
+            return /^ch$/i.test(input);
+        },
+        meridiem: function (hours, minutes, isLower) {
+            if (hours < 12) {
+                return isLower ? 'sa' : 'SA';
+            } else {
+                return isLower ? 'ch' : 'CH';
+            }
+        },
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM [năm] YYYY',
+            LLL: 'D MMMM [năm] YYYY HH:mm',
+            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
+            l: 'DD/M/YYYY',
+            ll: 'D MMM YYYY',
+            lll: 'D MMM YYYY HH:mm',
+            llll: 'ddd, D MMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[Hôm nay lúc] LT',
+            nextDay: '[Ngày mai lúc] LT',
+            nextWeek: 'dddd [tuần tới lúc] LT',
+            lastDay: '[Hôm qua lúc] LT',
+            lastWeek: 'dddd [tuần trước lúc] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: '%s tới',
+            past: '%s trước',
+            s: 'vài giây',
+            ss: '%d giây',
+            m: 'một phút',
+            mm: '%d phút',
+            h: 'một giờ',
+            hh: '%d giờ',
+            d: 'một ngày',
+            dd: '%d ngày',
+            M: 'một tháng',
+            MM: '%d tháng',
+            y: 'một năm',
+            yy: '%d năm',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}/,
+        ordinal: function (number) {
+            return number;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('x-pseudo', {
+        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
+            '_'
+        ),
+        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
+            '_'
+        ),
+        monthsParseExact: true,
+        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
+            '_'
+        ),
+        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
+        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
+        weekdaysParseExact: true,
+        longDateFormat: {
+            LT: 'HH:mm',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY HH:mm',
+            LLLL: 'dddd, D MMMM YYYY HH:mm',
+        },
+        calendar: {
+            sameDay: '[T~ódá~ý át] LT',
+            nextDay: '[T~ómó~rró~w át] LT',
+            nextWeek: 'dddd [át] LT',
+            lastDay: '[Ý~ést~érdá~ý át] LT',
+            lastWeek: '[L~ást] dddd [át] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'í~ñ %s',
+            past: '%s á~gó',
+            s: 'á ~féw ~sécó~ñds',
+            ss: '%d s~écóñ~ds',
+            m: 'á ~míñ~úté',
+            mm: '%d m~íñú~tés',
+            h: 'á~ñ hó~úr',
+            hh: '%d h~óúrs',
+            d: 'á ~dáý',
+            dd: '%d d~áýs',
+            M: 'á ~móñ~th',
+            MM: '%d m~óñt~hs',
+            y: 'á ~ýéár',
+            yy: '%d ý~éárs',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    ~~((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('yo', {
+        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
+            '_'
+        ),
+        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
+        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
+        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
+        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
+        longDateFormat: {
+            LT: 'h:mm A',
+            LTS: 'h:mm:ss A',
+            L: 'DD/MM/YYYY',
+            LL: 'D MMMM YYYY',
+            LLL: 'D MMMM YYYY h:mm A',
+            LLLL: 'dddd, D MMMM YYYY h:mm A',
+        },
+        calendar: {
+            sameDay: '[Ònì ni] LT',
+            nextDay: '[Ọ̀la ni] LT',
+            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
+            lastDay: '[Àna ni] LT',
+            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
+            sameElse: 'L',
+        },
+        relativeTime: {
+            future: 'ní %s',
+            past: '%s kọjá',
+            s: 'ìsẹjú aayá die',
+            ss: 'aayá %d',
+            m: 'ìsẹjú kan',
+            mm: 'ìsẹjú %d',
+            h: 'wákati kan',
+            hh: 'wákati %d',
+            d: 'ọjọ́ kan',
+            dd: 'ọjọ́ %d',
+            M: 'osù kan',
+            MM: 'osù %d',
+            y: 'ọdún kan',
+            yy: 'ọdún %d',
+        },
+        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
+        ordinal: 'ọjọ́ %d',
+        week: {
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('zh-cn', {
+        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
+            '_'
+        ),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
+        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日Ah点mm分',
+            LLLL: 'YYYY年M月D日ddddAh点mm分',
+            l: 'YYYY/M/D',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日dddd HH:mm',
+        },
+        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
+                return hour;
+            } else if (meridiem === '下午' || meridiem === '晚上') {
+                return hour + 12;
+            } else {
+                // '中午'
+                return hour >= 11 ? hour : hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return '凌晨';
+            } else if (hm < 900) {
+                return '早上';
+            } else if (hm < 1130) {
+                return '上午';
+            } else if (hm < 1230) {
+                return '中午';
+            } else if (hm < 1800) {
+                return '下午';
+            } else {
+                return '晚上';
+            }
+        },
+        calendar: {
+            sameDay: '[今天]LT',
+            nextDay: '[明天]LT',
+            nextWeek: function (now) {
+                if (now.week() !== this.week()) {
+                    return '[下]dddLT';
+                } else {
+                    return '[本]dddLT';
+                }
+            },
+            lastDay: '[昨天]LT',
+            lastWeek: function (now) {
+                if (this.week() !== now.week()) {
+                    return '[上]dddLT';
+                } else {
+                    return '[本]dddLT';
+                }
+            },
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                case 'M':
+                    return number + '月';
+                case 'w':
+                case 'W':
+                    return number + '周';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s后',
+            past: '%s前',
+            s: '几秒',
+            ss: '%d 秒',
+            m: '1 分钟',
+            mm: '%d 分钟',
+            h: '1 小时',
+            hh: '%d 小时',
+            d: '1 天',
+            dd: '%d 天',
+            M: '1 个月',
+            MM: '%d 个月',
+            y: '1 年',
+            yy: '%d 年',
+        },
+        week: {
+            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
+            dow: 1, // Monday is the first day of the week.
+            doy: 4, // The week that contains Jan 4th is the first week of the year.
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('zh-hk', {
+        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
+            '_'
+        ),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日 HH:mm',
+            LLLL: 'YYYY年M月D日dddd HH:mm',
+            l: 'YYYY/M/D',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日dddd HH:mm',
+        },
+        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
+                return hour;
+            } else if (meridiem === '中午') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === '下午' || meridiem === '晚上') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return '凌晨';
+            } else if (hm < 900) {
+                return '早上';
+            } else if (hm < 1200) {
+                return '上午';
+            } else if (hm === 1200) {
+                return '中午';
+            } else if (hm < 1800) {
+                return '下午';
+            } else {
+                return '晚上';
+            }
+        },
+        calendar: {
+            sameDay: '[今天]LT',
+            nextDay: '[明天]LT',
+            nextWeek: '[下]ddddLT',
+            lastDay: '[昨天]LT',
+            lastWeek: '[上]ddddLT',
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                case 'M':
+                    return number + '月';
+                case 'w':
+                case 'W':
+                    return number + '週';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s後',
+            past: '%s前',
+            s: '幾秒',
+            ss: '%d 秒',
+            m: '1 分鐘',
+            mm: '%d 分鐘',
+            h: '1 小時',
+            hh: '%d 小時',
+            d: '1 天',
+            dd: '%d 天',
+            M: '1 個月',
+            MM: '%d 個月',
+            y: '1 年',
+            yy: '%d 年',
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('zh-mo', {
+        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
+            '_'
+        ),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'DD/MM/YYYY',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日 HH:mm',
+            LLLL: 'YYYY年M月D日dddd HH:mm',
+            l: 'D/M/YYYY',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日dddd HH:mm',
+        },
+        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
+                return hour;
+            } else if (meridiem === '中午') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === '下午' || meridiem === '晚上') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return '凌晨';
+            } else if (hm < 900) {
+                return '早上';
+            } else if (hm < 1130) {
+                return '上午';
+            } else if (hm < 1230) {
+                return '中午';
+            } else if (hm < 1800) {
+                return '下午';
+            } else {
+                return '晚上';
+            }
+        },
+        calendar: {
+            sameDay: '[今天] LT',
+            nextDay: '[明天] LT',
+            nextWeek: '[下]dddd LT',
+            lastDay: '[昨天] LT',
+            lastWeek: '[上]dddd LT',
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                case 'M':
+                    return number + '月';
+                case 'w':
+                case 'W':
+                    return number + '週';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s內',
+            past: '%s前',
+            s: '幾秒',
+            ss: '%d 秒',
+            m: '1 分鐘',
+            mm: '%d 分鐘',
+            h: '1 小時',
+            hh: '%d 小時',
+            d: '1 天',
+            dd: '%d 天',
+            M: '1 個月',
+            MM: '%d 個月',
+            y: '1 年',
+            yy: '%d 年',
+        },
+    });
+
+    //! moment.js locale configuration
+
+    hooks.defineLocale('zh-tw', {
+        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
+            '_'
+        ),
+        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
+            '_'
+        ),
+        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+        longDateFormat: {
+            LT: 'HH:mm',
+            LTS: 'HH:mm:ss',
+            L: 'YYYY/MM/DD',
+            LL: 'YYYY年M月D日',
+            LLL: 'YYYY年M月D日 HH:mm',
+            LLLL: 'YYYY年M月D日dddd HH:mm',
+            l: 'YYYY/M/D',
+            ll: 'YYYY年M月D日',
+            lll: 'YYYY年M月D日 HH:mm',
+            llll: 'YYYY年M月D日dddd HH:mm',
+        },
+        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
+        meridiemHour: function (hour, meridiem) {
+            if (hour === 12) {
+                hour = 0;
+            }
+            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
+                return hour;
+            } else if (meridiem === '中午') {
+                return hour >= 11 ? hour : hour + 12;
+            } else if (meridiem === '下午' || meridiem === '晚上') {
+                return hour + 12;
+            }
+        },
+        meridiem: function (hour, minute, isLower) {
+            var hm = hour * 100 + minute;
+            if (hm < 600) {
+                return '凌晨';
+            } else if (hm < 900) {
+                return '早上';
+            } else if (hm < 1130) {
+                return '上午';
+            } else if (hm < 1230) {
+                return '中午';
+            } else if (hm < 1800) {
+                return '下午';
+            } else {
+                return '晚上';
+            }
+        },
+        calendar: {
+            sameDay: '[今天] LT',
+            nextDay: '[明天] LT',
+            nextWeek: '[下]dddd LT',
+            lastDay: '[昨天] LT',
+            lastWeek: '[上]dddd LT',
+            sameElse: 'L',
+        },
+        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
+        ordinal: function (number, period) {
+            switch (period) {
+                case 'd':
+                case 'D':
+                case 'DDD':
+                    return number + '日';
+                case 'M':
+                    return number + '月';
+                case 'w':
+                case 'W':
+                    return number + '週';
+                default:
+                    return number;
+            }
+        },
+        relativeTime: {
+            future: '%s後',
+            past: '%s前',
+            s: '幾秒',
+            ss: '%d 秒',
+            m: '1 分鐘',
+            mm: '%d 分鐘',
+            h: '1 小時',
+            hh: '%d 小時',
+            d: '1 天',
+            dd: '%d 天',
+            M: '1 個月',
+            MM: '%d 個月',
+            y: '1 年',
+            yy: '%d 年',
+        },
+    });
+
+    hooks.locale('en');
+
+    return hooks;
+
+})));
diff --git a/admin/js/vendors/moment/moment-with-locales.min.js b/admin/js/vendors/moment/moment-with-locales.min.js
new file mode 100644 (file)
index 0000000..f1f8aba
--- /dev/null
@@ -0,0 +1,2 @@
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.moment=a()}(this,function(){"use strict";var e,n;function M(){return e.apply(null,arguments)}function _(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function h(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function o(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var a in e)if(h(e,a))return;return 1}function r(e){return void 0===e}function m(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function u(e,a){for(var t=[],s=0;s<e.length;++s)t.push(a(e[s],s));return t}function l(e,a){for(var t in a)h(a,t)&&(e[t]=a[t]);return h(a,"toString")&&(e.toString=a.toString),h(a,"valueOf")&&(e.valueOf=a.valueOf),e}function c(e,a,t,s){return Ha(e,a,t,s,!0).utc()}function L(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function Y(e){if(null==e._isValid){var a=L(e),t=n.call(a.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&a.overflow<0&&!a.empty&&!a.invalidEra&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&t);if(e._strict&&(s=s&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function y(e){var a=c(NaN);return null!=e?l(L(a),e):L(a).userInvalidated=!0,a}n=Array.prototype.some?Array.prototype.some:function(e){for(var a=Object(this),t=a.length>>>0,s=0;s<t;s++)if(s in a&&e.call(this,a[s],s,a))return!0;return!1};var f=M.momentProperties=[],a=!1;function p(e,a){var t,s,n;if(r(a._isAMomentObject)||(e._isAMomentObject=a._isAMomentObject),r(a._i)||(e._i=a._i),r(a._f)||(e._f=a._f),r(a._l)||(e._l=a._l),r(a._strict)||(e._strict=a._strict),r(a._tzm)||(e._tzm=a._tzm),r(a._isUTC)||(e._isUTC=a._isUTC),r(a._offset)||(e._offset=a._offset),r(a._pf)||(e._pf=L(a)),r(a._locale)||(e._locale=a._locale),0<f.length)for(t=0;t<f.length;t++)r(n=a[s=f[t]])||(e[s]=n);return e}function k(e){p(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===a&&(a=!0,M.updateOffset(this),a=!1)}function D(e){return e instanceof k||null!=e&&null!=e._isAMomentObject}function T(e){!1===M.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function t(n,r){var d=!0;return l(function(){if(null!=M.deprecationHandler&&M.deprecationHandler(null,n),d){for(var e,a,t=[],s=0;s<arguments.length;s++){if(e="","object"==typeof arguments[s]){for(a in e+="\n["+s+"] ",arguments[0])h(arguments[0],a)&&(e+=a+": "+arguments[0][a]+", ");e=e.slice(0,-2)}else e=arguments[s];t.push(e)}T(n+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),d=!1}return r.apply(this,arguments)},r)}var s,g={};function w(e,a){null!=M.deprecationHandler&&M.deprecationHandler(e,a),g[e]||(T(a),g[e]=!0)}function v(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,a){var t,s=l({},e);for(t in a)h(a,t)&&(i(e[t])&&i(a[t])?(s[t]={},l(s[t],e[t]),l(s[t],a[t])):null!=a[t]?s[t]=a[t]:delete s[t]);for(t in e)h(e,t)&&!h(a,t)&&i(e[t])&&(s[t]=l({},s[t]));return s}function H(e){null!=e&&this.set(e)}M.suppressDeprecationWarnings=!1,M.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var a,t=[];for(a in e)h(e,a)&&t.push(a);return t};function S(e,a,t){var s=""+Math.abs(e),n=a-s.length;return(0<=e?t?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+s}var j=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,x=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,O={},P={};function W(e,a,t,s){var n="string"==typeof s?function(){return this[s]()}:s;e&&(P[e]=n),a&&(P[a[0]]=function(){return S(n.apply(this,arguments),a[1],a[2])}),t&&(P[t]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function A(e,a){return e.isValid()?(a=E(a,e.localeData()),O[a]=O[a]||function(s){for(var e,n=s.match(j),a=0,r=n.length;a<r;a++)P[n[a]]?n[a]=P[n[a]]:n[a]=(e=n[a]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var a="",t=0;t<r;t++)a+=v(n[t])?n[t].call(e,s):n[t];return a}}(a),O[a](e)):e.localeData().invalidDate()}function E(e,a){var t=5;function s(e){return a.longDateFormat(e)||e}for(x.lastIndex=0;0<=t&&x.test(e);)e=e.replace(x,s),x.lastIndex=0,--t;return e}var F={};function z(e,a){var t=e.toLowerCase();F[t]=F[t+"s"]=F[a]=e}function N(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function J(e){var a,t,s={};for(t in e)h(e,t)&&(a=N(t))&&(s[a]=e[t]);return s}var R={};function C(e,a){R[e]=a}function I(e){return e%4==0&&e%100!=0||e%400==0}function U(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function G(e){var a=+e,t=0;return 0!=a&&isFinite(a)&&(t=U(a)),t}function V(a,t){return function(e){return null!=e?(K(this,a,e),M.updateOffset(this,t),this):B(this,a)}}function B(e,a){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+a]():NaN}function K(e,a,t){e.isValid()&&!isNaN(t)&&("FullYear"===a&&I(e.year())&&1===e.month()&&29===e.date()?(t=G(t),e._d["set"+(e._isUTC?"UTC":"")+a](t,e.month(),He(t,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+a](t))}var q,Z=/\d/,$=/\d\d/,Q=/\d{3}/,X=/\d{4}/,ee=/[+-]?\d{6}/,ae=/\d\d?/,te=/\d\d\d\d?/,se=/\d\d\d\d\d\d?/,ne=/\d{1,3}/,re=/\d{1,4}/,de=/[+-]?\d{1,6}/,_e=/\d+/,ie=/[+-]?\d+/,oe=/Z|[+-]\d\d:?\d\d/gi,me=/Z|[+-]\d\d(?::?\d\d)?/gi,ue=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function le(e,t,s){q[e]=v(t)?t:function(e,a){return e&&s?s:t}}function Me(e,a){return h(q,e)?q[e](a._strict,a._locale):new RegExp(he(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,a,t,s,n){return a||t||s||n})))}function he(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}q={};var ce={};function Le(e,t){var a,s=t;for("string"==typeof e&&(e=[e]),m(t)&&(s=function(e,a){a[t]=G(e)}),a=0;a<e.length;a++)ce[e[a]]=s}function Ye(e,n){Le(e,function(e,a,t,s){t._w=t._w||{},n(e,t._w,t,s)})}var ye,fe=0,pe=1,ke=2,De=3,Te=4,ge=5,we=6,ve=7,be=8;function He(e,a){if(isNaN(e)||isNaN(a))return NaN;var t,s=(a%(t=12)+t)%t;return e+=(a-s)/12,1==s?I(e)?29:28:31-s%7%2}ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){for(var a=0;a<this.length;++a)if(this[a]===e)return a;return-1},W("M",["MM",2],"Mo",function(){return this.month()+1}),W("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),W("MMMM",0,0,function(e){return this.localeData().months(this,e)}),z("month","M"),C("month",8),le("M",ae),le("MM",ae,$),le("MMM",function(e,a){return a.monthsShortRegex(e)}),le("MMMM",function(e,a){return a.monthsRegex(e)}),Le(["M","MM"],function(e,a){a[pe]=G(e)-1}),Le(["MMM","MMMM"],function(e,a,t,s){var n=t._locale.monthsParse(e,s,t._strict);null!=n?a[pe]=n:L(t).invalidMonth=e});var Se="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),je="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),xe=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Oe=ue,Pe=ue;function We(e,a){var t;if(!e.isValid())return e;if("string"==typeof a)if(/^\d+$/.test(a))a=G(a);else if(!m(a=e.localeData().monthsParse(a)))return e;return t=Math.min(e.date(),He(e.year(),a)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](a,t),e}function Ae(e){return null!=e?(We(this,e),M.updateOffset(this,!0),this):B(this,"Month")}function Ee(){function e(e,a){return a.length-e.length}for(var a,t=[],s=[],n=[],r=0;r<12;r++)a=c([2e3,r]),t.push(this.monthsShort(a,"")),s.push(this.months(a,"")),n.push(this.months(a,"")),n.push(this.monthsShort(a,""));for(t.sort(e),s.sort(e),n.sort(e),r=0;r<12;r++)t[r]=he(t[r]),s[r]=he(s[r]);for(r=0;r<24;r++)n[r]=he(n[r]);this._monthsRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+t.join("|")+")","i")}function Fe(e){return I(e)?366:365}W("Y",0,0,function(){var e=this.year();return e<=9999?S(e,4):"+"+e}),W(0,["YY",2],0,function(){return this.year()%100}),W(0,["YYYY",4],0,"year"),W(0,["YYYYY",5],0,"year"),W(0,["YYYYYY",6,!0],0,"year"),z("year","y"),C("year",1),le("Y",ie),le("YY",ae,$),le("YYYY",re,X),le("YYYYY",de,ee),le("YYYYYY",de,ee),Le(["YYYYY","YYYYYY"],fe),Le("YYYY",function(e,a){a[fe]=2===e.length?M.parseTwoDigitYear(e):G(e)}),Le("YY",function(e,a){a[fe]=M.parseTwoDigitYear(e)}),Le("Y",function(e,a){a[fe]=parseInt(e,10)}),M.parseTwoDigitYear=function(e){return G(e)+(68<G(e)?1900:2e3)};var ze=V("FullYear",!0);function Ne(e){var a,t;return e<100&&0<=e?((t=Array.prototype.slice.call(arguments))[0]=e+400,a=new Date(Date.UTC.apply(null,t)),isFinite(a.getUTCFullYear())&&a.setUTCFullYear(e)):a=new Date(Date.UTC.apply(null,arguments)),a}function Je(e,a,t){var s=7+a-t;return s-(7+Ne(e,0,s).getUTCDay()-a)%7-1}function Re(e,a,t,s,n){var r,d=1+7*(a-1)+(7+t-s)%7+Je(e,s,n),_=d<=0?Fe(r=e-1)+d:d>Fe(e)?(r=e+1,d-Fe(e)):(r=e,d);return{year:r,dayOfYear:_}}function Ce(e,a,t){var s,n,r=Je(e.year(),a,t),d=Math.floor((e.dayOfYear()-r-1)/7)+1;return d<1?s=d+Ie(n=e.year()-1,a,t):d>Ie(e.year(),a,t)?(s=d-Ie(e.year(),a,t),n=e.year()+1):(n=e.year(),s=d),{week:s,year:n}}function Ie(e,a,t){var s=Je(e,a,t),n=Je(e+1,a,t);return(Fe(e)-s+n)/7}W("w",["ww",2],"wo","week"),W("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),C("week",5),C("isoWeek",5),le("w",ae),le("ww",ae,$),le("W",ae),le("WW",ae,$),Ye(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=G(e)});function Ue(e,a){return e.slice(a,7).concat(e.slice(0,a))}W("d",0,"do","day"),W("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),W("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),W("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),W("e",0,0,"weekday"),W("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),C("day",11),C("weekday",11),C("isoWeekday",11),le("d",ae),le("e",ae),le("E",ae),le("dd",function(e,a){return a.weekdaysMinRegex(e)}),le("ddd",function(e,a){return a.weekdaysShortRegex(e)}),le("dddd",function(e,a){return a.weekdaysRegex(e)}),Ye(["dd","ddd","dddd"],function(e,a,t,s){var n=t._locale.weekdaysParse(e,s,t._strict);null!=n?a.d=n:L(t).invalidWeekday=e}),Ye(["d","e","E"],function(e,a,t,s){a[s]=G(e)});var Ge="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ve="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Be="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ke=ue,qe=ue,Ze=ue;function $e(){function e(e,a){return a.length-e.length}for(var a,t,s,n,r=[],d=[],_=[],i=[],o=0;o<7;o++)a=c([2e3,1]).day(o),t=he(this.weekdaysMin(a,"")),s=he(this.weekdaysShort(a,"")),n=he(this.weekdays(a,"")),r.push(t),d.push(s),_.push(n),i.push(t),i.push(s),i.push(n);r.sort(e),d.sort(e),_.sort(e),i.sort(e),this._weekdaysRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,a){W(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function ea(e,a){return a._meridiemParse}W("H",["HH",2],0,"hour"),W("h",["hh",2],0,Qe),W("k",["kk",2],0,function(){return this.hours()||24}),W("hmm",0,0,function(){return""+Qe.apply(this)+S(this.minutes(),2)}),W("hmmss",0,0,function(){return""+Qe.apply(this)+S(this.minutes(),2)+S(this.seconds(),2)}),W("Hmm",0,0,function(){return""+this.hours()+S(this.minutes(),2)}),W("Hmmss",0,0,function(){return""+this.hours()+S(this.minutes(),2)+S(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),z("hour","h"),C("hour",13),le("a",ea),le("A",ea),le("H",ae),le("h",ae),le("k",ae),le("HH",ae,$),le("hh",ae,$),le("kk",ae,$),le("hmm",te),le("hmmss",se),le("Hmm",te),le("Hmmss",se),Le(["H","HH"],De),Le(["k","kk"],function(e,a,t){var s=G(e);a[De]=24===s?0:s}),Le(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),Le(["h","hh"],function(e,a,t){a[De]=G(e),L(t).bigHour=!0}),Le("hmm",function(e,a,t){var s=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s)),L(t).bigHour=!0}),Le("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s,2)),a[ge]=G(e.substr(n)),L(t).bigHour=!0}),Le("Hmm",function(e,a,t){var s=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s))}),Le("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s,2)),a[ge]=G(e.substr(n))});var aa=V("Hours",!0);var ta,sa={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Se,monthsShort:je,week:{dow:0,doy:6},weekdays:Ge,weekdaysMin:Be,weekdaysShort:Ve,meridiemParse:/[ap]\.?m?\.?/i},na={},ra={};function da(e){return e?e.toLowerCase().replace("_","-"):e}function _a(e){for(var a,t,s,n,r=0;r<e.length;){for(a=(n=da(e[r]).split("-")).length,t=(t=da(e[r+1]))?t.split("-"):null;0<a;){if(s=ia(n.slice(0,a).join("-")))return s;if(t&&t.length>=a&&function(e,a){for(var t=Math.min(e.length,a.length),s=0;s<t;s+=1)if(e[s]!==a[s])return s;return t}(n,t)>=a-1)break;a--}r++}return ta}function ia(a){var e;if(void 0===na[a]&&"undefined"!=typeof module&&module&&module.exports)try{e=ta._abbr,require("./locale/"+a),oa(e)}catch(e){na[a]=null}return na[a]}function oa(e,a){var t;return e&&((t=r(a)?ua(e):ma(e,a))?ta=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ta._abbr}function ma(e,a){if(null===a)return delete na[e],null;var t,s=sa;if(a.abbr=e,null!=na[e])w("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=na[e]._config;else if(null!=a.parentLocale)if(null!=na[a.parentLocale])s=na[a.parentLocale]._config;else{if(null==(t=ia(a.parentLocale)))return ra[a.parentLocale]||(ra[a.parentLocale]=[]),ra[a.parentLocale].push({name:e,config:a}),null;s=t._config}return na[e]=new H(b(s,a)),ra[e]&&ra[e].forEach(function(e){ma(e.name,e.config)}),oa(e),na[e]}function ua(e){var a;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ta;if(!_(e)){if(a=ia(e))return a;e=[e]}return _a(e)}function la(e){var a,t=e._a;return t&&-2===L(e).overflow&&(a=t[pe]<0||11<t[pe]?pe:t[ke]<1||t[ke]>He(t[fe],t[pe])?ke:t[De]<0||24<t[De]||24===t[De]&&(0!==t[Te]||0!==t[ge]||0!==t[we])?De:t[Te]<0||59<t[Te]?Te:t[ge]<0||59<t[ge]?ge:t[we]<0||999<t[we]?we:-1,L(e)._overflowDayOfYear&&(a<fe||ke<a)&&(a=ke),L(e)._overflowWeeks&&-1===a&&(a=ve),L(e)._overflowWeekday&&-1===a&&(a=be),L(e).overflow=a),e}var Ma=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ha=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ca=/Z|[+-]\d\d(?::?\d\d)?/,La=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Ya=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ya=/^\/?Date\((-?\d+)/i,fa=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,pa={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function ka(e){var a,t,s,n,r,d,_=e._i,i=Ma.exec(_)||ha.exec(_);if(i){for(L(e).iso=!0,a=0,t=La.length;a<t;a++)if(La[a][1].exec(i[1])){n=La[a][0],s=!1!==La[a][2];break}if(null==n)return void(e._isValid=!1);if(i[3]){for(a=0,t=Ya.length;a<t;a++)if(Ya[a][1].exec(i[3])){r=(i[2]||" ")+Ya[a][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(i[4]){if(!ca.exec(i[4]))return void(e._isValid=!1);d="Z"}e._f=n+(r||"")+(d||""),va(e)}else e._isValid=!1}function Da(e,a,t,s,n,r){var d=[function(e){var a=parseInt(e,10);{if(a<=49)return 2e3+a;if(a<=999)return 1900+a}return a}(e),je.indexOf(a),parseInt(t,10),parseInt(s,10),parseInt(n,10)];return r&&d.push(parseInt(r,10)),d}function Ta(e){var a,t,s,n,r=fa.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(r){if(a=Da(r[4],r[3],r[2],r[5],r[6],r[7]),t=r[1],s=a,n=e,t&&Ve.indexOf(t)!==new Date(s[0],s[1],s[2]).getDay()&&(L(n).weekdayMismatch=!0,!void(n._isValid=!1)))return;e._a=a,e._tzm=function(e,a,t){if(e)return pa[e];if(a)return 0;var s=parseInt(t,10),n=s%100;return 60*((s-n)/100)+n}(r[8],r[9],r[10]),e._d=Ne.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),L(e).rfc2822=!0}else e._isValid=!1}function ga(e,a,t){return null!=e?e:null!=a?a:t}function wa(e){var a,t,s,n,r,d,_,i=[];if(!e._d){for(d=e,_=new Date(M.now()),s=d._useUTC?[_.getUTCFullYear(),_.getUTCMonth(),_.getUTCDate()]:[_.getFullYear(),_.getMonth(),_.getDate()],e._w&&null==e._a[ke]&&null==e._a[pe]&&function(e){var a,t,s,n,r,d,_,i,o;null!=(a=e._w).GG||null!=a.W||null!=a.E?(r=1,d=4,t=ga(a.GG,e._a[fe],Ce(Sa(),1,4).year),s=ga(a.W,1),((n=ga(a.E,1))<1||7<n)&&(i=!0)):(r=e._locale._week.dow,d=e._locale._week.doy,o=Ce(Sa(),r,d),t=ga(a.gg,e._a[fe],o.year),s=ga(a.w,o.week),null!=a.d?((n=a.d)<0||6<n)&&(i=!0):null!=a.e?(n=a.e+r,(a.e<0||6<a.e)&&(i=!0)):n=r);s<1||s>Ie(t,r,d)?L(e)._overflowWeeks=!0:null!=i?L(e)._overflowWeekday=!0:(_=Re(t,s,n,r,d),e._a[fe]=_.year,e._dayOfYear=_.dayOfYear)}(e),null!=e._dayOfYear&&(r=ga(e._a[fe],s[fe]),(e._dayOfYear>Fe(r)||0===e._dayOfYear)&&(L(e)._overflowDayOfYear=!0),t=Ne(r,0,e._dayOfYear),e._a[pe]=t.getUTCMonth(),e._a[ke]=t.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=i[a]=s[a];for(;a<7;a++)e._a[a]=i[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[De]&&0===e._a[Te]&&0===e._a[ge]&&0===e._a[we]&&(e._nextDay=!0,e._a[De]=0),e._d=(e._useUTC?Ne:function(e,a,t,s,n,r,d){var _;return e<100&&0<=e?(_=new Date(e+400,a,t,s,n,r,d),isFinite(_.getFullYear())&&_.setFullYear(e)):_=new Date(e,a,t,s,n,r,d),_}).apply(null,i),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[De]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(L(e).weekdayMismatch=!0)}}function va(e){if(e._f!==M.ISO_8601)if(e._f!==M.RFC_2822){e._a=[],L(e).empty=!0;for(var a,t,s,n,r,d,_,i=""+e._i,o=i.length,m=0,u=E(e._f,e._locale).match(j)||[],l=0;l<u.length;l++)t=u[l],(a=(i.match(Me(t,e))||[])[0])&&(0<(s=i.substr(0,i.indexOf(a))).length&&L(e).unusedInput.push(s),i=i.slice(i.indexOf(a)+a.length),m+=a.length),P[t]?(a?L(e).empty=!1:L(e).unusedTokens.push(t),r=t,_=e,null!=(d=a)&&h(ce,r)&&ce[r](d,_._a,_,r)):e._strict&&!a&&L(e).unusedTokens.push(t);L(e).charsLeftOver=o-m,0<i.length&&L(e).unusedInput.push(i),e._a[De]<=12&&!0===L(e).bigHour&&0<e._a[De]&&(L(e).bigHour=void 0),L(e).parsedDateParts=e._a.slice(0),L(e).meridiem=e._meridiem,e._a[De]=function(e,a,t){var s;if(null==t)return a;return null!=e.meridiemHour?e.meridiemHour(a,t):(null!=e.isPM&&((s=e.isPM(t))&&a<12&&(a+=12),s||12!==a||(a=0)),a)}(e._locale,e._a[De],e._meridiem),null!==(n=L(e).era)&&(e._a[fe]=e._locale.erasConvertYear(n,e._a[fe])),wa(e),la(e)}else Ta(e);else ka(e)}function ba(e){var a,t,s=e._i,n=e._f;return e._locale=e._locale||ua(e._l),null===s||void 0===n&&""===s?y({nullInput:!0}):("string"==typeof s&&(e._i=s=e._locale.preparse(s)),D(s)?new k(la(s)):(d(s)?e._d=s:_(n)?function(e){var a,t,s,n,r,d,_=!1;if(0===e._f.length)return L(e).invalidFormat=!0,e._d=new Date(NaN);for(n=0;n<e._f.length;n++)r=0,d=!1,a=p({},e),null!=e._useUTC&&(a._useUTC=e._useUTC),a._f=e._f[n],va(a),Y(a)&&(d=!0),r+=L(a).charsLeftOver,r+=10*L(a).unusedTokens.length,L(a).score=r,_?r<s&&(s=r,t=a):(null==s||r<s||d)&&(s=r,t=a,d&&(_=!0));l(e,t||a)}(e):n?va(e):r(t=(a=e)._i)?a._d=new Date(M.now()):d(t)?a._d=new Date(t.valueOf()):"string"==typeof t?function(e){var a=ya.exec(e._i);null===a?(ka(e),!1===e._isValid&&(delete e._isValid,Ta(e),!1===e._isValid&&(delete e._isValid,e._strict?e._isValid=!1:M.createFromInputFallback(e)))):e._d=new Date(+a[1])}(a):_(t)?(a._a=u(t.slice(0),function(e){return parseInt(e,10)}),wa(a)):i(t)?function(e){var a,t;e._d||(t=void 0===(a=J(e._i)).day?a.date:a.day,e._a=u([a.year,a.month,t,a.hour,a.minute,a.second,a.millisecond],function(e){return e&&parseInt(e,10)}),wa(e))}(a):m(t)?a._d=new Date(t):M.createFromInputFallback(a),Y(e)||(e._d=null),e))}function Ha(e,a,t,s,n){var r,d={};return!0!==a&&!1!==a||(s=a,a=void 0),!0!==t&&!1!==t||(s=t,t=void 0),(i(e)&&o(e)||_(e)&&0===e.length)&&(e=void 0),d._isAMomentObject=!0,d._useUTC=d._isUTC=n,d._l=t,d._i=e,d._f=a,d._strict=s,(r=new k(la(ba(d))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Sa(e,a,t,s){return Ha(e,a,t,s,!1)}M.createFromInputFallback=t("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),M.ISO_8601=function(){},M.RFC_2822=function(){};var ja=t("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Sa.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:y()}),xa=t("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Sa.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:y()});function Oa(e,a){var t,s;if(1===a.length&&_(a[0])&&(a=a[0]),!a.length)return Sa();for(t=a[0],s=1;s<a.length;++s)a[s].isValid()&&!a[s][e](t)||(t=a[s]);return t}var Pa=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Wa(e){var a=J(e),t=a.year||0,s=a.quarter||0,n=a.month||0,r=a.week||a.isoWeek||0,d=a.day||0,_=a.hour||0,i=a.minute||0,o=a.second||0,m=a.millisecond||0;this._isValid=function(e){var a,t,s=!1;for(a in e)if(h(e,a)&&(-1===ye.call(Pa,a)||null!=e[a]&&isNaN(e[a])))return!1;for(t=0;t<Pa.length;++t)if(e[Pa[t]]){if(s)return!1;parseFloat(e[Pa[t]])!==G(e[Pa[t]])&&(s=!0)}return!0}(a),this._milliseconds=+m+1e3*o+6e4*i+1e3*_*60*60,this._days=+d+7*r,this._months=+n+3*s+12*t,this._data={},this._locale=ua(),this._bubble()}function Aa(e){return e instanceof Wa}function Ea(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Fa(e,t){W(e,0,0,function(){var e=this.utcOffset(),a="+";return e<0&&(e=-e,a="-"),a+S(~~(e/60),2)+t+S(~~e%60,2)})}Fa("Z",":"),Fa("ZZ",""),le("Z",me),le("ZZ",me),Le(["Z","ZZ"],function(e,a,t){t._useUTC=!0,t._tzm=Na(me,e)});var za=/([\+\-]|\d\d)/gi;function Na(e,a){var t,s,n=(a||"").match(e);return null===n?null:0===(s=60*(t=((n[n.length-1]||[])+"").match(za)||["-",0,0])[1]+G(t[2]))?0:"+"===t[0]?s:-s}function Ja(e,a){var t,s;return a._isUTC?(t=a.clone(),s=(D(e)||d(e)?e.valueOf():Sa(e).valueOf())-t.valueOf(),t._d.setTime(t._d.valueOf()+s),M.updateOffset(t,!1),t):Sa(e).local()}function Ra(e){return-Math.round(e._d.getTimezoneOffset())}function Ca(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}M.updateOffset=function(){};var Ia=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Ua=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ga(e,a){var t,s,n,r=e,d=null;return Aa(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:m(e)||!isNaN(+e)?(r={},a?r[a]=+e:r.milliseconds=+e):(d=Ia.exec(e))?(t="-"===d[1]?-1:1,r={y:0,d:G(d[ke])*t,h:G(d[De])*t,m:G(d[Te])*t,s:G(d[ge])*t,ms:G(Ea(1e3*d[we]))*t}):(d=Ua.exec(e))?(t="-"===d[1]?-1:1,r={y:Va(d[2],t),M:Va(d[3],t),w:Va(d[4],t),d:Va(d[5],t),h:Va(d[6],t),m:Va(d[7],t),s:Va(d[8],t)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=function(e,a){var t;if(!e.isValid()||!a.isValid())return{milliseconds:0,months:0};a=Ja(a,e),e.isBefore(a)?t=Ba(e,a):((t=Ba(a,e)).milliseconds=-t.milliseconds,t.months=-t.months);return t}(Sa(r.from),Sa(r.to)),(r={}).ms=n.milliseconds,r.M=n.months),s=new Wa(r),Aa(e)&&h(e,"_locale")&&(s._locale=e._locale),Aa(e)&&h(e,"_isValid")&&(s._isValid=e._isValid),s}function Va(e,a){var t=e&&parseFloat(e.replace(",","."));return(isNaN(t)?0:t)*a}function Ba(e,a){var t={};return t.months=a.month()-e.month()+12*(a.year()-e.year()),e.clone().add(t.months,"M").isAfter(a)&&--t.months,t.milliseconds=a-e.clone().add(t.months,"M"),t}function Ka(s,n){return function(e,a){var t;return null===a||isNaN(+a)||(w(n,"moment()."+n+"(period, number) is deprecated. Please use moment()."+n+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),t=e,e=a,a=t),qa(this,Ga(e,a),s),this}}function qa(e,a,t,s){var n=a._milliseconds,r=Ea(a._days),d=Ea(a._months);e.isValid()&&(s=null==s||s,d&&We(e,B(e,"Month")+d*t),r&&K(e,"Date",B(e,"Date")+r*t),n&&e._d.setTime(e._d.valueOf()+n*t),s&&M.updateOffset(e,r||d))}Ga.fn=Wa.prototype,Ga.invalid=function(){return Ga(NaN)};var Za=Ka(1,"add"),$a=Ka(-1,"subtract");function Qa(e){return"string"==typeof e||e instanceof String}function Xa(e){return D(e)||d(e)||Qa(e)||m(e)||function(a){var e=_(a),t=!1;e&&(t=0===a.filter(function(e){return!m(e)&&Qa(a)}).length);return e&&t}(e)||function(e){var a,t,s=i(e)&&!o(e),n=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(a=0;a<r.length;a+=1)t=r[a],n=n||h(e,t);return s&&n}(e)||null==e}function et(e,a){if(e.date()<a.date())return-et(a,e);var t=12*(a.year()-e.year())+(a.month()-e.month()),s=e.clone().add(t,"months"),n=a-s<0?(a-s)/(s-e.clone().add(t-1,"months")):(a-s)/(e.clone().add(1+t,"months")-s);return-(t+n)||0}function at(e){var a;return void 0===e?this._locale._abbr:(null!=(a=ua(e))&&(this._locale=a),this)}M.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",M.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var tt=t("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function st(){return this._locale}var nt=126227808e5;function rt(e,a){return(e%a+a)%a}function dt(e,a,t){return e<100&&0<=e?new Date(e+400,a,t)-nt:new Date(e,a,t).valueOf()}function _t(e,a,t){return e<100&&0<=e?Date.UTC(e+400,a,t)-nt:Date.UTC(e,a,t)}function it(e,a){return a.erasAbbrRegex(e)}function ot(){for(var e=[],a=[],t=[],s=[],n=this.eras(),r=0,d=n.length;r<d;++r)a.push(he(n[r].name)),e.push(he(n[r].abbr)),t.push(he(n[r].narrow)),s.push(he(n[r].name)),s.push(he(n[r].abbr)),s.push(he(n[r].narrow));this._erasRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+a.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+e.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+t.join("|")+")","i")}function mt(e,a){W(0,[e,e.length],0,a)}function ut(e,a,t,s,n){var r;return null==e?Ce(this,s,n).year:((r=Ie(e,s,n))<a&&(a=r),function(e,a,t,s,n){var r=Re(e,a,t,s,n),d=Ne(r.year,0,r.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}.call(this,e,a,t,s,n))}W("N",0,0,"eraAbbr"),W("NN",0,0,"eraAbbr"),W("NNN",0,0,"eraAbbr"),W("NNNN",0,0,"eraName"),W("NNNNN",0,0,"eraNarrow"),W("y",["y",1],"yo","eraYear"),W("y",["yy",2],0,"eraYear"),W("y",["yyy",3],0,"eraYear"),W("y",["yyyy",4],0,"eraYear"),le("N",it),le("NN",it),le("NNN",it),le("NNNN",function(e,a){return a.erasNameRegex(e)}),le("NNNNN",function(e,a){return a.erasNarrowRegex(e)}),Le(["N","NN","NNN","NNNN","NNNNN"],function(e,a,t,s){var n=t._locale.erasParse(e,s,t._strict);n?L(t).era=n:L(t).invalidEra=e}),le("y",_e),le("yy",_e),le("yyy",_e),le("yyyy",_e),le("yo",function(e,a){return a._eraYearOrdinalRegex||_e}),Le(["y","yy","yyy","yyyy"],fe),Le(["yo"],function(e,a,t,s){var n;t._locale._eraYearOrdinalRegex&&(n=e.match(t._locale._eraYearOrdinalRegex)),t._locale.eraYearOrdinalParse?a[fe]=t._locale.eraYearOrdinalParse(e,n):a[fe]=parseInt(e,10)}),W(0,["gg",2],0,function(){return this.weekYear()%100}),W(0,["GG",2],0,function(){return this.isoWeekYear()%100}),mt("gggg","weekYear"),mt("ggggg","weekYear"),mt("GGGG","isoWeekYear"),mt("GGGGG","isoWeekYear"),z("weekYear","gg"),z("isoWeekYear","GG"),C("weekYear",1),C("isoWeekYear",1),le("G",ie),le("g",ie),le("GG",ae,$),le("gg",ae,$),le("GGGG",re,X),le("gggg",re,X),le("GGGGG",de,ee),le("ggggg",de,ee),Ye(["gggg","ggggg","GGGG","GGGGG"],function(e,a,t,s){a[s.substr(0,2)]=G(e)}),Ye(["gg","GG"],function(e,a,t,s){a[s]=M.parseTwoDigitYear(e)}),W("Q",0,"Qo","quarter"),z("quarter","Q"),C("quarter",7),le("Q",Z),Le("Q",function(e,a){a[pe]=3*(G(e)-1)}),W("D",["DD",2],"Do","date"),z("date","D"),C("date",9),le("D",ae),le("DD",ae,$),le("Do",function(e,a){return e?a._dayOfMonthOrdinalParse||a._ordinalParse:a._dayOfMonthOrdinalParseLenient}),Le(["D","DD"],ke),Le("Do",function(e,a){a[ke]=G(e.match(ae)[0])});var lt=V("Date",!0);W("DDD",["DDDD",3],"DDDo","dayOfYear"),z("dayOfYear","DDD"),C("dayOfYear",4),le("DDD",ne),le("DDDD",Q),Le(["DDD","DDDD"],function(e,a,t){t._dayOfYear=G(e)}),W("m",["mm",2],0,"minute"),z("minute","m"),C("minute",14),le("m",ae),le("mm",ae,$),Le(["m","mm"],Te);var Mt=V("Minutes",!1);W("s",["ss",2],0,"second"),z("second","s"),C("second",15),le("s",ae),le("ss",ae,$),Le(["s","ss"],ge);var ht,ct,Lt=V("Seconds",!1);for(W("S",0,0,function(){return~~(this.millisecond()/100)}),W(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),W(0,["SSS",3],0,"millisecond"),W(0,["SSSS",4],0,function(){return 10*this.millisecond()}),W(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),W(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),W(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),W(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),W(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),z("millisecond","ms"),C("millisecond",16),le("S",ne,Z),le("SS",ne,$),le("SSS",ne,Q),ht="SSSS";ht.length<=9;ht+="S")le(ht,_e);function Yt(e,a){a[we]=G(1e3*("0."+e))}for(ht="S";ht.length<=9;ht+="S")Le(ht,Yt);ct=V("Milliseconds",!1),W("z",0,0,"zoneAbbr"),W("zz",0,0,"zoneName");var yt=k.prototype;function ft(e){return e}yt.add=Za,yt.calendar=function(e,a){1===arguments.length&&(Xa(arguments[0])?(e=arguments[0],a=void 0):function(e){for(var a=i(e)&&!o(e),t=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],n=0;n<s.length;n+=1)t=t||h(e,s[n]);return a&&t}(arguments[0])&&(a=arguments[0],e=void 0));var t=e||Sa(),s=Ja(t,this).startOf("day"),n=M.calendarFormat(this,s)||"sameElse",r=a&&(v(a[n])?a[n].call(this,t):a[n]);return this.format(r||this.localeData().calendar(n,this,Sa(t)))},yt.clone=function(){return new k(this)},yt.diff=function(e,a,t){var s,n,r;if(!this.isValid())return NaN;if(!(s=Ja(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),a=N(a)){case"year":r=et(this,s)/12;break;case"month":r=et(this,s);break;case"quarter":r=et(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-n)/864e5;break;case"week":r=(this-s-n)/6048e5;break;default:r=this-s}return t?r:U(r)},yt.endOf=function(e){var a,t;if(void 0===(e=N(e))||"millisecond"===e||!this.isValid())return this;switch(t=this._isUTC?_t:dt,e){case"year":a=t(this.year()+1,0,1)-1;break;case"quarter":a=t(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":a=t(this.year(),this.month()+1,1)-1;break;case"week":a=t(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":a=t(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":a=t(this.year(),this.month(),this.date()+1)-1;break;case"hour":a=this._d.valueOf(),a+=36e5-rt(a+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":a=this._d.valueOf(),a+=6e4-rt(a,6e4)-1;break;case"second":a=this._d.valueOf(),a+=1e3-rt(a,1e3)-1;break}return this._d.setTime(a),M.updateOffset(this,!0),this},yt.format=function(e){e=e||(this.isUtc()?M.defaultFormatUtc:M.defaultFormat);var a=A(this,e);return this.localeData().postformat(a)},yt.from=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Sa(e).isValid())?Ga({to:this,from:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},yt.fromNow=function(e){return this.from(Sa(),e)},yt.to=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Sa(e).isValid())?Ga({from:this,to:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},yt.toNow=function(e){return this.to(Sa(),e)},yt.get=function(e){return v(this[e=N(e)])?this[e]():this},yt.invalidAt=function(){return L(this).overflow},yt.isAfter=function(e,a){var t=D(e)?e:Sa(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=N(a)||"millisecond")?this.valueOf()>t.valueOf():t.valueOf()<this.clone().startOf(a).valueOf())},yt.isBefore=function(e,a){var t=D(e)?e:Sa(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=N(a)||"millisecond")?this.valueOf()<t.valueOf():this.clone().endOf(a).valueOf()<t.valueOf())},yt.isBetween=function(e,a,t,s){var n=D(e)?e:Sa(e),r=D(a)?a:Sa(a);return!!(this.isValid()&&n.isValid()&&r.isValid())&&(("("===(s=s||"()")[0]?this.isAfter(n,t):!this.isBefore(n,t))&&(")"===s[1]?this.isBefore(r,t):!this.isAfter(r,t)))},yt.isSame=function(e,a){var t,s=D(e)?e:Sa(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(a=N(a)||"millisecond")?this.valueOf()===s.valueOf():(t=s.valueOf(),this.clone().startOf(a).valueOf()<=t&&t<=this.clone().endOf(a).valueOf()))},yt.isSameOrAfter=function(e,a){return this.isSame(e,a)||this.isAfter(e,a)},yt.isSameOrBefore=function(e,a){return this.isSame(e,a)||this.isBefore(e,a)},yt.isValid=function(){return Y(this)},yt.lang=tt,yt.locale=at,yt.localeData=st,yt.max=xa,yt.min=ja,yt.parsingFlags=function(){return l({},L(this))},yt.set=function(e,a){if("object"==typeof e)for(var t=function(e){var a,t=[];for(a in e)h(e,a)&&t.push({unit:a,priority:R[a]});return t.sort(function(e,a){return e.priority-a.priority}),t}(e=J(e)),s=0;s<t.length;s++)this[t[s].unit](e[t[s].unit]);else if(v(this[e=N(e)]))return this[e](a);return this},yt.startOf=function(e){var a,t;if(void 0===(e=N(e))||"millisecond"===e||!this.isValid())return this;switch(t=this._isUTC?_t:dt,e){case"year":a=t(this.year(),0,1);break;case"quarter":a=t(this.year(),this.month()-this.month()%3,1);break;case"month":a=t(this.year(),this.month(),1);break;case"week":a=t(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":a=t(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":a=t(this.year(),this.month(),this.date());break;case"hour":a=this._d.valueOf(),a-=rt(a+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":a=this._d.valueOf(),a-=rt(a,6e4);break;case"second":a=this._d.valueOf(),a-=rt(a,1e3);break}return this._d.setTime(a),M.updateOffset(this,!0),this},yt.subtract=$a,yt.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},yt.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},yt.toDate=function(){return new Date(this.valueOf())},yt.toISOString=function(e){if(!this.isValid())return null;var a=!0!==e,t=a?this.clone().utc():this;return t.year()<0||9999<t.year()?A(t,a?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):v(Date.prototype.toISOString)?a?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(t,"Z")):A(t,a?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},yt.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,a,t,s="moment",n="";return this.isLocal()||(s=0===this.utcOffset()?"moment.utc":"moment.parseZone",n="Z"),e="["+s+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",t=n+'[")]',this.format(e+a+"-MM-DD[T]HH:mm:ss.SSS"+t)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(yt[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),yt.toJSON=function(){return this.isValid()?this.toISOString():null},yt.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},yt.unix=function(){return Math.floor(this.valueOf()/1e3)},yt.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},yt.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},yt.eraName=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].name;if(a[t].until<=e&&e<=a[t].since)return a[t].name}return""},yt.eraNarrow=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].narrow;if(a[t].until<=e&&e<=a[t].since)return a[t].narrow}return""},yt.eraAbbr=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].abbr;if(a[t].until<=e&&e<=a[t].since)return a[t].abbr}return""},yt.eraYear=function(){for(var e,a,t=this.localeData().eras(),s=0,n=t.length;s<n;++s)if(e=t[s].since<=t[s].until?1:-1,a=this.clone().startOf("day").valueOf(),t[s].since<=a&&a<=t[s].until||t[s].until<=a&&a<=t[s].since)return(this.year()-M(t[s].since).year())*e+t[s].offset;return this.year()},yt.year=ze,yt.isLeapYear=function(){return I(this.year())},yt.weekYear=function(e){return ut.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},yt.isoWeekYear=function(e){return ut.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},yt.quarter=yt.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},yt.month=Ae,yt.daysInMonth=function(){return He(this.year(),this.month())},yt.week=yt.weeks=function(e){var a=this.localeData().week(this);return null==e?a:this.add(7*(e-a),"d")},yt.isoWeek=yt.isoWeeks=function(e){var a=Ce(this,1,4).week;return null==e?a:this.add(7*(e-a),"d")},yt.weeksInYear=function(){var e=this.localeData()._week;return Ie(this.year(),e.dow,e.doy)},yt.weeksInWeekYear=function(){var e=this.localeData()._week;return Ie(this.weekYear(),e.dow,e.doy)},yt.isoWeeksInYear=function(){return Ie(this.year(),1,4)},yt.isoWeeksInISOWeekYear=function(){return Ie(this.isoWeekYear(),1,4)},yt.date=lt,yt.day=yt.days=function(e){if(!this.isValid())return null!=e?this:NaN;var a,t,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(a=e,t=this.localeData(),e="string"!=typeof a?a:isNaN(a)?"number"==typeof(a=t.weekdaysParse(a))?a:null:parseInt(a,10),this.add(e-s,"d")):s},yt.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var a=(this.day()+7-this.localeData()._week.dow)%7;return null==e?a:this.add(e-a,"d")},yt.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var a,t,s=(a=e,t=this.localeData(),"string"==typeof a?t.weekdaysParse(a)%7||7:isNaN(a)?null:a);return this.day(this.day()%7?s:s-7)},yt.dayOfYear=function(e){var a=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?a:this.add(e-a,"d")},yt.hour=yt.hours=aa,yt.minute=yt.minutes=Mt,yt.second=yt.seconds=Lt,yt.millisecond=yt.milliseconds=ct,yt.utcOffset=function(e,a,t){var s,n=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?n:Ra(this);if("string"==typeof e){if(null===(e=Na(me,e)))return this}else Math.abs(e)<16&&!t&&(e*=60);return!this._isUTC&&a&&(s=Ra(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),n!==e&&(!a||this._changeInProgress?qa(this,Ga(e-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,M.updateOffset(this,!0),this._changeInProgress=null)),this},yt.utc=function(e){return this.utcOffset(0,e)},yt.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Ra(this),"m")),this},yt.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=Na(oe,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},yt.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Sa(e).utcOffset():0,(this.utcOffset()-e)%60==0)},yt.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},yt.isLocal=function(){return!!this.isValid()&&!this._isUTC},yt.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},yt.isUtc=Ca,yt.isUTC=Ca,yt.zoneAbbr=function(){return this._isUTC?"UTC":""},yt.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},yt.dates=t("dates accessor is deprecated. Use date instead.",lt),yt.months=t("months accessor is deprecated. Use month instead",Ae),yt.years=t("years accessor is deprecated. Use year instead",ze),yt.zone=t("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,a),this):-this.utcOffset()}),yt.isDSTShifted=t("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!r(this._isDSTShifted))return this._isDSTShifted;var e,a={};return p(a,this),(a=ba(a))._a?(e=(a._isUTC?c:Sa)(a._a),this._isDSTShifted=this.isValid()&&0<function(e,a,t){for(var s=Math.min(e.length,a.length),n=Math.abs(e.length-a.length),r=0,d=0;d<s;d++)(t&&e[d]!==a[d]||!t&&G(e[d])!==G(a[d]))&&r++;return r+n}(a._a,e.toArray())):this._isDSTShifted=!1,this._isDSTShifted});var pt=H.prototype;function kt(e,a,t,s){var n=ua(),r=c().set(s,a);return n[t](r,e)}function Dt(e,a,t){if(m(e)&&(a=e,e=void 0),e=e||"",null!=a)return kt(e,a,t,"month");for(var s=[],n=0;n<12;n++)s[n]=kt(e,n,t,"month");return s}function Tt(e,a,t,s){a=("boolean"==typeof e?m(a)&&(t=a,a=void 0):(a=e,e=!1,m(t=a)&&(t=a,a=void 0)),a||"");var n,r=ua(),d=e?r._week.dow:0,_=[];if(null!=t)return kt(a,(t+d)%7,s,"day");for(n=0;n<7;n++)_[n]=kt(a,(n+d)%7,s,"day");return _}pt.calendar=function(e,a,t){var s=this._calendar[e]||this._calendar.sameElse;return v(s)?s.call(a,t):s},pt.longDateFormat=function(e){var a=this._longDateFormat[e],t=this._longDateFormat[e.toUpperCase()];return a||!t?a:(this._longDateFormat[e]=t.match(j).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},pt.invalidDate=function(){return this._invalidDate},pt.ordinal=function(e){return this._ordinal.replace("%d",e)},pt.preparse=ft,pt.postformat=ft,pt.relativeTime=function(e,a,t,s){var n=this._relativeTime[t];return v(n)?n(e,a,t,s):n.replace(/%d/i,e)},pt.pastFuture=function(e,a){var t=this._relativeTime[0<e?"future":"past"];return v(t)?t(a):t.replace(/%s/i,a)},pt.set=function(e){var a,t;for(t in e)h(e,t)&&(v(a=e[t])?this[t]=a:this["_"+t]=a);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},pt.eras=function(e,a){for(var t,s=this._eras||ua("en")._eras,n=0,r=s.length;n<r;++n){switch(typeof s[n].since){case"string":t=M(s[n].since).startOf("day"),s[n].since=t.valueOf();break}switch(typeof s[n].until){case"undefined":s[n].until=1/0;break;case"string":t=M(s[n].until).startOf("day").valueOf(),s[n].until=t.valueOf();break}}return s},pt.erasParse=function(e,a,t){var s,n,r,d,_,i=this.eras();for(e=e.toUpperCase(),s=0,n=i.length;s<n;++s)if(r=i[s].name.toUpperCase(),d=i[s].abbr.toUpperCase(),_=i[s].narrow.toUpperCase(),t)switch(a){case"N":case"NN":case"NNN":if(d===e)return i[s];break;case"NNNN":if(r===e)return i[s];break;case"NNNNN":if(_===e)return i[s];break}else if(0<=[r,d,_].indexOf(e))return i[s]},pt.erasConvertYear=function(e,a){var t=e.since<=e.until?1:-1;return void 0===a?M(e.since).year():M(e.since).year()+(a-e.offset)*t},pt.erasAbbrRegex=function(e){return h(this,"_erasAbbrRegex")||ot.call(this),e?this._erasAbbrRegex:this._erasRegex},pt.erasNameRegex=function(e){return h(this,"_erasNameRegex")||ot.call(this),e?this._erasNameRegex:this._erasRegex},pt.erasNarrowRegex=function(e){return h(this,"_erasNarrowRegex")||ot.call(this),e?this._erasNarrowRegex:this._erasRegex},pt.months=function(e,a){return e?_(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||xe).test(a)?"format":"standalone"][e.month()]:_(this._months)?this._months:this._months.standalone},pt.monthsShort=function(e,a){return e?_(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[xe.test(a)?"format":"standalone"][e.month()]:_(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},pt.monthsParse=function(e,a,t){var s,n,r;if(this._monthsParseExact)return function(e,a,t){var s,n,r,d=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=c([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return t?"MMM"===a?-1!==(n=ye.call(this._shortMonthsParse,d))?n:null:-1!==(n=ye.call(this._longMonthsParse,d))?n:null:"MMM"===a?-1!==(n=ye.call(this._shortMonthsParse,d))||-1!==(n=ye.call(this._longMonthsParse,d))?n:null:-1!==(n=ye.call(this._longMonthsParse,d))||-1!==(n=ye.call(this._shortMonthsParse,d))?n:null}.call(this,e,a,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=c([2e3,s]),t&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),t||this._monthsParse[s]||(r="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),t&&"MMMM"===a&&this._longMonthsParse[s].test(e))return s;if(t&&"MMM"===a&&this._shortMonthsParse[s].test(e))return s;if(!t&&this._monthsParse[s].test(e))return s}},pt.monthsRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||Ee.call(this),e?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Pe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},pt.monthsShortRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||Ee.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=Oe),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},pt.week=function(e){return Ce(e,this._week.dow,this._week.doy).week},pt.firstDayOfYear=function(){return this._week.doy},pt.firstDayOfWeek=function(){return this._week.dow},pt.weekdays=function(e,a){var t=_(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(a)?"format":"standalone"];return!0===e?Ue(t,this._week.dow):e?t[e.day()]:t},pt.weekdaysMin=function(e){return!0===e?Ue(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},pt.weekdaysShort=function(e){return!0===e?Ue(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},pt.weekdaysParse=function(e,a,t){var s,n,r;if(this._weekdaysParseExact)return function(e,a,t){var s,n,r,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=c([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return t?"dddd"===a?-1!==(n=ye.call(this._weekdaysParse,d))?n:null:"ddd"===a?-1!==(n=ye.call(this._shortWeekdaysParse,d))?n:null:-1!==(n=ye.call(this._minWeekdaysParse,d))?n:null:"dddd"===a?-1!==(n=ye.call(this._weekdaysParse,d))||-1!==(n=ye.call(this._shortWeekdaysParse,d))||-1!==(n=ye.call(this._minWeekdaysParse,d))?n:null:"ddd"===a?-1!==(n=ye.call(this._shortWeekdaysParse,d))||-1!==(n=ye.call(this._weekdaysParse,d))||-1!==(n=ye.call(this._minWeekdaysParse,d))?n:null:-1!==(n=ye.call(this._minWeekdaysParse,d))||-1!==(n=ye.call(this._weekdaysParse,d))||-1!==(n=ye.call(this._shortWeekdaysParse,d))?n:null}.call(this,e,a,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=c([2e3,1]).day(s),t&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),t&&"dddd"===a&&this._fullWeekdaysParse[s].test(e))return s;if(t&&"ddd"===a&&this._shortWeekdaysParse[s].test(e))return s;if(t&&"dd"===a&&this._minWeekdaysParse[s].test(e))return s;if(!t&&this._weekdaysParse[s].test(e))return s}},pt.weekdaysRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Ke),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},pt.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},pt.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||$e.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ze),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},pt.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},pt.meridiem=function(e,a,t){return 11<e?t?"pm":"PM":t?"am":"AM"},oa("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1===G(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),M.lang=t("moment.lang is deprecated. Use moment.locale instead.",oa),M.langData=t("moment.langData is deprecated. Use moment.localeData instead.",ua);var gt=Math.abs;function wt(e,a,t,s){var n=Ga(a,t);return e._milliseconds+=s*n._milliseconds,e._days+=s*n._days,e._months+=s*n._months,e._bubble()}function vt(e){return e<0?Math.floor(e):Math.ceil(e)}function bt(e){return 4800*e/146097}function Ht(e){return 146097*e/4800}function St(e){return function(){return this.as(e)}}var jt=St("ms"),xt=St("s"),Ot=St("m"),Pt=St("h"),Wt=St("d"),At=St("w"),Et=St("M"),Ft=St("Q"),zt=St("y");function Nt(e){return function(){return this.isValid()?this._data[e]:NaN}}var Jt=Nt("milliseconds"),Rt=Nt("seconds"),Ct=Nt("minutes"),It=Nt("hours"),Ut=Nt("days"),Gt=Nt("months"),Vt=Nt("years");var Bt=Math.round,Kt={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function qt(e,a,t,s){var n=Ga(e).abs(),r=Bt(n.as("s")),d=Bt(n.as("m")),_=Bt(n.as("h")),i=Bt(n.as("d")),o=Bt(n.as("M")),m=Bt(n.as("w")),u=Bt(n.as("y")),l=(r<=t.ss?["s",r]:r<t.s&&["ss",r])||d<=1&&["m"]||d<t.m&&["mm",d]||_<=1&&["h"]||_<t.h&&["hh",_]||i<=1&&["d"]||i<t.d&&["dd",i];return null!=t.w&&(l=l||m<=1&&["w"]||m<t.w&&["ww",m]),(l=l||o<=1&&["M"]||o<t.M&&["MM",o]||u<=1&&["y"]||["yy",u])[2]=a,l[3]=0<+e,l[4]=s,function(e,a,t,s,n){return n.relativeTime(a||1,!!t,e,s)}.apply(null,l)}var Zt=Math.abs;function $t(e){return(0<e)-(e<0)||+e}function Qt(){if(!this.isValid())return this.localeData().invalidDate();var e,a,t,s,n,r,d,_,i=Zt(this._milliseconds)/1e3,o=Zt(this._days),m=Zt(this._months),u=this.asSeconds();return u?(e=U(i/60),a=U(e/60),i%=60,e%=60,t=U(m/12),m%=12,s=i?i.toFixed(3).replace(/\.?0+$/,""):"",n=u<0?"-":"",r=$t(this._months)!==$t(u)?"-":"",d=$t(this._days)!==$t(u)?"-":"",_=$t(this._milliseconds)!==$t(u)?"-":"",n+"P"+(t?r+t+"Y":"")+(m?r+m+"M":"")+(o?d+o+"D":"")+(a||e||i?"T":"")+(a?_+a+"H":"")+(e?_+e+"M":"")+(i?_+s+"S":"")):"P0D"}var Xt=Wa.prototype;Xt.isValid=function(){return this._isValid},Xt.abs=function(){var e=this._data;return this._milliseconds=gt(this._milliseconds),this._days=gt(this._days),this._months=gt(this._months),e.milliseconds=gt(e.milliseconds),e.seconds=gt(e.seconds),e.minutes=gt(e.minutes),e.hours=gt(e.hours),e.months=gt(e.months),e.years=gt(e.years),this},Xt.add=function(e,a){return wt(this,e,a,1)},Xt.subtract=function(e,a){return wt(this,e,a,-1)},Xt.as=function(e){if(!this.isValid())return NaN;var a,t,s=this._milliseconds;if("month"===(e=N(e))||"quarter"===e||"year"===e)switch(a=this._days+s/864e5,t=this._months+bt(a),e){case"month":return t;case"quarter":return t/3;case"year":return t/12}else switch(a=this._days+Math.round(Ht(this._months)),e){case"week":return a/7+s/6048e5;case"day":return a+s/864e5;case"hour":return 24*a+s/36e5;case"minute":return 1440*a+s/6e4;case"second":return 86400*a+s/1e3;case"millisecond":return Math.floor(864e5*a)+s;default:throw new Error("Unknown unit "+e)}},Xt.asMilliseconds=jt,Xt.asSeconds=xt,Xt.asMinutes=Ot,Xt.asHours=Pt,Xt.asDays=Wt,Xt.asWeeks=At,Xt.asMonths=Et,Xt.asQuarters=Ft,Xt.asYears=zt,Xt.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*G(this._months/12):NaN},Xt._bubble=function(){var e,a,t,s,n,r=this._milliseconds,d=this._days,_=this._months,i=this._data;return 0<=r&&0<=d&&0<=_||r<=0&&d<=0&&_<=0||(r+=864e5*vt(Ht(_)+d),_=d=0),i.milliseconds=r%1e3,e=U(r/1e3),i.seconds=e%60,a=U(e/60),i.minutes=a%60,t=U(a/60),i.hours=t%24,d+=U(t/24),_+=n=U(bt(d)),d-=vt(Ht(n)),s=U(_/12),_%=12,i.days=d,i.months=_,i.years=s,this},Xt.clone=function(){return Ga(this)},Xt.get=function(e){return e=N(e),this.isValid()?this[e+"s"]():NaN},Xt.milliseconds=Jt,Xt.seconds=Rt,Xt.minutes=Ct,Xt.hours=It,Xt.days=Ut,Xt.weeks=function(){return U(this.days()/7)},Xt.months=Gt,Xt.years=Vt,Xt.humanize=function(e,a){if(!this.isValid())return this.localeData().invalidDate();var t,s,n=!1,r=Kt;return"object"==typeof e&&(a=e,e=!1),"boolean"==typeof e&&(n=e),"object"==typeof a&&(r=Object.assign({},Kt,a),null!=a.s&&null==a.ss&&(r.ss=a.s-1)),t=this.localeData(),s=qt(this,!n,r,t),n&&(s=t.pastFuture(+this,s)),t.postformat(s)},Xt.toISOString=Qt,Xt.toString=Qt,Xt.toJSON=Qt,Xt.locale=at,Xt.localeData=st,Xt.toIsoString=t("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Qt),Xt.lang=tt,W("X",0,0,"unix"),W("x",0,0,"valueOf"),le("x",ie),le("X",/[+-]?\d+(\.\d{1,3})?/),Le("X",function(e,a,t){t._d=new Date(1e3*parseFloat(e))}),Le("x",function(e,a,t){t._d=new Date(G(e))}),M.version="2.28.0",e=Sa,M.fn=yt,M.min=function(){return Oa("isBefore",[].slice.call(arguments,0))},M.max=function(){return Oa("isAfter",[].slice.call(arguments,0))},M.now=function(){return Date.now?Date.now():+new Date},M.utc=c,M.unix=function(e){return Sa(1e3*e)},M.months=function(e,a){return Dt(e,a,"months")},M.isDate=d,M.locale=oa,M.invalid=y,M.duration=Ga,M.isMoment=D,M.weekdays=function(e,a,t){return Tt(e,a,t,"weekdays")},M.parseZone=function(){return Sa.apply(null,arguments).parseZone()},M.localeData=ua,M.isDuration=Aa,M.monthsShort=function(e,a){return Dt(e,a,"monthsShort")},M.weekdaysMin=function(e,a,t){return Tt(e,a,t,"weekdaysMin")},M.defineLocale=ma,M.updateLocale=function(e,a){var t,s,n;return null!=a?(n=sa,null!=na[e]&&null!=na[e].parentLocale?na[e].set(b(na[e]._config,a)):(null!=(s=ia(e))&&(n=s._config),a=b(n,a),null==s&&(a.abbr=e),(t=new H(a)).parentLocale=na[e],na[e]=t),oa(e)):null!=na[e]&&(null!=na[e].parentLocale?(na[e]=na[e].parentLocale,e===oa()&&oa(e)):null!=na[e]&&delete na[e]),na[e]},M.locales=function(){return s(na)},M.weekdaysShort=function(e,a,t){return Tt(e,a,t,"weekdaysShort")},M.normalizeUnits=N,M.relativeTimeRounding=function(e){return void 0===e?Bt:"function"==typeof e&&(Bt=e,!0)},M.relativeTimeThreshold=function(e,a){return void 0!==Kt[e]&&(void 0===a?Kt[e]:(Kt[e]=a,"s"===e&&(Kt.ss=a-1),!0))},M.calendarFormat=function(e,a){var t=e.diff(a,"days",!0);return t<-6?"sameElse":t<-1?"lastWeek":t<0?"lastDay":t<1?"sameDay":t<2?"nextDay":t<7?"nextWeek":"sameElse"},M.prototype=yt,M.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},M.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});function es(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function as(d){return function(e,a,t,s){var n=es(e),r=ts[d][es(e)];return 2===n&&(r=r[a?0:1]),r.replace(/%d/i,e)}}var ts={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},ss=["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];M.defineLocale("ar-dz",{months:ss,monthsShort:ss,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:as("s"),ss:as("s"),m:as("m"),mm:as("m"),h:as("h"),hh:as("h"),d:as("d"),dd:as("d"),M:as("M"),MM:as("M"),y:as("y"),yy:as("y")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:0,doy:4}}),M.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}});function ns(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function rs(d){return function(e,a,t,s){var n=ns(e),r=_s[d][ns(e)];return 2===n&&(r=r[a?0:1]),r.replace(/%d/i,e)}}var ds={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},_s={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},is=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];M.defineLocale("ar-ly",{months:is,monthsShort:is,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:rs("s"),ss:rs("s"),m:rs("m"),mm:rs("m"),h:rs("h"),hh:rs("h"),d:rs("d"),dd:rs("d"),M:rs("M"),MM:rs("M"),y:rs("y"),yy:rs("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return ds[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),M.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}});var os={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},ms={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};M.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return ms[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return os[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),M.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}});function us(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function ls(d){return function(e,a,t,s){var n=us(e),r=cs[d][us(e)];return 2===n&&(r=r[a?0:1]),r.replace(/%d/i,e)}}var Ms={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},hs={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},cs={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},Ls=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];M.defineLocale("ar",{months:Ls,monthsShort:Ls,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:ls("s"),ss:ls("s"),m:ls("m"),mm:ls("m"),h:ls("h"),hh:ls("h"),d:ls("d"),dd:ls("d"),M:ls("M"),MM:ls("M"),y:ls("y"),yy:ls("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return hs[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Ms[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var Ys={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};function ys(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===t?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}M.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,t){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){if(0===e)return e+"-\u0131nc\u0131";var a=e%10;return e+(Ys[a]||Ys[e%100-a]||Ys[100<=e?100:null])},week:{dow:1,doy:7}}),M.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:ys,mm:ys,h:ys,hh:ys,d:"\u0434\u0437\u0435\u043d\u044c",dd:ys,M:"\u043c\u0435\u0441\u044f\u0446",MM:ys,y:"\u0433\u043e\u0434",yy:ys},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),M.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0==t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),M.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var fs={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},ps={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};M.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return ps[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return fs[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}});var ks={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},Ds={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function Ts(e,a,t){var s;return e+" "+(s={mm:"munutenn",MM:"miz",dd:"devezh"}[t],2!==e?s:function(e){var a={m:"v",b:"v",d:"z"};return void 0!==a[e.charAt(0)]?a[e.charAt(0)]+e.substring(1):e}(s))}M.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12".split("_"),monthsShortRegex:/^(\u0f5f\u0fb3\u0f0b\d{1,2})/,monthsParseExact:!0,weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u0f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return Ds[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ks[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}});var gs=[/^gen/i,/^c[\u02bc\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],ws=/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,vs=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];function bs(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}M.defineLocale("br",{months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:vs,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[\u02bc\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:vs,monthsRegex:ws,monthsShortRegex:ws,monthsStrictRegex:/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:gs,longMonthsParse:gs,shortMonthsParse:gs,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc\u02bchoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec\u02bch da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:Ts,h:"un eur",hh:"%d eur",d:"un devezh",dd:Ts,M:"ur miz",MM:Ts,y:"ur bloaz",yy:function(e){switch(function e(a){if(9<a)return e(a%10);return a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(e){return e+(1===e?"a\xf1":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,a,t){return e<12?"a.m.":"g.m."}}),M.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:bs,m:bs,mm:bs,h:bs,hh:bs,d:"dan",dd:bs,M:"mjesec",MM:bs,y:"godinu",yy:bs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),M.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}});var Hs="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),Ss="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),js=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],xs=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function Os(e){return 1<e&&e<5&&1!=~~(e/10)}function Ps(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return a||s?n+(Os(e)?"sekundy":"sekund"):n+"sekundami";case"m":return a?"minuta":s?"minutu":"minutou";case"mm":return a||s?n+(Os(e)?"minuty":"minut"):n+"minutami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(Os(e)?"hodiny":"hodin"):n+"hodinami";case"d":return a||s?"den":"dnem";case"dd":return a||s?n+(Os(e)?"dny":"dn\xed"):n+"dny";case"M":return a||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||s?n+(Os(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):n+"m\u011bs\xedci";case"y":return a||s?"rok":"rokem";case"yy":return a||s?n+(Os(e)?"roky":"let"):n+"lety"}}function Ws(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function As(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function Es(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}M.defineLocale("cs",{months:Hs,monthsShort:Ss,monthsRegex:xs,monthsShortRegex:xs,monthsStrictRegex:/^(leden|ledna|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:js,longMonthsParse:js,shortMonthsParse:js,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:Ps,ss:Ps,m:Ps,mm:Ps,h:Ps,hh:Ps,d:Ps,dd:Ps,M:Ps,MM:Ps,y:Ps,yy:Ps},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){return e+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}}),M.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a="";return 20<e?a=40===e||50===e||60===e||80===e||100===e?"fed":"ain":0<e&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+a},week:{dow:1,doy:4}}),M.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ws,mm:"%d Minuten",h:Ws,hh:"%d Stunden",d:Ws,dd:Ws,w:Ws,ww:"%d Wochen",M:Ws,MM:Ws,y:Ws,yy:Ws},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:As,mm:"%d Minuten",h:As,hh:"%d Stunden",d:As,dd:As,w:As,ww:"%d Wochen",M:As,MM:As,y:As,yy:As},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Es,mm:"%d Minuten",h:Es,hh:"%d Stunden",d:Es,dd:Es,w:Es,ww:"%d Wochen",M:Es,MM:Es,y:Es,yy:Es},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Fs=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],zs=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];M.defineLocale("dv",{months:Fs,monthsShort:Fs,weekdays:zs,weekdaysShort:zs,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,a,t){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}}),M.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,a,t){return 11<e?t?"\u03bc\u03bc":"\u039c\u039c":t?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(e){return"\u03bc"===(e+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var t,s=this._calendarEl[e],n=a&&a.hours();return t=s,("undefined"!=typeof Function&&t instanceof Function||"[object Function]"===Object.prototype.toString.call(t))&&(s=s.apply(a)),s.replace("{}",n%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}}),M.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:4}}),M.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),M.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),M.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:6}}),M.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_a\u016dg_sept_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"p.t.m.":"P.T.M.":t?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});var Ns="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Js="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),Rs=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],Cs=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;M.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Js[e.month()]:Ns[e.month()]:Ns},monthsRegex:Cs,monthsShortRegex:Cs,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:Rs,longMonthsParse:Rs,shortMonthsParse:Rs,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var Is="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Us="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),Gs=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],Vs=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;M.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Us[e.month()]:Is[e.month()]:Is},monthsRegex:Vs,monthsShortRegex:Vs,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:Gs,longMonthsParse:Gs,shortMonthsParse:Gs,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}});var Bs="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Ks="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),qs=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],Zs=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;function $s(e,a,t,s){var n={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[e+" minuti",e+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[e+" tunni",e+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[e+" kuu",e+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[e+" aasta",e+" aastat"]};return a?n[t][2]?n[t][2]:n[t][1]:s?n[t][0]:n[t][1]}M.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Ks[e.month()]:Bs[e.month()]:Bs},monthsRegex:Zs,monthsShortRegex:Zs,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:qs,longMonthsParse:qs,shortMonthsParse:qs,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4},invalidDate:"Fecha inv\xe1lida"}),M.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:$s,ss:$s,m:$s,mm:$s,h:$s,hh:$s,d:$s,dd:"%d p\xe4eva",M:$s,MM:$s,y:$s,yy:$s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Qs={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},Xs={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};M.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,a,t){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"%d \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return Xs[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Qs[e]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}});var en="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),an=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",en[7],en[8],en[9]];function tn(e,a,t,s){var n,r,d="";switch(t){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":d=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":d=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":d=s?"tunnin":"tuntia";break;case"d":return s?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":d=s?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return s?"kuukauden":"kuukausi";case"MM":d=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":d=s?"vuoden":"vuotta";break}return r=s,d=((n=e)<10?r?an[n]:en[n]:n)+" "+d}M.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:tn,ss:tn,m:tn,mm:tn,h:tn,hh:tn,d:tn,dd:tn,M:tn,MM:tn,y:tn,yy:tn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),M.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}}),M.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var sn=/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?|janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,nn=[/^janv/i,/^f\xe9vr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^ao\xfbt/i,/^sept/i,/^oct/i,/^nov/i,/^d\xe9c/i];M.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsRegex:sn,monthsShortRegex:sn,monthsStrictRegex:/^(janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,monthsShortStrictRegex:/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?)/i,monthsParse:nn,longMonthsParse:nn,shortMonthsParse:nn,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var rn="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),dn="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");M.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?dn[e.month()]:rn[e.month()]:rn},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});M.defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","Meitheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","M\xe1rt","Aib","Beal","Meith","I\xfail","L\xfan","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Sathairn"],weekdaysShort:["Domh","Luan","M\xe1irt","C\xe9ad","D\xe9ar","Aoine","Sath"],weekdaysMin:["Do","Lu","M\xe1","C\xe9","D\xe9","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Am\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xedonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}});function _n(e,a,t,s){var n={s:["\u0925\u094b\u0921\u092f\u093e \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940","\u0925\u094b\u0921\u0947 \u0938\u0945\u0915\u0902\u0921"],ss:[e+" \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940",e+" \u0938\u0945\u0915\u0902\u0921"],m:["\u090f\u0915\u093e \u092e\u093f\u0923\u091f\u093e\u0928","\u090f\u0915 \u092e\u093f\u0928\u0942\u091f"],mm:[e+" \u092e\u093f\u0923\u091f\u093e\u0902\u0928\u0940",e+" \u092e\u093f\u0923\u091f\u093e\u0902"],h:["\u090f\u0915\u093e \u0935\u0930\u093e\u0928","\u090f\u0915 \u0935\u0930"],hh:[e+" \u0935\u0930\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u093e\u0902"],d:["\u090f\u0915\u093e \u0926\u093f\u0938\u093e\u0928","\u090f\u0915 \u0926\u0940\u0938"],dd:[e+" \u0926\u093f\u0938\u093e\u0902\u0928\u0940",e+" \u0926\u0940\u0938"],M:["\u090f\u0915\u093e \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928","\u090f\u0915 \u092e\u094d\u0939\u092f\u0928\u094b"],MM:[e+" \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928\u0940",e+" \u092e\u094d\u0939\u092f\u0928\u0947"],y:["\u090f\u0915\u093e \u0935\u0930\u094d\u0938\u093e\u0928","\u090f\u0915 \u0935\u0930\u094d\u0938"],yy:[e+" \u0935\u0930\u094d\u0938\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u094d\u0938\u093e\u0902"]};return s?n[t][0]:n[t][1]}function on(e,a,t,s){var n={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return s?n[t][0]:n[t][1]}M.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}}),M.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("gom-deva",{months:{standalone:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u092f_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),format:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092e\u093e\u0930\u094d\u091a\u093e\u091a\u094d\u092f\u093e_\u090f\u092a\u094d\u0930\u0940\u0932\u093e\u091a\u094d\u092f\u093e_\u092e\u0947\u092f\u093e\u091a\u094d\u092f\u093e_\u091c\u0942\u0928\u093e\u091a\u094d\u092f\u093e_\u091c\u0941\u0932\u092f\u093e\u091a\u094d\u092f\u093e_\u0911\u0917\u0938\u094d\u091f\u093e\u091a\u094d\u092f\u093e_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0911\u0915\u094d\u091f\u094b\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0921\u093f\u0938\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940._\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u092f\u0924\u093e\u0930_\u0938\u094b\u092e\u093e\u0930_\u092e\u0902\u0917\u0933\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u092c\u093f\u0930\u0947\u0938\u094d\u0924\u093e\u0930_\u0938\u0941\u0915\u094d\u0930\u093e\u0930_\u0936\u0947\u0928\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0906\u092f\u0924._\u0938\u094b\u092e._\u092e\u0902\u0917\u0933._\u092c\u0941\u0927._\u092c\u094d\u0930\u0947\u0938\u094d\u0924._\u0938\u0941\u0915\u094d\u0930._\u0936\u0947\u0928.".split("_"),weekdaysMin:"\u0906_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u092c\u094d\u0930\u0947_\u0938\u0941_\u0936\u0947".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LTS:"A h:mm:ss [\u0935\u093e\u091c\u0924\u093e\u0902]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",llll:"ddd, D MMM YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]"},calendar:{sameDay:"[\u0906\u092f\u091c] LT",nextDay:"[\u092b\u093e\u0932\u094d\u092f\u093e\u0902] LT",nextWeek:"[\u092b\u0941\u0921\u0932\u094b] dddd[,] LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092b\u093e\u091f\u0932\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s \u0906\u0926\u0940\u0902",s:_n,ss:_n,m:_n,mm:_n,h:_n,hh:_n,d:_n,dd:_n,M:_n,MM:_n,y:_n,yy:_n},dayOfMonthOrdinalParse:/\d{1,2}(\u0935\u0947\u0930)/,ordinal:function(e,a){switch(a){case"D":return e+"\u0935\u0947\u0930";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/\u0930\u093e\u0924\u0940|\u0938\u0915\u093e\u0933\u0940\u0902|\u0926\u0928\u092a\u093e\u0930\u093e\u0902|\u0938\u093e\u0902\u091c\u0947/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u0940"===a?e<4?e:e+12:"\u0938\u0915\u093e\u0933\u0940\u0902"===a?e:"\u0926\u0928\u092a\u093e\u0930\u093e\u0902"===a?12<e?e:e+12:"\u0938\u093e\u0902\u091c\u0947"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924\u0940":e<12?"\u0938\u0915\u093e\u0933\u0940\u0902":e<16?"\u0926\u0928\u092a\u093e\u0930\u093e\u0902":e<20?"\u0938\u093e\u0902\u091c\u0947":"\u0930\u093e\u0924\u0940"}}),M.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:on,ss:on,m:on,mm:on,h:on,hh:on,d:on,dd:on,M:on,MM:on,y:on,yy:on},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokallim"===a?e:"donparam"===a?12<e?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}});var mn={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},un={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};M.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(e){return un[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return mn[e]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===a?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===a?e:"\u0aac\u0aaa\u0acb\u0ab0"===a?10<=e?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}}),M.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(e){return 2===e?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":e+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(e){return 2===e?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":e+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(e){return 2===e?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":e+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(e){return 2===e?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":e%10==0&&10!==e?e+" \u05e9\u05e0\u05d4":e+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(e){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(e)},meridiem:function(e,a,t){return e<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":e<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":e<12?t?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":e<18?t?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}});var ln={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Mn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function hn(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}M.defineLocale("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Mn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ln[e]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924"===a?e<4?e:e+12:"\u0938\u0941\u092c\u0939"===a?e:"\u0926\u094b\u092a\u0939\u0930"===a?10<=e?e:e+12:"\u0936\u093e\u092e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924":e<10?"\u0938\u0941\u092c\u0939":e<17?"\u0926\u094b\u092a\u0939\u0930":e<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}}),M.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:return"[pro\u0161lu] [nedjelju] [u] LT";case 3:return"[pro\u0161lu] [srijedu] [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:hn,m:hn,mm:hn,h:hn,hh:hn,d:"dan",dd:hn,M:"mjesec",MM:hn,y:"godinu",yy:hn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var cn="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function Ln(e,a,t,s){var n=e;switch(t){case"s":return s||a?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return n+(s||a)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(s||a?" perc":" perce");case"mm":return n+(s||a?" perc":" perce");case"h":return"egy"+(s||a?" \xf3ra":" \xf3r\xe1ja");case"hh":return n+(s||a?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(s||a?" nap":" napja");case"dd":return n+(s||a?" nap":" napja");case"M":return"egy"+(s||a?" h\xf3nap":" h\xf3napja");case"MM":return n+(s||a?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(s||a?" \xe9v":" \xe9ve");case"yy":return n+(s||a?" \xe9v":" \xe9ve")}return""}function Yn(e){return(e?"":"[m\xfalt] ")+"["+cn[this.day()]+"] LT[-kor]"}function yn(e){return e%100==11||e%10!=1}function fn(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return yn(e)?n+(a||s?"sek\xfandur":"sek\xfandum"):n+"sek\xfanda";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return yn(e)?n+(a||s?"m\xedn\xfatur":"m\xedn\xfatum"):a?n+"m\xedn\xfata":n+"m\xedn\xfatu";case"hh":return yn(e)?n+(a||s?"klukkustundir":"klukkustundum"):n+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return yn(e)?a?n+"dagar":n+(s?"daga":"d\xf6gum"):a?n+"dagur":n+(s?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":s?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return yn(e)?a?n+"m\xe1nu\xf0ir":n+(s?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?n+"m\xe1nu\xf0ur":n+(s?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||s?"\xe1r":"\xe1ri";case"yy":return yn(e)?n+(a||s?"\xe1r":"\xe1rum"):n+(a||s?"\xe1r":"\xe1ri")}}M.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return Yn.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return Yn.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:Ln,ss:Ln,m:Ln,mm:Ln,h:Ln,hh:Ln,d:Ln,dd:Ln,M:Ln,MM:Ln,y:Ln,yy:Ln},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(e){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(e)},meridiem:function(e){return e<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":e<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":e<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-\u056b\u0576":e+"-\u0580\u0564";default:return e}},week:{dow:1,doy:7}}),M.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?11<=e?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}}),M.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:fn,ss:fn,m:fn,mm:fn,h:"klukkustund",hh:fn,d:fn,dd:fn,M:fn,MM:fn,y:fn,yy:fn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"\u4ee4\u548c",narrow:"\u32ff",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"\u5e73\u6210",narrow:"\u337b",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"\u662d\u548c",narrow:"\u337c",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"\u5927\u6b63",narrow:"\u337d",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"\u660e\u6cbb",narrow:"\u337e",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"\u897f\u66a6",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"\u7d00\u5143\u524d",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(\u5143|\d+)\u5e74/,eraYearOrdinalParse:function(e,a){return"\u5143"===a[1]?1:parseInt(a[1]||e,10)},months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(e){return"\u5348\u5f8c"===e},meridiem:function(e,a,t){return e<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(e){return e.week()!==this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(e){return this.week()!==e.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(e,a){switch(a){case"y":return 1===e?"\u5143\u5e74":e+"\u5e74";case"d":case"D":case"DDD":return e+"\u65e5";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}}),M.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?11<=e?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),M.defineLocale("ka",{months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(\u10ec\u10d0\u10db|\u10ec\u10e3\u10d7|\u10e1\u10d0\u10d0\u10d7|\u10ec\u10d4\u10da|\u10d3\u10e6|\u10d7\u10d5)(\u10d8|\u10d4)/,function(e,a,t){return"\u10d8"===t?a+"\u10e8\u10d8":a+t+"\u10e8\u10d8"})},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):e},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":e<20||e<=100&&e%20==0||e%100==0?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}});var pn={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};M.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(e){return e+(pn[e]||pn[e%10]||pn[100<=e?100:null])},week:{dow:1,doy:7}});var kn={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},Dn={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};M.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,a,t){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(e){return Dn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return kn[e]})},week:{dow:1,doy:4}});var Tn={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},gn={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};M.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(e){return gn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Tn[e]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===a?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===a?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===a?10<=e?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}}),M.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\uc77c";case"M":return e+"\uc6d4";case"w":case"W":return e+"\uc8fc";default:return e}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(e){return"\uc624\ud6c4"===e},meridiem:function(e,a,t){return e<12?"\uc624\uc804":"\uc624\ud6c4"}});var wn={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},vn={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},bn=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];M.defineLocale("ku",{months:bn,monthsShort:bn,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(e){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(e)},meridiem:function(e,a,t){return e<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return vn[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return wn[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var Hn={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};function Sn(e,a,t,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?n[t][0]:n[t][1]}function jn(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10;return 0==a?jn(e/10):jn(a)}if(e<1e4){for(;10<=e;)e/=10;return jn(e)}return jn(e/=1e3)}M.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(e){return e+(Hn[e]||Hn[e%10]||Hn[100<=e?100:null])},week:{dow:1,doy:7}}),M.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return jn(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return jn(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:Sn,mm:"%d Minutten",h:Sn,hh:"%d Stonnen",d:Sn,dd:"%d Deeg",M:Sn,MM:"%d M\xe9int",y:Sn,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(e){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===e},meridiem:function(e,a,t){return e<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(e){return"\u0e97\u0eb5\u0ec8"+e}});var xn={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function On(e,a,t,s){return a?Wn(t)[0]:s?Wn(t)[1]:Wn(t)[2]}function Pn(e){return e%10==0||10<e&&e<20}function Wn(e){return xn[e].split("_")}function An(e,a,t,s){var n=e+" ";return 1===e?n+On(0,a,t[0],s):a?n+(Pn(e)?Wn(t)[1]:Wn(t)[0]):s?n+Wn(t)[1]:n+(Pn(e)?Wn(t)[1]:Wn(t)[2])}M.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(e,a,t,s){return a?"kelios sekund\u0117s":s?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:An,m:On,mm:An,h:On,hh:An,d:On,dd:An,M:On,MM:An,y:On,yy:An},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});var En={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function Fn(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function zn(e,a,t){return e+" "+Fn(En[t],e,a)}function Nn(e,a,t){return Fn(En[t],e,a)}M.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(e,a){return a?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:zn,m:Nn,mm:zn,h:Nn,hh:zn,d:Nn,dd:zn,M:Nn,MM:zn,y:Nn,yy:zn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Jn={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=Jn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+Jn.correctGrammaticalCase(e,s)}};function Rn(e,a,t,s){switch(t){case"s":return a?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return e+(a?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return e+(a?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return e+(a?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return e+(a?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return e+(a?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return e+(a?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return e}}M.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:Jn.translate,m:Jn.translate,mm:Jn.translate,h:Jn.translate,hh:Jn.translate,d:"dan",dd:Jn.translate,M:"mjesec",MM:Jn.translate,y:"godinu",yy:Jn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),M.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u0435\u0434\u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0435\u0434\u0435\u043d \u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0435\u0434\u0435\u043d \u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0==t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),M.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&4<=e||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":e<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":e<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":e<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}}),M.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(e){return"\u04ae\u0425"===e},meridiem:function(e,a,t){return e<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:Rn,ss:Rn,m:Rn,mm:Rn,h:Rn,hh:Rn,d:Rn,dd:Rn,M:Rn,MM:Rn,y:Rn,yy:Rn},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" \u04e9\u0434\u04e9\u0440";default:return e}}});var Cn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},In={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function Un(e,a,t,s){var n="";if(a)switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":n="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":n="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":n="%d \u0924\u093e\u0938";break;case"d":n="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":n="%d \u0926\u093f\u0935\u0938";break;case"M":n="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":n="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u0947";break}else switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":n="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":n="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":n="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":n="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":n="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":n="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":n="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u093e\u0902";break}return n.replace(/%d/i,e)}M.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:Un,ss:Un,m:Un,mm:Un,h:Un,hh:Un,d:Un,dd:Un,M:Un,MM:Un,y:Un,yy:Un},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return In[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Cn[e]})},meridiemParse:/\u092a\u0939\u093e\u091f\u0947|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940|\u0930\u093e\u0924\u094d\u0930\u0940/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u092a\u0939\u093e\u091f\u0947"===a||"\u0938\u0915\u093e\u0933\u0940"===a?e:"\u0926\u0941\u092a\u093e\u0930\u0940"===a||"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===a||"\u0930\u093e\u0924\u094d\u0930\u0940"===a?12<=e?e:e+12:void 0},meridiem:function(e,a,t){return 0<=e&&e<6?"\u092a\u0939\u093e\u091f\u0947":e<12?"\u0938\u0915\u093e\u0933\u0940":e<17?"\u0926\u0941\u092a\u093e\u0930\u0940":e<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}}),M.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),M.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),M.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[G\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var Gn={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},Vn={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};M.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(e){return Vn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Gn[e]})},week:{dow:1,doy:4}}),M.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Bn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Kn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};M.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Kn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Bn[e]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===a?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===a?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===a?10<=e?e:e+12:"\u0938\u093e\u0901\u091d"===a?e+12:void 0},meridiem:function(e,a,t){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}});var qn="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),Zn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),$n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],Qn=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;M.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Zn[e.month()]:qn[e.month()]:qn},monthsRegex:Qn,monthsShortRegex:Qn,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:$n,longMonthsParse:$n,shortMonthsParse:$n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});var Xn="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),er="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),ar=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],tr=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;M.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?er[e.month()]:Xn[e.month()]:Xn},monthsRegex:tr,monthsShortRegex:tr,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:ar,longMonthsParse:ar,shortMonthsParse:ar,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),M.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._m\xe5._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("oc-lnc",{months:{standalone:"geni\xe8r_febri\xe8r_mar\xe7_abril_mai_junh_julhet_agost_setembre_oct\xf2bre_novembre_decembre".split("_"),format:"de geni\xe8r_de febri\xe8r_de mar\xe7_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct\xf2bre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dim\xe8cres_dij\xf2us_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[u\xe8i a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[i\xe8r a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}});var sr={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},nr={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};M.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(e){return nr[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return sr[e]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===a?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===a?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===a?10<=e?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}});var rr="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),dr="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");function _r(e){return e%10<5&&1<e%10&&~~(e/10)%10!=1}function ir(e,a,t){var s=e+" ";switch(t){case"ss":return s+(_r(e)?"sekundy":"sekund");case"m":return a?"minuta":"minut\u0119";case"mm":return s+(_r(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return s+(_r(e)?"godziny":"godzin");case"MM":return s+(_r(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return s+(_r(e)?"lata":"lat")}}function or(e,a,t){return e+(20<=e%100||100<=e&&e%100==0?" de ":" ")+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[t]}function mr(e,a,t){var s,n;return"m"===t?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}M.defineLocale("pl",{months:function(e,a){return e?""===a?"("+dr[e.month()]+"|"+rr[e.month()]+")":/D MMMM/.test(a)?dr[e.month()]:rr[e.month()]:rr},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:ir,m:ir,mm:ir,h:ir,hh:ir,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:ir,y:"rok",yy:ir},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"}),M.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),M.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:or,m:"un minut",mm:or,h:"o or\u0103",hh:or,d:"o zi",dd:or,M:"o lun\u0103",MM:or,y:"un an",yy:or},week:{dow:1,doy:7}});var ur=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];M.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:ur,longMonthsParse:ur,shortMonthsParse:ur,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:mr,m:mr,mm:mr,h:"\u0447\u0430\u0441",hh:mr,d:"\u0434\u0435\u043d\u044c",dd:mr,M:"\u043c\u0435\u0441\u044f\u0446",MM:mr,y:"\u0433\u043e\u0434",yy:mr},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:4}});var lr=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],Mr=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];M.defineLocale("sd",{months:lr,monthsShort:lr,weekdays:Mr,weekdaysShort:Mr,weekdaysMin:Mr,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),M.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(e){return e+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(e){return"\u0db4.\u0dc0."===e||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===e},meridiem:function(e,a,t){return 11<e?t?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":t?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}});var hr="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),cr="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function Lr(e){return 1<e&&e<5}function Yr(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return a||s?n+(Lr(e)?"sekundy":"sek\xfand"):n+"sekundami";case"m":return a?"min\xfata":s?"min\xfatu":"min\xfatou";case"mm":return a||s?n+(Lr(e)?"min\xfaty":"min\xfat"):n+"min\xfatami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(Lr(e)?"hodiny":"hod\xedn"):n+"hodinami";case"d":return a||s?"de\u0148":"d\u0148om";case"dd":return a||s?n+(Lr(e)?"dni":"dn\xed"):n+"d\u0148ami";case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?n+(Lr(e)?"mesiace":"mesiacov"):n+"mesiacmi";case"y":return a||s?"rok":"rokom";case"yy":return a||s?n+(Lr(e)?"roky":"rokov"):n+"rokmi"}}function yr(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?a?"sekundo":"sekundi":2===e?a||s?"sekundi":"sekundah":e<5?a||s?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return n+=1===e?a?"minuta":"minuto":2===e?a||s?"minuti":"minutama":e<5?a||s?"minute":"minutami":a||s?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return n+=1===e?a?"ura":"uro":2===e?a||s?"uri":"urama":e<5?a||s?"ure":"urami":a||s?"ur":"urami";case"d":return a||s?"en dan":"enim dnem";case"dd":return n+=1===e?a||s?"dan":"dnem":2===e?a||s?"dni":"dnevoma":a||s?"dni":"dnevi";case"M":return a||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?a||s?"mesec":"mesecem":2===e?a||s?"meseca":"mesecema":e<5?a||s?"mesece":"meseci":a||s?"mesecev":"meseci";case"y":return a||s?"eno leto":"enim letom";case"yy":return n+=1===e?a||s?"leto":"letom":2===e?a||s?"leti":"letoma":e<5?a||s?"leta":"leti":a||s?"let":"leti"}}M.defineLocale("sk",{months:hr,monthsShort:cr,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:Yr,ss:Yr,m:Yr,mm:Yr,h:Yr,hh:Yr,d:Yr,dd:Yr,M:Yr,MM:Yr,y:Yr,yy:Yr},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:yr,ss:yr,m:yr,mm:yr,h:yr,hh:yr,d:yr,dd:yr,M:yr,MM:yr,y:yr,yy:yr},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),M.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var fr={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=fr.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+fr.correctGrammaticalCase(e,s)}};M.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:fr.translate,m:fr.translate,mm:fr.translate,h:fr.translate,hh:fr.translate,d:"\u0434\u0430\u043d",dd:fr.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:fr.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",yy:fr.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var pr={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=pr.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+pr.correctGrammaticalCase(e,s)}};M.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:pr.translate,m:pr.translate,mm:pr.translate,h:pr.translate,hh:pr.translate,d:"dan",dd:pr.translate,M:"mesec",MM:pr.translate,y:"godinu",yy:pr.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),M.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,t){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?11<=e?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),M.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10;return e+(1!=~~(e%100/10)&&(1==a||2==a)?":a":":e")},week:{dow:1,doy:4}}),M.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});var kr={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},Dr={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};M.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(e){return Dr[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return kr[e]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,a,t){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,a){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===a?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===a||"\u0b95\u0bbe\u0bb2\u0bc8"===a||"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===a&&10<=e?e:e+12},week:{dow:0,doy:6}}),M.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?e<4?e:e+12:"\u0c09\u0c26\u0c2f\u0c02"===a?e:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?10<=e?e:e+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":e<10?"\u0c09\u0c26\u0c2f\u0c02":e<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":e<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}}),M.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}});var Tr={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};M.defineLocale("tg",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u041f\u0430\u0433\u043e\u04b3 \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0448\u0430\u0431"===a?e<4?e:e+12:"\u0441\u0443\u0431\u04b3"===a?e:"\u0440\u04ef\u0437"===a?11<=e?e:e+12:"\u0431\u0435\u0433\u043e\u04b3"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0448\u0430\u0431":e<11?"\u0441\u0443\u0431\u04b3":e<16?"\u0440\u04ef\u0437":e<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(e){return e+(Tr[e]||Tr[e%10]||Tr[100<=e?100:null])},week:{dow:1,doy:7}}),M.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(e){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===e},meridiem:function(e,a,t){return e<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}});var gr={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'\xfcnji",4:"'\xfcnji",100:"'\xfcnji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};M.defineLocale("tk",{months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[d\xfc\xfdn] LT",lastWeek:"[ge\xe7en] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var t=e%10;return e+(gr[t]||gr[e%100-t]||gr[100<=e?100:null])}},week:{dow:1,doy:7}}),M.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});var wr="pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function vr(e,a,t,s){var n=function(e){var a=Math.floor(e%1e3/100),t=Math.floor(e%100/10),s=e%10,n="";0<a&&(n+=wr[a]+"vatlh");0<t&&(n+=(""!==n?" ":"")+wr[t]+"maH");0<s&&(n+=(""!==n?" ":"")+wr[s]);return""===n?"pagh":n}(e);switch(t){case"ss":return n+" lup";case"mm":return n+" tup";case"hh":return n+" rep";case"dd":return n+" jaj";case"MM":return n+" jar";case"yy":return n+" DIS"}}M.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu\u2019":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:vr,m:"wa\u2019 tup",mm:vr,h:"wa\u2019 rep",hh:vr,d:"wa\u2019 jaj",dd:vr,M:"wa\u2019 jar",MM:vr,y:"wa\u2019 DIS",yy:vr},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var br={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};function Hr(e,a,t,s){var n={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[e+" m\xeduts",e+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[e+" \xfeoras",e+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s||a?n[t][0]:n[t][1]}function Sr(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===t?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:a?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}function jr(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}M.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),meridiem:function(e,a,t){return e<12?t?"\xf6\xf6":"\xd6\xd6":t?"\xf6s":"\xd6S"},meridiemParse:/\xf6\xf6|\xd6\xd6|\xf6s|\xd6S/,isPM:function(e){return"\xf6s"===e||"\xd6S"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'\u0131nc\u0131";var t=e%10;return e+(br[t]||br[e%100-t]||br[100<=e?100:null])}},week:{dow:1,doy:7}}),M.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"d'o":"D'O":t?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:Hr,ss:Hr,m:Hr,mm:Hr,h:Hr,hh:Hr,d:Hr,dd:Hr,M:Hr,MM:Hr,y:Hr,yy:Hr},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),M.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),M.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}}),M.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"!==a&&"\u0643\u06d5\u0686"!==a&&11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":s<900?"\u0633\u06d5\u06be\u06d5\u0631":s<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":s<1230?"\u0686\u06c8\u0634":s<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return e+"-\u06be\u06d5\u067e\u062a\u06d5";default:return e}},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:7}}),M.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(e,a){var t={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===e?t.nominative.slice(1,7).concat(t.nominative.slice(0,1)):e?t[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(a)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:t.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:jr("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:jr("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:jr("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:jr("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return jr("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return jr("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:Sr,m:Sr,mm:Sr,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:Sr,d:"\u0434\u0435\u043d\u044c",dd:Sr,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:Sr,y:"\u0440\u0456\u043a",yy:Sr},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0456":e<12?"\u0440\u0430\u043d\u043a\u0443":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}});var xr=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],Or=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];return M.defineLocale("ur",{months:xr,monthsShort:xr,weekdays:Or,weekdaysShort:Or,weekdaysMin:Or,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),M.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),M.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}}),M.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[H\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n tr\u01b0\u1edbc l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),M.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),M.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}}),M.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a||"\u4e0b\u5348"!==a&&"\u665a\u4e0a"!==a&&11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:function(e){return e.week()!==this.week()?"[\u4e0b]dddLT":"[\u672c]dddLT"},lastDay:"[\u6628\u5929]LT",lastWeek:function(e){return this.week()!==e.week()?"[\u4e0a]dddLT":"[\u672c]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}),M.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1200?"\u4e0a\u5348":1200===s?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),M.defineLocale("zh-mo",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"D/M/YYYY",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),M.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),M.locale("en"),M});
+//# sourceMappingURL=moment-with-locales.min.js.map
\ No newline at end of file
diff --git a/admin/js/vendors/moment/moment-with-locales.min.js.map b/admin/js/vendors/moment/moment-with-locales.min.js.map
new file mode 100644 (file)
index 0000000..e925b7f
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"moment-with-locales.min.js","sources":["moment-with-locales.js"],"names":["global","factory","exports","module","define","amd","moment","this","hookCallback","some","hooks","apply","arguments","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","i","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","t","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","key","args","slice","join","Error","stack","keys","deprecations","deprecateSimple","name","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","s","tokens","addParseToken","addWeekParseToken","_w","indexOf","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","x","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","dayOfYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","n","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","d","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","day","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","getSetHour","globalLocale","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","chooseLocale","names","j","next","loadLocale","arr1","arr2","minl","commonPrefix","oldLocale","_abbr","require","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","checkOverflow","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","string","exec","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","configFromRFC2822","parsedArray","weekdayStr","parsedInput","getDay","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","c","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ms","setFullYear","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","isUTC","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","base","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","item","isNumberOrStringArray","property","objectTest","propertyTest","properties","isMomentInputObject","monthDiff","wholeMonthDiff","anchor","adjust","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","Symbol","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","Infinity","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","relativeTime$1","posNegDuration","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","pluralForm","pluralize","f","str","plurals","months$1","weekdaysParseExact","pluralForm$1","pluralize$1","plurals$1","symbolMap","1","2","3","4","5","6","7","8","9","0","months$2","symbolMap$1","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","pluralForm$2","pluralize$2","plurals$2","symbolMap$2","numberMap$1","months$3","suffixes","70","80","20","50","100","10","30","60","90","relativeTimeWithPlural","num","forms","standalone","lastDigit","last2Digits","symbolMap$3","numberMap$2","১","২","৩","৪","৫","৬","৭","৮","৯","০","symbolMap$4","numberMap$3","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","relativeTimeWithMutation","text","mutationTable","substring","softMutation","monthsParseExact","monthsRegex$1","minWeekdaysParse","translate","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","ll","lll","llll","months$4","monthsParse$1","monthsRegex$2","plural$1","translate$1","processRelativeTime","processRelativeTime$1","processRelativeTime$2","months$5","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$3","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$4","monthsShortDot$2","monthsShort$3","monthsParse$4","monthsRegex$5","processRelativeTime$3","symbolMap$5","numberMap$4","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","numbersPast","numbersFuture","translate$2","monthsRegex$6","monthsParse$5","monthsShortWithDots","monthsShortWithoutDots","processRelativeTime$4","processRelativeTime$5","symbolMap$6","numberMap$5","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","symbolMap$7","numberMap$6","१","२","३","४","५","६","७","८","९","०","translate$3","weekEndings","translate$4","plural$2","translate$5","eraYearOrdinalRegex","$0","$1","$2","suffixes$1","40","symbolMap$8","numberMap$7","១","២","៣","៤","៥","៦","៧","៨","៩","០","symbolMap$9","numberMap$8","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","isUpper","symbolMap$a","numberMap$9","months$8","suffixes$2","processRelativeTime$6","eifelerRegelAppliesToNumber","translateSingular","special","translate$6","units$1","format$1","relativeTimeWithPlural$1","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","translate$7","symbolMap$b","numberMap$a","relativeTimeMr","symbolMap$c","numberMap$b","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","symbolMap$d","numberMap$c","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$6","monthsRegex$7","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$7","monthsRegex$8","symbolMap$e","numberMap$d","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","monthsNominative","monthsSubjective","plural$3","translate$8","relativeTimeWithPlural$2","relativeTimeWithPlural$3","monthsParse$8","months$9","days$1","months$a","monthsShort$6","plural$5","translate$9","processRelativeTime$7","translator$1","translator$2","symbolMap$f","numberMap$e","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","suffixes$3","12","13","suffixes$4","numbersNouns","translate$a","numberNoun","hundred","ten","one","word","numberAsNoun","suffixes$5","processRelativeTime$8","relativeTimeWithPlural$4","processHoursFunction","nominative","accusative","genitive","months$b","days$2"],"mappings":"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"}
\ No newline at end of file
diff --git a/admin/js/vendors/moment/moment.js b/admin/js/vendors/moment/moment.js
new file mode 100644 (file)
index 0000000..c4cb7d3
--- /dev/null
@@ -0,0 +1,5668 @@
+//! moment.js
+//! version : 2.27.0
+//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+//! license : MIT
+//! momentjs.com
+
+;(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    global.moment = factory()
+}(this, (function () { 'use strict';
+
+    var hookCallback;
+
+    function hooks() {
+        return hookCallback.apply(null, arguments);
+    }
+
+    // This is done to register the method called with moment()
+    // without creating circular dependencies.
+    function setHookCallback(callback) {
+        hookCallback = callback;
+    }
+
+    function isArray(input) {
+        return (
+            input instanceof Array ||
+            Object.prototype.toString.call(input) === '[object Array]'
+        );
+    }
+
+    function isObject(input) {
+        // IE8 will treat undefined and null as object if it wasn't for
+        // input != null
+        return (
+            input != null &&
+            Object.prototype.toString.call(input) === '[object Object]'
+        );
+    }
+
+    function hasOwnProp(a, b) {
+        return Object.prototype.hasOwnProperty.call(a, b);
+    }
+
+    function isObjectEmpty(obj) {
+        if (Object.getOwnPropertyNames) {
+            return Object.getOwnPropertyNames(obj).length === 0;
+        } else {
+            var k;
+            for (k in obj) {
+                if (hasOwnProp(obj, k)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    function isUndefined(input) {
+        return input === void 0;
+    }
+
+    function isNumber(input) {
+        return (
+            typeof input === 'number' ||
+            Object.prototype.toString.call(input) === '[object Number]'
+        );
+    }
+
+    function isDate(input) {
+        return (
+            input instanceof Date ||
+            Object.prototype.toString.call(input) === '[object Date]'
+        );
+    }
+
+    function map(arr, fn) {
+        var res = [],
+            i;
+        for (i = 0; i < arr.length; ++i) {
+            res.push(fn(arr[i], i));
+        }
+        return res;
+    }
+
+    function extend(a, b) {
+        for (var i in b) {
+            if (hasOwnProp(b, i)) {
+                a[i] = b[i];
+            }
+        }
+
+        if (hasOwnProp(b, 'toString')) {
+            a.toString = b.toString;
+        }
+
+        if (hasOwnProp(b, 'valueOf')) {
+            a.valueOf = b.valueOf;
+        }
+
+        return a;
+    }
+
+    function createUTC(input, format, locale, strict) {
+        return createLocalOrUTC(input, format, locale, strict, true).utc();
+    }
+
+    function defaultParsingFlags() {
+        // We need to deep clone this object.
+        return {
+            empty: false,
+            unusedTokens: [],
+            unusedInput: [],
+            overflow: -2,
+            charsLeftOver: 0,
+            nullInput: false,
+            invalidEra: null,
+            invalidMonth: null,
+            invalidFormat: false,
+            userInvalidated: false,
+            iso: false,
+            parsedDateParts: [],
+            era: null,
+            meridiem: null,
+            rfc2822: false,
+            weekdayMismatch: false,
+        };
+    }
+
+    function getParsingFlags(m) {
+        if (m._pf == null) {
+            m._pf = defaultParsingFlags();
+        }
+        return m._pf;
+    }
+
+    var some;
+    if (Array.prototype.some) {
+        some = Array.prototype.some;
+    } else {
+        some = function (fun) {
+            var t = Object(this),
+                len = t.length >>> 0,
+                i;
+
+            for (i = 0; i < len; i++) {
+                if (i in t && fun.call(this, t[i], i, t)) {
+                    return true;
+                }
+            }
+
+            return false;
+        };
+    }
+
+    function isValid(m) {
+        if (m._isValid == null) {
+            var flags = getParsingFlags(m),
+                parsedParts = some.call(flags.parsedDateParts, function (i) {
+                    return i != null;
+                }),
+                isNowValid =
+                    !isNaN(m._d.getTime()) &&
+                    flags.overflow < 0 &&
+                    !flags.empty &&
+                    !flags.invalidEra &&
+                    !flags.invalidMonth &&
+                    !flags.invalidWeekday &&
+                    !flags.weekdayMismatch &&
+                    !flags.nullInput &&
+                    !flags.invalidFormat &&
+                    !flags.userInvalidated &&
+                    (!flags.meridiem || (flags.meridiem && parsedParts));
+
+            if (m._strict) {
+                isNowValid =
+                    isNowValid &&
+                    flags.charsLeftOver === 0 &&
+                    flags.unusedTokens.length === 0 &&
+                    flags.bigHour === undefined;
+            }
+
+            if (Object.isFrozen == null || !Object.isFrozen(m)) {
+                m._isValid = isNowValid;
+            } else {
+                return isNowValid;
+            }
+        }
+        return m._isValid;
+    }
+
+    function createInvalid(flags) {
+        var m = createUTC(NaN);
+        if (flags != null) {
+            extend(getParsingFlags(m), flags);
+        } else {
+            getParsingFlags(m).userInvalidated = true;
+        }
+
+        return m;
+    }
+
+    // Plugins that add properties should also add the key here (null value),
+    // so we can properly clone ourselves.
+    var momentProperties = (hooks.momentProperties = []),
+        updateInProgress = false;
+
+    function copyConfig(to, from) {
+        var i, prop, val;
+
+        if (!isUndefined(from._isAMomentObject)) {
+            to._isAMomentObject = from._isAMomentObject;
+        }
+        if (!isUndefined(from._i)) {
+            to._i = from._i;
+        }
+        if (!isUndefined(from._f)) {
+            to._f = from._f;
+        }
+        if (!isUndefined(from._l)) {
+            to._l = from._l;
+        }
+        if (!isUndefined(from._strict)) {
+            to._strict = from._strict;
+        }
+        if (!isUndefined(from._tzm)) {
+            to._tzm = from._tzm;
+        }
+        if (!isUndefined(from._isUTC)) {
+            to._isUTC = from._isUTC;
+        }
+        if (!isUndefined(from._offset)) {
+            to._offset = from._offset;
+        }
+        if (!isUndefined(from._pf)) {
+            to._pf = getParsingFlags(from);
+        }
+        if (!isUndefined(from._locale)) {
+            to._locale = from._locale;
+        }
+
+        if (momentProperties.length > 0) {
+            for (i = 0; i < momentProperties.length; i++) {
+                prop = momentProperties[i];
+                val = from[prop];
+                if (!isUndefined(val)) {
+                    to[prop] = val;
+                }
+            }
+        }
+
+        return to;
+    }
+
+    // Moment prototype object
+    function Moment(config) {
+        copyConfig(this, config);
+        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
+        if (!this.isValid()) {
+            this._d = new Date(NaN);
+        }
+        // Prevent infinite loop in case updateOffset creates new moment
+        // objects.
+        if (updateInProgress === false) {
+            updateInProgress = true;
+            hooks.updateOffset(this);
+            updateInProgress = false;
+        }
+    }
+
+    function isMoment(obj) {
+        return (
+            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
+        );
+    }
+
+    function warn(msg) {
+        if (
+            hooks.suppressDeprecationWarnings === false &&
+            typeof console !== 'undefined' &&
+            console.warn
+        ) {
+            console.warn('Deprecation warning: ' + msg);
+        }
+    }
+
+    function deprecate(msg, fn) {
+        var firstTime = true;
+
+        return extend(function () {
+            if (hooks.deprecationHandler != null) {
+                hooks.deprecationHandler(null, msg);
+            }
+            if (firstTime) {
+                var args = [],
+                    arg,
+                    i,
+                    key;
+                for (i = 0; i < arguments.length; i++) {
+                    arg = '';
+                    if (typeof arguments[i] === 'object') {
+                        arg += '\n[' + i + '] ';
+                        for (key in arguments[0]) {
+                            if (hasOwnProp(arguments[0], key)) {
+                                arg += key + ': ' + arguments[0][key] + ', ';
+                            }
+                        }
+                        arg = arg.slice(0, -2); // Remove trailing comma and space
+                    } else {
+                        arg = arguments[i];
+                    }
+                    args.push(arg);
+                }
+                warn(
+                    msg +
+                        '\nArguments: ' +
+                        Array.prototype.slice.call(args).join('') +
+                        '\n' +
+                        new Error().stack
+                );
+                firstTime = false;
+            }
+            return fn.apply(this, arguments);
+        }, fn);
+    }
+
+    var deprecations = {};
+
+    function deprecateSimple(name, msg) {
+        if (hooks.deprecationHandler != null) {
+            hooks.deprecationHandler(name, msg);
+        }
+        if (!deprecations[name]) {
+            warn(msg);
+            deprecations[name] = true;
+        }
+    }
+
+    hooks.suppressDeprecationWarnings = false;
+    hooks.deprecationHandler = null;
+
+    function isFunction(input) {
+        return (
+            (typeof Function !== 'undefined' && input instanceof Function) ||
+            Object.prototype.toString.call(input) === '[object Function]'
+        );
+    }
+
+    function set(config) {
+        var prop, i;
+        for (i in config) {
+            if (hasOwnProp(config, i)) {
+                prop = config[i];
+                if (isFunction(prop)) {
+                    this[i] = prop;
+                } else {
+                    this['_' + i] = prop;
+                }
+            }
+        }
+        this._config = config;
+        // Lenient ordinal parsing accepts just a number in addition to
+        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
+        // TODO: Remove "ordinalParse" fallback in next major release.
+        this._dayOfMonthOrdinalParseLenient = new RegExp(
+            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
+                '|' +
+                /\d{1,2}/.source
+        );
+    }
+
+    function mergeConfigs(parentConfig, childConfig) {
+        var res = extend({}, parentConfig),
+            prop;
+        for (prop in childConfig) {
+            if (hasOwnProp(childConfig, prop)) {
+                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
+                    res[prop] = {};
+                    extend(res[prop], parentConfig[prop]);
+                    extend(res[prop], childConfig[prop]);
+                } else if (childConfig[prop] != null) {
+                    res[prop] = childConfig[prop];
+                } else {
+                    delete res[prop];
+                }
+            }
+        }
+        for (prop in parentConfig) {
+            if (
+                hasOwnProp(parentConfig, prop) &&
+                !hasOwnProp(childConfig, prop) &&
+                isObject(parentConfig[prop])
+            ) {
+                // make sure changes to properties don't modify parent config
+                res[prop] = extend({}, res[prop]);
+            }
+        }
+        return res;
+    }
+
+    function Locale(config) {
+        if (config != null) {
+            this.set(config);
+        }
+    }
+
+    var keys;
+
+    if (Object.keys) {
+        keys = Object.keys;
+    } else {
+        keys = function (obj) {
+            var i,
+                res = [];
+            for (i in obj) {
+                if (hasOwnProp(obj, i)) {
+                    res.push(i);
+                }
+            }
+            return res;
+        };
+    }
+
+    var defaultCalendar = {
+        sameDay: '[Today at] LT',
+        nextDay: '[Tomorrow at] LT',
+        nextWeek: 'dddd [at] LT',
+        lastDay: '[Yesterday at] LT',
+        lastWeek: '[Last] dddd [at] LT',
+        sameElse: 'L',
+    };
+
+    function calendar(key, mom, now) {
+        var output = this._calendar[key] || this._calendar['sameElse'];
+        return isFunction(output) ? output.call(mom, now) : output;
+    }
+
+    function zeroFill(number, targetLength, forceSign) {
+        var absNumber = '' + Math.abs(number),
+            zerosToFill = targetLength - absNumber.length,
+            sign = number >= 0;
+        return (
+            (sign ? (forceSign ? '+' : '') : '-') +
+            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
+            absNumber
+        );
+    }
+
+    var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
+        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
+        formatFunctions = {},
+        formatTokenFunctions = {};
+
+    // token:    'M'
+    // padded:   ['MM', 2]
+    // ordinal:  'Mo'
+    // callback: function () { this.month() + 1 }
+    function addFormatToken(token, padded, ordinal, callback) {
+        var func = callback;
+        if (typeof callback === 'string') {
+            func = function () {
+                return this[callback]();
+            };
+        }
+        if (token) {
+            formatTokenFunctions[token] = func;
+        }
+        if (padded) {
+            formatTokenFunctions[padded[0]] = function () {
+                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
+            };
+        }
+        if (ordinal) {
+            formatTokenFunctions[ordinal] = function () {
+                return this.localeData().ordinal(
+                    func.apply(this, arguments),
+                    token
+                );
+            };
+        }
+    }
+
+    function removeFormattingTokens(input) {
+        if (input.match(/\[[\s\S]/)) {
+            return input.replace(/^\[|\]$/g, '');
+        }
+        return input.replace(/\\/g, '');
+    }
+
+    function makeFormatFunction(format) {
+        var array = format.match(formattingTokens),
+            i,
+            length;
+
+        for (i = 0, length = array.length; i < length; i++) {
+            if (formatTokenFunctions[array[i]]) {
+                array[i] = formatTokenFunctions[array[i]];
+            } else {
+                array[i] = removeFormattingTokens(array[i]);
+            }
+        }
+
+        return function (mom) {
+            var output = '',
+                i;
+            for (i = 0; i < length; i++) {
+                output += isFunction(array[i])
+                    ? array[i].call(mom, format)
+                    : array[i];
+            }
+            return output;
+        };
+    }
+
+    // format date using native date object
+    function formatMoment(m, format) {
+        if (!m.isValid()) {
+            return m.localeData().invalidDate();
+        }
+
+        format = expandFormat(format, m.localeData());
+        formatFunctions[format] =
+            formatFunctions[format] || makeFormatFunction(format);
+
+        return formatFunctions[format](m);
+    }
+
+    function expandFormat(format, locale) {
+        var i = 5;
+
+        function replaceLongDateFormatTokens(input) {
+            return locale.longDateFormat(input) || input;
+        }
+
+        localFormattingTokens.lastIndex = 0;
+        while (i >= 0 && localFormattingTokens.test(format)) {
+            format = format.replace(
+                localFormattingTokens,
+                replaceLongDateFormatTokens
+            );
+            localFormattingTokens.lastIndex = 0;
+            i -= 1;
+        }
+
+        return format;
+    }
+
+    var defaultLongDateFormat = {
+        LTS: 'h:mm:ss A',
+        LT: 'h:mm A',
+        L: 'MM/DD/YYYY',
+        LL: 'MMMM D, YYYY',
+        LLL: 'MMMM D, YYYY h:mm A',
+        LLLL: 'dddd, MMMM D, YYYY h:mm A',
+    };
+
+    function longDateFormat(key) {
+        var format = this._longDateFormat[key],
+            formatUpper = this._longDateFormat[key.toUpperCase()];
+
+        if (format || !formatUpper) {
+            return format;
+        }
+
+        this._longDateFormat[key] = formatUpper
+            .match(formattingTokens)
+            .map(function (tok) {
+                if (
+                    tok === 'MMMM' ||
+                    tok === 'MM' ||
+                    tok === 'DD' ||
+                    tok === 'dddd'
+                ) {
+                    return tok.slice(1);
+                }
+                return tok;
+            })
+            .join('');
+
+        return this._longDateFormat[key];
+    }
+
+    var defaultInvalidDate = 'Invalid date';
+
+    function invalidDate() {
+        return this._invalidDate;
+    }
+
+    var defaultOrdinal = '%d',
+        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
+
+    function ordinal(number) {
+        return this._ordinal.replace('%d', number);
+    }
+
+    var defaultRelativeTime = {
+        future: 'in %s',
+        past: '%s ago',
+        s: 'a few seconds',
+        ss: '%d seconds',
+        m: 'a minute',
+        mm: '%d minutes',
+        h: 'an hour',
+        hh: '%d hours',
+        d: 'a day',
+        dd: '%d days',
+        w: 'a week',
+        ww: '%d weeks',
+        M: 'a month',
+        MM: '%d months',
+        y: 'a year',
+        yy: '%d years',
+    };
+
+    function relativeTime(number, withoutSuffix, string, isFuture) {
+        var output = this._relativeTime[string];
+        return isFunction(output)
+            ? output(number, withoutSuffix, string, isFuture)
+            : output.replace(/%d/i, number);
+    }
+
+    function pastFuture(diff, output) {
+        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
+        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
+    }
+
+    var aliases = {};
+
+    function addUnitAlias(unit, shorthand) {
+        var lowerCase = unit.toLowerCase();
+        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
+    }
+
+    function normalizeUnits(units) {
+        return typeof units === 'string'
+            ? aliases[units] || aliases[units.toLowerCase()]
+            : undefined;
+    }
+
+    function normalizeObjectUnits(inputObject) {
+        var normalizedInput = {},
+            normalizedProp,
+            prop;
+
+        for (prop in inputObject) {
+            if (hasOwnProp(inputObject, prop)) {
+                normalizedProp = normalizeUnits(prop);
+                if (normalizedProp) {
+                    normalizedInput[normalizedProp] = inputObject[prop];
+                }
+            }
+        }
+
+        return normalizedInput;
+    }
+
+    var priorities = {};
+
+    function addUnitPriority(unit, priority) {
+        priorities[unit] = priority;
+    }
+
+    function getPrioritizedUnits(unitsObj) {
+        var units = [],
+            u;
+        for (u in unitsObj) {
+            if (hasOwnProp(unitsObj, u)) {
+                units.push({ unit: u, priority: priorities[u] });
+            }
+        }
+        units.sort(function (a, b) {
+            return a.priority - b.priority;
+        });
+        return units;
+    }
+
+    function isLeapYear(year) {
+        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
+    }
+
+    function absFloor(number) {
+        if (number < 0) {
+            // -0 -> 0
+            return Math.ceil(number) || 0;
+        } else {
+            return Math.floor(number);
+        }
+    }
+
+    function toInt(argumentForCoercion) {
+        var coercedNumber = +argumentForCoercion,
+            value = 0;
+
+        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
+            value = absFloor(coercedNumber);
+        }
+
+        return value;
+    }
+
+    function makeGetSet(unit, keepTime) {
+        return function (value) {
+            if (value != null) {
+                set$1(this, unit, value);
+                hooks.updateOffset(this, keepTime);
+                return this;
+            } else {
+                return get(this, unit);
+            }
+        };
+    }
+
+    function get(mom, unit) {
+        return mom.isValid()
+            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()
+            : NaN;
+    }
+
+    function set$1(mom, unit, value) {
+        if (mom.isValid() && !isNaN(value)) {
+            if (
+                unit === 'FullYear' &&
+                isLeapYear(mom.year()) &&
+                mom.month() === 1 &&
+                mom.date() === 29
+            ) {
+                value = toInt(value);
+                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](
+                    value,
+                    mom.month(),
+                    daysInMonth(value, mom.month())
+                );
+            } else {
+                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
+            }
+        }
+    }
+
+    // MOMENTS
+
+    function stringGet(units) {
+        units = normalizeUnits(units);
+        if (isFunction(this[units])) {
+            return this[units]();
+        }
+        return this;
+    }
+
+    function stringSet(units, value) {
+        if (typeof units === 'object') {
+            units = normalizeObjectUnits(units);
+            var prioritized = getPrioritizedUnits(units),
+                i;
+            for (i = 0; i < prioritized.length; i++) {
+                this[prioritized[i].unit](units[prioritized[i].unit]);
+            }
+        } else {
+            units = normalizeUnits(units);
+            if (isFunction(this[units])) {
+                return this[units](value);
+            }
+        }
+        return this;
+    }
+
+    var match1 = /\d/, //       0 - 9
+        match2 = /\d\d/, //      00 - 99
+        match3 = /\d{3}/, //     000 - 999
+        match4 = /\d{4}/, //    0000 - 9999
+        match6 = /[+-]?\d{6}/, // -999999 - 999999
+        match1to2 = /\d\d?/, //       0 - 99
+        match3to4 = /\d\d\d\d?/, //     999 - 9999
+        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
+        match1to3 = /\d{1,3}/, //       0 - 999
+        match1to4 = /\d{1,4}/, //       0 - 9999
+        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
+        matchUnsigned = /\d+/, //       0 - inf
+        matchSigned = /[+-]?\d+/, //    -inf - inf
+        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
+        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
+        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
+        // any word (or two) characters or numbers including two/three word month in arabic.
+        // includes scottish gaelic two word and hyphenated months
+        matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
+        regexes;
+
+    regexes = {};
+
+    function addRegexToken(token, regex, strictRegex) {
+        regexes[token] = isFunction(regex)
+            ? regex
+            : function (isStrict, localeData) {
+                  return isStrict && strictRegex ? strictRegex : regex;
+              };
+    }
+
+    function getParseRegexForToken(token, config) {
+        if (!hasOwnProp(regexes, token)) {
+            return new RegExp(unescapeFormat(token));
+        }
+
+        return regexes[token](config._strict, config._locale);
+    }
+
+    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
+    function unescapeFormat(s) {
+        return regexEscape(
+            s
+                .replace('\\', '')
+                .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (
+                    matched,
+                    p1,
+                    p2,
+                    p3,
+                    p4
+                ) {
+                    return p1 || p2 || p3 || p4;
+                })
+        );
+    }
+
+    function regexEscape(s) {
+        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+    }
+
+    var tokens = {};
+
+    function addParseToken(token, callback) {
+        var i,
+            func = callback;
+        if (typeof token === 'string') {
+            token = [token];
+        }
+        if (isNumber(callback)) {
+            func = function (input, array) {
+                array[callback] = toInt(input);
+            };
+        }
+        for (i = 0; i < token.length; i++) {
+            tokens[token[i]] = func;
+        }
+    }
+
+    function addWeekParseToken(token, callback) {
+        addParseToken(token, function (input, array, config, token) {
+            config._w = config._w || {};
+            callback(input, config._w, config, token);
+        });
+    }
+
+    function addTimeToArrayFromToken(token, input, config) {
+        if (input != null && hasOwnProp(tokens, token)) {
+            tokens[token](input, config._a, config, token);
+        }
+    }
+
+    var YEAR = 0,
+        MONTH = 1,
+        DATE = 2,
+        HOUR = 3,
+        MINUTE = 4,
+        SECOND = 5,
+        MILLISECOND = 6,
+        WEEK = 7,
+        WEEKDAY = 8;
+
+    function mod(n, x) {
+        return ((n % x) + x) % x;
+    }
+
+    var indexOf;
+
+    if (Array.prototype.indexOf) {
+        indexOf = Array.prototype.indexOf;
+    } else {
+        indexOf = function (o) {
+            // I know
+            var i;
+            for (i = 0; i < this.length; ++i) {
+                if (this[i] === o) {
+                    return i;
+                }
+            }
+            return -1;
+        };
+    }
+
+    function daysInMonth(year, month) {
+        if (isNaN(year) || isNaN(month)) {
+            return NaN;
+        }
+        var modMonth = mod(month, 12);
+        year += (month - modMonth) / 12;
+        return modMonth === 1
+            ? isLeapYear(year)
+                ? 29
+                : 28
+            : 31 - ((modMonth % 7) % 2);
+    }
+
+    // FORMATTING
+
+    addFormatToken('M', ['MM', 2], 'Mo', function () {
+        return this.month() + 1;
+    });
+
+    addFormatToken('MMM', 0, 0, function (format) {
+        return this.localeData().monthsShort(this, format);
+    });
+
+    addFormatToken('MMMM', 0, 0, function (format) {
+        return this.localeData().months(this, format);
+    });
+
+    // ALIASES
+
+    addUnitAlias('month', 'M');
+
+    // PRIORITY
+
+    addUnitPriority('month', 8);
+
+    // PARSING
+
+    addRegexToken('M', match1to2);
+    addRegexToken('MM', match1to2, match2);
+    addRegexToken('MMM', function (isStrict, locale) {
+        return locale.monthsShortRegex(isStrict);
+    });
+    addRegexToken('MMMM', function (isStrict, locale) {
+        return locale.monthsRegex(isStrict);
+    });
+
+    addParseToken(['M', 'MM'], function (input, array) {
+        array[MONTH] = toInt(input) - 1;
+    });
+
+    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
+        var month = config._locale.monthsParse(input, token, config._strict);
+        // if we didn't find a month name, mark the date as invalid.
+        if (month != null) {
+            array[MONTH] = month;
+        } else {
+            getParsingFlags(config).invalidMonth = input;
+        }
+    });
+
+    // LOCALES
+
+    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
+            '_'
+        ),
+        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(
+            '_'
+        ),
+        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
+        defaultMonthsShortRegex = matchWord,
+        defaultMonthsRegex = matchWord;
+
+    function localeMonths(m, format) {
+        if (!m) {
+            return isArray(this._months)
+                ? this._months
+                : this._months['standalone'];
+        }
+        return isArray(this._months)
+            ? this._months[m.month()]
+            : this._months[
+                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
+                      ? 'format'
+                      : 'standalone'
+              ][m.month()];
+    }
+
+    function localeMonthsShort(m, format) {
+        if (!m) {
+            return isArray(this._monthsShort)
+                ? this._monthsShort
+                : this._monthsShort['standalone'];
+        }
+        return isArray(this._monthsShort)
+            ? this._monthsShort[m.month()]
+            : this._monthsShort[
+                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
+              ][m.month()];
+    }
+
+    function handleStrictParse(monthName, format, strict) {
+        var i,
+            ii,
+            mom,
+            llc = monthName.toLocaleLowerCase();
+        if (!this._monthsParse) {
+            // this is not used
+            this._monthsParse = [];
+            this._longMonthsParse = [];
+            this._shortMonthsParse = [];
+            for (i = 0; i < 12; ++i) {
+                mom = createUTC([2000, i]);
+                this._shortMonthsParse[i] = this.monthsShort(
+                    mom,
+                    ''
+                ).toLocaleLowerCase();
+                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
+            }
+        }
+
+        if (strict) {
+            if (format === 'MMM') {
+                ii = indexOf.call(this._shortMonthsParse, llc);
+                return ii !== -1 ? ii : null;
+            } else {
+                ii = indexOf.call(this._longMonthsParse, llc);
+                return ii !== -1 ? ii : null;
+            }
+        } else {
+            if (format === 'MMM') {
+                ii = indexOf.call(this._shortMonthsParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._longMonthsParse, llc);
+                return ii !== -1 ? ii : null;
+            } else {
+                ii = indexOf.call(this._longMonthsParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._shortMonthsParse, llc);
+                return ii !== -1 ? ii : null;
+            }
+        }
+    }
+
+    function localeMonthsParse(monthName, format, strict) {
+        var i, mom, regex;
+
+        if (this._monthsParseExact) {
+            return handleStrictParse.call(this, monthName, format, strict);
+        }
+
+        if (!this._monthsParse) {
+            this._monthsParse = [];
+            this._longMonthsParse = [];
+            this._shortMonthsParse = [];
+        }
+
+        // TODO: add sorting
+        // Sorting makes sure if one month (or abbr) is a prefix of another
+        // see sorting in computeMonthsParse
+        for (i = 0; i < 12; i++) {
+            // make the regex if we don't have it already
+            mom = createUTC([2000, i]);
+            if (strict && !this._longMonthsParse[i]) {
+                this._longMonthsParse[i] = new RegExp(
+                    '^' + this.months(mom, '').replace('.', '') + '$',
+                    'i'
+                );
+                this._shortMonthsParse[i] = new RegExp(
+                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
+                    'i'
+                );
+            }
+            if (!strict && !this._monthsParse[i]) {
+                regex =
+                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
+                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
+            }
+            // test the regex
+            if (
+                strict &&
+                format === 'MMMM' &&
+                this._longMonthsParse[i].test(monthName)
+            ) {
+                return i;
+            } else if (
+                strict &&
+                format === 'MMM' &&
+                this._shortMonthsParse[i].test(monthName)
+            ) {
+                return i;
+            } else if (!strict && this._monthsParse[i].test(monthName)) {
+                return i;
+            }
+        }
+    }
+
+    // MOMENTS
+
+    function setMonth(mom, value) {
+        var dayOfMonth;
+
+        if (!mom.isValid()) {
+            // No op
+            return mom;
+        }
+
+        if (typeof value === 'string') {
+            if (/^\d+$/.test(value)) {
+                value = toInt(value);
+            } else {
+                value = mom.localeData().monthsParse(value);
+                // TODO: Another silent failure?
+                if (!isNumber(value)) {
+                    return mom;
+                }
+            }
+        }
+
+        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
+        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
+        return mom;
+    }
+
+    function getSetMonth(value) {
+        if (value != null) {
+            setMonth(this, value);
+            hooks.updateOffset(this, true);
+            return this;
+        } else {
+            return get(this, 'Month');
+        }
+    }
+
+    function getDaysInMonth() {
+        return daysInMonth(this.year(), this.month());
+    }
+
+    function monthsShortRegex(isStrict) {
+        if (this._monthsParseExact) {
+            if (!hasOwnProp(this, '_monthsRegex')) {
+                computeMonthsParse.call(this);
+            }
+            if (isStrict) {
+                return this._monthsShortStrictRegex;
+            } else {
+                return this._monthsShortRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_monthsShortRegex')) {
+                this._monthsShortRegex = defaultMonthsShortRegex;
+            }
+            return this._monthsShortStrictRegex && isStrict
+                ? this._monthsShortStrictRegex
+                : this._monthsShortRegex;
+        }
+    }
+
+    function monthsRegex(isStrict) {
+        if (this._monthsParseExact) {
+            if (!hasOwnProp(this, '_monthsRegex')) {
+                computeMonthsParse.call(this);
+            }
+            if (isStrict) {
+                return this._monthsStrictRegex;
+            } else {
+                return this._monthsRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_monthsRegex')) {
+                this._monthsRegex = defaultMonthsRegex;
+            }
+            return this._monthsStrictRegex && isStrict
+                ? this._monthsStrictRegex
+                : this._monthsRegex;
+        }
+    }
+
+    function computeMonthsParse() {
+        function cmpLenRev(a, b) {
+            return b.length - a.length;
+        }
+
+        var shortPieces = [],
+            longPieces = [],
+            mixedPieces = [],
+            i,
+            mom;
+        for (i = 0; i < 12; i++) {
+            // make the regex if we don't have it already
+            mom = createUTC([2000, i]);
+            shortPieces.push(this.monthsShort(mom, ''));
+            longPieces.push(this.months(mom, ''));
+            mixedPieces.push(this.months(mom, ''));
+            mixedPieces.push(this.monthsShort(mom, ''));
+        }
+        // Sorting makes sure if one month (or abbr) is a prefix of another it
+        // will match the longer piece.
+        shortPieces.sort(cmpLenRev);
+        longPieces.sort(cmpLenRev);
+        mixedPieces.sort(cmpLenRev);
+        for (i = 0; i < 12; i++) {
+            shortPieces[i] = regexEscape(shortPieces[i]);
+            longPieces[i] = regexEscape(longPieces[i]);
+        }
+        for (i = 0; i < 24; i++) {
+            mixedPieces[i] = regexEscape(mixedPieces[i]);
+        }
+
+        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
+        this._monthsShortRegex = this._monthsRegex;
+        this._monthsStrictRegex = new RegExp(
+            '^(' + longPieces.join('|') + ')',
+            'i'
+        );
+        this._monthsShortStrictRegex = new RegExp(
+            '^(' + shortPieces.join('|') + ')',
+            'i'
+        );
+    }
+
+    // FORMATTING
+
+    addFormatToken('Y', 0, 0, function () {
+        var y = this.year();
+        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
+    });
+
+    addFormatToken(0, ['YY', 2], 0, function () {
+        return this.year() % 100;
+    });
+
+    addFormatToken(0, ['YYYY', 4], 0, 'year');
+    addFormatToken(0, ['YYYYY', 5], 0, 'year');
+    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
+
+    // ALIASES
+
+    addUnitAlias('year', 'y');
+
+    // PRIORITIES
+
+    addUnitPriority('year', 1);
+
+    // PARSING
+
+    addRegexToken('Y', matchSigned);
+    addRegexToken('YY', match1to2, match2);
+    addRegexToken('YYYY', match1to4, match4);
+    addRegexToken('YYYYY', match1to6, match6);
+    addRegexToken('YYYYYY', match1to6, match6);
+
+    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
+    addParseToken('YYYY', function (input, array) {
+        array[YEAR] =
+            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
+    });
+    addParseToken('YY', function (input, array) {
+        array[YEAR] = hooks.parseTwoDigitYear(input);
+    });
+    addParseToken('Y', function (input, array) {
+        array[YEAR] = parseInt(input, 10);
+    });
+
+    // HELPERS
+
+    function daysInYear(year) {
+        return isLeapYear(year) ? 366 : 365;
+    }
+
+    // HOOKS
+
+    hooks.parseTwoDigitYear = function (input) {
+        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
+    };
+
+    // MOMENTS
+
+    var getSetYear = makeGetSet('FullYear', true);
+
+    function getIsLeapYear() {
+        return isLeapYear(this.year());
+    }
+
+    function createDate(y, m, d, h, M, s, ms) {
+        // can't just apply() to create a date:
+        // https://stackoverflow.com/q/181348
+        var date;
+        // the date constructor remaps years 0-99 to 1900-1999
+        if (y < 100 && y >= 0) {
+            // preserve leap years using a full 400 year cycle, then reset
+            date = new Date(y + 400, m, d, h, M, s, ms);
+            if (isFinite(date.getFullYear())) {
+                date.setFullYear(y);
+            }
+        } else {
+            date = new Date(y, m, d, h, M, s, ms);
+        }
+
+        return date;
+    }
+
+    function createUTCDate(y) {
+        var date, args;
+        // the Date.UTC function remaps years 0-99 to 1900-1999
+        if (y < 100 && y >= 0) {
+            args = Array.prototype.slice.call(arguments);
+            // preserve leap years using a full 400 year cycle, then reset
+            args[0] = y + 400;
+            date = new Date(Date.UTC.apply(null, args));
+            if (isFinite(date.getUTCFullYear())) {
+                date.setUTCFullYear(y);
+            }
+        } else {
+            date = new Date(Date.UTC.apply(null, arguments));
+        }
+
+        return date;
+    }
+
+    // start-of-first-week - start-of-year
+    function firstWeekOffset(year, dow, doy) {
+        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
+            fwd = 7 + dow - doy,
+            // first-week day local weekday -- which local weekday is fwd
+            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
+
+        return -fwdlw + fwd - 1;
+    }
+
+    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
+    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
+        var localWeekday = (7 + weekday - dow) % 7,
+            weekOffset = firstWeekOffset(year, dow, doy),
+            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
+            resYear,
+            resDayOfYear;
+
+        if (dayOfYear <= 0) {
+            resYear = year - 1;
+            resDayOfYear = daysInYear(resYear) + dayOfYear;
+        } else if (dayOfYear > daysInYear(year)) {
+            resYear = year + 1;
+            resDayOfYear = dayOfYear - daysInYear(year);
+        } else {
+            resYear = year;
+            resDayOfYear = dayOfYear;
+        }
+
+        return {
+            year: resYear,
+            dayOfYear: resDayOfYear,
+        };
+    }
+
+    function weekOfYear(mom, dow, doy) {
+        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
+            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
+            resWeek,
+            resYear;
+
+        if (week < 1) {
+            resYear = mom.year() - 1;
+            resWeek = week + weeksInYear(resYear, dow, doy);
+        } else if (week > weeksInYear(mom.year(), dow, doy)) {
+            resWeek = week - weeksInYear(mom.year(), dow, doy);
+            resYear = mom.year() + 1;
+        } else {
+            resYear = mom.year();
+            resWeek = week;
+        }
+
+        return {
+            week: resWeek,
+            year: resYear,
+        };
+    }
+
+    function weeksInYear(year, dow, doy) {
+        var weekOffset = firstWeekOffset(year, dow, doy),
+            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
+        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
+    }
+
+    // FORMATTING
+
+    addFormatToken('w', ['ww', 2], 'wo', 'week');
+    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
+
+    // ALIASES
+
+    addUnitAlias('week', 'w');
+    addUnitAlias('isoWeek', 'W');
+
+    // PRIORITIES
+
+    addUnitPriority('week', 5);
+    addUnitPriority('isoWeek', 5);
+
+    // PARSING
+
+    addRegexToken('w', match1to2);
+    addRegexToken('ww', match1to2, match2);
+    addRegexToken('W', match1to2);
+    addRegexToken('WW', match1to2, match2);
+
+    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (
+        input,
+        week,
+        config,
+        token
+    ) {
+        week[token.substr(0, 1)] = toInt(input);
+    });
+
+    // HELPERS
+
+    // LOCALES
+
+    function localeWeek(mom) {
+        return weekOfYear(mom, this._week.dow, this._week.doy).week;
+    }
+
+    var defaultLocaleWeek = {
+        dow: 0, // Sunday is the first day of the week.
+        doy: 6, // The week that contains Jan 6th is the first week of the year.
+    };
+
+    function localeFirstDayOfWeek() {
+        return this._week.dow;
+    }
+
+    function localeFirstDayOfYear() {
+        return this._week.doy;
+    }
+
+    // MOMENTS
+
+    function getSetWeek(input) {
+        var week = this.localeData().week(this);
+        return input == null ? week : this.add((input - week) * 7, 'd');
+    }
+
+    function getSetISOWeek(input) {
+        var week = weekOfYear(this, 1, 4).week;
+        return input == null ? week : this.add((input - week) * 7, 'd');
+    }
+
+    // FORMATTING
+
+    addFormatToken('d', 0, 'do', 'day');
+
+    addFormatToken('dd', 0, 0, function (format) {
+        return this.localeData().weekdaysMin(this, format);
+    });
+
+    addFormatToken('ddd', 0, 0, function (format) {
+        return this.localeData().weekdaysShort(this, format);
+    });
+
+    addFormatToken('dddd', 0, 0, function (format) {
+        return this.localeData().weekdays(this, format);
+    });
+
+    addFormatToken('e', 0, 0, 'weekday');
+    addFormatToken('E', 0, 0, 'isoWeekday');
+
+    // ALIASES
+
+    addUnitAlias('day', 'd');
+    addUnitAlias('weekday', 'e');
+    addUnitAlias('isoWeekday', 'E');
+
+    // PRIORITY
+    addUnitPriority('day', 11);
+    addUnitPriority('weekday', 11);
+    addUnitPriority('isoWeekday', 11);
+
+    // PARSING
+
+    addRegexToken('d', match1to2);
+    addRegexToken('e', match1to2);
+    addRegexToken('E', match1to2);
+    addRegexToken('dd', function (isStrict, locale) {
+        return locale.weekdaysMinRegex(isStrict);
+    });
+    addRegexToken('ddd', function (isStrict, locale) {
+        return locale.weekdaysShortRegex(isStrict);
+    });
+    addRegexToken('dddd', function (isStrict, locale) {
+        return locale.weekdaysRegex(isStrict);
+    });
+
+    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
+        var weekday = config._locale.weekdaysParse(input, token, config._strict);
+        // if we didn't get a weekday name, mark the date as invalid
+        if (weekday != null) {
+            week.d = weekday;
+        } else {
+            getParsingFlags(config).invalidWeekday = input;
+        }
+    });
+
+    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
+        week[token] = toInt(input);
+    });
+
+    // HELPERS
+
+    function parseWeekday(input, locale) {
+        if (typeof input !== 'string') {
+            return input;
+        }
+
+        if (!isNaN(input)) {
+            return parseInt(input, 10);
+        }
+
+        input = locale.weekdaysParse(input);
+        if (typeof input === 'number') {
+            return input;
+        }
+
+        return null;
+    }
+
+    function parseIsoWeekday(input, locale) {
+        if (typeof input === 'string') {
+            return locale.weekdaysParse(input) % 7 || 7;
+        }
+        return isNaN(input) ? null : input;
+    }
+
+    // LOCALES
+    function shiftWeekdays(ws, n) {
+        return ws.slice(n, 7).concat(ws.slice(0, n));
+    }
+
+    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
+            '_'
+        ),
+        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+        defaultWeekdaysRegex = matchWord,
+        defaultWeekdaysShortRegex = matchWord,
+        defaultWeekdaysMinRegex = matchWord;
+
+    function localeWeekdays(m, format) {
+        var weekdays = isArray(this._weekdays)
+            ? this._weekdays
+            : this._weekdays[
+                  m && m !== true && this._weekdays.isFormat.test(format)
+                      ? 'format'
+                      : 'standalone'
+              ];
+        return m === true
+            ? shiftWeekdays(weekdays, this._week.dow)
+            : m
+            ? weekdays[m.day()]
+            : weekdays;
+    }
+
+    function localeWeekdaysShort(m) {
+        return m === true
+            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
+            : m
+            ? this._weekdaysShort[m.day()]
+            : this._weekdaysShort;
+    }
+
+    function localeWeekdaysMin(m) {
+        return m === true
+            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
+            : m
+            ? this._weekdaysMin[m.day()]
+            : this._weekdaysMin;
+    }
+
+    function handleStrictParse$1(weekdayName, format, strict) {
+        var i,
+            ii,
+            mom,
+            llc = weekdayName.toLocaleLowerCase();
+        if (!this._weekdaysParse) {
+            this._weekdaysParse = [];
+            this._shortWeekdaysParse = [];
+            this._minWeekdaysParse = [];
+
+            for (i = 0; i < 7; ++i) {
+                mom = createUTC([2000, 1]).day(i);
+                this._minWeekdaysParse[i] = this.weekdaysMin(
+                    mom,
+                    ''
+                ).toLocaleLowerCase();
+                this._shortWeekdaysParse[i] = this.weekdaysShort(
+                    mom,
+                    ''
+                ).toLocaleLowerCase();
+                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
+            }
+        }
+
+        if (strict) {
+            if (format === 'dddd') {
+                ii = indexOf.call(this._weekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            } else if (format === 'ddd') {
+                ii = indexOf.call(this._shortWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            } else {
+                ii = indexOf.call(this._minWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            }
+        } else {
+            if (format === 'dddd') {
+                ii = indexOf.call(this._weekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._shortWeekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._minWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            } else if (format === 'ddd') {
+                ii = indexOf.call(this._shortWeekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._weekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._minWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            } else {
+                ii = indexOf.call(this._minWeekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._weekdaysParse, llc);
+                if (ii !== -1) {
+                    return ii;
+                }
+                ii = indexOf.call(this._shortWeekdaysParse, llc);
+                return ii !== -1 ? ii : null;
+            }
+        }
+    }
+
+    function localeWeekdaysParse(weekdayName, format, strict) {
+        var i, mom, regex;
+
+        if (this._weekdaysParseExact) {
+            return handleStrictParse$1.call(this, weekdayName, format, strict);
+        }
+
+        if (!this._weekdaysParse) {
+            this._weekdaysParse = [];
+            this._minWeekdaysParse = [];
+            this._shortWeekdaysParse = [];
+            this._fullWeekdaysParse = [];
+        }
+
+        for (i = 0; i < 7; i++) {
+            // make the regex if we don't have it already
+
+            mom = createUTC([2000, 1]).day(i);
+            if (strict && !this._fullWeekdaysParse[i]) {
+                this._fullWeekdaysParse[i] = new RegExp(
+                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
+                    'i'
+                );
+                this._shortWeekdaysParse[i] = new RegExp(
+                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
+                    'i'
+                );
+                this._minWeekdaysParse[i] = new RegExp(
+                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
+                    'i'
+                );
+            }
+            if (!this._weekdaysParse[i]) {
+                regex =
+                    '^' +
+                    this.weekdays(mom, '') +
+                    '|^' +
+                    this.weekdaysShort(mom, '') +
+                    '|^' +
+                    this.weekdaysMin(mom, '');
+                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
+            }
+            // test the regex
+            if (
+                strict &&
+                format === 'dddd' &&
+                this._fullWeekdaysParse[i].test(weekdayName)
+            ) {
+                return i;
+            } else if (
+                strict &&
+                format === 'ddd' &&
+                this._shortWeekdaysParse[i].test(weekdayName)
+            ) {
+                return i;
+            } else if (
+                strict &&
+                format === 'dd' &&
+                this._minWeekdaysParse[i].test(weekdayName)
+            ) {
+                return i;
+            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
+                return i;
+            }
+        }
+    }
+
+    // MOMENTS
+
+    function getSetDayOfWeek(input) {
+        if (!this.isValid()) {
+            return input != null ? this : NaN;
+        }
+        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
+        if (input != null) {
+            input = parseWeekday(input, this.localeData());
+            return this.add(input - day, 'd');
+        } else {
+            return day;
+        }
+    }
+
+    function getSetLocaleDayOfWeek(input) {
+        if (!this.isValid()) {
+            return input != null ? this : NaN;
+        }
+        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
+        return input == null ? weekday : this.add(input - weekday, 'd');
+    }
+
+    function getSetISODayOfWeek(input) {
+        if (!this.isValid()) {
+            return input != null ? this : NaN;
+        }
+
+        // behaves the same as moment#day except
+        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
+        // as a setter, sunday should belong to the previous week.
+
+        if (input != null) {
+            var weekday = parseIsoWeekday(input, this.localeData());
+            return this.day(this.day() % 7 ? weekday : weekday - 7);
+        } else {
+            return this.day() || 7;
+        }
+    }
+
+    function weekdaysRegex(isStrict) {
+        if (this._weekdaysParseExact) {
+            if (!hasOwnProp(this, '_weekdaysRegex')) {
+                computeWeekdaysParse.call(this);
+            }
+            if (isStrict) {
+                return this._weekdaysStrictRegex;
+            } else {
+                return this._weekdaysRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_weekdaysRegex')) {
+                this._weekdaysRegex = defaultWeekdaysRegex;
+            }
+            return this._weekdaysStrictRegex && isStrict
+                ? this._weekdaysStrictRegex
+                : this._weekdaysRegex;
+        }
+    }
+
+    function weekdaysShortRegex(isStrict) {
+        if (this._weekdaysParseExact) {
+            if (!hasOwnProp(this, '_weekdaysRegex')) {
+                computeWeekdaysParse.call(this);
+            }
+            if (isStrict) {
+                return this._weekdaysShortStrictRegex;
+            } else {
+                return this._weekdaysShortRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
+                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
+            }
+            return this._weekdaysShortStrictRegex && isStrict
+                ? this._weekdaysShortStrictRegex
+                : this._weekdaysShortRegex;
+        }
+    }
+
+    function weekdaysMinRegex(isStrict) {
+        if (this._weekdaysParseExact) {
+            if (!hasOwnProp(this, '_weekdaysRegex')) {
+                computeWeekdaysParse.call(this);
+            }
+            if (isStrict) {
+                return this._weekdaysMinStrictRegex;
+            } else {
+                return this._weekdaysMinRegex;
+            }
+        } else {
+            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
+                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
+            }
+            return this._weekdaysMinStrictRegex && isStrict
+                ? this._weekdaysMinStrictRegex
+                : this._weekdaysMinRegex;
+        }
+    }
+
+    function computeWeekdaysParse() {
+        function cmpLenRev(a, b) {
+            return b.length - a.length;
+        }
+
+        var minPieces = [],
+            shortPieces = [],
+            longPieces = [],
+            mixedPieces = [],
+            i,
+            mom,
+            minp,
+            shortp,
+            longp;
+        for (i = 0; i < 7; i++) {
+            // make the regex if we don't have it already
+            mom = createUTC([2000, 1]).day(i);
+            minp = regexEscape(this.weekdaysMin(mom, ''));
+            shortp = regexEscape(this.weekdaysShort(mom, ''));
+            longp = regexEscape(this.weekdays(mom, ''));
+            minPieces.push(minp);
+            shortPieces.push(shortp);
+            longPieces.push(longp);
+            mixedPieces.push(minp);
+            mixedPieces.push(shortp);
+            mixedPieces.push(longp);
+        }
+        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
+        // will match the longer piece.
+        minPieces.sort(cmpLenRev);
+        shortPieces.sort(cmpLenRev);
+        longPieces.sort(cmpLenRev);
+        mixedPieces.sort(cmpLenRev);
+
+        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
+        this._weekdaysShortRegex = this._weekdaysRegex;
+        this._weekdaysMinRegex = this._weekdaysRegex;
+
+        this._weekdaysStrictRegex = new RegExp(
+            '^(' + longPieces.join('|') + ')',
+            'i'
+        );
+        this._weekdaysShortStrictRegex = new RegExp(
+            '^(' + shortPieces.join('|') + ')',
+            'i'
+        );
+        this._weekdaysMinStrictRegex = new RegExp(
+            '^(' + minPieces.join('|') + ')',
+            'i'
+        );
+    }
+
+    // FORMATTING
+
+    function hFormat() {
+        return this.hours() % 12 || 12;
+    }
+
+    function kFormat() {
+        return this.hours() || 24;
+    }
+
+    addFormatToken('H', ['HH', 2], 0, 'hour');
+    addFormatToken('h', ['hh', 2], 0, hFormat);
+    addFormatToken('k', ['kk', 2], 0, kFormat);
+
+    addFormatToken('hmm', 0, 0, function () {
+        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
+    });
+
+    addFormatToken('hmmss', 0, 0, function () {
+        return (
+            '' +
+            hFormat.apply(this) +
+            zeroFill(this.minutes(), 2) +
+            zeroFill(this.seconds(), 2)
+        );
+    });
+
+    addFormatToken('Hmm', 0, 0, function () {
+        return '' + this.hours() + zeroFill(this.minutes(), 2);
+    });
+
+    addFormatToken('Hmmss', 0, 0, function () {
+        return (
+            '' +
+            this.hours() +
+            zeroFill(this.minutes(), 2) +
+            zeroFill(this.seconds(), 2)
+        );
+    });
+
+    function meridiem(token, lowercase) {
+        addFormatToken(token, 0, 0, function () {
+            return this.localeData().meridiem(
+                this.hours(),
+                this.minutes(),
+                lowercase
+            );
+        });
+    }
+
+    meridiem('a', true);
+    meridiem('A', false);
+
+    // ALIASES
+
+    addUnitAlias('hour', 'h');
+
+    // PRIORITY
+    addUnitPriority('hour', 13);
+
+    // PARSING
+
+    function matchMeridiem(isStrict, locale) {
+        return locale._meridiemParse;
+    }
+
+    addRegexToken('a', matchMeridiem);
+    addRegexToken('A', matchMeridiem);
+    addRegexToken('H', match1to2);
+    addRegexToken('h', match1to2);
+    addRegexToken('k', match1to2);
+    addRegexToken('HH', match1to2, match2);
+    addRegexToken('hh', match1to2, match2);
+    addRegexToken('kk', match1to2, match2);
+
+    addRegexToken('hmm', match3to4);
+    addRegexToken('hmmss', match5to6);
+    addRegexToken('Hmm', match3to4);
+    addRegexToken('Hmmss', match5to6);
+
+    addParseToken(['H', 'HH'], HOUR);
+    addParseToken(['k', 'kk'], function (input, array, config) {
+        var kInput = toInt(input);
+        array[HOUR] = kInput === 24 ? 0 : kInput;
+    });
+    addParseToken(['a', 'A'], function (input, array, config) {
+        config._isPm = config._locale.isPM(input);
+        config._meridiem = input;
+    });
+    addParseToken(['h', 'hh'], function (input, array, config) {
+        array[HOUR] = toInt(input);
+        getParsingFlags(config).bigHour = true;
+    });
+    addParseToken('hmm', function (input, array, config) {
+        var pos = input.length - 2;
+        array[HOUR] = toInt(input.substr(0, pos));
+        array[MINUTE] = toInt(input.substr(pos));
+        getParsingFlags(config).bigHour = true;
+    });
+    addParseToken('hmmss', function (input, array, config) {
+        var pos1 = input.length - 4,
+            pos2 = input.length - 2;
+        array[HOUR] = toInt(input.substr(0, pos1));
+        array[MINUTE] = toInt(input.substr(pos1, 2));
+        array[SECOND] = toInt(input.substr(pos2));
+        getParsingFlags(config).bigHour = true;
+    });
+    addParseToken('Hmm', function (input, array, config) {
+        var pos = input.length - 2;
+        array[HOUR] = toInt(input.substr(0, pos));
+        array[MINUTE] = toInt(input.substr(pos));
+    });
+    addParseToken('Hmmss', function (input, array, config) {
+        var pos1 = input.length - 4,
+            pos2 = input.length - 2;
+        array[HOUR] = toInt(input.substr(0, pos1));
+        array[MINUTE] = toInt(input.substr(pos1, 2));
+        array[SECOND] = toInt(input.substr(pos2));
+    });
+
+    // LOCALES
+
+    function localeIsPM(input) {
+        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
+        // Using charAt should be more compatible.
+        return (input + '').toLowerCase().charAt(0) === 'p';
+    }
+
+    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
+        // Setting the hour should keep the time, because the user explicitly
+        // specified which hour they want. So trying to maintain the same hour (in
+        // a new timezone) makes sense. Adding/subtracting hours does not follow
+        // this rule.
+        getSetHour = makeGetSet('Hours', true);
+
+    function localeMeridiem(hours, minutes, isLower) {
+        if (hours > 11) {
+            return isLower ? 'pm' : 'PM';
+        } else {
+            return isLower ? 'am' : 'AM';
+        }
+    }
+
+    var baseConfig = {
+        calendar: defaultCalendar,
+        longDateFormat: defaultLongDateFormat,
+        invalidDate: defaultInvalidDate,
+        ordinal: defaultOrdinal,
+        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
+        relativeTime: defaultRelativeTime,
+
+        months: defaultLocaleMonths,
+        monthsShort: defaultLocaleMonthsShort,
+
+        week: defaultLocaleWeek,
+
+        weekdays: defaultLocaleWeekdays,
+        weekdaysMin: defaultLocaleWeekdaysMin,
+        weekdaysShort: defaultLocaleWeekdaysShort,
+
+        meridiemParse: defaultLocaleMeridiemParse,
+    };
+
+    // internal storage for locale config files
+    var locales = {},
+        localeFamilies = {},
+        globalLocale;
+
+    function commonPrefix(arr1, arr2) {
+        var i,
+            minl = Math.min(arr1.length, arr2.length);
+        for (i = 0; i < minl; i += 1) {
+            if (arr1[i] !== arr2[i]) {
+                return i;
+            }
+        }
+        return minl;
+    }
+
+    function normalizeLocale(key) {
+        return key ? key.toLowerCase().replace('_', '-') : key;
+    }
+
+    // pick the locale from the array
+    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
+    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
+    function chooseLocale(names) {
+        var i = 0,
+            j,
+            next,
+            locale,
+            split;
+
+        while (i < names.length) {
+            split = normalizeLocale(names[i]).split('-');
+            j = split.length;
+            next = normalizeLocale(names[i + 1]);
+            next = next ? next.split('-') : null;
+            while (j > 0) {
+                locale = loadLocale(split.slice(0, j).join('-'));
+                if (locale) {
+                    return locale;
+                }
+                if (
+                    next &&
+                    next.length >= j &&
+                    commonPrefix(split, next) >= j - 1
+                ) {
+                    //the next array item is better than a shallower substring of this one
+                    break;
+                }
+                j--;
+            }
+            i++;
+        }
+        return globalLocale;
+    }
+
+    function loadLocale(name) {
+        var oldLocale = null,
+            aliasedRequire;
+        // TODO: Find a better way to register and load all the locales in Node
+        if (
+            locales[name] === undefined &&
+            typeof module !== 'undefined' &&
+            module &&
+            module.exports
+        ) {
+            try {
+                oldLocale = globalLocale._abbr;
+                aliasedRequire = require;
+                aliasedRequire('./locale/' + name);
+                getSetGlobalLocale(oldLocale);
+            } catch (e) {
+                // mark as not found to avoid repeating expensive file require call causing high CPU
+                // when trying to find en-US, en_US, en-us for every format call
+                locales[name] = null; // null means not found
+            }
+        }
+        return locales[name];
+    }
+
+    // This function will load locale and then set the global locale.  If
+    // no arguments are passed in, it will simply return the current global
+    // locale key.
+    function getSetGlobalLocale(key, values) {
+        var data;
+        if (key) {
+            if (isUndefined(values)) {
+                data = getLocale(key);
+            } else {
+                data = defineLocale(key, values);
+            }
+
+            if (data) {
+                // moment.duration._locale = moment._locale = data;
+                globalLocale = data;
+            } else {
+                if (typeof console !== 'undefined' && console.warn) {
+                    //warn user if arguments are passed but the locale could not be set
+                    console.warn(
+                        'Locale ' + key + ' not found. Did you forget to load it?'
+                    );
+                }
+            }
+        }
+
+        return globalLocale._abbr;
+    }
+
+    function defineLocale(name, config) {
+        if (config !== null) {
+            var locale,
+                parentConfig = baseConfig;
+            config.abbr = name;
+            if (locales[name] != null) {
+                deprecateSimple(
+                    'defineLocaleOverride',
+                    'use moment.updateLocale(localeName, config) to change ' +
+                        'an existing locale. moment.defineLocale(localeName, ' +
+                        'config) should only be used for creating a new locale ' +
+                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
+                );
+                parentConfig = locales[name]._config;
+            } else if (config.parentLocale != null) {
+                if (locales[config.parentLocale] != null) {
+                    parentConfig = locales[config.parentLocale]._config;
+                } else {
+                    locale = loadLocale(config.parentLocale);
+                    if (locale != null) {
+                        parentConfig = locale._config;
+                    } else {
+                        if (!localeFamilies[config.parentLocale]) {
+                            localeFamilies[config.parentLocale] = [];
+                        }
+                        localeFamilies[config.parentLocale].push({
+                            name: name,
+                            config: config,
+                        });
+                        return null;
+                    }
+                }
+            }
+            locales[name] = new Locale(mergeConfigs(parentConfig, config));
+
+            if (localeFamilies[name]) {
+                localeFamilies[name].forEach(function (x) {
+                    defineLocale(x.name, x.config);
+                });
+            }
+
+            // backwards compat for now: also set the locale
+            // make sure we set the locale AFTER all child locales have been
+            // created, so we won't end up with the child locale set.
+            getSetGlobalLocale(name);
+
+            return locales[name];
+        } else {
+            // useful for testing
+            delete locales[name];
+            return null;
+        }
+    }
+
+    function updateLocale(name, config) {
+        if (config != null) {
+            var locale,
+                tmpLocale,
+                parentConfig = baseConfig;
+
+            if (locales[name] != null && locales[name].parentLocale != null) {
+                // Update existing child locale in-place to avoid memory-leaks
+                locales[name].set(mergeConfigs(locales[name]._config, config));
+            } else {
+                // MERGE
+                tmpLocale = loadLocale(name);
+                if (tmpLocale != null) {
+                    parentConfig = tmpLocale._config;
+                }
+                config = mergeConfigs(parentConfig, config);
+                if (tmpLocale == null) {
+                    // updateLocale is called for creating a new locale
+                    // Set abbr so it will have a name (getters return
+                    // undefined otherwise).
+                    config.abbr = name;
+                }
+                locale = new Locale(config);
+                locale.parentLocale = locales[name];
+                locales[name] = locale;
+            }
+
+            // backwards compat for now: also set the locale
+            getSetGlobalLocale(name);
+        } else {
+            // pass null for config to unupdate, useful for tests
+            if (locales[name] != null) {
+                if (locales[name].parentLocale != null) {
+                    locales[name] = locales[name].parentLocale;
+                    if (name === getSetGlobalLocale()) {
+                        getSetGlobalLocale(name);
+                    }
+                } else if (locales[name] != null) {
+                    delete locales[name];
+                }
+            }
+        }
+        return locales[name];
+    }
+
+    // returns locale data
+    function getLocale(key) {
+        var locale;
+
+        if (key && key._locale && key._locale._abbr) {
+            key = key._locale._abbr;
+        }
+
+        if (!key) {
+            return globalLocale;
+        }
+
+        if (!isArray(key)) {
+            //short-circuit everything else
+            locale = loadLocale(key);
+            if (locale) {
+                return locale;
+            }
+            key = [key];
+        }
+
+        return chooseLocale(key);
+    }
+
+    function listLocales() {
+        return keys(locales);
+    }
+
+    function checkOverflow(m) {
+        var overflow,
+            a = m._a;
+
+        if (a && getParsingFlags(m).overflow === -2) {
+            overflow =
+                a[MONTH] < 0 || a[MONTH] > 11
+                    ? MONTH
+                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
+                    ? DATE
+                    : a[HOUR] < 0 ||
+                      a[HOUR] > 24 ||
+                      (a[HOUR] === 24 &&
+                          (a[MINUTE] !== 0 ||
+                              a[SECOND] !== 0 ||
+                              a[MILLISECOND] !== 0))
+                    ? HOUR
+                    : a[MINUTE] < 0 || a[MINUTE] > 59
+                    ? MINUTE
+                    : a[SECOND] < 0 || a[SECOND] > 59
+                    ? SECOND
+                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
+                    ? MILLISECOND
+                    : -1;
+
+            if (
+                getParsingFlags(m)._overflowDayOfYear &&
+                (overflow < YEAR || overflow > DATE)
+            ) {
+                overflow = DATE;
+            }
+            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
+                overflow = WEEK;
+            }
+            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
+                overflow = WEEKDAY;
+            }
+
+            getParsingFlags(m).overflow = overflow;
+        }
+
+        return m;
+    }
+
+    // iso 8601 regex
+    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
+    var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
+        basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
+        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
+        isoDates = [
+            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
+            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
+            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
+            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
+            ['YYYY-DDD', /\d{4}-\d{3}/],
+            ['YYYY-MM', /\d{4}-\d\d/, false],
+            ['YYYYYYMMDD', /[+-]\d{10}/],
+            ['YYYYMMDD', /\d{8}/],
+            ['GGGG[W]WWE', /\d{4}W\d{3}/],
+            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
+            ['YYYYDDD', /\d{7}/],
+            ['YYYYMM', /\d{6}/, false],
+            ['YYYY', /\d{4}/, false],
+        ],
+        // iso time formats and regexes
+        isoTimes = [
+            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
+            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
+            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
+            ['HH:mm', /\d\d:\d\d/],
+            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
+            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
+            ['HHmmss', /\d\d\d\d\d\d/],
+            ['HHmm', /\d\d\d\d/],
+            ['HH', /\d\d/],
+        ],
+        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
+        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
+        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
+        obsOffsets = {
+            UT: 0,
+            GMT: 0,
+            EDT: -4 * 60,
+            EST: -5 * 60,
+            CDT: -5 * 60,
+            CST: -6 * 60,
+            MDT: -6 * 60,
+            MST: -7 * 60,
+            PDT: -7 * 60,
+            PST: -8 * 60,
+        };
+
+    // date from iso format
+    function configFromISO(config) {
+        var i,
+            l,
+            string = config._i,
+            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
+            allowTime,
+            dateFormat,
+            timeFormat,
+            tzFormat;
+
+        if (match) {
+            getParsingFlags(config).iso = true;
+
+            for (i = 0, l = isoDates.length; i < l; i++) {
+                if (isoDates[i][1].exec(match[1])) {
+                    dateFormat = isoDates[i][0];
+                    allowTime = isoDates[i][2] !== false;
+                    break;
+                }
+            }
+            if (dateFormat == null) {
+                config._isValid = false;
+                return;
+            }
+            if (match[3]) {
+                for (i = 0, l = isoTimes.length; i < l; i++) {
+                    if (isoTimes[i][1].exec(match[3])) {
+                        // match[2] should be 'T' or space
+                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
+                        break;
+                    }
+                }
+                if (timeFormat == null) {
+                    config._isValid = false;
+                    return;
+                }
+            }
+            if (!allowTime && timeFormat != null) {
+                config._isValid = false;
+                return;
+            }
+            if (match[4]) {
+                if (tzRegex.exec(match[4])) {
+                    tzFormat = 'Z';
+                } else {
+                    config._isValid = false;
+                    return;
+                }
+            }
+            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
+            configFromStringAndFormat(config);
+        } else {
+            config._isValid = false;
+        }
+    }
+
+    function extractFromRFC2822Strings(
+        yearStr,
+        monthStr,
+        dayStr,
+        hourStr,
+        minuteStr,
+        secondStr
+    ) {
+        var result = [
+            untruncateYear(yearStr),
+            defaultLocaleMonthsShort.indexOf(monthStr),
+            parseInt(dayStr, 10),
+            parseInt(hourStr, 10),
+            parseInt(minuteStr, 10),
+        ];
+
+        if (secondStr) {
+            result.push(parseInt(secondStr, 10));
+        }
+
+        return result;
+    }
+
+    function untruncateYear(yearStr) {
+        var year = parseInt(yearStr, 10);
+        if (year <= 49) {
+            return 2000 + year;
+        } else if (year <= 999) {
+            return 1900 + year;
+        }
+        return year;
+    }
+
+    function preprocessRFC2822(s) {
+        // Remove comments and folding whitespace and replace multiple-spaces with a single space
+        return s
+            .replace(/\([^)]*\)|[\n\t]/g, ' ')
+            .replace(/(\s\s+)/g, ' ')
+            .replace(/^\s\s*/, '')
+            .replace(/\s\s*$/, '');
+    }
+
+    function checkWeekday(weekdayStr, parsedInput, config) {
+        if (weekdayStr) {
+            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
+            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
+                weekdayActual = new Date(
+                    parsedInput[0],
+                    parsedInput[1],
+                    parsedInput[2]
+                ).getDay();
+            if (weekdayProvided !== weekdayActual) {
+                getParsingFlags(config).weekdayMismatch = true;
+                config._isValid = false;
+                return false;
+            }
+        }
+        return true;
+    }
+
+    function calculateOffset(obsOffset, militaryOffset, numOffset) {
+        if (obsOffset) {
+            return obsOffsets[obsOffset];
+        } else if (militaryOffset) {
+            // the only allowed military tz is Z
+            return 0;
+        } else {
+            var hm = parseInt(numOffset, 10),
+                m = hm % 100,
+                h = (hm - m) / 100;
+            return h * 60 + m;
+        }
+    }
+
+    // date and time from ref 2822 format
+    function configFromRFC2822(config) {
+        var match = rfc2822.exec(preprocessRFC2822(config._i)),
+            parsedArray;
+        if (match) {
+            parsedArray = extractFromRFC2822Strings(
+                match[4],
+                match[3],
+                match[2],
+                match[5],
+                match[6],
+                match[7]
+            );
+            if (!checkWeekday(match[1], parsedArray, config)) {
+                return;
+            }
+
+            config._a = parsedArray;
+            config._tzm = calculateOffset(match[8], match[9], match[10]);
+
+            config._d = createUTCDate.apply(null, config._a);
+            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
+
+            getParsingFlags(config).rfc2822 = true;
+        } else {
+            config._isValid = false;
+        }
+    }
+
+    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
+    function configFromString(config) {
+        var matched = aspNetJsonRegex.exec(config._i);
+        if (matched !== null) {
+            config._d = new Date(+matched[1]);
+            return;
+        }
+
+        configFromISO(config);
+        if (config._isValid === false) {
+            delete config._isValid;
+        } else {
+            return;
+        }
+
+        configFromRFC2822(config);
+        if (config._isValid === false) {
+            delete config._isValid;
+        } else {
+            return;
+        }
+
+        if (config._strict) {
+            config._isValid = false;
+        } else {
+            // Final attempt, use Input Fallback
+            hooks.createFromInputFallback(config);
+        }
+    }
+
+    hooks.createFromInputFallback = deprecate(
+        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
+            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
+            'discouraged and will be removed in an upcoming major release. Please refer to ' +
+            'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
+        function (config) {
+            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
+        }
+    );
+
+    // Pick the first defined of two or three arguments.
+    function defaults(a, b, c) {
+        if (a != null) {
+            return a;
+        }
+        if (b != null) {
+            return b;
+        }
+        return c;
+    }
+
+    function currentDateArray(config) {
+        // hooks is actually the exported moment object
+        var nowValue = new Date(hooks.now());
+        if (config._useUTC) {
+            return [
+                nowValue.getUTCFullYear(),
+                nowValue.getUTCMonth(),
+                nowValue.getUTCDate(),
+            ];
+        }
+        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
+    }
+
+    // convert an array to a date.
+    // the array should mirror the parameters below
+    // note: all values past the year are optional and will default to the lowest possible value.
+    // [year, month, day , hour, minute, second, millisecond]
+    function configFromArray(config) {
+        var i,
+            date,
+            input = [],
+            currentDate,
+            expectedWeekday,
+            yearToUse;
+
+        if (config._d) {
+            return;
+        }
+
+        currentDate = currentDateArray(config);
+
+        //compute day of the year from weeks and weekdays
+        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
+            dayOfYearFromWeekInfo(config);
+        }
+
+        //if the day of the year is set, figure out what it is
+        if (config._dayOfYear != null) {
+            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
+
+            if (
+                config._dayOfYear > daysInYear(yearToUse) ||
+                config._dayOfYear === 0
+            ) {
+                getParsingFlags(config)._overflowDayOfYear = true;
+            }
+
+            date = createUTCDate(yearToUse, 0, config._dayOfYear);
+            config._a[MONTH] = date.getUTCMonth();
+            config._a[DATE] = date.getUTCDate();
+        }
+
+        // Default to current date.
+        // * if no year, month, day of month are given, default to today
+        // * if day of month is given, default month and year
+        // * if month is given, default only year
+        // * if year is given, don't default anything
+        for (i = 0; i < 3 && config._a[i] == null; ++i) {
+            config._a[i] = input[i] = currentDate[i];
+        }
+
+        // Zero out whatever was not defaulted, including time
+        for (; i < 7; i++) {
+            config._a[i] = input[i] =
+                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
+        }
+
+        // Check for 24:00:00.000
+        if (
+            config._a[HOUR] === 24 &&
+            config._a[MINUTE] === 0 &&
+            config._a[SECOND] === 0 &&
+            config._a[MILLISECOND] === 0
+        ) {
+            config._nextDay = true;
+            config._a[HOUR] = 0;
+        }
+
+        config._d = (config._useUTC ? createUTCDate : createDate).apply(
+            null,
+            input
+        );
+        expectedWeekday = config._useUTC
+            ? config._d.getUTCDay()
+            : config._d.getDay();
+
+        // Apply timezone offset from input. The actual utcOffset can be changed
+        // with parseZone.
+        if (config._tzm != null) {
+            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
+        }
+
+        if (config._nextDay) {
+            config._a[HOUR] = 24;
+        }
+
+        // check for mismatching day of week
+        if (
+            config._w &&
+            typeof config._w.d !== 'undefined' &&
+            config._w.d !== expectedWeekday
+        ) {
+            getParsingFlags(config).weekdayMismatch = true;
+        }
+    }
+
+    function dayOfYearFromWeekInfo(config) {
+        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
+
+        w = config._w;
+        if (w.GG != null || w.W != null || w.E != null) {
+            dow = 1;
+            doy = 4;
+
+            // TODO: We need to take the current isoWeekYear, but that depends on
+            // how we interpret now (local, utc, fixed offset). So create
+            // a now version of current config (take local/utc/offset flags, and
+            // create now).
+            weekYear = defaults(
+                w.GG,
+                config._a[YEAR],
+                weekOfYear(createLocal(), 1, 4).year
+            );
+            week = defaults(w.W, 1);
+            weekday = defaults(w.E, 1);
+            if (weekday < 1 || weekday > 7) {
+                weekdayOverflow = true;
+            }
+        } else {
+            dow = config._locale._week.dow;
+            doy = config._locale._week.doy;
+
+            curWeek = weekOfYear(createLocal(), dow, doy);
+
+            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
+
+            // Default to current week.
+            week = defaults(w.w, curWeek.week);
+
+            if (w.d != null) {
+                // weekday -- low day numbers are considered next week
+                weekday = w.d;
+                if (weekday < 0 || weekday > 6) {
+                    weekdayOverflow = true;
+                }
+            } else if (w.e != null) {
+                // local weekday -- counting starts from beginning of week
+                weekday = w.e + dow;
+                if (w.e < 0 || w.e > 6) {
+                    weekdayOverflow = true;
+                }
+            } else {
+                // default to beginning of week
+                weekday = dow;
+            }
+        }
+        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
+            getParsingFlags(config)._overflowWeeks = true;
+        } else if (weekdayOverflow != null) {
+            getParsingFlags(config)._overflowWeekday = true;
+        } else {
+            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
+            config._a[YEAR] = temp.year;
+            config._dayOfYear = temp.dayOfYear;
+        }
+    }
+
+    // constant that refers to the ISO standard
+    hooks.ISO_8601 = function () {};
+
+    // constant that refers to the RFC 2822 form
+    hooks.RFC_2822 = function () {};
+
+    // date from string and format string
+    function configFromStringAndFormat(config) {
+        // TODO: Move this to another part of the creation flow to prevent circular deps
+        if (config._f === hooks.ISO_8601) {
+            configFromISO(config);
+            return;
+        }
+        if (config._f === hooks.RFC_2822) {
+            configFromRFC2822(config);
+            return;
+        }
+        config._a = [];
+        getParsingFlags(config).empty = true;
+
+        // This array is used to make a Date, either with `new Date` or `Date.UTC`
+        var string = '' + config._i,
+            i,
+            parsedInput,
+            tokens,
+            token,
+            skipped,
+            stringLength = string.length,
+            totalParsedInputLength = 0,
+            era;
+
+        tokens =
+            expandFormat(config._f, config._locale).match(formattingTokens) || [];
+
+        for (i = 0; i < tokens.length; i++) {
+            token = tokens[i];
+            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
+                [])[0];
+            if (parsedInput) {
+                skipped = string.substr(0, string.indexOf(parsedInput));
+                if (skipped.length > 0) {
+                    getParsingFlags(config).unusedInput.push(skipped);
+                }
+                string = string.slice(
+                    string.indexOf(parsedInput) + parsedInput.length
+                );
+                totalParsedInputLength += parsedInput.length;
+            }
+            // don't parse if it's not a known token
+            if (formatTokenFunctions[token]) {
+                if (parsedInput) {
+                    getParsingFlags(config).empty = false;
+                } else {
+                    getParsingFlags(config).unusedTokens.push(token);
+                }
+                addTimeToArrayFromToken(token, parsedInput, config);
+            } else if (config._strict && !parsedInput) {
+                getParsingFlags(config).unusedTokens.push(token);
+            }
+        }
+
+        // add remaining unparsed input length to the string
+        getParsingFlags(config).charsLeftOver =
+            stringLength - totalParsedInputLength;
+        if (string.length > 0) {
+            getParsingFlags(config).unusedInput.push(string);
+        }
+
+        // clear _12h flag if hour is <= 12
+        if (
+            config._a[HOUR] <= 12 &&
+            getParsingFlags(config).bigHour === true &&
+            config._a[HOUR] > 0
+        ) {
+            getParsingFlags(config).bigHour = undefined;
+        }
+
+        getParsingFlags(config).parsedDateParts = config._a.slice(0);
+        getParsingFlags(config).meridiem = config._meridiem;
+        // handle meridiem
+        config._a[HOUR] = meridiemFixWrap(
+            config._locale,
+            config._a[HOUR],
+            config._meridiem
+        );
+
+        // handle era
+        era = getParsingFlags(config).era;
+        if (era !== null) {
+            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
+        }
+
+        configFromArray(config);
+        checkOverflow(config);
+    }
+
+    function meridiemFixWrap(locale, hour, meridiem) {
+        var isPm;
+
+        if (meridiem == null) {
+            // nothing to do
+            return hour;
+        }
+        if (locale.meridiemHour != null) {
+            return locale.meridiemHour(hour, meridiem);
+        } else if (locale.isPM != null) {
+            // Fallback
+            isPm = locale.isPM(meridiem);
+            if (isPm && hour < 12) {
+                hour += 12;
+            }
+            if (!isPm && hour === 12) {
+                hour = 0;
+            }
+            return hour;
+        } else {
+            // this is not supposed to happen
+            return hour;
+        }
+    }
+
+    // date from string and array of format strings
+    function configFromStringAndArray(config) {
+        var tempConfig,
+            bestMoment,
+            scoreToBeat,
+            i,
+            currentScore,
+            validFormatFound,
+            bestFormatIsValid = false;
+
+        if (config._f.length === 0) {
+            getParsingFlags(config).invalidFormat = true;
+            config._d = new Date(NaN);
+            return;
+        }
+
+        for (i = 0; i < config._f.length; i++) {
+            currentScore = 0;
+            validFormatFound = false;
+            tempConfig = copyConfig({}, config);
+            if (config._useUTC != null) {
+                tempConfig._useUTC = config._useUTC;
+            }
+            tempConfig._f = config._f[i];
+            configFromStringAndFormat(tempConfig);
+
+            if (isValid(tempConfig)) {
+                validFormatFound = true;
+            }
+
+            // if there is any input that was not parsed add a penalty for that format
+            currentScore += getParsingFlags(tempConfig).charsLeftOver;
+
+            //or tokens
+            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
+
+            getParsingFlags(tempConfig).score = currentScore;
+
+            if (!bestFormatIsValid) {
+                if (
+                    scoreToBeat == null ||
+                    currentScore < scoreToBeat ||
+                    validFormatFound
+                ) {
+                    scoreToBeat = currentScore;
+                    bestMoment = tempConfig;
+                    if (validFormatFound) {
+                        bestFormatIsValid = true;
+                    }
+                }
+            } else {
+                if (currentScore < scoreToBeat) {
+                    scoreToBeat = currentScore;
+                    bestMoment = tempConfig;
+                }
+            }
+        }
+
+        extend(config, bestMoment || tempConfig);
+    }
+
+    function configFromObject(config) {
+        if (config._d) {
+            return;
+        }
+
+        var i = normalizeObjectUnits(config._i),
+            dayOrDate = i.day === undefined ? i.date : i.day;
+        config._a = map(
+            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
+            function (obj) {
+                return obj && parseInt(obj, 10);
+            }
+        );
+
+        configFromArray(config);
+    }
+
+    function createFromConfig(config) {
+        var res = new Moment(checkOverflow(prepareConfig(config)));
+        if (res._nextDay) {
+            // Adding is smart enough around DST
+            res.add(1, 'd');
+            res._nextDay = undefined;
+        }
+
+        return res;
+    }
+
+    function prepareConfig(config) {
+        var input = config._i,
+            format = config._f;
+
+        config._locale = config._locale || getLocale(config._l);
+
+        if (input === null || (format === undefined && input === '')) {
+            return createInvalid({ nullInput: true });
+        }
+
+        if (typeof input === 'string') {
+            config._i = input = config._locale.preparse(input);
+        }
+
+        if (isMoment(input)) {
+            return new Moment(checkOverflow(input));
+        } else if (isDate(input)) {
+            config._d = input;
+        } else if (isArray(format)) {
+            configFromStringAndArray(config);
+        } else if (format) {
+            configFromStringAndFormat(config);
+        } else {
+            configFromInput(config);
+        }
+
+        if (!isValid(config)) {
+            config._d = null;
+        }
+
+        return config;
+    }
+
+    function configFromInput(config) {
+        var input = config._i;
+        if (isUndefined(input)) {
+            config._d = new Date(hooks.now());
+        } else if (isDate(input)) {
+            config._d = new Date(input.valueOf());
+        } else if (typeof input === 'string') {
+            configFromString(config);
+        } else if (isArray(input)) {
+            config._a = map(input.slice(0), function (obj) {
+                return parseInt(obj, 10);
+            });
+            configFromArray(config);
+        } else if (isObject(input)) {
+            configFromObject(config);
+        } else if (isNumber(input)) {
+            // from milliseconds
+            config._d = new Date(input);
+        } else {
+            hooks.createFromInputFallback(config);
+        }
+    }
+
+    function createLocalOrUTC(input, format, locale, strict, isUTC) {
+        var c = {};
+
+        if (format === true || format === false) {
+            strict = format;
+            format = undefined;
+        }
+
+        if (locale === true || locale === false) {
+            strict = locale;
+            locale = undefined;
+        }
+
+        if (
+            (isObject(input) && isObjectEmpty(input)) ||
+            (isArray(input) && input.length === 0)
+        ) {
+            input = undefined;
+        }
+        // object construction must be done this way.
+        // https://github.com/moment/moment/issues/1423
+        c._isAMomentObject = true;
+        c._useUTC = c._isUTC = isUTC;
+        c._l = locale;
+        c._i = input;
+        c._f = format;
+        c._strict = strict;
+
+        return createFromConfig(c);
+    }
+
+    function createLocal(input, format, locale, strict) {
+        return createLocalOrUTC(input, format, locale, strict, false);
+    }
+
+    var prototypeMin = deprecate(
+            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
+            function () {
+                var other = createLocal.apply(null, arguments);
+                if (this.isValid() && other.isValid()) {
+                    return other < this ? this : other;
+                } else {
+                    return createInvalid();
+                }
+            }
+        ),
+        prototypeMax = deprecate(
+            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
+            function () {
+                var other = createLocal.apply(null, arguments);
+                if (this.isValid() && other.isValid()) {
+                    return other > this ? this : other;
+                } else {
+                    return createInvalid();
+                }
+            }
+        );
+
+    // Pick a moment m from moments so that m[fn](other) is true for all
+    // other. This relies on the function fn to be transitive.
+    //
+    // moments should either be an array of moment objects or an array, whose
+    // first element is an array of moment objects.
+    function pickBy(fn, moments) {
+        var res, i;
+        if (moments.length === 1 && isArray(moments[0])) {
+            moments = moments[0];
+        }
+        if (!moments.length) {
+            return createLocal();
+        }
+        res = moments[0];
+        for (i = 1; i < moments.length; ++i) {
+            if (!moments[i].isValid() || moments[i][fn](res)) {
+                res = moments[i];
+            }
+        }
+        return res;
+    }
+
+    // TODO: Use [].sort instead?
+    function min() {
+        var args = [].slice.call(arguments, 0);
+
+        return pickBy('isBefore', args);
+    }
+
+    function max() {
+        var args = [].slice.call(arguments, 0);
+
+        return pickBy('isAfter', args);
+    }
+
+    var now = function () {
+        return Date.now ? Date.now() : +new Date();
+    };
+
+    var ordering = [
+        'year',
+        'quarter',
+        'month',
+        'week',
+        'day',
+        'hour',
+        'minute',
+        'second',
+        'millisecond',
+    ];
+
+    function isDurationValid(m) {
+        var key,
+            unitHasDecimal = false,
+            i;
+        for (key in m) {
+            if (
+                hasOwnProp(m, key) &&
+                !(
+                    indexOf.call(ordering, key) !== -1 &&
+                    (m[key] == null || !isNaN(m[key]))
+                )
+            ) {
+                return false;
+            }
+        }
+
+        for (i = 0; i < ordering.length; ++i) {
+            if (m[ordering[i]]) {
+                if (unitHasDecimal) {
+                    return false; // only allow non-integers for smallest unit
+                }
+                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
+                    unitHasDecimal = true;
+                }
+            }
+        }
+
+        return true;
+    }
+
+    function isValid$1() {
+        return this._isValid;
+    }
+
+    function createInvalid$1() {
+        return createDuration(NaN);
+    }
+
+    function Duration(duration) {
+        var normalizedInput = normalizeObjectUnits(duration),
+            years = normalizedInput.year || 0,
+            quarters = normalizedInput.quarter || 0,
+            months = normalizedInput.month || 0,
+            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
+            days = normalizedInput.day || 0,
+            hours = normalizedInput.hour || 0,
+            minutes = normalizedInput.minute || 0,
+            seconds = normalizedInput.second || 0,
+            milliseconds = normalizedInput.millisecond || 0;
+
+        this._isValid = isDurationValid(normalizedInput);
+
+        // representation for dateAddRemove
+        this._milliseconds =
+            +milliseconds +
+            seconds * 1e3 + // 1000
+            minutes * 6e4 + // 1000 * 60
+            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
+        // Because of dateAddRemove treats 24 hours as different from a
+        // day when working around DST, we need to store them separately
+        this._days = +days + weeks * 7;
+        // It is impossible to translate months into days without knowing
+        // which months you are are talking about, so we have to store
+        // it separately.
+        this._months = +months + quarters * 3 + years * 12;
+
+        this._data = {};
+
+        this._locale = getLocale();
+
+        this._bubble();
+    }
+
+    function isDuration(obj) {
+        return obj instanceof Duration;
+    }
+
+    function absRound(number) {
+        if (number < 0) {
+            return Math.round(-1 * number) * -1;
+        } else {
+            return Math.round(number);
+        }
+    }
+
+    // compare two arrays, return the number of differences
+    function compareArrays(array1, array2, dontConvert) {
+        var len = Math.min(array1.length, array2.length),
+            lengthDiff = Math.abs(array1.length - array2.length),
+            diffs = 0,
+            i;
+        for (i = 0; i < len; i++) {
+            if (
+                (dontConvert && array1[i] !== array2[i]) ||
+                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
+            ) {
+                diffs++;
+            }
+        }
+        return diffs + lengthDiff;
+    }
+
+    // FORMATTING
+
+    function offset(token, separator) {
+        addFormatToken(token, 0, 0, function () {
+            var offset = this.utcOffset(),
+                sign = '+';
+            if (offset < 0) {
+                offset = -offset;
+                sign = '-';
+            }
+            return (
+                sign +
+                zeroFill(~~(offset / 60), 2) +
+                separator +
+                zeroFill(~~offset % 60, 2)
+            );
+        });
+    }
+
+    offset('Z', ':');
+    offset('ZZ', '');
+
+    // PARSING
+
+    addRegexToken('Z', matchShortOffset);
+    addRegexToken('ZZ', matchShortOffset);
+    addParseToken(['Z', 'ZZ'], function (input, array, config) {
+        config._useUTC = true;
+        config._tzm = offsetFromString(matchShortOffset, input);
+    });
+
+    // HELPERS
+
+    // timezone chunker
+    // '+10:00' > ['10',  '00']
+    // '-1530'  > ['-15', '30']
+    var chunkOffset = /([\+\-]|\d\d)/gi;
+
+    function offsetFromString(matcher, string) {
+        var matches = (string || '').match(matcher),
+            chunk,
+            parts,
+            minutes;
+
+        if (matches === null) {
+            return null;
+        }
+
+        chunk = matches[matches.length - 1] || [];
+        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
+        minutes = +(parts[1] * 60) + toInt(parts[2]);
+
+        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
+    }
+
+    // Return a moment from input, that is local/utc/zone equivalent to model.
+    function cloneWithOffset(input, model) {
+        var res, diff;
+        if (model._isUTC) {
+            res = model.clone();
+            diff =
+                (isMoment(input) || isDate(input)
+                    ? input.valueOf()
+                    : createLocal(input).valueOf()) - res.valueOf();
+            // Use low-level api, because this fn is low-level api.
+            res._d.setTime(res._d.valueOf() + diff);
+            hooks.updateOffset(res, false);
+            return res;
+        } else {
+            return createLocal(input).local();
+        }
+    }
+
+    function getDateOffset(m) {
+        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
+        // https://github.com/moment/moment/pull/1871
+        return -Math.round(m._d.getTimezoneOffset());
+    }
+
+    // HOOKS
+
+    // This function will be called whenever a moment is mutated.
+    // It is intended to keep the offset in sync with the timezone.
+    hooks.updateOffset = function () {};
+
+    // MOMENTS
+
+    // keepLocalTime = true means only change the timezone, without
+    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
+    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
+    // +0200, so we adjust the time as needed, to be valid.
+    //
+    // Keeping the time actually adds/subtracts (one hour)
+    // from the actual represented time. That is why we call updateOffset
+    // a second time. In case it wants us to change the offset again
+    // _changeInProgress == true case, then we have to adjust, because
+    // there is no such time in the given timezone.
+    function getSetOffset(input, keepLocalTime, keepMinutes) {
+        var offset = this._offset || 0,
+            localAdjust;
+        if (!this.isValid()) {
+            return input != null ? this : NaN;
+        }
+        if (input != null) {
+            if (typeof input === 'string') {
+                input = offsetFromString(matchShortOffset, input);
+                if (input === null) {
+                    return this;
+                }
+            } else if (Math.abs(input) < 16 && !keepMinutes) {
+                input = input * 60;
+            }
+            if (!this._isUTC && keepLocalTime) {
+                localAdjust = getDateOffset(this);
+            }
+            this._offset = input;
+            this._isUTC = true;
+            if (localAdjust != null) {
+                this.add(localAdjust, 'm');
+            }
+            if (offset !== input) {
+                if (!keepLocalTime || this._changeInProgress) {
+                    addSubtract(
+                        this,
+                        createDuration(input - offset, 'm'),
+                        1,
+                        false
+                    );
+                } else if (!this._changeInProgress) {
+                    this._changeInProgress = true;
+                    hooks.updateOffset(this, true);
+                    this._changeInProgress = null;
+                }
+            }
+            return this;
+        } else {
+            return this._isUTC ? offset : getDateOffset(this);
+        }
+    }
+
+    function getSetZone(input, keepLocalTime) {
+        if (input != null) {
+            if (typeof input !== 'string') {
+                input = -input;
+            }
+
+            this.utcOffset(input, keepLocalTime);
+
+            return this;
+        } else {
+            return -this.utcOffset();
+        }
+    }
+
+    function setOffsetToUTC(keepLocalTime) {
+        return this.utcOffset(0, keepLocalTime);
+    }
+
+    function setOffsetToLocal(keepLocalTime) {
+        if (this._isUTC) {
+            this.utcOffset(0, keepLocalTime);
+            this._isUTC = false;
+
+            if (keepLocalTime) {
+                this.subtract(getDateOffset(this), 'm');
+            }
+        }
+        return this;
+    }
+
+    function setOffsetToParsedOffset() {
+        if (this._tzm != null) {
+            this.utcOffset(this._tzm, false, true);
+        } else if (typeof this._i === 'string') {
+            var tZone = offsetFromString(matchOffset, this._i);
+            if (tZone != null) {
+                this.utcOffset(tZone);
+            } else {
+                this.utcOffset(0, true);
+            }
+        }
+        return this;
+    }
+
+    function hasAlignedHourOffset(input) {
+        if (!this.isValid()) {
+            return false;
+        }
+        input = input ? createLocal(input).utcOffset() : 0;
+
+        return (this.utcOffset() - input) % 60 === 0;
+    }
+
+    function isDaylightSavingTime() {
+        return (
+            this.utcOffset() > this.clone().month(0).utcOffset() ||
+            this.utcOffset() > this.clone().month(5).utcOffset()
+        );
+    }
+
+    function isDaylightSavingTimeShifted() {
+        if (!isUndefined(this._isDSTShifted)) {
+            return this._isDSTShifted;
+        }
+
+        var c = {},
+            other;
+
+        copyConfig(c, this);
+        c = prepareConfig(c);
+
+        if (c._a) {
+            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
+            this._isDSTShifted =
+                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
+        } else {
+            this._isDSTShifted = false;
+        }
+
+        return this._isDSTShifted;
+    }
+
+    function isLocal() {
+        return this.isValid() ? !this._isUTC : false;
+    }
+
+    function isUtcOffset() {
+        return this.isValid() ? this._isUTC : false;
+    }
+
+    function isUtc() {
+        return this.isValid() ? this._isUTC && this._offset === 0 : false;
+    }
+
+    // ASP.NET json date format regex
+    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
+        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
+        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
+        // and further modified to allow for strings containing both week and day
+        isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
+
+    function createDuration(input, key) {
+        var duration = input,
+            // matching against regexp is expensive, do it on demand
+            match = null,
+            sign,
+            ret,
+            diffRes;
+
+        if (isDuration(input)) {
+            duration = {
+                ms: input._milliseconds,
+                d: input._days,
+                M: input._months,
+            };
+        } else if (isNumber(input) || !isNaN(+input)) {
+            duration = {};
+            if (key) {
+                duration[key] = +input;
+            } else {
+                duration.milliseconds = +input;
+            }
+        } else if ((match = aspNetRegex.exec(input))) {
+            sign = match[1] === '-' ? -1 : 1;
+            duration = {
+                y: 0,
+                d: toInt(match[DATE]) * sign,
+                h: toInt(match[HOUR]) * sign,
+                m: toInt(match[MINUTE]) * sign,
+                s: toInt(match[SECOND]) * sign,
+                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
+            };
+        } else if ((match = isoRegex.exec(input))) {
+            sign = match[1] === '-' ? -1 : 1;
+            duration = {
+                y: parseIso(match[2], sign),
+                M: parseIso(match[3], sign),
+                w: parseIso(match[4], sign),
+                d: parseIso(match[5], sign),
+                h: parseIso(match[6], sign),
+                m: parseIso(match[7], sign),
+                s: parseIso(match[8], sign),
+            };
+        } else if (duration == null) {
+            // checks for null or undefined
+            duration = {};
+        } else if (
+            typeof duration === 'object' &&
+            ('from' in duration || 'to' in duration)
+        ) {
+            diffRes = momentsDifference(
+                createLocal(duration.from),
+                createLocal(duration.to)
+            );
+
+            duration = {};
+            duration.ms = diffRes.milliseconds;
+            duration.M = diffRes.months;
+        }
+
+        ret = new Duration(duration);
+
+        if (isDuration(input) && hasOwnProp(input, '_locale')) {
+            ret._locale = input._locale;
+        }
+
+        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
+            ret._isValid = input._isValid;
+        }
+
+        return ret;
+    }
+
+    createDuration.fn = Duration.prototype;
+    createDuration.invalid = createInvalid$1;
+
+    function parseIso(inp, sign) {
+        // We'd normally use ~~inp for this, but unfortunately it also
+        // converts floats to ints.
+        // inp may be undefined, so careful calling replace on it.
+        var res = inp && parseFloat(inp.replace(',', '.'));
+        // apply sign while we're at it
+        return (isNaN(res) ? 0 : res) * sign;
+    }
+
+    function positiveMomentsDifference(base, other) {
+        var res = {};
+
+        res.months =
+            other.month() - base.month() + (other.year() - base.year()) * 12;
+        if (base.clone().add(res.months, 'M').isAfter(other)) {
+            --res.months;
+        }
+
+        res.milliseconds = +other - +base.clone().add(res.months, 'M');
+
+        return res;
+    }
+
+    function momentsDifference(base, other) {
+        var res;
+        if (!(base.isValid() && other.isValid())) {
+            return { milliseconds: 0, months: 0 };
+        }
+
+        other = cloneWithOffset(other, base);
+        if (base.isBefore(other)) {
+            res = positiveMomentsDifference(base, other);
+        } else {
+            res = positiveMomentsDifference(other, base);
+            res.milliseconds = -res.milliseconds;
+            res.months = -res.months;
+        }
+
+        return res;
+    }
+
+    // TODO: remove 'name' arg after deprecation is removed
+    function createAdder(direction, name) {
+        return function (val, period) {
+            var dur, tmp;
+            //invert the arguments, but complain about it
+            if (period !== null && !isNaN(+period)) {
+                deprecateSimple(
+                    name,
+                    'moment().' +
+                        name +
+                        '(period, number) is deprecated. Please use moment().' +
+                        name +
+                        '(number, period). ' +
+                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
+                );
+                tmp = val;
+                val = period;
+                period = tmp;
+            }
+
+            dur = createDuration(val, period);
+            addSubtract(this, dur, direction);
+            return this;
+        };
+    }
+
+    function addSubtract(mom, duration, isAdding, updateOffset) {
+        var milliseconds = duration._milliseconds,
+            days = absRound(duration._days),
+            months = absRound(duration._months);
+
+        if (!mom.isValid()) {
+            // No op
+            return;
+        }
+
+        updateOffset = updateOffset == null ? true : updateOffset;
+
+        if (months) {
+            setMonth(mom, get(mom, 'Month') + months * isAdding);
+        }
+        if (days) {
+            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
+        }
+        if (milliseconds) {
+            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
+        }
+        if (updateOffset) {
+            hooks.updateOffset(mom, days || months);
+        }
+    }
+
+    var add = createAdder(1, 'add'),
+        subtract = createAdder(-1, 'subtract');
+
+    function isString(input) {
+        return typeof input === 'string' || input instanceof String;
+    }
+
+    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
+    function isMomentInput(input) {
+        return (
+            isMoment(input) ||
+            isDate(input) ||
+            isString(input) ||
+            isNumber(input) ||
+            isNumberOrStringArray(input) ||
+            isMomentInputObject(input) ||
+            input === null ||
+            input === undefined
+        );
+    }
+
+    function isMomentInputObject(input) {
+        var objectTest = isObject(input) && !isObjectEmpty(input),
+            propertyTest = false,
+            properties = [
+                'years',
+                'year',
+                'y',
+                'months',
+                'month',
+                'M',
+                'days',
+                'day',
+                'd',
+                'dates',
+                'date',
+                'D',
+                'hours',
+                'hour',
+                'h',
+                'minutes',
+                'minute',
+                'm',
+                'seconds',
+                'second',
+                's',
+                'milliseconds',
+                'millisecond',
+                'ms',
+            ],
+            i,
+            property;
+
+        for (i = 0; i < properties.length; i += 1) {
+            property = properties[i];
+            propertyTest = propertyTest || hasOwnProp(input, property);
+        }
+
+        return objectTest && propertyTest;
+    }
+
+    function isNumberOrStringArray(input) {
+        var arrayTest = isArray(input),
+            dataTypeTest = false;
+        if (arrayTest) {
+            dataTypeTest =
+                input.filter(function (item) {
+                    return !isNumber(item) && isString(input);
+                }).length === 0;
+        }
+        return arrayTest && dataTypeTest;
+    }
+
+    function isCalendarSpec(input) {
+        var objectTest = isObject(input) && !isObjectEmpty(input),
+            propertyTest = false,
+            properties = [
+                'sameDay',
+                'nextDay',
+                'lastDay',
+                'nextWeek',
+                'lastWeek',
+                'sameElse',
+            ],
+            i,
+            property;
+
+        for (i = 0; i < properties.length; i += 1) {
+            property = properties[i];
+            propertyTest = propertyTest || hasOwnProp(input, property);
+        }
+
+        return objectTest && propertyTest;
+    }
+
+    function getCalendarFormat(myMoment, now) {
+        var diff = myMoment.diff(now, 'days', true);
+        return diff < -6
+            ? 'sameElse'
+            : diff < -1
+            ? 'lastWeek'
+            : diff < 0
+            ? 'lastDay'
+            : diff < 1
+            ? 'sameDay'
+            : diff < 2
+            ? 'nextDay'
+            : diff < 7
+            ? 'nextWeek'
+            : 'sameElse';
+    }
+
+    function calendar$1(time, formats) {
+        // Support for single parameter, formats only overload to the calendar function
+        if (arguments.length === 1) {
+            if (isMomentInput(arguments[0])) {
+                time = arguments[0];
+                formats = undefined;
+            } else if (isCalendarSpec(arguments[0])) {
+                formats = arguments[0];
+                time = undefined;
+            }
+        }
+        // We want to compare the start of today, vs this.
+        // Getting start-of-today depends on whether we're local/utc/offset or not.
+        var now = time || createLocal(),
+            sod = cloneWithOffset(now, this).startOf('day'),
+            format = hooks.calendarFormat(this, sod) || 'sameElse',
+            output =
+                formats &&
+                (isFunction(formats[format])
+                    ? formats[format].call(this, now)
+                    : formats[format]);
+
+        return this.format(
+            output || this.localeData().calendar(format, this, createLocal(now))
+        );
+    }
+
+    function clone() {
+        return new Moment(this);
+    }
+
+    function isAfter(input, units) {
+        var localInput = isMoment(input) ? input : createLocal(input);
+        if (!(this.isValid() && localInput.isValid())) {
+            return false;
+        }
+        units = normalizeUnits(units) || 'millisecond';
+        if (units === 'millisecond') {
+            return this.valueOf() > localInput.valueOf();
+        } else {
+            return localInput.valueOf() < this.clone().startOf(units).valueOf();
+        }
+    }
+
+    function isBefore(input, units) {
+        var localInput = isMoment(input) ? input : createLocal(input);
+        if (!(this.isValid() && localInput.isValid())) {
+            return false;
+        }
+        units = normalizeUnits(units) || 'millisecond';
+        if (units === 'millisecond') {
+            return this.valueOf() < localInput.valueOf();
+        } else {
+            return this.clone().endOf(units).valueOf() < localInput.valueOf();
+        }
+    }
+
+    function isBetween(from, to, units, inclusivity) {
+        var localFrom = isMoment(from) ? from : createLocal(from),
+            localTo = isMoment(to) ? to : createLocal(to);
+        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
+            return false;
+        }
+        inclusivity = inclusivity || '()';
+        return (
+            (inclusivity[0] === '('
+                ? this.isAfter(localFrom, units)
+                : !this.isBefore(localFrom, units)) &&
+            (inclusivity[1] === ')'
+                ? this.isBefore(localTo, units)
+                : !this.isAfter(localTo, units))
+        );
+    }
+
+    function isSame(input, units) {
+        var localInput = isMoment(input) ? input : createLocal(input),
+            inputMs;
+        if (!(this.isValid() && localInput.isValid())) {
+            return false;
+        }
+        units = normalizeUnits(units) || 'millisecond';
+        if (units === 'millisecond') {
+            return this.valueOf() === localInput.valueOf();
+        } else {
+            inputMs = localInput.valueOf();
+            return (
+                this.clone().startOf(units).valueOf() <= inputMs &&
+                inputMs <= this.clone().endOf(units).valueOf()
+            );
+        }
+    }
+
+    function isSameOrAfter(input, units) {
+        return this.isSame(input, units) || this.isAfter(input, units);
+    }
+
+    function isSameOrBefore(input, units) {
+        return this.isSame(input, units) || this.isBefore(input, units);
+    }
+
+    function diff(input, units, asFloat) {
+        var that, zoneDelta, output;
+
+        if (!this.isValid()) {
+            return NaN;
+        }
+
+        that = cloneWithOffset(input, this);
+
+        if (!that.isValid()) {
+            return NaN;
+        }
+
+        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
+
+        units = normalizeUnits(units);
+
+        switch (units) {
+            case 'year':
+                output = monthDiff(this, that) / 12;
+                break;
+            case 'month':
+                output = monthDiff(this, that);
+                break;
+            case 'quarter':
+                output = monthDiff(this, that) / 3;
+                break;
+            case 'second':
+                output = (this - that) / 1e3;
+                break; // 1000
+            case 'minute':
+                output = (this - that) / 6e4;
+                break; // 1000 * 60
+            case 'hour':
+                output = (this - that) / 36e5;
+                break; // 1000 * 60 * 60
+            case 'day':
+                output = (this - that - zoneDelta) / 864e5;
+                break; // 1000 * 60 * 60 * 24, negate dst
+            case 'week':
+                output = (this - that - zoneDelta) / 6048e5;
+                break; // 1000 * 60 * 60 * 24 * 7, negate dst
+            default:
+                output = this - that;
+        }
+
+        return asFloat ? output : absFloor(output);
+    }
+
+    function monthDiff(a, b) {
+        if (a.date() < b.date()) {
+            // end-of-month calculations work correct when the start month has more
+            // days than the end month.
+            return -monthDiff(b, a);
+        }
+        // difference in months
+        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
+            // b is in (anchor - 1 month, anchor + 1 month)
+            anchor = a.clone().add(wholeMonthDiff, 'months'),
+            anchor2,
+            adjust;
+
+        if (b - anchor < 0) {
+            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
+            // linear across the month
+            adjust = (b - anchor) / (anchor - anchor2);
+        } else {
+            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
+            // linear across the month
+            adjust = (b - anchor) / (anchor2 - anchor);
+        }
+
+        //check for negative zero, return zero if negative zero
+        return -(wholeMonthDiff + adjust) || 0;
+    }
+
+    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
+    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
+
+    function toString() {
+        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
+    }
+
+    function toISOString(keepOffset) {
+        if (!this.isValid()) {
+            return null;
+        }
+        var utc = keepOffset !== true,
+            m = utc ? this.clone().utc() : this;
+        if (m.year() < 0 || m.year() > 9999) {
+            return formatMoment(
+                m,
+                utc
+                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
+                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
+            );
+        }
+        if (isFunction(Date.prototype.toISOString)) {
+            // native implementation is ~50x faster, use it when we can
+            if (utc) {
+                return this.toDate().toISOString();
+            } else {
+                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
+                    .toISOString()
+                    .replace('Z', formatMoment(m, 'Z'));
+            }
+        }
+        return formatMoment(
+            m,
+            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
+        );
+    }
+
+    /**
+     * Return a human readable representation of a moment that can
+     * also be evaluated to get a new moment which is the same
+     *
+     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
+     */
+    function inspect() {
+        if (!this.isValid()) {
+            return 'moment.invalid(/* ' + this._i + ' */)';
+        }
+        var func = 'moment',
+            zone = '',
+            prefix,
+            year,
+            datetime,
+            suffix;
+        if (!this.isLocal()) {
+            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
+            zone = 'Z';
+        }
+        prefix = '[' + func + '("]';
+        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
+        datetime = '-MM-DD[T]HH:mm:ss.SSS';
+        suffix = zone + '[")]';
+
+        return this.format(prefix + year + datetime + suffix);
+    }
+
+    function format(inputString) {
+        if (!inputString) {
+            inputString = this.isUtc()
+                ? hooks.defaultFormatUtc
+                : hooks.defaultFormat;
+        }
+        var output = formatMoment(this, inputString);
+        return this.localeData().postformat(output);
+    }
+
+    function from(time, withoutSuffix) {
+        if (
+            this.isValid() &&
+            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
+        ) {
+            return createDuration({ to: this, from: time })
+                .locale(this.locale())
+                .humanize(!withoutSuffix);
+        } else {
+            return this.localeData().invalidDate();
+        }
+    }
+
+    function fromNow(withoutSuffix) {
+        return this.from(createLocal(), withoutSuffix);
+    }
+
+    function to(time, withoutSuffix) {
+        if (
+            this.isValid() &&
+            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
+        ) {
+            return createDuration({ from: this, to: time })
+                .locale(this.locale())
+                .humanize(!withoutSuffix);
+        } else {
+            return this.localeData().invalidDate();
+        }
+    }
+
+    function toNow(withoutSuffix) {
+        return this.to(createLocal(), withoutSuffix);
+    }
+
+    // If passed a locale key, it will set the locale for this
+    // instance.  Otherwise, it will return the locale configuration
+    // variables for this instance.
+    function locale(key) {
+        var newLocaleData;
+
+        if (key === undefined) {
+            return this._locale._abbr;
+        } else {
+            newLocaleData = getLocale(key);
+            if (newLocaleData != null) {
+                this._locale = newLocaleData;
+            }
+            return this;
+        }
+    }
+
+    var lang = deprecate(
+        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
+        function (key) {
+            if (key === undefined) {
+                return this.localeData();
+            } else {
+                return this.locale(key);
+            }
+        }
+    );
+
+    function localeData() {
+        return this._locale;
+    }
+
+    var MS_PER_SECOND = 1000,
+        MS_PER_MINUTE = 60 * MS_PER_SECOND,
+        MS_PER_HOUR = 60 * MS_PER_MINUTE,
+        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
+
+    // actual modulo - handles negative numbers (for dates before 1970):
+    function mod$1(dividend, divisor) {
+        return ((dividend % divisor) + divisor) % divisor;
+    }
+
+    function localStartOfDate(y, m, d) {
+        // the date constructor remaps years 0-99 to 1900-1999
+        if (y < 100 && y >= 0) {
+            // preserve leap years using a full 400 year cycle, then reset
+            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
+        } else {
+            return new Date(y, m, d).valueOf();
+        }
+    }
+
+    function utcStartOfDate(y, m, d) {
+        // Date.UTC remaps years 0-99 to 1900-1999
+        if (y < 100 && y >= 0) {
+            // preserve leap years using a full 400 year cycle, then reset
+            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
+        } else {
+            return Date.UTC(y, m, d);
+        }
+    }
+
+    function startOf(units) {
+        var time, startOfDate;
+        units = normalizeUnits(units);
+        if (units === undefined || units === 'millisecond' || !this.isValid()) {
+            return this;
+        }
+
+        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
+
+        switch (units) {
+            case 'year':
+                time = startOfDate(this.year(), 0, 1);
+                break;
+            case 'quarter':
+                time = startOfDate(
+                    this.year(),
+                    this.month() - (this.month() % 3),
+                    1
+                );
+                break;
+            case 'month':
+                time = startOfDate(this.year(), this.month(), 1);
+                break;
+            case 'week':
+                time = startOfDate(
+                    this.year(),
+                    this.month(),
+                    this.date() - this.weekday()
+                );
+                break;
+            case 'isoWeek':
+                time = startOfDate(
+                    this.year(),
+                    this.month(),
+                    this.date() - (this.isoWeekday() - 1)
+                );
+                break;
+            case 'day':
+            case 'date':
+                time = startOfDate(this.year(), this.month(), this.date());
+                break;
+            case 'hour':
+                time = this._d.valueOf();
+                time -= mod$1(
+                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
+                    MS_PER_HOUR
+                );
+                break;
+            case 'minute':
+                time = this._d.valueOf();
+                time -= mod$1(time, MS_PER_MINUTE);
+                break;
+            case 'second':
+                time = this._d.valueOf();
+                time -= mod$1(time, MS_PER_SECOND);
+                break;
+        }
+
+        this._d.setTime(time);
+        hooks.updateOffset(this, true);
+        return this;
+    }
+
+    function endOf(units) {
+        var time, startOfDate;
+        units = normalizeUnits(units);
+        if (units === undefined || units === 'millisecond' || !this.isValid()) {
+            return this;
+        }
+
+        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
+
+        switch (units) {
+            case 'year':
+                time = startOfDate(this.year() + 1, 0, 1) - 1;
+                break;
+            case 'quarter':
+                time =
+                    startOfDate(
+                        this.year(),
+                        this.month() - (this.month() % 3) + 3,
+                        1
+                    ) - 1;
+                break;
+            case 'month':
+                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
+                break;
+            case 'week':
+                time =
+                    startOfDate(
+                        this.year(),
+                        this.month(),
+                        this.date() - this.weekday() + 7
+                    ) - 1;
+                break;
+            case 'isoWeek':
+                time =
+                    startOfDate(
+                        this.year(),
+                        this.month(),
+                        this.date() - (this.isoWeekday() - 1) + 7
+                    ) - 1;
+                break;
+            case 'day':
+            case 'date':
+                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
+                break;
+            case 'hour':
+                time = this._d.valueOf();
+                time +=
+                    MS_PER_HOUR -
+                    mod$1(
+                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
+                        MS_PER_HOUR
+                    ) -
+                    1;
+                break;
+            case 'minute':
+                time = this._d.valueOf();
+                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
+                break;
+            case 'second':
+                time = this._d.valueOf();
+                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
+                break;
+        }
+
+        this._d.setTime(time);
+        hooks.updateOffset(this, true);
+        return this;
+    }
+
+    function valueOf() {
+        return this._d.valueOf() - (this._offset || 0) * 60000;
+    }
+
+    function unix() {
+        return Math.floor(this.valueOf() / 1000);
+    }
+
+    function toDate() {
+        return new Date(this.valueOf());
+    }
+
+    function toArray() {
+        var m = this;
+        return [
+            m.year(),
+            m.month(),
+            m.date(),
+            m.hour(),
+            m.minute(),
+            m.second(),
+            m.millisecond(),
+        ];
+    }
+
+    function toObject() {
+        var m = this;
+        return {
+            years: m.year(),
+            months: m.month(),
+            date: m.date(),
+            hours: m.hours(),
+            minutes: m.minutes(),
+            seconds: m.seconds(),
+            milliseconds: m.milliseconds(),
+        };
+    }
+
+    function toJSON() {
+        // new Date(NaN).toJSON() === null
+        return this.isValid() ? this.toISOString() : null;
+    }
+
+    function isValid$2() {
+        return isValid(this);
+    }
+
+    function parsingFlags() {
+        return extend({}, getParsingFlags(this));
+    }
+
+    function invalidAt() {
+        return getParsingFlags(this).overflow;
+    }
+
+    function creationData() {
+        return {
+            input: this._i,
+            format: this._f,
+            locale: this._locale,
+            isUTC: this._isUTC,
+            strict: this._strict,
+        };
+    }
+
+    addFormatToken('N', 0, 0, 'eraAbbr');
+    addFormatToken('NN', 0, 0, 'eraAbbr');
+    addFormatToken('NNN', 0, 0, 'eraAbbr');
+    addFormatToken('NNNN', 0, 0, 'eraName');
+    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
+
+    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
+    addFormatToken('y', ['yy', 2], 0, 'eraYear');
+    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
+    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
+
+    addRegexToken('N', matchEraAbbr);
+    addRegexToken('NN', matchEraAbbr);
+    addRegexToken('NNN', matchEraAbbr);
+    addRegexToken('NNNN', matchEraName);
+    addRegexToken('NNNNN', matchEraNarrow);
+
+    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (
+        input,
+        array,
+        config,
+        token
+    ) {
+        var era = config._locale.erasParse(input, token, config._strict);
+        if (era) {
+            getParsingFlags(config).era = era;
+        } else {
+            getParsingFlags(config).invalidEra = input;
+        }
+    });
+
+    addRegexToken('y', matchUnsigned);
+    addRegexToken('yy', matchUnsigned);
+    addRegexToken('yyy', matchUnsigned);
+    addRegexToken('yyyy', matchUnsigned);
+    addRegexToken('yo', matchEraYearOrdinal);
+
+    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
+    addParseToken(['yo'], function (input, array, config, token) {
+        var match;
+        if (config._locale._eraYearOrdinalRegex) {
+            match = input.match(config._locale._eraYearOrdinalRegex);
+        }
+
+        if (config._locale.eraYearOrdinalParse) {
+            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
+        } else {
+            array[YEAR] = parseInt(input, 10);
+        }
+    });
+
+    function localeEras(m, format) {
+        var i,
+            l,
+            date,
+            eras = this._eras || getLocale('en')._eras;
+        for (i = 0, l = eras.length; i < l; ++i) {
+            switch (typeof eras[i].since) {
+                case 'string':
+                    // truncate time
+                    date = hooks(eras[i].since).startOf('day');
+                    eras[i].since = date.valueOf();
+                    break;
+            }
+
+            switch (typeof eras[i].until) {
+                case 'undefined':
+                    eras[i].until = +Infinity;
+                    break;
+                case 'string':
+                    // truncate time
+                    date = hooks(eras[i].until).startOf('day').valueOf();
+                    eras[i].until = date.valueOf();
+                    break;
+            }
+        }
+        return eras;
+    }
+
+    function localeErasParse(eraName, format, strict) {
+        var i,
+            l,
+            eras = this.eras(),
+            name,
+            abbr,
+            narrow;
+        eraName = eraName.toUpperCase();
+
+        for (i = 0, l = eras.length; i < l; ++i) {
+            name = eras[i].name.toUpperCase();
+            abbr = eras[i].abbr.toUpperCase();
+            narrow = eras[i].narrow.toUpperCase();
+
+            if (strict) {
+                switch (format) {
+                    case 'N':
+                    case 'NN':
+                    case 'NNN':
+                        if (abbr === eraName) {
+                            return eras[i];
+                        }
+                        break;
+
+                    case 'NNNN':
+                        if (name === eraName) {
+                            return eras[i];
+                        }
+                        break;
+
+                    case 'NNNNN':
+                        if (narrow === eraName) {
+                            return eras[i];
+                        }
+                        break;
+                }
+            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
+                return eras[i];
+            }
+        }
+    }
+
+    function localeErasConvertYear(era, year) {
+        var dir = era.since <= era.until ? +1 : -1;
+        if (year === undefined) {
+            return hooks(era.since).year();
+        } else {
+            return hooks(era.since).year() + (year - era.offset) * dir;
+        }
+    }
+
+    function getEraName() {
+        var i,
+            l,
+            val,
+            eras = this.localeData().eras();
+        for (i = 0, l = eras.length; i < l; ++i) {
+            // truncate time
+            val = this.startOf('day').valueOf();
+
+            if (eras[i].since <= val && val <= eras[i].until) {
+                return eras[i].name;
+            }
+            if (eras[i].until <= val && val <= eras[i].since) {
+                return eras[i].name;
+            }
+        }
+
+        return '';
+    }
+
+    function getEraNarrow() {
+        var i,
+            l,
+            val,
+            eras = this.localeData().eras();
+        for (i = 0, l = eras.length; i < l; ++i) {
+            // truncate time
+            val = this.startOf('day').valueOf();
+
+            if (eras[i].since <= val && val <= eras[i].until) {
+                return eras[i].narrow;
+            }
+            if (eras[i].until <= val && val <= eras[i].since) {
+                return eras[i].narrow;
+            }
+        }
+
+        return '';
+    }
+
+    function getEraAbbr() {
+        var i,
+            l,
+            val,
+            eras = this.localeData().eras();
+        for (i = 0, l = eras.length; i < l; ++i) {
+            // truncate time
+            val = this.startOf('day').valueOf();
+
+            if (eras[i].since <= val && val <= eras[i].until) {
+                return eras[i].abbr;
+            }
+            if (eras[i].until <= val && val <= eras[i].since) {
+                return eras[i].abbr;
+            }
+        }
+
+        return '';
+    }
+
+    function getEraYear() {
+        var i,
+            l,
+            dir,
+            val,
+            eras = this.localeData().eras();
+        for (i = 0, l = eras.length; i < l; ++i) {
+            dir = eras[i].since <= eras[i].until ? +1 : -1;
+
+            // truncate time
+            val = this.startOf('day').valueOf();
+
+            if (
+                (eras[i].since <= val && val <= eras[i].until) ||
+                (eras[i].until <= val && val <= eras[i].since)
+            ) {
+                return (
+                    (this.year() - hooks(eras[i].since).year()) * dir +
+                    eras[i].offset
+                );
+            }
+        }
+
+        return this.year();
+    }
+
+    function erasNameRegex(isStrict) {
+        if (!hasOwnProp(this, '_erasNameRegex')) {
+            computeErasParse.call(this);
+        }
+        return isStrict ? this._erasNameRegex : this._erasRegex;
+    }
+
+    function erasAbbrRegex(isStrict) {
+        if (!hasOwnProp(this, '_erasAbbrRegex')) {
+            computeErasParse.call(this);
+        }
+        return isStrict ? this._erasAbbrRegex : this._erasRegex;
+    }
+
+    function erasNarrowRegex(isStrict) {
+        if (!hasOwnProp(this, '_erasNarrowRegex')) {
+            computeErasParse.call(this);
+        }
+        return isStrict ? this._erasNarrowRegex : this._erasRegex;
+    }
+
+    function matchEraAbbr(isStrict, locale) {
+        return locale.erasAbbrRegex(isStrict);
+    }
+
+    function matchEraName(isStrict, locale) {
+        return locale.erasNameRegex(isStrict);
+    }
+
+    function matchEraNarrow(isStrict, locale) {
+        return locale.erasNarrowRegex(isStrict);
+    }
+
+    function matchEraYearOrdinal(isStrict, locale) {
+        return locale._eraYearOrdinalRegex || matchUnsigned;
+    }
+
+    function computeErasParse() {
+        var abbrPieces = [],
+            namePieces = [],
+            narrowPieces = [],
+            mixedPieces = [],
+            i,
+            l,
+            eras = this.eras();
+
+        for (i = 0, l = eras.length; i < l; ++i) {
+            namePieces.push(regexEscape(eras[i].name));
+            abbrPieces.push(regexEscape(eras[i].abbr));
+            narrowPieces.push(regexEscape(eras[i].narrow));
+
+            mixedPieces.push(regexEscape(eras[i].name));
+            mixedPieces.push(regexEscape(eras[i].abbr));
+            mixedPieces.push(regexEscape(eras[i].narrow));
+        }
+
+        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
+        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
+        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
+        this._erasNarrowRegex = new RegExp(
+            '^(' + narrowPieces.join('|') + ')',
+            'i'
+        );
+    }
+
+    // FORMATTING
+
+    addFormatToken(0, ['gg', 2], 0, function () {
+        return this.weekYear() % 100;
+    });
+
+    addFormatToken(0, ['GG', 2], 0, function () {
+        return this.isoWeekYear() % 100;
+    });
+
+    function addWeekYearFormatToken(token, getter) {
+        addFormatToken(0, [token, token.length], 0, getter);
+    }
+
+    addWeekYearFormatToken('gggg', 'weekYear');
+    addWeekYearFormatToken('ggggg', 'weekYear');
+    addWeekYearFormatToken('GGGG', 'isoWeekYear');
+    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
+
+    // ALIASES
+
+    addUnitAlias('weekYear', 'gg');
+    addUnitAlias('isoWeekYear', 'GG');
+
+    // PRIORITY
+
+    addUnitPriority('weekYear', 1);
+    addUnitPriority('isoWeekYear', 1);
+
+    // PARSING
+
+    addRegexToken('G', matchSigned);
+    addRegexToken('g', matchSigned);
+    addRegexToken('GG', match1to2, match2);
+    addRegexToken('gg', match1to2, match2);
+    addRegexToken('GGGG', match1to4, match4);
+    addRegexToken('gggg', match1to4, match4);
+    addRegexToken('GGGGG', match1to6, match6);
+    addRegexToken('ggggg', match1to6, match6);
+
+    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (
+        input,
+        week,
+        config,
+        token
+    ) {
+        week[token.substr(0, 2)] = toInt(input);
+    });
+
+    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
+        week[token] = hooks.parseTwoDigitYear(input);
+    });
+
+    // MOMENTS
+
+    function getSetWeekYear(input) {
+        return getSetWeekYearHelper.call(
+            this,
+            input,
+            this.week(),
+            this.weekday(),
+            this.localeData()._week.dow,
+            this.localeData()._week.doy
+        );
+    }
+
+    function getSetISOWeekYear(input) {
+        return getSetWeekYearHelper.call(
+            this,
+            input,
+            this.isoWeek(),
+            this.isoWeekday(),
+            1,
+            4
+        );
+    }
+
+    function getISOWeeksInYear() {
+        return weeksInYear(this.year(), 1, 4);
+    }
+
+    function getISOWeeksInISOWeekYear() {
+        return weeksInYear(this.isoWeekYear(), 1, 4);
+    }
+
+    function getWeeksInYear() {
+        var weekInfo = this.localeData()._week;
+        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
+    }
+
+    function getWeeksInWeekYear() {
+        var weekInfo = this.localeData()._week;
+        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
+    }
+
+    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
+        var weeksTarget;
+        if (input == null) {
+            return weekOfYear(this, dow, doy).year;
+        } else {
+            weeksTarget = weeksInYear(input, dow, doy);
+            if (week > weeksTarget) {
+                week = weeksTarget;
+            }
+            return setWeekAll.call(this, input, week, weekday, dow, doy);
+        }
+    }
+
+    function setWeekAll(weekYear, week, weekday, dow, doy) {
+        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
+            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
+
+        this.year(date.getUTCFullYear());
+        this.month(date.getUTCMonth());
+        this.date(date.getUTCDate());
+        return this;
+    }
+
+    // FORMATTING
+
+    addFormatToken('Q', 0, 'Qo', 'quarter');
+
+    // ALIASES
+
+    addUnitAlias('quarter', 'Q');
+
+    // PRIORITY
+
+    addUnitPriority('quarter', 7);
+
+    // PARSING
+
+    addRegexToken('Q', match1);
+    addParseToken('Q', function (input, array) {
+        array[MONTH] = (toInt(input) - 1) * 3;
+    });
+
+    // MOMENTS
+
+    function getSetQuarter(input) {
+        return input == null
+            ? Math.ceil((this.month() + 1) / 3)
+            : this.month((input - 1) * 3 + (this.month() % 3));
+    }
+
+    // FORMATTING
+
+    addFormatToken('D', ['DD', 2], 'Do', 'date');
+
+    // ALIASES
+
+    addUnitAlias('date', 'D');
+
+    // PRIORITY
+    addUnitPriority('date', 9);
+
+    // PARSING
+
+    addRegexToken('D', match1to2);
+    addRegexToken('DD', match1to2, match2);
+    addRegexToken('Do', function (isStrict, locale) {
+        // TODO: Remove "ordinalParse" fallback in next major release.
+        return isStrict
+            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
+            : locale._dayOfMonthOrdinalParseLenient;
+    });
+
+    addParseToken(['D', 'DD'], DATE);
+    addParseToken('Do', function (input, array) {
+        array[DATE] = toInt(input.match(match1to2)[0]);
+    });
+
+    // MOMENTS
+
+    var getSetDayOfMonth = makeGetSet('Date', true);
+
+    // FORMATTING
+
+    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
+
+    // ALIASES
+
+    addUnitAlias('dayOfYear', 'DDD');
+
+    // PRIORITY
+    addUnitPriority('dayOfYear', 4);
+
+    // PARSING
+
+    addRegexToken('DDD', match1to3);
+    addRegexToken('DDDD', match3);
+    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
+        config._dayOfYear = toInt(input);
+    });
+
+    // HELPERS
+
+    // MOMENTS
+
+    function getSetDayOfYear(input) {
+        var dayOfYear =
+            Math.round(
+                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
+            ) + 1;
+        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
+    }
+
+    // FORMATTING
+
+    addFormatToken('m', ['mm', 2], 0, 'minute');
+
+    // ALIASES
+
+    addUnitAlias('minute', 'm');
+
+    // PRIORITY
+
+    addUnitPriority('minute', 14);
+
+    // PARSING
+
+    addRegexToken('m', match1to2);
+    addRegexToken('mm', match1to2, match2);
+    addParseToken(['m', 'mm'], MINUTE);
+
+    // MOMENTS
+
+    var getSetMinute = makeGetSet('Minutes', false);
+
+    // FORMATTING
+
+    addFormatToken('s', ['ss', 2], 0, 'second');
+
+    // ALIASES
+
+    addUnitAlias('second', 's');
+
+    // PRIORITY
+
+    addUnitPriority('second', 15);
+
+    // PARSING
+
+    addRegexToken('s', match1to2);
+    addRegexToken('ss', match1to2, match2);
+    addParseToken(['s', 'ss'], SECOND);
+
+    // MOMENTS
+
+    var getSetSecond = makeGetSet('Seconds', false);
+
+    // FORMATTING
+
+    addFormatToken('S', 0, 0, function () {
+        return ~~(this.millisecond() / 100);
+    });
+
+    addFormatToken(0, ['SS', 2], 0, function () {
+        return ~~(this.millisecond() / 10);
+    });
+
+    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
+    addFormatToken(0, ['SSSS', 4], 0, function () {
+        return this.millisecond() * 10;
+    });
+    addFormatToken(0, ['SSSSS', 5], 0, function () {
+        return this.millisecond() * 100;
+    });
+    addFormatToken(0, ['SSSSSS', 6], 0, function () {
+        return this.millisecond() * 1000;
+    });
+    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
+        return this.millisecond() * 10000;
+    });
+    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
+        return this.millisecond() * 100000;
+    });
+    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
+        return this.millisecond() * 1000000;
+    });
+
+    // ALIASES
+
+    addUnitAlias('millisecond', 'ms');
+
+    // PRIORITY
+
+    addUnitPriority('millisecond', 16);
+
+    // PARSING
+
+    addRegexToken('S', match1to3, match1);
+    addRegexToken('SS', match1to3, match2);
+    addRegexToken('SSS', match1to3, match3);
+
+    var token, getSetMillisecond;
+    for (token = 'SSSS'; token.length <= 9; token += 'S') {
+        addRegexToken(token, matchUnsigned);
+    }
+
+    function parseMs(input, array) {
+        array[MILLISECOND] = toInt(('0.' + input) * 1000);
+    }
+
+    for (token = 'S'; token.length <= 9; token += 'S') {
+        addParseToken(token, parseMs);
+    }
+
+    getSetMillisecond = makeGetSet('Milliseconds', false);
+
+    // FORMATTING
+
+    addFormatToken('z', 0, 0, 'zoneAbbr');
+    addFormatToken('zz', 0, 0, 'zoneName');
+
+    // MOMENTS
+
+    function getZoneAbbr() {
+        return this._isUTC ? 'UTC' : '';
+    }
+
+    function getZoneName() {
+        return this._isUTC ? 'Coordinated Universal Time' : '';
+    }
+
+    var proto = Moment.prototype;
+
+    proto.add = add;
+    proto.calendar = calendar$1;
+    proto.clone = clone;
+    proto.diff = diff;
+    proto.endOf = endOf;
+    proto.format = format;
+    proto.from = from;
+    proto.fromNow = fromNow;
+    proto.to = to;
+    proto.toNow = toNow;
+    proto.get = stringGet;
+    proto.invalidAt = invalidAt;
+    proto.isAfter = isAfter;
+    proto.isBefore = isBefore;
+    proto.isBetween = isBetween;
+    proto.isSame = isSame;
+    proto.isSameOrAfter = isSameOrAfter;
+    proto.isSameOrBefore = isSameOrBefore;
+    proto.isValid = isValid$2;
+    proto.lang = lang;
+    proto.locale = locale;
+    proto.localeData = localeData;
+    proto.max = prototypeMax;
+    proto.min = prototypeMin;
+    proto.parsingFlags = parsingFlags;
+    proto.set = stringSet;
+    proto.startOf = startOf;
+    proto.subtract = subtract;
+    proto.toArray = toArray;
+    proto.toObject = toObject;
+    proto.toDate = toDate;
+    proto.toISOString = toISOString;
+    proto.inspect = inspect;
+    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
+        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
+            return 'Moment<' + this.format() + '>';
+        };
+    }
+    proto.toJSON = toJSON;
+    proto.toString = toString;
+    proto.unix = unix;
+    proto.valueOf = valueOf;
+    proto.creationData = creationData;
+    proto.eraName = getEraName;
+    proto.eraNarrow = getEraNarrow;
+    proto.eraAbbr = getEraAbbr;
+    proto.eraYear = getEraYear;
+    proto.year = getSetYear;
+    proto.isLeapYear = getIsLeapYear;
+    proto.weekYear = getSetWeekYear;
+    proto.isoWeekYear = getSetISOWeekYear;
+    proto.quarter = proto.quarters = getSetQuarter;
+    proto.month = getSetMonth;
+    proto.daysInMonth = getDaysInMonth;
+    proto.week = proto.weeks = getSetWeek;
+    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
+    proto.weeksInYear = getWeeksInYear;
+    proto.weeksInWeekYear = getWeeksInWeekYear;
+    proto.isoWeeksInYear = getISOWeeksInYear;
+    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
+    proto.date = getSetDayOfMonth;
+    proto.day = proto.days = getSetDayOfWeek;
+    proto.weekday = getSetLocaleDayOfWeek;
+    proto.isoWeekday = getSetISODayOfWeek;
+    proto.dayOfYear = getSetDayOfYear;
+    proto.hour = proto.hours = getSetHour;
+    proto.minute = proto.minutes = getSetMinute;
+    proto.second = proto.seconds = getSetSecond;
+    proto.millisecond = proto.milliseconds = getSetMillisecond;
+    proto.utcOffset = getSetOffset;
+    proto.utc = setOffsetToUTC;
+    proto.local = setOffsetToLocal;
+    proto.parseZone = setOffsetToParsedOffset;
+    proto.hasAlignedHourOffset = hasAlignedHourOffset;
+    proto.isDST = isDaylightSavingTime;
+    proto.isLocal = isLocal;
+    proto.isUtcOffset = isUtcOffset;
+    proto.isUtc = isUtc;
+    proto.isUTC = isUtc;
+    proto.zoneAbbr = getZoneAbbr;
+    proto.zoneName = getZoneName;
+    proto.dates = deprecate(
+        'dates accessor is deprecated. Use date instead.',
+        getSetDayOfMonth
+    );
+    proto.months = deprecate(
+        'months accessor is deprecated. Use month instead',
+        getSetMonth
+    );
+    proto.years = deprecate(
+        'years accessor is deprecated. Use year instead',
+        getSetYear
+    );
+    proto.zone = deprecate(
+        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
+        getSetZone
+    );
+    proto.isDSTShifted = deprecate(
+        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
+        isDaylightSavingTimeShifted
+    );
+
+    function createUnix(input) {
+        return createLocal(input * 1000);
+    }
+
+    function createInZone() {
+        return createLocal.apply(null, arguments).parseZone();
+    }
+
+    function preParsePostFormat(string) {
+        return string;
+    }
+
+    var proto$1 = Locale.prototype;
+
+    proto$1.calendar = calendar;
+    proto$1.longDateFormat = longDateFormat;
+    proto$1.invalidDate = invalidDate;
+    proto$1.ordinal = ordinal;
+    proto$1.preparse = preParsePostFormat;
+    proto$1.postformat = preParsePostFormat;
+    proto$1.relativeTime = relativeTime;
+    proto$1.pastFuture = pastFuture;
+    proto$1.set = set;
+    proto$1.eras = localeEras;
+    proto$1.erasParse = localeErasParse;
+    proto$1.erasConvertYear = localeErasConvertYear;
+    proto$1.erasAbbrRegex = erasAbbrRegex;
+    proto$1.erasNameRegex = erasNameRegex;
+    proto$1.erasNarrowRegex = erasNarrowRegex;
+
+    proto$1.months = localeMonths;
+    proto$1.monthsShort = localeMonthsShort;
+    proto$1.monthsParse = localeMonthsParse;
+    proto$1.monthsRegex = monthsRegex;
+    proto$1.monthsShortRegex = monthsShortRegex;
+    proto$1.week = localeWeek;
+    proto$1.firstDayOfYear = localeFirstDayOfYear;
+    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
+
+    proto$1.weekdays = localeWeekdays;
+    proto$1.weekdaysMin = localeWeekdaysMin;
+    proto$1.weekdaysShort = localeWeekdaysShort;
+    proto$1.weekdaysParse = localeWeekdaysParse;
+
+    proto$1.weekdaysRegex = weekdaysRegex;
+    proto$1.weekdaysShortRegex = weekdaysShortRegex;
+    proto$1.weekdaysMinRegex = weekdaysMinRegex;
+
+    proto$1.isPM = localeIsPM;
+    proto$1.meridiem = localeMeridiem;
+
+    function get$1(format, index, field, setter) {
+        var locale = getLocale(),
+            utc = createUTC().set(setter, index);
+        return locale[field](utc, format);
+    }
+
+    function listMonthsImpl(format, index, field) {
+        if (isNumber(format)) {
+            index = format;
+            format = undefined;
+        }
+
+        format = format || '';
+
+        if (index != null) {
+            return get$1(format, index, field, 'month');
+        }
+
+        var i,
+            out = [];
+        for (i = 0; i < 12; i++) {
+            out[i] = get$1(format, i, field, 'month');
+        }
+        return out;
+    }
+
+    // ()
+    // (5)
+    // (fmt, 5)
+    // (fmt)
+    // (true)
+    // (true, 5)
+    // (true, fmt, 5)
+    // (true, fmt)
+    function listWeekdaysImpl(localeSorted, format, index, field) {
+        if (typeof localeSorted === 'boolean') {
+            if (isNumber(format)) {
+                index = format;
+                format = undefined;
+            }
+
+            format = format || '';
+        } else {
+            format = localeSorted;
+            index = format;
+            localeSorted = false;
+
+            if (isNumber(format)) {
+                index = format;
+                format = undefined;
+            }
+
+            format = format || '';
+        }
+
+        var locale = getLocale(),
+            shift = localeSorted ? locale._week.dow : 0,
+            i,
+            out = [];
+
+        if (index != null) {
+            return get$1(format, (index + shift) % 7, field, 'day');
+        }
+
+        for (i = 0; i < 7; i++) {
+            out[i] = get$1(format, (i + shift) % 7, field, 'day');
+        }
+        return out;
+    }
+
+    function listMonths(format, index) {
+        return listMonthsImpl(format, index, 'months');
+    }
+
+    function listMonthsShort(format, index) {
+        return listMonthsImpl(format, index, 'monthsShort');
+    }
+
+    function listWeekdays(localeSorted, format, index) {
+        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
+    }
+
+    function listWeekdaysShort(localeSorted, format, index) {
+        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
+    }
+
+    function listWeekdaysMin(localeSorted, format, index) {
+        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
+    }
+
+    getSetGlobalLocale('en', {
+        eras: [
+            {
+                since: '0001-01-01',
+                until: +Infinity,
+                offset: 1,
+                name: 'Anno Domini',
+                narrow: 'AD',
+                abbr: 'AD',
+            },
+            {
+                since: '0000-12-31',
+                until: -Infinity,
+                offset: 1,
+                name: 'Before Christ',
+                narrow: 'BC',
+                abbr: 'BC',
+            },
+        ],
+        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
+        ordinal: function (number) {
+            var b = number % 10,
+                output =
+                    toInt((number % 100) / 10) === 1
+                        ? 'th'
+                        : b === 1
+                        ? 'st'
+                        : b === 2
+                        ? 'nd'
+                        : b === 3
+                        ? 'rd'
+                        : 'th';
+            return number + output;
+        },
+    });
+
+    // Side effect imports
+
+    hooks.lang = deprecate(
+        'moment.lang is deprecated. Use moment.locale instead.',
+        getSetGlobalLocale
+    );
+    hooks.langData = deprecate(
+        'moment.langData is deprecated. Use moment.localeData instead.',
+        getLocale
+    );
+
+    var mathAbs = Math.abs;
+
+    function abs() {
+        var data = this._data;
+
+        this._milliseconds = mathAbs(this._milliseconds);
+        this._days = mathAbs(this._days);
+        this._months = mathAbs(this._months);
+
+        data.milliseconds = mathAbs(data.milliseconds);
+        data.seconds = mathAbs(data.seconds);
+        data.minutes = mathAbs(data.minutes);
+        data.hours = mathAbs(data.hours);
+        data.months = mathAbs(data.months);
+        data.years = mathAbs(data.years);
+
+        return this;
+    }
+
+    function addSubtract$1(duration, input, value, direction) {
+        var other = createDuration(input, value);
+
+        duration._milliseconds += direction * other._milliseconds;
+        duration._days += direction * other._days;
+        duration._months += direction * other._months;
+
+        return duration._bubble();
+    }
+
+    // supports only 2.0-style add(1, 's') or add(duration)
+    function add$1(input, value) {
+        return addSubtract$1(this, input, value, 1);
+    }
+
+    // supports only 2.0-style subtract(1, 's') or subtract(duration)
+    function subtract$1(input, value) {
+        return addSubtract$1(this, input, value, -1);
+    }
+
+    function absCeil(number) {
+        if (number < 0) {
+            return Math.floor(number);
+        } else {
+            return Math.ceil(number);
+        }
+    }
+
+    function bubble() {
+        var milliseconds = this._milliseconds,
+            days = this._days,
+            months = this._months,
+            data = this._data,
+            seconds,
+            minutes,
+            hours,
+            years,
+            monthsFromDays;
+
+        // if we have a mix of positive and negative values, bubble down first
+        // check: https://github.com/moment/moment/issues/2166
+        if (
+            !(
+                (milliseconds >= 0 && days >= 0 && months >= 0) ||
+                (milliseconds <= 0 && days <= 0 && months <= 0)
+            )
+        ) {
+            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
+            days = 0;
+            months = 0;
+        }
+
+        // The following code bubbles up values, see the tests for
+        // examples of what that means.
+        data.milliseconds = milliseconds % 1000;
+
+        seconds = absFloor(milliseconds / 1000);
+        data.seconds = seconds % 60;
+
+        minutes = absFloor(seconds / 60);
+        data.minutes = minutes % 60;
+
+        hours = absFloor(minutes / 60);
+        data.hours = hours % 24;
+
+        days += absFloor(hours / 24);
+
+        // convert days to months
+        monthsFromDays = absFloor(daysToMonths(days));
+        months += monthsFromDays;
+        days -= absCeil(monthsToDays(monthsFromDays));
+
+        // 12 months -> 1 year
+        years = absFloor(months / 12);
+        months %= 12;
+
+        data.days = days;
+        data.months = months;
+        data.years = years;
+
+        return this;
+    }
+
+    function daysToMonths(days) {
+        // 400 years have 146097 days (taking into account leap year rules)
+        // 400 years have 12 months === 4800
+        return (days * 4800) / 146097;
+    }
+
+    function monthsToDays(months) {
+        // the reverse of daysToMonths
+        return (months * 146097) / 4800;
+    }
+
+    function as(units) {
+        if (!this.isValid()) {
+            return NaN;
+        }
+        var days,
+            months,
+            milliseconds = this._milliseconds;
+
+        units = normalizeUnits(units);
+
+        if (units === 'month' || units === 'quarter' || units === 'year') {
+            days = this._days + milliseconds / 864e5;
+            months = this._months + daysToMonths(days);
+            switch (units) {
+                case 'month':
+                    return months;
+                case 'quarter':
+                    return months / 3;
+                case 'year':
+                    return months / 12;
+            }
+        } else {
+            // handle milliseconds separately because of floating point math errors (issue #1867)
+            days = this._days + Math.round(monthsToDays(this._months));
+            switch (units) {
+                case 'week':
+                    return days / 7 + milliseconds / 6048e5;
+                case 'day':
+                    return days + milliseconds / 864e5;
+                case 'hour':
+                    return days * 24 + milliseconds / 36e5;
+                case 'minute':
+                    return days * 1440 + milliseconds / 6e4;
+                case 'second':
+                    return days * 86400 + milliseconds / 1000;
+                // Math.floor prevents floating point math errors here
+                case 'millisecond':
+                    return Math.floor(days * 864e5) + milliseconds;
+                default:
+                    throw new Error('Unknown unit ' + units);
+            }
+        }
+    }
+
+    // TODO: Use this.as('ms')?
+    function valueOf$1() {
+        if (!this.isValid()) {
+            return NaN;
+        }
+        return (
+            this._milliseconds +
+            this._days * 864e5 +
+            (this._months % 12) * 2592e6 +
+            toInt(this._months / 12) * 31536e6
+        );
+    }
+
+    function makeAs(alias) {
+        return function () {
+            return this.as(alias);
+        };
+    }
+
+    var asMilliseconds = makeAs('ms'),
+        asSeconds = makeAs('s'),
+        asMinutes = makeAs('m'),
+        asHours = makeAs('h'),
+        asDays = makeAs('d'),
+        asWeeks = makeAs('w'),
+        asMonths = makeAs('M'),
+        asQuarters = makeAs('Q'),
+        asYears = makeAs('y');
+
+    function clone$1() {
+        return createDuration(this);
+    }
+
+    function get$2(units) {
+        units = normalizeUnits(units);
+        return this.isValid() ? this[units + 's']() : NaN;
+    }
+
+    function makeGetter(name) {
+        return function () {
+            return this.isValid() ? this._data[name] : NaN;
+        };
+    }
+
+    var milliseconds = makeGetter('milliseconds'),
+        seconds = makeGetter('seconds'),
+        minutes = makeGetter('minutes'),
+        hours = makeGetter('hours'),
+        days = makeGetter('days'),
+        months = makeGetter('months'),
+        years = makeGetter('years');
+
+    function weeks() {
+        return absFloor(this.days() / 7);
+    }
+
+    var round = Math.round,
+        thresholds = {
+            ss: 44, // a few seconds to seconds
+            s: 45, // seconds to minute
+            m: 45, // minutes to hour
+            h: 22, // hours to day
+            d: 26, // days to month/week
+            w: null, // weeks to month
+            M: 11, // months to year
+        };
+
+    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
+    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
+        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
+    }
+
+    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
+        var duration = createDuration(posNegDuration).abs(),
+            seconds = round(duration.as('s')),
+            minutes = round(duration.as('m')),
+            hours = round(duration.as('h')),
+            days = round(duration.as('d')),
+            months = round(duration.as('M')),
+            weeks = round(duration.as('w')),
+            years = round(duration.as('y')),
+            a =
+                (seconds <= thresholds.ss && ['s', seconds]) ||
+                (seconds < thresholds.s && ['ss', seconds]) ||
+                (minutes <= 1 && ['m']) ||
+                (minutes < thresholds.m && ['mm', minutes]) ||
+                (hours <= 1 && ['h']) ||
+                (hours < thresholds.h && ['hh', hours]) ||
+                (days <= 1 && ['d']) ||
+                (days < thresholds.d && ['dd', days]);
+
+        if (thresholds.w != null) {
+            a =
+                a ||
+                (weeks <= 1 && ['w']) ||
+                (weeks < thresholds.w && ['ww', weeks]);
+        }
+        a = a ||
+            (months <= 1 && ['M']) ||
+            (months < thresholds.M && ['MM', months]) ||
+            (years <= 1 && ['y']) || ['yy', years];
+
+        a[2] = withoutSuffix;
+        a[3] = +posNegDuration > 0;
+        a[4] = locale;
+        return substituteTimeAgo.apply(null, a);
+    }
+
+    // This function allows you to set the rounding function for relative time strings
+    function getSetRelativeTimeRounding(roundingFunction) {
+        if (roundingFunction === undefined) {
+            return round;
+        }
+        if (typeof roundingFunction === 'function') {
+            round = roundingFunction;
+            return true;
+        }
+        return false;
+    }
+
+    // This function allows you to set a threshold for relative time strings
+    function getSetRelativeTimeThreshold(threshold, limit) {
+        if (thresholds[threshold] === undefined) {
+            return false;
+        }
+        if (limit === undefined) {
+            return thresholds[threshold];
+        }
+        thresholds[threshold] = limit;
+        if (threshold === 's') {
+            thresholds.ss = limit - 1;
+        }
+        return true;
+    }
+
+    function humanize(argWithSuffix, argThresholds) {
+        if (!this.isValid()) {
+            return this.localeData().invalidDate();
+        }
+
+        var withSuffix = false,
+            th = thresholds,
+            locale,
+            output;
+
+        if (typeof argWithSuffix === 'object') {
+            argThresholds = argWithSuffix;
+            argWithSuffix = false;
+        }
+        if (typeof argWithSuffix === 'boolean') {
+            withSuffix = argWithSuffix;
+        }
+        if (typeof argThresholds === 'object') {
+            th = Object.assign({}, thresholds, argThresholds);
+            if (argThresholds.s != null && argThresholds.ss == null) {
+                th.ss = argThresholds.s - 1;
+            }
+        }
+
+        locale = this.localeData();
+        output = relativeTime$1(this, !withSuffix, th, locale);
+
+        if (withSuffix) {
+            output = locale.pastFuture(+this, output);
+        }
+
+        return locale.postformat(output);
+    }
+
+    var abs$1 = Math.abs;
+
+    function sign(x) {
+        return (x > 0) - (x < 0) || +x;
+    }
+
+    function toISOString$1() {
+        // for ISO strings we do not use the normal bubbling rules:
+        //  * milliseconds bubble up until they become hours
+        //  * days do not bubble at all
+        //  * months bubble up until they become years
+        // This is because there is no context-free conversion between hours and days
+        // (think of clock changes)
+        // and also not between days and months (28-31 days per month)
+        if (!this.isValid()) {
+            return this.localeData().invalidDate();
+        }
+
+        var seconds = abs$1(this._milliseconds) / 1000,
+            days = abs$1(this._days),
+            months = abs$1(this._months),
+            minutes,
+            hours,
+            years,
+            s,
+            total = this.asSeconds(),
+            totalSign,
+            ymSign,
+            daysSign,
+            hmsSign;
+
+        if (!total) {
+            // this is the same as C#'s (Noda) and python (isodate)...
+            // but not other JS (goog.date)
+            return 'P0D';
+        }
+
+        // 3600 seconds -> 60 minutes -> 1 hour
+        minutes = absFloor(seconds / 60);
+        hours = absFloor(minutes / 60);
+        seconds %= 60;
+        minutes %= 60;
+
+        // 12 months -> 1 year
+        years = absFloor(months / 12);
+        months %= 12;
+
+        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
+        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
+
+        totalSign = total < 0 ? '-' : '';
+        ymSign = sign(this._months) !== sign(total) ? '-' : '';
+        daysSign = sign(this._days) !== sign(total) ? '-' : '';
+        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
+
+        return (
+            totalSign +
+            'P' +
+            (years ? ymSign + years + 'Y' : '') +
+            (months ? ymSign + months + 'M' : '') +
+            (days ? daysSign + days + 'D' : '') +
+            (hours || minutes || seconds ? 'T' : '') +
+            (hours ? hmsSign + hours + 'H' : '') +
+            (minutes ? hmsSign + minutes + 'M' : '') +
+            (seconds ? hmsSign + s + 'S' : '')
+        );
+    }
+
+    var proto$2 = Duration.prototype;
+
+    proto$2.isValid = isValid$1;
+    proto$2.abs = abs;
+    proto$2.add = add$1;
+    proto$2.subtract = subtract$1;
+    proto$2.as = as;
+    proto$2.asMilliseconds = asMilliseconds;
+    proto$2.asSeconds = asSeconds;
+    proto$2.asMinutes = asMinutes;
+    proto$2.asHours = asHours;
+    proto$2.asDays = asDays;
+    proto$2.asWeeks = asWeeks;
+    proto$2.asMonths = asMonths;
+    proto$2.asQuarters = asQuarters;
+    proto$2.asYears = asYears;
+    proto$2.valueOf = valueOf$1;
+    proto$2._bubble = bubble;
+    proto$2.clone = clone$1;
+    proto$2.get = get$2;
+    proto$2.milliseconds = milliseconds;
+    proto$2.seconds = seconds;
+    proto$2.minutes = minutes;
+    proto$2.hours = hours;
+    proto$2.days = days;
+    proto$2.weeks = weeks;
+    proto$2.months = months;
+    proto$2.years = years;
+    proto$2.humanize = humanize;
+    proto$2.toISOString = toISOString$1;
+    proto$2.toString = toISOString$1;
+    proto$2.toJSON = toISOString$1;
+    proto$2.locale = locale;
+    proto$2.localeData = localeData;
+
+    proto$2.toIsoString = deprecate(
+        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
+        toISOString$1
+    );
+    proto$2.lang = lang;
+
+    // FORMATTING
+
+    addFormatToken('X', 0, 0, 'unix');
+    addFormatToken('x', 0, 0, 'valueOf');
+
+    // PARSING
+
+    addRegexToken('x', matchSigned);
+    addRegexToken('X', matchTimestamp);
+    addParseToken('X', function (input, array, config) {
+        config._d = new Date(parseFloat(input) * 1000);
+    });
+    addParseToken('x', function (input, array, config) {
+        config._d = new Date(toInt(input));
+    });
+
+    //! moment.js
+
+    hooks.version = '2.27.0';
+
+    setHookCallback(createLocal);
+
+    hooks.fn = proto;
+    hooks.min = min;
+    hooks.max = max;
+    hooks.now = now;
+    hooks.utc = createUTC;
+    hooks.unix = createUnix;
+    hooks.months = listMonths;
+    hooks.isDate = isDate;
+    hooks.locale = getSetGlobalLocale;
+    hooks.invalid = createInvalid;
+    hooks.duration = createDuration;
+    hooks.isMoment = isMoment;
+    hooks.weekdays = listWeekdays;
+    hooks.parseZone = createInZone;
+    hooks.localeData = getLocale;
+    hooks.isDuration = isDuration;
+    hooks.monthsShort = listMonthsShort;
+    hooks.weekdaysMin = listWeekdaysMin;
+    hooks.defineLocale = defineLocale;
+    hooks.updateLocale = updateLocale;
+    hooks.locales = listLocales;
+    hooks.weekdaysShort = listWeekdaysShort;
+    hooks.normalizeUnits = normalizeUnits;
+    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
+    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
+    hooks.calendarFormat = getCalendarFormat;
+    hooks.prototype = proto;
+
+    // currently HTML5 input type only supports 24-hour formats
+    hooks.HTML5_FMT = {
+        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
+        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
+        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
+        DATE: 'YYYY-MM-DD', // <input type="date" />
+        TIME: 'HH:mm', // <input type="time" />
+        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
+        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
+        WEEK: 'GGGG-[W]WW', // <input type="week" />
+        MONTH: 'YYYY-MM', // <input type="month" />
+    };
+
+    return hooks;
+
+})));
diff --git a/admin/js/vendors/moment/moment.min.js b/admin/js/vendors/moment/moment.min.js
new file mode 100644 (file)
index 0000000..36f8628
--- /dev/null
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function f(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function l(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var t in e)if(m(e,t))return;return 1}function r(e){return void 0===e}function h(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function a(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){for(var n=[],s=0;s<e.length;++s)n.push(t(e[s],s));return n}function c(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function _(e,t,n,s){return xt(e,t,n,s,!0).utc()}function y(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function g(e){if(null==e._isValid){var t=y(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function w(e){var t=_(NaN);return null!=e?c(y(t),e):y(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var p=f.momentProperties=[],t=!1;function v(e,t){var n,s,i;if(r(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),r(t._i)||(e._i=t._i),r(t._f)||(e._f=t._f),r(t._l)||(e._l=t._l),r(t._strict)||(e._strict=t._strict),r(t._tzm)||(e._tzm=t._tzm),r(t._isUTC)||(e._isUTC=t._isUTC),r(t._offset)||(e._offset=t._offset),r(t._pf)||(e._pf=y(t)),r(t._locale)||(e._locale=t._locale),0<p.length)for(n=0;n<p.length;n++)r(i=t[s=p[n]])||(e[s]=i);return e}function k(e){v(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,f.updateOffset(this),t=!1)}function M(e){return e instanceof k||null!=e&&null!=e._isAMomentObject}function D(e){!1===f.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return c(function(){if(null!=f.deprecationHandler&&f.deprecationHandler(null,i),a){for(var e,t,n=[],s=0;s<arguments.length;s++){if(e="","object"==typeof arguments[s]){for(t in e+="\n["+s+"] ",arguments[0])m(arguments[0],t)&&(e+=t+": "+arguments[0][t]+", ");e=e.slice(0,-2)}else e=arguments[s];n.push(e)}D(i+"\nArguments: "+Array.prototype.slice.call(n).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,S={};function Y(e,t){null!=f.deprecationHandler&&f.deprecationHandler(e,t),S[e]||(D(t),S[e]=!0)}function O(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,t){var n,s=c({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},c(s[n],e[n]),c(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=c({},s[n]));return s}function x(e){null!=e&&this.set(e)}f.suppressDeprecationWarnings=!1,f.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};function T(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,P=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,R={},W={};function C(e,t,n,s){var i="string"==typeof s?function(){return this[s]()}:s;e&&(W[e]=i),t&&(W[t[0]]=function(){return T(i.apply(this,arguments),t[1],t[2])}),n&&(W[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function U(e,t){return e.isValid()?(t=H(t,e.localeData()),R[t]=R[t]||function(s){for(var e,i=s.match(N),t=0,r=i.length;t<r;t++)W[i[t]]?i[t]=W[i[t]]:i[t]=(e=i[t]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var t="",n=0;n<r;n++)t+=O(i[n])?i[n].call(e,s):i[n];return t}}(t),R[t](e)):e.localeData().invalidDate()}function H(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(P.lastIndex=0;0<=n&&P.test(e);)e=e.replace(P,s),P.lastIndex=0,--n;return e}var F={};function L(e,t){var n=e.toLowerCase();F[n]=F[n+"s"]=F[t]=e}function V(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function G(e){var t,n,s={};for(n in e)m(e,n)&&(t=V(n))&&(s[t]=e[n]);return s}var E={};function A(e,t){E[e]=t}function j(e){return e%4==0&&e%100!=0||e%400==0}function I(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function Z(e){var t=+e,n=0;return 0!=t&&isFinite(t)&&(n=I(t)),n}function z(t,n){return function(e){return null!=e?(q(this,t,e),f.updateOffset(this,n),this):$(this,t)}}function $(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function q(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&j(e.year())&&1===e.month()&&29===e.date()?(n=Z(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),xe(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}var B,J=/\d/,Q=/\d\d/,X=/\d{3}/,K=/\d{4}/,ee=/[+-]?\d{6}/,te=/\d\d?/,ne=/\d\d\d\d?/,se=/\d\d\d\d\d\d?/,ie=/\d{1,3}/,re=/\d{1,4}/,ae=/[+-]?\d{1,6}/,oe=/\d+/,ue=/[+-]?\d+/,le=/Z|[+-]\d\d:?\d\d/gi,he=/Z|[+-]\d\d(?::?\d\d)?/gi,de=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function ce(e,n,s){B[e]=O(n)?n:function(e,t){return e&&s?s:n}}function fe(e,t){return m(B,e)?B[e](t._strict,t._locale):new RegExp(me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}B={};var _e={};function ye(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),h(n)&&(s=function(e,t){t[n]=Z(e)}),t=0;t<e.length;t++)_e[e[t]]=s}function ge(e,i){ye(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var we,pe=0,ve=1,ke=2,Me=3,De=4,Se=5,Ye=6,Oe=7,be=8;function xe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1==s?j(e)?29:28:31-s%7%2}we=Array.prototype.indexOf?Array.prototype.indexOf:function(e){for(var t=0;t<this.length;++t)if(this[t]===e)return t;return-1},C("M",["MM",2],"Mo",function(){return this.month()+1}),C("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),C("MMMM",0,0,function(e){return this.localeData().months(this,e)}),L("month","M"),A("month",8),ce("M",te),ce("MM",te,Q),ce("MMM",function(e,t){return t.monthsShortRegex(e)}),ce("MMMM",function(e,t){return t.monthsRegex(e)}),ye(["M","MM"],function(e,t){t[ve]=Z(e)-1}),ye(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[ve]=i:y(n).invalidMonth=e});var Te="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Ne="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Pe=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Re=de,We=de;function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=Z(t);else if(!h(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),xe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Ue(e){return null!=e?(Ce(this,e),f.updateOffset(this,!0),this):$(this,"Month")}function He(){function e(e,t){return t.length-e.length}for(var t,n=[],s=[],i=[],r=0;r<12;r++)t=_([2e3,r]),n.push(this.monthsShort(t,"")),s.push(this.months(t,"")),i.push(this.months(t,"")),i.push(this.monthsShort(t,""));for(n.sort(e),s.sort(e),i.sort(e),r=0;r<12;r++)n[r]=me(n[r]),s[r]=me(s[r]);for(r=0;r<24;r++)i[r]=me(i[r]);this._monthsRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+n.join("|")+")","i")}function Fe(e){return j(e)?366:365}C("Y",0,0,function(){var e=this.year();return e<=9999?T(e,4):"+"+e}),C(0,["YY",2],0,function(){return this.year()%100}),C(0,["YYYY",4],0,"year"),C(0,["YYYYY",5],0,"year"),C(0,["YYYYYY",6,!0],0,"year"),L("year","y"),A("year",1),ce("Y",ue),ce("YY",te,Q),ce("YYYY",re,K),ce("YYYYY",ae,ee),ce("YYYYYY",ae,ee),ye(["YYYYY","YYYYYY"],pe),ye("YYYY",function(e,t){t[pe]=2===e.length?f.parseTwoDigitYear(e):Z(e)}),ye("YY",function(e,t){t[pe]=f.parseTwoDigitYear(e)}),ye("Y",function(e,t){t[pe]=parseInt(e,10)}),f.parseTwoDigitYear=function(e){return Z(e)+(68<Z(e)?1900:2e3)};var Le=z("FullYear",!0);function Ve(e){var t,n;return e<100&&0<=e?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ge(e,t,n){var s=7+t-n;return s-(7+Ve(e,0,s).getUTCDay()-t)%7-1}function Ee(e,t,n,s,i){var r,a=1+7*(t-1)+(7+n-s)%7+Ge(e,s,i),o=a<=0?Fe(r=e-1)+a:a>Fe(e)?(r=e+1,a-Fe(e)):(r=e,a);return{year:r,dayOfYear:o}}function Ae(e,t,n){var s,i,r=Ge(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+je(i=e.year()-1,t,n):a>je(e.year(),t,n)?(s=a-je(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function je(e,t,n){var s=Ge(e,t,n),i=Ge(e+1,t,n);return(Fe(e)-s+i)/7}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),A("week",5),A("isoWeek",5),ce("w",te),ce("ww",te,Q),ce("W",te),ce("WW",te,Q),ge(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=Z(e)});function Ie(e,t){return e.slice(t,7).concat(e.slice(0,t))}C("d",0,"do","day"),C("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),C("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),C("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),ce("d",te),ce("e",te),ce("E",te),ce("dd",function(e,t){return t.weekdaysMinRegex(e)}),ce("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ce("dddd",function(e,t){return t.weekdaysRegex(e)}),ge(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:y(n).invalidWeekday=e}),ge(["d","e","E"],function(e,t,n,s){t[s]=Z(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),$e="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),qe=de,Be=de,Je=de;function Qe(){function e(e,t){return t.length-e.length}for(var t,n,s,i,r=[],a=[],o=[],u=[],l=0;l<7;l++)t=_([2e3,1]).day(l),n=me(this.weekdaysMin(t,"")),s=me(this.weekdaysShort(t,"")),i=me(this.weekdays(t,"")),r.push(n),a.push(s),o.push(i),u.push(n),u.push(s),u.push(i);r.sort(e),a.sort(e),o.sort(e),u.sort(e),this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Xe(){return this.hours()%12||12}function Ke(e,t){C(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,Xe),C("k",["kk",2],0,function(){return this.hours()||24}),C("hmm",0,0,function(){return""+Xe.apply(this)+T(this.minutes(),2)}),C("hmmss",0,0,function(){return""+Xe.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),C("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),C("Hmmss",0,0,function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ke("a",!0),Ke("A",!1),L("hour","h"),A("hour",13),ce("a",et),ce("A",et),ce("H",te),ce("h",te),ce("k",te),ce("HH",te,Q),ce("hh",te,Q),ce("kk",te,Q),ce("hmm",ne),ce("hmmss",se),ce("Hmm",ne),ce("Hmmss",se),ye(["H","HH"],Me),ye(["k","kk"],function(e,t,n){var s=Z(e);t[Me]=24===s?0:s}),ye(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ye(["h","hh"],function(e,t,n){t[Me]=Z(e),y(n).bigHour=!0}),ye("hmm",function(e,t,n){var s=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s)),y(n).bigHour=!0}),ye("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s,2)),t[Se]=Z(e.substr(i)),y(n).bigHour=!0}),ye("Hmm",function(e,t,n){var s=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s))}),ye("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s,2)),t[Se]=Z(e.substr(i))});var tt=z("Hours",!0);var nt,st={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Te,monthsShort:Ne,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\.?m?\.?/i},it={},rt={};function at(e){return e?e.toLowerCase().replace("_","-"):e}function ot(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=at(e[r]).split("-")).length,n=(n=at(e[r+1]))?n.split("-"):null;0<t;){if(s=ut(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s<n;s+=1)if(e[s]!==t[s])return s;return n}(i,n)>=t-1)break;t--}r++}return nt}function ut(t){var e;if(void 0===it[t]&&"undefined"!=typeof module&&module&&module.exports)try{e=nt._abbr,require("./locale/"+t),lt(e)}catch(e){it[t]=null}return it[t]}function lt(e,t){var n;return e&&((n=r(t)?dt(e):ht(e,t))?nt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),nt._abbr}function ht(e,t){if(null===t)return delete it[e],null;var n,s=st;if(t.abbr=e,null!=it[e])Y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=it[e]._config;else if(null!=t.parentLocale)if(null!=it[t.parentLocale])s=it[t.parentLocale]._config;else{if(null==(n=ut(t.parentLocale)))return rt[t.parentLocale]||(rt[t.parentLocale]=[]),rt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return it[e]=new x(b(s,t)),rt[e]&&rt[e].forEach(function(e){ht(e.name,e.config)}),lt(e),it[e]}function dt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return nt;if(!o(e)){if(t=ut(e))return t;e=[e]}return ot(e)}function ct(e){var t,n=e._a;return n&&-2===y(e).overflow&&(t=n[ve]<0||11<n[ve]?ve:n[ke]<1||n[ke]>xe(n[pe],n[ve])?ke:n[Me]<0||24<n[Me]||24===n[Me]&&(0!==n[De]||0!==n[Se]||0!==n[Ye])?Me:n[De]<0||59<n[De]?De:n[Se]<0||59<n[Se]?Se:n[Ye]<0||999<n[Ye]?Ye:-1,y(e)._overflowDayOfYear&&(t<pe||ke<t)&&(t=ke),y(e)._overflowWeeks&&-1===t&&(t=Oe),y(e)._overflowWeekday&&-1===t&&(t=be),y(e).overflow=t),e}var ft=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],gt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],wt=/^\/?Date\((-?\d+)/i,pt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,vt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function kt(e){var t,n,s,i,r,a,o=e._i,u=ft.exec(o)||mt.exec(o);if(u){for(y(e).iso=!0,t=0,n=yt.length;t<n;t++)if(yt[t][1].exec(u[1])){i=yt[t][0],s=!1!==yt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[3])){r=(u[2]||" ")+gt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!_t.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),Ot(e)}else e._isValid=!1}function Mt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),Ne.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}function Dt(e){var t,n,s,i,r=pt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(r){if(t=Mt(r[4],r[3],r[2],r[5],r[6],r[7]),n=r[1],s=t,i=e,n&&ze.indexOf(n)!==new Date(s[0],s[1],s[2]).getDay()&&(y(i).weekdayMismatch=!0,!void(i._isValid=!1)))return;e._a=t,e._tzm=function(e,t,n){if(e)return vt[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return 60*((s-i)/100)+i}(r[8],r[9],r[10]),e._d=Ve.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),y(e).rfc2822=!0}else e._isValid=!1}function St(e,t,n){return null!=e?e:null!=t?t:n}function Yt(e){var t,n,s,i,r,a,o,u=[];if(!e._d){for(a=e,o=new Date(f.now()),s=a._useUTC?[o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()]:[o.getFullYear(),o.getMonth(),o.getDate()],e._w&&null==e._a[ke]&&null==e._a[ve]&&function(e){var t,n,s,i,r,a,o,u,l;null!=(t=e._w).GG||null!=t.W||null!=t.E?(r=1,a=4,n=St(t.GG,e._a[pe],Ae(Tt(),1,4).year),s=St(t.W,1),((i=St(t.E,1))<1||7<i)&&(u=!0)):(r=e._locale._week.dow,a=e._locale._week.doy,l=Ae(Tt(),r,a),n=St(t.gg,e._a[pe],l.year),s=St(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r);s<1||s>je(n,r,a)?y(e)._overflowWeeks=!0:null!=u?y(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[pe]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=St(e._a[pe],s[pe]),(e._dayOfYear>Fe(r)||0===e._dayOfYear)&&(y(e)._overflowDayOfYear=!0),n=Ve(r,0,e._dayOfYear),e._a[ve]=n.getUTCMonth(),e._a[ke]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=u[t]=s[t];for(;t<7;t++)e._a[t]=u[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Me]&&0===e._a[De]&&0===e._a[Se]&&0===e._a[Ye]&&(e._nextDay=!0,e._a[Me]=0),e._d=(e._useUTC?Ve:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,u),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Me]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(y(e).weekdayMismatch=!0)}}function Ot(e){if(e._f!==f.ISO_8601)if(e._f!==f.RFC_2822){e._a=[],y(e).empty=!0;for(var t,n,s,i,r,a,o,u=""+e._i,l=u.length,h=0,d=H(e._f,e._locale).match(N)||[],c=0;c<d.length;c++)n=d[c],(t=(u.match(fe(n,e))||[])[0])&&(0<(s=u.substr(0,u.indexOf(t))).length&&y(e).unusedInput.push(s),u=u.slice(u.indexOf(t)+t.length),h+=t.length),W[n]?(t?y(e).empty=!1:y(e).unusedTokens.push(n),r=n,o=e,null!=(a=t)&&m(_e,r)&&_e[r](a,o._a,o,r)):e._strict&&!t&&y(e).unusedTokens.push(n);y(e).charsLeftOver=l-h,0<u.length&&y(e).unusedInput.push(u),e._a[Me]<=12&&!0===y(e).bigHour&&0<e._a[Me]&&(y(e).bigHour=void 0),y(e).parsedDateParts=e._a.slice(0),y(e).meridiem=e._meridiem,e._a[Me]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[Me],e._meridiem),null!==(i=y(e).era)&&(e._a[pe]=e._locale.erasConvertYear(i,e._a[pe])),Yt(e),ct(e)}else Dt(e);else kt(e)}function bt(e){var t,n,s=e._i,i=e._f;return e._locale=e._locale||dt(e._l),null===s||void 0===i&&""===s?w({nullInput:!0}):("string"==typeof s&&(e._i=s=e._locale.preparse(s)),M(s)?new k(ct(s)):(a(s)?e._d=s:o(i)?function(e){var t,n,s,i,r,a,o=!1;if(0===e._f.length)return y(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,a=!1,t=v({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],Ot(t),g(t)&&(a=!0),r+=y(t).charsLeftOver,r+=10*y(t).unusedTokens.length,y(t).score=r,o?r<s&&(s=r,n=t):(null==s||r<s||a)&&(s=r,n=t,a&&(o=!0));c(e,n||t)}(e):i?Ot(e):r(n=(t=e)._i)?t._d=new Date(f.now()):a(n)?t._d=new Date(n.valueOf()):"string"==typeof n?function(e){var t=wt.exec(e._i);null===t?(kt(e),!1===e._isValid&&(delete e._isValid,Dt(e),!1===e._isValid&&(delete e._isValid,e._strict?e._isValid=!1:f.createFromInputFallback(e)))):e._d=new Date(+t[1])}(t):o(n)?(t._a=d(n.slice(0),function(e){return parseInt(e,10)}),Yt(t)):u(n)?function(e){var t,n;e._d||(n=void 0===(t=G(e._i)).day?t.date:t.day,e._a=d([t.year,t.month,n,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),Yt(e))}(t):h(n)?t._d=new Date(n):f.createFromInputFallback(t),g(e)||(e._d=null),e))}function xt(e,t,n,s,i){var r,a={};return!0!==t&&!1!==t||(s=t,t=void 0),!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&l(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new k(ct(bt(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Tt(e,t,n,s){return xt(e,t,n,s,!1)}f.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),f.ISO_8601=function(){},f.RFC_2822=function(){};var Nt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:w()}),Pt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:w()});function Rt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ct(e){var t=G(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,h=t.millisecond||0;this._isValid=function(e){var t,n,s=!1;for(t in e)if(m(e,t)&&(-1===we.call(Wt,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<Wt.length;++n)if(e[Wt[n]]){if(s)return!1;parseFloat(e[Wt[n]])!==Z(e[Wt[n]])&&(s=!0)}return!0}(t),this._milliseconds=+h+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=dt(),this._bubble()}function Ut(e){return e instanceof Ct}function Ht(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){C(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+T(~~(e/60),2)+n+T(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ce("Z",he),ce("ZZ",he),ye(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Vt(he,e)});var Lt=/([\+\-]|\d\d)/gi;function Vt(e,t){var n,s,i=(t||"").match(e);return null===i?null:0===(s=60*(n=((i[i.length-1]||[])+"").match(Lt)||["-",0,0])[1]+Z(n[2]))?0:"+"===n[0]?s:-s}function Gt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(M(e)||a(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),f.updateOffset(n,!1),n):Tt(e).local()}function Et(e){return-Math.round(e._d.getTimezoneOffset())}function At(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}f.updateOffset=function(){};var jt=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,It=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Zt(e,t){var n,s,i,r=e,a=null;return Ut(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:h(e)||!isNaN(+e)?(r={},t?r[t]=+e:r.milliseconds=+e):(a=jt.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:Z(a[ke])*n,h:Z(a[Me])*n,m:Z(a[De])*n,s:Z(a[Se])*n,ms:Z(Ht(1e3*a[Ye]))*n}):(a=It.exec(e))?(n="-"===a[1]?-1:1,r={y:zt(a[2],n),M:zt(a[3],n),w:zt(a[4],n),d:zt(a[5],n),h:zt(a[6],n),m:zt(a[7],n),s:zt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Gt(t,e),e.isBefore(t)?n=$t(e,t):((n=$t(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Tt(r.from),Tt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ct(r),Ut(e)&&m(e,"_locale")&&(s._locale=e._locale),Ut(e)&&m(e,"_isValid")&&(s._isValid=e._isValid),s}function zt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function $t(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=t-e.clone().add(n.months,"M"),n}function qt(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(Y(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),Bt(this,Zt(e,t),s),this}}function Bt(e,t,n,s){var i=t._milliseconds,r=Ht(t._days),a=Ht(t._months);e.isValid()&&(s=null==s||s,a&&Ce(e,$(e,"Month")+a*n),r&&q(e,"Date",$(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&f.updateOffset(e,r||a))}Zt.fn=Ct.prototype,Zt.invalid=function(){return Zt(NaN)};var Jt=qt(1,"add"),Qt=qt(-1,"subtract");function Xt(e){return"string"==typeof e||e instanceof String}function Kt(e){return M(e)||a(e)||Xt(e)||h(e)||function(t){var e=o(t),n=!1;e&&(n=0===t.filter(function(e){return!h(e)&&Xt(t)}).length);return e&&n}(e)||function(e){var t,n,s=u(e)&&!l(e),i=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(t=0;t<r.length;t+=1)n=r[t],i=i||m(e,n);return s&&i}(e)||null==e}function en(e,t){if(e.date()<t.date())return-en(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months"),i=t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(1+n,"months")-s);return-(n+i)||0}function tn(e){var t;return void 0===e?this._locale._abbr:(null!=(t=dt(e))&&(this._locale=t),this)}f.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",f.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var nn=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function sn(){return this._locale}var rn=126227808e5;function an(e,t){return(e%t+t)%t}function on(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-rn:new Date(e,t,n).valueOf()}function un(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-rn:Date.UTC(e,t,n)}function ln(e,t){return t.erasAbbrRegex(e)}function hn(){for(var e=[],t=[],n=[],s=[],i=this.eras(),r=0,a=i.length;r<a;++r)t.push(me(i[r].name)),e.push(me(i[r].abbr)),n.push(me(i[r].narrow)),s.push(me(i[r].name)),s.push(me(i[r].abbr)),s.push(me(i[r].narrow));this._erasRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+t.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+e.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+n.join("|")+")","i")}function dn(e,t){C(0,[e,e.length],0,t)}function cn(e,t,n,s,i){var r;return null==e?Ae(this,s,i).year:((r=je(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ve(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}C("N",0,0,"eraAbbr"),C("NN",0,0,"eraAbbr"),C("NNN",0,0,"eraAbbr"),C("NNNN",0,0,"eraName"),C("NNNNN",0,0,"eraNarrow"),C("y",["y",1],"yo","eraYear"),C("y",["yy",2],0,"eraYear"),C("y",["yyy",3],0,"eraYear"),C("y",["yyyy",4],0,"eraYear"),ce("N",ln),ce("NN",ln),ce("NNN",ln),ce("NNNN",function(e,t){return t.erasNameRegex(e)}),ce("NNNNN",function(e,t){return t.erasNarrowRegex(e)}),ye(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){var i=n._locale.erasParse(e,s,n._strict);i?y(n).era=i:y(n).invalidEra=e}),ce("y",oe),ce("yy",oe),ce("yyy",oe),ce("yyyy",oe),ce("yo",function(e,t){return t._eraYearOrdinalRegex||oe}),ye(["y","yy","yyy","yyyy"],pe),ye(["yo"],function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[pe]=n._locale.eraYearOrdinalParse(e,i):t[pe]=parseInt(e,10)}),C(0,["gg",2],0,function(){return this.weekYear()%100}),C(0,["GG",2],0,function(){return this.isoWeekYear()%100}),dn("gggg","weekYear"),dn("ggggg","weekYear"),dn("GGGG","isoWeekYear"),dn("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),A("weekYear",1),A("isoWeekYear",1),ce("G",ue),ce("g",ue),ce("GG",te,Q),ce("gg",te,Q),ce("GGGG",re,K),ce("gggg",re,K),ce("GGGGG",ae,ee),ce("ggggg",ae,ee),ge(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=Z(e)}),ge(["gg","GG"],function(e,t,n,s){t[s]=f.parseTwoDigitYear(e)}),C("Q",0,"Qo","quarter"),L("quarter","Q"),A("quarter",7),ce("Q",J),ye("Q",function(e,t){t[ve]=3*(Z(e)-1)}),C("D",["DD",2],"Do","date"),L("date","D"),A("date",9),ce("D",te),ce("DD",te,Q),ce("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ye(["D","DD"],ke),ye("Do",function(e,t){t[ke]=Z(e.match(te)[0])});var fn=z("Date",!0);C("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),A("dayOfYear",4),ce("DDD",ie),ce("DDDD",X),ye(["DDD","DDDD"],function(e,t,n){n._dayOfYear=Z(e)}),C("m",["mm",2],0,"minute"),L("minute","m"),A("minute",14),ce("m",te),ce("mm",te,Q),ye(["m","mm"],De);var mn=z("Minutes",!1);C("s",["ss",2],0,"second"),L("second","s"),A("second",15),ce("s",te),ce("ss",te,Q),ye(["s","ss"],Se);var _n,yn,gn=z("Seconds",!1);for(C("S",0,0,function(){return~~(this.millisecond()/100)}),C(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),C(0,["SSS",3],0,"millisecond"),C(0,["SSSS",4],0,function(){return 10*this.millisecond()}),C(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),C(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),C(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),C(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),C(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),A("millisecond",16),ce("S",ie,J),ce("SS",ie,Q),ce("SSS",ie,X),_n="SSSS";_n.length<=9;_n+="S")ce(_n,oe);function wn(e,t){t[Ye]=Z(1e3*("0."+e))}for(_n="S";_n.length<=9;_n+="S")ye(_n,wn);yn=z("Milliseconds",!1),C("z",0,0,"zoneAbbr"),C("zz",0,0,"zoneName");var pn=k.prototype;function vn(e){return e}pn.add=Jt,pn.calendar=function(e,t){1===arguments.length&&(Kt(arguments[0])?(e=arguments[0],t=void 0):function(e){for(var t=u(e)&&!l(e),n=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],i=0;i<s.length;i+=1)n=n||m(e,s[i]);return t&&n}(arguments[0])&&(t=arguments[0],e=void 0));var n=e||Tt(),s=Gt(n,this).startOf("day"),i=f.calendarFormat(this,s)||"sameElse",r=t&&(O(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,Tt(n)))},pn.clone=function(){return new k(this)},pn.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Gt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=V(t)){case"year":r=en(this,s)/12;break;case"month":r=en(this,s);break;case"quarter":r=en(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:I(r)},pn.endOf=function(e){var t,n;if(void 0===(e=V(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?un:on,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-an(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-an(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-an(t,1e3)-1;break}return this._d.setTime(t),f.updateOffset(this,!0),this},pn.format=function(e){e=e||(this.isUtc()?f.defaultFormatUtc:f.defaultFormat);var t=U(this,e);return this.localeData().postformat(t)},pn.from=function(e,t){return this.isValid()&&(M(e)&&e.isValid()||Tt(e).isValid())?Zt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pn.fromNow=function(e){return this.from(Tt(),e)},pn.to=function(e,t){return this.isValid()&&(M(e)&&e.isValid()||Tt(e).isValid())?Zt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pn.toNow=function(e){return this.to(Tt(),e)},pn.get=function(e){return O(this[e=V(e)])?this[e]():this},pn.invalidAt=function(){return y(this).overflow},pn.isAfter=function(e,t){var n=M(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=V(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},pn.isBefore=function(e,t){var n=M(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=V(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},pn.isBetween=function(e,t,n,s){var i=M(e)?e:Tt(e),r=M(t)?t:Tt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&(("("===(s=s||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===s[1]?this.isBefore(r,n):!this.isAfter(r,n)))},pn.isSame=function(e,t){var n,s=M(e)?e:Tt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=V(t)||"millisecond")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},pn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},pn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},pn.isValid=function(){return g(this)},pn.lang=nn,pn.locale=tn,pn.localeData=sn,pn.max=Pt,pn.min=Nt,pn.parsingFlags=function(){return c({},y(this))},pn.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t,n=[];for(t in e)m(e,t)&&n.push({unit:t,priority:E[t]});return n.sort(function(e,t){return e.priority-t.priority}),n}(e=G(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(O(this[e=V(e)]))return this[e](t);return this},pn.startOf=function(e){var t,n;if(void 0===(e=V(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?un:on,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=an(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=an(t,6e4);break;case"second":t=this._d.valueOf(),t-=an(t,1e3);break}return this._d.setTime(t),f.updateOffset(this,!0),this},pn.subtract=Qt,pn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},pn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},pn.toDate=function(){return new Date(this.valueOf())},pn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?U(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",U(n,"Z")):U(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},pn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,s="moment",i="";return this.isLocal()||(s=0===this.utcOffset()?"moment.utc":"moment.parseZone",i="Z"),e="["+s+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=i+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(pn[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),pn.toJSON=function(){return this.isValid()?this.toISOString():null},pn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},pn.unix=function(){return Math.floor(this.valueOf()/1e3)},pn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},pn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},pn.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].name;if(t[n].until<=e&&e<=t[n].since)return t[n].name}return""},pn.eraNarrow=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].narrow;if(t[n].until<=e&&e<=t[n].since)return t[n].narrow}return""},pn.eraAbbr=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].abbr;if(t[n].until<=e&&e<=t[n].since)return t[n].abbr}return""},pn.eraYear=function(){for(var e,t,n=this.localeData().eras(),s=0,i=n.length;s<i;++s)if(e=n[s].since<=n[s].until?1:-1,t=this.clone().startOf("day").valueOf(),n[s].since<=t&&t<=n[s].until||n[s].until<=t&&t<=n[s].since)return(this.year()-f(n[s].since).year())*e+n[s].offset;return this.year()},pn.year=Le,pn.isLeapYear=function(){return j(this.year())},pn.weekYear=function(e){return cn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},pn.isoWeekYear=function(e){return cn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},pn.quarter=pn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},pn.month=Ue,pn.daysInMonth=function(){return xe(this.year(),this.month())},pn.week=pn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},pn.isoWeek=pn.isoWeeks=function(e){var t=Ae(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},pn.weeksInYear=function(){var e=this.localeData()._week;return je(this.year(),e.dow,e.doy)},pn.weeksInWeekYear=function(){var e=this.localeData()._week;return je(this.weekYear(),e.dow,e.doy)},pn.isoWeeksInYear=function(){return je(this.year(),1,4)},pn.isoWeeksInISOWeekYear=function(){return je(this.isoWeekYear(),1,4)},pn.date=fn,pn.day=pn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},pn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},pn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var t,n,s=(t=e,n=this.localeData(),"string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t);return this.day(this.day()%7?s:s-7)},pn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},pn.hour=pn.hours=tt,pn.minute=pn.minutes=mn,pn.second=pn.seconds=gn,pn.millisecond=pn.milliseconds=yn,pn.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Et(this);if("string"==typeof e){if(null===(e=Vt(he,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Et(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?Bt(this,Zt(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,f.updateOffset(this,!0),this._changeInProgress=null)),this},pn.utc=function(e){return this.utcOffset(0,e)},pn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Et(this),"m")),this},pn.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=Vt(le,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},pn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},pn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},pn.isLocal=function(){return!!this.isValid()&&!this._isUTC},pn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},pn.isUtc=At,pn.isUTC=At,pn.zoneAbbr=function(){return this._isUTC?"UTC":""},pn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},pn.dates=n("dates accessor is deprecated. Use date instead.",fn),pn.months=n("months accessor is deprecated. Use month instead",Ue),pn.years=n("years accessor is deprecated. Use year instead",Le),pn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),pn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!r(this._isDSTShifted))return this._isDSTShifted;var e,t={};return v(t,this),(t=bt(t))._a?(e=(t._isUTC?_:Tt)(t._a),this._isDSTShifted=this.isValid()&&0<function(e,t,n){for(var s=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),r=0,a=0;a<s;a++)(n&&e[a]!==t[a]||!n&&Z(e[a])!==Z(t[a]))&&r++;return r+i}(t._a,e.toArray())):this._isDSTShifted=!1,this._isDSTShifted});var kn=x.prototype;function Mn(e,t,n,s){var i=dt(),r=_().set(s,t);return i[n](r,e)}function Dn(e,t,n){if(h(e)&&(t=e,e=void 0),e=e||"",null!=t)return Mn(e,t,n,"month");for(var s=[],i=0;i<12;i++)s[i]=Mn(e,i,n,"month");return s}function Sn(e,t,n,s){t=("boolean"==typeof e?h(t)&&(n=t,t=void 0):(t=e,e=!1,h(n=t)&&(n=t,t=void 0)),t||"");var i,r=dt(),a=e?r._week.dow:0,o=[];if(null!=n)return Mn(t,(n+a)%7,s,"day");for(i=0;i<7;i++)o[i]=Mn(t,(i+a)%7,s,"day");return o}kn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return O(s)?s.call(t,n):s},kn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(N).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},kn.invalidDate=function(){return this._invalidDate},kn.ordinal=function(e){return this._ordinal.replace("%d",e)},kn.preparse=vn,kn.postformat=vn,kn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return O(i)?i(e,t,n,s):i.replace(/%d/i,e)},kn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return O(n)?n(t):n.replace(/%s/i,t)},kn.set=function(e){var t,n;for(n in e)m(e,n)&&(O(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},kn.eras=function(e,t){for(var n,s=this._eras||dt("en")._eras,i=0,r=s.length;i<r;++i){switch(typeof s[i].since){case"string":n=f(s[i].since).startOf("day"),s[i].since=n.valueOf();break}switch(typeof s[i].until){case"undefined":s[i].until=1/0;break;case"string":n=f(s[i].until).startOf("day").valueOf(),s[i].until=n.valueOf();break}}return s},kn.erasParse=function(e,t,n){var s,i,r,a,o,u=this.eras();for(e=e.toUpperCase(),s=0,i=u.length;s<i;++s)if(r=u[s].name.toUpperCase(),a=u[s].abbr.toUpperCase(),o=u[s].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(a===e)return u[s];break;case"NNNN":if(r===e)return u[s];break;case"NNNNN":if(o===e)return u[s];break}else if(0<=[r,a,o].indexOf(e))return u[s]},kn.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?f(e.since).year():f(e.since).year()+(t-e.offset)*n},kn.erasAbbrRegex=function(e){return m(this,"_erasAbbrRegex")||hn.call(this),e?this._erasAbbrRegex:this._erasRegex},kn.erasNameRegex=function(e){return m(this,"_erasNameRegex")||hn.call(this),e?this._erasNameRegex:this._erasRegex},kn.erasNarrowRegex=function(e){return m(this,"_erasNarrowRegex")||hn.call(this),e?this._erasNarrowRegex:this._erasRegex},kn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Pe).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},kn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Pe.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},kn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=_([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=we.call(this._shortMonthsParse,a))?i:null:-1!==(i=we.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=we.call(this._shortMonthsParse,a))||-1!==(i=we.call(this._longMonthsParse,a))?i:null:-1!==(i=we.call(this._longMonthsParse,a))||-1!==(i=we.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=_([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},kn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||He.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=We),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},kn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||He.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Re),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},kn.week=function(e){return Ae(e,this._week.dow,this._week.doy).week},kn.firstDayOfYear=function(){return this._week.doy},kn.firstDayOfWeek=function(){return this._week.dow},kn.weekdays=function(e,t){var n=o(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ie(n,this._week.dow):e?n[e.day()]:n},kn.weekdaysMin=function(e){return!0===e?Ie(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},kn.weekdaysShort=function(e){return!0===e?Ie(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},kn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=_([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=we.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=we.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=we.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=we.call(this._weekdaysParse,a))||-1!==(i=we.call(this._shortWeekdaysParse,a))||-1!==(i=we.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=we.call(this._shortWeekdaysParse,a))||-1!==(i=we.call(this._weekdaysParse,a))||-1!==(i=we.call(this._minWeekdaysParse,a))?i:null:-1!==(i=we.call(this._minWeekdaysParse,a))||-1!==(i=we.call(this._weekdaysParse,a))||-1!==(i=we.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=_([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},kn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},kn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Be),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},kn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Qe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Je),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},kn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},kn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},lt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===Z(e%100/10)?"th":1==t?"st":2==t?"nd":3==t?"rd":"th")}}),f.lang=n("moment.lang is deprecated. Use moment.locale instead.",lt),f.langData=n("moment.langData is deprecated. Use moment.localeData instead.",dt);var Yn=Math.abs;function On(e,t,n,s){var i=Zt(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function bn(e){return e<0?Math.floor(e):Math.ceil(e)}function xn(e){return 4800*e/146097}function Tn(e){return 146097*e/4800}function Nn(e){return function(){return this.as(e)}}var Pn=Nn("ms"),Rn=Nn("s"),Wn=Nn("m"),Cn=Nn("h"),Un=Nn("d"),Hn=Nn("w"),Fn=Nn("M"),Ln=Nn("Q"),Vn=Nn("y");function Gn(e){return function(){return this.isValid()?this._data[e]:NaN}}var En=Gn("milliseconds"),An=Gn("seconds"),jn=Gn("minutes"),In=Gn("hours"),Zn=Gn("days"),zn=Gn("months"),$n=Gn("years");var qn=Math.round,Bn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Jn(e,t,n,s){var i=Zt(e).abs(),r=qn(i.as("s")),a=qn(i.as("m")),o=qn(i.as("h")),u=qn(i.as("d")),l=qn(i.as("M")),h=qn(i.as("w")),d=qn(i.as("y")),c=(r<=n.ss?["s",r]:r<n.s&&["ss",r])||a<=1&&["m"]||a<n.m&&["mm",a]||o<=1&&["h"]||o<n.h&&["hh",o]||u<=1&&["d"]||u<n.d&&["dd",u];return null!=n.w&&(c=c||h<=1&&["w"]||h<n.w&&["ww",h]),(c=c||l<=1&&["M"]||l<n.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=t,c[3]=0<+e,c[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,c)}var Qn=Math.abs;function Xn(e){return(0<e)-(e<0)||+e}function Kn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,s,i,r,a,o,u=Qn(this._milliseconds)/1e3,l=Qn(this._days),h=Qn(this._months),d=this.asSeconds();return d?(e=I(u/60),t=I(e/60),u%=60,e%=60,n=I(h/12),h%=12,s=u?u.toFixed(3).replace(/\.?0+$/,""):"",i=d<0?"-":"",r=Xn(this._months)!==Xn(d)?"-":"",a=Xn(this._days)!==Xn(d)?"-":"",o=Xn(this._milliseconds)!==Xn(d)?"-":"",i+"P"+(n?r+n+"Y":"")+(h?r+h+"M":"")+(l?a+l+"D":"")+(t||e||u?"T":"")+(t?o+t+"H":"")+(e?o+e+"M":"")+(u?o+s+"S":"")):"P0D"}var es=Ct.prototype;return es.isValid=function(){return this._isValid},es.abs=function(){var e=this._data;return this._milliseconds=Yn(this._milliseconds),this._days=Yn(this._days),this._months=Yn(this._months),e.milliseconds=Yn(e.milliseconds),e.seconds=Yn(e.seconds),e.minutes=Yn(e.minutes),e.hours=Yn(e.hours),e.months=Yn(e.months),e.years=Yn(e.years),this},es.add=function(e,t){return On(this,e,t,1)},es.subtract=function(e,t){return On(this,e,t,-1)},es.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=V(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+xn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Tn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},es.asMilliseconds=Pn,es.asSeconds=Rn,es.asMinutes=Wn,es.asHours=Cn,es.asDays=Un,es.asWeeks=Hn,es.asMonths=Fn,es.asQuarters=Ln,es.asYears=Vn,es.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*Z(this._months/12):NaN},es._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*bn(Tn(o)+a),o=a=0),u.milliseconds=r%1e3,e=I(r/1e3),u.seconds=e%60,t=I(e/60),u.minutes=t%60,n=I(t/60),u.hours=n%24,a+=I(n/24),o+=i=I(xn(a)),a-=bn(Tn(i)),s=I(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},es.clone=function(){return Zt(this)},es.get=function(e){return e=V(e),this.isValid()?this[e+"s"]():NaN},es.milliseconds=En,es.seconds=An,es.minutes=jn,es.hours=In,es.days=Zn,es.weeks=function(){return I(this.days()/7)},es.months=zn,es.years=$n,es.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,s,i=!1,r=Bn;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(i=e),"object"==typeof t&&(r=Object.assign({},Bn,t),null!=t.s&&null==t.ss&&(r.ss=t.s-1)),n=this.localeData(),s=Jn(this,!i,r,n),i&&(s=n.pastFuture(+this,s)),n.postformat(s)},es.toISOString=Kn,es.toString=Kn,es.toJSON=Kn,es.locale=tn,es.localeData=sn,es.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Kn),es.lang=nn,C("X",0,0,"unix"),C("x",0,0,"valueOf"),ce("x",ue),ce("X",/[+-]?\d+(\.\d{1,3})?/),ye("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e))}),ye("x",function(e,t,n){n._d=new Date(Z(e))}),f.version="2.28.0",e=Tt,f.fn=pn,f.min=function(){return Rt("isBefore",[].slice.call(arguments,0))},f.max=function(){return Rt("isAfter",[].slice.call(arguments,0))},f.now=function(){return Date.now?Date.now():+new Date},f.utc=_,f.unix=function(e){return Tt(1e3*e)},f.months=function(e,t){return Dn(e,t,"months")},f.isDate=a,f.locale=lt,f.invalid=w,f.duration=Zt,f.isMoment=M,f.weekdays=function(e,t,n){return Sn(e,t,n,"weekdays")},f.parseZone=function(){return Tt.apply(null,arguments).parseZone()},f.localeData=dt,f.isDuration=Ut,f.monthsShort=function(e,t){return Dn(e,t,"monthsShort")},f.weekdaysMin=function(e,t,n){return Sn(e,t,n,"weekdaysMin")},f.defineLocale=ht,f.updateLocale=function(e,t){var n,s,i;return null!=t?(i=st,null!=it[e]&&null!=it[e].parentLocale?it[e].set(b(it[e]._config,t)):(null!=(s=ut(e))&&(i=s._config),t=b(i,t),null==s&&(t.abbr=e),(n=new x(t)).parentLocale=it[e],it[e]=n),lt(e)):null!=it[e]&&(null!=it[e].parentLocale?(it[e]=it[e].parentLocale,e===lt()&&lt(e)):null!=it[e]&&delete it[e]),it[e]},f.locales=function(){return s(it)},f.weekdaysShort=function(e,t,n){return Sn(e,t,n,"weekdaysShort")},f.normalizeUnits=V,f.relativeTimeRounding=function(e){return void 0===e?qn:"function"==typeof e&&(qn=e,!0)},f.relativeTimeThreshold=function(e,t){return void 0!==Bn[e]&&(void 0===t?Bn[e]:(Bn[e]=t,"s"===e&&(Bn.ss=t-1),!0))},f.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},f.prototype=pn,f.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},f});
+//# sourceMappingURL=moment.min.js.map
\ No newline at end of file
diff --git a/admin/js/vendors/moment/moment.min.js.map b/admin/js/vendors/moment/moment.min.js.map
new file mode 100644 (file)
index 0000000..df7aa30
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"moment.min.js","sources":["../moment.js"],"names":["global","factory","exports","module","define","amd","moment","this","hookCallback","some","hooks","apply","arguments","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","i","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","t","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","key","args","slice","join","Error","stack","keys","deprecations","deprecateSimple","name","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","s","tokens","addParseToken","addWeekParseToken","_w","indexOf","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","x","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","dayOfYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","n","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","d","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","day","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","getSetHour","globalLocale","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","chooseLocale","names","j","next","loadLocale","arr1","arr2","minl","commonPrefix","oldLocale","_abbr","require","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","checkOverflow","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","string","exec","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","configFromRFC2822","parsedArray","weekdayStr","parsedInput","getDay","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","c","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ms","setFullYear","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","isUTC","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","base","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","item","isNumberOrStringArray","property","objectTest","propertyTest","properties","isMomentInputObject","monthDiff","wholeMonthDiff","anchor","adjust","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","isCalendarSpec","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","prefix","suffix","zone","isLocal","Symbol","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","Infinity","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","relativeTime$1","posNegDuration","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS"],"mappings":"CAME,SAAUA,EAAQC,GACG,iBAAZC,SAA0C,oBAAXC,OAAyBA,OAAOD,QAAUD,IAC9D,mBAAXG,QAAyBA,OAAOC,IAAMD,OAAOH,GACpDD,EAAOM,OAASL,IAHnB,CAICM,KAAM,wBAEJ,IAAIC,EA4HAC,EA1HJ,SAASC,IACL,OAAOF,EAAaG,MAAM,KAAMC,WASpC,SAASC,EAAQC,GACb,OACIA,aAAiBC,OACyB,mBAA1CC,OAAOC,UAAUC,SAASC,KAAKL,GAIvC,SAASM,EAASN,GAGd,OACa,MAATA,GAC0C,oBAA1CE,OAAOC,UAAUC,SAASC,KAAKL,GAIvC,SAASO,EAAWC,EAAGC,GACnB,OAAOP,OAAOC,UAAUO,eAAeL,KAAKG,EAAGC,GAGnD,SAASE,EAAcC,GACnB,GAAIV,OAAOW,oBACP,OAAkD,IAA3CX,OAAOW,oBAAoBD,GAAKE,OAGvC,IADA,IAAIC,KACMH,EACN,GAAIL,EAAWK,EAAKG,GAChB,OAGR,OAAO,EAIf,SAASC,EAAYhB,GACjB,YAAiB,IAAVA,EAGX,SAASiB,EAASjB,GACd,MACqB,iBAAVA,GACmC,oBAA1CE,OAAOC,UAAUC,SAASC,KAAKL,GAIvC,SAASkB,EAAOlB,GACZ,OACIA,aAAiBmB,MACyB,kBAA1CjB,OAAOC,UAAUC,SAASC,KAAKL,GAIvC,SAASoB,EAAIC,EAAKC,GAGd,IAFA,IAAIC,EAAM,GAELC,EAAI,EAAGA,EAAIH,EAAIP,SAAUU,EAC1BD,EAAIE,KAAKH,EAAGD,EAAIG,GAAIA,IAExB,OAAOD,EAGX,SAASG,EAAOlB,EAAGC,GACf,IAAK,IAAIe,KAAKf,EACNF,EAAWE,EAAGe,KACdhB,EAAEgB,GAAKf,EAAEe,IAYjB,OARIjB,EAAWE,EAAG,cACdD,EAAEJ,SAAWK,EAAEL,UAGfG,EAAWE,EAAG,aACdD,EAAEmB,QAAUlB,EAAEkB,SAGXnB,EAGX,SAASoB,EAAU5B,EAAO6B,EAAQC,EAAQC,GACtC,OAAOC,GAAiBhC,EAAO6B,EAAQC,EAAQC,GAAQ,GAAME,MAyBjE,SAASC,EAAgBC,GAIrB,OAHa,MAATA,EAAEC,MACFD,EAAEC,IAtBC,CACHC,OAAO,EACPC,aAAc,GACdC,YAAa,GACbC,UAAW,EACXC,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,SAAS,EACTC,iBAAiB,IAQdjB,EAAEC,IAsBb,SAASiB,EAAQlB,GACb,GAAkB,MAAdA,EAAEmB,SAAkB,CACpB,IAAIC,EAAQrB,EAAgBC,GACxBqB,EAAc7D,EAAKU,KAAKkD,EAAMP,gBAAiB,SAAUxB,GACrD,OAAY,MAALA,IAEXiC,GACKC,MAAMvB,EAAEwB,GAAGC,YACZL,EAAMf,SAAW,IAChBe,EAAMlB,QACNkB,EAAMZ,aACNY,EAAMX,eACNW,EAAMM,iBACNN,EAAMH,kBACNG,EAAMb,YACNa,EAAMV,gBACNU,EAAMT,mBACLS,EAAML,UAAaK,EAAML,UAAYM,GAU/C,GARIrB,EAAE2B,UACFL,EACIA,GACwB,IAAxBF,EAAMd,eACwB,IAA9Bc,EAAMjB,aAAaxB,aACDiD,IAAlBR,EAAMS,SAGS,MAAnB9D,OAAO+D,UAAqB/D,OAAO+D,SAAS9B,GAG5C,OAAOsB,EAFPtB,EAAEmB,SAAWG,EAKrB,OAAOtB,EAAEmB,SAGb,SAASY,EAAcX,GACnB,IAAIpB,EAAIP,EAAUuC,KAOlB,OANa,MAATZ,EACA7B,EAAOQ,EAAgBC,GAAIoB,GAE3BrB,EAAgBC,GAAGW,iBAAkB,EAGlCX,EA7DPxC,EADAM,MAAME,UAAUR,KACTM,MAAME,UAAUR,KAEhB,SAAUyE,GAKb,IAJA,IAAIC,EAAInE,OAAOT,MACX6E,EAAMD,EAAEvD,SAAW,EAGlBU,EAAI,EAAGA,EAAI8C,EAAK9C,IACjB,GAAIA,KAAK6C,GAAKD,EAAI/D,KAAKZ,KAAM4E,EAAE7C,GAAIA,EAAG6C,GAClC,OAAO,EAIf,OAAO,GAqDf,IAAIE,EAAoB3E,EAAM2E,iBAAmB,GAC7CC,GAAmB,EAEvB,SAASC,EAAWC,EAAIC,GACpB,IAAInD,EAAGoD,EAAMC,EAiCb,GA/BK7D,EAAY2D,EAAKG,oBAClBJ,EAAGI,iBAAmBH,EAAKG,kBAE1B9D,EAAY2D,EAAKI,MAClBL,EAAGK,GAAKJ,EAAKI,IAEZ/D,EAAY2D,EAAKK,MAClBN,EAAGM,GAAKL,EAAKK,IAEZhE,EAAY2D,EAAKM,MAClBP,EAAGO,GAAKN,EAAKM,IAEZjE,EAAY2D,EAAKb,WAClBY,EAAGZ,QAAUa,EAAKb,SAEjB9C,EAAY2D,EAAKO,QAClBR,EAAGQ,KAAOP,EAAKO,MAEdlE,EAAY2D,EAAKQ,UAClBT,EAAGS,OAASR,EAAKQ,QAEhBnE,EAAY2D,EAAKS,WAClBV,EAAGU,QAAUT,EAAKS,SAEjBpE,EAAY2D,EAAKvC,OAClBsC,EAAGtC,IAAMF,EAAgByC,IAExB3D,EAAY2D,EAAKU,WAClBX,EAAGW,QAAUV,EAAKU,SAGQ,EAA1Bd,EAAiBzD,OACjB,IAAKU,EAAI,EAAGA,EAAI+C,EAAiBzD,OAAQU,IAGhCR,EADL6D,EAAMF,EADNC,EAAOL,EAAiB/C,OAGpBkD,EAAGE,GAAQC,GAKvB,OAAOH,EAIX,SAASY,EAAOC,GACZd,EAAWhF,KAAM8F,GACjB9F,KAAKkE,GAAK,IAAIxC,KAAkB,MAAboE,EAAO5B,GAAa4B,EAAO5B,GAAGC,UAAYO,KACxD1E,KAAK4D,YACN5D,KAAKkE,GAAK,IAAIxC,KAAKgD,OAIE,IAArBK,IACAA,GAAmB,EACnB5E,EAAM4F,aAAa/F,MACnB+E,GAAmB,GAI3B,SAASiB,EAAS7E,GACd,OACIA,aAAe0E,GAAkB,MAAP1E,GAAuC,MAAxBA,EAAIkE,iBAIrD,SAASY,EAAKC,IAEgC,IAAtC/F,EAAMgG,6BACa,oBAAZC,SACPA,QAAQH,MAERG,QAAQH,KAAK,wBAA0BC,GAI/C,SAASG,EAAUH,EAAKrE,GACpB,IAAIyE,GAAY,EAEhB,OAAOrE,EAAO,WAIV,GAHgC,MAA5B9B,EAAMoG,oBACNpG,EAAMoG,mBAAmB,KAAML,GAE/BI,EAAW,CAKX,IAJA,IACIE,EAEAC,EAHAC,EAAO,GAIN3E,EAAI,EAAGA,EAAI1B,UAAUgB,OAAQU,IAAK,CAEnC,GADAyE,EAAM,GACsB,iBAAjBnG,UAAU0B,GAAiB,CAElC,IAAK0E,KADLD,GAAO,MAAQzE,EAAI,KACP1B,UAAU,GACdS,EAAWT,UAAU,GAAIoG,KACzBD,GAAOC,EAAM,KAAOpG,UAAU,GAAGoG,GAAO,MAGhDD,EAAMA,EAAIG,MAAM,GAAI,QAEpBH,EAAMnG,UAAU0B,GAEpB2E,EAAK1E,KAAKwE,GAEdP,EACIC,EACI,gBACA1F,MAAME,UAAUiG,MAAM/F,KAAK8F,GAAME,KAAK,IACtC,MACA,IAAIC,OAAQC,OAEpBR,GAAY,EAEhB,OAAOzE,EAAGzB,MAAMJ,KAAMK,YACvBwB,GAGP,IAgFIkF,EAhFAC,EAAe,GAEnB,SAASC,EAAgBC,EAAMhB,GACK,MAA5B/F,EAAMoG,oBACNpG,EAAMoG,mBAAmBW,EAAMhB,GAE9Bc,EAAaE,KACdjB,EAAKC,GACLc,EAAaE,IAAQ,GAO7B,SAASC,EAAW5G,GAChB,MACyB,oBAAb6G,UAA4B7G,aAAiB6G,UACX,sBAA1C3G,OAAOC,UAAUC,SAASC,KAAKL,GA2BvC,SAAS8G,EAAaC,EAAcC,GAChC,IACIpC,EADArD,EAAMG,EAAO,GAAIqF,GAErB,IAAKnC,KAAQoC,EACLzG,EAAWyG,EAAapC,KACpBtE,EAASyG,EAAanC,KAAUtE,EAAS0G,EAAYpC,KACrDrD,EAAIqD,GAAQ,GACZlD,EAAOH,EAAIqD,GAAOmC,EAAanC,IAC/BlD,EAAOH,EAAIqD,GAAOoC,EAAYpC,KACF,MAArBoC,EAAYpC,GACnBrD,EAAIqD,GAAQoC,EAAYpC,UAEjBrD,EAAIqD,IAIvB,IAAKA,KAAQmC,EAELxG,EAAWwG,EAAcnC,KACxBrE,EAAWyG,EAAapC,IACzBtE,EAASyG,EAAanC,MAGtBrD,EAAIqD,GAAQlD,EAAO,GAAIH,EAAIqD,KAGnC,OAAOrD,EAGX,SAAS0F,EAAO1B,GACE,MAAVA,GACA9F,KAAKyH,IAAI3B,GAhEjB3F,EAAMgG,6BAA8B,EACpChG,EAAMoG,mBAAqB,KAsEvBQ,EADAtG,OAAOsG,KACAtG,OAAOsG,KAEP,SAAU5F,GACb,IAAIY,EACAD,EAAM,GACV,IAAKC,KAAKZ,EACFL,EAAWK,EAAKY,IAChBD,EAAIE,KAAKD,GAGjB,OAAOD,GAkBf,SAAS4F,EAASC,EAAQC,EAAcC,GACpC,IAAIC,EAAY,GAAKC,KAAKC,IAAIL,GAC1BM,EAAcL,EAAeE,EAAUzG,OAE3C,OADqB,GAAVsG,EAEEE,EAAY,IAAM,GAAM,KACjCE,KAAKG,IAAI,GAAIH,KAAKI,IAAI,EAAGF,IAActH,WAAWyH,OAAO,GACzDN,EAIR,IAAIO,EAAmB,yMACnBC,EAAwB,6CACxBC,EAAkB,GAClBC,EAAuB,GAM3B,SAASC,EAAeC,EAAOC,EAAQC,EAASC,GAC5C,IAAIC,EACoB,iBAAbD,EACA,WACH,OAAO7I,KAAK6I,MAHTA,EAMPH,IACAF,EAAqBE,GAASI,GAE9BH,IACAH,EAAqBG,EAAO,IAAM,WAC9B,OAAOjB,EAASoB,EAAK1I,MAAMJ,KAAMK,WAAYsI,EAAO,GAAIA,EAAO,MAGnEC,IACAJ,EAAqBI,GAAW,WAC5B,OAAO5I,KAAK+I,aAAaH,QACrBE,EAAK1I,MAAMJ,KAAMK,WACjBqI,KAuChB,SAASM,EAAatG,EAAGN,GACrB,OAAKM,EAAEkB,WAIPxB,EAAS6G,EAAa7G,EAAQM,EAAEqG,cAChCR,EAAgBnG,GACZmG,EAAgBnG,IAjCxB,SAA4BA,GAKxB,IAJA,IAR4B7B,EAQxB2I,EAAQ9G,EAAO+G,MAAMd,GAIpBtG,EAAI,EAAGV,EAAS6H,EAAM7H,OAAQU,EAAIV,EAAQU,IACvCyG,EAAqBU,EAAMnH,IAC3BmH,EAAMnH,GAAKyG,EAAqBU,EAAMnH,IAEtCmH,EAAMnH,IAhBcxB,EAgBc2I,EAAMnH,IAftCoH,MAAM,YACL5I,EAAM6I,QAAQ,WAAY,IAE9B7I,EAAM6I,QAAQ,MAAO,IAgB5B,OAAO,SAAUC,GAGb,IAFA,IAAIC,EAAS,GAERvH,EAAI,EAAGA,EAAIV,EAAQU,IACpBuH,GAAUnC,EAAW+B,EAAMnH,IACrBmH,EAAMnH,GAAGnB,KAAKyI,EAAKjH,GACnB8G,EAAMnH,GAEhB,OAAOuH,GAYoBC,CAAmBnH,GAE3CmG,EAAgBnG,GAAQM,IAPpBA,EAAEqG,aAAaS,cAU9B,SAASP,EAAa7G,EAAQC,GAC1B,IAAIN,EAAI,EAER,SAAS0H,EAA4BlJ,GACjC,OAAO8B,EAAOqH,eAAenJ,IAAUA,EAI3C,IADA+H,EAAsBqB,UAAY,EACtB,GAAL5H,GAAUuG,EAAsBsB,KAAKxH,IACxCA,EAASA,EAAOgH,QACZd,EACAmB,GAEJnB,EAAsBqB,UAAY,IAClC5H,EAGJ,OAAOK,EAkFX,IAAIyH,EAAU,GAEd,SAASC,EAAaC,EAAMC,GACxB,IAAIC,EAAYF,EAAKG,cACrBL,EAAQI,GAAaJ,EAAQI,EAAY,KAAOJ,EAAQG,GAAaD,EAGzE,SAASI,EAAeC,GACpB,MAAwB,iBAAVA,EACRP,EAAQO,IAAUP,EAAQO,EAAMF,oBAChC5F,EAGV,SAAS+F,EAAqBC,GAC1B,IACIC,EACApF,EAFAqF,EAAkB,GAItB,IAAKrF,KAAQmF,EACLxJ,EAAWwJ,EAAanF,KACxBoF,EAAiBJ,EAAehF,MAE5BqF,EAAgBD,GAAkBD,EAAYnF,IAK1D,OAAOqF,EAGX,IAAIC,EAAa,GAEjB,SAASC,EAAgBX,EAAMY,GAC3BF,EAAWV,GAAQY,EAiBvB,SAASC,EAAWC,GAChB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,EAGlE,SAASC,EAASnD,GACd,OAAIA,EAAS,EAEFI,KAAKgD,KAAKpD,IAAW,EAErBI,KAAKiD,MAAMrD,GAI1B,SAASsD,EAAMC,GACX,IAAIC,GAAiBD,EACjBE,EAAQ,EAMZ,OAJsB,GAAlBD,GAAuBE,SAASF,KAChCC,EAAQN,EAASK,IAGdC,EAGX,SAASE,EAAWvB,EAAMwB,GACtB,OAAO,SAAUH,GACb,OAAa,MAATA,GACAI,EAAMxL,KAAM+J,EAAMqB,GAClBjL,EAAM4F,aAAa/F,KAAMuL,GAClBvL,MAEAyL,EAAIzL,KAAM+J,IAK7B,SAAS0B,EAAIpC,EAAKU,GACd,OAAOV,EAAIzF,UACLyF,EAAInF,GAAG,OAASmF,EAAI3D,OAAS,MAAQ,IAAMqE,KAC3CrF,IAGV,SAAS8G,EAAMnC,EAAKU,EAAMqB,GAClB/B,EAAIzF,YAAcK,MAAMmH,KAEX,aAATrB,GACAa,EAAWvB,EAAIwB,SACC,IAAhBxB,EAAIqC,SACW,KAAfrC,EAAIsC,QAEJP,EAAQH,EAAMG,GACd/B,EAAInF,GAAG,OAASmF,EAAI3D,OAAS,MAAQ,IAAMqE,GACvCqB,EACA/B,EAAIqC,QACJE,GAAYR,EAAO/B,EAAIqC,WAG3BrC,EAAInF,GAAG,OAASmF,EAAI3D,OAAS,MAAQ,IAAMqE,GAAMqB,IAgC7D,IAmBIS,EAnBAC,EAAS,KACTC,EAAS,OACTC,EAAS,QACTC,EAAS,QACTC,GAAS,aACTC,GAAY,QACZC,GAAY,YACZC,GAAY,gBACZC,GAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BAInBC,GAAY,wJAKhB,SAASC,GAAcpE,EAAOqE,EAAOC,GACjCnB,EAAQnD,GAASvB,EAAW4F,GACtBA,EACA,SAAUE,EAAUlE,GAChB,OAAOkE,GAAYD,EAAcA,EAAcD,GAI7D,SAASG,GAAsBxE,EAAO5C,GAClC,OAAKhF,EAAW+K,EAASnD,GAIlBmD,EAAQnD,GAAO5C,EAAOzB,QAASyB,EAAOF,SAHlC,IAAIuH,OAQRC,GAR8B1E,EAU5BU,QAAQ,KAAM,IACdA,QAAQ,sCAAuC,SAC5CiE,EACAC,EACAC,EACAC,EACAC,GAEA,OAAOH,GAAMC,GAAMC,GAAMC,MAKzC,SAASL,GAAYM,GACjB,OAAOA,EAAEtE,QAAQ,yBAA0B,QApC/CyC,EAAU,GAuCV,IAAI8B,GAAS,GAEb,SAASC,GAAclF,EAAOG,GAC1B,IAAI9G,EACA+G,EAAOD,EASX,IARqB,iBAAVH,IACPA,EAAQ,CAACA,IAETlH,EAASqH,KACTC,EAAO,SAAUvI,EAAO2I,GACpBA,EAAML,GAAYoC,EAAM1K,KAG3BwB,EAAI,EAAGA,EAAI2G,EAAMrH,OAAQU,IAC1B4L,GAAOjF,EAAM3G,IAAM+G,EAI3B,SAAS+E,GAAkBnF,EAAOG,GAC9B+E,GAAclF,EAAO,SAAUnI,EAAO2I,EAAOpD,EAAQ4C,GACjD5C,EAAOgI,GAAKhI,EAAOgI,IAAM,GACzBjF,EAAStI,EAAOuF,EAAOgI,GAAIhI,EAAQ4C,KAU3C,IAcIqF,GAdAC,GAAO,EACPC,GAAQ,EACRC,GAAO,EACPC,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdC,GAAO,EACPC,GAAU,EAuBd,SAAS5C,GAAYf,EAAMa,GACvB,GAAIzH,MAAM4G,IAAS5G,MAAMyH,GACrB,OAAOhH,IAEX,IAzBY+J,EAyBRC,GAAehD,GAzBP+C,EAyBc,IAxBRA,GAAKA,EA0BvB,OADA5D,IAASa,EAAQgD,GAAY,GACT,GAAbA,EACD9D,EAAWC,GACP,GACA,GACJ,GAAO6D,EAAW,EAAK,EAxB7BX,GADAvN,MAAME,UAAUqN,QACNvN,MAAME,UAAUqN,QAEhB,SAAUY,GAGhB,IADA,IACK5M,EAAI,EAAGA,EAAI/B,KAAKqB,SAAUU,EAC3B,GAAI/B,KAAK+B,KAAO4M,EACZ,OAAO5M,EAGf,OAAQ,GAmBhB0G,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WACjC,OAAOzI,KAAK0L,QAAU,IAG1BjD,EAAe,MAAO,EAAG,EAAG,SAAUrG,GAClC,OAAOpC,KAAK+I,aAAa6F,YAAY5O,KAAMoC,KAG/CqG,EAAe,OAAQ,EAAG,EAAG,SAAUrG,GACnC,OAAOpC,KAAK+I,aAAa8F,OAAO7O,KAAMoC,KAK1C0H,EAAa,QAAS,KAItBY,EAAgB,QAAS,GAIzBoC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,MAAO,SAAUG,EAAU5K,GACrC,OAAOA,EAAOyM,iBAAiB7B,KAEnCH,GAAc,OAAQ,SAAUG,EAAU5K,GACtC,OAAOA,EAAO0M,YAAY9B,KAG9BW,GAAc,CAAC,IAAK,MAAO,SAAUrN,EAAO2I,GACxCA,EAAM+E,IAAShD,EAAM1K,GAAS,IAGlCqN,GAAc,CAAC,MAAO,QAAS,SAAUrN,EAAO2I,EAAOpD,EAAQ4C,GAC3D,IAAIgD,EAAQ5F,EAAOF,QAAQoJ,YAAYzO,EAAOmI,EAAO5C,EAAOzB,SAE/C,MAATqH,EACAxC,EAAM+E,IAASvC,EAEfjJ,EAAgBqD,GAAQ3C,aAAe5C,IAM/C,IAAI0O,GAAsB,wFAAwFC,MAC1G,KAEJC,GAA2B,kDAAkDD,MACzE,KAEJE,GAAmB,gCACnBC,GAA0BxC,GAC1ByC,GAAqBzC,GAoIzB,SAAS0C,GAASlG,EAAK+B,GACnB,IAAIoE,EAEJ,IAAKnG,EAAIzF,UAEL,OAAOyF,EAGX,GAAqB,iBAAV+B,EACP,GAAI,QAAQxB,KAAKwB,GACbA,EAAQH,EAAMG,QAId,IAAK5J,EAFL4J,EAAQ/B,EAAIN,aAAaiG,YAAY5D,IAGjC,OAAO/B,EAOnB,OAFAmG,EAAazH,KAAK0H,IAAIpG,EAAIsC,OAAQC,GAAYvC,EAAIwB,OAAQO,IAC1D/B,EAAInF,GAAG,OAASmF,EAAI3D,OAAS,MAAQ,IAAM,SAAS0F,EAAOoE,GACpDnG,EAGX,SAASqG,GAAYtE,GACjB,OAAa,MAATA,GACAmE,GAASvP,KAAMoL,GACfjL,EAAM4F,aAAa/F,MAAM,GAClBA,MAEAyL,EAAIzL,KAAM,SAgDzB,SAAS2P,KACL,SAASC,EAAU7O,EAAGC,GAClB,OAAOA,EAAEK,OAASN,EAAEM,OAQxB,IALA,IAIIgI,EAJAwG,EAAc,GACdC,EAAa,GACbC,EAAc,GAGbhO,EAAI,EAAGA,EAAI,GAAIA,IAEhBsH,EAAMlH,EAAU,CAAC,IAAMJ,IACvB8N,EAAY7N,KAAKhC,KAAK4O,YAAYvF,EAAK,KACvCyG,EAAW9N,KAAKhC,KAAK6O,OAAOxF,EAAK,KACjC0G,EAAY/N,KAAKhC,KAAK6O,OAAOxF,EAAK,KAClC0G,EAAY/N,KAAKhC,KAAK4O,YAAYvF,EAAK,KAO3C,IAHAwG,EAAYG,KAAKJ,GACjBE,EAAWE,KAAKJ,GAChBG,EAAYC,KAAKJ,GACZ7N,EAAI,EAAGA,EAAI,GAAIA,IAChB8N,EAAY9N,GAAKqL,GAAYyC,EAAY9N,IACzC+N,EAAW/N,GAAKqL,GAAY0C,EAAW/N,IAE3C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChBgO,EAAYhO,GAAKqL,GAAY2C,EAAYhO,IAG7C/B,KAAKiQ,aAAe,IAAI9C,OAAO,KAAO4C,EAAYnJ,KAAK,KAAO,IAAK,KACnE5G,KAAKkQ,kBAAoBlQ,KAAKiQ,aAC9BjQ,KAAKmQ,mBAAqB,IAAIhD,OAC1B,KAAO2C,EAAWlJ,KAAK,KAAO,IAC9B,KAEJ5G,KAAKoQ,wBAA0B,IAAIjD,OAC/B,KAAO0C,EAAYjJ,KAAK,KAAO,IAC/B,KAiDR,SAASyJ,GAAWxF,GAChB,OAAOD,EAAWC,GAAQ,IAAM,IA5CpCpC,EAAe,IAAK,EAAG,EAAG,WACtB,IAAI6H,EAAItQ,KAAK6K,OACb,OAAOyF,GAAK,KAAO5I,EAAS4I,EAAG,GAAK,IAAMA,IAG9C7H,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOzI,KAAK6K,OAAS,MAGzBpC,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1CqB,EAAa,OAAQ,KAIrBY,EAAgB,OAAQ,GAIxBoC,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,GACjCa,GAAc,QAASN,GAAWN,IAClCY,GAAc,SAAUN,GAAWN,IAEnC0B,GAAc,CAAC,QAAS,UAAWI,IACnCJ,GAAc,OAAQ,SAAUrN,EAAO2I,GACnCA,EAAM8E,IACe,IAAjBzN,EAAMc,OAAelB,EAAMoQ,kBAAkBhQ,GAAS0K,EAAM1K,KAEpEqN,GAAc,KAAM,SAAUrN,EAAO2I,GACjCA,EAAM8E,IAAQ7N,EAAMoQ,kBAAkBhQ,KAE1CqN,GAAc,IAAK,SAAUrN,EAAO2I,GAChCA,EAAM8E,IAAQwC,SAASjQ,EAAO,MAWlCJ,EAAMoQ,kBAAoB,SAAUhQ,GAChC,OAAO0K,EAAM1K,IAAyB,GAAf0K,EAAM1K,GAAc,KAAO,MAKtD,IAAIkQ,GAAanF,EAAW,YAAY,GAwBxC,SAASoF,GAAcJ,GACnB,IAAI3E,EAAMjF,EAcV,OAZI4J,EAAI,KAAY,GAALA,IACX5J,EAAOlG,MAAME,UAAUiG,MAAM/F,KAAKP,YAE7B,GAAKiQ,EAAI,IACd3E,EAAO,IAAIjK,KAAKA,KAAKiP,IAAIvQ,MAAM,KAAMsG,IACjC2E,SAASM,EAAKiF,mBACdjF,EAAKkF,eAAeP,IAGxB3E,EAAO,IAAIjK,KAAKA,KAAKiP,IAAIvQ,MAAM,KAAMC,YAGlCsL,EAIX,SAASmF,GAAgBjG,EAAMkG,EAAKC,GAChC,IACIC,EAAM,EAAIF,EAAMC,EAIpB,OAAgBC,GAFH,EAAIP,GAAc7F,EAAM,EAAGoG,GAAKC,YAAcH,GAAO,EAE5C,EAI1B,SAASI,GAAmBtG,EAAMuG,EAAMC,EAASN,EAAKC,GAClD,IAGIM,EADAC,EAAY,EAAI,GAAKH,EAAO,IAFZ,EAAIC,EAAUN,GAAO,EACxBD,GAAgBjG,EAAMkG,EAAKC,GAOxCQ,EAFAD,GAAa,EAEElB,GADfiB,EAAUzG,EAAO,GACoB0G,EAC9BA,EAAYlB,GAAWxF,IAC9ByG,EAAUzG,EAAO,EACF0G,EAAYlB,GAAWxF,KAEtCyG,EAAUzG,EACK0G,GAGnB,MAAO,CACH1G,KAAMyG,EACNC,UAAWC,GAInB,SAASC,GAAWpI,EAAK0H,EAAKC,GAC1B,IAEIU,EACAJ,EAHAK,EAAab,GAAgBzH,EAAIwB,OAAQkG,EAAKC,GAC9CI,EAAOrJ,KAAKiD,OAAO3B,EAAIkI,YAAcI,EAAa,GAAK,GAAK,EAehE,OAXIP,EAAO,EAEPM,EAAUN,EAAOQ,GADjBN,EAAUjI,EAAIwB,OAAS,EACekG,EAAKC,GACpCI,EAAOQ,GAAYvI,EAAIwB,OAAQkG,EAAKC,IAC3CU,EAAUN,EAAOQ,GAAYvI,EAAIwB,OAAQkG,EAAKC,GAC9CM,EAAUjI,EAAIwB,OAAS,IAEvByG,EAAUjI,EAAIwB,OACd6G,EAAUN,GAGP,CACHA,KAAMM,EACN7G,KAAMyG,GAId,SAASM,GAAY/G,EAAMkG,EAAKC,GAC5B,IAAIW,EAAab,GAAgBjG,EAAMkG,EAAKC,GACxCa,EAAiBf,GAAgBjG,EAAO,EAAGkG,EAAKC,GACpD,OAAQX,GAAWxF,GAAQ8G,EAAaE,GAAkB,EAK9DpJ,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCqB,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAIxBY,EAAgB,OAAQ,GACxBA,EAAgB,UAAW,GAI3BoC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAE/B8B,GAAkB,CAAC,IAAK,KAAM,IAAK,MAAO,SACtCtN,EACA6Q,EACAtL,EACA4C,GAEA0I,EAAK1I,EAAMN,OAAO,EAAG,IAAM6C,EAAM1K,KA0HrC,SAASuR,GAAcC,EAAIC,GACvB,OAAOD,EAAGpL,MAAMqL,EAAG,GAAGC,OAAOF,EAAGpL,MAAM,EAAGqL,IArF7CvJ,EAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,EAAG,SAAUrG,GACjC,OAAOpC,KAAK+I,aAAamJ,YAAYlS,KAAMoC,KAG/CqG,EAAe,MAAO,EAAG,EAAG,SAAUrG,GAClC,OAAOpC,KAAK+I,aAAaoJ,cAAcnS,KAAMoC,KAGjDqG,EAAe,OAAQ,EAAG,EAAG,SAAUrG,GACnC,OAAOpC,KAAK+I,aAAaqJ,SAASpS,KAAMoC,KAG5CqG,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BqB,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAG3BY,EAAgB,MAAO,IACvBA,EAAgB,UAAW,IAC3BA,EAAgB,aAAc,IAI9BoC,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,KAAM,SAAUG,EAAU5K,GACpC,OAAOA,EAAOgQ,iBAAiBpF,KAEnCH,GAAc,MAAO,SAAUG,EAAU5K,GACrC,OAAOA,EAAOiQ,mBAAmBrF,KAErCH,GAAc,OAAQ,SAAUG,EAAU5K,GACtC,OAAOA,EAAOkQ,cAActF,KAGhCY,GAAkB,CAAC,KAAM,MAAO,QAAS,SAAUtN,EAAO6Q,EAAMtL,EAAQ4C,GACpE,IAAI2I,EAAUvL,EAAOF,QAAQ4M,cAAcjS,EAAOmI,EAAO5C,EAAOzB,SAEjD,MAAXgN,EACAD,EAAKqB,EAAIpB,EAET5O,EAAgBqD,GAAQ1B,eAAiB7D,IAIjDsN,GAAkB,CAAC,IAAK,IAAK,KAAM,SAAUtN,EAAO6Q,EAAMtL,EAAQ4C,GAC9D0I,EAAK1I,GAASuC,EAAM1K,KAkCxB,IAAImS,GAAwB,2DAA2DxD,MAC/E,KAEJyD,GAA6B,8BAA8BzD,MAAM,KACjE0D,GAA2B,uBAAuB1D,MAAM,KACxD2D,GAAuBhG,GACvBiG,GAA4BjG,GAC5BkG,GAA0BlG,GAiR9B,SAASmG,KACL,SAASpD,EAAU7O,EAAGC,GAClB,OAAOA,EAAEK,OAASN,EAAEM,OAYxB,IATA,IAKIgI,EACA4J,EACAC,EACAC,EARAC,EAAY,GACZvD,EAAc,GACdC,EAAa,GACbC,EAAc,GAMbhO,EAAI,EAAGA,EAAI,EAAGA,IAEfsH,EAAMlH,EAAU,CAAC,IAAM,IAAIkR,IAAItR,GAC/BkR,EAAO7F,GAAYpN,KAAKkS,YAAY7I,EAAK,KACzC6J,EAAS9F,GAAYpN,KAAKmS,cAAc9I,EAAK,KAC7C8J,EAAQ/F,GAAYpN,KAAKoS,SAAS/I,EAAK,KACvC+J,EAAUpR,KAAKiR,GACfpD,EAAY7N,KAAKkR,GACjBpD,EAAW9N,KAAKmR,GAChBpD,EAAY/N,KAAKiR,GACjBlD,EAAY/N,KAAKkR,GACjBnD,EAAY/N,KAAKmR,GAIrBC,EAAUpD,KAAKJ,GACfC,EAAYG,KAAKJ,GACjBE,EAAWE,KAAKJ,GAChBG,EAAYC,KAAKJ,GAEjB5P,KAAKsT,eAAiB,IAAInG,OAAO,KAAO4C,EAAYnJ,KAAK,KAAO,IAAK,KACrE5G,KAAKuT,oBAAsBvT,KAAKsT,eAChCtT,KAAKwT,kBAAoBxT,KAAKsT,eAE9BtT,KAAKyT,qBAAuB,IAAItG,OAC5B,KAAO2C,EAAWlJ,KAAK,KAAO,IAC9B,KAEJ5G,KAAK0T,0BAA4B,IAAIvG,OACjC,KAAO0C,EAAYjJ,KAAK,KAAO,IAC/B,KAEJ5G,KAAK2T,wBAA0B,IAAIxG,OAC/B,KAAOiG,EAAUxM,KAAK,KAAO,IAC7B,KAMR,SAASgN,KACL,OAAO5T,KAAK6T,QAAU,IAAM,GAqChC,SAASpQ,GAASiF,EAAOoL,GACrBrL,EAAeC,EAAO,EAAG,EAAG,WACxB,OAAO1I,KAAK+I,aAAatF,SACrBzD,KAAK6T,QACL7T,KAAK+T,UACLD,KAiBZ,SAASE,GAAc/G,EAAU5K,GAC7B,OAAOA,EAAO4R,eArDlBxL,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGmL,IAClCnL,EAAe,IAAK,CAAC,KAAM,GAAI,EAN/B,WACI,OAAOzI,KAAK6T,SAAW,KAO3BpL,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKmL,GAAQxT,MAAMJ,MAAQ0H,EAAS1H,KAAK+T,UAAW,KAG/DtL,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACAmL,GAAQxT,MAAMJ,MACd0H,EAAS1H,KAAK+T,UAAW,GACzBrM,EAAS1H,KAAKkU,UAAW,KAIjCzL,EAAe,MAAO,EAAG,EAAG,WACxB,MAAO,GAAKzI,KAAK6T,QAAUnM,EAAS1H,KAAK+T,UAAW,KAGxDtL,EAAe,QAAS,EAAG,EAAG,WAC1B,MACI,GACAzI,KAAK6T,QACLnM,EAAS1H,KAAK+T,UAAW,GACzBrM,EAAS1H,KAAKkU,UAAW,KAcjCzQ,GAAS,KAAK,GACdA,GAAS,KAAK,GAIdqG,EAAa,OAAQ,KAGrBY,EAAgB,OAAQ,IAQxBoC,GAAc,IAAKkH,IACnBlH,GAAc,IAAKkH,IACnBlH,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAE/Be,GAAc,MAAOV,IACrBU,GAAc,QAAST,IACvBS,GAAc,MAAOV,IACrBU,GAAc,QAAST,IAEvBuB,GAAc,CAAC,IAAK,MAAOO,IAC3BP,GAAc,CAAC,IAAK,MAAO,SAAUrN,EAAO2I,EAAOpD,GAC/C,IAAIqO,EAASlJ,EAAM1K,GACnB2I,EAAMiF,IAAmB,KAAXgG,EAAgB,EAAIA,IAEtCvG,GAAc,CAAC,IAAK,KAAM,SAAUrN,EAAO2I,EAAOpD,GAC9CA,EAAOsO,MAAQtO,EAAOF,QAAQyO,KAAK9T,GACnCuF,EAAOwO,UAAY/T,IAEvBqN,GAAc,CAAC,IAAK,MAAO,SAAUrN,EAAO2I,EAAOpD,GAC/CoD,EAAMiF,IAAQlD,EAAM1K,GACpBkC,EAAgBqD,GAAQvB,SAAU,IAEtCqJ,GAAc,MAAO,SAAUrN,EAAO2I,EAAOpD,GACzC,IAAIyO,EAAMhU,EAAMc,OAAS,EACzB6H,EAAMiF,IAAQlD,EAAM1K,EAAM6H,OAAO,EAAGmM,IACpCrL,EAAMkF,IAAUnD,EAAM1K,EAAM6H,OAAOmM,IACnC9R,EAAgBqD,GAAQvB,SAAU,IAEtCqJ,GAAc,QAAS,SAAUrN,EAAO2I,EAAOpD,GAC3C,IAAI0O,EAAOjU,EAAMc,OAAS,EACtBoT,EAAOlU,EAAMc,OAAS,EAC1B6H,EAAMiF,IAAQlD,EAAM1K,EAAM6H,OAAO,EAAGoM,IACpCtL,EAAMkF,IAAUnD,EAAM1K,EAAM6H,OAAOoM,EAAM,IACzCtL,EAAMmF,IAAUpD,EAAM1K,EAAM6H,OAAOqM,IACnChS,EAAgBqD,GAAQvB,SAAU,IAEtCqJ,GAAc,MAAO,SAAUrN,EAAO2I,EAAOpD,GACzC,IAAIyO,EAAMhU,EAAMc,OAAS,EACzB6H,EAAMiF,IAAQlD,EAAM1K,EAAM6H,OAAO,EAAGmM,IACpCrL,EAAMkF,IAAUnD,EAAM1K,EAAM6H,OAAOmM,MAEvC3G,GAAc,QAAS,SAAUrN,EAAO2I,EAAOpD,GAC3C,IAAI0O,EAAOjU,EAAMc,OAAS,EACtBoT,EAAOlU,EAAMc,OAAS,EAC1B6H,EAAMiF,IAAQlD,EAAM1K,EAAM6H,OAAO,EAAGoM,IACpCtL,EAAMkF,IAAUnD,EAAM1K,EAAM6H,OAAOoM,EAAM,IACzCtL,EAAMmF,IAAUpD,EAAM1K,EAAM6H,OAAOqM,MAWvC,IAKIC,GAAapJ,EAAW,SAAS,GAUrC,IAuBIqJ,GAvBAC,GAAa,CACbC,SA7iDkB,CAClBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAwiDVzL,eAl7CwB,CACxB0L,IAAK,YACLC,GAAI,SACJC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BA66CNjM,YAh5CqB,eAi5CrBZ,QA34CiB,KA44CjB8M,uBA34CgC,UA44ChCC,aAt4CsB,CACtBC,OAAQ,QACRC,KAAM,SACNnI,EAAG,gBACHoI,GAAI,aACJpT,EAAG,WACHqT,GAAI,aACJC,EAAG,UACHC,GAAI,WACJxD,EAAG,QACHyD,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YACJhG,EAAG,SACHiG,GAAI,YAw3CJ1H,OAAQI,GACRL,YAAaO,GAEbiC,KAzlBoB,CACpBL,IAAK,EACLC,IAAK,GAylBLoB,SAAUM,GACVR,YAAaU,GACbT,cAAeQ,GAEf6D,cAhC6B,iBAoC7BC,GAAU,GACVC,GAAiB,GAcrB,SAASC,GAAgBlQ,GACrB,OAAOA,EAAMA,EAAIyD,cAAcd,QAAQ,IAAK,KAAO3C,EAMvD,SAASmQ,GAAaC,GAOlB,IANA,IACIC,EACAC,EACA1U,EACA6M,EAJAnN,EAAI,EAMDA,EAAI8U,EAAMxV,QAAQ,CAKrB,IAHAyV,GADA5H,EAAQyH,GAAgBE,EAAM9U,IAAImN,MAAM,MAC9B7N,OAEV0V,GADAA,EAAOJ,GAAgBE,EAAM9U,EAAI,KACnBgV,EAAK7H,MAAM,KAAO,KACrB,EAAJ4H,GAAO,CAEV,GADAzU,EAAS2U,GAAW9H,EAAMvI,MAAM,EAAGmQ,GAAGlQ,KAAK,MAEvC,OAAOvE,EAEX,GACI0U,GACAA,EAAK1V,QAAUyV,GArC/B,SAAsBG,EAAMC,GAGxB,IAFA,IACIC,EAAOpP,KAAK0H,IAAIwH,EAAK5V,OAAQ6V,EAAK7V,QACjCU,EAAI,EAAGA,EAAIoV,EAAMpV,GAAK,EACvB,GAAIkV,EAAKlV,KAAOmV,EAAKnV,GACjB,OAAOA,EAGf,OAAOoV,EA8BKC,CAAalI,EAAO6H,IAASD,EAAI,EAGjC,MAEJA,IAEJ/U,IAEJ,OAAO4S,GAGX,SAASqC,GAAW9P,GAChB,IAAImQ,EAGJ,QACsB/S,IAAlBmS,GAAQvP,IACU,oBAAXtH,QACPA,QACAA,OAAOD,QAEP,IACI0X,EAAY1C,GAAa2C,MACRC,QACF,YAAcrQ,GAC7BsQ,GAAmBH,GACrB,MAAOI,GAGLhB,GAAQvP,GAAQ,KAGxB,OAAOuP,GAAQvP,GAMnB,SAASsQ,GAAmB/Q,EAAKiR,GAC7B,IAAIC,EAqBJ,OApBIlR,KAEIkR,EADApW,EAAYmW,GACLE,GAAUnR,GAEVoR,GAAapR,EAAKiR,IAKzB/C,GAAegD,EAEQ,oBAAZvR,SAA2BA,QAAQH,MAE1CG,QAAQH,KACJ,UAAYQ,EAAM,2CAM3BkO,GAAa2C,MAGxB,SAASO,GAAa3Q,EAAMpB,GACxB,GAAe,OAAXA,EAiDA,cADO2Q,GAAQvP,GACR,KAhDP,IAAI7E,EACAiF,EAAesN,GAEnB,GADA9O,EAAOgS,KAAO5Q,EACO,MAAjBuP,GAAQvP,GACRD,EACI,uBACA,2OAKJK,EAAemP,GAAQvP,GAAM6Q,aAC1B,GAA2B,MAAvBjS,EAAOkS,aACd,GAAoC,MAAhCvB,GAAQ3Q,EAAOkS,cACf1Q,EAAemP,GAAQ3Q,EAAOkS,cAAcD,YACzC,CAEH,GAAc,OADd1V,EAAS2U,GAAWlR,EAAOkS,eAWvB,OAPKtB,GAAe5Q,EAAOkS,gBACvBtB,GAAe5Q,EAAOkS,cAAgB,IAE1CtB,GAAe5Q,EAAOkS,cAAchW,KAAK,CACrCkF,KAAMA,EACNpB,OAAQA,IAEL,KATPwB,EAAejF,EAAO0V,QA0BlC,OAbAtB,GAAQvP,GAAQ,IAAIM,EAAOH,EAAaC,EAAcxB,IAElD4Q,GAAexP,IACfwP,GAAexP,GAAM+Q,QAAQ,SAAUxJ,GACnCoJ,GAAapJ,EAAEvH,KAAMuH,EAAE3I,UAO/B0R,GAAmBtQ,GAEZuP,GAAQvP,GAsDvB,SAAS0Q,GAAUnR,GACf,IAAIpE,EAMJ,GAJIoE,GAAOA,EAAIb,SAAWa,EAAIb,QAAQ0R,QAClC7Q,EAAMA,EAAIb,QAAQ0R,QAGjB7Q,EACD,OAAOkO,GAGX,IAAKrU,EAAQmG,GAAM,CAGf,GADApE,EAAS2U,GAAWvQ,GAEhB,OAAOpE,EAEXoE,EAAM,CAACA,GAGX,OAAOmQ,GAAanQ,GAOxB,SAASyR,GAAcxV,GACnB,IAAIK,EACAhC,EAAI2B,EAAEyV,GAuCV,OArCIpX,IAAsC,IAAjC0B,EAAgBC,GAAGK,WACxBA,EACIhC,EAAEkN,IAAS,GAAgB,GAAXlN,EAAEkN,IACZA,GACAlN,EAAEmN,IAAQ,GAAKnN,EAAEmN,IAAQtC,GAAY7K,EAAEiN,IAAOjN,EAAEkN,KAChDC,GACAnN,EAAEoN,IAAQ,GACA,GAAVpN,EAAEoN,KACW,KAAZpN,EAAEoN,MACgB,IAAdpN,EAAEqN,KACe,IAAdrN,EAAEsN,KACiB,IAAnBtN,EAAEuN,KACVH,GACApN,EAAEqN,IAAU,GAAiB,GAAZrN,EAAEqN,IACnBA,GACArN,EAAEsN,IAAU,GAAiB,GAAZtN,EAAEsN,IACnBA,GACAtN,EAAEuN,IAAe,GAAsB,IAAjBvN,EAAEuN,IACxBA,IACC,EAGP7L,EAAgBC,GAAG0V,qBAClBrV,EAAWiL,IAAmBE,GAAXnL,KAEpBA,EAAWmL,IAEXzL,EAAgBC,GAAG2V,iBAAgC,IAAdtV,IACrCA,EAAWwL,IAEX9L,EAAgBC,GAAG4V,mBAAkC,IAAdvV,IACvCA,EAAWyL,IAGf/L,EAAgBC,GAAGK,SAAWA,GAG3BL,EAKX,IAAI6V,GAAmB,iJACnBC,GAAgB,6IAChBC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElBlV,GAAU,0LACVmV,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAc1T,GACnB,IAAI/D,EACA0X,EAGAC,EACAC,EACAC,EACAC,EALAC,EAAShU,EAAOR,GAChB6D,EAAQoP,GAAiBwB,KAAKD,IAAWtB,GAAcuB,KAAKD,GAMhE,GAAI3Q,EAAO,CAGP,IAFA1G,EAAgBqD,GAAQxC,KAAM,EAEzBvB,EAAI,EAAG0X,EAAIf,GAASrX,OAAQU,EAAI0X,EAAG1X,IACpC,GAAI2W,GAAS3W,GAAG,GAAGgY,KAAK5Q,EAAM,IAAK,CAC/BwQ,EAAajB,GAAS3W,GAAG,GACzB2X,GAA+B,IAAnBhB,GAAS3W,GAAG,GACxB,MAGR,GAAkB,MAAd4X,EAEA,YADA7T,EAAOjC,UAAW,GAGtB,GAAIsF,EAAM,GAAI,CACV,IAAKpH,EAAI,EAAG0X,EAAId,GAAStX,OAAQU,EAAI0X,EAAG1X,IACpC,GAAI4W,GAAS5W,GAAG,GAAGgY,KAAK5Q,EAAM,IAAK,CAE/ByQ,GAAczQ,EAAM,IAAM,KAAOwP,GAAS5W,GAAG,GAC7C,MAGR,GAAkB,MAAd6X,EAEA,YADA9T,EAAOjC,UAAW,GAI1B,IAAK6V,GAA2B,MAAdE,EAEd,YADA9T,EAAOjC,UAAW,GAGtB,GAAIsF,EAAM,GAAI,CACV,IAAIsP,GAAQsB,KAAK5Q,EAAM,IAInB,YADArD,EAAOjC,UAAW,GAFlBgW,EAAW,IAMnB/T,EAAOP,GAAKoU,GAAcC,GAAc,KAAOC,GAAY,IAC3DG,GAA0BlU,QAE1BA,EAAOjC,UAAW,EAI1B,SAASoW,GACLC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,IAAIC,EAAS,CAejB,SAAwBN,GACpB,IAAIrP,EAAO2F,SAAS0J,EAAS,IAC7B,CAAA,GAAIrP,GAAQ,GACR,OAAO,IAAOA,EACX,GAAIA,GAAQ,IACf,OAAO,KAAOA,EAElB,OAAOA,EArBH4P,CAAeP,GACf/K,GAAyBpB,QAAQoM,GACjC3J,SAAS4J,EAAQ,IACjB5J,SAAS6J,EAAS,IAClB7J,SAAS8J,EAAW,KAOxB,OAJIC,GACAC,EAAOxY,KAAKwO,SAAS+J,EAAW,KAG7BC,EAuDX,SAASE,GAAkB5U,GACvB,IACI6U,EAnCcC,EAAYC,EAAa/U,EAkCvCqD,EAAQzF,GAAQqW,KAAuBjU,EAAOR,GAxC7C8D,QAAQ,oBAAqB,KAC7BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,KAuCvB,GAAID,EAAO,CASP,GARAwR,EAAcV,GACV9Q,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,IA3CIyR,EA6CIzR,EAAM,GA7CE0R,EA6CEF,EA7CW7U,EA6CEA,EA5CzC8U,GAEsBjI,GAA2B5E,QAAQ6M,KACrC,IAAIlZ,KAChBmZ,EAAY,GACZA,EAAY,GACZA,EAAY,IACdC,WAEFrY,EAAgBqD,GAAQnC,iBAAkB,QAC1CmC,EAAOjC,UAAW,IAmClB,OAGJiC,EAAOqS,GAAKwC,EACZ7U,EAAOL,KAhCf,SAAyBsV,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAOlC,GAAWkC,GACf,GAAIC,EAEP,OAAO,EAEP,IAAIE,EAAK1K,SAASyK,EAAW,IACzBvY,EAAIwY,EAAK,IAEb,OAAW,KADFA,EAAKxY,GAAK,KACHA,EAsBFyY,CAAgBhS,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExDrD,EAAO5B,GAAKwM,GAActQ,MAAM,KAAM0F,EAAOqS,IAC7CrS,EAAO5B,GAAGkX,cAActV,EAAO5B,GAAGmX,gBAAkBvV,EAAOL,MAE3DhD,EAAgBqD,GAAQpC,SAAU,OAElCoC,EAAOjC,UAAW,EA6C1B,SAASyX,GAASva,EAAGC,EAAGua,GACpB,OAAS,MAALxa,EACOA,EAEF,MAALC,EACOA,EAEJua,EAoBX,SAASC,GAAgB1V,GACrB,IAAI/D,EACA4J,EAEA8P,EACAC,EACAC,EAvBkB7V,EAElB8V,EAkBArb,EAAQ,GAKZ,IAAIuF,EAAO5B,GAAX,CAgCA,IAzDsB4B,EA6BSA,EA3B3B8V,EAAW,IAAIla,KAAKvB,EAAM0b,OA2B9BJ,EA1BI3V,EAAOgW,QACA,CACHF,EAAShL,iBACTgL,EAASG,cACTH,EAASI,cAGV,CAACJ,EAASK,cAAeL,EAASM,WAAYN,EAASO,WAsB1DrW,EAAOgI,IAAyB,MAAnBhI,EAAOqS,GAAGjK,KAAqC,MAApBpI,EAAOqS,GAAGlK,KA0E1D,SAA+BnI,GAC3B,IAAIqQ,EAAGiG,EAAUhL,EAAMC,EAASN,EAAKC,EAAKqL,EAAMC,EAAiBC,EAGrD,OADZpG,EAAIrQ,EAAOgI,IACL0O,IAAqB,MAAPrG,EAAEsG,GAAoB,MAAPtG,EAAEuG,GACjC3L,EAAM,EACNC,EAAM,EAMNoL,EAAWd,GACPnF,EAAEqG,GACF1W,EAAOqS,GAAGnK,IACVyD,GAAWkL,KAAe,EAAG,GAAG9R,MAEpCuG,EAAOkK,GAASnF,EAAEsG,EAAG,KACrBpL,EAAUiK,GAASnF,EAAEuG,EAAG,IACV,GAAe,EAAVrL,KACfiL,GAAkB,KAGtBvL,EAAMjL,EAAOF,QAAQgX,MAAM7L,IAC3BC,EAAMlL,EAAOF,QAAQgX,MAAM5L,IAE3BuL,EAAU9K,GAAWkL,KAAe5L,EAAKC,GAEzCoL,EAAWd,GAASnF,EAAE0G,GAAI/W,EAAOqS,GAAGnK,IAAOuO,EAAQ1R,MAGnDuG,EAAOkK,GAASnF,EAAEA,EAAGoG,EAAQnL,MAElB,MAAP+E,EAAE1D,IAEFpB,EAAU8E,EAAE1D,GACE,GAAe,EAAVpB,KACfiL,GAAkB,GAER,MAAPnG,EAAEsB,GAETpG,EAAU8E,EAAEsB,EAAI1G,GACZoF,EAAEsB,EAAI,GAAW,EAANtB,EAAEsB,KACb6E,GAAkB,IAItBjL,EAAUN,GAGdK,EAAO,GAAKA,EAAOQ,GAAYwK,EAAUrL,EAAKC,GAC9CvO,EAAgBqD,GAAQuS,gBAAiB,EACf,MAAnBiE,EACP7Z,EAAgBqD,GAAQwS,kBAAmB,GAE3C+D,EAAOlL,GAAmBiL,EAAUhL,EAAMC,EAASN,EAAKC,GACxDlL,EAAOqS,GAAGnK,IAAQqO,EAAKxR,KACvB/E,EAAOgX,WAAaT,EAAK9K,WAlIzBwL,CAAsBjX,GAID,MAArBA,EAAOgX,aACPnB,EAAYL,GAASxV,EAAOqS,GAAGnK,IAAOyN,EAAYzN,MAG9ClI,EAAOgX,WAAazM,GAAWsL,IACT,IAAtB7V,EAAOgX,cAEPra,EAAgBqD,GAAQsS,oBAAqB,GAGjDzM,EAAO+E,GAAciL,EAAW,EAAG7V,EAAOgX,YAC1ChX,EAAOqS,GAAGlK,IAAStC,EAAKoQ,cACxBjW,EAAOqS,GAAGjK,IAAQvC,EAAKqQ,cAQtBja,EAAI,EAAGA,EAAI,GAAqB,MAAhB+D,EAAOqS,GAAGpW,KAAcA,EACzC+D,EAAOqS,GAAGpW,GAAKxB,EAAMwB,GAAK0Z,EAAY1Z,GAI1C,KAAOA,EAAI,EAAGA,IACV+D,EAAOqS,GAAGpW,GAAKxB,EAAMwB,GACD,MAAhB+D,EAAOqS,GAAGpW,GAAoB,IAANA,EAAU,EAAI,EAAK+D,EAAOqS,GAAGpW,GAKrC,KAApB+D,EAAOqS,GAAGhK,KACY,IAAtBrI,EAAOqS,GAAG/J,KACY,IAAtBtI,EAAOqS,GAAG9J,KACiB,IAA3BvI,EAAOqS,GAAG7J,MAEVxI,EAAOkX,UAAW,EAClBlX,EAAOqS,GAAGhK,IAAQ,GAGtBrI,EAAO5B,IAAM4B,EAAOgW,QAAUpL,GAp1ClC,SAAoBJ,EAAG5N,EAAG+P,EAAGuD,EAAGK,EAAG3I,EAAGuP,GAGlC,IAAItR,EAYJ,OAVI2E,EAAI,KAAY,GAALA,GAEX3E,EAAO,IAAIjK,KAAK4O,EAAI,IAAK5N,EAAG+P,EAAGuD,EAAGK,EAAG3I,EAAGuP,GACpC5R,SAASM,EAAKsQ,gBACdtQ,EAAKuR,YAAY5M,IAGrB3E,EAAO,IAAIjK,KAAK4O,EAAG5N,EAAG+P,EAAGuD,EAAGK,EAAG3I,EAAGuP,GAG/BtR,IAq0CmDvL,MACtD,KACAG,GAEJmb,EAAkB5V,EAAOgW,QACnBhW,EAAO5B,GAAGgN,YACVpL,EAAO5B,GAAG4W,SAIG,MAAfhV,EAAOL,MACPK,EAAO5B,GAAGkX,cAActV,EAAO5B,GAAGmX,gBAAkBvV,EAAOL,MAG3DK,EAAOkX,WACPlX,EAAOqS,GAAGhK,IAAQ,IAKlBrI,EAAOgI,SACgB,IAAhBhI,EAAOgI,GAAG2E,GACjB3M,EAAOgI,GAAG2E,IAAMiJ,IAEhBjZ,EAAgBqD,GAAQnC,iBAAkB,IAwElD,SAASqW,GAA0BlU,GAE/B,GAAIA,EAAOP,KAAOpF,EAAMgd,SAIxB,GAAIrX,EAAOP,KAAOpF,EAAMid,SAAxB,CAIAtX,EAAOqS,GAAK,GACZ1V,EAAgBqD,GAAQlD,OAAQ,EAgBhC,IAbA,IAEIiY,EAEAnS,EACA2U,EAGA7Z,EAl3DyBkF,EAAOnI,EAAOuF,EA02DvCgU,EAAS,GAAKhU,EAAOR,GAMrBgY,EAAexD,EAAOzY,OACtBkc,EAAyB,EAG7B5P,EACI1E,EAAanD,EAAOP,GAAIO,EAAOF,SAASuD,MAAMd,IAAqB,GAElEtG,EAAI,EAAGA,EAAI4L,EAAOtM,OAAQU,IAC3B2G,EAAQiF,EAAO5L,IACf8Y,GAAef,EAAO3Q,MAAM+D,GAAsBxE,EAAO5C,KACrD,IAAI,MAGiB,GADrBuX,EAAUvD,EAAO1R,OAAO,EAAG0R,EAAO/L,QAAQ8M,KAC9BxZ,QACRoB,EAAgBqD,GAAQhD,YAAYd,KAAKqb,GAE7CvD,EAASA,EAAOnT,MACZmT,EAAO/L,QAAQ8M,GAAeA,EAAYxZ,QAE9Ckc,GAA0B1C,EAAYxZ,QAGtCmH,EAAqBE,IACjBmS,EACApY,EAAgBqD,GAAQlD,OAAQ,EAEhCH,EAAgBqD,GAAQjD,aAAab,KAAK0G,GA14DzBA,EA44DGA,EA54DW5C,EA44DSA,EA34DvC,OADuBvF,EA44DGsa,IA34DlB/Z,EAAW6M,GAAQjF,IACpCiF,GAAOjF,GAAOnI,EAAOuF,EAAOqS,GAAIrS,EAAQ4C,IA24D7B5C,EAAOzB,UAAYwW,GAC1BpY,EAAgBqD,GAAQjD,aAAab,KAAK0G,GAKlDjG,EAAgBqD,GAAQ9C,cACpBsa,EAAeC,EACC,EAAhBzD,EAAOzY,QACPoB,EAAgBqD,GAAQhD,YAAYd,KAAK8X,GAKzChU,EAAOqS,GAAGhK,KAAS,KACiB,IAApC1L,EAAgBqD,GAAQvB,SACN,EAAlBuB,EAAOqS,GAAGhK,MAEV1L,EAAgBqD,GAAQvB,aAAUD,GAGtC7B,EAAgBqD,GAAQvC,gBAAkBuC,EAAOqS,GAAGxR,MAAM,GAC1DlE,EAAgBqD,GAAQrC,SAAWqC,EAAOwO,UAE1CxO,EAAOqS,GAAGhK,IAgBd,SAAyB9L,EAAQmb,EAAM/Z,GACnC,IAAIga,EAEJ,GAAgB,MAAZha,EAEA,OAAO+Z,EAEX,OAA2B,MAAvBnb,EAAOqb,aACArb,EAAOqb,aAAaF,EAAM/Z,IACX,MAAfpB,EAAOgS,QAEdoJ,EAAOpb,EAAOgS,KAAK5Q,KACP+Z,EAAO,KACfA,GAAQ,IAEPC,GAAiB,KAATD,IACTA,EAAO,IAEJA,GAlCOG,CACd7X,EAAOF,QACPE,EAAOqS,GAAGhK,IACVrI,EAAOwO,WAKC,QADZ9Q,EAAMf,EAAgBqD,GAAQtC,OAE1BsC,EAAOqS,GAAGnK,IAAQlI,EAAOF,QAAQgY,gBAAgBpa,EAAKsC,EAAOqS,GAAGnK,MAGpEwN,GAAgB1V,GAChBoS,GAAcpS,QA/EV4U,GAAkB5U,QAJlB0T,GAAc1T,GAwMtB,SAAS+X,GAAc/X,GACnB,IAgCqBA,EACjBvF,EAjCAA,EAAQuF,EAAOR,GACflD,EAAS0D,EAAOP,GAIpB,OAFAO,EAAOF,QAAUE,EAAOF,SAAWgS,GAAU9R,EAAON,IAEtC,OAAVjF,QAA8B+D,IAAXlC,GAAkC,KAAV7B,EACpCkE,EAAc,CAAExB,WAAW,KAGjB,iBAAV1C,IACPuF,EAAOR,GAAK/E,EAAQuF,EAAOF,QAAQkY,SAASvd,IAG5CyF,EAASzF,GACF,IAAIsF,EAAOqS,GAAc3X,KACzBkB,EAAOlB,GACduF,EAAO5B,GAAK3D,EACLD,EAAQ8B,GA1GvB,SAAkC0D,GAC9B,IAAIiY,EACAC,EACAC,EACAlc,EACAmc,EACAC,EACAC,GAAoB,EAExB,GAAyB,IAArBtY,EAAOP,GAAGlE,OAGV,OAFAoB,EAAgBqD,GAAQ1C,eAAgB,EACxC0C,EAAO5B,GAAK,IAAIxC,KAAKgD,KAIzB,IAAK3C,EAAI,EAAGA,EAAI+D,EAAOP,GAAGlE,OAAQU,IAC9Bmc,EAAe,EACfC,GAAmB,EACnBJ,EAAa/Y,EAAW,GAAIc,GACN,MAAlBA,EAAOgW,UACPiC,EAAWjC,QAAUhW,EAAOgW,SAEhCiC,EAAWxY,GAAKO,EAAOP,GAAGxD,GAC1BiY,GAA0B+D,GAEtBna,EAAQma,KACRI,GAAmB,GAIvBD,GAAgBzb,EAAgBsb,GAAY/a,cAG5Ckb,GAAkE,GAAlDzb,EAAgBsb,GAAYlb,aAAaxB,OAEzDoB,EAAgBsb,GAAYM,MAAQH,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,IACAC,GAAoB,IAWpCnc,EAAO6D,EAAQkY,GAAcD,GAkDzBO,CAAyBxY,GAClB1D,EACP4X,GAA0BlU,GAc1BvE,EADAhB,GADiBuF,EAVDA,GAWDR,IAEfQ,EAAO5B,GAAK,IAAIxC,KAAKvB,EAAM0b,OACpBpa,EAAOlB,GACduF,EAAO5B,GAAK,IAAIxC,KAAKnB,EAAM2B,WACH,iBAAV3B,EAldtB,SAA0BuF,GACtB,IAAIuH,EAAUuL,GAAgBmB,KAAKjU,EAAOR,IAC1B,OAAZ+H,GAKJmM,GAAc1T,IACU,IAApBA,EAAOjC,kBACAiC,EAAOjC,SAKlB6W,GAAkB5U,IACM,IAApBA,EAAOjC,kBACAiC,EAAOjC,SAKdiC,EAAOzB,QACPyB,EAAOjC,UAAW,EAGlB1D,EAAMoe,wBAAwBzY,MAtB9BA,EAAO5B,GAAK,IAAIxC,MAAM2L,EAAQ,IAgd9BmR,CAAiB1Y,GACVxF,EAAQC,IACfuF,EAAOqS,GAAKxW,EAAIpB,EAAMoG,MAAM,GAAI,SAAUxF,GACtC,OAAOqP,SAASrP,EAAK,MAEzBqa,GAAgB1V,IACTjF,EAASN,GA1ExB,SAA0BuF,GACtB,IAII/D,EACA0c,EALA3Y,EAAO5B,KAKPua,OAAsBna,KADtBvC,EAAIsI,EAAqBvE,EAAOR,KAClB+N,IAAoBtR,EAAE4J,KAAO5J,EAAEsR,IACjDvN,EAAOqS,GAAKxW,EACR,CAACI,EAAE8I,KAAM9I,EAAE2J,MAAO+S,EAAW1c,EAAEyb,KAAMzb,EAAE2c,OAAQ3c,EAAE4c,OAAQ5c,EAAE6c,aAC3D,SAAUzd,GACN,OAAOA,GAAOqP,SAASrP,EAAK,MAIpCqa,GAAgB1V,IA6DZ+Y,CAAiB/Y,GACVtE,EAASjB,GAEhBuF,EAAO5B,GAAK,IAAIxC,KAAKnB,GAErBJ,EAAMoe,wBAAwBzY,GA1B7BlC,EAAQkC,KACTA,EAAO5B,GAAK,MAGT4B,IA0BX,SAASvD,GAAiBhC,EAAO6B,EAAQC,EAAQC,EAAQwc,GACrD,IAnEIhd,EAmEAyZ,EAAI,GA2BR,OAzBe,IAAXnZ,IAA8B,IAAXA,IACnBE,EAASF,EACTA,OAASkC,IAGE,IAAXjC,IAA8B,IAAXA,IACnBC,EAASD,EACTA,OAASiC,IAIRzD,EAASN,IAAUW,EAAcX,IACjCD,EAAQC,IAA2B,IAAjBA,EAAMc,UAEzBd,OAAQ+D,GAIZiX,EAAElW,kBAAmB,EACrBkW,EAAEO,QAAUP,EAAE7V,OAASoZ,EACvBvD,EAAE/V,GAAKnD,EACPkZ,EAAEjW,GAAK/E,EACPgb,EAAEhW,GAAKnD,EACPmZ,EAAElX,QAAU/B,GA5FRR,EAAM,IAAI+D,EAAOqS,GAAc2F,GA8FXtC,MA7FhByB,WAEJlb,EAAIid,IAAI,EAAG,KACXjd,EAAIkb,cAAW1Y,GAGZxC,EA0FX,SAAS6a,GAAYpc,EAAO6B,EAAQC,EAAQC,GACxC,OAAOC,GAAiBhC,EAAO6B,EAAQC,EAAQC,GAAQ,GAte3DnC,EAAMoe,wBAA0BlY,EAC5B,iVAIA,SAAUP,GACNA,EAAO5B,GAAK,IAAIxC,KAAKoE,EAAOR,IAAMQ,EAAOgW,QAAU,OAAS,OAuLpE3b,EAAMgd,SAAW,aAGjBhd,EAAMid,SAAW,aAySjB,IAAI4B,GAAe3Y,EACX,qGACA,WACI,IAAI4Y,EAAQtC,GAAYvc,MAAM,KAAMC,WACpC,OAAIL,KAAK4D,WAAaqb,EAAMrb,UACjBqb,EAAQjf,KAAOA,KAAOif,EAEtBxa,MAInBya,GAAe7Y,EACX,qGACA,WACI,IAAI4Y,EAAQtC,GAAYvc,MAAM,KAAMC,WACpC,OAAIL,KAAK4D,WAAaqb,EAAMrb,UACT5D,KAARif,EAAejf,KAAOif,EAEtBxa,MAUvB,SAAS0a,GAAOtd,EAAIud,GAChB,IAAItd,EAAKC,EAIT,GAHuB,IAAnBqd,EAAQ/d,QAAgBf,EAAQ8e,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQ/d,OACT,OAAOsb,KAGX,IADA7a,EAAMsd,EAAQ,GACTrd,EAAI,EAAGA,EAAIqd,EAAQ/d,SAAUU,EACzBqd,EAAQrd,GAAG6B,YAAawb,EAAQrd,GAAGF,GAAIC,KACxCA,EAAMsd,EAAQrd,IAGtB,OAAOD,EAgBX,IAIIud,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eAyCJ,SAASC,GAASC,GACd,IAAI/U,EAAkBH,EAAqBkV,GACvCC,EAAQhV,EAAgBK,MAAQ,EAChC4U,EAAWjV,EAAgBkV,SAAW,EACtC7Q,EAASrE,EAAgBkB,OAAS,EAClCiU,EAAQnV,EAAgB4G,MAAQ5G,EAAgBoV,SAAW,EAC3DC,EAAOrV,EAAgB6I,KAAO,EAC9BQ,EAAQrJ,EAAgBgT,MAAQ,EAChCzJ,EAAUvJ,EAAgBkU,QAAU,EACpCxK,EAAU1J,EAAgBmU,QAAU,EACpCmB,EAAetV,EAAgBoU,aAAe,EAElD5e,KAAK6D,SAlDT,SAAyBnB,GACrB,IAAI+D,EAEA1E,EADAge,GAAiB,EAErB,IAAKtZ,KAAO/D,EACR,GACI5B,EAAW4B,EAAG+D,MAEuB,IAAjCsH,GAAQnN,KAAKye,GAAU5Y,IACZ,MAAV/D,EAAE+D,IAAiBxC,MAAMvB,EAAE+D,KAGhC,OAAO,EAIf,IAAK1E,EAAI,EAAGA,EAAIsd,GAAShe,SAAUU,EAC/B,GAAIW,EAAE2c,GAAStd,IAAK,CAChB,GAAIge,EACA,OAAO,EAEPC,WAAWtd,EAAE2c,GAAStd,OAASkJ,EAAMvI,EAAE2c,GAAStd,OAChDge,GAAiB,GAK7B,OAAO,EAuBSE,CAAgBzV,GAGhCxK,KAAKkgB,eACAJ,EACS,IAAV5L,EACU,IAAVH,EACQ,IAARF,EAAe,GAAK,GAGxB7T,KAAKmgB,OAASN,EAAe,EAARF,EAIrB3f,KAAKogB,SAAWvR,EAAoB,EAAX4Q,EAAuB,GAARD,EAExCxf,KAAKqgB,MAAQ,GAEbrgB,KAAK4F,QAAUgS,KAEf5X,KAAKsgB,UAGT,SAASC,GAAWpf,GAChB,OAAOA,aAAeme,GAG1B,SAASkB,GAAS7Y,GACd,OAAIA,EAAS,GACyB,EAA3BI,KAAK0Y,OAAO,EAAI9Y,GAEhBI,KAAK0Y,MAAM9Y,GAuB1B,SAAS+Y,GAAOhY,EAAOiY,GACnBlY,EAAeC,EAAO,EAAG,EAAG,WACxB,IAAIgY,EAAS1gB,KAAK4gB,YACdC,EAAO,IAKX,OAJIH,EAAS,IACTA,GAAUA,EACVG,EAAO,KAGPA,EACAnZ,KAAYgZ,EAAS,IAAK,GAC1BC,EACAjZ,IAAWgZ,EAAS,GAAI,KAKpCA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIb5T,GAAc,IAAKF,IACnBE,GAAc,KAAMF,IACpBgB,GAAc,CAAC,IAAK,MAAO,SAAUrN,EAAO2I,EAAOpD,GAC/CA,EAAOgW,SAAU,EACjBhW,EAAOL,KAAOqb,GAAiBlU,GAAkBrM,KAQrD,IAAIwgB,GAAc,kBAElB,SAASD,GAAiBE,EAASlH,GAC/B,IAEImH,EACAlN,EAHAmN,GAAWpH,GAAU,IAAI3Q,MAAM6X,GAKnC,OAAgB,OAAZE,EACO,KAOQ,KAFnBnN,EAAuB,IADvBkN,IADQC,EAAQA,EAAQ7f,OAAS,IAAM,IACtB,IAAI8H,MAAM4X,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAW9V,EAAMgW,EAAM,KAElB,EAAiB,MAAbA,EAAM,GAAalN,GAAWA,EAI7D,SAASoN,GAAgB5gB,EAAO6gB,GAC5B,IAAItf,EAAKuf,EACT,OAAID,EAAM1b,QACN5D,EAAMsf,EAAME,QACZD,GACKrb,EAASzF,IAAUkB,EAAOlB,GACrBA,EAAM2B,UACNya,GAAYpc,GAAO2B,WAAaJ,EAAII,UAE9CJ,EAAIoC,GAAGqd,QAAQzf,EAAIoC,GAAGhC,UAAYmf,GAClClhB,EAAM4F,aAAajE,GAAK,GACjBA,GAEA6a,GAAYpc,GAAOihB,QAIlC,SAASC,GAAc/e,GAGnB,OAAQqF,KAAK0Y,MAAM/d,EAAEwB,GAAGwd,qBA0J5B,SAASC,KACL,QAAO3hB,KAAK4D,YAAY5D,KAAK0F,QAA2B,IAAjB1F,KAAK2F,SApJhDxF,EAAM4F,aAAe,aAwJrB,IAAI6b,GAAc,wDAIdC,GAAW,sKAEf,SAASC,GAAevhB,EAAOkG,GAC3B,IAGIoa,EACAkB,EACAC,EALAzC,EAAWhf,EAEX4I,EAAQ,KAkEZ,OA7DIoX,GAAWhgB,GACXgf,EAAW,CACPtC,GAAI1c,EAAM2f,cACVzN,EAAGlS,EAAM4f,MACT9J,EAAG9V,EAAM6f,SAEN5e,EAASjB,KAAW0D,OAAO1D,IAClCgf,EAAW,GACP9Y,EACA8Y,EAAS9Y,IAAQlG,EAEjBgf,EAASO,cAAgBvf,IAErB4I,EAAQyY,GAAY7H,KAAKxZ,KACjCsgB,EAAoB,MAAb1X,EAAM,IAAc,EAAI,EAC/BoW,EAAW,CACPjP,EAAG,EACHmC,EAAGxH,EAAM9B,EAAM+E,KAAS2S,EACxB7K,EAAG/K,EAAM9B,EAAMgF,KAAS0S,EACxBne,EAAGuI,EAAM9B,EAAMiF,KAAWyS,EAC1BnT,EAAGzC,EAAM9B,EAAMkF,KAAWwS,EAC1B5D,GAAIhS,EAAMuV,GAA8B,IAArBrX,EAAMmF,MAAwBuS,KAE7C1X,EAAQ0Y,GAAS9H,KAAKxZ,KAC9BsgB,EAAoB,MAAb1X,EAAM,IAAc,EAAI,EAC/BoW,EAAW,CACPjP,EAAG2R,GAAS9Y,EAAM,GAAI0X,GACtBxK,EAAG4L,GAAS9Y,EAAM,GAAI0X,GACtB1K,EAAG8L,GAAS9Y,EAAM,GAAI0X,GACtBpO,EAAGwP,GAAS9Y,EAAM,GAAI0X,GACtB7K,EAAGiM,GAAS9Y,EAAM,GAAI0X,GACtBne,EAAGuf,GAAS9Y,EAAM,GAAI0X,GACtBnT,EAAGuU,GAAS9Y,EAAM,GAAI0X,KAEP,MAAZtB,EAEPA,EAAW,GAES,iBAAbA,IACN,SAAUA,GAAY,OAAQA,KAE/ByC,EAiDR,SAA2BE,EAAMjD,GAC7B,IAAInd,EACJ,IAAMogB,EAAKte,YAAaqb,EAAMrb,UAC1B,MAAO,CAAEkc,aAAc,EAAGjR,OAAQ,GAGtCoQ,EAAQkC,GAAgBlC,EAAOiD,GAC3BA,EAAKC,SAASlD,GACdnd,EAAMsgB,GAA0BF,EAAMjD,KAEtCnd,EAAMsgB,GAA0BnD,EAAOiD,IACnCpC,cAAgBhe,EAAIge,aACxBhe,EAAI+M,QAAU/M,EAAI+M,QAGtB,OAAO/M,EAhEOugB,CACN1F,GAAY4C,EAASra,MACrByX,GAAY4C,EAASta,MAGzBsa,EAAW,IACFtC,GAAK+E,EAAQlC,aACtBP,EAASlJ,EAAI2L,EAAQnT,QAGzBkT,EAAM,IAAIzC,GAASC,GAEfgB,GAAWhgB,IAAUO,EAAWP,EAAO,aACvCwhB,EAAInc,QAAUrF,EAAMqF,SAGpB2a,GAAWhgB,IAAUO,EAAWP,EAAO,cACvCwhB,EAAIle,SAAWtD,EAAMsD,UAGlBke,EAMX,SAASE,GAASK,EAAKzB,GAInB,IAAI/e,EAAMwgB,GAAOtC,WAAWsC,EAAIlZ,QAAQ,IAAK,MAE7C,OAAQnF,MAAMnC,GAAO,EAAIA,GAAO+e,EAGpC,SAASuB,GAA0BF,EAAMjD,GACrC,IAAInd,EAAM,GAUV,OARAA,EAAI+M,OACAoQ,EAAMvT,QAAUwW,EAAKxW,QAAyC,IAA9BuT,EAAMpU,OAASqX,EAAKrX,QACpDqX,EAAKZ,QAAQvC,IAAIjd,EAAI+M,OAAQ,KAAK0T,QAAQtD,MACxCnd,EAAI+M,OAGV/M,EAAIge,aAAgBb,EAASiD,EAAKZ,QAAQvC,IAAIjd,EAAI+M,OAAQ,KAEnD/M,EAsBX,SAAS0gB,GAAYC,EAAWvb,GAC5B,OAAO,SAAU9B,EAAKsd,GAClB,IAASC,EAmBT,OAjBe,OAAXD,GAAoBze,OAAOye,KAC3Bzb,EACIC,EACA,YACIA,EACA,uDACAA,EACA,kGAGRyb,EAAMvd,EACNA,EAAMsd,EACNA,EAASC,GAIbC,GAAY5iB,KADN8hB,GAAe1c,EAAKsd,GACHD,GAChBziB,MAIf,SAAS4iB,GAAYvZ,EAAKkW,EAAUsD,EAAU9c,GAC1C,IAAI+Z,EAAeP,EAASW,cACxBL,EAAOW,GAASjB,EAASY,OACzBtR,EAAS2R,GAASjB,EAASa,SAE1B/W,EAAIzF,YAKTmC,EAA+B,MAAhBA,GAA8BA,EAEzC8I,GACAU,GAASlG,EAAKoC,EAAIpC,EAAK,SAAWwF,EAASgU,GAE3ChD,GACArU,EAAMnC,EAAK,OAAQoC,EAAIpC,EAAK,QAAUwW,EAAOgD,GAE7C/C,GACAzW,EAAInF,GAAGqd,QAAQlY,EAAInF,GAAGhC,UAAY4d,EAAe+C,GAEjD9c,GACA5F,EAAM4F,aAAasD,EAAKwW,GAAQhR,IA5FxCiT,GAAejgB,GAAKyd,GAAS5e,UAC7BohB,GAAegB,QA9Xf,WACI,OAAOhB,GAAepd,MA4d1B,IAAIqa,GAAMyD,GAAY,EAAG,OACrBO,GAAWP,IAAa,EAAG,YAE/B,SAASQ,GAASziB,GACd,MAAwB,iBAAVA,GAAsBA,aAAiB0iB,OAIzD,SAASC,GAAc3iB,GACnB,OACIyF,EAASzF,IACTkB,EAAOlB,IACPyiB,GAASziB,IACTiB,EAASjB,IAgDjB,SAA+BA,GAC3B,IAAI4iB,EAAY7iB,EAAQC,GACpB6iB,GAAe,EACfD,IACAC,EAGkB,IAFd7iB,EAAM8iB,OAAO,SAAUC,GACnB,OAAQ9hB,EAAS8hB,IAASN,GAASziB,KACpCc,QAEX,OAAO8hB,GAAaC,EAxDhBG,CAAsBhjB,IAO9B,SAA6BA,GACzB,IA4BIwB,EACAyhB,EA7BAC,EAAa5iB,EAASN,KAAWW,EAAcX,GAC/CmjB,GAAe,EACfC,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAKR,IAAK5hB,EAAI,EAAGA,EAAI4hB,EAAWtiB,OAAQU,GAAK,EACpCyhB,EAAWG,EAAW5hB,GACtB2hB,EAAeA,GAAgB5iB,EAAWP,EAAOijB,GAGrD,OAAOC,GAAcC,EA3CjBE,CAAoBrjB,IANjB,MAOHA,EAqPR,SAASsjB,GAAU9iB,EAAGC,GAClB,GAAID,EAAE4K,OAAS3K,EAAE2K,OAGb,OAAQkY,GAAU7iB,EAAGD,GAGzB,IAAI+iB,EAAyC,IAAvB9iB,EAAE6J,OAAS9J,EAAE8J,SAAgB7J,EAAE0K,QAAU3K,EAAE2K,SAE7DqY,EAAShjB,EAAEugB,QAAQvC,IAAI+E,EAAgB,UAOvCE,EAHAhjB,EAAI+iB,EAAS,GAGH/iB,EAAI+iB,IAAWA,EAFfhjB,EAAEugB,QAAQvC,IAAI+E,EAAiB,EAAG,YAMlC9iB,EAAI+iB,IAFJhjB,EAAEugB,QAAQvC,IAAqB,EAAjB+E,EAAoB,UAETC,GAIvC,QAASD,EAAiBE,IAAW,EAmHzC,SAAS3hB,GAAOoE,GACZ,IAAIwd,EAEJ,YAAY3f,IAARmC,EACOzG,KAAK4F,QAAQ0R,OAGC,OADrB2M,EAAgBrM,GAAUnR,MAEtBzG,KAAK4F,QAAUqe,GAEZjkB,MA1HfG,EAAM+jB,cAAgB,uBACtB/jB,EAAMgkB,iBAAmB,yBA6HzB,IAAIC,GAAO/d,EACP,kJACA,SAAUI,GACN,YAAYnC,IAARmC,EACOzG,KAAK+I,aAEL/I,KAAKqC,OAAOoE,KAK/B,SAASsC,KACL,OAAO/I,KAAK4F,QAGhB,IAGIye,GAAmB,YAGvB,SAASC,GAAMC,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,EAG9C,SAASC,GAAiBnU,EAAG5N,EAAG+P,GAE5B,OAAInC,EAAI,KAAY,GAALA,EAEJ,IAAI5O,KAAK4O,EAAI,IAAK5N,EAAG+P,GAAK4R,GAE1B,IAAI3iB,KAAK4O,EAAG5N,EAAG+P,GAAGvQ,UAIjC,SAASwiB,GAAepU,EAAG5N,EAAG+P,GAE1B,OAAInC,EAAI,KAAY,GAALA,EAEJ5O,KAAKiP,IAAIL,EAAI,IAAK5N,EAAG+P,GAAK4R,GAE1B3iB,KAAKiP,IAAIL,EAAG5N,EAAG+P,GAsb9B,SAASkS,GAAa1X,EAAU5K,GAC5B,OAAOA,EAAOuiB,cAAc3X,GAehC,SAAS4X,KASL,IARA,IAAIC,EAAa,GACbC,EAAa,GACbC,EAAe,GACfjV,EAAc,GAGdkV,EAAOjlB,KAAKilB,OAEXljB,EAAI,EAAG0X,EAAIwL,EAAK5jB,OAAQU,EAAI0X,IAAK1X,EAClCgjB,EAAW/iB,KAAKoL,GAAY6X,EAAKljB,GAAGmF,OACpC4d,EAAW9iB,KAAKoL,GAAY6X,EAAKljB,GAAG+V,OACpCkN,EAAahjB,KAAKoL,GAAY6X,EAAKljB,GAAGmjB,SAEtCnV,EAAY/N,KAAKoL,GAAY6X,EAAKljB,GAAGmF,OACrC6I,EAAY/N,KAAKoL,GAAY6X,EAAKljB,GAAG+V,OACrC/H,EAAY/N,KAAKoL,GAAY6X,EAAKljB,GAAGmjB,SAGzCllB,KAAKmlB,WAAa,IAAIhY,OAAO,KAAO4C,EAAYnJ,KAAK,KAAO,IAAK,KACjE5G,KAAKolB,eAAiB,IAAIjY,OAAO,KAAO4X,EAAWne,KAAK,KAAO,IAAK,KACpE5G,KAAKqlB,eAAiB,IAAIlY,OAAO,KAAO2X,EAAWle,KAAK,KAAO,IAAK,KACpE5G,KAAKslB,iBAAmB,IAAInY,OACxB,KAAO6X,EAAape,KAAK,KAAO,IAChC,KAcR,SAAS2e,GAAuB7c,EAAO8c,GACnC/c,EAAe,EAAG,CAACC,EAAOA,EAAMrH,QAAS,EAAGmkB,GAoFhD,SAASC,GAAqBllB,EAAO6Q,EAAMC,EAASN,EAAKC,GACrD,IAAI0U,EACJ,OAAa,MAATnlB,EACOkR,GAAWzR,KAAM+Q,EAAKC,GAAKnG,OAElC6a,EAAc9T,GAAYrR,EAAOwQ,EAAKC,IAClCI,IACAA,EAAOsU,GAMnB,SAAoBtJ,EAAUhL,EAAMC,EAASN,EAAKC,GAC9C,IAAI2U,EAAgBxU,GAAmBiL,EAAUhL,EAAMC,EAASN,EAAKC,GACjErF,EAAO+E,GAAciV,EAAc9a,KAAM,EAAG8a,EAAcpU,WAK9D,OAHAvR,KAAK6K,KAAKc,EAAKiF,kBACf5Q,KAAK0L,MAAMC,EAAKoQ,eAChB/b,KAAK2L,KAAKA,EAAKqQ,cACRhc,MAXeY,KAAKZ,KAAMO,EAAO6Q,EAAMC,EAASN,EAAKC,IAjYhEvI,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAE9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpCqE,GAAc,IAAK6X,IACnB7X,GAAc,KAAM6X,IACpB7X,GAAc,MAAO6X,IACrB7X,GAAc,OAmOd,SAAsBG,EAAU5K,GAC5B,OAAOA,EAAOujB,cAAc3Y,KAnOhCH,GAAc,QAsOd,SAAwBG,EAAU5K,GAC9B,OAAOA,EAAOwjB,gBAAgB5Y,KArOlCW,GAAc,CAAC,IAAK,KAAM,MAAO,OAAQ,SAAU,SAC/CrN,EACA2I,EACApD,EACA4C,GAEA,IAAIlF,EAAMsC,EAAOF,QAAQkgB,UAAUvlB,EAAOmI,EAAO5C,EAAOzB,SACpDb,EACAf,EAAgBqD,GAAQtC,IAAMA,EAE9Bf,EAAgBqD,GAAQ5C,WAAa3C,IAI7CuM,GAAc,IAAKL,IACnBK,GAAc,KAAML,IACpBK,GAAc,MAAOL,IACrBK,GAAc,OAAQL,IACtBK,GAAc,KAsNd,SAA6BG,EAAU5K,GACnC,OAAOA,EAAO0jB,sBAAwBtZ,KArN1CmB,GAAc,CAAC,IAAK,KAAM,MAAO,QAASI,IAC1CJ,GAAc,CAAC,MAAO,SAAUrN,EAAO2I,EAAOpD,EAAQ4C,GAClD,IAAIS,EACArD,EAAOF,QAAQmgB,uBACf5c,EAAQ5I,EAAM4I,MAAMrD,EAAOF,QAAQmgB,uBAGnCjgB,EAAOF,QAAQogB,oBACf9c,EAAM8E,IAAQlI,EAAOF,QAAQogB,oBAAoBzlB,EAAO4I,GAExDD,EAAM8E,IAAQwC,SAASjQ,EAAO,MA4OtCkI,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOzI,KAAKoc,WAAa,MAG7B3T,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,OAAOzI,KAAKimB,cAAgB,MAOhCV,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAIhCzb,EAAa,WAAY,MACzBA,EAAa,cAAe,MAI5BY,EAAgB,WAAY,GAC5BA,EAAgB,cAAe,GAI/BoC,GAAc,IAAKJ,IACnBI,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,GACjCa,GAAc,OAAQP,GAAWN,GACjCa,GAAc,QAASN,GAAWN,IAClCY,GAAc,QAASN,GAAWN,IAElC2B,GAAkB,CAAC,OAAQ,QAAS,OAAQ,SAAU,SAClDtN,EACA6Q,EACAtL,EACA4C,GAEA0I,EAAK1I,EAAMN,OAAO,EAAG,IAAM6C,EAAM1K,KAGrCsN,GAAkB,CAAC,KAAM,MAAO,SAAUtN,EAAO6Q,EAAMtL,EAAQ4C,GAC3D0I,EAAK1I,GAASvI,EAAMoQ,kBAAkBhQ,KAsE1CkI,EAAe,IAAK,EAAG,KAAM,WAI7BqB,EAAa,UAAW,KAIxBY,EAAgB,UAAW,GAI3BoC,GAAc,IAAKhB,GACnB8B,GAAc,IAAK,SAAUrN,EAAO2I,GAChCA,EAAM+E,IAA8B,GAApBhD,EAAM1K,GAAS,KAanCkI,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCqB,EAAa,OAAQ,KAGrBY,EAAgB,OAAQ,GAIxBoC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAM,SAAUG,EAAU5K,GAEpC,OAAO4K,EACD5K,EAAO6jB,yBAA2B7jB,EAAO8jB,cACzC9jB,EAAO+jB,iCAGjBxY,GAAc,CAAC,IAAK,MAAOM,IAC3BN,GAAc,KAAM,SAAUrN,EAAO2I,GACjCA,EAAMgF,IAAQjD,EAAM1K,EAAM4I,MAAMgD,IAAW,MAK/C,IAAIka,GAAmB/a,EAAW,QAAQ,GAI1C7C,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3CqB,EAAa,YAAa,OAG1BY,EAAgB,YAAa,GAI7BoC,GAAc,MAAOR,IACrBQ,GAAc,OAAQd,GACtB4B,GAAc,CAAC,MAAO,QAAS,SAAUrN,EAAO2I,EAAOpD,GACnDA,EAAOgX,WAAa7R,EAAM1K,KAiB9BkI,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCqB,EAAa,SAAU,KAIvBY,EAAgB,SAAU,IAI1BoC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/B6B,GAAc,CAAC,IAAK,MAAOQ,IAI3B,IAAIkY,GAAehb,EAAW,WAAW,GAIzC7C,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCqB,EAAa,SAAU,KAIvBY,EAAgB,SAAU,IAI1BoC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/B6B,GAAc,CAAC,IAAK,MAAOS,IAI3B,IA8CI3F,GAAO6d,GA9CPC,GAAelb,EAAW,WAAW,GA+CzC,IA3CA7C,EAAe,IAAK,EAAG,EAAG,WACtB,SAAUzI,KAAK4e,cAAgB,OAGnCnW,EAAe,EAAG,CAAC,KAAM,GAAI,EAAG,WAC5B,SAAUzI,KAAK4e,cAAgB,MAGnCnW,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,WAC9B,OAA4B,GAArBzI,KAAK4e,gBAEhBnW,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,WAC/B,OAA4B,IAArBzI,KAAK4e,gBAEhBnW,EAAe,EAAG,CAAC,SAAU,GAAI,EAAG,WAChC,OAA4B,IAArBzI,KAAK4e,gBAEhBnW,EAAe,EAAG,CAAC,UAAW,GAAI,EAAG,WACjC,OAA4B,IAArBzI,KAAK4e,gBAEhBnW,EAAe,EAAG,CAAC,WAAY,GAAI,EAAG,WAClC,OAA4B,IAArBzI,KAAK4e,gBAEhBnW,EAAe,EAAG,CAAC,YAAa,GAAI,EAAG,WACnC,OAA4B,IAArBzI,KAAK4e,gBAKhB9U,EAAa,cAAe,MAI5BY,EAAgB,cAAe,IAI/BoC,GAAc,IAAKR,GAAWR,GAC9BgB,GAAc,KAAMR,GAAWP,GAC/Be,GAAc,MAAOR,GAAWN,GAG3BtD,GAAQ,OAAQA,GAAMrH,QAAU,EAAGqH,IAAS,IAC7CoE,GAAcpE,GAAO+D,IAGzB,SAASga,GAAQlmB,EAAO2I,GACpBA,EAAMoF,IAAerD,EAAuB,KAAhB,KAAO1K,IAGvC,IAAKmI,GAAQ,IAAKA,GAAMrH,QAAU,EAAGqH,IAAS,IAC1CkF,GAAclF,GAAO+d,IAGzBF,GAAoBjb,EAAW,gBAAgB,GAI/C7C,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAY3B,IAAIie,GAAQ7gB,EAAOnF,UAgHnB,SAASimB,GAAmB7M,GACxB,OAAOA,EA/GX4M,GAAM3H,IAAMA,GACZ2H,GAAM7R,SAjoCN,SAAoB+R,EAAMC,GAEG,IAArBxmB,UAAUgB,SACN6hB,GAAc7iB,UAAU,KACxBumB,EAAOvmB,UAAU,GACjBwmB,OAAUviB,GA5CtB,SAAwB/D,GAcpB,IAbA,IAAIkjB,EAAa5iB,EAASN,KAAWW,EAAcX,GAC/CmjB,GAAe,EACfC,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKH5hB,EAAI,EAAGA,EAAI4hB,EAAWtiB,OAAQU,GAAK,EAEpC2hB,EAAeA,GAAgB5iB,EAAWP,EAD/BojB,EAAW5hB,IAI1B,OAAO0hB,GAAcC,EA0BNoD,CAAezmB,UAAU,MAChCwmB,EAAUxmB,UAAU,GACpBumB,OAAOtiB,IAKf,IAAIuX,EAAM+K,GAAQjK,KACdoK,EAAM5F,GAAgBtF,EAAK7b,MAAMgnB,QAAQ,OACzC5kB,EAASjC,EAAM8mB,eAAejnB,KAAM+mB,IAAQ,WAC5Czd,EACIud,IACC1f,EAAW0f,EAAQzkB,IACdykB,EAAQzkB,GAAQxB,KAAKZ,KAAM6b,GAC3BgL,EAAQzkB,IAEtB,OAAOpC,KAAKoC,OACRkH,GAAUtJ,KAAK+I,aAAa8L,SAASzS,EAAQpC,KAAM2c,GAAYd,MA2mCvE6K,GAAMpF,MAvmCN,WACI,OAAO,IAAIzb,EAAO7F,OAumCtB0mB,GAAMrF,KA/hCN,SAAc9gB,EAAO6J,EAAO8c,GACxB,IAAIC,EAAMC,EAAW9d,EAErB,IAAKtJ,KAAK4D,UACN,OAAOc,IAKX,KAFAyiB,EAAOhG,GAAgB5gB,EAAOP,OAEpB4D,UACN,OAAOc,IAOX,OAJA0iB,EAAoD,KAAvCD,EAAKvG,YAAc5gB,KAAK4gB,aAErCxW,EAAQD,EAAeC,IAGnB,IAAK,OACDd,EAASua,GAAU7jB,KAAMmnB,GAAQ,GACjC,MACJ,IAAK,QACD7d,EAASua,GAAU7jB,KAAMmnB,GACzB,MACJ,IAAK,UACD7d,EAASua,GAAU7jB,KAAMmnB,GAAQ,EACjC,MACJ,IAAK,SACD7d,GAAUtJ,KAAOmnB,GAAQ,IACzB,MACJ,IAAK,SACD7d,GAAUtJ,KAAOmnB,GAAQ,IACzB,MACJ,IAAK,OACD7d,GAAUtJ,KAAOmnB,GAAQ,KACzB,MACJ,IAAK,MACD7d,GAAUtJ,KAAOmnB,EAAOC,GAAa,MACrC,MACJ,IAAK,OACD9d,GAAUtJ,KAAOmnB,EAAOC,GAAa,OACrC,MACJ,QACI9d,EAAStJ,KAAOmnB,EAGxB,OAAOD,EAAU5d,EAASwB,EAASxB,IAk/BvCod,GAAMW,MA1uBN,SAAejd,GACX,IAAIwc,EAAMU,EAEV,QAAchjB,KADd8F,EAAQD,EAAeC,KACc,gBAAVA,IAA4BpK,KAAK4D,UACxD,OAAO5D,KAKX,OAFAsnB,EAActnB,KAAK0F,OAASgf,GAAiBD,GAErCra,GACJ,IAAK,OACDwc,EAAOU,EAAYtnB,KAAK6K,OAAS,EAAG,EAAG,GAAK,EAC5C,MACJ,IAAK,UACD+b,EACIU,EACItnB,KAAK6K,OACL7K,KAAK0L,QAAW1L,KAAK0L,QAAU,EAAK,EACpC,GACA,EACR,MACJ,IAAK,QACDkb,EAAOU,EAAYtnB,KAAK6K,OAAQ7K,KAAK0L,QAAU,EAAG,GAAK,EACvD,MACJ,IAAK,OACDkb,EACIU,EACItnB,KAAK6K,OACL7K,KAAK0L,QACL1L,KAAK2L,OAAS3L,KAAKqR,UAAY,GAC/B,EACR,MACJ,IAAK,UACDuV,EACIU,EACItnB,KAAK6K,OACL7K,KAAK0L,QACL1L,KAAK2L,QAAU3L,KAAKunB,aAAe,GAAK,GACxC,EACR,MACJ,IAAK,MACL,IAAK,OACDX,EAAOU,EAAYtnB,KAAK6K,OAAQ7K,KAAK0L,QAAS1L,KAAK2L,OAAS,GAAK,EACjE,MACJ,IAAK,OACDib,EAAO5mB,KAAKkE,GAAGhC,UACf0kB,GAzIM,KA2IFtC,GACIsC,GAAQ5mB,KAAK0F,OAAS,EA7ItB,IA6I0B1F,KAAK4gB,aA5IjC,MA+IF,EACJ,MACJ,IAAK,SACDgG,EAAO5mB,KAAKkE,GAAGhC,UACf0kB,GApJQ,IAoJgBtC,GAAMsC,EApJtB,KAoJ6C,EACrD,MACJ,IAAK,SACDA,EAAO5mB,KAAKkE,GAAGhC,UACf0kB,GAzJQ,IAyJgBtC,GAAMsC,EAzJtB,KAyJ6C,EACrD,MAKR,OAFA5mB,KAAKkE,GAAGqd,QAAQqF,GAChBzmB,EAAM4F,aAAa/F,MAAM,GAClBA,MAyqBX0mB,GAAMtkB,OAp5BN,SAAgBolB,GAERA,EADCA,IACaxnB,KAAK2hB,QACbxhB,EAAMgkB,iBACNhkB,EAAM+jB,eAEhB,IAAI5a,EAASN,EAAahJ,KAAMwnB,GAChC,OAAOxnB,KAAK+I,aAAa0e,WAAWne,IA84BxCod,GAAMxhB,KA34BN,SAAc0hB,EAAMc,GAChB,OACI1nB,KAAK4D,YACHoC,EAAS4gB,IAASA,EAAKhjB,WAAc+Y,GAAYiK,GAAMhjB,WAElDke,GAAe,CAAE7c,GAAIjF,KAAMkF,KAAM0hB,IACnCvkB,OAAOrC,KAAKqC,UACZslB,UAAUD,GAER1nB,KAAK+I,aAAaS,eAm4BjCkd,GAAMkB,QA/3BN,SAAiBF,GACb,OAAO1nB,KAAKkF,KAAKyX,KAAe+K,IA+3BpChB,GAAMzhB,GA53BN,SAAY2hB,EAAMc,GACd,OACI1nB,KAAK4D,YACHoC,EAAS4gB,IAASA,EAAKhjB,WAAc+Y,GAAYiK,GAAMhjB,WAElDke,GAAe,CAAE5c,KAAMlF,KAAMiF,GAAI2hB,IACnCvkB,OAAOrC,KAAKqC,UACZslB,UAAUD,GAER1nB,KAAK+I,aAAaS,eAo3BjCkd,GAAMmB,MAh3BN,SAAeH,GACX,OAAO1nB,KAAKiF,GAAG0X,KAAe+K,IAg3BlChB,GAAMjb,IAnjIN,SAAmBrB,GAEf,OAAIjD,EAAWnH,KADfoK,EAAQD,EAAeC,KAEZpK,KAAKoK,KAETpK,MA+iIX0mB,GAAMoB,UAznBN,WACI,OAAOrlB,EAAgBzC,MAAM+C,UAynBjC2jB,GAAMnE,QA7mCN,SAAiBhiB,EAAO6J,GACpB,IAAI2d,EAAa/hB,EAASzF,GAASA,EAAQoc,GAAYpc,GACvD,SAAMP,KAAK4D,YAAamkB,EAAWnkB,aAIrB,iBADdwG,EAAQD,EAAeC,IAAU,eAEtBpK,KAAKkC,UAAY6lB,EAAW7lB,UAE5B6lB,EAAW7lB,UAAYlC,KAAKshB,QAAQ0F,QAAQ5c,GAAOlI,YAqmClEwkB,GAAMvE,SAjmCN,SAAkB5hB,EAAO6J,GACrB,IAAI2d,EAAa/hB,EAASzF,GAASA,EAAQoc,GAAYpc,GACvD,SAAMP,KAAK4D,YAAamkB,EAAWnkB,aAIrB,iBADdwG,EAAQD,EAAeC,IAAU,eAEtBpK,KAAKkC,UAAY6lB,EAAW7lB,UAE5BlC,KAAKshB,QAAQ+F,MAAMjd,GAAOlI,UAAY6lB,EAAW7lB,YAylChEwkB,GAAMsB,UArlCN,SAAmB9iB,EAAMD,EAAImF,EAAO6d,GAChC,IAAIC,EAAYliB,EAASd,GAAQA,EAAOyX,GAAYzX,GAChDijB,EAAUniB,EAASf,GAAMA,EAAK0X,GAAY1X,GAC9C,SAAMjF,KAAK4D,WAAaskB,EAAUtkB,WAAaukB,EAAQvkB,cAK/B,OAFxBqkB,EAAcA,GAAe,MAEZ,GACPjoB,KAAKuiB,QAAQ2F,EAAW9d,IACvBpK,KAAKmiB,SAAS+F,EAAW9d,MACZ,MAAnB6d,EAAY,GACPjoB,KAAKmiB,SAASgG,EAAS/d,IACtBpK,KAAKuiB,QAAQ4F,EAAS/d,MAykCrCsc,GAAM0B,OArkCN,SAAgB7nB,EAAO6J,GACnB,IACIie,EADAN,EAAa/hB,EAASzF,GAASA,EAAQoc,GAAYpc,GAEvD,SAAMP,KAAK4D,YAAamkB,EAAWnkB,aAIrB,iBADdwG,EAAQD,EAAeC,IAAU,eAEtBpK,KAAKkC,YAAc6lB,EAAW7lB,WAErCmmB,EAAUN,EAAW7lB,UAEjBlC,KAAKshB,QAAQ0F,QAAQ5c,GAAOlI,WAAammB,GACzCA,GAAWroB,KAAKshB,QAAQ+F,MAAMjd,GAAOlI,aAyjCjDwkB,GAAM4B,cApjCN,SAAuB/nB,EAAO6J,GAC1B,OAAOpK,KAAKooB,OAAO7nB,EAAO6J,IAAUpK,KAAKuiB,QAAQhiB,EAAO6J,IAojC5Dsc,GAAM6B,eAjjCN,SAAwBhoB,EAAO6J,GAC3B,OAAOpK,KAAKooB,OAAO7nB,EAAO6J,IAAUpK,KAAKmiB,SAAS5hB,EAAO6J,IAijC7Dsc,GAAM9iB,QAxoBN,WACI,OAAOA,EAAQ5D,OAwoBnB0mB,GAAMtC,KAAOA,GACbsC,GAAMrkB,OAASA,GACfqkB,GAAM3d,WAAaA,GACnB2d,GAAMve,IAAM+W,GACZwH,GAAMjX,IAAMuP,GACZ0H,GAAM8B,aA1oBN,WACI,OAAOvmB,EAAO,GAAIQ,EAAgBzC,QA0oBtC0mB,GAAMjf,IA1jIN,SAAmB2C,EAAOgB,GACtB,GAAqB,iBAAVhB,EAIP,IAFA,IAAIqe,EAzFZ,SAA6BC,GACzB,IACIC,EADAve,EAAQ,GAEZ,IAAKue,KAAKD,EACF5nB,EAAW4nB,EAAUC,IACrBve,EAAMpI,KAAK,CAAE+H,KAAM4e,EAAGhe,SAAUF,EAAWke,KAMnD,OAHAve,EAAM4F,KAAK,SAAUjP,EAAGC,GACpB,OAAOD,EAAE4J,SAAW3J,EAAE2J,WAEnBP,EA8Eewe,CADlBxe,EAAQC,EAAqBD,IAGxBrI,EAAI,EAAGA,EAAI0mB,EAAYpnB,OAAQU,IAChC/B,KAAKyoB,EAAY1mB,GAAGgI,MAAMK,EAAMqe,EAAY1mB,GAAGgI,YAInD,GAAI5C,EAAWnH,KADfoK,EAAQD,EAAeC,KAEnB,OAAOpK,KAAKoK,GAAOgB,GAG3B,OAAOpL,MA6iIX0mB,GAAMM,QA/zBN,SAAiB5c,GACb,IAAIwc,EAAMU,EAEV,QAAchjB,KADd8F,EAAQD,EAAeC,KACc,gBAAVA,IAA4BpK,KAAK4D,UACxD,OAAO5D,KAKX,OAFAsnB,EAActnB,KAAK0F,OAASgf,GAAiBD,GAErCra,GACJ,IAAK,OACDwc,EAAOU,EAAYtnB,KAAK6K,OAAQ,EAAG,GACnC,MACJ,IAAK,UACD+b,EAAOU,EACHtnB,KAAK6K,OACL7K,KAAK0L,QAAW1L,KAAK0L,QAAU,EAC/B,GAEJ,MACJ,IAAK,QACDkb,EAAOU,EAAYtnB,KAAK6K,OAAQ7K,KAAK0L,QAAS,GAC9C,MACJ,IAAK,OACDkb,EAAOU,EACHtnB,KAAK6K,OACL7K,KAAK0L,QACL1L,KAAK2L,OAAS3L,KAAKqR,WAEvB,MACJ,IAAK,UACDuV,EAAOU,EACHtnB,KAAK6K,OACL7K,KAAK0L,QACL1L,KAAK2L,QAAU3L,KAAKunB,aAAe,IAEvC,MACJ,IAAK,MACL,IAAK,OACDX,EAAOU,EAAYtnB,KAAK6K,OAAQ7K,KAAK0L,QAAS1L,KAAK2L,QACnD,MACJ,IAAK,OACDib,EAAO5mB,KAAKkE,GAAGhC,UACf0kB,GAAQtC,GACJsC,GAAQ5mB,KAAK0F,OAAS,EAzElB,IAyEsB1F,KAAK4gB,aAxE7B,MA2EN,MACJ,IAAK,SACDgG,EAAO5mB,KAAKkE,GAAGhC,UACf0kB,GAAQtC,GAAMsC,EA/EN,KAgFR,MACJ,IAAK,SACDA,EAAO5mB,KAAKkE,GAAGhC,UACf0kB,GAAQtC,GAAMsC,EApFN,KAqFR,MAKR,OAFA5mB,KAAKkE,GAAGqd,QAAQqF,GAChBzmB,EAAM4F,aAAa/F,MAAM,GAClBA,MAowBX0mB,GAAM3D,SAAWA,GACjB2D,GAAMmC,QAjrBN,WACI,IAAInmB,EAAI1C,KACR,MAAO,CACH0C,EAAEmI,OACFnI,EAAEgJ,QACFhJ,EAAEiJ,OACFjJ,EAAE8a,OACF9a,EAAEgc,SACFhc,EAAEic,SACFjc,EAAEkc,gBAyqBV8H,GAAMoC,SArqBN,WACI,IAAIpmB,EAAI1C,KACR,MAAO,CACHwf,MAAO9c,EAAEmI,OACTgE,OAAQnM,EAAEgJ,QACVC,KAAMjJ,EAAEiJ,OACRkI,MAAOnR,EAAEmR,QACTE,QAASrR,EAAEqR,UACXG,QAASxR,EAAEwR,UACX4L,aAAcpd,EAAEod,iBA6pBxB4G,GAAMqC,OAvrBN,WACI,OAAO,IAAIrnB,KAAK1B,KAAKkC,YAurBzBwkB,GAAMsC,YAx+BN,SAAqBC,GACjB,IAAKjpB,KAAK4D,UACN,OAAO,KAEX,IAAIpB,GAAqB,IAAfymB,EACNvmB,EAAIF,EAAMxC,KAAKshB,QAAQ9e,MAAQxC,KACnC,OAAI0C,EAAEmI,OAAS,GAAgB,KAAXnI,EAAEmI,OACX7B,EACHtG,EACAF,EACM,iCACA,gCAGV2E,EAAWzF,KAAKhB,UAAUsoB,aAEtBxmB,EACOxC,KAAK+oB,SAASC,cAEd,IAAItnB,KAAK1B,KAAKkC,UAA+B,GAAnBlC,KAAK4gB,YAAmB,KACpDoI,cACA5f,QAAQ,IAAKJ,EAAatG,EAAG,MAGnCsG,EACHtG,EACAF,EAAM,+BAAiC,+BA+8B/CkkB,GAAMwC,QAr8BN,WACI,IAAKlpB,KAAK4D,UACN,MAAO,qBAAuB5D,KAAKsF,GAAK,OAE5C,IAEI6jB,EACAte,EAEAue,EALAtgB,EAAO,SACPugB,EAAO,GAcX,OATKrpB,KAAKspB,YACNxgB,EAA4B,IAArB9I,KAAK4gB,YAAoB,aAAe,mBAC/CyI,EAAO,KAEXF,EAAS,IAAMrgB,EAAO,MACtB+B,EAAO,GAAK7K,KAAK6K,QAAU7K,KAAK6K,QAAU,KAAO,OAAS,SAE1Due,EAASC,EAAO,OAETrpB,KAAKoC,OAAO+mB,EAASte,EAHjB,wBAGmCue,IAm7B5B,oBAAXG,QAAwC,MAAdA,OAAOC,MACxC9C,GAAM6C,OAAOC,IAAI,+BAAiC,WAC9C,MAAO,UAAYxpB,KAAKoC,SAAW,MAG3CskB,GAAM+C,OAjqBN,WAEI,OAAOzpB,KAAK4D,UAAY5D,KAAKgpB,cAAgB,MAgqBjDtC,GAAM/lB,SAp/BN,WACI,OAAOX,KAAKshB,QAAQjf,OAAO,MAAMD,OAAO,qCAo/B5CskB,GAAMgD,KArsBN,WACI,OAAO3hB,KAAKiD,MAAMhL,KAAKkC,UAAY,MAqsBvCwkB,GAAMxkB,QA1sBN,WACI,OAAOlC,KAAKkE,GAAGhC,UAAkC,KAArBlC,KAAK2F,SAAW,IA0sBhD+gB,GAAMiD,aAppBN,WACI,MAAO,CACHppB,MAAOP,KAAKsF,GACZlD,OAAQpC,KAAKuF,GACblD,OAAQrC,KAAK4F,QACbkZ,MAAO9e,KAAK0F,OACZpD,OAAQtC,KAAKqE,UA+oBrBqiB,GAAMkD,QAzgBN,WAKI,IAJA,IAEIxkB,EACA6f,EAAOjlB,KAAK+I,aAAakc,OACxBljB,EAAI,EAAG0X,EAAIwL,EAAK5jB,OAAQU,EAAI0X,IAAK1X,EAAG,CAIrC,GAFAqD,EAAMpF,KAAKshB,QAAQ0F,QAAQ,OAAO9kB,UAE9B+iB,EAAKljB,GAAG8nB,OAASzkB,GAAOA,GAAO6f,EAAKljB,GAAG+nB,MACvC,OAAO7E,EAAKljB,GAAGmF,KAEnB,GAAI+d,EAAKljB,GAAG+nB,OAAS1kB,GAAOA,GAAO6f,EAAKljB,GAAG8nB,MACvC,OAAO5E,EAAKljB,GAAGmF,KAIvB,MAAO,IAyfXwf,GAAMqD,UAtfN,WAKI,IAJA,IAEI3kB,EACA6f,EAAOjlB,KAAK+I,aAAakc,OACxBljB,EAAI,EAAG0X,EAAIwL,EAAK5jB,OAAQU,EAAI0X,IAAK1X,EAAG,CAIrC,GAFAqD,EAAMpF,KAAKshB,QAAQ0F,QAAQ,OAAO9kB,UAE9B+iB,EAAKljB,GAAG8nB,OAASzkB,GAAOA,GAAO6f,EAAKljB,GAAG+nB,MACvC,OAAO7E,EAAKljB,GAAGmjB,OAEnB,GAAID,EAAKljB,GAAG+nB,OAAS1kB,GAAOA,GAAO6f,EAAKljB,GAAG8nB,MACvC,OAAO5E,EAAKljB,GAAGmjB,OAIvB,MAAO,IAseXwB,GAAMsD,QAneN,WAKI,IAJA,IAEI5kB,EACA6f,EAAOjlB,KAAK+I,aAAakc,OACxBljB,EAAI,EAAG0X,EAAIwL,EAAK5jB,OAAQU,EAAI0X,IAAK1X,EAAG,CAIrC,GAFAqD,EAAMpF,KAAKshB,QAAQ0F,QAAQ,OAAO9kB,UAE9B+iB,EAAKljB,GAAG8nB,OAASzkB,GAAOA,GAAO6f,EAAKljB,GAAG+nB,MACvC,OAAO7E,EAAKljB,GAAG+V,KAEnB,GAAImN,EAAKljB,GAAG+nB,OAAS1kB,GAAOA,GAAO6f,EAAKljB,GAAG8nB,MACvC,OAAO5E,EAAKljB,GAAG+V,KAIvB,MAAO,IAmdX4O,GAAMuD,QAhdN,WAMI,IALA,IAEIC,EACA9kB,EACA6f,EAAOjlB,KAAK+I,aAAakc,OACxBljB,EAAI,EAAG0X,EAAIwL,EAAK5jB,OAAQU,EAAI0X,IAAK1X,EAMlC,GALAmoB,EAAMjF,EAAKljB,GAAG8nB,OAAS5E,EAAKljB,GAAG+nB,MAAQ,GAAM,EAG7C1kB,EAAMpF,KAAKshB,QAAQ0F,QAAQ,OAAO9kB,UAG7B+iB,EAAKljB,GAAG8nB,OAASzkB,GAAOA,GAAO6f,EAAKljB,GAAG+nB,OACvC7E,EAAKljB,GAAG+nB,OAAS1kB,GAAOA,GAAO6f,EAAKljB,GAAG8nB,MAExC,OACK7pB,KAAK6K,OAAS1K,EAAM8kB,EAAKljB,GAAG8nB,OAAOhf,QAAUqf,EAC9CjF,EAAKljB,GAAG2e,OAKpB,OAAO1gB,KAAK6K,QA0bhB6b,GAAM7b,KAAO4F,GACbiW,GAAM9b,WAvkHN,WACI,OAAOA,EAAW5K,KAAK6K,SAukH3B6b,GAAMtK,SAjUN,SAAwB7b,GACpB,OAAOklB,GAAqB7kB,KACxBZ,KACAO,EACAP,KAAKoR,OACLpR,KAAKqR,UACLrR,KAAK+I,aAAa6T,MAAM7L,IACxB/Q,KAAK+I,aAAa6T,MAAM5L,MA2ThC0V,GAAMT,YAvTN,SAA2B1lB,GACvB,OAAOklB,GAAqB7kB,KACxBZ,KACAO,EACAP,KAAK4f,UACL5f,KAAKunB,aACL,EACA,IAiTRb,GAAMhH,QAAUgH,GAAMjH,SA/OtB,SAAuBlf,GACnB,OAAgB,MAATA,EACDwH,KAAKgD,MAAM/K,KAAK0L,QAAU,GAAK,GAC/B1L,KAAK0L,MAAoB,GAAbnL,EAAQ,GAAUP,KAAK0L,QAAU,IA6OvDgb,GAAMhb,MAAQgE,GACdgX,GAAM9a,YA9tHN,WACI,OAAOA,GAAY5L,KAAK6K,OAAQ7K,KAAK0L,UA8tHzCgb,GAAMtV,KAAOsV,GAAM/G,MA/6GnB,SAAoBpf,GAChB,IAAI6Q,EAAOpR,KAAK+I,aAAaqI,KAAKpR,MAClC,OAAgB,MAATO,EAAgB6Q,EAAOpR,KAAK+e,IAAqB,GAAhBxe,EAAQ6Q,GAAW,MA86G/DsV,GAAM9G,QAAU8G,GAAMyD,SA36GtB,SAAuB5pB,GACnB,IAAI6Q,EAAOK,GAAWzR,KAAM,EAAG,GAAGoR,KAClC,OAAgB,MAAT7Q,EAAgB6Q,EAAOpR,KAAK+e,IAAqB,GAAhBxe,EAAQ6Q,GAAW,MA06G/DsV,GAAM9U,YA1SN,WACI,IAAIwY,EAAWpqB,KAAK+I,aAAa6T,MACjC,OAAOhL,GAAY5R,KAAK6K,OAAQuf,EAASrZ,IAAKqZ,EAASpZ,MAyS3D0V,GAAM2D,gBAtSN,WACI,IAAID,EAAWpqB,KAAK+I,aAAa6T,MACjC,OAAOhL,GAAY5R,KAAKoc,WAAYgO,EAASrZ,IAAKqZ,EAASpZ,MAqS/D0V,GAAM4D,eApTN,WACI,OAAO1Y,GAAY5R,KAAK6K,OAAQ,EAAG,IAoTvC6b,GAAM6D,sBAjTN,WACI,OAAO3Y,GAAY5R,KAAKimB,cAAe,EAAG,IAiT9CS,GAAM/a,KAAO0a,GACbK,GAAMrT,IAAMqT,GAAM7G,KA5pGlB,SAAyBtf,GACrB,IAAKP,KAAK4D,UACN,OAAgB,MAATrD,EAAgBP,KAAO0E,IAElC,IAvNkBnE,EAAO8B,EAuNrBgR,EAAMrT,KAAK0F,OAAS1F,KAAKkE,GAAGgN,YAAclR,KAAKkE,GAAG4W,SACtD,OAAa,MAATva,GAxNcA,EAyNOA,EAzNA8B,EAyNOrC,KAAK+I,aAAjCxI,EAxNiB,iBAAVA,EACAA,EAGN0D,MAAM1D,GAKU,iBADrBA,EAAQ8B,EAAOmQ,cAAcjS,IAElBA,EAGJ,KARIiQ,SAASjQ,EAAO,IAoNhBP,KAAK+e,IAAIxe,EAAQ8S,EAAK,MAEtBA,GAopGfqT,GAAMrV,QAhpGN,SAA+B9Q,GAC3B,IAAKP,KAAK4D,UACN,OAAgB,MAATrD,EAAgBP,KAAO0E,IAElC,IAAI2M,GAAWrR,KAAKqT,MAAQ,EAAIrT,KAAK+I,aAAa6T,MAAM7L,KAAO,EAC/D,OAAgB,MAATxQ,EAAgB8Q,EAAUrR,KAAK+e,IAAIxe,EAAQ8Q,EAAS,MA4oG/DqV,GAAMa,WAzoGN,SAA4BhnB,GACxB,IAAKP,KAAK4D,UACN,OAAgB,MAATrD,EAAgBP,KAAO0E,IAOlC,GAAa,MAATnE,EAIA,OAAOP,KAAKqT,OAAS,EAHrB,IAjOiB9S,EAAO8B,EAiOpBgP,GAjOa9Q,EAiOaA,EAjON8B,EAiOarC,KAAK+I,aAhOzB,iBAAVxI,EACA8B,EAAOmQ,cAAcjS,GAAS,GAAK,EAEvC0D,MAAM1D,GAAS,KAAOA,GA8NzB,OAAOP,KAAKqT,IAAIrT,KAAKqT,MAAQ,EAAIhC,EAAUA,EAAU,IA+nG7DqV,GAAMnV,UAhMN,SAAyBhR,GACrB,IAAIgR,EACAxJ,KAAK0Y,OACAzgB,KAAKshB,QAAQ0F,QAAQ,OAAShnB,KAAKshB,QAAQ0F,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAATzmB,EAAgBgR,EAAYvR,KAAK+e,IAAIxe,EAAQgR,EAAW,MA4LnEmV,GAAMlJ,KAAOkJ,GAAM7S,MAAQa,GAC3BgS,GAAMhI,OAASgI,GAAM3S,QAAUuS,GAC/BI,GAAM/H,OAAS+H,GAAMxS,QAAUsS,GAC/BE,GAAM9H,YAAc8H,GAAM5G,aAAeyG,GACzCG,GAAM9F,UA7mDN,SAAsBrgB,EAAOiqB,EAAeC,GACxC,IACIC,EADAhK,EAAS1gB,KAAK2F,SAAW,EAE7B,IAAK3F,KAAK4D,UACN,OAAgB,MAATrD,EAAgBP,KAAO0E,IAElC,GAAa,MAATnE,EAiCA,OAAOP,KAAK0F,OAASgb,EAASe,GAAczhB,MAhC5C,GAAqB,iBAAVO,GAEP,GAAc,QADdA,EAAQugB,GAAiBlU,GAAkBrM,IAEvC,OAAOP,UAEJ+H,KAAKC,IAAIzH,GAAS,KAAOkqB,IAChClqB,GAAgB,IAwBpB,OAtBKP,KAAK0F,QAAU8kB,IAChBE,EAAcjJ,GAAczhB,OAEhCA,KAAK2F,QAAUpF,EACfP,KAAK0F,QAAS,EACK,MAAfglB,GACA1qB,KAAK+e,IAAI2L,EAAa,KAEtBhK,IAAWngB,KACNiqB,GAAiBxqB,KAAK2qB,kBACvB/H,GACI5iB,KACA8hB,GAAevhB,EAAQmgB,EAAQ,KAC/B,GACA,GAEI1gB,KAAK2qB,oBACb3qB,KAAK2qB,mBAAoB,EACzBxqB,EAAM4F,aAAa/F,MAAM,GACzBA,KAAK2qB,kBAAoB,OAG1B3qB,MAykDf0mB,GAAMlkB,IArjDN,SAAwBgoB,GACpB,OAAOxqB,KAAK4gB,UAAU,EAAG4J,IAqjD7B9D,GAAMlF,MAljDN,SAA0BgJ,GAStB,OARIxqB,KAAK0F,SACL1F,KAAK4gB,UAAU,EAAG4J,GAClBxqB,KAAK0F,QAAS,EAEV8kB,GACAxqB,KAAK+iB,SAAStB,GAAczhB,MAAO,MAGpCA,MA0iDX0mB,GAAMkE,UAviDN,WACI,IAGQC,EAOR,OAViB,MAAb7qB,KAAKyF,KACLzF,KAAK4gB,UAAU5gB,KAAKyF,MAAM,GAAO,GACP,iBAAZzF,KAAKsF,KAEN,OADTulB,EAAQ/J,GAAiBnU,GAAa3M,KAAKsF,KAE3CtF,KAAK4gB,UAAUiK,GAEf7qB,KAAK4gB,UAAU,GAAG,IAGnB5gB,MA6hDX0mB,GAAMoE,qBA1hDN,SAA8BvqB,GAC1B,QAAKP,KAAK4D,YAGVrD,EAAQA,EAAQoc,GAAYpc,GAAOqgB,YAAc,GAEzC5gB,KAAK4gB,YAAcrgB,GAAS,IAAO,IAqhD/CmmB,GAAMqE,MAlhDN,WACI,OACI/qB,KAAK4gB,YAAc5gB,KAAKshB,QAAQ5V,MAAM,GAAGkV,aACzC5gB,KAAK4gB,YAAc5gB,KAAKshB,QAAQ5V,MAAM,GAAGkV,aAghDjD8F,GAAM4C,QAt/CN,WACI,QAAOtpB,KAAK4D,YAAa5D,KAAK0F,QAs/ClCghB,GAAMsE,YAn/CN,WACI,QAAOhrB,KAAK4D,WAAY5D,KAAK0F,QAm/CjCghB,GAAM/E,MAAQA,GACd+E,GAAM5H,MAAQ6C,GACd+E,GAAMuE,SAzFN,WACI,OAAOjrB,KAAK0F,OAAS,MAAQ,IAyFjCghB,GAAMwE,SAtFN,WACI,OAAOlrB,KAAK0F,OAAS,6BAA+B,IAsFxDghB,GAAMyE,MAAQ9kB,EACV,kDACAggB,IAEJK,GAAM7X,OAASxI,EACX,mDACAqJ,IAEJgX,GAAMlH,MAAQnZ,EACV,iDACAoK,IAEJiW,GAAM2C,KAAOhjB,EACT,2GA3lDJ,SAAoB9F,EAAOiqB,GACvB,OAAa,MAATjqB,GACqB,iBAAVA,IACPA,GAASA,GAGbP,KAAK4gB,UAAUrgB,EAAOiqB,GAEfxqB,OAECA,KAAK4gB,cAolDrB8F,GAAM0E,aAAe/kB,EACjB,0GAniDJ,WACI,IAAK9E,EAAYvB,KAAKqrB,eAClB,OAAOrrB,KAAKqrB,cAGhB,IACIpM,EADA1D,EAAI,GAcR,OAXAvW,EAAWuW,EAAGvb,OACdub,EAAIsC,GAActC,IAEZpD,IACF8G,GAAQ1D,EAAE7V,OAASvD,EAAkBwa,IAARpB,EAAEpD,IAC/BnY,KAAKqrB,cACDrrB,KAAK4D,WAAoD,EAtOrE,SAAuB0nB,EAAQC,EAAQC,GAKnC,IAJA,IAAI3mB,EAAMkD,KAAK0H,IAAI6b,EAAOjqB,OAAQkqB,EAAOlqB,QACrCoqB,EAAa1jB,KAAKC,IAAIsjB,EAAOjqB,OAASkqB,EAAOlqB,QAC7CqqB,EAAQ,EAEP3pB,EAAI,EAAGA,EAAI8C,EAAK9C,KAEZypB,GAAeF,EAAOvpB,KAAOwpB,EAAOxpB,KACnCypB,GAAevgB,EAAMqgB,EAAOvpB,MAAQkJ,EAAMsgB,EAAOxpB,MAEnD2pB,IAGR,OAAOA,EAAQD,EAyNWE,CAAcpQ,EAAEpD,GAAI8G,EAAM4J,YAEhD7oB,KAAKqrB,eAAgB,EAGlBrrB,KAAKqrB,gBAgiDhB,IAAIO,GAAUpkB,EAAO9G,UAuCrB,SAASmrB,GAAMzpB,EAAQ0pB,EAAOC,EAAOC,GACjC,IAAI3pB,EAASuV,KACTpV,EAAML,IAAYsF,IAAIukB,EAAQF,GAClC,OAAOzpB,EAAO0pB,GAAOvpB,EAAKJ,GAG9B,SAAS6pB,GAAe7pB,EAAQ0pB,EAAOC,GAQnC,GAPIvqB,EAASY,KACT0pB,EAAQ1pB,EACRA,OAASkC,GAGblC,EAASA,GAAU,GAEN,MAAT0pB,EACA,OAAOD,GAAMzpB,EAAQ0pB,EAAOC,EAAO,SAKvC,IAFA,IACIG,EAAM,GACLnqB,EAAI,EAAGA,EAAI,GAAIA,IAChBmqB,EAAInqB,GAAK8pB,GAAMzpB,EAAQL,EAAGgqB,EAAO,SAErC,OAAOG,EAWX,SAASC,GAAiBC,EAAchqB,EAAQ0pB,EAAOC,GAO/C3pB,GANwB,kBAAjBgqB,EACH5qB,EAASY,KACT0pB,EAAQ1pB,EACRA,OAASkC,IAKblC,EAASgqB,EAETA,GAAe,EAEX5qB,EAHJsqB,EAAQ1pB,KAIJ0pB,EAAQ1pB,EACRA,OAASkC,IARJlC,GAAU,IAcvB,IAEIL,EAFAM,EAASuV,KACTyU,EAAQD,EAAe/pB,EAAOua,MAAM7L,IAAM,EAE1Cmb,EAAM,GAEV,GAAa,MAATJ,EACA,OAAOD,GAAMzpB,GAAS0pB,EAAQO,GAAS,EAAGN,EAAO,OAGrD,IAAKhqB,EAAI,EAAGA,EAAI,EAAGA,IACfmqB,EAAInqB,GAAK8pB,GAAMzpB,GAASL,EAAIsqB,GAAS,EAAGN,EAAO,OAEnD,OAAOG,EAxGXN,GAAQ/W,SAj9IR,SAAkBpO,EAAK4C,EAAKwS,GACxB,IAAIvS,EAAStJ,KAAKssB,UAAU7lB,IAAQzG,KAAKssB,UAAoB,SAC7D,OAAOnlB,EAAWmC,GAAUA,EAAO1I,KAAKyI,EAAKwS,GAAOvS,GAg9IxDsiB,GAAQliB,eAt1IR,SAAwBjD,GACpB,IAAIrE,EAASpC,KAAKusB,gBAAgB9lB,GAC9B+lB,EAAcxsB,KAAKusB,gBAAgB9lB,EAAIgmB,eAE3C,OAAIrqB,IAAWoqB,EACJpqB,GAGXpC,KAAKusB,gBAAgB9lB,GAAO+lB,EACvBrjB,MAAMd,GACN1G,IAAI,SAAU+qB,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAI/lB,MAAM,GAEd+lB,IAEV9lB,KAAK,IAEH5G,KAAKusB,gBAAgB9lB,KAg0IhCmlB,GAAQpiB,YA3zIR,WACI,OAAOxJ,KAAK2sB,cA2zIhBf,GAAQhjB,QArzIR,SAAiBjB,GACb,OAAO3H,KAAK4sB,SAASxjB,QAAQ,KAAMzB,IAqzIvCikB,GAAQ9N,SAAW6I,GACnBiF,GAAQnE,WAAad,GACrBiF,GAAQjW,aAjyIR,SAAsBhO,EAAQ+f,EAAe5N,EAAQ+S,GACjD,IAAIvjB,EAAStJ,KAAK8sB,cAAchT,GAChC,OAAO3S,EAAWmC,GACZA,EAAO3B,EAAQ+f,EAAe5N,EAAQ+S,GACtCvjB,EAAOF,QAAQ,MAAOzB,IA8xIhCikB,GAAQmB,WA3xIR,SAAoB1L,EAAM/X,GACtB,IAAIlH,EAASpC,KAAK8sB,cAAqB,EAAPzL,EAAW,SAAW,QACtD,OAAOla,EAAW/E,GAAUA,EAAOkH,GAAUlH,EAAOgH,QAAQ,MAAOE,IA0xIvEsiB,GAAQnkB,IA7iJR,SAAa3B,GACT,IAAIX,EAAMpD,EACV,IAAKA,KAAK+D,EACFhF,EAAWgF,EAAQ/D,KAEfoF,EADJhC,EAAOW,EAAO/D,IAEV/B,KAAK+B,GAAKoD,EAEVnF,KAAK,IAAM+B,GAAKoD,GAI5BnF,KAAK+X,QAAUjS,EAIf9F,KAAKomB,+BAAiC,IAAIjZ,QACrCnN,KAAKkmB,wBAAwB8G,QAAUhtB,KAAKmmB,cAAc6G,QACvD,IACA,UAAUA,SA2hJtBpB,GAAQ3G,KA1qBR,SAAoBviB,EAAGN,GAKnB,IAJA,IAEIuJ,EACAsZ,EAAOjlB,KAAKitB,OAASrV,GAAU,MAAMqV,MACpClrB,EAAI,EAAG0X,EAAIwL,EAAK5jB,OAAQU,EAAI0X,IAAK1X,EAAG,CACrC,cAAekjB,EAAKljB,GAAG8nB,OACnB,IAAK,SAEDle,EAAOxL,EAAM8kB,EAAKljB,GAAG8nB,OAAO7C,QAAQ,OACpC/B,EAAKljB,GAAG8nB,MAAQle,EAAKzJ,UACrB,MAGR,cAAe+iB,EAAKljB,GAAG+nB,OACnB,IAAK,YACD7E,EAAKljB,GAAG+nB,MAASoD,EAAAA,EACjB,MACJ,IAAK,SAEDvhB,EAAOxL,EAAM8kB,EAAKljB,GAAG+nB,OAAO9C,QAAQ,OAAO9kB,UAC3C+iB,EAAKljB,GAAG+nB,MAAQne,EAAKzJ,UACrB,OAGZ,OAAO+iB,GAkpBX2G,GAAQ9F,UA/oBR,SAAyB8D,EAASxnB,EAAQE,GACtC,IAAIP,EACA0X,EAEAvS,EACA4Q,EACAoN,EAHAD,EAAOjlB,KAAKilB,OAMhB,IAFA2E,EAAUA,EAAQ6C,cAEb1qB,EAAI,EAAG0X,EAAIwL,EAAK5jB,OAAQU,EAAI0X,IAAK1X,EAKlC,GAJAmF,EAAO+d,EAAKljB,GAAGmF,KAAKulB,cACpB3U,EAAOmN,EAAKljB,GAAG+V,KAAK2U,cACpBvH,EAASD,EAAKljB,GAAGmjB,OAAOuH,cAEpBnqB,EACA,OAAQF,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAI0V,IAAS8R,EACT,OAAO3E,EAAKljB,GAEhB,MAEJ,IAAK,OACD,GAAImF,IAAS0iB,EACT,OAAO3E,EAAKljB,GAEhB,MAEJ,IAAK,QACD,GAAImjB,IAAW0E,EACX,OAAO3E,EAAKljB,GAEhB,WAEL,GAA6C,GAAzC,CAACmF,EAAM4Q,EAAMoN,GAAQnX,QAAQ6b,GACpC,OAAO3E,EAAKljB,IA2mBxB6pB,GAAQhO,gBAtmBR,SAA+Bpa,EAAKqH,GAChC,IAAIqf,EAAM1mB,EAAIqmB,OAASrmB,EAAIsmB,MAAQ,GAAM,EACzC,YAAaxlB,IAATuG,EACO1K,EAAMqD,EAAIqmB,OAAOhf,OAEjB1K,EAAMqD,EAAIqmB,OAAOhf,QAAUA,EAAOrH,EAAIkd,QAAUwJ,GAkmB/D0B,GAAQhH,cAjgBR,SAAuB3X,GAInB,OAHKnM,EAAWd,KAAM,mBAClB6kB,GAAiBjkB,KAAKZ,MAEnBiN,EAAWjN,KAAKqlB,eAAiBrlB,KAAKmlB,YA8fjDyG,GAAQhG,cAzgBR,SAAuB3Y,GAInB,OAHKnM,EAAWd,KAAM,mBAClB6kB,GAAiBjkB,KAAKZ,MAEnBiN,EAAWjN,KAAKolB,eAAiBplB,KAAKmlB,YAsgBjDyG,GAAQ/F,gBA5fR,SAAyB5Y,GAIrB,OAHKnM,EAAWd,KAAM,qBAClB6kB,GAAiBjkB,KAAKZ,MAEnBiN,EAAWjN,KAAKslB,iBAAmBtlB,KAAKmlB,YA0fnDyG,GAAQ/c,OAl9HR,SAAsBnM,EAAGN,GACrB,OAAKM,EAKEpC,EAAQN,KAAKogB,SACdpgB,KAAKogB,QAAQ1d,EAAEgJ,SACf1L,KAAKogB,SACApgB,KAAKogB,QAAQ+M,UAAY/d,IAAkBxF,KAAKxH,GAC3C,SACA,cACRM,EAAEgJ,SAVCpL,EAAQN,KAAKogB,SACdpgB,KAAKogB,QACLpgB,KAAKogB,QAAoB,YA+8HvCwL,GAAQhd,YAp8HR,SAA2BlM,EAAGN,GAC1B,OAAKM,EAKEpC,EAAQN,KAAKotB,cACdptB,KAAKotB,aAAa1qB,EAAEgJ,SACpB1L,KAAKotB,aACDhe,GAAiBxF,KAAKxH,GAAU,SAAW,cAC7CM,EAAEgJ,SARCpL,EAAQN,KAAKotB,cACdptB,KAAKotB,aACLptB,KAAKotB,aAAyB,YAi8H5CxB,GAAQ5c,YAz4HR,SAA2Bqe,EAAWjrB,EAAQE,GAC1C,IAAIP,EAAGsH,EAAK0D,EAEZ,GAAI/M,KAAKstB,kBACL,OAnDR,SAA2BD,EAAWjrB,EAAQE,GAC1C,IAAIP,EACAwrB,EACAlkB,EACAmkB,EAAMH,EAAUI,oBACpB,IAAKztB,KAAK0tB,aAKN,IAHA1tB,KAAK0tB,aAAe,GACpB1tB,KAAK2tB,iBAAmB,GACxB3tB,KAAK4tB,kBAAoB,GACpB7rB,EAAI,EAAGA,EAAI,KAAMA,EAClBsH,EAAMlH,EAAU,CAAC,IAAMJ,IACvB/B,KAAK4tB,kBAAkB7rB,GAAK/B,KAAK4O,YAC7BvF,EACA,IACFokB,oBACFztB,KAAK2tB,iBAAiB5rB,GAAK/B,KAAK6O,OAAOxF,EAAK,IAAIokB,oBAIxD,OAAInrB,EACe,QAAXF,GAEe,KADfmrB,EAAKxf,GAAQnN,KAAKZ,KAAK4tB,kBAAmBJ,IACvBD,EAAK,MAGT,KADfA,EAAKxf,GAAQnN,KAAKZ,KAAK2tB,iBAAkBH,IACtBD,EAAK,KAGb,QAAXnrB,GAEY,KADZmrB,EAAKxf,GAAQnN,KAAKZ,KAAK4tB,kBAAmBJ,MAK3B,KADfD,EAAKxf,GAAQnN,KAAKZ,KAAK2tB,iBAAkBH,IAF9BD,EAGa,MAGZ,KADZA,EAAKxf,GAAQnN,KAAKZ,KAAK2tB,iBAAkBH,MAK1B,KADfD,EAAKxf,GAAQnN,KAAKZ,KAAK4tB,kBAAmBJ,IAF/BD,EAGa,MASH3sB,KAAKZ,KAAMqtB,EAAWjrB,EAAQE,GAY3D,IATKtC,KAAK0tB,eACN1tB,KAAK0tB,aAAe,GACpB1tB,KAAK2tB,iBAAmB,GACxB3tB,KAAK4tB,kBAAoB,IAMxB7rB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBAsH,EAAMlH,EAAU,CAAC,IAAMJ,IACnBO,IAAWtC,KAAK2tB,iBAAiB5rB,KACjC/B,KAAK2tB,iBAAiB5rB,GAAK,IAAIoL,OAC3B,IAAMnN,KAAK6O,OAAOxF,EAAK,IAAID,QAAQ,IAAK,IAAM,IAC9C,KAEJpJ,KAAK4tB,kBAAkB7rB,GAAK,IAAIoL,OAC5B,IAAMnN,KAAK4O,YAAYvF,EAAK,IAAID,QAAQ,IAAK,IAAM,IACnD,MAGH9G,GAAWtC,KAAK0tB,aAAa3rB,KAC9BgL,EACI,IAAM/M,KAAK6O,OAAOxF,EAAK,IAAM,KAAOrJ,KAAK4O,YAAYvF,EAAK,IAC9DrJ,KAAK0tB,aAAa3rB,GAAK,IAAIoL,OAAOJ,EAAM3D,QAAQ,IAAK,IAAK,MAI1D9G,GACW,SAAXF,GACApC,KAAK2tB,iBAAiB5rB,GAAG6H,KAAKyjB,GAE9B,OAAOtrB,EACJ,GACHO,GACW,QAAXF,GACApC,KAAK4tB,kBAAkB7rB,GAAG6H,KAAKyjB,GAE/B,OAAOtrB,EACJ,IAAKO,GAAUtC,KAAK0tB,aAAa3rB,GAAG6H,KAAKyjB,GAC5C,OAAOtrB,IA01HnB6pB,GAAQ7c,YAxxHR,SAAqB9B,GACjB,OAAIjN,KAAKstB,mBACAxsB,EAAWd,KAAM,iBAClB2P,GAAmB/O,KAAKZ,MAExBiN,EACOjN,KAAKmQ,mBAELnQ,KAAKiQ,eAGXnP,EAAWd,KAAM,kBAClBA,KAAKiQ,aAAeX,IAEjBtP,KAAKmQ,oBAAsBlD,EAC5BjN,KAAKmQ,mBACLnQ,KAAKiQ,eAywHnB2b,GAAQ9c,iBA7yHR,SAA0B7B,GACtB,OAAIjN,KAAKstB,mBACAxsB,EAAWd,KAAM,iBAClB2P,GAAmB/O,KAAKZ,MAExBiN,EACOjN,KAAKoQ,wBAELpQ,KAAKkQ,oBAGXpP,EAAWd,KAAM,uBAClBA,KAAKkQ,kBAAoBb,IAEtBrP,KAAKoQ,yBAA2BnD,EACjCjN,KAAKoQ,wBACLpQ,KAAKkQ,oBA8xHnB0b,GAAQxa,KArhHR,SAAoB/H,GAChB,OAAOoI,GAAWpI,EAAKrJ,KAAK4c,MAAM7L,IAAK/Q,KAAK4c,MAAM5L,KAAKI,MAqhH3Dwa,GAAQiC,eAzgHR,WACI,OAAO7tB,KAAK4c,MAAM5L,KAygHtB4a,GAAQkC,eA9gHR,WACI,OAAO9tB,KAAK4c,MAAM7L,KA+gHtB6a,GAAQxZ,SAz5GR,SAAwB1P,EAAGN,GACvB,IAAIgQ,EAAW9R,EAAQN,KAAK+tB,WACtB/tB,KAAK+tB,UACL/tB,KAAK+tB,UACDrrB,IAAW,IAANA,GAAc1C,KAAK+tB,UAAUZ,SAASvjB,KAAKxH,GAC1C,SACA,cAEhB,OAAa,IAANM,EACDoP,GAAcM,EAAUpS,KAAK4c,MAAM7L,KACnCrO,EACA0P,EAAS1P,EAAE2Q,OACXjB,GA84GVwZ,GAAQ1Z,YAn4GR,SAA2BxP,GACvB,OAAa,IAANA,EACDoP,GAAc9R,KAAKguB,aAAchuB,KAAK4c,MAAM7L,KAC5CrO,EACA1C,KAAKguB,aAAatrB,EAAE2Q,OACpBrT,KAAKguB,cA+3GfpC,GAAQzZ,cA54GR,SAA6BzP,GACzB,OAAa,IAANA,EACDoP,GAAc9R,KAAKiuB,eAAgBjuB,KAAK4c,MAAM7L,KAC9CrO,EACA1C,KAAKiuB,eAAevrB,EAAE2Q,OACtBrT,KAAKiuB,gBAw4GfrC,GAAQpZ,cApzGR,SAA6B0b,EAAa9rB,EAAQE,GAC9C,IAAIP,EAAGsH,EAAK0D,EAEZ,GAAI/M,KAAKmuB,oBACL,OA7ER,SAA6BD,EAAa9rB,EAAQE,GAC9C,IAAIP,EACAwrB,EACAlkB,EACAmkB,EAAMU,EAAYT,oBACtB,IAAKztB,KAAKouB,eAKN,IAJApuB,KAAKouB,eAAiB,GACtBpuB,KAAKquB,oBAAsB,GAC3BruB,KAAKsuB,kBAAoB,GAEpBvsB,EAAI,EAAGA,EAAI,IAAKA,EACjBsH,EAAMlH,EAAU,CAAC,IAAM,IAAIkR,IAAItR,GAC/B/B,KAAKsuB,kBAAkBvsB,GAAK/B,KAAKkS,YAC7B7I,EACA,IACFokB,oBACFztB,KAAKquB,oBAAoBtsB,GAAK/B,KAAKmS,cAC/B9I,EACA,IACFokB,oBACFztB,KAAKouB,eAAersB,GAAK/B,KAAKoS,SAAS/I,EAAK,IAAIokB,oBAIxD,OAAInrB,EACe,SAAXF,GAEe,KADfmrB,EAAKxf,GAAQnN,KAAKZ,KAAKouB,eAAgBZ,IACpBD,EAAK,KACN,QAAXnrB,GAEQ,KADfmrB,EAAKxf,GAAQnN,KAAKZ,KAAKquB,oBAAqBb,IACzBD,EAAK,MAGT,KADfA,EAAKxf,GAAQnN,KAAKZ,KAAKsuB,kBAAmBd,IACvBD,EAAK,KAGb,SAAXnrB,GAEY,KADZmrB,EAAKxf,GAAQnN,KAAKZ,KAAKouB,eAAgBZ,MAK3B,KADZD,EAAKxf,GAAQnN,KAAKZ,KAAKquB,oBAAqBb,MAK7B,KADfD,EAAKxf,GAAQnN,KAAKZ,KAAKsuB,kBAAmBd,IAN/BD,EAOa,KACN,QAAXnrB,GAEK,KADZmrB,EAAKxf,GAAQnN,KAAKZ,KAAKquB,oBAAqBb,MAKhC,KADZD,EAAKxf,GAAQnN,KAAKZ,KAAKouB,eAAgBZ,MAKxB,KADfD,EAAKxf,GAAQnN,KAAKZ,KAAKsuB,kBAAmBd,IAN/BD,EAOa,MAGZ,KADZA,EAAKxf,GAAQnN,KAAKZ,KAAKsuB,kBAAmBd,MAK9B,KADZD,EAAKxf,GAAQnN,KAAKZ,KAAKouB,eAAgBZ,MAKxB,KADfD,EAAKxf,GAAQnN,KAAKZ,KAAKquB,oBAAqBb,IANjCD,EAOa,MASD3sB,KAAKZ,KAAMkuB,EAAa9rB,EAAQE,GAU/D,IAPKtC,KAAKouB,iBACNpuB,KAAKouB,eAAiB,GACtBpuB,KAAKsuB,kBAAoB,GACzBtuB,KAAKquB,oBAAsB,GAC3BruB,KAAKuuB,mBAAqB,IAGzBxsB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BAsH,EAAMlH,EAAU,CAAC,IAAM,IAAIkR,IAAItR,GAC3BO,IAAWtC,KAAKuuB,mBAAmBxsB,KACnC/B,KAAKuuB,mBAAmBxsB,GAAK,IAAIoL,OAC7B,IAAMnN,KAAKoS,SAAS/I,EAAK,IAAID,QAAQ,IAAK,QAAU,IACpD,KAEJpJ,KAAKquB,oBAAoBtsB,GAAK,IAAIoL,OAC9B,IAAMnN,KAAKmS,cAAc9I,EAAK,IAAID,QAAQ,IAAK,QAAU,IACzD,KAEJpJ,KAAKsuB,kBAAkBvsB,GAAK,IAAIoL,OAC5B,IAAMnN,KAAKkS,YAAY7I,EAAK,IAAID,QAAQ,IAAK,QAAU,IACvD,MAGHpJ,KAAKouB,eAAersB,KACrBgL,EACI,IACA/M,KAAKoS,SAAS/I,EAAK,IACnB,KACArJ,KAAKmS,cAAc9I,EAAK,IACxB,KACArJ,KAAKkS,YAAY7I,EAAK,IAC1BrJ,KAAKouB,eAAersB,GAAK,IAAIoL,OAAOJ,EAAM3D,QAAQ,IAAK,IAAK,MAI5D9G,GACW,SAAXF,GACApC,KAAKuuB,mBAAmBxsB,GAAG6H,KAAKskB,GAEhC,OAAOnsB,EACJ,GACHO,GACW,QAAXF,GACApC,KAAKquB,oBAAoBtsB,GAAG6H,KAAKskB,GAEjC,OAAOnsB,EACJ,GACHO,GACW,OAAXF,GACApC,KAAKsuB,kBAAkBvsB,GAAG6H,KAAKskB,GAE/B,OAAOnsB,EACJ,IAAKO,GAAUtC,KAAKouB,eAAersB,GAAG6H,KAAKskB,GAC9C,OAAOnsB,IAwvGnB6pB,GAAQrZ,cA3sGR,SAAuBtF,GACnB,OAAIjN,KAAKmuB,qBACArtB,EAAWd,KAAM,mBAClBgT,GAAqBpS,KAAKZ,MAE1BiN,EACOjN,KAAKyT,qBAELzT,KAAKsT,iBAGXxS,EAAWd,KAAM,oBAClBA,KAAKsT,eAAiBT,IAEnB7S,KAAKyT,sBAAwBxG,EAC9BjN,KAAKyT,qBACLzT,KAAKsT,iBA4rGnBsY,GAAQtZ,mBAxrGR,SAA4BrF,GACxB,OAAIjN,KAAKmuB,qBACArtB,EAAWd,KAAM,mBAClBgT,GAAqBpS,KAAKZ,MAE1BiN,EACOjN,KAAK0T,0BAEL1T,KAAKuT,sBAGXzS,EAAWd,KAAM,yBAClBA,KAAKuT,oBAAsBT,IAExB9S,KAAK0T,2BAA6BzG,EACnCjN,KAAK0T,0BACL1T,KAAKuT,sBAyqGnBqY,GAAQvZ,iBArqGR,SAA0BpF,GACtB,OAAIjN,KAAKmuB,qBACArtB,EAAWd,KAAM,mBAClBgT,GAAqBpS,KAAKZ,MAE1BiN,EACOjN,KAAK2T,wBAEL3T,KAAKwT,oBAGX1S,EAAWd,KAAM,uBAClBA,KAAKwT,kBAAoBT,IAEtB/S,KAAK2T,yBAA2B1G,EACjCjN,KAAK2T,wBACL3T,KAAKwT,oBAupGnBoY,GAAQvX,KAr+FR,SAAoB9T,GAGhB,MAAgD,OAAxCA,EAAQ,IAAI2J,cAAcskB,OAAO,IAm+F7C5C,GAAQnoB,SAz9FR,SAAwBoQ,EAAOE,EAAS0a,GACpC,OAAY,GAAR5a,EACO4a,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAijGhCjX,GAAmB,KAAM,CACrByN,KAAM,CACF,CACI4E,MAAO,aACPC,MAAQoD,EAAAA,EACRxM,OAAQ,EACRxZ,KAAM,cACNge,OAAQ,KACRpN,KAAM,MAEV,CACI+R,MAAO,aACPC,OAAQoD,EAAAA,EACRxM,OAAQ,EACRxZ,KAAM,gBACNge,OAAQ,KACRpN,KAAM,OAGdpC,uBAAwB,uBACxB9M,QAAS,SAAUjB,GACf,IAAI3G,EAAI2G,EAAS,GAWjB,OAAOA,GATgC,IAA/BsD,EAAOtD,EAAS,IAAO,IACjB,KACM,GAAN3G,EACA,KACM,GAANA,EACA,KACM,GAANA,EACA,KACA,SAOtBb,EAAMikB,KAAO/d,EACT,wDACAmR,IAEJrX,EAAMuuB,SAAWroB,EACb,gEACAuR,IAGJ,IAAI+W,GAAU5mB,KAAKC,IAmBnB,SAAS4mB,GAAcrP,EAAUhf,EAAO6K,EAAOqX,GAC3C,IAAIxD,EAAQ6C,GAAevhB,EAAO6K,GAMlC,OAJAmU,EAASW,eAAiBuC,EAAYxD,EAAMiB,cAC5CX,EAASY,OAASsC,EAAYxD,EAAMkB,MACpCZ,EAASa,SAAWqC,EAAYxD,EAAMmB,QAE/Bb,EAASe,UAapB,SAASuO,GAAQlnB,GACb,OAAIA,EAAS,EACFI,KAAKiD,MAAMrD,GAEXI,KAAKgD,KAAKpD,GA2DzB,SAASmnB,GAAajP,GAGlB,OAAe,KAAPA,EAAe,OAG3B,SAASkP,GAAalgB,GAElB,OAAiB,OAATA,EAAmB,KA4D/B,SAASmgB,GAAOC,GACZ,OAAO,WACH,OAAOjvB,KAAKkvB,GAAGD,IAIvB,IAAIE,GAAiBH,GAAO,MACxBI,GAAYJ,GAAO,KACnBK,GAAYL,GAAO,KACnBM,GAAUN,GAAO,KACjBO,GAASP,GAAO,KAChBQ,GAAUR,GAAO,KACjBS,GAAWT,GAAO,KAClBU,GAAaV,GAAO,KACpBW,GAAUX,GAAO,KAWrB,SAASY,GAAW1oB,GAChB,OAAO,WACH,OAAOlH,KAAK4D,UAAY5D,KAAKqgB,MAAMnZ,GAAQxC,KAInD,IAAIob,GAAe8P,GAAW,gBAC1B1b,GAAU0b,GAAW,WACrB7b,GAAU6b,GAAW,WACrB/b,GAAQ+b,GAAW,SACnB/P,GAAO+P,GAAW,QAClB/gB,GAAS+gB,GAAW,UACpBpQ,GAAQoQ,GAAW,SAMvB,IAAInP,GAAQ1Y,KAAK0Y,MACboP,GAAa,CACT/Z,GAAI,GACJpI,EAAG,GACHhL,EAAG,GACHsT,EAAG,GACHvD,EAAG,GACH0D,EAAG,KACHE,EAAG,IAQX,SAASyZ,GAAeC,EAAgBrI,EAAemI,EAAYxtB,GAC/D,IAAIkd,EAAWuC,GAAeiO,GAAgB/nB,MAC1CkM,EAAUuM,GAAMlB,EAAS2P,GAAG,MAC5Bnb,EAAU0M,GAAMlB,EAAS2P,GAAG,MAC5Brb,EAAQ4M,GAAMlB,EAAS2P,GAAG,MAC1BrP,EAAOY,GAAMlB,EAAS2P,GAAG,MACzBrgB,EAAS4R,GAAMlB,EAAS2P,GAAG,MAC3BvP,EAAQc,GAAMlB,EAAS2P,GAAG,MAC1B1P,EAAQiB,GAAMlB,EAAS2P,GAAG,MAC1BnuB,GACKmT,GAAW2b,EAAW/Z,GAAM,CAAC,IAAK5B,GAClCA,EAAU2b,EAAWniB,GAAK,CAAC,KAAMwG,KACjCH,GAAW,GAAK,CAAC,MACjBA,EAAU8b,EAAWntB,GAAK,CAAC,KAAMqR,IACjCF,GAAS,GAAK,CAAC,MACfA,EAAQgc,EAAW7Z,GAAK,CAAC,KAAMnC,IAC/BgM,GAAQ,GAAK,CAAC,MACdA,EAAOgQ,EAAWpd,GAAK,CAAC,KAAMoN,GAgBvC,OAdoB,MAAhBgQ,EAAW1Z,IACXpV,EACIA,GACC4e,GAAS,GAAK,CAAC,MACfA,EAAQkQ,EAAW1Z,GAAK,CAAC,KAAMwJ,KAExC5e,EAAIA,GACC8N,GAAU,GAAK,CAAC,MAChBA,EAASghB,EAAWxZ,GAAK,CAAC,KAAMxH,IAChC2Q,GAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,IAElC,GAAKkI,EACP3mB,EAAE,GAAuB,GAAjBgvB,EACRhvB,EAAE,GAAKsB,EApCX,SAA2ByX,EAAQnS,EAAQ+f,EAAemF,EAAUxqB,GAChE,OAAOA,EAAOsT,aAAahO,GAAU,IAAK+f,EAAe5N,EAAQ+S,IAoCxCzsB,MAAM,KAAMW,GAgEzC,IAAIivB,GAAQjoB,KAAKC,IAEjB,SAAS6Y,GAAKpS,GACV,OAAY,EAAJA,IAAUA,EAAI,KAAOA,EAGjC,SAASwhB,KAQL,IAAKjwB,KAAK4D,UACN,OAAO5D,KAAK+I,aAAaS,cAG7B,IAGIuK,EACAF,EACA2L,EACA9R,EAEAwiB,EACAC,EACAC,EACAC,EAXAnc,EAAU8b,GAAMhwB,KAAKkgB,eAAiB,IACtCL,EAAOmQ,GAAMhwB,KAAKmgB,OAClBtR,EAASmhB,GAAMhwB,KAAKogB,SAKpBkQ,EAAQtwB,KAAKovB,YAMjB,OAAKkB,GAOLvc,EAAUjJ,EAASoJ,EAAU,IAC7BL,EAAQ/I,EAASiJ,EAAU,IAC3BG,GAAW,GACXH,GAAW,GAGXyL,EAAQ1U,EAAS+D,EAAS,IAC1BA,GAAU,GAGVnB,EAAIwG,EAAUA,EAAQqc,QAAQ,GAAGnnB,QAAQ,SAAU,IAAM,GAEzD8mB,EAAYI,EAAQ,EAAI,IAAM,GAC9BH,EAAStP,GAAK7gB,KAAKogB,WAAaS,GAAKyP,GAAS,IAAM,GACpDF,EAAWvP,GAAK7gB,KAAKmgB,SAAWU,GAAKyP,GAAS,IAAM,GACpDD,EAAUxP,GAAK7gB,KAAKkgB,iBAAmBW,GAAKyP,GAAS,IAAM,GAGvDJ,EACA,KACC1Q,EAAQ2Q,EAAS3Q,EAAQ,IAAM,KAC/B3Q,EAASshB,EAASthB,EAAS,IAAM,KACjCgR,EAAOuQ,EAAWvQ,EAAO,IAAM,KAC/BhM,GAASE,GAAWG,EAAU,IAAM,KACpCL,EAAQwc,EAAUxc,EAAQ,IAAM,KAChCE,EAAUsc,EAAUtc,EAAU,IAAM,KACpCG,EAAUmc,EAAU3iB,EAAI,IAAM,KA9BxB,MAkCf,IAAI8iB,GAAUlR,GAAS5e,UAwGvB,OAtGA8vB,GAAQ5sB,QA/3ER,WACI,OAAO5D,KAAK6D,UA+3EhB2sB,GAAQxoB,IA3YR,WACI,IAAI2P,EAAO3X,KAAKqgB,MAahB,OAXArgB,KAAKkgB,cAAgByO,GAAQ3uB,KAAKkgB,eAClClgB,KAAKmgB,MAAQwO,GAAQ3uB,KAAKmgB,OAC1BngB,KAAKogB,QAAUuO,GAAQ3uB,KAAKogB,SAE5BzI,EAAKmI,aAAe6O,GAAQhX,EAAKmI,cACjCnI,EAAKzD,QAAUya,GAAQhX,EAAKzD,SAC5ByD,EAAK5D,QAAU4a,GAAQhX,EAAK5D,SAC5B4D,EAAK9D,MAAQ8a,GAAQhX,EAAK9D,OAC1B8D,EAAK9I,OAAS8f,GAAQhX,EAAK9I,QAC3B8I,EAAK6H,MAAQmP,GAAQhX,EAAK6H,OAEnBxf,MA8XXwwB,GAAQzR,IAhXR,SAAexe,EAAO6K,GAClB,OAAOwjB,GAAc5uB,KAAMO,EAAO6K,EAAO,IAgX7ColB,GAAQzN,SA5WR,SAAoBxiB,EAAO6K,GACvB,OAAOwjB,GAAc5uB,KAAMO,EAAO6K,GAAQ,IA4W9ColB,GAAQtB,GA/RR,SAAY9kB,GACR,IAAKpK,KAAK4D,UACN,OAAOc,IAEX,IAAImb,EACAhR,EACAiR,EAAe9f,KAAKkgB,cAIxB,GAAc,WAFd9V,EAAQD,EAAeC,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OAFAyV,EAAO7f,KAAKmgB,MAAQL,EAAe,MACnCjR,EAAS7O,KAAKogB,QAAU0O,GAAajP,GAC7BzV,GACJ,IAAK,QACD,OAAOyE,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,QAKxB,OADAgR,EAAO7f,KAAKmgB,MAAQpY,KAAK0Y,MAAMsO,GAAa/uB,KAAKogB,UACzChW,GACJ,IAAK,OACD,OAAOyV,EAAO,EAAIC,EAAe,OACrC,IAAK,MACD,OAAOD,EAAOC,EAAe,MACjC,IAAK,OACD,OAAc,GAAPD,EAAYC,EAAe,KACtC,IAAK,SACD,OAAc,KAAPD,EAAcC,EAAe,IACxC,IAAK,SACD,OAAc,MAAPD,EAAeC,EAAe,IAEzC,IAAK,cACD,OAAO/X,KAAKiD,MAAa,MAAP6U,GAAgBC,EACtC,QACI,MAAM,IAAIjZ,MAAM,gBAAkBuD,KAyPlDomB,GAAQrB,eAAiBA,GACzBqB,GAAQpB,UAAYA,GACpBoB,GAAQnB,UAAYA,GACpBmB,GAAQlB,QAAUA,GAClBkB,GAAQjB,OAASA,GACjBiB,GAAQhB,QAAUA,GAClBgB,GAAQf,SAAWA,GACnBe,GAAQd,WAAaA,GACrBc,GAAQb,QAAUA,GAClBa,GAAQtuB,QA5PR,WACI,OAAKlC,KAAK4D,UAIN5D,KAAKkgB,cACQ,MAAblgB,KAAKmgB,MACJngB,KAAKogB,QAAU,GAAM,OACK,QAA3BnV,EAAMjL,KAAKogB,QAAU,IANd1b,KA2Pf8rB,GAAQlQ,QA5WR,WACI,IAIIpM,EACAH,EACAF,EACA2L,EACAiR,EARA3Q,EAAe9f,KAAKkgB,cACpBL,EAAO7f,KAAKmgB,MACZtR,EAAS7O,KAAKogB,QACdzI,EAAO3X,KAAKqgB,MAgDhB,OArCyB,GAAhBP,GAA6B,GAARD,GAAuB,GAAVhR,GAClCiR,GAAgB,GAAKD,GAAQ,GAAKhR,GAAU,IAGjDiR,GAAuD,MAAvC+O,GAAQE,GAAalgB,GAAUgR,GAE/ChR,EADAgR,EAAO,GAMXlI,EAAKmI,aAAeA,EAAe,IAEnC5L,EAAUpJ,EAASgV,EAAe,KAClCnI,EAAKzD,QAAUA,EAAU,GAEzBH,EAAUjJ,EAASoJ,EAAU,IAC7ByD,EAAK5D,QAAUA,EAAU,GAEzBF,EAAQ/I,EAASiJ,EAAU,IAC3B4D,EAAK9D,MAAQA,EAAQ,GAErBgM,GAAQ/U,EAAS+I,EAAQ,IAIzBhF,GADA4hB,EAAiB3lB,EAASgkB,GAAajP,IAEvCA,GAAQgP,GAAQE,GAAa0B,IAG7BjR,EAAQ1U,EAAS+D,EAAS,IAC1BA,GAAU,GAEV8I,EAAKkI,KAAOA,EACZlI,EAAK9I,OAASA,EACd8I,EAAK6H,MAAQA,EAENxf,MAyTXwwB,GAAQlP,MAlOR,WACI,OAAOQ,GAAe9hB,OAkO1BwwB,GAAQ/kB,IA/NR,SAAerB,GAEX,OADAA,EAAQD,EAAeC,GAChBpK,KAAK4D,UAAY5D,KAAKoK,EAAQ,OAAS1F,KA8NlD8rB,GAAQ1Q,aAAeA,GACvB0Q,GAAQtc,QAAUA,GAClBsc,GAAQzc,QAAUA,GAClByc,GAAQ3c,MAAQA,GAChB2c,GAAQ3Q,KAAOA,GACf2Q,GAAQ7Q,MAlNR,WACI,OAAO7U,EAAS9K,KAAK6f,OAAS,IAkNlC2Q,GAAQ3hB,OAASA,GACjB2hB,GAAQhR,MAAQA,GAChBgR,GAAQ7I,SAlIR,SAAkB+I,EAAeC,GAC7B,IAAK3wB,KAAK4D,UACN,OAAO5D,KAAK+I,aAAaS,cAG7B,IAEInH,EACAiH,EAHAsnB,GAAa,EACbC,EAAKhB,GAyBT,MArB6B,iBAAlBa,IACPC,EAAgBD,EAChBA,GAAgB,GAES,kBAAlBA,IACPE,EAAaF,GAEY,iBAAlBC,IACPE,EAAKpwB,OAAOqwB,OAAO,GAAIjB,GAAYc,GACZ,MAAnBA,EAAcjjB,GAAiC,MAApBijB,EAAc7a,KACzC+a,EAAG/a,GAAK6a,EAAcjjB,EAAI,IAIlCrL,EAASrC,KAAK+I,aACdO,EAASwmB,GAAe9vB,MAAO4wB,EAAYC,EAAIxuB,GAE3CuuB,IACAtnB,EAASjH,EAAO0qB,YAAY/sB,KAAMsJ,IAG/BjH,EAAOolB,WAAWne,IAoG7BknB,GAAQxH,YAAciH,GACtBO,GAAQ7vB,SAAWsvB,GACnBO,GAAQ/G,OAASwG,GACjBO,GAAQnuB,OAASA,GACjBmuB,GAAQznB,WAAaA,GAErBynB,GAAQO,YAAc1qB,EAClB,sFACA4pB,IAEJO,GAAQpM,KAAOA,GAIf3b,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BqE,GAAc,IAAKJ,IACnBI,GAAc,IA9tJO,wBA+tJrBc,GAAc,IAAK,SAAUrN,EAAO2I,EAAOpD,GACvCA,EAAO5B,GAAK,IAAIxC,KAAyB,IAApBse,WAAWzf,MAEpCqN,GAAc,IAAK,SAAUrN,EAAO2I,EAAOpD,GACvCA,EAAO5B,GAAK,IAAIxC,KAAKuJ,EAAM1K,MAK/BJ,EAAM6wB,QAAU,SA/9KZ/wB,EAi+KY0c,GAEhBxc,EAAM0B,GAAK6kB,GACXvmB,EAAMsP,IAv/EN,WAGI,OAAO0P,GAAO,WAFH,GAAGxY,MAAM/F,KAAKP,UAAW,KAu/ExCF,EAAMgI,IAl/EN,WAGI,OAAOgX,GAAO,UAFH,GAAGxY,MAAM/F,KAAKP,UAAW,KAk/ExCF,EAAM0b,IA7+EI,WACN,OAAOna,KAAKma,IAAMna,KAAKma,OAAS,IAAIna,MA6+ExCvB,EAAMqC,IAAML,EACZhC,EAAMupB,KA1oBN,SAAoBnpB,GAChB,OAAOoc,GAAoB,IAARpc,IA0oBvBJ,EAAM0O,OAlhBN,SAAoBzM,EAAQ0pB,GACxB,OAAOG,GAAe7pB,EAAQ0pB,EAAO,WAkhBzC3rB,EAAMsB,OAASA,EACftB,EAAMkC,OAASmV,GACfrX,EAAM2iB,QAAUre,EAChBtE,EAAMof,SAAWuC,GACjB3hB,EAAM6F,SAAWA,EACjB7F,EAAMiS,SAhhBN,SAAsBga,EAAchqB,EAAQ0pB,GACxC,OAAOK,GAAiBC,EAAchqB,EAAQ0pB,EAAO,aAghBzD3rB,EAAMyqB,UA9oBN,WACI,OAAOjO,GAAYvc,MAAM,KAAMC,WAAWuqB,aA8oB9CzqB,EAAM4I,WAAa6O,GACnBzX,EAAMogB,WAAaA,GACnBpgB,EAAMyO,YAxhBN,SAAyBxM,EAAQ0pB,GAC7B,OAAOG,GAAe7pB,EAAQ0pB,EAAO,gBAwhBzC3rB,EAAM+R,YA7gBN,SAAyBka,EAAchqB,EAAQ0pB,GAC3C,OAAOK,GAAiBC,EAAchqB,EAAQ0pB,EAAO,gBA6gBzD3rB,EAAM0X,aAAeA,GACrB1X,EAAM8wB,aAn4GN,SAAsB/pB,EAAMpB,GACxB,IACQzD,EACA6uB,EACA5pB,EAsCR,OAzCc,MAAVxB,GAGIwB,EAAesN,GAEE,MAAjB6B,GAAQvP,IAA+C,MAA9BuP,GAAQvP,GAAM8Q,aAEvCvB,GAAQvP,GAAMO,IAAIJ,EAAaoP,GAAQvP,GAAM6Q,QAASjS,KAIrC,OADjBorB,EAAYla,GAAW9P,MAEnBI,EAAe4pB,EAAUnZ,SAE7BjS,EAASuB,EAAaC,EAAcxB,GACnB,MAAborB,IAIAprB,EAAOgS,KAAO5Q,IAElB7E,EAAS,IAAImF,EAAO1B,IACbkS,aAAevB,GAAQvP,GAC9BuP,GAAQvP,GAAQ7E,GAIpBmV,GAAmBtQ,IAGE,MAAjBuP,GAAQvP,KAC0B,MAA9BuP,GAAQvP,GAAM8Q,cACdvB,GAAQvP,GAAQuP,GAAQvP,GAAM8Q,aAC1B9Q,IAASsQ,MACTA,GAAmBtQ,IAEC,MAAjBuP,GAAQvP,WACRuP,GAAQvP,IAIpBuP,GAAQvP,IA01GnB/G,EAAMsW,QA/zGN,WACI,OAAO1P,EAAK0P,KA+zGhBtW,EAAMgS,cArhBN,SAA2Bia,EAAchqB,EAAQ0pB,GAC7C,OAAOK,GAAiBC,EAAchqB,EAAQ0pB,EAAO,kBAqhBzD3rB,EAAMgK,eAAiBA,EACvBhK,EAAMgxB,qBAtNN,SAAoCC,GAChC,YAAyB9sB,IAArB8sB,EACO3Q,GAEqB,mBAArB2Q,IACP3Q,GAAQ2Q,GACD,IAiNfjxB,EAAMkxB,sBA3MN,SAAqCC,EAAWC,GAC5C,YAA8BjtB,IAA1BurB,GAAWyB,UAGDhtB,IAAVitB,EACO1B,GAAWyB,IAEtBzB,GAAWyB,GAAaC,EACN,MAAdD,IACAzB,GAAW/Z,GAAKyb,EAAQ,IAErB,KAiMXpxB,EAAM8mB,eAr5DN,SAA2BuK,EAAU3V,GACjC,IAAIwF,EAAOmQ,EAASnQ,KAAKxF,EAAK,QAAQ,GACtC,OAAOwF,GAAQ,EACT,WACAA,GAAQ,EACR,WACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,WACA,YAw4DVlhB,EAAMO,UAAYgmB,GAGlBvmB,EAAMsxB,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnB1jB,KAAM,aACN2jB,KAAM,QACNC,aAAc,WACdC,QAAS,eACTxjB,KAAM,aACNN,MAAO,WAGJ9N"}
\ No newline at end of file
similarity index 94%
rename from website/js/vendor/slimselect/slimselect.css
rename to admin/js/vendors/slimselect/slimselect.css
index f7ca569..2a8df02 100644 (file)
@@ -2,20 +2,21 @@
   position   : relative;
   display    : inline-block;
   user-select: none;
   position   : relative;
   display    : inline-block;
   user-select: none;
-  color      : #000;
-  width      : 100%
+  color      : #666;
+  width      : 100%;
+  font-size: 11pt;
+  color: #000;
 }
 
 .ss-main .ss-single-selected {
   display         : flex;
   cursor          : pointer;
   width           : 100%;
 }
 
 .ss-main .ss-single-selected {
   display         : flex;
   cursor          : pointer;
   width           : 100%;
-  /* height          : 30px; */
+  height          : 30px;
   padding         : 6px;
   padding         : 6px;
-  /* border          : 1px solid #dcdee2; */
-  /* border-radius   : 4px; */
+  /* border          : 1px solid #dcdee2;
+  border-radius   : 4px; */
   background-color: #fff;
   background-color: #fff;
-  font-size: 11pt;
   outline         : 0;
   box-sizing      : border-box;
   /* transition      : background-color .2s */
   outline         : 0;
   box-sizing      : border-box;
   /* transition      : background-color .2s */
   min-height      : 30px;
   width           : 100%;
   padding         : 0 0 0 3px;
   min-height      : 30px;
   width           : 100%;
   padding         : 0 0 0 3px;
-  border          : 1px solid #dcdee2;
-  border-radius   : 2px;
+  /* border          : 1px solid #dcdee2; */
+  /* border-radius   : 4px; */
+  font-size: 11pt;
   background-color: #fff;
   outline         : 0;
   box-sizing      : border-box;
   background-color: #fff;
   outline         : 0;
   box-sizing      : border-box;
   align-items              : center;
   font-size                : 12px;
   padding                  : 3px 5px;
   align-items              : center;
   font-size                : 12px;
   padding                  : 3px 5px;
-  margin                   : 3px 5px 3px 0px;
-  color                    : #fff;
-  background-color         : #bbb;
-  /* border-radius            : 4px; */
+  margin                   : 1px 1px;
+  color                    : #000;
+  font-size: 11pt;
+  background-color         : #9ABCEA;
+  border-radius            : 2px;
   animation-name           : scaleIn;
   animation-duration       : .2s;
   animation-timing-function: ease-out;
   animation-name           : scaleIn;
   animation-duration       : .2s;
   animation-timing-function: ease-out;
 
 .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete {
   margin: 0 0 0 5px;
 
 .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete {
   margin: 0 0 0 5px;
-  cursor: pointer
+  cursor: pointer;
+  color: #f00;
 }
 
 .ss-main .ss-multi-selected .ss-add {
 }
 
 .ss-main .ss-multi-selected .ss-add {
 }
 
 .ss-content .ss-search input:focus {
 }
 
 .ss-content .ss-search input:focus {
-  box-shadow: 0 0 5px #bbb;
+  box-shadow: 0 0 5px #5897fb
 }
 
 .ss-content .ss-search .ss-addable {
 }
 
 .ss-content .ss-search .ss-addable {
 
 .ss-content .ss-list .ss-optgroup-label-selectable:hover {
   color           : #fff;
 
 .ss-content .ss-list .ss-optgroup-label-selectable:hover {
   color           : #fff;
-  background-color: #bbb;
+  background-color: #5897fb
 }
 
 .ss-content .ss-list .ss-option {
 }
 
 .ss-content .ss-list .ss-option {
 .ss-content .ss-list .ss-option:hover,
 .ss-content .ss-list .ss-option.ss-highlighted {
   color           : #fff;
 .ss-content .ss-list .ss-option:hover,
 .ss-content .ss-list .ss-option.ss-highlighted {
   color           : #fff;
-  background-color: #bbb;
+  background-color: #5897fb
 }
 
 .ss-content .ss-list .ss-option.ss-disabled {
 }
 
 .ss-content .ss-list .ss-option.ss-disabled {
 
 .ss-content .ss-list .ss-option .ss-search-highlight {
   background-color: #fffb8c
 
 .ss-content .ss-list .ss-option .ss-search-highlight {
   background-color: #fffb8c
-}
+}
\ No newline at end of file
diff --git a/admin/js/vendors/slimselect/slimselect.min.css b/admin/js/vendors/slimselect/slimselect.min.css
new file mode 100644 (file)
index 0000000..4dd68dc
--- /dev/null
@@ -0,0 +1 @@
+.ss-main{position:relative;display:inline-block;user-select:none;color:#666;width:100%;font-size:11pt;color:#000}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:30px;padding:6px;background-color:#fff;outline:0;box-sizing:border-box}.ss-main .ss-single-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#dedede}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px 0 6px;font-weight:700}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px 0 6px}.ss-main .ss-single-selected .ss-arrow span{border:solid #666;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:30px;width:100%;padding:0 0 0 3px;font-size:11pt;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-multi-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#666}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#dedede;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}100%{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}100%{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:1px 1px;color:#000;font-size:11pt;background-color:#9abcea;border-radius:2px;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer;color:red}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#666;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#666;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{position:absolute;width:100%;margin:-1px 0 0 0;box-sizing:border-box;border:solid 1px #dcdee2;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:8px 8px 6px 8px}.ss-content .ss-search.ss-hide{height:0;opacity:0;padding:0;margin:0}.ss-content .ss-search.ss-hide input{height:0;opacity:0;padding:0;margin:0}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0;height:30px;padding:6px 8px;margin:0;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-content .ss-search input::placeholder{color:#8a8a8a;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #5897fb}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box}.ss-content .ss-addable{padding-top:0}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px 6px 10px;font-weight:700}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option{padding:6px 10px 6px 10px;cursor:pointer;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option.ss-highlighted,.ss-content .ss-list .ss-option:hover{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#dedede;background-color:#fff}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#666;background-color:rgba(88,151,251,.1)}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#fffb8c}
\ No newline at end of file
diff --git a/admin/js/vendors/slimselect/slimselect.min.xx.js b/admin/js/vendors/slimselect/slimselect.min.xx.js
new file mode 100644 (file)
index 0000000..d396710
--- /dev/null
@@ -0,0 +1 @@
+!function webpackUniversalModuleDefinition(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports.SlimSelect=factory():root.SlimSelect=factory()}(window,(function(){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{enumerable:!0,get:getter})},__webpack_require__.r=function(exports){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.t=function(value,mode){if(1&mode&&(value=__webpack_require__(value)),8&mode)return value;if(4&mode&&"object"==typeof value&&value&&value.__esModule)return value;var ns=Object.create(null);if(__webpack_require__.r(ns),Object.defineProperty(ns,"default",{enumerable:!0,value:value}),2&mode&&"string"!=typeof value)for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module.default}:function getModuleExports(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=2)}([function(module,exports,__webpack_require__){"use strict";function hasClassInTree(element,className){function hasClass(e,c){return c&&e&&e.classList&&e.classList.contains(c)?e:null}function parentByClass(e,c){return e&&e!==document?hasClass(e,c)?e:parentByClass(e.parentNode,c):null}return hasClass(element,className)||parentByClass(element,className)}function ensureElementInView(container,element){var cTop=container.scrollTop+container.offsetTop,cBottom=cTop+container.clientHeight,eTop=element.offsetTop,eBottom=eTop+element.clientHeight;eTop<cTop?container.scrollTop-=cTop-eTop:eBottom>cBottom&&(container.scrollTop+=eBottom-cBottom)}function putContent(el,currentPosition,isOpen){var height=el.offsetHeight,rect=el.getBoundingClientRect(),elemTop=isOpen?rect.top:rect.top-height,elemBottom=isOpen?rect.bottom:rect.bottom+height;return elemTop<=0?"below":elemBottom>=window.innerHeight?"above":isOpen?currentPosition:"below"}function debounce(func,wait,immediate){var timeout;return void 0===wait&&(wait=100),void 0===immediate&&(immediate=!1),function(){for(var args=[],_i=0;_i<arguments.length;_i++)args[_i]=arguments[_i];var context=self,later=function(){timeout=null,immediate||func.apply(context,args)},callNow=immediate&&!timeout;clearTimeout(timeout),timeout=setTimeout(later,wait),callNow&&func.apply(context,args)}}function isValueInArrayOfObjects(selected,key,value){if(!Array.isArray(selected))return selected[key]===value;for(var _i=0,selected_1=selected;_i<selected_1.length;_i++){var s=selected_1[_i];if(s&&s[key]&&s[key]===value)return!0}return!1}function highlight(str,search,className){var completedString=str,regex=new RegExp("("+search.trim()+")(?![^<]*>[^<>]*</)","i");if(!str.match(regex))return str;var matchStartPosition=str.match(regex).index,matchEndPosition=matchStartPosition+str.match(regex)[0].toString().length,originalTextFoundByRegex=str.substring(matchStartPosition,matchEndPosition);return completedString=completedString.replace(regex,'<mark class="'+className+'">'+originalTextFoundByRegex+"</mark>")}function kebabCase(str){var result=str.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(function(match){return"-"+match.toLowerCase()}));return str[0]===str[0].toUpperCase()?result.substring(1):result}exports.__esModule=!0,exports.hasClassInTree=hasClassInTree,exports.ensureElementInView=ensureElementInView,exports.putContent=putContent,exports.debounce=debounce,exports.isValueInArrayOfObjects=isValueInArrayOfObjects,exports.highlight=highlight,exports.kebabCase=kebabCase,function(){var w=window;function CustomEvent(event,params){params=params||{bubbles:!1,cancelable:!1,detail:void 0};var evt=document.createEvent("CustomEvent");return evt.initCustomEvent(event,params.bubbles,params.cancelable,params.detail),evt}"function"!=typeof w.CustomEvent&&(CustomEvent.prototype=w.Event.prototype,w.CustomEvent=CustomEvent)}()},function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0;var Data=function(){function Data(info){this.contentOpen=!1,this.contentPosition="below",this.isOnChangeEnabled=!0,this.main=info.main,this.searchValue="",this.data=[],this.filtered=null,this.parseSelectData(),this.setSelectedFromSelect()}return Data.prototype.newOption=function(info){return{id:info.id?info.id:String(Math.floor(1e8*Math.random())),value:info.value?info.value:"",text:info.text?info.text:"",innerHTML:info.innerHTML?info.innerHTML:"",selected:!!info.selected&&info.selected,display:void 0===info.display||info.display,disabled:!!info.disabled&&info.disabled,placeholder:!!info.placeholder&&info.placeholder,class:info.class?info.class:void 0,data:info.data?info.data:{},mandatory:!!info.mandatory&&info.mandatory}},Data.prototype.add=function(data){this.data.push({id:String(Math.floor(1e8*Math.random())),value:data.value,text:data.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:data.mandatory,data:{}})},Data.prototype.parseSelectData=function(){this.data=[];for(var nodes,_i=0,nodes_1=this.main.select.element.childNodes;_i<nodes_1.length;_i++){var n=nodes_1[_i];if("OPTGROUP"===n.nodeName){for(var node,optgroup={label:n.label,options:[]},options,_a=0,options_1=n.childNodes;_a<options_1.length;_a++){var o=options_1[_a];if("OPTION"===o.nodeName){var option=this.pullOptionData(o);optgroup.options.push(option),option.placeholder&&""!==option.text.trim()&&(this.main.config.placeholderText=option.text)}}this.data.push(optgroup)}else if("OPTION"===n.nodeName){var option=this.pullOptionData(n);this.data.push(option),option.placeholder&&""!==option.text.trim()&&(this.main.config.placeholderText=option.text)}}},Data.prototype.pullOptionData=function(option){return{id:!!option.dataset&&option.dataset.id||String(Math.floor(1e8*Math.random())),value:option.value,text:option.text,innerHTML:option.innerHTML,selected:option.selected,disabled:option.disabled,placeholder:"true"===option.dataset.placeholder,class:option.className,style:option.style.cssText,data:option.dataset,mandatory:!!option.dataset&&"true"===option.dataset.mandatory}},Data.prototype.setSelectedFromSelect=function(){if(this.main.config.isMultiple){for(var options,newSelected=[],_i=0,options_2=this.main.select.element.options;_i<options_2.length;_i++){var o=options_2[_i];if(o.selected){var newOption=this.getObjectFromData(o.value,"value");newOption&&newOption.id&&newSelected.push(newOption.id)}}this.setSelected(newSelected,"id")}else{var element=this.main.select.element;if(-1!==element.selectedIndex){var option,value=element.options[element.selectedIndex].value;this.setSelected(value,"value")}}},Data.prototype.setSelected=function(value,type){void 0===type&&(type="id");for(var _i=0,_a=this.data;_i<_a.length;_i++){var d=_a[_i];if(d.hasOwnProperty("label")){if(d.hasOwnProperty("options")){var options=d.options;if(options)for(var _b=0,options_3=options;_b<options_3.length;_b++){var o=options_3[_b];o.placeholder||(o.selected=this.shouldBeSelected(o,value,type))}}}else d.selected=this.shouldBeSelected(d,value,type)}},Data.prototype.shouldBeSelected=function(option,value,type){if(void 0===type&&(type="id"),Array.isArray(value))for(var _i=0,value_1=value;_i<value_1.length;_i++){var v=value_1[_i];if(type in option&&String(option[type])===String(v))return!0}else if(type in option&&String(option[type])===String(value))return!0;return!1},Data.prototype.getSelected=function(){for(var value={text:"",placeholder:this.main.config.placeholderText},values=[],_i=0,_a=this.data;_i<_a.length;_i++){var d=_a[_i];if(d.hasOwnProperty("label")){if(d.hasOwnProperty("options")){var options=d.options;if(options)for(var _b=0,options_4=options;_b<options_4.length;_b++){var o=options_4[_b];o.selected&&(this.main.config.isMultiple?values.push(o):value=o)}}}else d.selected&&(this.main.config.isMultiple?values.push(d):value=d)}return this.main.config.isMultiple?values:value},Data.prototype.addToSelected=function(value,type){if(void 0===type&&(type="id"),this.main.config.isMultiple){var values=[],selected=this.getSelected();if(Array.isArray(selected))for(var _i=0,selected_1=selected;_i<selected_1.length;_i++){var s=selected_1[_i];values.push(s[type])}values.push(value),this.setSelected(values,type)}},Data.prototype.removeFromSelected=function(value,type){if(void 0===type&&(type="id"),this.main.config.isMultiple){for(var values=[],selected,_i=0,selected_2=this.getSelected();_i<selected_2.length;_i++){var s=selected_2[_i];String(s[type])!==String(value)&&values.push(s[type])}this.setSelected(values,type)}},Data.prototype.onDataChange=function(){this.main.onChange&&this.isOnChangeEnabled&&this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())))},Data.prototype.getObjectFromData=function(value,type){void 0===type&&(type="id");for(var _i=0,_a=this.data;_i<_a.length;_i++){var d=_a[_i];if(type in d&&String(d[type])===String(value))return d;if(d.hasOwnProperty("options")){var optgroupObject=d;if(optgroupObject.options)for(var _b=0,_c=optgroupObject.options;_b<_c.length;_b++){var oo=_c[_b];if(String(oo[type])===String(value))return oo}}}return null},Data.prototype.search=function(search){if(this.searchValue=search,""!==search.trim()){var searchFilter=this.main.config.searchFilter,valuesArray=this.data.slice(0);search=search.trim();var filtered=valuesArray.map((function(obj){if(obj.hasOwnProperty("options")){var optgroupObj=obj,options=[];if(optgroupObj.options&&(options=optgroupObj.options.filter((function(opt){return searchFilter(opt,search)}))),0!==options.length){var optgroup=Object.assign({},optgroupObj);return optgroup.options=options,optgroup}}var optionObj;if(obj.hasOwnProperty("text")&&searchFilter(obj,search))return obj;return null}));this.filtered=filtered.filter((function(info){return info}))}else this.filtered=null},Data}();function validateData(data){if(!data)return console.error("Data must be an array of objects"),!1;for(var isValid=!1,errorCount=0,_i=0,data_1=data;_i<data_1.length;_i++){var d=data_1[_i],option;if(d.hasOwnProperty("label")){if(d.hasOwnProperty("options")){var optgroup,options=d.options;if(options)for(var _a=0,options_5=options;_a<options_5.length;_a++){var o;(isValid=validateOption(options_5[_a]))||errorCount++}}}else(isValid=validateOption(d))||errorCount++}return 0===errorCount}function validateOption(option){return void 0!==option.text||(console.error("Data object option must have at least have a text value. Check object: "+JSON.stringify(option)),!1)}exports.Data=Data,exports.validateData=validateData,exports.validateOption=validateOption},function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0;var config_1=__webpack_require__(3),select_1=__webpack_require__(4),slim_1=__webpack_require__(5),data_1=__webpack_require__(1),helper_1=__webpack_require__(0),SlimSelect=function(){function SlimSelect(info){var _this=this;this.ajax=null,this.addable=null,this.beforeOnChange=null,this.onChange=null,this.beforeOpen=null,this.afterOpen=null,this.beforeClose=null,this.afterClose=null;var selectElement=this.validate(info);selectElement.dataset.ssid&&this.destroy(selectElement.dataset.ssid),info.ajax&&(this.ajax=info.ajax),info.addable&&(this.addable=info.addable),this.config=new config_1.Config({select:selectElement,isAjax:!!info.ajax,showSearch:info.showSearch,searchPlaceholder:info.searchPlaceholder,searchText:info.searchText,searchingText:info.searchingText,searchFocus:info.searchFocus,searchHighlight:info.searchHighlight,searchFilter:info.searchFilter,closeOnSelect:info.closeOnSelect,showContent:info.showContent,placeholderText:info.placeholder,allowDeselect:info.allowDeselect,allowDeselectOption:info.allowDeselectOption,hideSelectedOption:info.hideSelectedOption,deselectLabel:info.deselectLabel,isEnabled:info.isEnabled,valuesUseText:info.valuesUseText,showOptionTooltips:info.showOptionTooltips,selectByGroup:info.selectByGroup,limit:info.limit,timeoutDelay:info.timeoutDelay,addToBody:info.addToBody}),this.select=new select_1.Select({select:selectElement,main:this}),this.data=new data_1.Data({main:this}),this.slim=new slim_1.Slim({main:this}),this.select.element.parentNode&&this.select.element.parentNode.insertBefore(this.slim.container,this.select.element.nextSibling),info.data?this.setData(info.data):this.render(),document.addEventListener("click",(function(e){e.target&&!helper_1.hasClassInTree(e.target,_this.config.id)&&_this.close()})),"auto"===this.config.showContent&&window.addEventListener("scroll",helper_1.debounce((function(e){_this.data.contentOpen&&("above"===helper_1.putContent(_this.slim.content,_this.data.contentPosition,_this.data.contentOpen)?_this.moveContentAbove():_this.moveContentBelow())})),!1),info.beforeOnChange&&(this.beforeOnChange=info.beforeOnChange),info.onChange&&(this.onChange=info.onChange),info.beforeOpen&&(this.beforeOpen=info.beforeOpen),info.afterOpen&&(this.afterOpen=info.afterOpen),info.beforeClose&&(this.beforeClose=info.beforeClose),info.afterClose&&(this.afterClose=info.afterClose),this.config.isEnabled||this.disable()}return SlimSelect.prototype.validate=function(info){var select="string"==typeof info.select?document.querySelector(info.select):info.select;if(!select)throw new Error("Could not find select element");if("SELECT"!==select.tagName)throw new Error("Element isnt of type select");return select},SlimSelect.prototype.selected=function(){if(this.config.isMultiple){for(var selected,outputSelected=[],_i=0,selected_1=selected=this.data.getSelected();_i<selected_1.length;_i++){var s=selected_1[_i];outputSelected.push(s.value)}return outputSelected}var selected;return(selected=this.data.getSelected())?selected.value:""},SlimSelect.prototype.set=function(value,type,close,render){void 0===type&&(type="value"),void 0===close&&(close=!0),void 0===render&&(render=!0),this.config.isMultiple&&!Array.isArray(value)?this.data.addToSelected(value,type):this.data.setSelected(value,type),this.select.setValue(),this.data.onDataChange(),this.render(),close&&this.close()},SlimSelect.prototype.setSelected=function(value,type,close,render){void 0===type&&(type="value"),void 0===close&&(close=!0),void 0===render&&(render=!0),this.set(value,type,close,render)},SlimSelect.prototype.setData=function(data){var isValid;if(data_1.validateData(data)){var newData=JSON.parse(JSON.stringify(data)),selected=this.data.getSelected();if(this.config.isAjax&&selected)if(this.config.isMultiple)for(var reverseSelected,_i=0,reverseSelected_1=selected.reverse();_i<reverseSelected_1.length;_i++){var r=reverseSelected_1[_i];newData.unshift(r)}else newData.unshift(this.data.getSelected()),newData.unshift({text:"",placeholder:!0});this.select.create(newData),this.data.parseSelectData(),this.data.setSelectedFromSelect()}else console.error("Validation problem on: #"+this.select.element.id)},SlimSelect.prototype.addData=function(data){var isValid;data_1.validateData([data])?(this.data.add(this.data.newOption(data)),this.select.create(this.data.data),this.data.parseSelectData(),this.data.setSelectedFromSelect(),this.render()):console.error("Validation problem on: #"+this.select.element.id)},SlimSelect.prototype.open=function(){var _this=this;if(this.config.isEnabled&&!this.data.contentOpen){if(this.beforeOpen&&this.beforeOpen(),this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.plus.classList.add("ss-cross"):this.slim.singleSelected&&(this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-up")),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add("above"===this.data.contentPosition?this.config.openAbove:this.config.openBelow),this.config.addToBody){var containerRect=this.slim.container.getBoundingClientRect();this.slim.content.style.top=containerRect.top+containerRect.height+window.scrollY+"px",this.slim.content.style.left=containerRect.left+window.scrollX+"px",this.slim.content.style.width=containerRect.width+"px"}if(this.slim.content.classList.add(this.config.open),"up"===this.config.showContent.toLowerCase()?this.moveContentAbove():"down"===this.config.showContent.toLowerCase()?this.moveContentBelow():"above"===helper_1.putContent(this.slim.content,this.data.contentPosition,this.data.contentOpen)?this.moveContentAbove():this.moveContentBelow(),!this.config.isMultiple){var selected=this.data.getSelected();if(selected){var selectedId=selected.id,selectedOption=this.slim.list.querySelector('[data-id="'+selectedId+'"]');selectedOption&&helper_1.ensureElementInView(this.slim.list,selectedOption)}}setTimeout((function(){_this.data.contentOpen=!0,_this.config.searchFocus&&_this.slim.search.input.focus(),_this.afterOpen&&_this.afterOpen()}),this.config.timeoutDelay)}},SlimSelect.prototype.close=function(){var _this=this;this.data.contentOpen&&(this.beforeClose&&this.beforeClose(),this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.plus.classList.remove("ss-cross")):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-up")),this.slim.content.classList.remove(this.config.open),this.data.contentOpen=!1,this.search(""),setTimeout((function(){_this.slim.content.removeAttribute("style"),_this.data.contentPosition="below",_this.config.isMultiple&&_this.slim.multiSelected?(_this.slim.multiSelected.container.classList.remove(_this.config.openAbove),_this.slim.multiSelected.container.classList.remove(_this.config.openBelow)):_this.slim.singleSelected&&(_this.slim.singleSelected.container.classList.remove(_this.config.openAbove),_this.slim.singleSelected.container.classList.remove(_this.config.openBelow)),_this.slim.search.input.blur(),_this.afterClose&&_this.afterClose()}),this.config.timeoutDelay))},SlimSelect.prototype.moveContentAbove=function(){var selectHeight=0;this.config.isMultiple&&this.slim.multiSelected?selectHeight=this.slim.multiSelected.container.offsetHeight:this.slim.singleSelected&&(selectHeight=this.slim.singleSelected.container.offsetHeight);var contentHeight,height=selectHeight+this.slim.content.offsetHeight-1;this.slim.content.style.margin="-"+height+"px 0 0 0",this.slim.content.style.height=height-selectHeight+1+"px",this.slim.content.style.transformOrigin="center bottom",this.data.contentPosition="above",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.container.classList.add(this.config.openAbove)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.container.classList.add(this.config.openAbove))},SlimSelect.prototype.moveContentBelow=function(){this.data.contentPosition="below",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.add(this.config.openBelow)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.add(this.config.openBelow))},SlimSelect.prototype.enable=function(){this.config.isEnabled=!0,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.remove(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.remove(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!1,this.slim.search.input.disabled=!1,this.select.triggerMutationObserver=!0},SlimSelect.prototype.disable=function(){this.config.isEnabled=!1,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.add(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.add(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!0,this.slim.search.input.disabled=!0,this.select.triggerMutationObserver=!0},SlimSelect.prototype.search=function(value){if(this.data.searchValue!==value)if(this.slim.search.input.value=value,this.config.isAjax){var master_1=this;this.config.isSearching=!0,this.render(),this.ajax&&this.ajax(value,(function(info){master_1.config.isSearching=!1,Array.isArray(info)?(info.unshift({text:"",placeholder:!0}),master_1.setData(info),master_1.data.search(value),master_1.render()):"string"==typeof info?master_1.slim.options(info):master_1.render()}))}else this.data.search(value),this.render()},SlimSelect.prototype.setSearchText=function(text){this.config.searchText=text},SlimSelect.prototype.render=function(){this.config.isMultiple?this.slim.values():(this.slim.placeholder(),this.slim.deselect()),this.slim.options()},SlimSelect.prototype.destroy=function(id){void 0===id&&(id=null);var slim=id?document.querySelector("."+id+".ss-main"):this.slim.container,select=id?document.querySelector("[data-ssid="+id+"]"):this.select.element,el;if(slim&&select&&(select.style.display="",delete select.dataset.ssid,select.slim=null,slim.parentElement&&slim.parentElement.removeChild(slim),this.config.addToBody)){var slimContent=id?document.querySelector("."+id+".ss-content"):this.slim.content;if(!slimContent)return;document.body.removeChild(slimContent)}},SlimSelect}();exports.default=SlimSelect},function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0;var Config=function(){function Config(info){this.id="",this.isMultiple=!1,this.isAjax=!1,this.isSearching=!1,this.showSearch=!0,this.searchFocus=!0,this.searchHighlight=!1,this.closeOnSelect=!0,this.showContent="auto",this.searchPlaceholder="Search",this.searchText="No Results",this.searchingText="Searching...",this.placeholderText="Select Value",this.allowDeselect=!1,this.allowDeselectOption=!1,this.hideSelectedOption=!1,this.deselectLabel="x",this.isEnabled=!0,this.valuesUseText=!1,this.showOptionTooltips=!1,this.selectByGroup=!1,this.limit=0,this.timeoutDelay=200,this.addToBody=!1,this.main="ss-main",this.singleSelected="ss-single-selected",this.arrow="ss-arrow",this.multiSelected="ss-multi-selected",this.add="ss-add",this.plus="ss-plus",this.values="ss-values",this.value="ss-value",this.valueText="ss-value-text",this.valueDelete="ss-value-delete",this.content="ss-content",this.open="ss-open",this.openAbove="ss-open-above",this.openBelow="ss-open-below",this.search="ss-search",this.searchHighlighter="ss-search-highlight",this.addable="ss-addable",this.list="ss-list",this.optgroup="ss-optgroup",this.optgroupLabel="ss-optgroup-label",this.optgroupLabelSelectable="ss-optgroup-label-selectable",this.option="ss-option",this.optionSelected="ss-option-selected",this.highlighted="ss-highlighted",this.disabled="ss-disabled",this.hide="ss-hide",this.id="ss-"+Math.floor(1e5*Math.random()),this.style=info.select.style.cssText,this.class=info.select.className.split(" "),this.isMultiple=info.select.multiple,this.isAjax=info.isAjax,this.showSearch=!1!==info.showSearch,this.searchFocus=!1!==info.searchFocus,this.searchHighlight=!0===info.searchHighlight,this.closeOnSelect=!1!==info.closeOnSelect,info.showContent&&(this.showContent=info.showContent),this.isEnabled=!1!==info.isEnabled,info.searchPlaceholder&&(this.searchPlaceholder=info.searchPlaceholder),info.searchText&&(this.searchText=info.searchText),info.searchingText&&(this.searchingText=info.searchingText),info.placeholderText&&(this.placeholderText=info.placeholderText),this.allowDeselect=!0===info.allowDeselect,this.allowDeselectOption=!0===info.allowDeselectOption,this.hideSelectedOption=!0===info.hideSelectedOption,info.deselectLabel&&(this.deselectLabel=info.deselectLabel),info.valuesUseText&&(this.valuesUseText=info.valuesUseText),info.showOptionTooltips&&(this.showOptionTooltips=info.showOptionTooltips),info.selectByGroup&&(this.selectByGroup=info.selectByGroup),info.limit&&(this.limit=info.limit),info.searchFilter&&(this.searchFilter=info.searchFilter),null!=info.timeoutDelay&&(this.timeoutDelay=info.timeoutDelay),this.addToBody=!0===info.addToBody}return Config.prototype.searchFilter=function(opt,search){return-1!==opt.text.toLowerCase().indexOf(search.toLowerCase())},Config}();exports.Config=Config},function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0;var helper_1=__webpack_require__(0),Select=function(){function Select(info){var el;this.triggerMutationObserver=!0,this.element=info.select,this.main=info.main,this.element.disabled&&(this.main.config.isEnabled=!1),this.addAttributes(),this.addEventListeners(),this.mutationObserver=null,this.addMutationObserver(),this.element.slim=info.main}return Select.prototype.setValue=function(){if(this.main.data.getSelected()){if(this.main.config.isMultiple)for(var selected=this.main.data.getSelected(),options,_i=0,options_1=this.element.options;_i<options_1.length;_i++){var o=options_1[_i];o.selected=!1;for(var _a=0,selected_1=selected;_a<selected_1.length;_a++){var s;selected_1[_a].value===o.value&&(o.selected=!0)}}else{var selected=this.main.data.getSelected();this.element.value=selected?selected.value:""}this.main.data.isOnChangeEnabled=!1,this.element.dispatchEvent(new CustomEvent("change",{bubbles:!0})),this.main.data.isOnChangeEnabled=!0}},Select.prototype.addAttributes=function(){this.element.tabIndex=-1,this.element.style.display="none",this.element.dataset.ssid=this.main.config.id},Select.prototype.addEventListeners=function(){var _this=this;this.element.addEventListener("change",(function(e){_this.main.data.setSelectedFromSelect(),_this.main.render()}))},Select.prototype.addMutationObserver=function(){var _this=this;this.main.config.isAjax||(this.mutationObserver=new MutationObserver((function(mutations){_this.triggerMutationObserver&&(_this.main.data.parseSelectData(),_this.main.data.setSelectedFromSelect(),_this.main.render(),mutations.forEach((function(mutation){"class"===mutation.attributeName&&_this.main.slim.updateContainerDivClass(_this.main.slim.container)})))})),this.observeMutationObserver())},Select.prototype.observeMutationObserver=function(){this.mutationObserver&&this.mutationObserver.observe(this.element,{attributes:!0,childList:!0,characterData:!0})},Select.prototype.disconnectMutationObserver=function(){this.mutationObserver&&this.mutationObserver.disconnect()},Select.prototype.create=function(data){this.element.innerHTML="";for(var _i=0,data_1=data;_i<data_1.length;_i++){var d=data_1[_i];if(d.hasOwnProperty("options")){var optgroupObject=d,optgroupEl=document.createElement("optgroup");if(optgroupEl.label=optgroupObject.label,optgroupObject.options)for(var _a=0,_b=optgroupObject.options;_a<_b.length;_a++){var oo=_b[_a];optgroupEl.appendChild(this.createOption(oo))}this.element.appendChild(optgroupEl)}else this.element.appendChild(this.createOption(d))}},Select.prototype.createOption=function(info){var optionEl=document.createElement("option");return optionEl.value=""!==info.value?info.value:info.text,optionEl.innerHTML=info.innerHTML||info.text,info.selected&&(optionEl.selected=info.selected),!1===info.display&&(optionEl.style.display="none"),info.disabled&&(optionEl.disabled=!0),info.placeholder&&optionEl.setAttribute("data-placeholder","true"),info.mandatory&&optionEl.setAttribute("data-mandatory","true"),info.class&&info.class.split(" ").forEach((function(optionClass){optionEl.classList.add(optionClass)})),info.data&&"object"==typeof info.data&&Object.keys(info.data).forEach((function(key){optionEl.setAttribute("data-"+helper_1.kebabCase(key),info.data[key])})),optionEl},Select}();exports.Select=Select},function(module,exports,__webpack_require__){"use strict";exports.__esModule=!0;var helper_1=__webpack_require__(0),data_1=__webpack_require__(1),Slim=function(){function Slim(info){this.main=info.main,this.container=this.containerDiv(),this.content=this.contentDiv(),this.search=this.searchDiv(),this.list=this.listDiv(),this.options(),this.singleSelected=null,this.multiSelected=null,this.main.config.isMultiple?(this.multiSelected=this.multiSelectedDiv(),this.multiSelected&&this.container.appendChild(this.multiSelected.container)):(this.singleSelected=this.singleSelectedDiv(),this.container.appendChild(this.singleSelected.container)),this.main.config.addToBody?(this.content.classList.add(this.main.config.id),document.body.appendChild(this.content)):this.container.appendChild(this.content),this.content.appendChild(this.search.container),this.content.appendChild(this.list)}return Slim.prototype.containerDiv=function(){var container=document.createElement("div");return container.style.cssText=this.main.config.style,this.updateContainerDivClass(container),container},Slim.prototype.updateContainerDivClass=function(container){this.main.config.class=this.main.select.element.className.split(" "),container.className="",container.classList.add(this.main.config.id),container.classList.add(this.main.config.main);for(var _i=0,_a=this.main.config.class;_i<_a.length;_i++){var c=_a[_i];""!==c.trim()&&container.classList.add(c)}},Slim.prototype.singleSelectedDiv=function(){var _this=this,container=document.createElement("div");container.classList.add(this.main.config.singleSelected);var placeholder=document.createElement("span");placeholder.classList.add("placeholder"),container.appendChild(placeholder);var deselect=document.createElement("span");deselect.innerHTML=this.main.config.deselectLabel,deselect.classList.add("ss-deselect"),deselect.onclick=function(e){e.stopPropagation(),_this.main.config.isEnabled&&_this.main.set("")},container.appendChild(deselect);var arrowContainer=document.createElement("span");arrowContainer.classList.add(this.main.config.arrow);var arrowIcon=document.createElement("span");return arrowIcon.classList.add("arrow-down"),arrowContainer.appendChild(arrowIcon),container.appendChild(arrowContainer),container.onclick=function(){_this.main.config.isEnabled&&(_this.main.data.contentOpen?_this.main.close():_this.main.open())},{container:container,placeholder:placeholder,deselect:deselect,arrowIcon:{container:arrowContainer,arrow:arrowIcon}}},Slim.prototype.placeholder=function(){var selected=this.main.data.getSelected();if(null===selected||selected&&selected.placeholder){var placeholder=document.createElement("span");placeholder.classList.add(this.main.config.disabled),placeholder.innerHTML=this.main.config.placeholderText,this.singleSelected&&(this.singleSelected.placeholder.innerHTML=placeholder.outerHTML)}else{var selectedValue="";selected&&(selectedValue=selected.innerHTML&&!0!==this.main.config.valuesUseText?selected.innerHTML:selected.text),this.singleSelected&&(this.singleSelected.placeholder.innerHTML=selected?selectedValue:"")}},Slim.prototype.deselect=function(){if(this.singleSelected){if(!this.main.config.allowDeselect)return void this.singleSelected.deselect.classList.add("ss-hide");""===this.main.selected()?this.singleSelected.deselect.classList.add("ss-hide"):this.singleSelected.deselect.classList.remove("ss-hide")}},Slim.prototype.multiSelectedDiv=function(){var _this=this,container=document.createElement("div");container.classList.add(this.main.config.multiSelected);var values=document.createElement("div");values.classList.add(this.main.config.values),container.appendChild(values);var add=document.createElement("div");add.classList.add(this.main.config.add);var plus=document.createElement("span");return plus.classList.add(this.main.config.plus),plus.onclick=function(e){_this.main.data.contentOpen&&(_this.main.close(),e.stopPropagation())},add.appendChild(plus),container.appendChild(add),container.onclick=function(e){var target;_this.main.config.isEnabled&&(e.target.classList.contains(_this.main.config.valueDelete)||(_this.main.data.contentOpen?_this.main.close():_this.main.open()))},{container:container,values:values,add:add,plus:plus}},Slim.prototype.values=function(){if(this.multiSelected){for(var currentNodes=this.multiSelected.values.childNodes,selected=this.main.data.getSelected(),exists,nodesToRemove=[],_i=0,currentNodes_1=currentNodes;_i<currentNodes_1.length;_i++){var c=currentNodes_1[_i];exists=!0;for(var _a=0,selected_1=selected;_a<selected_1.length;_a++){var s=selected_1[_a];String(s.id)===String(c.dataset.id)&&(exists=!1)}exists&&nodesToRemove.push(c)}for(var _b=0,nodesToRemove_1=nodesToRemove;_b<nodesToRemove_1.length;_b++){var n=nodesToRemove_1[_b];n.classList.add("ss-out"),this.multiSelected.values.removeChild(n)}currentNodes=this.multiSelected.values.childNodes;for(var s=0;s<selected.length;s++){exists=!1;for(var _c=0,currentNodes_2=currentNodes;_c<currentNodes_2.length;_c++){var c=currentNodes_2[_c];String(selected[s].id)===String(c.dataset.id)&&(exists=!0)}exists||(0!==currentNodes.length&&HTMLElement.prototype.insertAdjacentElement?0===s?this.multiSelected.values.insertBefore(this.valueDiv(selected[s]),currentNodes[s]):currentNodes[s-1].insertAdjacentElement("afterend",this.valueDiv(selected[s])):this.multiSelected.values.appendChild(this.valueDiv(selected[s])))}if(0===selected.length){var placeholder=document.createElement("span");placeholder.classList.add(this.main.config.disabled),placeholder.innerHTML=this.main.config.placeholderText,this.multiSelected.values.innerHTML=placeholder.outerHTML}}},Slim.prototype.valueDiv=function(optionObj){var _this=this,value=document.createElement("div");value.classList.add(this.main.config.value),value.dataset.id=optionObj.id;var text=document.createElement("span");if(text.classList.add(this.main.config.valueText),text.innerHTML=optionObj.innerHTML&&!0!==this.main.config.valuesUseText?optionObj.innerHTML:optionObj.text,value.appendChild(text),!optionObj.mandatory){var deleteSpan=document.createElement("span");deleteSpan.classList.add(this.main.config.valueDelete),deleteSpan.innerHTML=this.main.config.deselectLabel,deleteSpan.onclick=function(e){e.preventDefault(),e.stopPropagation();var shouldUpdate=!1;if(_this.main.beforeOnChange||(shouldUpdate=!0),_this.main.beforeOnChange){for(var selected=_this.main.data.getSelected(),currentValues=JSON.parse(JSON.stringify(selected)),i=0;i<currentValues.length;i++)currentValues[i].id===optionObj.id&&currentValues.splice(i,1);var beforeOnchange;!1!==_this.main.beforeOnChange(currentValues)&&(shouldUpdate=!0)}shouldUpdate&&(_this.main.data.removeFromSelected(optionObj.id,"id"),_this.main.render(),_this.main.select.setValue(),_this.main.data.onDataChange())},value.appendChild(deleteSpan)}return value},Slim.prototype.contentDiv=function(){var container=document.createElement("div");return container.classList.add(this.main.config.content),container},Slim.prototype.searchDiv=function(){var _this=this,container=document.createElement("div"),input=document.createElement("input"),addable=document.createElement("div");container.classList.add(this.main.config.search);var searchReturn={container:container,input:input};return this.main.config.showSearch||(container.classList.add(this.main.config.hide),input.readOnly=!0),input.type="search",input.placeholder=this.main.config.searchPlaceholder,input.tabIndex=0,input.setAttribute("aria-label",this.main.config.searchPlaceholder),input.setAttribute("autocapitalize","off"),input.setAttribute("autocomplete","off"),input.setAttribute("autocorrect","off"),input.onclick=function(e){setTimeout((function(){var target;""===e.target.value&&_this.main.search("")}),10)},input.onkeydown=function(e){"ArrowUp"===e.key?(_this.main.open(),_this.highlightUp(),e.preventDefault()):"ArrowDown"===e.key?(_this.main.open(),_this.highlightDown(),e.preventDefault()):"Tab"===e.key?_this.main.data.contentOpen?_this.main.close():setTimeout((function(){_this.main.close()}),_this.main.config.timeoutDelay):"Enter"===e.key&&e.preventDefault()},input.onkeyup=function(e){var target=e.target;if("Enter"===e.key){if(_this.main.addable&&e.ctrlKey)return addable.click(),e.preventDefault(),void e.stopPropagation();var highlighted=_this.list.querySelector("."+_this.main.config.highlighted);highlighted&&highlighted.click()}else"ArrowUp"===e.key||"ArrowDown"===e.key||("Escape"===e.key?_this.main.close():_this.main.config.showSearch&&_this.main.data.contentOpen?_this.main.search(target.value):input.value="");e.preventDefault(),e.stopPropagation()},input.onfocus=function(){_this.main.open()},container.appendChild(input),this.main.addable&&(addable.classList.add(this.main.config.addable),addable.innerHTML="+",addable.onclick=function(e){if(_this.main.addable){e.preventDefault(),e.stopPropagation();var inputValue=_this.search.input.value;if(""===inputValue.trim())return void _this.search.input.focus();var addableValue=_this.main.addable(inputValue),addableValueStr_1="",validValue;if(!addableValue)return;if("object"==typeof addableValue)data_1.validateOption(addableValue)&&(_this.main.addData(addableValue),addableValueStr_1=addableValue.value?addableValue.value:addableValue.text);else _this.main.addData(_this.main.data.newOption({text:addableValue,value:addableValue})),addableValueStr_1=addableValue;_this.main.search(""),setTimeout((function(){_this.main.set(addableValueStr_1,"value",!1,!1)}),100),_this.main.config.closeOnSelect&&setTimeout((function(){_this.main.close()}),100)}},container.appendChild(addable),searchReturn.addable=addable),searchReturn},Slim.prototype.highlightUp=function(){var highlighted=this.list.querySelector("."+this.main.config.highlighted),prev=null;if(highlighted)for(prev=highlighted.previousSibling;null!==prev&&prev.classList.contains(this.main.config.disabled);)prev=prev.previousSibling;else{var allOptions=this.list.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");prev=allOptions[allOptions.length-1]}if(prev&&prev.classList.contains(this.main.config.optgroupLabel)&&(prev=null),null===prev){var parent_1=highlighted.parentNode;if(parent_1.classList.contains(this.main.config.optgroup)&&parent_1.previousSibling){var prevNodes=parent_1.previousSibling.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");prevNodes.length&&(prev=prevNodes[prevNodes.length-1])}}prev&&(highlighted&&highlighted.classList.remove(this.main.config.highlighted),prev.classList.add(this.main.config.highlighted),helper_1.ensureElementInView(this.list,prev))},Slim.prototype.highlightDown=function(){var highlighted=this.list.querySelector("."+this.main.config.highlighted),next=null;if(highlighted)for(next=highlighted.nextSibling;null!==next&&next.classList.contains(this.main.config.disabled);)next=next.nextSibling;else next=this.list.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")");if(null===next&&null!==highlighted){var parent_2=highlighted.parentNode,sibling;if(parent_2.classList.contains(this.main.config.optgroup))if(parent_2.nextSibling)next=parent_2.nextSibling.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")")}next&&(highlighted&&highlighted.classList.remove(this.main.config.highlighted),next.classList.add(this.main.config.highlighted),helper_1.ensureElementInView(this.list,next))},Slim.prototype.listDiv=function(){var list=document.createElement("div");return list.classList.add(this.main.config.list),list},Slim.prototype.options=function(content){void 0===content&&(content="");var data=this.main.data.filtered||this.main.data.data,searching,searching;if(this.list.innerHTML="",""!==content)return(searching=document.createElement("div")).classList.add(this.main.config.option),searching.classList.add(this.main.config.disabled),searching.innerHTML=content,void this.list.appendChild(searching);if(this.main.config.isAjax&&this.main.config.isSearching)return(searching=document.createElement("div")).classList.add(this.main.config.option),searching.classList.add(this.main.config.disabled),searching.innerHTML=this.main.config.searchingText,void this.list.appendChild(searching);if(0===data.length){var noResults=document.createElement("div");return noResults.classList.add(this.main.config.option),noResults.classList.add(this.main.config.disabled),noResults.innerHTML=this.main.config.searchText,void this.list.appendChild(noResults)}for(var _loop_1=function(d){if(d.hasOwnProperty("label")){var item=d,optgroupEl_1=document.createElement("div");optgroupEl_1.classList.add(this_1.main.config.optgroup);var optgroupLabel=document.createElement("div");optgroupLabel.classList.add(this_1.main.config.optgroupLabel),this_1.main.config.selectByGroup&&this_1.main.config.isMultiple&&optgroupLabel.classList.add(this_1.main.config.optgroupLabelSelectable),optgroupLabel.innerHTML=item.label,optgroupEl_1.appendChild(optgroupLabel);var options=item.options;if(options){for(var _i=0,options_1=options;_i<options_1.length;_i++){var o=options_1[_i];optgroupEl_1.appendChild(this_1.option(o))}if(this_1.main.config.selectByGroup&&this_1.main.config.isMultiple){var master_1=this_1;optgroupLabel.addEventListener("click",(function(e){e.preventDefault(),e.stopPropagation();for(var _i=0,_a=optgroupEl_1.children;_i<_a.length;_i++){var childEl=_a[_i];-1!==childEl.className.indexOf(master_1.main.config.option)&&childEl.click()}}))}}this_1.list.appendChild(optgroupEl_1)}else this_1.list.appendChild(this_1.option(d))},this_1=this,_i=0,data_2=data;_i<data_2.length;_i++){var d;_loop_1(data_2[_i])}},Slim.prototype.option=function(data){if(data.placeholder){var placeholder=document.createElement("div");return placeholder.classList.add(this.main.config.option),placeholder.classList.add(this.main.config.hide),placeholder}var optionEl=document.createElement("div");optionEl.classList.add(this.main.config.option),data.class&&data.class.split(" ").forEach((function(dataClass){optionEl.classList.add(dataClass)})),data.style&&(optionEl.style.cssText=data.style);var selected=this.main.data.getSelected();optionEl.dataset.id=data.id,this.main.config.searchHighlight&&this.main.slim&&data.innerHTML&&""!==this.main.slim.search.input.value.trim()?optionEl.innerHTML=helper_1.highlight(data.innerHTML,this.main.slim.search.input.value,this.main.config.searchHighlighter):data.innerHTML&&(optionEl.innerHTML=data.innerHTML),this.main.config.showOptionTooltips&&optionEl.textContent&&optionEl.setAttribute("title",optionEl.textContent);var master=this;optionEl.addEventListener("click",(function(e){e.preventDefault(),e.stopPropagation();var element=this,elementID=this.dataset.id;if(!0===data.selected&&master.main.config.allowDeselectOption){var shouldUpdate=!1;if(master.main.beforeOnChange&&master.main.config.isMultiple||(shouldUpdate=!0),master.main.beforeOnChange&&master.main.config.isMultiple){for(var selectedValues=master.main.data.getSelected(),currentValues=JSON.parse(JSON.stringify(selectedValues)),i=0;i<currentValues.length;i++)currentValues[i].id===elementID&&currentValues.splice(i,1);var beforeOnchange;!1!==(beforeOnchange=master.main.beforeOnChange(currentValues))&&(shouldUpdate=!0)}shouldUpdate&&(master.main.config.isMultiple?(master.main.data.removeFromSelected(elementID,"id"),master.main.render(),master.main.select.setValue(),master.main.data.onDataChange()):master.main.set(""))}else{if(data.disabled||data.selected)return;if(master.main.config.limit&&Array.isArray(selected)&&master.main.config.limit<=selected.length)return;if(master.main.beforeOnChange){var value=void 0,objectInfo=JSON.parse(JSON.stringify(master.main.data.getObjectFromData(elementID))),beforeOnchange;objectInfo.selected=!0,master.main.config.isMultiple?(value=JSON.parse(JSON.stringify(selected))).push(objectInfo):value=JSON.parse(JSON.stringify(objectInfo)),!1!==(beforeOnchange=master.main.beforeOnChange(value))&&master.main.set(elementID,"id",master.main.config.closeOnSelect)}else master.main.set(elementID,"id",master.main.config.closeOnSelect)}}));var isSelected=selected&&helper_1.isValueInArrayOfObjects(selected,"id",data.id);return(data.disabled||isSelected)&&(optionEl.onclick=null,master.main.config.allowDeselectOption||optionEl.classList.add(this.main.config.disabled),master.main.config.hideSelectedOption&&optionEl.classList.add(this.main.config.hide)),isSelected?optionEl.classList.add(this.main.config.optionSelected):optionEl.classList.remove(this.main.config.optionSelected),optionEl},Slim}();exports.Slim=Slim}]).default}));
\ No newline at end of file
similarity index 88%
rename from website/js/vendor/tabulator/css/tabulator.css
rename to admin/js/vendors/tabulator/css/tabulator.css
index c254bb6..ec3b42a 100644 (file)
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 .tabulator {
   position: relative;
   border: 1px solid #999;
 .tabulator {
   position: relative;
   border: 1px solid #999;
   opacity: .6;
 }
 
   opacity: .6;
 }
 
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {
-  position: relative;
-}
-
 .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
   box-sizing: border-box;
   width: 100%;
 .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
   box-sizing: border-box;
   width: 100%;
   background: #fff;
 }
 
   background: #fff;
 }
 
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor {
-  width: calc(100% - 22px);
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+  display: inline-block;
   position: absolute;
   position: absolute;
-  top: 0;
-  bottom: 0;
-  right: 4px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {
+  top: 9px;
+  right: 8px;
   width: 0;
   height: 0;
   border-left: 6px solid transparent;
   width: 0;
   height: 0;
   border-left: 6px solid transparent;
   background-color: #cdcdcd;
 }
 
   background-color: #cdcdcd;
 }
 
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter {
-  color: #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
   border-top: none;
   border-bottom: 6px solid #bbb;
 }
 
   border-top: none;
   border-bottom: 6px solid #bbb;
 }
 
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-col-sorter {
-  color: #666;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
   border-top: none;
   border-bottom: 6px solid #666;
 }
 
   border-top: none;
   border-bottom: 6px solid #666;
 }
 
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-col-sorter {
-  color: #666;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {
-  border-bottom: none;
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
   border-top: 6px solid #666;
   border-top: 6px solid #666;
-  color: #666;
+  border-bottom: none;
 }
 
 .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
 }
 
 .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
   padding-bottom: 20px;
 }
 
   padding-bottom: 20px;
 }
 
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {
-  -ms-flex-pack: center;
-      justify-content: center;
-  left: 0;
-  right: 0;
-  top: 4px;
-  bottom: auto;
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+  right: calc(50% - 6px);
 }
 
 .tabulator .tabulator-header .tabulator-frozen {
 }
 
 .tabulator .tabulator-header .tabulator-frozen {
   font-weight: bold;
 }
 
   font-weight: bold;
 }
 
-.tabulator.tabulator-ltr {
-  direction: ltr;
-}
-
-.tabulator.tabulator-rtl {
-  text-align: initial;
-  direction: rtl;
-}
-
-.tabulator.tabulator-rtl .tabulator-header .tabulator-col {
-  text-align: initial;
-  border-left: 1px solid #aaa;
-  border-right: initial;
-}
-
-.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
-  margin-right: initial;
-  margin-left: -1px;
-}
-
-.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
-  padding-right: 0;
-  padding-left: 25px;
-}
-
-.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
-  left: 8px;
-  right: initial;
-}
-
-.tabulator.tabulator-rtl .tabulator-row .tabulator-cell {
-  border-right: initial;
-  border-left: 1px solid #aaa;
-}
-
-.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {
-  margin-right: initial;
-  margin-left: 5px;
-  border-bottom-left-radius: initial;
-  border-bottom-right-radius: 1px;
-  border-left: initial;
-  border-right: 2px solid #aaa;
-}
-
-.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {
-  margin-right: initial;
-  margin-left: 5px;
-}
-
-.tabulator.tabulator-rtl .tabulator-col-resize-handle {
-  position: absolute;
-  left: 0;
-  right: auto;
-}
-
-.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {
-  right: 0;
-  left: auto;
-}
-
 .tabulator-print-fullscreen {
   position: absolute;
   top: 0;
 .tabulator-print-fullscreen {
   position: absolute;
   top: 0;
diff --git a/admin/js/vendors/tabulator/css/tabulator.min.css b/admin/js/vendors/tabulator/css/tabulator.min.css
new file mode 100644 (file)
index 0000000..bafd6c7
--- /dev/null
@@ -0,0 +1,3 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#cdcdcd;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#cdcdcd}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#e2e2e2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#e6e6e6;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#f3f3f3!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}
+/*# sourceMappingURL=tabulator.min.css.map */
diff --git a/admin/js/vendors/tabulator/css/tabulator.min.css.map b/admin/js/vendors/tabulator/css/tabulator.min.css.map
new file mode 100644 (file)
index 0000000..47a4c5c
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"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","file":"tabulator.min.css","sourcesContent":["/* Tabulator v4.7.0 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #888 !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder: 1px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitDataTable\"]{\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground:$headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//header menu button\r\n\t\t\t\t.tabulator-header-menu-button{\r\n\t\t\t\t\tpadding: 0 8px;\r\n\r\n\t\t\t\t\t&:hover{\r\n\t\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t\topacity: .6;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tmin-height:100%;\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#ccc;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t//row element\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align: right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-menu{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\tbox-shadow: 0 0 5px 0 rgba(0, 0, 0, .2);\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-menu-item{\r\n\r\n\t\tpadding:5px 10px;\r\n\r\n\t\tuser-select: none;\r\n\r\n\t\t&.tabulator-menu-item-disabled{\r\n\t\t\topacity: .5;\r\n\t\t}\r\n\r\n\t\t&:not(.tabulator-menu-item-disabled):hover{\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-menu-separator{\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\r\n\t\t\t&.focused{\r\n\t\t\t\toutline:1px solid rgba($rowBackgroundColor, .5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.focused{\r\n\t\t\toutline:1px solid $editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-notice{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n\r\n\t.tabulator-data-tree-branch{\r\n\t\tdisplay:inline-block;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:9px;\r\n\t\twidth:7px;\r\n\r\n\t\tmargin-top:-9px;\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\tborder-left:2px solid $rowBorderColor;\r\n\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t}\r\n\r\n\t//row grouping element\r\n\t.tabulator-print-table-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:30px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:50px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:70px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:90px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:110px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-data-tree-control{\r\n\r\n\t\tdisplay:inline-flex;\r\n\t\tjustify-content:center;\r\n\t\talign-items:center;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:11px;\r\n\t\twidth:11px;\r\n\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder:1px solid $rowTextColor;\r\n\t\tborder-radius:2px;\r\n\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\toverflow:hidden;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: transparent;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-expand{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"]}
\ No newline at end of file
@@ -1,7 +1,7 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 .tabulator {
   position: relative;
 .tabulator {
   position: relative;
-  border-bottom: 5px solid #222;
+  border-bottom: 5px solid #293146;
   background-color: #fff;
   font-size: 14px;
   text-align: left;
   background-color: #fff;
   font-size: 14px;
   text-align: left;
@@ -32,8 +32,8 @@
   position: relative;
   box-sizing: border-box;
   width: 100%;
   position: relative;
   box-sizing: border-box;
   width: 100%;
-  border-bottom: 3px solid rgba(32.1569%,38.8235%,55.6863%,1);
-  background-color: #222;
+  /* border-bottom: 3px solid #003268; */
+  background-color: #293146;
   color: #fff;
   font-weight: bold;
   white-space: nowrap;
   color: #fff;
   font-weight: bold;
   white-space: nowrap;
@@ -53,7 +53,7 @@
   position: relative;
   box-sizing: border-box;
   border-right: 1px solid #aaa;
   position: relative;
   box-sizing: border-box;
   border-right: 1px solid #aaa;
-  background-color: #222;
+  background-color: #293146;
   text-align: left;
   vertical-align: bottom;
   overflow: hidden;
   text-align: left;
   vertical-align: bottom;
   overflow: hidden;
@@ -61,7 +61,7 @@
 
 .tabulator .tabulator-header .tabulator-col.tabulator-moving {
   position: absolute;
 
 .tabulator .tabulator-header .tabulator-col.tabulator-moving {
   position: absolute;
-  border: 1px solid rgba(32.1569%,38.8235%,55.6863%,1);
+  /* border: 1px solid #3FB449; */
   background: #090909;
   pointer-events: none;
 }
   background: #090909;
   pointer-events: none;
 }
   opacity: .6;
 }
 
   opacity: .6;
 }
 
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder {
-  position: relative;
-}
-
 .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
   box-sizing: border-box;
   width: 100%;
 .tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
   box-sizing: border-box;
   width: 100%;
   background: #fff;
 }
 
   background: #fff;
 }
 
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button + .tabulator-title-editor {
-  width: calc(100% - 22px);
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter {
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+  display: inline-block;
   position: absolute;
   position: absolute;
-  top: 0;
-  bottom: 0;
-  right: 4px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {
+  top: 14px;
+  right: 8px;
   width: 0;
   height: 0;
   border-left: 6px solid transparent;
   width: 0;
   height: 0;
   border-left: 6px solid transparent;
   background-color: #090909;
 }
 
   background-color: #090909;
 }
 
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter {
-  color: #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
   border-top: none;
   border-bottom: 6px solid #bbb;
 }
 
   border-top: none;
   border-bottom: 6px solid #bbb;
 }
 
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-col-sorter {
-  color: rgba(32.1569%,38.8235%,55.6863%,1);
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
   border-top: none;
   border-top: none;
-  border-bottom: 6px solid rgba(32.1569%,38.8235%,55.6863%,1);
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-col-sorter {
-  color: rgba(32.1569%,38.8235%,55.6863%,1);
+  /* border-bottom: 6px solid #3FB449; */
 }
 
 }
 
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow {
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+  border-top: 6px solid #3FB449;
   border-bottom: none;
   border-bottom: none;
-  border-top: 6px solid rgba(32.1569%,38.8235%,55.6863%,1);
-  color: rgba(32.1569%,38.8235%,55.6863%,1);
 }
 
 .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
 }
 
 .tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
   padding-bottom: 20px;
 }
 
   padding-bottom: 20px;
 }
 
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter {
-  -ms-flex-pack: center;
-      justify-content: center;
-  left: 0;
-  right: 0;
-  top: 4px;
-  bottom: auto;
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+  right: calc(50% - 6px);
 }
 
 .tabulator .tabulator-header .tabulator-frozen {
 }
 
 .tabulator .tabulator-header .tabulator-frozen {
   display: inline-block;
   margin: 0 auto;
   padding: 10px;
   display: inline-block;
   margin: 0 auto;
   padding: 10px;
-  color: rgba(32.1569%,38.8235%,55.6863%,1);
+  color: #3FB449;
   font-weight: bold;
   font-size: 20px;
 }
   font-weight: bold;
   font-size: 20px;
 }
 .tabulator .tabulator-footer {
   padding: 5px 10px;
   padding-top: 8px;
 .tabulator .tabulator-footer {
   padding: 5px 10px;
   padding-top: 8px;
-  border-top: 3px solid rgba(32.1569%,38.8235%,55.6863%,1);
-  background-color: #222;
+  /* border-top: 3px solid #3FB449; */
+  background-color: #293146;
   text-align: right;
   text-align: right;
-  color: #222;
+  color: #293146;
   font-weight: bold;
   white-space: nowrap;
   -ms-user-select: none;
   font-weight: bold;
   white-space: nowrap;
   -ms-user-select: none;
   border: 1px solid #aaa;
   border-radius: 3px;
   background: #fff;
   border: 1px solid #aaa;
   border-radius: 3px;
   background: #fff;
-  color: #222;
+  color: #293146;
   font-family: inherit;
   font-weight: inherit;
   font-size: inherit;
 }
 
 .tabulator .tabulator-footer .tabulator-page.active {
   font-family: inherit;
   font-weight: inherit;
   font-size: inherit;
 }
 
 .tabulator .tabulator-footer .tabulator-page.active {
-  color: rgba(32.1569%,38.8235%,55.6863%,1);
+  /* color: #3FB449; */
 }
 
 .tabulator .tabulator-footer .tabulator-page:disabled {
 }
 
 .tabulator .tabulator-footer .tabulator-page:disabled {
   width: 100%;
   height: 3px;
   margin-top: 2px;
   width: 100%;
   height: 3px;
   margin-top: 2px;
-  background: rgba(32.1569%,38.8235%,55.6863%,1);
+  background: #3FB449;
 }
 
 .tabulator-row .tabulator-cell .tabulator-data-tree-branch {
 }
 
 .tabulator-row .tabulator-cell .tabulator-data-tree-branch {
   box-sizing: border-box;
   border-right: 1px solid #aaa;
   border-top: 1px solid #000;
   box-sizing: border-box;
   border-right: 1px solid #aaa;
   border-top: 1px solid #000;
-  border-bottom: 2px solid rgba(32.1569%,38.8235%,55.6863%,1);
+  /* border-bottom: 2px solid #3FB449; */
   padding: 5px;
   padding-left: 10px;
   padding: 5px;
   padding-left: 10px;
-  background: #222;
+  background: #293146;
   color: #fff;
   font-weight: bold;
   min-width: 100%;
   color: #fff;
   font-weight: bold;
   min-width: 100%;
   margin-right: 10px;
   border-left: 6px solid transparent;
   border-right: 6px solid transparent;
   margin-right: 10px;
   border-left: 6px solid transparent;
   border-right: 6px solid transparent;
-  border-top: 6px solid rgba(32.1569%,38.8235%,55.6863%,1);
+  border-top: 6px solid #bbb;
   border-bottom: 0;
 }
 
   border-bottom: 0;
 }
 
   border-top: 6px solid transparent;
   border-bottom: 6px solid transparent;
   border-right: 0;
   border-top: 6px solid transparent;
   border-bottom: 6px solid transparent;
   border-right: 0;
-  border-left: 6px solid rgba(32.1569%,38.8235%,55.6863%,1);
+  border-left: 6px solid #bbb;
   vertical-align: middle;
 }
 
 .tabulator-row.tabulator-group span {
   margin-left: 10px;
   vertical-align: middle;
 }
 
 .tabulator-row.tabulator-group span {
   margin-left: 10px;
-  color: rgba(32.1569%,38.8235%,55.6863%,1);
+  color: #bbb;
 }
 
 .tabulator-menu {
 }
 
 .tabulator-menu {
   font-weight: bold;
 }
 
   font-weight: bold;
 }
 
-.tabulator.tabulator-ltr {
-  direction: ltr;
-}
-
-.tabulator.tabulator-rtl {
-  text-align: initial;
-  direction: rtl;
-}
-
-.tabulator.tabulator-rtl .tabulator-header .tabulator-col {
-  text-align: initial;
-  border-left: 1px solid #aaa;
-  border-right: initial;
-}
-
-.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
-  margin-right: initial;
-  margin-left: -1px;
-}
-
-.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
-  padding-right: 0;
-  padding-left: 25px;
-}
-
-.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
-  left: 8px;
-  right: initial;
-}
-
-.tabulator.tabulator-rtl .tabulator-row .tabulator-cell {
-  border-right: initial;
-  border-left: 1px solid #aaa;
-}
-
-.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch {
-  margin-right: initial;
-  margin-left: 5px;
-  border-bottom-left-radius: initial;
-  border-bottom-right-radius: 1px;
-  border-left: initial;
-  border-right: 2px solid #aaa;
-}
-
-.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control {
-  margin-right: initial;
-  margin-left: 5px;
-}
-
-.tabulator.tabulator-rtl .tabulator-col-resize-handle {
-  position: absolute;
-  left: 0;
-  right: auto;
-}
-
-.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev {
-  right: 0;
-  left: auto;
-}
-
 .tabulator-print-fullscreen {
   position: absolute;
   top: 0;
 .tabulator-print-fullscreen {
   position: absolute;
   top: 0;
@@ -952,10 +859,10 @@ body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
   box-sizing: border-box;
   border-right: 1px solid #aaa;
   border-top: 1px solid #000;
   box-sizing: border-box;
   border-right: 1px solid #aaa;
   border-top: 1px solid #000;
-  border-bottom: 2px solid rgba(32.1569%,38.8235%,55.6863%,1);
+  border-bottom: 2px solid #3FB449;
   padding: 5px;
   padding-left: 10px;
   padding: 5px;
   padding-left: 10px;
-  background: #222;
+  background: #293146;
   color: #fff;
   font-weight: bold;
   min-width: 100%;
   color: #fff;
   font-weight: bold;
   min-width: 100%;
@@ -970,7 +877,7 @@ body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
   margin-right: 10px;
   border-left: 6px solid transparent;
   border-right: 6px solid transparent;
   margin-right: 10px;
   border-left: 6px solid transparent;
   border-right: 6px solid transparent;
-  border-top: 6px solid rgba(32.1569%,38.8235%,55.6863%,1);
+  border-top: 6px solid #3FB449;
   border-bottom: 0;
 }
 
   border-bottom: 0;
 }
 
@@ -1006,13 +913,13 @@ body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
   border-top: 6px solid transparent;
   border-bottom: 6px solid transparent;
   border-right: 0;
   border-top: 6px solid transparent;
   border-bottom: 6px solid transparent;
   border-right: 0;
-  border-left: 6px solid rgba(32.1569%,38.8235%,55.6863%,1);
+  border-left: 6px solid #3FB449;
   vertical-align: middle;
 }
 
 .tabulator-print-table .tabulator-print-table-group span {
   margin-left: 10px;
   vertical-align: middle;
 }
 
 .tabulator-print-table .tabulator-print-table-group span {
   margin-left: 10px;
-  color: rgba(32.1569%,38.8235%,55.6863%,1);
+  color: #3FB449;
 }
 
 .tabulator-print-table .tabulator-data-tree-branch {
 }
 
 .tabulator-print-table .tabulator-data-tree-branch {
diff --git a/admin/js/vendors/tabulator/css/tabulator_site.min.css b/admin/js/vendors/tabulator/css/tabulator_site.min.css
new file mode 100644 (file)
index 0000000..67f5443
--- /dev/null
@@ -0,0 +1 @@
+.tabulator{position:relative;border-bottom:5px solid #293146;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;-ms-transform:translatez(0);transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;background-color:#293146;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background-color:#293146;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:14px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3fb449;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{-ms-transform:rotate(180deg);transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#3c3c3c!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:0}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3fb449;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#484848!important;color:#fff}.tabulator .tabulator-footer{padding:5px 10px;padding-top:8px;background-color:#293146;text-align:right;color:#293146;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-8px -10px 8px -10px;text-align:left;background:#3c3c3c!important;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:#fff;color:#293146;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:6px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:0 0}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:0 0;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#3fb449}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:0 0}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;padding:5px;padding-left:10px;background:#293146;color:#fff;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:#090909}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #bbb;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #bbb;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#bbb}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid rgba(255,255,255,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#293146;color:#fff;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:#090909}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3fb449;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#3fb449}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:0 0}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}
\ No newline at end of file
diff --git a/admin/js/vendors/tabulator/css/tabulator_site.min.css.map b/admin/js/vendors/tabulator/css/tabulator_site.min.css.map
new file mode 100644 (file)
index 0000000..6970f0b
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"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","file":"tabulator_site.min.css","sourcesContent":["/* Tabulator v4.7.0 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#222 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#222 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#3FB449 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #3FB449 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#222 !default; //border to tabulator\r\n$footerTextColor:#222 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#3FB449 !default; //footer bottom seperator color\r\n$footerActiveColor:$footerSeperatorColor !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder-bottom: 5px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitDataTable\"]{\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitColumns\"]{\r\n\t\t.tabulator-row{\r\n\t\t\t.tabulator-cell{\r\n\t\t\t\t&:last-of-type{\r\n\t\t\t\t\tborder-right: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:8px;\r\n\r\n\t\t\t\t//header menu button\r\n\t\t\t\t.tabulator-header-menu-button{\r\n\t\t\t\t\tpadding: 0 8px;\r\n\r\n\t\t\t\t\t&:hover{\r\n\t\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t\topacity: .6;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:14px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t  width : 0;\r\n\t\t\t\t\t  height: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\t// border-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tmin-height:100%;\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$headerSeperatorColor;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:lighten($headerBackgroundColor, 15%) !important;\r\n\t\t\t\t\tcolor:$headerTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tpadding-top:8px;\r\n\t\tborder-top:3px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-8px -10px 8px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\t\t\t\tcolor:$headerTextColor !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// border-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:$sortArrowActive;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-menu{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\tbox-shadow: 0 0 5px 0 rgba(0, 0, 0, .2);\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-menu-item{\r\n\r\n\t\tpadding:5px 10px;\r\n\r\n\t\tuser-select: none;\r\n\r\n\t\t&.tabulator-menu-item-disabled{\r\n\t\t\topacity: .5;\r\n\t\t}\r\n\r\n\t\t&:not(.tabulator-menu-item-disabled):hover{\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-menu-separator{\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\r\n\t\t\t&.focused{\r\n\t\t\t\toutline:1px solid rgba($rowBackgroundColor, .5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.focused{\r\n\t\t\toutline:1px solid $editBoxColor;\r\n\t\t}\r\n\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-notice{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n\r\n\t//row grouping element\r\n\t.tabulator-print-table-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:30px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:50px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:70px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:90px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:110px !important;\r\n\t\t\t}\r\n\t\t}\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-data-tree-branch{\r\n\t\tdisplay:inline-block;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:9px;\r\n\t\twidth:7px;\r\n\r\n\t\tmargin-top:-9px;\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\tborder-left:2px solid $rowBorderColor;\r\n\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t}\r\n\r\n\t.tabulator-data-tree-control{\r\n\r\n\t\tdisplay:inline-flex;\r\n\t\tjustify-content:center;\r\n\t\talign-items:center;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:11px;\r\n\t\twidth:11px;\r\n\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder:1px solid $rowTextColor;\r\n\t\tborder-radius:2px;\r\n\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\toverflow:hidden;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: transparent;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-expand{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/admin/js/vendors/tabulator/css/tabulator_site.min.orig.css b/admin/js/vendors/tabulator/css/tabulator_site.min.orig.css
new file mode 100644 (file)
index 0000000..2fc522d
--- /dev/null
@@ -0,0 +1,3 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+.tabulator{position:relative;border-bottom:5px solid #222;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3fb449;background-color:#222;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background-color:#222;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3fb449;background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:14px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3fb449;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#3c3c3c!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3fb449;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#484848!important;color:#fff}.tabulator .tabulator-footer{padding:5px 10px;padding-top:8px;border-top:3px solid #3fb449;background-color:#222;text-align:right;color:#222;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-8px -10px 8px;text-align:left;background:#3c3c3c!important;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:#fff;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:6px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#3fb449}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:#090909}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3fb449;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3fb449}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:#090909}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3fb449;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#3fb449}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}
+/*# sourceMappingURL=tabulator_site.min.css.map */
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Accessor = function Accessor(table) {
        this.table = table; //hold Tabulator object
 
 var Accessor = function Accessor(table) {
        this.table = table; //hold Tabulator object
@@ -58,15 +58,15 @@ Accessor.prototype.lookupAccessor = function (value) {
 };
 
 //apply accessor to row
 };
 
 //apply accessor to row
-Accessor.prototype.transformRow = function (row, type) {
-       var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
-           rowComponent = row.getComponent();
+Accessor.prototype.transformRow = function (dataIn, type) {
+       var self = this,
+           key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
 
        //clone data object with deep copy to isolate internal data from returned result
 
        //clone data object with deep copy to isolate internal data from returned result
-       var data = Tabulator.prototype.helpers.deepClone(row.data || {});
+       var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
 
 
-       this.table.columnManager.traverse(function (column) {
-               var value, accessor, params, colCompnent;
+       self.table.columnManager.traverse(function (column) {
+               var value, accessor, params, component;
 
                if (column.modules.accessor) {
 
 
                if (column.modules.accessor) {
 
@@ -76,9 +76,9 @@ Accessor.prototype.transformRow = function (row, type) {
                                value = column.getFieldValue(data);
 
                                if (value != "undefined") {
                                value = column.getFieldValue(data);
 
                                if (value != "undefined") {
-                                       colCompnent = column.getComponent();
-                                       params = typeof accessor.params === "function" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;
-                                       column.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));
+                                       component = column.getComponent();
+                                       params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
+                                       column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
                                }
                        }
                }
                                }
                        }
                }
diff --git a/admin/js/vendors/tabulator/js/modules/accessor.min.js b/admin/js/vendors/tabulator/js/modules/accessor.min.js
new file mode 100644 (file)
index 0000000..2633b8f
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Accessor=function(o){this.table=o,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};Accessor.prototype.initializeColumn=function(o){var e=this,s=!1,r={};this.allowedTypes.forEach(function(t){var c,a="accessor"+(t.charAt(0).toUpperCase()+t.slice(1));o.definition[a]&&(c=e.lookupAccessor(o.definition[a]))&&(s=!0,r[a]={accessor:c,params:o.definition[a+"Params"]||{}})}),s&&(o.modules.accessor=r)},Accessor.prototype.lookupAccessor=function(o){var e=!1;switch(void 0===o?"undefined":_typeof(o)){case"string":this.accessors[o]?e=this.accessors[o]:console.warn("Accessor Error - No such accessor found, ignoring: ",o);break;case"function":e=o}return e},Accessor.prototype.transformRow=function(o,e){var s=this,r="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),t=Tabulator.prototype.helpers.deepClone(o||{});return s.table.columnManager.traverse(function(o){var s,c,a,n;o.modules.accessor&&(c=o.modules.accessor[r]||o.modules.accessor.accessor||!1)&&"undefined"!=(s=o.getFieldValue(t))&&(n=o.getComponent(),a="function"==typeof c.params?c.params(s,t,e,n):c.params,o.setFieldValue(t,c.accessor(s,t,e,a,n)))}),t},Accessor.prototype.accessors={},Tabulator.prototype.registerModule("accessor",Accessor);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Ajax = function Ajax(table) {
 
 
 var Ajax = function Ajax(table) {
 
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ajax=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};Ajax.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},Ajax.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},Ajax.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},Ajax.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},Ajax.prototype.getParams=function(){return this.params||{}},Ajax.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},Ajax.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},Ajax.prototype.setUrl=function(e){this.url=e},Ajax.prototype.getUrl=function(){return this.url},Ajax.prototype.loadData=function(e,t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e,t)},Ajax.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},Ajax.prototype.blockActiveRequest=function(){this.requestOrder++},Ajax.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},Ajax.prototype._loadDataStandard=function(e,t){var o=this;return new Promise(function(a,r){o.sendRequest(e).then(function(i){o.table.rowManager.setData(i,e,t).then(function(){a()}).catch(function(e){r(e)})}).catch(function(e){r(e)})})},Ajax.prototype.generateParamsList=function(e,t){var o=this,a=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){a=a.concat(o.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var r in e)a=a.concat(o.generateParamsList(e[r],t?t+"["+r+"]":r));else a.push({key:t,value:e});return a},Ajax.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},Ajax.prototype.sendRequest=function(e){var t,o=this,a=this,r=a.url;return a.requestOrder++,t=a.requestOrder,a._loadDefaultConfig(),new Promise(function(i,n){!1!==a.table.options.ajaxRequesting.call(o.table,a.url,a.params)?(a.loading=!0,e||a.showLoader(),o.loaderPromise(r,a.config,a.params).then(function(e){t===a.requestOrder?(a.table.options.ajaxResponse&&(e=a.table.options.ajaxResponse.call(a.table,a.url,a.params,e)),i(e),a.hideLoader(),a.loading=!1):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made")}).catch(function(e){console.error("Ajax Load Error: ",e),a.table.options.ajaxError.call(a.table,e),a.showError(),setTimeout(function(){a.hideLoader()},3e3),a.loading=!1,n()})):n()})},Ajax.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},Ajax.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},Ajax.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},Ajax.prototype.defaultConfig={method:"GET"},Ajax.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+this.serializeParams(o))),e},Ajax.prototype.defaultLoaderPromise=function(e,t,o){var a,r=this;return new Promise(function(i,n){if(e=r.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(a="object"===_typeof(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var s in a.headers)t.headers||(t.headers={}),void 0===t.headers[s]&&(t.headers[s]=a.headers[s]);t.body=a.body.call(r,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(e){n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),n(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},Ajax.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var a=this.generateParamsList(o),r=new FormData;return a.forEach(function(e){r.append(e.key,e.value)}),r}}},Tabulator.prototype.registerModule("ajax",Ajax);
\ No newline at end of file
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ajax=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};Ajax.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},Ajax.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},Ajax.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},Ajax.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},Ajax.prototype.getParams=function(){return this.params||{}},Ajax.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},Ajax.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},Ajax.prototype.setUrl=function(e){this.url=e},Ajax.prototype.getUrl=function(){return this.url},Ajax.prototype.loadData=function(e,t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e,t)},Ajax.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},Ajax.prototype.blockActiveRequest=function(){this.requestOrder++},Ajax.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},Ajax.prototype._loadDataStandard=function(e,t){var o=this;return new Promise(function(a,r){o.sendRequest(e).then(function(i){o.table.rowManager.setData(i,e,t).then(function(){a()}).catch(function(e){r(e)})}).catch(function(e){r(e)})})},Ajax.prototype.generateParamsList=function(e,t){var o=this,a=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){a=a.concat(o.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var r in e)a=a.concat(o.generateParamsList(e[r],t?t+"["+r+"]":r));else a.push({key:t,value:e});return a},Ajax.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},Ajax.prototype.sendRequest=function(e){var t,o=this,a=this,r=a.url;return a.requestOrder++,t=a.requestOrder,a._loadDefaultConfig(),new Promise(function(i,n){!1!==a.table.options.ajaxRequesting.call(o.table,a.url,a.params)?(a.loading=!0,e||a.showLoader(),o.loaderPromise(r,a.config,a.params).then(function(e){t===a.requestOrder?(a.table.options.ajaxResponse&&(e=a.table.options.ajaxResponse.call(a.table,a.url,a.params,e)),i(e),a.hideLoader(),a.loading=!1):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made")}).catch(function(e){console.error("Ajax Load Error: ",e),a.table.options.ajaxError.call(a.table,e),a.showError(),setTimeout(function(){a.hideLoader()},3e3),a.loading=!1,n()})):n()})},Ajax.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},Ajax.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},Ajax.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},Ajax.prototype.defaultConfig={method:"GET"},Ajax.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+this.serializeParams(o))),e},Ajax.prototype.defaultLoaderPromise=function(e,t,o){var a,r=this;return new Promise(function(i,n){if(e=r.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(a="object"===_typeof(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var s in a.headers)t.headers||(t.headers={}),void 0===t.headers[s]&&(t.headers[s]=a.headers[s]);t.body=a.body.call(r,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(e){n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),n(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},Ajax.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var a=this.generateParamsList(o),r=new FormData;return a.forEach(function(e){r.append(e.key,e.value)}),r}}},Tabulator.prototype.registerModule("ajax",Ajax);
\ No newline at end of file
@@ -1,42 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-
-//public calc object
-var CalcComponent = function CalcComponent(row) {
-       this._row = row;
-};
-
-CalcComponent.prototype.getData = function (transform) {
-       return this._row.getData(transform);
-};
-
-CalcComponent.prototype.getElement = function () {
-       return this._row.getElement();
-};
-
-CalcComponent.prototype.getTable = function () {
-       return this._row.table;
-};
-
-CalcComponent.prototype.getCells = function () {
-       var cells = [];
-
-       this._row.getCells().forEach(function (cell) {
-               cells.push(cell.getComponent());
-       });
-
-       return cells;
-};
-
-CalcComponent.prototype.getCell = function (column) {
-       var cell = this._row.getCell(column);
-       return cell ? cell.getComponent() : false;
-};
-
-CalcComponent.prototype._getSelf = function () {
-       return this._row;
-};
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var ColumnCalcs = function ColumnCalcs(table) {
        this.table = table; //hold Tabulator object
 
 var ColumnCalcs = function ColumnCalcs(table) {
        this.table = table; //hold Tabulator object
@@ -168,7 +132,7 @@ ColumnCalcs.prototype.scrollHorizontal = function (left) {
        var hozAdjust = 0,
            scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
 
        var hozAdjust = 0,
            scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
 
-       if (this.botInitialized && this.botRow) {
+       if (this.botInitialized) {
                this.botRow.getElement().style.marginLeft = -left + "px";
        }
 };
                this.botRow.getElement().style.marginLeft = -left + "px";
        }
 };
@@ -307,16 +271,6 @@ ColumnCalcs.prototype.generateRow = function (pos, data) {
 
        row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
 
 
        row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
 
-       row.component = false;
-
-       row.getComponent = function () {
-               if (!this.component) {
-                       this.component = new CalcComponent(this);
-               }
-
-               return this.component;
-       };
-
        row.generateCells = function () {
 
                var cells = [];
        row.generateCells = function () {
 
                var cells = [];
@@ -328,9 +282,10 @@ ColumnCalcs.prototype.generateRow = function (pos, data) {
                        self.genColumn.hozAlign = column.hozAlign;
 
                        if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
                        self.genColumn.hozAlign = column.hozAlign;
 
                        if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
+
                                self.genColumn.modules.format = {
                                        formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
                                self.genColumn.modules.format = {
                                        formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
-                                       params: column.definition[pos + "CalcFormatterParams"] || {}
+                                       params: column.definition[pos + "CalcFormatterParams"]
                                };
                        } else {
                                self.genColumn.modules.format = {
                                };
                        } else {
                                self.genColumn.modules.format = {
@@ -344,7 +299,6 @@ ColumnCalcs.prototype.generateRow = function (pos, data) {
 
                        //generate cell and assign to correct column
                        var cell = new Cell(self.genColumn, row);
 
                        //generate cell and assign to correct column
                        var cell = new Cell(self.genColumn, row);
-                       cell.getElement();
                        cell.column = column;
                        cell.setWidth();
 
                        cell.column = column;
                        cell.setWidth();
 
@@ -457,7 +411,8 @@ ColumnCalcs.prototype.calculations = {
 
                if (values.length) {
                        output = values.reduce(function (sum, value) {
 
                if (values.length) {
                        output = values.reduce(function (sum, value) {
-                               return Number(sum) + Number(value);
+                               value = Number(value);
+                               return sum + value;
                        });
 
                        output = output / values.length;
                        });
 
                        output = output / values.length;
diff --git a/admin/js/vendors/tabulator/js/modules/calculation_colums.min.js b/admin/js/vendors/tabulator/js/modules/calculation_colums.min.js
new file mode 100644 (file)
index 0000000..33464d5
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ColumnCalcs=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};ColumnCalcs.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},ColumnCalcs.prototype.initialize=function(){this.genColumn=new Column({field:"value"},this)},ColumnCalcs.prototype.registerColumnField=function(){},ColumnCalcs.prototype.initializeColumn=function(t){var o=t.definition,e={topCalcParams:o.topCalcParams||{},botCalcParams:o.bottomCalcParams||{}};if(o.topCalc){switch(_typeof(o.topCalc)){case"string":this.calculations[o.topCalc]?e.topCalc=this.calculations[o.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.topCalc);break;case"function":e.topCalc=o.topCalc}e.topCalc&&(t.modules.columnCalcs=e,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(o.bottomCalc){switch(_typeof(o.bottomCalc)){case"string":this.calculations[o.bottomCalc]?e.botCalc=this.calculations[o.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.bottomCalc);break;case"function":e.botCalc=o.bottomCalc}e.botCalc&&(t.modules.columnCalcs=e,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},ColumnCalcs.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},ColumnCalcs.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},ColumnCalcs.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},ColumnCalcs.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},ColumnCalcs.prototype.recalc=function(t){var o;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),o=this.generateRow("top",this.rowsToData(t)),this.topRow=o;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(o.getElement()),o.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),o=this.generateRow("bottom",this.rowsToData(t)),this.botRow=o;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(o.getElement()),o.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},ColumnCalcs.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},ColumnCalcs.prototype.recalcAll=function(){var t=this;if((this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalc(this.table.rowManager.activeRows),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs)){table.modules.groupRows.getChildGroups().forEach(function(o){t.recalcGroup(o)})}},ColumnCalcs.prototype.recalcGroup=function(t){var o,e;t&&t.calcs&&(t.calcs.bottom&&(o=this.rowsToData(t.rows),e=this.generateRowData("bottom",o),t.calcs.bottom.updateData(e),t.calcs.bottom.reinitialize()),t.calcs.top&&(o=this.rowsToData(t.rows),e=this.generateRowData("top",o),t.calcs.top.updateData(e),t.calcs.top.reinitialize()))},ColumnCalcs.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},ColumnCalcs.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},ColumnCalcs.prototype.rowsToData=function(t){var o=this,e=[];return t.forEach(function(t){if(e.push(t.getData()),o.table.options.dataTree&&o.table.options.dataTreeChildColumnCalcs&&t.modules.dataTree.open){var l=o.rowsToData(o.table.modules.dataTree.getFilteredTreeChildren(t));e=e.concat(l)}}),e},ColumnCalcs.prototype.generateRow=function(t,o){var e,l=this,i=this.generateRowData(t,o);return l.table.modExists("mutator")&&l.table.modules.mutator.disable(),e=new Row(i,this,"calc"),l.table.modExists("mutator")&&l.table.modules.mutator.enable(),e.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),e.generateCells=function(){var o=[];l.table.columnManager.columnsByIndex.forEach(function(i){l.genColumn.setField(i.getField()),l.genColumn.hozAlign=i.hozAlign,i.definition[t+"CalcFormatter"]&&l.table.modExists("format")?l.genColumn.modules.format={formatter:l.table.modules.format.getFormatter(i.definition[t+"CalcFormatter"]),params:i.definition[t+"CalcFormatterParams"]}:l.genColumn.modules.format={formatter:l.table.modules.format.getFormatter("plaintext"),params:{}},l.genColumn.definition.cssClass=i.definition.cssClass;var a=new Cell(l.genColumn,e);a.column=i,a.setWidth(),i.cells.push(a),o.push(a),i.visible||a.hide()}),this.cells=o},e},ColumnCalcs.prototype.generateRowData=function(t,o){var e,l,i={},a="top"==t?this.topCalcs:this.botCalcs,n="top"==t?"topCalc":"botCalc";return a.forEach(function(t){var a=[];t.modules.columnCalcs&&t.modules.columnCalcs[n]&&(o.forEach(function(o){a.push(t.getFieldValue(o))}),l=n+"Params",e="function"==typeof t.modules.columnCalcs[l]?t.modules.columnCalcs[l](a,o):t.modules.columnCalcs[l],t.setFieldValue(i,t.modules.columnCalcs[n](a,o,e)))}),i},ColumnCalcs.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},ColumnCalcs.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},ColumnCalcs.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},ColumnCalcs.prototype.getResults=function(){var t,o=this,e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){e[t.getKey()]=o.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e},ColumnCalcs.prototype.getGroupResults=function(t){var o=this,e=t._getSelf(),l=t.getSubGroups(),i={};return l.forEach(function(t){i[t.getKey()]=o.getGroupResults(t)}),{top:e.calcs.top?e.calcs.top.getData():{},bottom:e.calcs.bottom?e.calcs.bottom.getData():{},groups:i}},ColumnCalcs.prototype.calculations={avg:function(t,o,e){var l=0,i=void 0!==e.precision?e.precision:2;return t.length&&(l=t.reduce(function(t,o){return o=Number(o),t+o}),l/=t.length,l=!1!==i?l.toFixed(i):l),parseFloat(l).toString()},max:function(t,o,e){var l=null,i=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))>l||null===l)&&(l=t)}),null!==l?!1!==i?l.toFixed(i):l:""},min:function(t,o,e){var l=null,i=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))<l||null===l)&&(l=t)}),null!==l?!1!==i?l.toFixed(i):l:""},sum:function(t,o,e){var l=0,i=void 0!==e.precision&&e.precision;return t.length&&t.forEach(function(t){t=Number(t),l+=isNaN(t)?0:Number(t)}),!1!==i?l.toFixed(i):l},concat:function(t,o,e){var l=0;return t.length&&(l=t.reduce(function(t,o){return String(t)+String(o)})),l},count:function(t,o,e){var l=0;return t.length&&t.forEach(function(t){t&&l++}),l}},Tabulator.prototype.registerModule("columnCalcs",ColumnCalcs);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Clipboard = function Clipboard(table) {
        this.table = table;
 
 var Clipboard = function Clipboard(table) {
        this.table = table;
@@ -35,7 +35,7 @@ Clipboard.prototype.initialize = function () {
                                        }
                                } else {
 
                                        }
                                } else {
 
-                                       var list = _this.table.modules.export.generateExportList(_this.table.options.clipboardCopyConfig, _this.table.options.clipboardCopyStyled, _this.rowRange, "clipboard");
+                                       var list = _this.table.modules.export.generateExportList(_this.rowRange, _this.table.options.clipboardCopyStyled, _this.table.options.clipboardCopyConfig, "clipboard");
 
                                        html = _this.table.modules.export.genereateHTMLTable(list);
                                        plain = html ? _this.generatePlainContent(list) : "";
 
                                        html = _this.table.modules.export.genereateHTMLTable(list);
                                        plain = html ? _this.generatePlainContent(list) : "";
@@ -78,8 +78,8 @@ Clipboard.prototype.initialize = function () {
 };
 
 Clipboard.prototype.reset = function () {
 };
 
 Clipboard.prototype.reset = function () {
-       this.blocked = true;
-       this.customSelection = false;
+       this.blocked = false;
+       this.originalSelectionText = "";
 };
 
 Clipboard.prototype.generatePlainContent = function (list) {
 };
 
 Clipboard.prototype.generatePlainContent = function (list) {
@@ -97,21 +97,18 @@ Clipboard.prototype.generatePlainContent = function (list) {
                                        col.value = col.component.getKey();
                                }
 
                                        col.value = col.component.getKey();
                                }
 
-                               if (col.value === null) {
-                                       value = "";
-                               } else {
-                                       switch (_typeof(col.value)) {
-                                               case "object":
-                                                       value = JSON.stringify(col.value);
-                                                       break;
+                               switch (_typeof(col.value)) {
+                                       case "object":
+                                               value = JSON.stringify(col.value);
+                                               break;
 
 
-                                               case "undefined":
-                                                       value = "";
-                                                       break;
+                                       case "undefined":
+                                       case "null":
+                                               value = "";
+                                               break;
 
 
-                                               default:
-                                                       value = col.value;
-                                       }
+                                       default:
+                                               value = col.value;
                                }
                        }
 
                                }
                        }
 
diff --git a/admin/js/vendors/tabulator/js/modules/clipboard.min.js b/admin/js/vendors/tabulator/js/modules/clipboard.min.js
new file mode 100644 (file)
index 0000000..2a2eb5a
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Clipboard=function(t){this.table=t,this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0};Clipboard.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(e){var a,o,i;if(!t.blocked){if(e.preventDefault(),t.customSelection)a=t.customSelection,t.table.options.clipboardCopyFormatter&&(a=t.table.options.clipboardCopyFormatter("plain",a));else{var i=t.table.modules.export.generateExportList(t.rowRange,t.table.options.clipboardCopyStyled,t.table.options.clipboardCopyConfig,"clipboard");o=t.table.modules.export.genereateHTMLTable(i),a=o?t.generatePlainContent(i):"",t.table.options.clipboardCopyFormatter&&(a=t.table.options.clipboardCopyFormatter("plain",a),o=t.table.options.clipboardCopyFormatter("html",o))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",a):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",a),o&&e.clipboardData.setData("text/html",o)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",a),o&&e.originalEvent.clipboardData.setData("text/html",o)),t.table.options.clipboardCopied.call(t.table,a,o),t.reset()}}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(e){t.paste(e)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},Clipboard.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},Clipboard.prototype.generatePlainContent=function(t){var e=[];return t.forEach(function(t){var a=[];t.columns.forEach(function(e){var o="";if(e)switch("group"===t.type&&(e.value=e.component.getKey()),_typeof(e.value)){case"object":o=JSON.stringify(e.value);break;case"undefined":case"null":o="";break;default:o=e.value}a.push(o)}),e.push(a.join("\t"))}),e.join("\n")},Clipboard.prototype.copy=function(t,e){var t,a,o;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=t||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?(t=document.createRange(),t.selectNodeContents(this.table.element),a=window.getSelection(),a.toString()&&e&&(this.customSelection=a.toString()),a.removeAllRanges(),a.addRange(t)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(o=document.body.createTextRange(),o.moveToElementText(this.table.element),o.select()),document.execCommand("copy"),a&&a.removeAllRanges())},Clipboard.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},Clipboard.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},Clipboard.prototype.paste=function(t){var e,a,o;this.checkPaseOrigin(t)&&(e=this.getPasteData(t),a=this.pasteParser.call(this,e),a?(t.preventDefault(),this.table.modExists("mutator")&&(a=this.mutateData(a)),o=this.pasteAction.call(this,a),this.table.options.clipboardPasted.call(this.table,e,a,o)):this.table.options.clipboardPasteError.call(this.table,e))},Clipboard.prototype.mutateData=function(t){var e=this,a=[];return Array.isArray(t)?t.forEach(function(t){a.push(e.table.modules.mutator.transformRow(t,"clipboard"))}):a=t,a},Clipboard.prototype.checkPaseOrigin=function(t){var e=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(e=!1),e},Clipboard.prototype.getPasteData=function(t){var e;return window.clipboardData&&window.clipboardData.getData?e=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?e=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(e=t.originalEvent.clipboardData.getData("text/plain")),e},Clipboard.prototype.pasteParsers={table:function(t){var e=[],a=!0,o=this.table.columnManager.columns,i=[],n=[];return t=t.split("\n"),t.forEach(function(t){e.push(t.split("\t"))}),!(!e.length||1===e.length&&e[0].length<2)&&(!0,e[0].forEach(function(t){var e=o.find(function(e){return t&&e.definition.title&&t.trim()&&e.definition.title.trim()===t.trim()});e?i.push(e):a=!1}),a||(a=!0,i=[],e[0].forEach(function(t){var e=o.find(function(e){return t&&e.field&&t.trim()&&e.field.trim()===t.trim()});e?i.push(e):a=!1}),a||(i=this.table.columnManager.columnsByIndex)),a&&e.shift(),e.forEach(function(t){var e={};t.forEach(function(t,a){i[a]&&(e[i[a].field]=t)}),n.push(e)}),n)}},Clipboard.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},Tabulator.prototype.registerModule("clipboard",Clipboard);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var DataTree = function DataTree(table) {
        this.table = table;
 
 var DataTree = function DataTree(table) {
        this.table = table;
@@ -141,19 +141,9 @@ DataTree.prototype.layoutRow = function (row) {
                if (this.branchEl) {
                        config.branchEl = this.branchEl.cloneNode(true);
                        el.insertBefore(config.branchEl, el.firstChild);
                if (this.branchEl) {
                        config.branchEl = this.branchEl.cloneNode(true);
                        el.insertBefore(config.branchEl, el.firstChild);
-
-                       if (this.table.rtl) {
-                               config.branchEl.style.marginRight = (config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1) + config.index * this.indent + "px";
-                       } else {
-                               config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
-                       }
+                       config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
                } else {
                } else {
-
-                       if (this.table.rtl) {
-                               el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + config.index * this.indent + "px";
-                       } else {
-                               el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
-                       }
+                       el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
                }
        }
 };
                }
        }
 };
@@ -240,13 +230,13 @@ DataTree.prototype.getChildren = function (row) {
                        config.children = this.generateChildren(row);
                }
 
                        config.children = this.generateChildren(row);
                }
 
-               if (this.table.modExists("filter") && this.table.options.dataTreeFilter) {
+               if (this.table.modExists("filter")) {
                        children = this.table.modules.filter.filter(config.children);
                } else {
                        children = config.children;
                }
 
                        children = this.table.modules.filter.filter(config.children);
                } else {
                        children = config.children;
                }
 
-               if (this.table.modExists("sort") && this.table.options.dataTreeSort) {
+               if (this.table.modExists("sort")) {
                        this.table.modules.sort.sort(children);
                }
 
                        this.table.modules.sort.sort(children);
                }
 
@@ -343,7 +333,7 @@ DataTree.prototype.getFilteredTreeChildren = function (row) {
                        config.children = this.generateChildren(row);
                }
 
                        config.children = this.generateChildren(row);
                }
 
-               if (this.table.modExists("filter") && this.table.options.dataTreeFilter) {
+               if (this.table.modExists("filter")) {
                        children = this.table.modules.filter.filter(config.children);
                } else {
                        children = config.children;
                        children = this.table.modules.filter.filter(config.children);
                } else {
                        children = config.children;
@@ -465,9 +455,7 @@ DataTree.prototype.findChildIndex = function (subject, parent) {
        return match;
 };
 
        return match;
 };
 
-DataTree.prototype.getTreeChildren = function (row, component, recurse) {
-       var _this6 = this;
-
+DataTree.prototype.getTreeChildren = function (row) {
        var config = row.modules.dataTree,
            output = [];
 
        var config = row.modules.dataTree,
            output = [];
 
@@ -479,11 +467,7 @@ DataTree.prototype.getTreeChildren = function (row, component, recurse) {
 
                config.children.forEach(function (childRow) {
                        if (childRow instanceof Row) {
 
                config.children.forEach(function (childRow) {
                        if (childRow instanceof Row) {
-                               output.push(component ? childRow.getComponent() : childRow);
-
-                               if (recurse) {
-                                       output = output.concat(_this6.getTreeChildren(childRow, component, recurse));
-                               }
+                               output.push(childRow.getComponent());
                        }
                });
        }
                        }
                });
        }
diff --git a/admin/js/vendors/tabulator/js/modules/data_tree.min.js b/admin/js/vendors/tabulator/js/modules/data_tree.min.js
new file mode 100644 (file)
index 0000000..5f87cab
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},DataTree=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};DataTree.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),a=this.table.options;switch(this.field=a.dataTreeChildField,this.indent=a.dataTreeChildIndent,this.elementField=a.dataTreeElementColumn||!!t&&t.field,a.dataTreeBranchElement&&(!0===a.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof a.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=a.dataTreeBranchElement),a.dataTreeCollapseElement?"string"==typeof a.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=a.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),a.dataTreeExpandElement?"string"==typeof a.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=a.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(a.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return a.dataTreeStartExpanded};break;case"function":this.startOpen=a.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return a.dataTreeStartExpanded[t]}}},DataTree.prototype.initializeRow=function(e){var t=e.getData()[this.field],a=Array.isArray(t),n=a||!a&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;!n&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!n&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!n&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!n)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!n)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:n}},DataTree.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],a=t.getElement(),n=e.modules.dataTree;n.branchEl&&(n.branchEl.parentNode&&n.branchEl.parentNode.removeChild(n.branchEl),n.branchEl=!1),n.controlEl&&(n.controlEl.parentNode&&n.controlEl.parentNode.removeChild(n.controlEl),n.controlEl=!1),this.generateControlElement(e,a),e.element.classList.add("tabulator-tree-level-"+n.index),n.index&&(this.branchEl?(n.branchEl=this.branchEl.cloneNode(!0),a.insertBefore(n.branchEl,a.firstChild),n.branchEl.style.marginLeft=(n.branchEl.offsetWidth+n.branchEl.style.marginRight)*(n.index-1)+n.index*this.indent+"px"):a.style.paddingLeft=parseInt(window.getComputedStyle(a,null).getPropertyValue("padding-left"))+n.index*this.indent+"px")},DataTree.prototype.generateControlElement=function(e,t){var a=this,n=e.modules.dataTree,t=t||e.getCells()[0].getElement(),r=n.controlEl;!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.collapseRow(e)})):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.expandRow(e)})),n.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),r&&r.parentNode===t?r.parentNode.replaceChild(n.controlEl,r):t.insertBefore(n.controlEl,t.firstChild))},DataTree.prototype.setDisplayIndex=function(e){this.displayIndex=e},DataTree.prototype.getDisplayIndex=function(){return this.displayIndex},DataTree.prototype.getRows=function(e){var t=this,a=[];return e.forEach(function(e,n){var r,l;a.push(e),e instanceof Row&&(r=e.modules.dataTree.children,r.index||!1===r.children||(l=t.getChildren(e),l.forEach(function(e){a.push(e)})))}),a},DataTree.prototype.getChildren=function(e){var t=this,a=e.modules.dataTree,n=[],r=[];return!1!==a.children&&a.open&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),n=this.table.modExists("filter")?this.table.modules.filter.filter(a.children):a.children,this.table.modExists("sort")&&this.table.modules.sort.sort(n),n.forEach(function(e){r.push(e),t.getChildren(e).forEach(function(e){r.push(e)})})),r},DataTree.prototype.generateChildren=function(e){var t=this,a=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach(function(n){var r=new Row(n||{},t.table.rowManager);r.modules.dataTree.index=e.modules.dataTree.index+1,r.modules.dataTree.parent=e,r.modules.dataTree.children&&(r.modules.dataTree.open=t.startOpen(r.getComponent(),r.modules.dataTree.index)),a.push(r)}),a},DataTree.prototype.expandRow=function(e,t){var a=e.modules.dataTree;!1!==a.children&&(a.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},DataTree.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},DataTree.prototype.getFilteredTreeChildren=function(e){var t,a=e.modules.dataTree,n=[];return a.children&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),t=this.table.modExists("filter")?this.table.modules.filter.filter(a.children):a.children,t.forEach(function(e){e instanceof Row&&n.push(e)})),n},DataTree.prototype.rowDelete=function(e){var t,a=e.modules.dataTree.parent;a&&(t=this.findChildIndex(e,a),!1!==t&&a.data[this.field].splice(t,1),a.data[this.field].length||delete a.data[this.field],this.initializeRow(a),this.layoutRow(a)),this.table.rowManager.refreshActiveData("tree",!1,!0)},DataTree.prototype.addTreeChildRow=function(e,t,a,n){var r=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==n&&!1!==(r=this.findChildIndex(n,e))&&e.data[this.field].splice(a?r:r+1,0,t),!1===r&&(a?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)},DataTree.prototype.findChildIndex=function(e,t){var a=this,n=!1;return"object"==(void 0===e?"undefined":_typeof(e))?e instanceof Row?n=e.data:e instanceof RowComponent?n=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(n=t.modules.dataTree.children.find(function(t){return t instanceof Row&&t.element===e}))&&(n=n.data):n=void 0!==e&&null!==e&&t.data[this.field].find(function(t){return t.data[a.table.options.index]==e}),n&&(Array.isArray(t.data[this.field])&&(n=t.data[this.field].indexOf(n)),-1==n&&(n=!1)),n},DataTree.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,a=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof Row&&a.push(e.getComponent())})),a},DataTree.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||e.row.reinitialize()},DataTree.prototype.getChildField=function(){return this.field},DataTree.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},Tabulator.prototype.registerModule("dataTree",DataTree);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Download = function Download(table) {
        this.table = table; //hold Tabulator object
 
 var Download = function Download(table) {
        this.table = table; //hold Tabulator object
@@ -131,7 +131,7 @@ Download.prototype.downloaders = {
                                case "header":
                                        row.columns.forEach(function (col, i) {
                                                if (col && col.depth === 1) {
                                case "header":
                                        row.columns.forEach(function (col, i) {
                                                if (col && col.depth === 1) {
-                                                       headers[i] = typeof col.value == "undefined" || col.value === null ? "" : '"' + String(col.value).split('"').join('""') + '"';
+                                                       headers[i] = typeof col.value == "undefined" || typeof col.value == "null" ? "" : col.value;
                                                }
                                        });
                                        break;
                                                }
                                        });
                                        break;
@@ -162,7 +162,7 @@ Download.prototype.downloaders = {
                });
 
                if (headers.length) {
                });
 
                if (headers.length) {
-                       fileContents.unshift(headers.join(delimiter));
+                       fileContents = [headers].concat(fileContents);
                }
 
                fileContents = fileContents.join("\n");
                }
 
                fileContents = fileContents.join("\n");
@@ -389,7 +389,7 @@ Download.prototype.downloaders = {
 
                                        workbook.SheetNames.push(sheet);
 
 
                                        workbook.SheetNames.push(sheet);
 
-                                       this.modules.comms.send(options.sheets[sheet], "download", "intercept", {
+                                       this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
                                                type: "xlsx",
                                                options: { sheetOnly: true },
                                                active: self.active,
                                                type: "xlsx",
                                                options: { sheetOnly: true },
                                                active: self.active,
diff --git a/admin/js/vendors/tabulator/js/modules/download.min.js b/admin/js/vendors/tabulator/js/modules/download.min.js
new file mode 100644 (file)
index 0000000..b3b776c
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Download=function(e){this.table=e};Download.prototype.download=function(e,o,t,n,a){function r(t,n){a?!0===a?l.triggerDownload(t,n,e,o,!0):a(t):l.triggerDownload(t,n,e,o)}var l=this,s=!1;if("function"==typeof e?s=e:l.downloaders[e]?s=l.downloaders[e]:console.warn("Download Error - No such download type found: ",e),s){var i=this.generateExportList(n);s.call(this.table,i,t||{},r)}},Download.prototype.generateExportList=function(e){var o=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),t=this.table.options.groupHeaderDownload;return t&&!Array.isArray(t)&&(t=[t]),o.forEach(function(e){var o;"group"===e.type&&(o=e.columns[0],t&&t[e.indent]&&(o.value=t[e.indent](o.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))}),o},Download.prototype.triggerDownload=function(e,o,t,n,a){var r=document.createElement("a"),l=new Blob([e],{type:o}),n=n||"Tabulator."+("function"==typeof t?"txt":t);(l=this.table.options.downloadReady.call(this.table,e,l))&&(a?window.open(window.URL.createObjectURL(l)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(l,n):(r.setAttribute("href",window.URL.createObjectURL(l)),r.setAttribute("download",n),r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},Download.prototype.commsReceived=function(e,o,t){switch(o){case"intercept":this.download(t.type,"",t.options,t.active,t.intercept)}},Download.prototype.downloaders={csv:function(e,o,t){var n=o&&o.delimiter?o.delimiter:",",a=[],r=[];e.forEach(function(e){var o=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(function(e,o){e&&1===e.depth&&(r[o]=void 0===e.value||"null"==typeof e.value?"":e.value)});break;case"row":e.columns.forEach(function(e){if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}o.push('"'+String(e.value).split('"').join('""')+'"')}}),a.push(o.join(n))}}),r.length&&(a=[r].concat(a)),a=a.join("\n"),o.bom&&(a="\ufeff"+a),t(a,"text/csv")},json:function(e,o,t){var n=[];e.forEach(function(e){var o={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach(function(e){e&&(o[e.component.getField()]=e.value)}),n.push(o)}}),n=JSON.stringify(n,null,"\t"),t(n,"application/json")},pdf:function(e,o,t){function n(e,o){var t=[];return e.columns.forEach(function(e){var n;if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}n={content:e.value,colSpan:e.width,rowSpan:e.height},o&&(n.styles=o),t.push(n)}else t.push("")}),t}var a=[],r=[],l={},s=o.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},i=o.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},c=o.jsPDF||{},u=o&&o.title?o.title:"";c.orientation||(c.orientation=o.orientation||"landscape"),c.unit||(c.unit="pt"),e.forEach(function(e){switch(e.type){case"header":a.push(n(e));break;case"group":r.push(n(e,s));break;case"calc":r.push(n(e,i));break;case"row":r.push(n(e))}});var d=new jsPDF(c);o&&o.autoTable&&(l="function"==typeof o.autoTable?o.autoTable(d)||{}:o.autoTable),u&&(l.addPageContent=function(e){d.text(u,40,30)}),l.head=a,l.body=r,d.autoTable(l),o&&o.documentProcessing&&o.documentProcessing(d),t(d.output("arraybuffer"),"application/pdf")},xlsx:function(e,o,t){function n(){var o=[],t=[],n={},a={s:{c:0,r:0},e:{c:e[0]?e[0].columns.reduce(function(e,o){return e+(o&&o.width?o.width:1)},0):0,r:e.length}};return e.forEach(function(e,n){var a=[];e.columns.forEach(function(e,o){e?(a.push(e.value instanceof Date||"object"!==_typeof(e.value)?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&t.push({s:{r:n,c:o},e:{r:n+e.height-1,c:o+e.width-1}})):a.push("")}),o.push(a)}),XLSX.utils.sheet_add_aoa(n,o),n["!ref"]=XLSX.utils.encode_range(a),t.length&&(n["!merges"]=t),n}var a,r=this,l=o.sheetName||"Sheet1",s=XLSX.utils.book_new();if(s.SheetNames=[],s.Sheets={},o.sheetOnly)return void t(n());if(o.sheets)for(var i in o.sheets)!0===o.sheets[i]?(s.SheetNames.push(i),s.Sheets[i]=n()):(s.SheetNames.push(i),this.table.modules.comms.send(o.sheets[i],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:r.active,intercept:function(e){s.Sheets[i]=e}}));else s.SheetNames.push(l),s.Sheets[l]=n();o.documentProcessing&&(s=o.documentProcessing(s)),a=XLSX.write(s,{bookType:"xlsx",bookSST:!0,type:"binary"}),t(function(e){for(var o=new ArrayBuffer(e.length),t=new Uint8Array(o),n=0;n!=e.length;++n)t[n]=255&e.charCodeAt(n);return o}(a),"application/octet-stream")},html:function(e,o,t){this.modExists("export",!0)&&t(this.modules.export.genereateHTMLTable(e),"text/html")}},Tabulator.prototype.registerModule("download",Download);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Edit = function Edit(table) {
        this.table = table; //hold Tabulator object
 
 var Edit = function Edit(table) {
        this.table = table; //hold Tabulator object
@@ -107,10 +107,6 @@ Edit.prototype.cancelEdit = function () {
                cell.setValueActual(cell.getValue());
                cell.cellRendered();
 
                cell.setValueActual(cell.getValue());
                cell.cellRendered();
 
-               if (cell.column.definition.editor == "textarea" || cell.column.definition.variableHeight) {
-                       cell.row.normalizeHeight(true);
-               }
-
                if (cell.column.cellEvents.cellEditCancelled) {
                        cell.column.cellEvents.cellEditCancelled.call(this.table, component);
                }
                if (cell.column.cellEvents.cellEditCancelled) {
                        cell.column.cellEvents.cellEditCancelled.call(this.table, component);
                }
@@ -133,11 +129,7 @@ Edit.prototype.bindEditor = function (cell) {
        });
 
        element.addEventListener("mousedown", function (e) {
        });
 
        element.addEventListener("mousedown", function (e) {
-               if (e.button === 2) {
-                       e.preventDefault();
-               } else {
-                       self.mouseClick = true;
-               }
+               self.mouseClick = true;
        });
 
        element.addEventListener("focus", function (e) {
        });
 
        element.addEventListener("focus", function (e) {
@@ -174,24 +166,6 @@ Edit.prototype.focusScrollAdjust = function (cell) {
                                this.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;
                        }
                }
                                this.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;
                        }
                }
-
-               var leftEdge = this.table.rowManager.element.scrollLeft,
-                   rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,
-                   cellEl = cell.getElement(),
-                   offset = cellEl.offsetLeft;
-
-               if (this.table.modExists("frozenColumns")) {
-                       leftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);
-                       rightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);
-               }
-
-               if (cellEl.offsetLeft < leftEdge) {
-                       this.table.rowManager.element.scrollLeft -= leftEdge - cellEl.offsetLeft;
-               } else {
-                       if (cellEl.offsetLeft + cellEl.offsetWidth > rightEdge) {
-                               this.table.rowManager.element.scrollLeft += cellEl.offsetLeft + cellEl.offsetWidth - rightEdge;
-                       }
-               }
        }
 };
 
        }
 };
 
@@ -223,6 +197,7 @@ Edit.prototype.edit = function (cell, e, forceEdit) {
 
                        if (valid === true || self.table.options.validationMode === "highlight") {
                                self.clearEditor();
 
                        if (valid === true || self.table.options.validationMode === "highlight") {
                                self.clearEditor();
+                               cell.setValue(value, true);
 
                                if (!cell.modules.edit) {
                                        cell.modules.edit = {};
 
                                if (!cell.modules.edit) {
                                        cell.modules.edit = {};
@@ -234,15 +209,12 @@ Edit.prototype.edit = function (cell, e, forceEdit) {
                                        self.editedCells.push(cell);
                                }
 
                                        self.editedCells.push(cell);
                                }
 
-                               cell.setValue(value, true);
-
                                if (self.table.options.dataTree && self.table.modExists("dataTree")) {
                                        self.table.modules.dataTree.checkForRestyle(cell);
                                }
 
                                if (valid !== true) {
                                        element.classList.add("tabulator-validation-fail");
                                if (self.table.options.dataTree && self.table.modExists("dataTree")) {
                                        self.table.modules.dataTree.checkForRestyle(cell);
                                }
 
                                if (valid !== true) {
                                        element.classList.add("tabulator-validation-fail");
-                                       self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
                                        return false;
                                }
 
                                        return false;
                                }
 
@@ -460,17 +432,13 @@ Edit.prototype.clearEdited = function (cell) {
        var editIndex;
 
        if (cell.modules.edit && cell.modules.edit.edited) {
        var editIndex;
 
        if (cell.modules.edit && cell.modules.edit.edited) {
-               cell.modules.edit.edited = false;
+               cell.modules.validate.invalid = false;
 
 
-               if (cell.modules.validate) {
-                       cell.modules.validate.invalid = false;
-               }
-       }
+               editIndex = this.editedCells.indexOf(cell);
 
 
-       editIndex = this.editedCells.indexOf(cell);
-
-       if (editIndex > -1) {
-               this.editedCells.splice(editIndex, 1);
+               if (editIndex > -1) {
+                       this.editedCells.splice(editIndex, 1);
+               }
        }
 };
 
        }
 };
 
@@ -533,11 +501,6 @@ Edit.prototype.editors = {
                                case 27:
                                        cancel();
                                        break;
                                case 27:
                                        cancel();
                                        break;
-
-                               case 35:
-                               case 36:
-                                       e.stopPropagation();
-                                       break;
                        }
                });
 
                        }
                });
 
@@ -583,10 +546,6 @@ Edit.prototype.editors = {
                onRendered(function () {
                        input.focus({ preventScroll: true });
                        input.style.height = "100%";
                onRendered(function () {
                        input.focus({ preventScroll: true });
                        input.style.height = "100%";
-
-                       input.scrollHeight;
-                       input.style.height = input.scrollHeight + "px";
-                       cell.getRow().normalizeHeight();
                });
 
                function onChange(e) {
                });
 
                function onChange(e) {
@@ -646,11 +605,6 @@ Edit.prototype.editors = {
                                                e.stopPropagation();
                                        }
                                        break;
                                                e.stopPropagation();
                                        }
                                        break;
-
-                               case 35:
-                               case 36:
-                                       e.stopPropagation();
-                                       break;
                        }
                });
 
                        }
                });
 
@@ -751,11 +705,6 @@ Edit.prototype.editors = {
                                                e.stopPropagation();
                                        }
                                        break;
                                                e.stopPropagation();
                                        }
                                        break;
-
-                               case 35:
-                               case 36:
-                                       e.stopPropagation();
-                                       break;
                        }
                });
 
                        }
                });
 
@@ -849,13 +798,11 @@ Edit.prototype.editors = {
 
        //select
        select: function select(cell, onRendered, success, cancel, editorParams) {
 
        //select
        select: function select(cell, onRendered, success, cancel, editorParams) {
-               var _this = this;
-
                var self = this,
                    cellEl = cell.getElement(),
                    initialValue = cell.getValue(),
                    vertNav = editorParams.verticalNavigation || "editor",
                var self = this,
                    cellEl = cell.getElement(),
                    initialValue = cell.getValue(),
                    vertNav = editorParams.verticalNavigation || "editor",
-                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? Array.isArray(initialValue) ? initialValue : [initialValue] : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : [],
+                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : [],
                    input = document.createElement("input"),
                    listEl = document.createElement("div"),
                    multiselect = editorParams.multiselect,
                    input = document.createElement("input"),
                    listEl = document.createElement("div"),
                    multiselect = editorParams.multiselect,
@@ -863,8 +810,9 @@ Edit.prototype.editors = {
                    currentItem = {},
                    displayItems = [],
                    currentItems = [],
                    currentItem = {},
                    displayItems = [],
                    currentItems = [],
-                   blurable = true,
-                   blockListShow = false;
+                   blurable = true;
+
+               this.table.rowManager.element.addEventListener("scroll", cancelItem);
 
                if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === "undefined" ? "undefined" : _typeof(editorParams)) === "object" && !editorParams.values) {
                        console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
 
                if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === "undefined" ? "undefined" : _typeof(editorParams)) === "object" && !editorParams.values) {
                        console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
@@ -1028,12 +976,6 @@ Edit.prototype.editors = {
                                                el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
 
                                                el.addEventListener("click", function () {
                                                el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
 
                                                el.addEventListener("click", function () {
-                                                       blockListShow = true;
-
-                                                       setTimeout(function () {
-                                                               blockListShow = false;
-                                                       }, 10);
-
                                                        // setCurrentItem(item);
                                                        // chooseItem();
                                                        if (multiselect) {
                                                        // setCurrentItem(item);
                                                        // chooseItem();
                                                        if (multiselect) {
@@ -1096,10 +1038,6 @@ Edit.prototype.editors = {
                                        item.element.classList.add("active");
                                }
                        }
                                        item.element.classList.add("active");
                                }
                        }
-
-                       if (item && item.element && item.element.scrollIntoView) {
-                               item.element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });
-                       }
                }
 
                // function chooseItem(){
                }
 
                // function chooseItem(){
@@ -1163,17 +1101,12 @@ Edit.prototype.editors = {
                        }
 
                        if (item) {
                        }
 
                        if (item) {
-                               input.value = item.label;
                                success(item.value);
                        }
                                success(item.value);
                        }
-
-                       initialDisplayValue = input.value;
                }
 
                }
 
-               function chooseItems(silent) {
-                       if (!silent) {
-                               hideList();
-                       }
+               function chooseItems() {
+                       hideList();
 
                        var output = [];
 
 
                        var output = [];
 
@@ -1181,8 +1114,6 @@ Edit.prototype.editors = {
                                output.push(item.value);
                        });
 
                                output.push(item.value);
                        });
 
-                       initialDisplayValue = input.value;
-
                        success(output);
                }
 
                        success(output);
                }
 
@@ -1194,19 +1125,6 @@ Edit.prototype.editors = {
                        });
 
                        input.value = output.join(", ");
                        });
 
                        input.value = output.join(", ");
-
-                       if (self.currentCell === false) {
-                               chooseItems(true);
-                       }
-               }
-
-               function unsetItems() {
-
-                       var len = currentItems.length;
-
-                       for (var i = 0; i < len; i++) {
-                               unsetItem(0);
-                       }
                }
 
                function cancelItem() {
                }
 
                function cancelItem() {
@@ -1215,9 +1133,8 @@ Edit.prototype.editors = {
                }
 
                function showList() {
                }
 
                function showList() {
-                       currentItems = [];
-
                        if (!listEl.parentNode) {
                        if (!listEl.parentNode) {
+
                                if (editorParams.values === true) {
                                        parseItems(getUniqueColumnValues(), initialDisplayValue);
                                } else if (typeof editorParams.values === "string") {
                                if (editorParams.values === true) {
                                        parseItems(getUniqueColumnValues(), initialDisplayValue);
                                } else if (typeof editorParams.values === "string") {
@@ -1287,13 +1204,6 @@ Edit.prototype.editors = {
                //      parseItems(editorParams.values || [], initialValue);
                // }
 
                //      parseItems(editorParams.values || [], initialValue);
                // }
 
-               input.addEventListener("search", function (e) {
-                       if (!input.value) {
-                               unsetItems();
-                               chooseItems();
-                       }
-               });
-
                //allow key based navigation
                input.addEventListener("keydown", function (e) {
                        var index;
                //allow key based navigation
                input.addEventListener("keydown", function (e) {
                        var index;
@@ -1357,15 +1267,6 @@ Edit.prototype.editors = {
                                        //escape
                                        cancelItem();
                                        break;
                                        //escape
                                        cancelItem();
                                        break;
-
-                               case 9:
-                                       //tab
-                                       break;
-
-                               default:
-                                       if (self.currentCell === false) {
-                                               e.preventDefault();
-                                       }
                        }
                });
 
                        }
                });
 
@@ -1380,9 +1281,7 @@ Edit.prototype.editors = {
                });
 
                input.addEventListener("focus", function (e) {
                });
 
                input.addEventListener("focus", function (e) {
-                       if (!blockListShow) {
-                               showList();
-                       }
+                       showList();
                });
 
                //style list element
                });
 
                //style list element
@@ -1394,17 +1293,11 @@ Edit.prototype.editors = {
                        input.focus({ preventScroll: true });
                });
 
                        input.focus({ preventScroll: true });
                });
 
-               setTimeout(function () {
-                       _this.table.rowManager.element.addEventListener("scroll", cancelItem);
-               }, 10);
-
                return input;
        },
 
        //autocomplete
        autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
                return input;
        },
 
        //autocomplete
        autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
-               var _this2 = this;
-
                var self = this,
                    cellEl = cell.getElement(),
                    initialValue = cell.getValue(),
                var self = this,
                    cellEl = cell.getElement(),
                    initialValue = cell.getValue(),
@@ -1419,6 +1312,8 @@ Edit.prototype.editors = {
                    blurable = true,
                    uniqueColumnValues = false;
 
                    blurable = true,
                    uniqueColumnValues = false;
 
+               this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
                //style input
                input.setAttribute("type", "search");
 
                //style input
                input.setAttribute("type", "search");
 
@@ -1709,10 +1604,6 @@ Edit.prototype.editors = {
                        if (item && item.element) {
                                item.element.classList.add("active");
                        }
                        if (item && item.element) {
                                item.element.classList.add("active");
                        }
-
-                       if (item && item.element && item.element.scrollIntoView) {
-                               item.element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });
-                       }
                }
 
                function hideList() {
                }
 
                function hideList() {
@@ -1846,14 +1737,6 @@ Edit.prototype.editors = {
                        this.table.modules.edit.maskInput(input, editorParams);
                }
 
                        this.table.modules.edit.maskInput(input, editorParams);
                }
 
-               setTimeout(function () {
-                       _this2.table.rowManager.element.addEventListener("scroll", cancelItem);
-               }, 10);
-
-               genUniqueColumnValues();
-               input.value = initialDisplayValue;
-               filterList(initialDisplayValue, true);
-
                return input;
        },
 
                return input;
        },
 
@@ -2176,10 +2059,6 @@ Edit.prototype.editors = {
 
                input.checked = value === true || value === "true" || value === "True" || value === 1;
 
 
                input.checked = value === true || value === "true" || value === "True" || value === 1;
 
-               onRendered(function () {
-                       input.focus();
-               });
-
                function setValue(blur) {
                        if (tristate) {
                                if (!blur) {
                function setValue(blur) {
                        if (tristate) {
                                if (!blur) {
diff --git a/admin/js/vendors/tabulator/js/modules/edit.min.js b/admin/js/vendors/tabulator/js/modules/edit.min.js
new file mode 100644 (file)
index 0000000..8e256be
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Edit=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[]};Edit.prototype.initializeColumn=function(e){var t=this,i={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?i.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":i.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?i.editor=t.editors[e.definition.formatter]:i.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}i.editor&&(e.modules.edit=i)},Edit.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},Edit.prototype.clearEditor=function(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),e?i.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-row-editing")}},Edit.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},Edit.prototype.bindEditor=function(e){var t=this,i=e.getElement();i.setAttribute("tabindex",0),i.addEventListener("click",function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})}),i.addEventListener("mousedown",function(e){t.mouseClick=!0}),i.addEventListener("focus",function(i){t.recursionBlock||t.edit(e,i,!1)})},Edit.prototype.focusCellNoEvent=function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1},Edit.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},Edit.prototype.focusScrollAdjust=function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,n=e.row.getElement();n.offsetTop;n.offsetTop<t?this.table.rowManager.element.scrollTop-=t-n.offsetTop:n.offsetTop+n.offsetHeight>i&&(this.table.rowManager.element.scrollTop+=n.offsetTop+n.offsetHeight-i)}},Edit.prototype.edit=function(e,t,i){function n(t){if(u.currentCell===e){var i=!0;return e.column.modules.validate&&u.table.modExists("validate")&&"manual"!=u.table.options.validationMode&&(i=u.table.modules.validate.validate(e.column.modules.validate,e,t)),!0===i||"highlight"===u.table.options.validationMode?(u.clearEditor(),e.setValue(t,!0),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==u.editedCells.indexOf(e)&&u.editedCells.push(e),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e),!0===i||(m.classList.add("tabulator-validation-fail"),!1)):(u.invalidEdit=!0,m.classList.add("tabulator-validation-fail"),u.focusCellNoEvent(e,!0),c(),u.table.options.validationFailed.call(u.table,e.getComponent(),t,i),!1)}}function o(){u.currentCell===e&&(u.cancelEdit(),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e))}function a(e){c=e}var r,l,s,u=this,d=!0,c=function(){},m=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,m.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":d=e.column.modules.edit.check(e.getComponent());break;case"boolean":d=e.column.modules.edit.check}if(d||i){if(u.cancelEdit(),u.currentCell=e,this.focusScrollAdjust(e),l=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,l)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,l),u.table.options.cellEditing.call(this.table,l),s="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(l):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(u,l,a,n,o,s)))return m.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),m.blur(),!1;for(m.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");m.firstChild;)m.removeChild(m.firstChild);m.appendChild(r),c();for(var f=m.children,p=0;p<f.length;p++)f[p].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,m.blur(),!1},Edit.prototype.maskInput=function(e,t){function i(t){var l=n[t];void 0!==l&&l!==r&&l!==o&&l!==a&&(e.value=e.value+""+l,i(t+1))}var n=t.mask,o=void 0!==t.maskLetterChar?t.maskLetterChar:"A",a=void 0!==t.maskNumberChar?t.maskNumberChar:"9",r=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*",l=!1;e.addEventListener("keydown",function(t){var i=e.value.length,s=t.key;if(t.keyCode>46){if(i>=n.length)return t.preventDefault(),t.stopPropagation(),l=!1,!1;switch(n[i]){case o:if(s.toUpperCase()==s.toLowerCase())return t.preventDefault(),t.stopPropagation(),l=!1,!1;break;case a:if(isNaN(s))return t.preventDefault(),t.stopPropagation(),l=!1,!1;break;case r:break;default:if(s!==n[i])return t.preventDefault(),t.stopPropagation(),l=!1,!1}l=!0}}),e.addEventListener("keyup",function(n){n.keyCode>46&&t.maskAutoFill&&i(e.value.length)}),e.placeholder||(e.placeholder=n),t.maskAutoFill&&i(e.value.length)},Edit.prototype.getEditedCells=function(){var e=[];return this.editedCells.forEach(function(t){e.push(t.getComponent())}),e},Edit.prototype.clearEdited=function(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.validate.invalid=!1,(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1))},Edit.prototype.editors={input:function(e,t,i,n,o){function a(e){(null===r||void 0===r)&&""!==l.value||l.value!==r?i(l.value)&&(r=l.value):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type",o.search?"search":"text"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var s in o.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+o.elementAttributes["+"+s])):l.setAttribute(s,o.elementAttributes[s]);return l.value=void 0!==r?r:"",t(function(){l.focus({preventScroll:!0}),l.style.height="100%"}),l.addEventListener("change",a),l.addEventListener("blur",a),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:a(e);break;case 27:n()}}),o.mask&&this.table.modules.edit.maskInput(l,o),l},textarea:function(e,t,i,n,o){function a(t){(null===r||void 0===r)&&""!==u.value||u.value!==r?(i(u.value)&&(r=u.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):n()}var r=e.getValue(),l=o.verticalNavigation||"hybrid",s=String(null!==r&&void 0!==r?r:""),u=(s.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),d=0;if(u.style.display="block",u.style.padding="2px",u.style.height="100%",u.style.width="100%",u.style.boxSizing="border-box",u.style.whiteSpace="pre-wrap",u.style.resize="none",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var c in o.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),u.setAttribute(c,u.getAttribute(c)+o.elementAttributes["+"+c])):u.setAttribute(c,o.elementAttributes[c]);return u.value=s,t(function(){u.focus({preventScroll:!0}),u.style.height="100%"}),u.addEventListener("change",a),u.addEventListener("blur",a),u.addEventListener("keyup",function(){u.style.height="";var t=u.scrollHeight;u.style.height=t+"px",t!=d&&(d=t,e.getRow().normalizeHeight())}),u.addEventListener("keydown",function(e){switch(e.keyCode){case 27:n();break;case 38:("editor"==l||"hybrid"==l&&u.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==l||"hybrid"==l&&u.selectionStart!==u.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation())}}),o.mask&&this.table.modules.edit.maskInput(u,o),u},number:function(e,t,i,n,o){function a(){var e=s.value;isNaN(e)||""===e||(e=Number(e)),e!==r?i(e)&&(r=e):n()}var r=e.getValue(),l=o.verticalNavigation||"editor",s=document.createElement("input");if(s.setAttribute("type","number"),void 0!==o.max&&s.setAttribute("max",o.max),void 0!==o.min&&s.setAttribute("min",o.min),void 0!==o.step&&s.setAttribute("step",o.step),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var u in o.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),s.setAttribute(u,s.getAttribute(u)+o.elementAttributes["+"+u])):s.setAttribute(u,o.elementAttributes[u]);s.value=r;var d=function(e){a()};return t(function(){s.removeEventListener("blur",d),s.focus({preventScroll:!0}),s.style.height="100%",s.addEventListener("blur",d)}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 13:a();break;case 27:n();break;case 38:case 40:"editor"==l&&(e.stopImmediatePropagation(),e.stopPropagation())}}),o.mask&&this.table.modules.edit.maskInput(s,o),s},range:function(e,t,i,n,o){function a(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type","range"),void 0!==o.max&&l.setAttribute("max",o.max),void 0!==o.min&&l.setAttribute("min",o.min),void 0!==o.step&&l.setAttribute("step",o.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var s in o.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+o.elementAttributes["+"+s])):l.setAttribute(s,o.elementAttributes[s]);return l.value=r,t(function(){l.focus({preventScroll:!0}),l.style.height="100%"}),l.addEventListener("blur",function(e){a()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:a();break;case 27:n()}}),l},select:function(e,t,i,n,o){function a(t){var i,n={},a=y.table.getData();return i=t?y.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(a.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=o.sortValuesList?"asc"==o.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create select lookup list:",t),n}function r(t,i){function n(e){var e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return i.indexOf(e.value)>-1&&u(e),o.push(e),a.push(e),e}var o=[],a=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1},a.push(t),e.options.forEach(function(e){n(e)})):n(e):(t={label:e,value:e,element:!1},i.indexOf(t.value)>-1&&u(t),o.push(t),a.push(t))});else for(var r in t){var s={label:t[r],value:r,element:!1};i.indexOf(s.value)>-1&&u(s),o.push(s),a.push(s)}P=o,T=a,l()}function l(){for(;w.firstChild;)w.removeChild(w.firstChild);T.forEach(function(t){var i=t.element;if(!i){if(i=document.createElement("div"),t.label=o.listItemFormatter?o.listItemFormatter(t.value,t.label,e,i,t.itemParams):t.label,t.group?(i.classList.add("tabulator-edit-select-list-group"),i.tabIndex=0,i.innerHTML=""===t.label?"&nbsp;":t.label):(i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=""===t.label?"&nbsp;":t.label,i.addEventListener("click",function(){x?(c(t),L.focus()):m(t)}),I.indexOf(t)>-1&&i.classList.add("active")),t.elementAttributes&&"object"==_typeof(t.elementAttributes))for(var n in t.elementAttributes)"+"==n.charAt(0)?(n=n.slice(1),i.setAttribute(n,L.getAttribute(n)+t.elementAttributes["+"+n])):i.setAttribute(n,t.elementAttributes[n]);i.addEventListener("mousedown",function(){S=!1,setTimeout(function(){S=!0},10)}),t.element=i}w.appendChild(i)})}function s(e,t){!x&&N&&N.element&&N.element.classList.remove("active"),N&&N.element&&N.element.classList.remove("focused"),N=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active"))}function u(e){-1==I.indexOf(e)&&(I.push(e),s(e,!0)),p()}function d(e){var t=I[e];e>-1&&(I.splice(e,1),t.element&&t.element.classList.remove("active"))}function c(e){e||(e=N);var t=I.indexOf(e);t>-1?d(t):(!0!==x&&I.length>=x&&d(0),u(e)),p()}function m(e){h(),e||(e=N),e&&i(e.value)}function f(){h();var e=[];I.forEach(function(t){e.push(t.value)}),i(e)}function p(){var e=[];I.forEach(function(t){e.push(t.label)}),L.value=e.join(", ")}function v(){h(),n()}function b(){if(!w.parentNode){!0===o.values?r(a(),C):"string"==typeof o.values?r(a(o.values),C):r(o.values||[],C);var e=Tabulator.prototype.helpers.elOffset(E);w.style.minWidth=E.offsetWidth+"px",w.style.top=e.top+E.offsetHeight+"px",w.style.left=e.left+"px",w.addEventListener("mousedown",function(e){S=!1,setTimeout(function(){S=!0},10)}),document.body.appendChild(w)}}function h(){w.parentNode&&w.parentNode.removeChild(w),g()}function g(){y.table.rowManager.element.removeEventListener("scroll",v)}var y=this,E=e.getElement(),A=e.getValue(),k=o.verticalNavigation||"editor",C=void 0!==A||null===A?A:void 0!==o.defaultValue?o.defaultValue:[],L=document.createElement("input"),w=document.createElement("div"),x=o.multiselect,P=[],N={},T=[],I=[],S=!0;if(this.table.rowManager.element.addEventListener("scroll",v),(Array.isArray(o)||!Array.isArray(o)&&"object"===(void 0===o?"undefined":_typeof(o))&&!o.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),o={values:o}),L.setAttribute("type","text"),L.style.padding="4px",L.style.width="100%",L.style.boxSizing="border-box",L.style.cursor="default",L.readOnly=0!=this.currentCell,o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var O in o.elementAttributes)"+"==O.charAt(0)?(O=O.slice(1),L.setAttribute(O,L.getAttribute(O)+o.elementAttributes["+"+O])):L.setAttribute(O,o.elementAttributes[O]);return L.value=void 0!==A||null===A?A:"",L.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=P.indexOf(N),("editor"==k||"hybrid"==k&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&s(P[t-1],!x));break;case 40:t=P.indexOf(N),("editor"==k||"hybrid"==k&&t<P.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<P.length-1&&(-1==t?s(P[0],!x):s(P[t+1],!x)));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:x?c():m();break;case 27:v()}}),L.addEventListener("blur",function(e){S&&(x?f():v())}),L.addEventListener("focus",function(e){b()}),w=document.createElement("div"),w.classList.add("tabulator-edit-select-list"),t(function(){L.style.height="100%",L.focus({preventScroll:!0})}),L},autocomplete:function(e,t,i,n,o){function a(){!0===o.values?T=r():"string"==typeof o.values&&(T=r(o.values))}function r(t){var i,n={},a=y.table.getData();return i=t?y.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(a.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=o.sortValuesList?"asc"==o.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create autocomplete lookup list:",t),n}function l(e,t){var i,n,a=[];i=T||(o.values||[]),o.searchFunc?(a=o.searchFunc(e,i),a instanceof Promise?(s(void 0!==o.searchingPlaceholder?o.searchingPlaceholder:"Searching..."),a.then(function(e){c(u(e),t)}).catch(function(e){console.err("error in autocomplete search promise:",e)})):c(u(a),t)):(n=u(i),""===e?o.showListOnEmpty&&(a=n):n.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&a.push(t)}),c(a,t))}function s(e){var t=document.createElement("div");d(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,w.appendChild(t))}function u(e){var t=[];if(Array.isArray(e))e.forEach(function(e){var i={};"object"===(void 0===e?"undefined":_typeof(e))?(i.title=o.listItemFormatter?o.listItemFormatter(e.value,e.label):e.label,i.value=e.value):(i.title=o.listItemFormatter?o.listItemFormatter(e,e):e,i.value=e),t.push(i)});else for(var i in e){var n={title:o.listItemFormatter?o.listItemFormatter(i,e[i]):e[i],value:i};t.push(n)}return t}function d(){for(;w.firstChild;)w.removeChild(w.firstChild)}function c(e,t){e.length?m(e,t):o.emptyPlaceholder&&s(o.emptyPlaceholder)}function m(e,t){var i=!1;d(),x=e,x.forEach(function(e){var n=e.element;n||(n=document.createElement("div"),n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=e.title,n.addEventListener("click",function(t){v(e),f()}),n.addEventListener("mousedown",function(e){N=!1,setTimeout(function(){N=!0},10)}),e.element=n,t&&e.value==A&&(L.value=e.title,e.element.classList.add("active"),i=!0),e===P&&(e.element.classList.add("active"),i=!0)),w.appendChild(n)}),i||v(!1)}function f(){b(),P?A!==P.value?(A=P.value,L.value=P.title,i(P.value)):n():o.freetext?(A=L.value,i(L.value)):o.allowEmpty&&""===L.value?(A=L.value,i(L.value)):n()}function p(){if(!w.parentNode){for(;w.firstChild;)w.removeChild(w.firstChild);var e=Tabulator.prototype.helpers.elOffset(E);w.style.minWidth=E.offsetWidth+"px",w.style.top=e.top+E.offsetHeight+"px",w.style.left=e.left+"px",document.body.appendChild(w)}}function v(e,t){P&&P.element&&P.element.classList.remove("active"),P=e,e&&e.element&&e.element.classList.add("active")}function b(){w.parentNode&&w.parentNode.removeChild(w),g()}function h(){b(),n()}function g(){y.table.rowManager.element.removeEventListener("scroll",h)}var y=this,E=e.getElement(),A=e.getValue(),k=o.verticalNavigation||"editor",C=void 0!==A||null===A?A:void 0!==o.defaultValue?o.defaultValue:"",L=document.createElement("input"),w=document.createElement("div"),x=[],P=!1,N=!0,T=!1;if(this.table.rowManager.element.addEventListener("scroll",h),L.setAttribute("type","search"),L.style.padding="4px",L.style.width="100%",L.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var I in o.elementAttributes)"+"==I.charAt(0)?(I=I.slice(1),L.setAttribute(I,L.getAttribute(I)+o.elementAttributes["+"+I])):L.setAttribute(I,o.elementAttributes[I]);return w.classList.add("tabulator-edit-select-list"),w.addEventListener("mousedown",function(e){N=!1,setTimeout(function(){N=!0},10)}),L.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=x.indexOf(P),("editor"==k||"hybrid"==k&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),v(t>0?x[t-1]:!1));break;case 40:t=x.indexOf(P),("editor"==k||"hybrid"==k&&t<x.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<x.length-1&&v(-1==t?x[0]:x[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation();break;case 13:f();break;case 27:h();break;case 36:case 35:e.stopImmediatePropagation()}}),L.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:l(L.value)}}),L.addEventListener("search",function(e){l(L.value)}),L.addEventListener("blur",function(e){N&&f()}),L.addEventListener("focus",function(e){var t=C;a(),p(),L.value=t,l(t,!0)}),t(function(){L.style.height="100%",L.focus({preventScroll:!0})}),o.mask&&this.table.modules.edit.maskInput(L,o),L},star:function(e,t,i,n,o){function a(e){m.forEach(function(t,i){i<e?("ie"==l.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==l.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){u=e,a(e)}var l=this,s=e.getElement(),u=e.getValue(),d=s.getElementsByTagName("svg").length||5,c=s.getElementsByTagName("svg")[0]?s.getElementsByTagName("svg")[0].getAttribute("width"):14,m=[],f=document.createElement("div"),p=document.createElementNS("http://www.w3.org/2000/svg","svg");if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",f.style.verticalAlign="middle",f.style.display="inline-block",f.style.padding="4px",p.setAttribute("width",c),p.setAttribute("height",c),p.setAttribute("viewBox","0 0 512 512"),p.setAttribute("xml:space","preserve"),p.style.padding="0 1px",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var v in o.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),f.setAttribute(v,f.getAttribute(v)+o.elementAttributes["+"+v])):f.setAttribute(v,o.elementAttributes[v]);for(var b=1;b<=d;b++)!function(e){var t=document.createElement("span"),n=p.cloneNode(!0);m.push(n),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),a(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e),s.blur()}),t.appendChild(n),f.appendChild(t)}(b);return u=Math.min(parseInt(u),d),a(u),f.addEventListener("mousemove",function(e){a(0)}),f.addEventListener("click",function(e){i(0)}),s.addEventListener("blur",function(e){n()}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(u+1);break;case 37:r(u-1);break;case 13:i(u);break;case 27:n()}}),f},progress:function(e,t,i,n,o){function a(){var e=c*Math.round(p.offsetWidth/(s.clientWidth/100))+d;i(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",m)}var r,l,s=e.getElement(),u=void 0===o.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:o.max,d=void 0===o.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:o.min,c=(u-d)/100,m=e.getValue()||0,f=document.createElement("div"),p=document.createElement("div");if(f.style.position="absolute",f.style.right="0",f.style.top="0",f.style.bottom="0",f.style.width="5px",f.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var v in o.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),p.setAttribute(v,p.getAttribute(v)+o.elementAttributes["+"+v])):p.setAttribute(v,o.elementAttributes[v]);return s.style.padding="4px 4px",m=Math.min(parseFloat(m),u),m=Math.max(parseFloat(m),d),m=Math.round((m-d)/c),p.style.width=m+"%",s.setAttribute("aria-valuemin",d),s.setAttribute("aria-valuemax",u),p.appendChild(f),f.addEventListener("mousedown",function(e){r=e.screenX,l=p.offsetWidth}),f.addEventListener("mouseover",function(){f.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){r&&(p.style.width=l+e.screenX-r+"px")}),s.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,l=!1,a())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+s.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-s.clientWidth/100+"px";break;case 9:case 13:a();break;case 27:n()}}),s.addEventListener("blur",function(){n()}),p},tickCross:function(e,t,i,n,o){function a(e){return s?e?d?u:l.checked:l.checked&&!d?(l.checked=!1,l.indeterminate=!0,d=!0,u):(d=!1,l.checked):l.checked}var r=e.getValue(),l=document.createElement("input"),s=o.tristate,u=void 0===o.indeterminateValue?null:o.indeterminateValue,d=!1;if(l.setAttribute("type","checkbox"),l.style.marginTop="5px",l.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var c in o.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+o.elementAttributes["+"+c])):l.setAttribute(c,o.elementAttributes[c]);return l.value=r,!s||void 0!==r&&r!==u&&""!==r||(d=!0,l.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){l.focus({preventScroll:!0})}),l.checked=!0===r||"true"===r||"True"===r||1===r,l.addEventListener("change",function(e){i(a())}),l.addEventListener("blur",function(e){i(a(!0))}),l.addEventListener("keydown",function(e){13==e.keyCode&&i(a()),27==e.keyCode&&n()}),l}},Tabulator.prototype.registerModule("edit",Edit);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var ExportRow = function ExportRow(type, columns, component, indent) {
        this.type = type;
 
 var ExportRow = function ExportRow(type, columns, component, indent) {
        this.type = type;
@@ -71,11 +71,7 @@ Export.prototype.rowLookup = function (range) {
 
                        case "active":
                        default:
 
                        case "active":
                        default:
-                               if (this.table.options.pagination) {
-                                       rows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);
-                               } else {
-                                       rows = this.table.rowManager.getDisplayRows();
-                               }
+                               rows = this.table.rowManager.getDisplayRows();
                }
        }
 
                }
        }
 
@@ -441,7 +437,7 @@ Export.prototype.genereateGroupElement = function (row, setup, styles) {
        rowEl.classList.add("tabulator-print-table-group");
        rowEl.classList.add("tabulator-group-level-" + row.indent);
 
        rowEl.classList.add("tabulator-print-table-group");
        rowEl.classList.add("tabulator-group-level-" + row.indent);
 
-       if (group.component.isVisible()) {
+       if (group.component.getVisibility()) {
                rowEl.classList.add("tabulator-group-visible");
        }
 
                rowEl.classList.add("tabulator-group-visible");
        }
 
@@ -491,10 +487,10 @@ Export.prototype.genereateRowElement = function (row, setup, styles) {
                                        return column.getComponent();
                                },
                                getData: function getData() {
                                        return column.getComponent();
                                },
                                getData: function getData() {
-                                       return row.component.getData();
+                                       return rowData;
                                },
                                getRow: function getRow() {
                                },
                                getRow: function getRow() {
-                                       return row.component;
+                                       return row.getComponent();
                                },
                                getComponent: function getComponent() {
                                        return cellWrapper;
                                },
                                getComponent: function getComponent() {
                                        return cellWrapper;
@@ -558,7 +554,13 @@ Export.prototype.genereateRowElement = function (row, setup, styles) {
                        }
 
                        if (setup.rowFormatter && _this7.config.formatCells !== false) {
                        }
 
                        if (setup.rowFormatter && _this7.config.formatCells !== false) {
-                               setup.rowFormatter(row.component);
+                               var rowComponent = row.getComponent();
+
+                               rowComponent.getElement = function () {
+                                       return rowEl;
+                               };
+
+                               setup.rowFormatter(rowComponent);
                        }
                }
        });
                        }
                }
        });
diff --git a/admin/js/vendors/tabulator/js/modules/export.min.js b/admin/js/vendors/tabulator/js/modules/export.min.js
new file mode 100644 (file)
index 0000000..d0dcccd
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ExportRow=function(t,e,o,r){this.type=t,this.columns=e,this.component=o||!1,this.indent=r||0},ExportColumn=function(t,e,o,r,n){this.value=t,this.component=e||!1,this.width=o,this.height=r,this.depth=n},Export=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};Export.prototype.generateExportList=function(t,e,o,r){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=r;var n=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],l=this.bodyToExportRows(this.rowLookup(o));return n.concat(l)},Export.prototype.genereateTable=function(t,e,o,r){var n=this.generateExportList(t,e,o,r);return this.genereateTableElement(n)},Export.prototype.rowLookup=function(t){var e=this,o=[];if("function"==typeof t)t.call(this.table).forEach(function(t){(t=e.table.rowManager.findRow(t))&&o.push(t)});else switch(t){case!0:case"visible":o=this.table.rowManager.getVisibleRows(!0);break;case"all":o=this.table.rowManager.rows;break;case"selected":o=this.table.modules.selectRow.selectedRows;break;case"active":default:o=this.table.rowManager.getDisplayRows()}return Object.assign([],o)},Export.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var r=t.processColumnGroup(o);r&&e.push(r)}),e},Export.prototype.processColumnGroup=function(t){var e=this,o=t.columns,r=0,n=t.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||t.definition.title,l={title:n,column:t,depth:1};if(o.length){if(l.subGroups=[],l.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(l.width+=o.width,l.subGroups.push(o),o.depth>r&&(r=o.depth))}),l.depth+=r,!l.width)return!1}else{if(!this.columnVisCheck(t))return!1;l.width=1}return l},Export.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},Export.prototype.headersToExportRows=function(t){function e(t,n){var l=r-n;if(void 0===o[n]&&(o[n]=[]),t.height=t.subGroups?1:l-t.depth+1,o[n].push(t),t.height>1)for(var a=1;a<t.height;a++)void 0===o[n+a]&&(o[n+a]=[]),o[n+a].push(!1);if(t.width>1)for(var i=1;i<t.width;i++)o[n].push(!1);t.subGroups&&t.subGroups.forEach(function(t){e(t,n+1)})}var o=[],r=0,n=[];return t.forEach(function(t){t.depth>r&&(r=t.depth)}),t.forEach(function(t){e(t,0)}),o.forEach(function(t){var e=[];t.forEach(function(t){t?e.push(new ExportColumn(t.title,t.column.getComponent(),t.width,t.height,t.depth)):e.push(null)}),n.push(new ExportRow("header",e))}),n},Export.prototype.bodyToExportRows=function(t){var e=this,o=[],r=[];return this.table.columnManager.columnsByIndex.forEach(function(t){e.columnVisCheck(t)&&o.push(t.getComponent())}),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&t.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&t.push(this.table.modules.columnCalcs.botRow)),t=t.filter(function(t){switch(t.type){case"group":return!1!==e.config.rowGroups;case"calc":return!1!==e.config.columnCalcs;case"row":return!(e.table.options.dataTree&&!1===e.config.dataTree&&t.modules.dataTree.parent)}return!0}),t.forEach(function(t,n){var l=t.getData(e.colVisProp),a=[],i=0;switch(t.type){case"group":i=t.level,a.push(new ExportColumn(t.key,t.getComponent(),o.length,1));break;case"calc":case"row":o.forEach(function(t){a.push(new ExportColumn(t._column.getFieldValue(l),t,1,1))}),e.table.options.dataTree&&!1!==e.config.dataTree&&(i=t.modules.dataTree.index)}r.push(new ExportRow(t.type,a,t.getComponent(),i))}),r},Export.prototype.genereateTableElement=function(t){var e=this,o=document.createElement("table"),r=document.createElement("thead"),n=document.createElement("tbody"),l=this.lookupTableStyles(),a=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],i={};return i.rowFormatter=null!==a?a:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(i.treeElementField=this.table.modules.dataTree.elementField),i.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],i.groupHeader&&!Array.isArray(i.groupHeader)&&(i.groupHeader=[i.groupHeader]),o.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),r,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),t.forEach(function(t,o){switch(t.type){case"header":r.appendChild(e.genereateHeaderElement(t,i,l));break;case"group":n.appendChild(e.genereateGroupElement(t,i,l));break;case"calc":n.appendChild(e.genereateCalcElement(t,i,l));break;case"row":var a=e.genereateRowElement(t,i,l);e.mapElementStyles(o%2&&l.evenRow?l.evenRow:l.oddRow,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n.appendChild(a)}}),r.innerHTML&&o.appendChild(r),o.appendChild(n),this.mapElementStyles(this.table.element,o,["border-top","border-left","border-right","border-bottom"]),o},Export.prototype.lookupTableStyles=function(){var t={};return this.cloneTableStyle&&window.getComputedStyle&&(t.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),t.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),t.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),t.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),t.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],t.firstRow&&(t.styleCells=t.firstRow.getElementsByClassName("tabulator-cell"),t.firstCell=t.styleCells[0],t.lastCell=t.styleCells[t.styleCells.length-1])),t},Export.prototype.genereateHeaderElement=function(t,e,o){var r=this,n=document.createElement("tr");return t.columns.forEach(function(t){if(t){var e=document.createElement("th"),o=t.component._column.definition.cssClass?t.component._column.definition.cssClass.split(" "):[];e.colSpan=t.width,e.rowSpan=t.height,e.innerHTML=t.value,r.cloneTableStyle&&(e.style.boxSizing="border-box"),o.forEach(function(t){e.classList.add(t)}),r.mapElementStyles(t.component.getElement(),e,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),r.mapElementStyles(t.component._column.contentElement,e,["padding-top","padding-left","padding-right","padding-bottom"]),t.component._column.visible?r.mapElementStyles(t.component.getElement(),e,["width"]):t.component._column.definition.width&&(e.style.width=t.component._column.definition.width+"px"),t.component._column.parent&&r.mapElementStyles(t.component._column.parent.groupElement,e,["border-top"]),n.appendChild(e)}}),n},Export.prototype.genereateGroupElement=function(t,e,o){var r=document.createElement("tr"),n=document.createElement("td"),l=t.columns[0];return r.classList.add("tabulator-print-table-row"),e.groupHeader&&e.groupHeader[t.indent]?l.value=e.groupHeader[t.indent](l.value,t.component._group.getRowCount(),t.component._group.getData(),t.component):!1===e.groupHeader?l.value=l.value:l.value=t.component._group.generator(l.value,t.component._group.getRowCount(),t.component._group.getData(),t.component),n.colSpan=l.width,n.innerHTML=l.value,r.classList.add("tabulator-print-table-group"),r.classList.add("tabulator-group-level-"+t.indent),l.component.getVisibility()&&r.classList.add("tabulator-group-visible"),this.mapElementStyles(o.firstGroup,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(o.firstGroup,n,["padding-top","padding-left","padding-right","padding-bottom"]),r.appendChild(n),r},Export.prototype.genereateCalcElement=function(t,e,o){var r=this.genereateRowElement(t,e,o);return r.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(o.calcRow,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),r},Export.prototype.genereateRowElement=function(t,e,o){var r=this,n=document.createElement("tr");return n.classList.add("tabulator-print-table-row"),t.columns.forEach(function(l){if(l){var a=document.createElement("td"),s=l.component._column,p=l.value,c={modules:{},getValue:function(){return p},getField:function(){return s.definition.field},getElement:function(){return a},getColumn:function(){return s.getComponent()},getData:function(){return rowData},getRow:function(){return t.getComponent()},getComponent:function(){return c},column:s};if((s.definition.cssClass?s.definition.cssClass.split(" "):[]).forEach(function(t){a.classList.add(t)}),r.table.modExists("format")&&!1!==r.config.formatCells)p=r.table.modules.format.formatExportValue(c,r.colVisProp);else switch(void 0===p?"undefined":_typeof(p)){case"object":p=JSON.stringify(p);break;case"undefined":case"null":p="";break;default:p=p}if(p instanceof Node?a.appendChild(p):a.innerHTML=p,o.firstCell&&(r.mapElementStyles(o.firstCell,a,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),s.definition.align&&(a.style.textAlign=s.definition.align)),r.table.options.dataTree&&!1!==r.config.dataTree&&(e.treeElementField&&e.treeElementField==s.field||!e.treeElementField&&0==i)&&(t.component._row.modules.dataTree.controlEl&&a.insertBefore(t.component._row.modules.dataTree.controlEl.cloneNode(!0),a.firstChild),t.component._row.modules.dataTree.branchEl&&a.insertBefore(t.component._row.modules.dataTree.branchEl.cloneNode(!0),a.firstChild)),n.appendChild(a),c.modules.format&&c.modules.format.renderedCallback&&c.modules.format.renderedCallback(),e.rowFormatter&&!1!==r.config.formatCells){var u=t.getComponent();u.getElement=function(){return n},e.rowFormatter(u)}}}),n},Export.prototype.genereateHTMLTable=function(t){var e=document.createElement("div");return e.appendChild(this.genereateTableElement(t)),e.innerHTML},Export.prototype.getHtml=function(t,e,o,r){var n=this.generateExportList(o||this.table.options.htmlOutputConfig,e,t,r||"htmlOutput");return this.genereateHTMLTable(n)},Export.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){var r={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(t);o.forEach(function(t){e.style[r[t]]=n.getPropertyValue(t)})}}},Tabulator.prototype.registerModule("export",Export);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Filter = function Filter(table) {
 
 
 var Filter = function Filter(table) {
 
@@ -796,7 +796,7 @@ Filter.prototype.filters = {
        //in array
        "in": function _in(filterVal, rowVal, rowData, filterParams) {
                if (Array.isArray(filterVal)) {
        //in array
        "in": function _in(filterVal, rowVal, rowData, filterParams) {
                if (Array.isArray(filterVal)) {
-                       return filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;
+                       return filterVal.indexOf(rowVal) > -1;
                } else {
                        console.warn("Filter Error - filter value is not an array:", filterVal);
                        return false;
                } else {
                        console.warn("Filter Error - filter value is not an array:", filterVal);
                        return false;
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Filter=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};Filter.prototype.initializeColumn=function(e,t){function r(t){var r,o="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",a="",s="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete n.headerFilters[l];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":n.filters[e.definition.headerFilterFunc]?(a=e.definition.headerFilterFunc,r=function(r){var i=e.definition.headerFilterFuncParams||{},l=e.getFieldValue(r);return i="function"==typeof i?i(t,l,r):i,n.filters[e.definition.headerFilterFunc](t,l,r,i)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=function(r){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(r);return i="function"==typeof i?i(t,n,r):i,e.definition.headerFilterFunc(t,n,r,i)},a=r}if(!r)switch(o){case"partial":r=function(r){var i=e.getFieldValue(r);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},a="like";break;default:r=function(r){return e.getFieldValue(r)==t},a="="}n.headerFilters[l]={value:t,func:r,type:a,params:i||{}}}s=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==s&&(n.prevHeaderFilterChangeCheck=s,n.changed=!0,n.table.rowManager.filterRefresh())}return!0}var i,n=this,l=e.getField();e.modules.filter={success:r,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},Filter.prototype.generateHeaderFilterElement=function(e,t,r){function i(){}var n,l,o,a,s,d,u,f=this,c=this,h=e.modules.filter.success,p=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),p){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":c.table.modules.edit.editors[e.definition.headerFilter]?(l=c.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":l=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?l=e.modules.edit.editor:e.definition.formatter&&c.table.modules.edit.editors[e.definition.formatter]?(l=c.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):l=c.table.modules.edit.editors.input}if(l){if(a={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(c.table):u,!(o=l.call(this.table.modules.edit,a,function(){},h,i,u)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(o instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",o);p?c.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){o.setAttribute("placeholder",void 0!==e&&e?e:c.table.modules.localize.getText("headerFilters|default"))}):c.table.modules.localize.bind("headerFilters|default",function(e){o.setAttribute("placeholder",void 0!==c.column.definition.headerFilterPlaceholder&&c.column.definition.headerFilterPlaceholder?c.column.definition.headerFilterPlaceholder:e)}),o.addEventListener("click",function(e){e.stopPropagation(),o.focus()}),o.addEventListener("focus",function(e){var t=f.table.columnManager.element.scrollLeft;t!==f.table.rowManager.element.scrollLeft&&(f.table.rowManager.scrollHorizontal(t),f.table.columnManager.scrollHorizontal(t))}),s=!1,d=function(e){s&&clearTimeout(s),s=setTimeout(function(){h(o.value)},c.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=o,e.modules.filter.attrType=o.hasAttribute("type")?o.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=o.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(o.addEventListener("keyup",d),o.addEventListener("search",d),"number"==e.modules.filter.attrType&&o.addEventListener("change",function(e){h(o.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&o.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||o.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(o),e.contentElement.appendChild(n),r||c.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},Filter.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},Filter.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},Filter.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},Filter.prototype.getHeaderFilterValue=function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())},Filter.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},Filter.prototype.setFilter=function(e,t,r,i){var n=this;n.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:r,params:i}]),n.addFilter(e)},Filter.prototype.addFilter=function(e,t,r,i){var n=this;Array.isArray(e)||(e=[{field:e,type:t,value:r,params:i}]),e.forEach(function(e){(e=n.findFilter(e))&&(n.filterList.push(e),n.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.findFilter=function(e){var t,r=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:r.filters[e.type]?(t=r.table.columnManager.getColumnByField(e.field),i=t?function(i){return r.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return r.filters[e.type](e.value,t[e.field],t,e.params||{})}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},Filter.prototype.findSubFilters=function(e){var t=this,r=[];return e.forEach(function(e){(e=t.findFilter(e))&&r.push(e)}),!!r.length&&r},Filter.prototype.getFilters=function(e,t){var r=[];return e&&(r=this.getHeaderFilters()),t&&r.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),r=r.concat(this.filtersToArray(this.filterList,t))},Filter.prototype.filtersToArray=function(e,t){var r=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(r.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},Filter.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},Filter.prototype.removeFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},e.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},Filter.prototype.search=function(e,t,r,i){var n=this,l=[],o=[];return Array.isArray(t)||(t=[{field:t,type:r,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&o.push(e)}),this.table.rowManager.rows.forEach(function(t){var r=!0;o.forEach(function(e){n.filterRecurse(e,t.getData())||(r=!1)}),r&&l.push("data"===e?t.getData("data"):t.getComponent())}),l},Filter.prototype.filter=function(e,t){var r=this,i=[],n=[];return r.table.options.dataFiltering&&r.table.options.dataFiltering.call(r.table,r.getFilters()),r.table.options.ajaxFiltering||!r.filterList.length&&!Object.keys(r.headerFilters).length?i=e.slice(0):e.forEach(function(e){r.filterRow(e)&&i.push(e)}),r.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),r.table.options.dataFiltered.call(r.table,r.getFilters(),n)),i},Filter.prototype.filterRow=function(e,t){var r=this,i=!0,n=e.getData();r.filterList.forEach(function(e){r.filterRecurse(e,n)||(i=!1)});for(var l in r.headerFilters)r.headerFilters[l].func(n)||(i=!1);return i},Filter.prototype.filterRecurse=function(e,t){var r=this,i=!1;return Array.isArray(e)?e.forEach(function(e){r.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},Filter.prototype.filters={"=":function(e,t,r,i){return t==e},"<":function(e,t,r,i){return t<e},"<=":function(e,t,r,i){return t<=e},">":function(e,t,r,i){return t>e},">=":function(e,t,r,i){return t>=e},"!=":function(e,t,r,i){return t!=e},regex:function(e,t,r,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,r,i){var n=e.toLowerCase().split(void 0===i.separator?" ":i.separator),l=String(null===t||void 0===t?"":t).toLowerCase(),o=[];return n.forEach(function(e){l.includes(e)&&o.push(!0)}),i.matchAll?o.length===n.length:!!o.length},starts:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,r,i){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},Tabulator.prototype.registerModule("filter",Filter);
\ No newline at end of file
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Filter=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};Filter.prototype.initializeColumn=function(e,t){function r(t){var r,o="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",a="",s="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete n.headerFilters[l];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":n.filters[e.definition.headerFilterFunc]?(a=e.definition.headerFilterFunc,r=function(r){var i=e.definition.headerFilterFuncParams||{},l=e.getFieldValue(r);return i="function"==typeof i?i(t,l,r):i,n.filters[e.definition.headerFilterFunc](t,l,r,i)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=function(r){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(r);return i="function"==typeof i?i(t,n,r):i,e.definition.headerFilterFunc(t,n,r,i)},a=r}if(!r)switch(o){case"partial":r=function(r){var i=e.getFieldValue(r);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},a="like";break;default:r=function(r){return e.getFieldValue(r)==t},a="="}n.headerFilters[l]={value:t,func:r,type:a,params:i||{}}}s=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==s&&(n.prevHeaderFilterChangeCheck=s,n.changed=!0,n.table.rowManager.filterRefresh())}return!0}var i,n=this,l=e.getField();e.modules.filter={success:r,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},Filter.prototype.generateHeaderFilterElement=function(e,t,r){function i(){}var n,l,o,a,s,d,u,f=this,c=this,h=e.modules.filter.success,p=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),p){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":c.table.modules.edit.editors[e.definition.headerFilter]?(l=c.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":l=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?l=e.modules.edit.editor:e.definition.formatter&&c.table.modules.edit.editors[e.definition.formatter]?(l=c.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):l=c.table.modules.edit.editors.input}if(l){if(a={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(c.table):u,!(o=l.call(this.table.modules.edit,a,function(){},h,i,u)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(o instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",o);p?c.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){o.setAttribute("placeholder",void 0!==e&&e?e:c.table.modules.localize.getText("headerFilters|default"))}):c.table.modules.localize.bind("headerFilters|default",function(e){o.setAttribute("placeholder",void 0!==c.column.definition.headerFilterPlaceholder&&c.column.definition.headerFilterPlaceholder?c.column.definition.headerFilterPlaceholder:e)}),o.addEventListener("click",function(e){e.stopPropagation(),o.focus()}),o.addEventListener("focus",function(e){var t=f.table.columnManager.element.scrollLeft;t!==f.table.rowManager.element.scrollLeft&&(f.table.rowManager.scrollHorizontal(t),f.table.columnManager.scrollHorizontal(t))}),s=!1,d=function(e){s&&clearTimeout(s),s=setTimeout(function(){h(o.value)},c.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=o,e.modules.filter.attrType=o.hasAttribute("type")?o.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=o.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(o.addEventListener("keyup",d),o.addEventListener("search",d),"number"==e.modules.filter.attrType&&o.addEventListener("change",function(e){h(o.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&o.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||o.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(o),e.contentElement.appendChild(n),r||c.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},Filter.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},Filter.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},Filter.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},Filter.prototype.getHeaderFilterValue=function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())},Filter.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},Filter.prototype.setFilter=function(e,t,r,i){var n=this;n.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:r,params:i}]),n.addFilter(e)},Filter.prototype.addFilter=function(e,t,r,i){var n=this;Array.isArray(e)||(e=[{field:e,type:t,value:r,params:i}]),e.forEach(function(e){(e=n.findFilter(e))&&(n.filterList.push(e),n.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.findFilter=function(e){var t,r=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:r.filters[e.type]?(t=r.table.columnManager.getColumnByField(e.field),i=t?function(i){return r.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return r.filters[e.type](e.value,t[e.field],t,e.params||{})}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},Filter.prototype.findSubFilters=function(e){var t=this,r=[];return e.forEach(function(e){(e=t.findFilter(e))&&r.push(e)}),!!r.length&&r},Filter.prototype.getFilters=function(e,t){var r=[];return e&&(r=this.getHeaderFilters()),t&&r.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),r=r.concat(this.filtersToArray(this.filterList,t))},Filter.prototype.filtersToArray=function(e,t){var r=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(r.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},Filter.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},Filter.prototype.removeFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},e.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},Filter.prototype.search=function(e,t,r,i){var n=this,l=[],o=[];return Array.isArray(t)||(t=[{field:t,type:r,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&o.push(e)}),this.table.rowManager.rows.forEach(function(t){var r=!0;o.forEach(function(e){n.filterRecurse(e,t.getData())||(r=!1)}),r&&l.push("data"===e?t.getData("data"):t.getComponent())}),l},Filter.prototype.filter=function(e,t){var r=this,i=[],n=[];return r.table.options.dataFiltering&&r.table.options.dataFiltering.call(r.table,r.getFilters()),r.table.options.ajaxFiltering||!r.filterList.length&&!Object.keys(r.headerFilters).length?i=e.slice(0):e.forEach(function(e){r.filterRow(e)&&i.push(e)}),r.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),r.table.options.dataFiltered.call(r.table,r.getFilters(),n)),i},Filter.prototype.filterRow=function(e,t){var r=this,i=!0,n=e.getData();r.filterList.forEach(function(e){r.filterRecurse(e,n)||(i=!1)});for(var l in r.headerFilters)r.headerFilters[l].func(n)||(i=!1);return i},Filter.prototype.filterRecurse=function(e,t){var r=this,i=!1;return Array.isArray(e)?e.forEach(function(e){r.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},Filter.prototype.filters={"=":function(e,t,r,i){return t==e},"<":function(e,t,r,i){return t<e},"<=":function(e,t,r,i){return t<=e},">":function(e,t,r,i){return t>e},">=":function(e,t,r,i){return t>=e},"!=":function(e,t,r,i){return t!=e},regex:function(e,t,r,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,r,i){var n=e.toLowerCase().split(void 0===i.separator?" ":i.separator),l=String(null===t||void 0===t?"":t).toLowerCase(),o=[];return n.forEach(function(e){l.includes(e)&&o.push(!0)}),i.matchAll?o.length===n.length:!!o.length},starts:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,r,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},Tabulator.prototype.registerModule("filter",Filter);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Format = function Format(table) {
        this.table = table; //hold Tabulator object
 
 var Format = function Format(table) {
        this.table = table; //hold Tabulator object
@@ -62,9 +62,8 @@ Format.prototype.lookupFormatter = function (column, type) {
 };
 
 Format.prototype.cellRendered = function (cell) {
 };
 
 Format.prototype.cellRendered = function (cell) {
-       if (cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered) {
+       if (cell.modules.format && cell.modules.format.renderedCallback) {
                cell.modules.format.renderedCallback();
                cell.modules.format.renderedCallback();
-               cell.modules.format.rendered = true;
        }
 };
 
        }
 };
 
@@ -79,7 +78,6 @@ Format.prototype.formatValue = function (cell) {
                }
 
                cell.modules.format.renderedCallback = callback;
                }
 
                cell.modules.format.renderedCallback = callback;
-               cell.modules.format.rendered = false;
        }
 
        return cell.column.modules.format.formatter.call(this, component, params, onRendered);
        }
 
        return cell.column.modules.format.formatter.call(this, component, params, onRendered);
@@ -96,7 +94,6 @@ Format.prototype.formatExportValue = function (cell, type) {
                        }
 
                        cell.modules.format.renderedCallback = callback;
                        }
 
                        cell.modules.format.renderedCallback = callback;
-                       cell.modules.format.rendered = false;
                };
 
                params = typeof formatter.params === "function" ? formatter.params(component) : formatter.params;
                };
 
                params = typeof formatter.params === "function" ? formatter.params(component) : formatter.params;
@@ -687,7 +684,7 @@ Format.prototype.formatters = {
                return el;
        },
 
                return el;
        },
 
-       rowSelection: function rowSelection(cell, formatterParams, onRendered) {
+       rowSelection: function rowSelection(cell) {
                var _this = this;
 
                var checkbox = document.createElement("input");
                var _this = this;
 
                var checkbox = document.createElement("input");
@@ -703,23 +700,18 @@ Format.prototype.formatters = {
                        if (typeof cell.getRow == 'function') {
                                var row = cell.getRow();
 
                        if (typeof cell.getRow == 'function') {
                                var row = cell.getRow();
 
-                               if (row instanceof RowComponent) {
-
-                                       checkbox.addEventListener("change", function (e) {
-                                               row.toggleSelect();
-                                       });
+                               checkbox.addEventListener("change", function (e) {
+                                       row.toggleSelect();
+                               });
 
 
-                                       checkbox.checked = row.isSelected && row.isSelected();
-                                       this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
-                               } else {
-                                       checkbox = "";
-                               }
+                               checkbox.checked = row.isSelected();
+                               this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
                        } else {
                                checkbox.addEventListener("change", function (e) {
                                        if (_this.table.modules.selectRow.selectedRows.length) {
                                                _this.table.deselectRow();
                                        } else {
                        } else {
                                checkbox.addEventListener("change", function (e) {
                                        if (_this.table.modules.selectRow.selectedRows.length) {
                                                _this.table.deselectRow();
                                        } else {
-                                               _this.table.selectRow(formatterParams.rowRange);
+                                               _this.table.selectRow();
                                        }
                                });
 
                                        }
                                });
 
diff --git a/admin/js/vendors/tabulator/js/modules/format.min.js b/admin/js/vendors/tabulator/js/modules/format.min.js
new file mode 100644 (file)
index 0000000..0b39b61
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Format=function(e){this.table=e};Format.prototype.initializeColumn=function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))},Format.prototype.lookupFormatter=function(e,t){var o={params:e.definition["formatter"+t+"Params"]||{}},r=e.definition["formatter"+t];switch(void 0===r?"undefined":_typeof(r)){case"string":"tick"===r&&(r="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[r]?o.formatter=this.formatters[r]:(console.warn("Formatter Error - No such formatter found: ",r),o.formatter=this.formatters.plaintext);break;case"function":o.formatter=r;break;default:o.formatter=this.formatters.plaintext}return o},Format.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&e.modules.format.renderedCallback()},Format.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t}var o=e.getComponent(),r="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,r,t)},Format.prototype.formatExportValue=function(e,t){var o,r=e.column.modules.format[t];if(r){var a=function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t};return o="function"==typeof r.params?r.params(component):r.params,r.formatter.call(this,e.getComponent(),o,a)}return this.formatValue(e)},Format.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},Format.prototype.emptyToSpace=function(e){return null===e||void 0===e||""===e?"&nbsp;":e},Format.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},Format.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var r,a,n,l,i=parseFloat(e.getValue()),s=t.decimal||".",c=t.thousand||",",u=t.symbol||"",d=!!t.symbolAfter,m=void 0!==t.precision?t.precision:2;if(isNaN(i))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(r=!1!==m?i.toFixed(m):i,r=String(r).split("."),a=r[0],n=r.length>1?s+r[1]:"",l=/(\d+)(\d{3})/;l.test(a);)a=a.replace(l,"$1"+c+"$2");return d?a+n+u:u+a+n},link:function(e,t,o){var r,a=e.getValue(),n=t.urlPrefix||"",l=t.download,i=a,s=document.createElement("a");if(t.labelField&&(r=e.getData(),i=r[t.labelField]),t.label)switch(_typeof(t.label)){case"string":i=t.label;break;case"function":i=t.label(e)}if(i){if(t.urlField&&(r=e.getData(),a=r[t.urlField]),t.url)switch(_typeof(t.url)){case"string":a=t.url;break;case"function":a=t.url(e)}return s.setAttribute("href",n+a),t.target&&s.setAttribute("target",t.target),t.download&&(l="function"==typeof l?l(e):!0===l?"":l,s.setAttribute("download",l)),s.innerHTML=this.emptyToSpace(this.sanitizeHTML(i)),s}return"&nbsp;"},image:function(e,t,o){var r=document.createElement("img");switch(r.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":r.style.height=t.height+"px";break;case"string":r.style.height=t.height}switch(_typeof(t.width)){case"number":r.style.width=t.width+"px";break;case"string":r.style.width=t.width}return r.addEventListener("load",function(){e.getRow().normalizeHeight()}),r},tickCross:function(e,t,o){var r=e.getValue(),a=e.getElement(),n=t.allowEmpty,l=t.allowTruthy,i=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',s=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return l&&r||!0===r||"true"===r||"True"===r||1===r||"1"===r?(a.setAttribute("aria-checked",!0),i||""):!n||"null"!==r&&""!==r&&null!==r&&void 0!==r?(a.setAttribute("aria-checked",!1),s||""):(a.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=t.outputFormat||"DD/MM/YYYY hh:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",l=e.getValue(),i=moment(l,r);return i.isValid()?t.timezone?i.tz(t.timezone).format(a):i.format(a):!0===n?l:"function"==typeof n?n(l):n},datetimediff:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",n=void 0!==t.suffix&&t.suffix,l=void 0!==t.unit?t.unit:void 0,i=void 0!==t.humanize&&t.humanize,s=void 0!==t.date?t.date:moment(),c=e.getValue(),u=moment(c,r);return u.isValid()?i?moment.duration(u.diff(s)).humanize(n):u.diff(s,l)+(n?" "+n:""):!0===a?c:"function"==typeof a?a(c):a},lookup:function(e,t,o){var r=e.getValue();return void 0===t[r]?(console.warn("Missing display value for "+r),r):t[r]},star:function(e,t,o){var r=e.getValue(),a=e.getElement(),n=t&&t.stars?t.stars:5,l=document.createElement("span"),i=document.createElementNS("http://www.w3.org/2000/svg","svg");l.style.verticalAlign="middle",i.setAttribute("width","14"),i.setAttribute("height","14"),i.setAttribute("viewBox","0 0 512 512"),i.setAttribute("xml:space","preserve"),i.style.padding="0 1px",r=r&&!isNaN(r)?parseInt(r):0,r=Math.max(0,Math.min(r,n));for(var s=1;s<=n;s++){var c=i.cloneNode(!0);c.innerHTML=s<=r?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',l.appendChild(c)}return a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",a.setAttribute("aria-label",r),l},traffic:function(e,t,o){var r,a,n=this.sanitizeHTML(e.getValue())||0,l=document.createElement("span"),i=t&&t.max?t.max:100,s=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],u="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(l.classList.add("tabulator-traffic-light"),a=parseFloat(n)<=i?parseFloat(n):i,a=parseFloat(a)>=s?parseFloat(a):s,r=(i-s)/100,a=Math.round((a-s)/r),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(n);break;case"object":if(Array.isArray(c)){var d=100/c.length,m=Math.floor(a/d);m=Math.min(m,c.length-1),m=Math.max(m,0),u=c[m];break}}return l.style.backgroundColor=u,l}},progress:function(e,t,o){var r,a,n,l,i,s=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),u=t&&t.max?t.max:100,d=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(a=parseFloat(s)<=u?parseFloat(s):u,a=parseFloat(a)>=d?parseFloat(a):d,r=(u-d)/100,a=Math.round((a-d)/r),_typeof(t.color)){case"string":n=t.color;break;case"function":n=t.color(s);break;case"object":if(Array.isArray(t.color)){var p=100/t.color.length,f=Math.floor(a/p);f=Math.min(f,t.color.length-1),f=Math.max(f,0),n=t.color[f];break}default:n="#2DC214"}switch(_typeof(t.legend)){case"string":l=t.legend;break;case"function":l=t.legend(s);break;case"boolean":l=s;break;default:l=!1}switch(_typeof(t.legendColor)){case"string":i=t.legendColor;break;case"function":i=t.legendColor(s);break;case"object":if(Array.isArray(t.legendColor)){var p=100/t.legendColor.length,f=Math.floor(a/p);f=Math.min(f,t.legendColor.length-1),f=Math.max(f,0),i=t.legendColor[f]}break;default:i="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a);var h=document.createElement("div");if(h.style.display="inline-block",h.style.position="relative",h.style.width=a+"%",h.style.backgroundColor=n,h.style.height="100%",h.setAttribute("data-max",u),h.setAttribute("data-min",d),l){var g=document.createElement("div");g.style.position="absolute",g.style.top="4px",g.style.left=0,g.style.textAlign=m,g.style.width="100%",g.style.color=i,g.innerHTML=l}return o(function(){if(!(e instanceof CellComponent)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",c.appendChild(t),c=t}c.appendChild(h),l&&c.appendChild(g)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function r(e){var t=n.element;n.open=e,t&&(n.open?(a.classList.add("open"),t.style.display=""):(a.classList.remove("open"),t.style.display="none"))}var a=document.createElement("div"),n=e.getRow()._row.modules.responsiveLayout;return a.classList.add("tabulator-responsive-collapse-toggle"),a.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),a.addEventListener("click",function(e){e.stopImmediatePropagation(),r(!n.open)}),r(n.open),a},rowSelection:function(e){var t=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var r=e.getRow();o.addEventListener("change",function(e){r.toggleSelect()}),o.checked=r.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(r,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},Tabulator.prototype.registerModule("format",Format);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var FrozenColumns = function FrozenColumns(table) {
        this.table = table; //hold Tabulator object
 
 var FrozenColumns = function FrozenColumns(table) {
        this.table = table; //hold Tabulator object
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var FrozenColumns=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};FrozenColumns.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},FrozenColumns.prototype.initializeColumn=function(t){var e={margin:0,edge:!1};t.isGroup||(this.frozenCheck(t)?(e.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=e):this.initializationMode="right")},FrozenColumns.prototype.frozenCheck=function(t){return t.parent.isGroup&&t.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),t.parent.isGroup?this.frozenCheck(t.parent):t.definition.frozen},FrozenColumns.prototype.scrollHorizontal=function(){var t,e=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){e.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},FrozenColumns.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},FrozenColumns.prototype.layoutColumnPosition=function(t){var e=this,o=[];this.leftColumns.forEach(function(n,l){if(n.modules.frozen.margin=e._calcSpace(e.leftColumns,l)+e.table.columnManager.scrollLeft+"px",l==e.leftColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,n.parent.isGroup){var i=e.getColGroupParentElement(n);o.includes(i)||(e.layoutElement(i,n),o.push(i)),n.modules.frozen.edge&&i.classList.add("tabulator-frozen-"+n.modules.frozen.position)}else e.layoutElement(n.getElement(),n);t&&n.cells.forEach(function(t){e.layoutElement(t.getElement(),n)})}),this.rightColumns.forEach(function(o,n){o.modules.frozen.margin=e.rightPadding-e._calcSpace(e.rightColumns,n+1)+"px",n==e.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup?e.layoutElement(e.getColGroupParentElement(o),o):e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})})},FrozenColumns.prototype.getColGroupParentElement=function(t){return t.parent.isGroup?this.getColGroupParentElement(t.parent):t.getElement()},FrozenColumns.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.layoutRow=function(t){var e=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var n=t.getCell(o);n&&e.layoutElement(n.getElement(),o)}),this.rightColumns.forEach(function(o){var n=t.getCell(o);n&&e.layoutElement(n.getElement(),o)})},FrozenColumns.prototype.layoutElement=function(t,e){e.modules.frozen&&(t.style.position="absolute",t.style.left=e.modules.frozen.margin,t.classList.add("tabulator-frozen"),e.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+e.modules.frozen.position))},FrozenColumns.prototype._calcSpace=function(t,e){for(var o=0,n=0;n<e;n++)t[n].visible&&(o+=t[n].getWidth());return o},Tabulator.prototype.registerModule("frozenColumns",FrozenColumns);
\ No newline at end of file
 var FrozenColumns=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};FrozenColumns.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},FrozenColumns.prototype.initializeColumn=function(t){var e={margin:0,edge:!1};t.isGroup||(this.frozenCheck(t)?(e.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=e):this.initializationMode="right")},FrozenColumns.prototype.frozenCheck=function(t){return t.parent.isGroup&&t.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),t.parent.isGroup?this.frozenCheck(t.parent):t.definition.frozen},FrozenColumns.prototype.scrollHorizontal=function(){var t,e=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){e.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},FrozenColumns.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},FrozenColumns.prototype.layoutColumnPosition=function(t){var e=this,o=[];this.leftColumns.forEach(function(n,l){if(n.modules.frozen.margin=e._calcSpace(e.leftColumns,l)+e.table.columnManager.scrollLeft+"px",l==e.leftColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,n.parent.isGroup){var i=e.getColGroupParentElement(n);o.includes(i)||(e.layoutElement(i,n),o.push(i)),n.modules.frozen.edge&&i.classList.add("tabulator-frozen-"+n.modules.frozen.position)}else e.layoutElement(n.getElement(),n);t&&n.cells.forEach(function(t){e.layoutElement(t.getElement(),n)})}),this.rightColumns.forEach(function(o,n){o.modules.frozen.margin=e.rightPadding-e._calcSpace(e.rightColumns,n+1)+"px",n==e.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup?e.layoutElement(e.getColGroupParentElement(o),o):e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})})},FrozenColumns.prototype.getColGroupParentElement=function(t){return t.parent.isGroup?this.getColGroupParentElement(t.parent):t.getElement()},FrozenColumns.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.layoutRow=function(t){var e=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var n=t.getCell(o);n&&e.layoutElement(n.getElement(),o)}),this.rightColumns.forEach(function(o){var n=t.getCell(o);n&&e.layoutElement(n.getElement(),o)})},FrozenColumns.prototype.layoutElement=function(t,e){e.modules.frozen&&(t.style.position="absolute",t.style.left=e.modules.frozen.margin,t.classList.add("tabulator-frozen"),e.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+e.modules.frozen.position))},FrozenColumns.prototype._calcSpace=function(t,e){for(var o=0,n=0;n<e;n++)t[n].visible&&(o+=t[n].getWidth());return o},Tabulator.prototype.registerModule("frozenColumns",FrozenColumns);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var FrozenRows = function FrozenRows(table) {
        this.table = table; //hold Tabulator object
 
 var FrozenRows = function FrozenRows(table) {
        this.table = table; //hold Tabulator object
@@ -70,10 +70,13 @@ FrozenRows.prototype.unfreezeRow = function (row) {
 
                row.modules.frozen = false;
 
 
                row.modules.frozen = false;
 
-               this.detachRow(row);
+               var rowEl = row.getElement();
+               rowEl.parentNode.removeChild(rowEl);
 
                this.table.rowManager.adjustTableSize();
 
 
                this.table.rowManager.adjustTableSize();
 
+               this.rows.splice(index, 1);
+
                this.table.rowManager.refreshActiveData("display");
 
                if (this.rows.length) {
                this.table.rowManager.refreshActiveData("display");
 
                if (this.rows.length) {
@@ -84,17 +87,6 @@ FrozenRows.prototype.unfreezeRow = function (row) {
        }
 };
 
        }
 };
 
-FrozenRows.prototype.detachRow = function (row) {
-       var index = this.rows.indexOf(row);
-
-       if (index > -1) {
-               var rowEl = row.getElement();
-               rowEl.parentNode.removeChild(rowEl);
-
-               this.rows.splice(index, 1);
-       }
-};
-
 FrozenRows.prototype.styleRows = function (row) {
        var self = this;
 
 FrozenRows.prototype.styleRows = function (row) {
        var self = this;
 
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var FrozenRows=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};FrozenRows.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},FrozenRows.prototype.setDisplayIndex=function(e){this.displayIndex=e},FrozenRows.prototype.getDisplayIndex=function(){return this.displayIndex},FrozenRows.prototype.isFrozen=function(){return!!this.rows.length},FrozenRows.prototype.getRows=function(e){var o=e.slice(0);return this.rows.forEach(function(e){var t=o.indexOf(e);t>-1&&o.splice(t,1)}),o},FrozenRows.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},FrozenRows.prototype.unfreezeRow=function(e){this.rows.indexOf(e);e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")},FrozenRows.prototype.detachRow=function(e){var o=this.rows.indexOf(e);if(o>-1){var t=e.getElement();t.parentNode.removeChild(t),this.rows.splice(o,1)}},FrozenRows.prototype.styleRows=function(e){var o=this;this.rows.forEach(function(e,t){o.table.rowManager.styleRow(e,t)})},Tabulator.prototype.registerModule("frozenRows",FrozenRows);
\ No newline at end of file
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var FrozenRows=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};FrozenRows.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},FrozenRows.prototype.setDisplayIndex=function(e){this.displayIndex=e},FrozenRows.prototype.getDisplayIndex=function(){return this.displayIndex},FrozenRows.prototype.isFrozen=function(){return!!this.rows.length},FrozenRows.prototype.getRows=function(e){var o=e.slice(0);return this.rows.forEach(function(e){var t=o.indexOf(e);t>-1&&o.splice(t,1)}),o},FrozenRows.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},FrozenRows.prototype.unfreezeRow=function(e){var o=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var t=e.getElement();t.parentNode.removeChild(t),this.table.rowManager.adjustTableSize(),this.rows.splice(o,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},FrozenRows.prototype.styleRows=function(e){var o=this;this.rows.forEach(function(e,t){o.table.rowManager.styleRow(e,t)})},Tabulator.prototype.registerModule("frozenRows",FrozenRows);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 //public group object
 var GroupComponent = function GroupComponent(group) {
 
 //public group object
 var GroupComponent = function GroupComponent(group) {
@@ -166,7 +166,7 @@ Group.prototype.addBindings = function () {
                });
        }
 
                });
        }
 
-       if ((self.groupManager.table.options.groupContextMenu || self.groupManager.table.options.groupClickMenu) && self.groupManager.table.modExists("menu")) {
+       if (self.groupManager.table.options.groupContextMenu && self.groupManager.table.modExists("menu")) {
                self.groupManager.table.modules.menu.initializeGroup.call(self.groupManager.table.modules.menu, self);
        }
 
                self.groupManager.table.modules.menu.initializeGroup.call(self.groupManager.table.modules.menu, self);
        }
 
@@ -645,15 +645,6 @@ Group.prototype.generateGroupHeaderContents = function () {
        this.element.insertBefore(this.arrowElement, this.element.firstChild);
 };
 
        this.element.insertBefore(this.arrowElement, this.element.firstChild);
 };
 
-Group.prototype.getPath = function () {
-       var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
-
-       path.unshift(this.key);
-       if (this.parent) {
-               this.parent.getPath(path);
-       }
-       return path;
-};
 ////////////// Standard Row Functions //////////////
 
 Group.prototype.getElement = function () {
 ////////////// Standard Row Functions //////////////
 
 Group.prototype.getElement = function () {
@@ -1046,32 +1037,6 @@ GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
        return !newGroupNeeded;
 };
 
        return !newGroupNeeded;
 };
 
-GroupRows.prototype.reassignRowToGroup = function (row) {
-       var oldRowGroup = row.getGroup(),
-           oldGroupPath = oldRowGroup.getPath(),
-           newGroupPath = this.getExpectedPath(row),
-           samePath = true;
-       // figure out if new group path is the same as old group path
-       var samePath = oldGroupPath.length == newGroupPath.length && oldGroupPath.every(function (element, index) {
-               return element === newGroupPath[index];
-       });
-       // refresh if they new path and old path aren't the same (aka the row's groupings have changed)
-       if (!samePath) {
-               oldRowGroup.removeRow(row);
-               this.assignRowToGroup(row, self.groups);
-               this.table.rowManager.refreshActiveData("group", false, true);
-       }
-};
-
-GroupRows.prototype.getExpectedPath = function (row) {
-       var groupPath = [],
-           rowData = row.getData();
-       this.groupIDLookups.forEach(function (groupId) {
-               groupPath.push(groupId.func(rowData));
-       });
-       return groupPath;
-};
-
 GroupRows.prototype.updateGroupRows = function (force) {
        var self = this,
            output = [],
 GroupRows.prototype.updateGroupRows = function (force) {
        var self = this,
            output = [],
@@ -1097,10 +1062,6 @@ GroupRows.prototype.updateGroupRows = function (force) {
 };
 
 GroupRows.prototype.scrollHeaders = function (left) {
 };
 
 GroupRows.prototype.scrollHeaders = function (left) {
-       if (this.table.options.virtualDomHoz) {
-               left -= this.table.vdomHoz.vDomPadLeft;
-       }
-
        left = left + "px";
 
        this.groupList.forEach(function (group) {
        left = left + "px";
 
        this.groupList.forEach(function (group) {
diff --git a/admin/js/vendors/tabulator/js/modules/group_rows.min.js b/admin/js/vendors/tabulator/js/modules/group_rows.min.js
new file mode 100644 (file)
index 0000000..6039f2c
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var GroupComponent=function(t){this._group=t,this.type="GroupComponent"};GroupComponent.prototype.getKey=function(){return this._group.key},GroupComponent.prototype.getField=function(){return this._group.field},GroupComponent.prototype.getElement=function(){return this._group.element},GroupComponent.prototype.getRows=function(){return this._group.getRows(!0)},GroupComponent.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},GroupComponent.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},GroupComponent.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._group.visible},GroupComponent.prototype.isVisible=function(){return this._group.visible},GroupComponent.prototype.show=function(){this._group.show()},GroupComponent.prototype.hide=function(){this._group.hide()},GroupComponent.prototype.toggle=function(){this._group.toggleVisibility()},GroupComponent.prototype._getSelf=function(){return this._group},GroupComponent.prototype.getTable=function(){return this._group.groupManager.table};var Group=function(t,o,e,r,i,s,n){this.groupManager=t,this.parent=o,this.key=r,this.level=e,this.field=i,this.hasSubGroups=e<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=n,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=n?n.visible:void 0!==t.startOpen[e]?t.startOpen[e]:t.startOpen[0],this.component=null,this.createElements(),this.addBindings(),this.createValueGroups()};Group.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},Group.prototype.createElements=function(){var t=document.createElement("div");t.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(t),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},Group.prototype.createValueGroups=function(){var t=this,o=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]&&this.groupManager.allowedValues[o].forEach(function(e){t._createGroup(e,o)})},Group.prototype.addBindings=function(){var t,o,e,r,i=this;i.groupManager.table.options.groupClick&&i.element.addEventListener("click",function(t){i.groupManager.table.options.groupClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupDblClick&&i.element.addEventListener("dblclick",function(t){i.groupManager.table.options.groupDblClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupContext&&i.element.addEventListener("contextmenu",function(t){i.groupManager.table.options.groupContext.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupContextMenu&&i.groupManager.table.modExists("menu")&&i.groupManager.table.modules.menu.initializeGroup.call(i.groupManager.table.modules.menu,i),i.groupManager.table.options.groupTap&&(e=!1,i.element.addEventListener("touchstart",function(t){e=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){e&&i.groupManager.table.options.groupTap(t,i.getComponent()),e=!1})),i.groupManager.table.options.groupDblTap&&(t=null,i.element.addEventListener("touchend",function(o){t?(clearTimeout(t),t=null,i.groupManager.table.options.groupDblTap(o,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.groupManager.table.options.groupTapHold&&(o=null,i.element.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,e=!1,i.groupManager.table.options.groupTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(o),o=null})),i.groupManager.table.options.groupToggleElement&&(r="arrow"==i.groupManager.table.options.groupToggleElement?i.arrowElement:i.element,r.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i.toggleVisibility()}))},Group.prototype._createGroup=function(t,o){var e=o+"_"+t,r=new Group(this.groupManager,this,o,t,this.groupManager.groupIDLookups[o].field,this.groupManager.headerGenerator[o]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[e]);this.groups[e]=r,this.groupList.push(r)},Group.prototype._addRowToGroup=function(t){var o=this.level+1;if(this.hasSubGroups){var e=this.groupManager.groupIDLookups[o].func(t.getData()),r=o+"_"+e;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]?this.groups[r]&&this.groups[r].addRow(t):(this.groups[r]||this._createGroup(e,o),this.groups[r].addRow(t))}},Group.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},Group.prototype.insertRow=function(t,o,e){var r=this.conformRowData({});t.updateData(r);var i=this.rows.indexOf(o);i>-1?e?this.rows.splice(i+1,0,t):this.rows.splice(i,0,t):e?this.rows.push(t):this.rows.unshift(t),t.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},Group.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(o){o.scrollHeader(t)})},Group.prototype.getRowIndex=function(t){},Group.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},Group.prototype.removeRow=function(t){var o=this.rows.indexOf(t),e=t.getElement();o>-1&&this.rows.splice(o,1),this.groupManager.table.options.groupValues||this.rows.length?(e.parentNode&&e.parentNode.removeChild(e),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},Group.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],o=this.groupList.indexOf(t),o>-1&&this.groupList.splice(o,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},Group.prototype.getHeadersAndRows=function(t){var o=[];return o.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows(t))}):(!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top)),o=o.concat(this.rows),!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top))),!t&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom)))),o},Group.prototype.getData=function(t,o){var e=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){e.push(t.getData(o||"data"))}),e},Group.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(o){t+=o.getRowCount()}):t=this.rows.length,t},Group.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},Group.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var o=t.getElement();o.parentNode.removeChild(o)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},Group.prototype.show=function(){var t=this;if(t.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var o=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e})}):t.rows.forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},Group.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(o){t.push(o.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},Group.prototype.getRowGroup=function(t){var o=!1;return this.groupList.length?this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}):this.rows.find(function(o){return o===t})&&(o=this),o},Group.prototype.getSubGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.getRows=function(t){var o=[];return this.rows.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(o){t.push(o.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},Group.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},Group.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Group.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},Group.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},Group.prototype.reinitialize=function(){this.initialized=!1,this.height=0,Tabulator.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},Group.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},Group.prototype.getHeight=function(){return this.outerHeight},Group.prototype.getGroup=function(){return this},Group.prototype.reinitializeHeight=function(){},Group.prototype.calcHeight=function(){},Group.prototype.setCellHeight=function(){},Group.prototype.clearCellHeight=function(){},Group.prototype.getComponent=function(){return this.component||(this.component=new GroupComponent(this)),this.component};var GroupRows=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};GroupRows.prototype.initialize=function(){var t=this,o=t.table.options.groupBy,e=t.table.options.groupStartOpen,r=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(o)&&Array.isArray(r)&&o.length>r.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(o,e){t.headerGenerator[0]=function(t,r,i){return(void 0===t?"":t)+"<span>("+r+" "+(1===r?o:e.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(o)||o)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var i=this.table.columnManager.getRealColumns();i.forEach(function(o){o.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),o.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(o)||(o=[o]),o.forEach(function(o,e){var r,i;"function"==typeof o?r=o:(i=t.table.columnManager.getColumnByField(o),r=i?function(t){return i.getFieldValue(t)}:function(t){return t[o]}),t.groupIDLookups.push({field:"function"!=typeof o&&o,func:r,values:!!t.allowedValues&&t.allowedValues[e]})}),e&&(Array.isArray(e)||(e=[e]),e.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=e),r&&(t.headerGenerator=Array.isArray(r)?r:[r]),this.initialized=!0},GroupRows.prototype.setDisplayIndex=function(t){this.displayIndex=t},GroupRows.prototype.getDisplayIndex=function(){return this.displayIndex},GroupRows.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},GroupRows.prototype.getGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},GroupRows.prototype.getChildGroups=function(t){var o=this,e=[];return t||(t=this),t.groupList.forEach(function(t){t.groupList.length?e=e.concat(o.getChildGroups(t)):e.push(t)}),e},GroupRows.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},GroupRows.prototype.pullGroupListData=function(t){var o=this,e=[];return t.forEach(function(t){var r={};r.level=0,r.rowCount=0,r.headerContent="";var i=[];t.hasSubGroups?(i=o.pullGroupListData(t.groupList),r.level=t.level,r.rowCount=i.length-t.groupList.length,r.headerContent=t.generator(t.key,r.rowCount,t.rows,t),e.push(r),e=e.concat(i)):(r.level=t.level,r.headerContent=t.generator(t.key,t.rows.length,t.rows,t),r.rowCount=t.getRows().length,e.push(r),t.getRows().forEach(function(t){e.push(t.getData("data"))}))}),e},GroupRows.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},GroupRows.prototype.getRowGroup=function(t){var o=!1;return this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}),o},GroupRows.prototype.countGroups=function(){return this.groupList.length},GroupRows.prototype.generateGroups=function(t){var o=this,e=o.groups;o.groups={},o.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){o.createGroup(t,0,e)}),t.forEach(function(t){o.assignRowToExistingGroup(t,e)})):t.forEach(function(t){o.assignRowToGroup(t,e)})},GroupRows.prototype.createGroup=function(t,o,e){var r,i=o+"_"+t;e=e||[],r=new Group(this,!1,o,t,this.groupIDLookups[0].field,this.headerGenerator[0],e[i]),this.groups[i]=r,this.groupList.push(r)},GroupRows.prototype.assignRowToExistingGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]&&this.groups[r].addRow(t)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r=!this.groups["0_"+e];return r&&this.createGroup(e,0,o),this.groups["0_"+e].addRow(t),!r},GroupRows.prototype.updateGroupRows=function(t){var o=this,e=[];if(o.groupList.forEach(function(t){e=e.concat(t.getHeadersAndRows())}),t){var r=o.table.rowManager.setDisplayRows(e,this.getDisplayIndex());!0!==r&&this.setDisplayIndex(r),o.table.rowManager.refreshActiveData("group",!0,!0)}return e},GroupRows.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(o){o.scrollHeader(t)})},GroupRows.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],(o=this.groupList.indexOf(t))>-1&&this.groupList.splice(o,1))},Tabulator.prototype.registerModule("groupRows",GroupRows);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var History = function History(table) {
        this.table = table; //hold Tabulator object
 
 var History = function History(table) {
        this.table = table; //hold Tabulator object
@@ -33,21 +33,6 @@ History.prototype.getHistoryRedoSize = function () {
        return this.history.length - (this.index + 1);
 };
 
        return this.history.length - (this.index + 1);
 };
 
-History.prototype.clearComponentHistory = function (component) {
-       var index = this.history.findIndex(function (item) {
-               return item.component === component;
-       });
-
-       if (index > -1) {
-               this.history.splice(index, 1);
-               if (index <= this.index) {
-                       this.index--;
-               }
-
-               this.clearComponentHistory(component);
-       }
-};
-
 History.prototype.undo = function () {
 
        if (this.index > -1) {
 History.prototype.undo = function () {
 
        if (this.index > -1) {
diff --git a/admin/js/vendors/tabulator/js/modules/history.min.js b/admin/js/vendors/tabulator/js/modules/history.min.js
new file mode 100644 (file)
index 0000000..5df3187
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var History=function(t){this.table=t,this.history=[],this.index=-1};History.prototype.clear=function(){this.history=[],this.index=-1},History.prototype.action=function(t,o,e){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:o,data:e}),this.index++},History.prototype.getHistoryUndoSize=function(){return this.index+1},History.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},History.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},History.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},History.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.posFrom],!t.data.after),this.table.rowManager.redraw()}},History.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.posTo],t.data.after),this.table.rowManager.redraw()}},History.prototype._rebindRow=function(t,o){this.history.forEach(function(e){if(e.component instanceof Row)e.component===t&&(e.component=o);else if(e.component instanceof Cell&&e.component.row===t){var i=e.component.column.getField();i&&(e.component=o.getCell(i))}})},Tabulator.prototype.registerModule("history",History);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var HtmlTableImport = function HtmlTableImport(table) {
        this.table = table; //hold Tabulator object
 
 var HtmlTableImport = function HtmlTableImport(table) {
        this.table = table; //hold Tabulator object
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableImport=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};HtmlTableImport.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,a=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],l=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),a.length?t._extractHeaders(a,n):t._generateBlankHeaders(a,n);for(var r=0;r<n.length;r++){var i=n[r],s=i.getElementsByTagName("td"),p={};t.hasIndex||(p[o.index]=r);for(var m=0;m<s.length;m++){var d=s[m];void 0!==this.fieldIndex[m]&&(p[this.fieldIndex[m]]=d.innerHTML)}l.push(p)}var f=document.createElement("div"),b=e.attributes;for(var m in b)"object"==_typeof(b[m])&&f.setAttribute(b[m].name,b[m].value);e.parentNode.replaceChild(f,e),o.data=l,t.table.options.htmlImported.call(this.table),this.table.element=f},HtmlTableImport.prototype._extractOptions=function(t,e,o){var a=t.attributes,n=o?Object.assign([],o):Object.keys(e),l={};n.forEach(function(t){l[t.toLowerCase()]=t});for(var r in a){var i,s=a[r];s&&"object"==(void 0===s?"undefined":_typeof(s))&&s.name&&0===s.name.indexOf("tabulator-")&&(i=s.name.replace("tabulator-",""),void 0!==l[i]&&(e[l[i]]=this._attribValue(s.value)))}},HtmlTableImport.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},HtmlTableImport.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},HtmlTableImport.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var a,n=t[o],l=!1,r=this._findCol(n.textContent);r?l=!0:r={title:n.textContent.trim()},r.field||(r.field=n.textContent.trim().toLowerCase().replace(" ","_")),a=n.getAttribute("width"),a&&!r.width&&(r.width=a),n.attributes,this._extractOptions(n,r,Column.prototype.defaultOptionList),this.fieldIndex[o]=r.field,r.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(r)}},HtmlTableImport.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var a=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var l=a.getAttribute("width");l&&(n.width=l),this.table.options.columns.push(n)}},Tabulator.prototype.registerModule("htmlTableImport",HtmlTableImport);
\ No newline at end of file
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableImport=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};HtmlTableImport.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,a=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],l=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),a.length?t._extractHeaders(a,n):t._generateBlankHeaders(a,n);for(var r=0;r<n.length;r++){var i=n[r],s=i.getElementsByTagName("td"),p={};t.hasIndex||(p[o.index]=r);for(var m=0;m<s.length;m++){var d=s[m];void 0!==this.fieldIndex[m]&&(p[this.fieldIndex[m]]=d.innerHTML)}l.push(p)}var f=document.createElement("div"),b=e.attributes;for(var m in b)"object"==_typeof(b[m])&&f.setAttribute(b[m].name,b[m].value);e.parentNode.replaceChild(f,e),o.data=l,t.table.options.htmlImported.call(this.table),this.table.element=f},HtmlTableImport.prototype._extractOptions=function(t,e,o){var a=t.attributes,n=o?Object.assign([],o):Object.keys(e),l={};n.forEach(function(t){l[t.toLowerCase()]=t});for(var r in a){var i,s=a[r];s&&"object"==(void 0===s?"undefined":_typeof(s))&&s.name&&0===s.name.indexOf("tabulator-")&&(i=s.name.replace("tabulator-",""),void 0!==l[i]&&(e[l[i]]=this._attribValue(s.value)))}},HtmlTableImport.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},HtmlTableImport.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},HtmlTableImport.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var a,n=t[o],l=!1,r=this._findCol(n.textContent);r?l=!0:r={title:n.textContent.trim()},r.field||(r.field=n.textContent.trim().toLowerCase().replace(" ","_")),a=n.getAttribute("width"),a&&!r.width&&(r.width=a),n.attributes,this._extractOptions(n,r,Column.prototype.defaultOptionList),this.fieldIndex[o]=r.field,r.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(r)}},HtmlTableImport.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var a=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var l=a.getAttribute("width");l&&(n.width=l),this.table.options.columns.push(n)}},Tabulator.prototype.registerModule("htmlTableImport",HtmlTableImport);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Keybindings = function Keybindings(table) {
        this.table = table; //hold Tabulator object
 
 var Keybindings = function Keybindings(table) {
        this.table = table; //hold Tabulator object
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Keybindings=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};Keybindings.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var i in this.bindings)e[i]=this.bindings[i];if(Object.keys(t).length)for(var n in t)e[n]=t[n];this.mapBindings(e),this.bindEvents()}},Keybindings.prototype.mapBindings=function(t){var e=this,i=this;for(var n in t)!function(n){e.actions[n]?t[n]&&("object"!==_typeof(t[n])&&(t[n]=[t[n]]),t[n].forEach(function(t){i.mapBinding(n,t)})):console.warn("Key Binding Error - no such action:",n)}(n)},Keybindings.prototype.mapBinding=function(t,e){var i=this,n={action:this.actions[t],keys:[],ctrl:!1,shift:!1,meta:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":n.ctrl=!0;break;case"shift":n.shift=!0;break;case"meta":n.meta=!0;break;default:t=parseInt(t),n.keys.push(t),i.watchKeys[t]||(i.watchKeys[t]=[]),i.watchKeys[t].push(n)}})},Keybindings.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var i=e.keyCode,n=t.watchKeys[i];n&&(t.pressedKeys.push(i),n.forEach(function(i){t.checkBinding(e,i)}))},this.keydownBinding=function(e){var i=e.keyCode;if(t.watchKeys[i]){var n=t.pressedKeys.indexOf(i);n>-1&&t.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},Keybindings.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},Keybindings.prototype.checkBinding=function(t,e){var i=this,n=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&t.metaKey==e.meta&&(e.keys.forEach(function(t){-1==i.pressedKeys.indexOf(t)&&(n=!1)}),n&&e.action.call(i,t),!0)},Keybindings.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},Keybindings.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,i=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i>=0?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,i=e.scrollTop+e.height,n=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i<=n?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e,i=!1,n=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(i=this.table.modules.edit.currentCell)&&(t.preventDefault(),e=i.nav(),e.next()||n&&(i.getElement().firstChild.blur(),n=!0===n?this.table.addRow({}):"function"==typeof n?this.table.addRow(n(i.row.getComponent())):this.table.addRow(Object.assign({},n)),n.then(function(){setTimeout(function(){e.next()})})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},Tabulator.prototype.registerModule("keybindings",Keybindings);
\ No newline at end of file
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Keybindings=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};Keybindings.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var i in this.bindings)e[i]=this.bindings[i];if(Object.keys(t).length)for(var n in t)e[n]=t[n];this.mapBindings(e),this.bindEvents()}},Keybindings.prototype.mapBindings=function(t){var e=this,i=this;for(var n in t)!function(n){e.actions[n]?t[n]&&("object"!==_typeof(t[n])&&(t[n]=[t[n]]),t[n].forEach(function(t){i.mapBinding(n,t)})):console.warn("Key Binding Error - no such action:",n)}(n)},Keybindings.prototype.mapBinding=function(t,e){var i=this,n={action:this.actions[t],keys:[],ctrl:!1,shift:!1,meta:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":n.ctrl=!0;break;case"shift":n.shift=!0;break;case"meta":n.meta=!0;break;default:t=parseInt(t),n.keys.push(t),i.watchKeys[t]||(i.watchKeys[t]=[]),i.watchKeys[t].push(n)}})},Keybindings.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var i=e.keyCode,n=t.watchKeys[i];n&&(t.pressedKeys.push(i),n.forEach(function(i){t.checkBinding(e,i)}))},this.keydownBinding=function(e){var i=e.keyCode;if(t.watchKeys[i]){var n=t.pressedKeys.indexOf(i);n>-1&&t.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},Keybindings.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},Keybindings.prototype.checkBinding=function(t,e){var i=this,n=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&t.metaKey==e.meta&&(e.keys.forEach(function(t){-1==i.pressedKeys.indexOf(t)&&(n=!1)}),n&&e.action.call(i,t),!0)},Keybindings.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},Keybindings.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,i=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i>=0?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,i=e.scrollTop+e.height,n=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i<=n?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e,i=!1,n=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(i=this.table.modules.edit.currentCell)&&(t.preventDefault(),e=i.nav(),e.next()||n&&(i.getElement().firstChild.blur(),n=!0===n?this.table.addRow({}):"function"==typeof n?this.table.addRow(n(i.row.getComponent())):this.table.addRow(Object.assign({},n)),n.then(function(){setTimeout(function(){e.next()})})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},Tabulator.prototype.registerModule("keybindings",Keybindings);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Menu = function Menu(table) {
        this.table = table; //hold Tabulator object
 
 var Menu = function Menu(table) {
        this.table = table; //hold Tabulator object
@@ -14,13 +14,14 @@ Menu.prototype.initializeColumnHeader = function (column) {
        var headerMenuEl;
 
        if (column.definition.headerContextMenu) {
        var headerMenuEl;
 
        if (column.definition.headerContextMenu) {
-               column.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));
-               this.tapHold(column, column.definition.headerContextMenu);
-       }
+               column.getElement().addEventListener("contextmenu", function (e) {
+                       var menu = typeof column.definition.headerContextMenu == "function" ? column.definition.headerContextMenu(column.getComponent()) : column.definition.headerContextMenu;
 
 
-       // if(column.definition.headerClickMenu){
-       //      column.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));
-       // }
+                       e.preventDefault();
+
+                       _this.loadMenu(e, column, menu);
+               });
+       }
 
        if (column.definition.headerMenu) {
 
 
        if (column.definition.headerMenu) {
 
@@ -29,7 +30,7 @@ Menu.prototype.initializeColumnHeader = function (column) {
                headerMenuEl.innerHTML = "&vellip;";
 
                headerMenuEl.addEventListener("click", function (e) {
                headerMenuEl.innerHTML = "&vellip;";
 
                headerMenuEl.addEventListener("click", function (e) {
-                       var menu = typeof column.definition.headerMenu == "function" ? column.definition.headerMenu(column.getComponent(), e) : column.definition.headerMenu;
+                       var menu = typeof column.definition.headerMenu == "function" ? column.definition.headerMenu(column.getComponent()) : column.definition.headerMenu;
                        e.stopPropagation();
                        e.preventDefault();
 
                        e.stopPropagation();
                        e.preventDefault();
 
@@ -40,88 +41,44 @@ Menu.prototype.initializeColumnHeader = function (column) {
        }
 };
 
        }
 };
 
-Menu.prototype.LoadMenuEvent = function (component, menu, e) {
-       menu = typeof menu == "function" ? menu(component.getComponent(), e) : menu;
-
-       // if(component instanceof Cell){
-       //      e.stopImmediatePropagation();
-       // }
-
-       this.loadMenu(e, component, menu);
-};
-
-Menu.prototype.tapHold = function (component, menu) {
+Menu.prototype.initializeCell = function (cell) {
        var _this2 = this;
 
        var _this2 = this;
 
-       var element = component.getElement(),
-           tapHold = null,
-           loaded = false;
-
-       element.addEventListener("touchstart", function (e) {
-               clearTimeout(tapHold);
-               loaded = false;
-
-               tapHold = setTimeout(function () {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-                       loaded = true;
-
-                       _this2.LoadMenuEvent(component, menu, e);
-               }, 1000);
-       }, { passive: true });
+       cell.getElement().addEventListener("contextmenu", function (e) {
+               var menu = typeof cell.column.definition.contextMenu == "function" ? cell.column.definition.contextMenu(cell.getComponent()) : cell.column.definition.contextMenu;
 
 
-       element.addEventListener("touchend", function (e) {
-               clearTimeout(tapHold);
-               tapHold = null;
+               e.stopImmediatePropagation();
 
 
-               if (loaded) {
-                       e.preventDefault();
-               }
+               _this2.loadMenu(e, cell, menu);
        });
 };
 
        });
 };
 
-Menu.prototype.initializeCell = function (cell) {
-       if (cell.column.definition.contextMenu) {
-               cell.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));
-               this.tapHold(cell, cell.column.definition.contextMenu);
-       }
-
-       if (cell.column.definition.clickMenu) {
-               cell.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));
-       }
-};
-
 Menu.prototype.initializeRow = function (row) {
 Menu.prototype.initializeRow = function (row) {
-       if (this.table.options.rowContextMenu) {
-               row.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));
-               this.tapHold(row, this.table.options.rowContextMenu);
-       }
+       var _this3 = this;
 
 
-       if (this.table.options.rowClickMenu) {
-               row.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));
-       }
+       row.getElement().addEventListener("contextmenu", function (e) {
+               var menu = typeof _this3.table.options.rowContextMenu == "function" ? _this3.table.options.rowContextMenu(row.getComponent()) : _this3.table.options.rowContextMenu;
+
+               _this3.loadMenu(e, row, menu);
+       });
 };
 
 Menu.prototype.initializeGroup = function (group) {
 };
 
 Menu.prototype.initializeGroup = function (group) {
-       if (this.table.options.groupContextMenu) {
-               group.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));
-               this.tapHold(group, this.table.options.groupContextMenu);
-       }
+       var _this4 = this;
 
 
-       if (this.table.options.groupClickMenu) {
-               group.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));
-       }
+       group.getElement().addEventListener("contextmenu", function (e) {
+               var menu = typeof _this4.table.options.groupContextMenu == "function" ? _this4.table.options.groupContextMenu(group.getComponent()) : _this4.table.options.groupContextMenu;
+
+               _this4.loadMenu(e, group, menu);
+       });
 };
 
 Menu.prototype.loadMenu = function (e, component, menu) {
 };
 
 Menu.prototype.loadMenu = function (e, component, menu) {
-       var _this3 = this;
+       var _this5 = this;
 
 
-       var docHeight = Math.max(document.body.offsetHeight, window.innerHeight),
-           touch = !(e instanceof MouseEvent);
+       var docHeight = Math.max(document.body.offsetHeight, window.innerHeight);
 
 
-       if (!touch) {
-               e.preventDefault();
-       }
+       e.preventDefault();
 
        //abort if no menu set
        if (!menu || !menu.length) {
 
        //abort if no menu set
        if (!menu || !menu.length) {
@@ -135,7 +92,7 @@ Menu.prototype.loadMenu = function (e, component, menu) {
                }
        } else {
                this.nestedMenuBlock = setTimeout(function () {
                }
        } else {
                this.nestedMenuBlock = setTimeout(function () {
-                       _this3.nestedMenuBlock = false;
+                       _this5.nestedMenuBlock = false;
                }, 100);
        }
 
                }, 100);
        }
 
@@ -175,25 +132,27 @@ Menu.prototype.loadMenu = function (e, component, menu) {
                                });
                        } else {
                                itemEl.addEventListener("click", function (e) {
                                });
                        } else {
                                itemEl.addEventListener("click", function (e) {
-                                       _this3.hideMenu();
+                                       _this5.hideMenu();
                                        item.action(e, component.getComponent());
                                });
                        }
                }
 
                                        item.action(e, component.getComponent());
                                });
                        }
                }
 
-               _this3.menuEl.appendChild(itemEl);
+               _this5.menuEl.appendChild(itemEl);
        });
 
        });
 
-       this.menuEl.style.top = (touch ? e.touches[0].pageY : e.pageY) + "px";
-       this.menuEl.style.left = (touch ? e.touches[0].pageX : e.pageX) + "px";
+       this.menuEl.style.top = e.pageY + "px";
+       this.menuEl.style.left = e.pageX + "px";
+
+       document.body.addEventListener("click", this.blurEvent);
+       this.table.rowManager.element.addEventListener("scroll", this.blurEvent);
 
        setTimeout(function () {
 
        setTimeout(function () {
-               _this3.table.rowManager.element.addEventListener("scroll", _this3.blurEvent);
-               document.body.addEventListener("click", _this3.blurEvent);
-               document.body.addEventListener("contextmenu", _this3.blurEvent);
-               document.body.addEventListener("keydown", _this3.escEvent);
+               document.body.addEventListener("contextmenu", _this5.blurEvent);
        }, 100);
 
        }, 100);
 
+       document.body.addEventListener("keydown", this.escEvent);
+
        document.body.appendChild(this.menuEl);
 
        //move menu to start on right edge if it is too close to the edge of the screen
        document.body.appendChild(this.menuEl);
 
        //move menu to start on right edge if it is too close to the edge of the screen
diff --git a/admin/js/vendors/tabulator/js/modules/menu.min.js b/admin/js/vendors/tabulator/js/modules/menu.min.js
new file mode 100644 (file)
index 0000000..40b8241
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var Menu=function(e){this.table=e,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1};Menu.prototype.initializeColumnHeader=function(e){var t,n=this;e.definition.headerContextMenu&&e.getElement().addEventListener("contextmenu",function(t){var o="function"==typeof e.definition.headerContextMenu?e.definition.headerContextMenu(e.getComponent()):e.definition.headerContextMenu;t.preventDefault(),n.loadMenu(t,e,o)}),e.definition.headerMenu&&(t=document.createElement("span"),t.classList.add("tabulator-header-menu-button"),t.innerHTML="&vellip;",t.addEventListener("click",function(t){var o="function"==typeof e.definition.headerMenu?e.definition.headerMenu(e.getComponent()):e.definition.headerMenu;t.stopPropagation(),t.preventDefault(),n.loadMenu(t,e,o)}),e.titleElement.insertBefore(t,e.titleElement.firstChild))},Menu.prototype.initializeCell=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(n){var o="function"==typeof e.column.definition.contextMenu?e.column.definition.contextMenu(e.getComponent()):e.column.definition.contextMenu;n.stopImmediatePropagation(),t.loadMenu(n,e,o)})},Menu.prototype.initializeRow=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(n){var o="function"==typeof t.table.options.rowContextMenu?t.table.options.rowContextMenu(e.getComponent()):t.table.options.rowContextMenu;t.loadMenu(n,e,o)})},Menu.prototype.initializeGroup=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(n){var o="function"==typeof t.table.options.groupContextMenu?t.table.options.groupContextMenu(e.getComponent()):t.table.options.groupContextMenu;t.loadMenu(n,e,o)})},Menu.prototype.loadMenu=function(e,t,n){var o=this,i=Math.max(document.body.offsetHeight,window.innerHeight);if(e.preventDefault(),n&&n.length){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout(function(){o.nestedMenuBlock=!1},100);this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),n.forEach(function(e){var n=document.createElement("div"),i=e.label,u=e.disabled;e.separator?n.classList.add("tabulator-menu-separator"):(n.classList.add("tabulator-menu-item"),"function"==typeof i&&(i=i(t.getComponent())),i instanceof Node?n.appendChild(i):n.innerHTML=i,"function"==typeof u&&(u=u(t.getComponent())),u?(n.classList.add("tabulator-menu-item-disabled"),n.addEventListener("click",function(e){e.stopPropagation()})):n.addEventListener("click",function(n){o.hideMenu(),e.action(n,t.getComponent())})),o.menuEl.appendChild(n)}),this.menuEl.style.top=e.pageY+"px",this.menuEl.style.left=e.pageX+"px",document.body.addEventListener("click",this.blurEvent),this.table.rowManager.element.addEventListener("scroll",this.blurEvent),setTimeout(function(){document.body.addEventListener("contextmenu",o.blurEvent)},100),document.body.addEventListener("keydown",this.escEvent),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=i&&(this.menuEl.style.top="",this.menuEl.style.bottom=i-e.pageY+"px")}},Menu.prototype.isOpen=function(){return!!this.menuEl.parentNode},Menu.prototype.escMenu=function(e){27==e.keyCode&&this.hideMenu()},Menu.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.escEvent&&document.body.removeEventListener("keydown",this.escEvent),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},Menu.prototype.menus={},Tabulator.prototype.registerModule("menu",Menu);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var MoveColumns = function MoveColumns(table) {
        this.table = table; //hold Tabulator object
 
 var MoveColumns = function MoveColumns(table) {
        this.table = table; //hold Tabulator object
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var MoveColumns=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};MoveColumns.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},MoveColumns.prototype.initializeColumn=function(e){var t,o=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===o.moving.parent&&((o.touchMove?n.touches[0].pageX:n.pageX)-Tabulator.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=n},MoveColumns.prototype.bindTouchEvents=function(e){var t,o,n,l,i,s,m,r=this,u=e.getElement(),h=!1;u.addEventListener("touchstart",function(u){r.checkTimeout=setTimeout(function(){r.touchMove=!0,t=e,o=e.nextColumn(),l=o?o.getWidth()/2:0,n=e.prevColumn(),i=n?n.getWidth()/2:0,s=0,m=0,h=!1,r.startMove(u,e)},r.checkPeriod)},{passive:!0}),u.addEventListener("touchmove",function(u){var a,c;r.moving&&(r.moveHover(u),h||(h=u.touches[0].pageX),a=u.touches[0].pageX-h,a>0?o&&a-s>l&&(c=o)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement().nextSibling),r.moveColumn(c,!0)):n&&-a-m>i&&(c=n)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement()),r.moveColumn(c,!1)),c&&(t=c,o=c.nextColumn(),s=l,l=o?o.getWidth()/2:0,n=c.prevColumn(),m=i,i=n?n.getWidth()/2:0))},{passive:!0}),u.addEventListener("touchend",function(e){r.checkTimeout&&clearTimeout(r.checkTimeout),r.moving&&r.endMove(e)})},MoveColumns.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},MoveColumns.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n.nextSibling)}):e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n)})},MoveColumns.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},MoveColumns.prototype.moveHover=function(e){var t,o=this,n=o.table.columnManager.getElement(),l=n.scrollLeft,i=(o.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(n).left+l;o.hoverElement.style.left=i-o.startX+"px",i-l<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,l-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),l+n.clientWidth-i<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(n.clientWidth,l+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},Tabulator.prototype.registerModule("moveColumn",MoveColumns);
\ No newline at end of file
 var MoveColumns=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};MoveColumns.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},MoveColumns.prototype.initializeColumn=function(e){var t,o=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===o.moving.parent&&((o.touchMove?n.touches[0].pageX:n.pageX)-Tabulator.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=n},MoveColumns.prototype.bindTouchEvents=function(e){var t,o,n,l,i,s,m,r=this,u=e.getElement(),h=!1;u.addEventListener("touchstart",function(u){r.checkTimeout=setTimeout(function(){r.touchMove=!0,t=e,o=e.nextColumn(),l=o?o.getWidth()/2:0,n=e.prevColumn(),i=n?n.getWidth()/2:0,s=0,m=0,h=!1,r.startMove(u,e)},r.checkPeriod)},{passive:!0}),u.addEventListener("touchmove",function(u){var a,c;r.moving&&(r.moveHover(u),h||(h=u.touches[0].pageX),a=u.touches[0].pageX-h,a>0?o&&a-s>l&&(c=o)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement().nextSibling),r.moveColumn(c,!0)):n&&-a-m>i&&(c=n)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement()),r.moveColumn(c,!1)),c&&(t=c,o=c.nextColumn(),s=l,l=o?o.getWidth()/2:0,n=c.prevColumn(),m=i,i=n?n.getWidth()/2:0))},{passive:!0}),u.addEventListener("touchend",function(e){r.checkTimeout&&clearTimeout(r.checkTimeout),r.moving&&r.endMove(e)})},MoveColumns.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},MoveColumns.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n.nextSibling)}):e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n)})},MoveColumns.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},MoveColumns.prototype.moveHover=function(e){var t,o=this,n=o.table.columnManager.getElement(),l=n.scrollLeft,i=(o.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(n).left+l;o.hoverElement.style.left=i-o.startX+"px",i-l<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,l-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),l+n.clientWidth-i<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(n.clientWidth,l+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},Tabulator.prototype.registerModule("moveColumn",MoveColumns);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var MoveRows = function MoveRows(table) {
 
 
 var MoveRows = function MoveRows(table) {
 
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},MoveRows=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1};MoveRows.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},MoveRows.prototype.initialize=function(e){this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements},MoveRows.prototype.setHandle=function(e){this.hasHandle=e},MoveRows.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var n=e.getElement();n.previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},MoveRows.prototype.initializeRow=function(e){var t,o=this,n={};n.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),n.mousemove=function(t){if(t.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=n},MoveRows.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},MoveRows.prototype.bindTouchEvents=function(e,t){var o,n,s,i,l,c,r,a=this,h=!1;t.addEventListener("touchstart",function(t){a.checkTimeout=setTimeout(function(){a.touchMove=!0,o=e,n=e.nextRow(),i=n?n.getHeight()/2:0,s=e.prevRow(),l=s?s.getHeight()/2:0,c=0,r=0,h=!1,a.startMove(t,e)},a.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var m,v;a.moving&&(t.preventDefault(),a.moveHover(t),h||(h=t.touches[0].pageY),m=t.touches[0].pageY-h,m>0?n&&m-c>i&&(v=n)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(a.placeholderElement,v.getElement().nextSibling),a.moveRow(v,!0)):s&&-m-r>l&&(v=s)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(a.placeholderElement,v.getElement()),a.moveRow(v,!1)),v&&(o=v,n=v.nextRow(),c=i,i=n?n.getHeight()/2:0,s=v.prevRow(),r=l,l=s?s.getHeight()/2:0))}),t.addEventListener("touchend",function(e){a.checkTimeout&&clearTimeout(a.checkTimeout),a.moving&&(a.endMove(e),a.touchMove=!1)})},MoveRows.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},MoveRows.prototype.setStartPosition=function(e,t){var o,n,s=this.touchMove?e.touches[0].pageX:e.pageX,i=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(n=o.getBoundingClientRect(),this.startX=n.left-s+window.pageXOffset,this.startY=n.top-i+window.pageYOffset):this.startY=i-o.getBoundingClientRect().top},MoveRows.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},MoveRows.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},MoveRows.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},MoveRows.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=n-this.startY+"px"},MoveRows.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},MoveRows.prototype.elementRowDrop=function(e,t,o){this.table.options.movableRowsElementDrop&&this.table.options.movableRowsElementDrop(e,t,!!o&&o.getComponent())},MoveRows.prototype.connectToTables=function(e){var t,o=this;this.connectionSelectorsTables&&(t=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach(function(e){"string"==typeof e?o.connectionElements=o.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):o.connectionElements.push(e)}),this.connectionElements.forEach(function(e){var t=function(t){o.elementRowDrop(t,e,o.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")}))},MoveRows.prototype.disconnectFromTables=function(){var e;this.connectionSelectorsTables&&(e=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach(function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent})},MoveRows.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},MoveRows.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},MoveRows.prototype.dropComplete=function(e,t,o){var n=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":n=this.senders[this.table.options.movableRowsSender];break;case"function":n=this.table.options.movableRowsSender}n?n.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},MoveRows.prototype.tableRowDrop=function(e,t){var o=!1,n=!1;switch(console.trace("drop"),e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?n=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),n?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:n})},MoveRows.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},MoveRows.prototype.senders={delete:function(e,t,o){e.delete()}},MoveRows.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},Tabulator.prototype.registerModule("moveRow",MoveRows);
\ No newline at end of file
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},MoveRows=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1};MoveRows.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},MoveRows.prototype.initialize=function(e){this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements},MoveRows.prototype.setHandle=function(e){this.hasHandle=e},MoveRows.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var n=e.getElement();n.previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},MoveRows.prototype.initializeRow=function(e){var t,o=this,n={};n.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),n.mousemove=function(t){if(t.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=n},MoveRows.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},MoveRows.prototype.bindTouchEvents=function(e,t){var o,n,s,i,l,c,r,a=this,h=!1;t.addEventListener("touchstart",function(t){a.checkTimeout=setTimeout(function(){a.touchMove=!0,o=e,n=e.nextRow(),i=n?n.getHeight()/2:0,s=e.prevRow(),l=s?s.getHeight()/2:0,c=0,r=0,h=!1,a.startMove(t,e)},a.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var m,v;a.moving&&(t.preventDefault(),a.moveHover(t),h||(h=t.touches[0].pageY),m=t.touches[0].pageY-h,m>0?n&&m-c>i&&(v=n)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(a.placeholderElement,v.getElement().nextSibling),a.moveRow(v,!0)):s&&-m-r>l&&(v=s)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(a.placeholderElement,v.getElement()),a.moveRow(v,!1)),v&&(o=v,n=v.nextRow(),c=i,i=n?n.getHeight()/2:0,s=v.prevRow(),r=l,l=s?s.getHeight()/2:0))}),t.addEventListener("touchend",function(e){a.checkTimeout&&clearTimeout(a.checkTimeout),a.moving&&(a.endMove(e),a.touchMove=!1)})},MoveRows.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},MoveRows.prototype.setStartPosition=function(e,t){var o,n,s=this.touchMove?e.touches[0].pageX:e.pageX,i=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(n=o.getBoundingClientRect(),this.startX=n.left-s+window.pageXOffset,this.startY=n.top-i+window.pageYOffset):this.startY=i-o.getBoundingClientRect().top},MoveRows.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},MoveRows.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},MoveRows.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},MoveRows.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=n-this.startY+"px"},MoveRows.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},MoveRows.prototype.elementRowDrop=function(e,t,o){this.table.options.movableRowsElementDrop&&this.table.options.movableRowsElementDrop(e,t,!!o&&o.getComponent())},MoveRows.prototype.connectToTables=function(e){var t,o=this;this.connectionSelectorsTables&&(t=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach(function(e){"string"==typeof e?o.connectionElements=o.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):o.connectionElements.push(e)}),this.connectionElements.forEach(function(e){var t=function(t){o.elementRowDrop(t,e,o.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")}))},MoveRows.prototype.disconnectFromTables=function(){var e;this.connectionSelectorsTables&&(e=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach(function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent})},MoveRows.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},MoveRows.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},MoveRows.prototype.dropComplete=function(e,t,o){var n=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":n=this.senders[this.table.options.movableRowsSender];break;case"function":n=this.table.options.movableRowsSender}n?n.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},MoveRows.prototype.tableRowDrop=function(e,t){var o=!1,n=!1;switch(console.trace("drop"),e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?n=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),n?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:n})},MoveRows.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},MoveRows.prototype.senders={delete:function(e,t,o){e.delete()}},MoveRows.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},Tabulator.prototype.registerModule("moveRow",MoveRows);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Mutator = function Mutator(table) {
        this.table = table; //hold Tabulator object
 
 var Mutator = function Mutator(table) {
        this.table = table; //hold Tabulator object
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mutator=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};Mutator.prototype.initializeColumn=function(t){var o=this,e=!1,a={};this.allowedTypes.forEach(function(r){var u,n="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));t.definition[n]&&(u=o.lookupMutator(t.definition[n]))&&(e=!0,a[n]={mutator:u,params:t.definition[n+"Params"]||{}})}),e&&(t.modules.mutate=a)},Mutator.prototype.lookupMutator=function(t){var o=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?o=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":o=t}return o},Mutator.prototype.transformRow=function(t,o,e){var a,r=this,u="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));return this.enabled&&r.table.columnManager.traverse(function(r){var n,i,s;r.modules.mutate&&(n=r.modules.mutate[u]||r.modules.mutate.mutator||!1)&&(a=r.getFieldValue(void 0!==e?e:t),"data"!=o&&void 0===a||(s=r.getComponent(),i="function"==typeof n.params?n.params(a,t,o,s):n.params,r.setFieldValue(t,n.mutator(a,t,o,i,s))))}),t},Mutator.prototype.transformCell=function(t,o){var e=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1,a={};return e?(a=Object.assign(a,t.row.getData()),t.column.setFieldValue(a,o),e.mutator(o,a,"edit",e.params,t.getComponent())):o},Mutator.prototype.enable=function(){this.enabled=!0},Mutator.prototype.disable=function(){this.enabled=!1},Mutator.prototype.mutators={},Tabulator.prototype.registerModule("mutator",Mutator);
\ No newline at end of file
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mutator=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};Mutator.prototype.initializeColumn=function(t){var o=this,e=!1,a={};this.allowedTypes.forEach(function(r){var u,n="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));t.definition[n]&&(u=o.lookupMutator(t.definition[n]))&&(e=!0,a[n]={mutator:u,params:t.definition[n+"Params"]||{}})}),e&&(t.modules.mutate=a)},Mutator.prototype.lookupMutator=function(t){var o=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?o=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":o=t}return o},Mutator.prototype.transformRow=function(t,o,e){var a,r=this,u="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));return this.enabled&&r.table.columnManager.traverse(function(r){var n,i,s;r.modules.mutate&&(n=r.modules.mutate[u]||r.modules.mutate.mutator||!1)&&(a=r.getFieldValue(void 0!==e?e:t),"data"!=o&&void 0===a||(s=r.getComponent(),i="function"==typeof n.params?n.params(a,t,o,s):n.params,r.setFieldValue(t,n.mutator(a,t,o,i,s))))}),t},Mutator.prototype.transformCell=function(t,o){var e=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1,a={};return e?(a=Object.assign(a,t.row.getData()),t.column.setFieldValue(a,o),e.mutator(o,a,"edit",e.params,t.getComponent())):o},Mutator.prototype.enable=function(){this.enabled=!0},Mutator.prototype.disable=function(){this.enabled=!1},Mutator.prototype.mutators={},Tabulator.prototype.registerModule("mutator",Mutator);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Page = function Page(table) {
 
 
 var Page = function Page(table) {
 
@@ -164,11 +164,11 @@ Page.prototype.initialize = function (hidden) {
 
        //click bindings
        self.firstBut.addEventListener("click", function () {
 
        //click bindings
        self.firstBut.addEventListener("click", function () {
-               self.setPage(1).then(function () {}).catch(function () {});
+               self.setPage(1);
        });
 
        self.prevBut.addEventListener("click", function () {
        });
 
        self.prevBut.addEventListener("click", function () {
-               self.previousPage().then(function () {}).catch(function () {});
+               self.previousPage();
        });
 
        self.nextBut.addEventListener("click", function () {
        });
 
        self.nextBut.addEventListener("click", function () {
@@ -176,7 +176,7 @@ Page.prototype.initialize = function (hidden) {
        });
 
        self.lastBut.addEventListener("click", function () {
        });
 
        self.lastBut.addEventListener("click", function () {
-               self.setPage(self.max).then(function () {}).catch(function () {});
+               self.setPage(self.max);
        });
 
        if (self.table.options.paginationElement) {
        });
 
        if (self.table.options.paginationElement) {
@@ -439,7 +439,7 @@ Page.prototype._generatePageButton = function (page) {
        button.textContent = page;
 
        button.addEventListener("click", function (e) {
        button.textContent = page;
 
        button.addEventListener("click", function (e) {
-               self.setPage(page).then(function () {}).catch(function () {});
+               self.setPage(page);
        });
 
        return button;
        });
 
        return button;
@@ -520,7 +520,7 @@ Page.prototype.getRows = function (data) {
 
                if (this.size === true) {
                        start = 0;
 
                if (this.size === true) {
                        start = 0;
-                       end = data.length;
+                       end = data.length - 1;
                } else {
                        start = this.size * (this.page - 1);
                        end = start + parseInt(this.size);
                } else {
                        start = this.size * (this.page - 1);
                        end = start + parseInt(this.size);
diff --git a/admin/js/vendors/tabulator/js/modules/page.min.js b/admin/js/vendors/tabulator/js/modules/page.min.js
new file mode 100644 (file)
index 0000000..c2835ba
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var Page=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.createElements()};Page.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},Page.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var a=1;a<5;a++)t.push(this.size*a);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var a=document.createElement("option");a.value=t,!0===t?e.table.modules.localize.bind("pagination|all",function(e){a.innerHTML=e}):a.innerHTML=t,e.pageSizeSelect.appendChild(a)}),this.pageSizeSelect.value=this.size}},Page.prototype.initialize=function(e){var t,a,i,s=this;this.dataSentNames=Object.assign({},this.paginationDataSentNames),this.dataSentNames=Object.assign(this.dataSentNames,this.table.options.paginationDataSent),this.dataReceivedNames=Object.assign({},this.paginationDataReceivedNames),this.dataReceivedNames=Object.assign(this.dataReceivedNames,this.table.options.paginationDataReceived),s.table.modules.localize.bind("pagination|first",function(e){s.firstBut.innerHTML=e}),s.table.modules.localize.bind("pagination|first_title",function(e){s.firstBut.setAttribute("aria-label",e),s.firstBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|prev",function(e){s.prevBut.innerHTML=e}),s.table.modules.localize.bind("pagination|prev_title",function(e){s.prevBut.setAttribute("aria-label",e),s.prevBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|next",function(e){s.nextBut.innerHTML=e}),s.table.modules.localize.bind("pagination|next_title",function(e){s.nextBut.setAttribute("aria-label",e),s.nextBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|last",function(e){s.lastBut.innerHTML=e}),s.table.modules.localize.bind("pagination|last_title",function(e){s.lastBut.setAttribute("aria-label",e),s.lastBut.setAttribute("title",e)}),s.firstBut.addEventListener("click",function(){s.setPage(1)}),s.prevBut.addEventListener("click",function(){s.previousPage()}),s.nextBut.addEventListener("click",function(){s.nextPage().then(function(){}).catch(function(){})}),s.lastBut.addEventListener("click",function(){s.setPage(s.max)}),s.table.options.paginationElement&&(s.element=s.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),s.table.modules.localize.bind("pagination|page_size",function(e){s.pageSizeSelect.setAttribute("aria-label",e),s.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),s.element.appendChild(t),s.element.appendChild(s.pageSizeSelect),s.pageSizeSelect.addEventListener("change",function(e){s.setPageSize("true"==s.pageSizeSelect.value||s.pageSizeSelect.value),s.setPage(1).then(function(){}).catch(function(){})})),s.element.appendChild(s.firstBut),s.element.appendChild(s.prevBut),s.element.appendChild(s.pagesElement),s.element.appendChild(s.nextBut),s.element.appendChild(s.lastBut),s.table.options.paginationElement||e||s.table.footerManager.append(s.element,s),s.mode=s.table.options.pagination,s.table.options.paginationSize?s.size=s.table.options.paginationSize:(a=document.createElement("div"),a.classList.add("tabulator-row"),a.style.visibility=e,i=document.createElement("div"),i.classList.add("tabulator-cell"),i.innerHTML="Page Row Test",a.appendChild(i),s.table.rowManager.getTableElement().appendChild(a),s.size=Math.floor(s.table.rowManager.getElement().clientHeight/a.offsetHeight),s.table.rowManager.getTableElement().removeChild(a)),s.count=s.table.options.paginationButtonCount,s.generatePageSizeSelectList()},Page.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},Page.prototype.setDisplayIndex=function(e){this.displayIndex=e},Page.prototype.getDisplayIndex=function(){return this.displayIndex},Page.prototype.setMaxRows=function(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},Page.prototype.reset=function(e,t){return("local"==this.mode||e)&&(this.page=1),t&&(this.initialLoad=!0),!0},Page.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},Page.prototype.setPage=function(e){var t=this,a=this;switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return new Promise(function(i,s){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){s()}),a.table.options.persistence&&a.table.modExists("persistence",!0)&&a.table.modules.persistence.config.page&&a.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),s())})},Page.prototype.setPageToRow=function(e){var t=this;return new Promise(function(a,i){var s=t.table.rowManager.getDisplayRows(t.displayIndex-1),n=s.indexOf(e);if(n>-1){var o=!0===t.size?1:Math.ceil((n+1)/t.size);t.setPage(o).then(function(){a()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},Page.prototype.setPageSize=function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},Page.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),a=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),s=this.page<=a?Math.min(this.count,this.max):Math.min(this.page+a,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var n=i;n<=s;n++)n>0&&n<=e.max&&e.pagesElement.appendChild(e._generatePageButton(n));this.footerRedraw()},Page.prototype._generatePageButton=function(e){var t=this,a=document.createElement("button");return a.classList.add("tabulator-page"),e==t.page&&a.classList.add("active"),a.setAttribute("type","button"),a.setAttribute("role","button"),t.table.modules.localize.bind("pagination|page_title",function(t){a.setAttribute("aria-label",t+" "+e),a.setAttribute("title",t+" "+e)}),a.setAttribute("data-page",e),a.textContent=e,a.addEventListener("click",function(a){t.setPage(e)}),a},Page.prototype.previousPage=function(){var e=this;return new Promise(function(t,a){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){a()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),a())})},Page.prototype.nextPage=function(){var e=this;return new Promise(function(t,a){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){a()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),a())})},Page.prototype.getPage=function(){return this.page},Page.prototype.getPageMax=function(){return this.max},Page.prototype.getPageSize=function(e){return this.size},Page.prototype.getMode=function(){return this.mode},Page.prototype.getRows=function(e){var t,a,i;if("local"==this.mode){t=[],!0===this.size?(a=0,i=e.length-1):(a=this.size*(this.page-1),i=a+parseInt(this.size)),this._setPageButtons();for(var s=a;s<i;s++)e[s]&&t.push(e[s]);return t}return this._setPageButtons(),e.slice(0)},Page.prototype.trigger=function(){var e,t=this;return new Promise(function(a,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),a();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){a()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},Page.prototype._getRemotePage=function(){var e,t,a=this,i=this;return new Promise(function(s,n){if(i.table.modExists("ajax",!0)||n(),e=Tabulator.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[a.dataSentNames.page]=i.page,a.size&&(t[a.dataSentNames.size]=a.size),a.table.options.ajaxSorting&&a.table.modExists("sort")){var o=i.table.modules.sort.getSort();o.forEach(function(e){delete e.column}),t[a.dataSentNames.sorters]=o}if(a.table.options.ajaxFiltering&&a.table.modExists("filter")){var r=i.table.modules.filter.getFilters(!0,!0);t[a.dataSentNames.filters]=r}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(a.progressiveLoad).then(function(e){i._parseRemoteData(e),s()}).catch(function(e){n()}),i.table.modules.ajax.setParams(e)})},Page.prototype._parseRemoteData=function(e){var t,e,a,i=this;if(void 0===e[this.dataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e[this.dataReceivedNames.data]){if(this.max=parseInt(e[this.dataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page):this.table.rowManager.addRows(e[this.dataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.dataReceivedNames.data]),this.table.rowManager.setData(e,!0,this.initialLoad&&1==this.page),a=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+a&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());this.initialLoad=!1}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property")},Page.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},Page.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},Page.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},Tabulator.prototype.registerModule("page",Page);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Persistence = function Persistence(table) {
        this.table = table; //hold Tabulator object
 
 var Persistence = function Persistence(table) {
        this.table = table; //hold Tabulator object
@@ -285,8 +285,6 @@ Persistence.prototype.validateSorters = function (data) {
 };
 
 Persistence.prototype.getGroupConfig = function () {
 };
 
 Persistence.prototype.getGroupConfig = function () {
-       var data = {};
-
        if (this.config.group) {
                if (this.config.group === true || this.config.group.groupBy) {
                        data.groupBy = this.table.options.groupBy;
        if (this.config.group) {
                if (this.config.group === true || this.config.group.groupBy) {
                        data.groupBy = this.table.options.groupBy;
@@ -323,8 +321,7 @@ Persistence.prototype.getPageConfig = function () {
 //parse columns for data to store
 Persistence.prototype.parseColumns = function (columns) {
        var self = this,
 //parse columns for data to store
 Persistence.prototype.parseColumns = function (columns) {
        var self = this,
-           definitions = [],
-           excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"];
+           definitions = [];
 
        columns.forEach(function (column) {
                var defStore = {},
 
        columns.forEach(function (column) {
                var defStore = {},
@@ -355,9 +352,7 @@ Persistence.prototype.parseColumns = function (columns) {
                                                break;
 
                                        default:
                                                break;
 
                                        default:
-                                               if (typeof colDef[key] !== "function" && excludedKeys.indexOf(key) === -1) {
-                                                       defStore[key] = colDef[key];
-                                               }
+                                               defStore[key] = colDef[key];
                                }
                        });
                }
                                }
                        });
                }
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var Persistence=function(e){this.table=e,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};Persistence.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},Persistence.prototype.initialize=function(){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader))},Persistence.prototype.initializeColumn=function(e){var t,i,o=this;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),i=!0===this.config.columns?Object.keys(t):this.config.columns,i.forEach(function(e){var i=Object.getOwnPropertyDescriptor(t,e),s=t[e];i&&Object.defineProperty(t,e,{set:function(e){s=e,o.defWatcherBlock||o.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),s}})}),this.defWatcherBlock=!1)},Persistence.prototype.load=function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i},Persistence.prototype.retreiveData=function(e){return!!this.readFunc&&this.readFunc(this.id,e)},Persistence.prototype.mergeDefinition=function(e,t){var i=this,o=[];return t=t||[],t.forEach(function(t,s){var n,r=i._findColumn(e,t);r&&(!0===i.config.columns||void 0==i.config.columns?(n=Object.keys(r),n.push("width")):n=i.config.columns,n.forEach(function(e){void 0!==t[e]&&(r[e]=t[e])}),r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),o.push(r))}),e.forEach(function(e,s){i._findColumn(t,e)||(o.length>s?o.splice(s,0,e):o.push(e))}),o},Persistence.prototype._findColumn=function(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},Persistence.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)},Persistence.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},Persistence.prototype.getGroupConfig=function(){var e={};return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e},Persistence.prototype.getPageConfig=function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e},Persistence.prototype.parseColumns=function(e){var t=this,i=[],o=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach(function(e){var s,n={},r=e.getDefinition();e.isGroup?(n.title=r.title,n.columns=t.parseColumns(e.getColumns())):(n.field=e.getField(),!0===t.config.columns||void 0==t.config.columns?(s=Object.keys(r),s.push("width")):s=t.config.columns,s.forEach(function(t){switch(t){case"width":n.width=e.getWidth();break;case"visible":n.visible=e.visible;break;default:"function"!=typeof r[t]&&-1===o.indexOf(t)&&(n[t]=r[t])}})),i.push(n)}),i},Persistence.prototype.readers={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,o,s=document.cookie,n=e+"-"+t,r=s.indexOf(n+"=");return r>-1&&(s=s.substr(r),i=s.indexOf(";"),i>-1&&(s=s.substr(0,i)),o=s.replace(n+"=","")),!!o&&JSON.parse(o)}},Persistence.prototype.writers={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var o=new Date;o.setDate(o.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+o.toUTCString()}},Tabulator.prototype.registerModule("persistence",Persistence);
\ No newline at end of file
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var Persistence=function(e){this.table=e,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};Persistence.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},Persistence.prototype.initialize=function(){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader))},Persistence.prototype.initializeColumn=function(e){var t,i,s=this;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),i=!0===this.config.columns?Object.keys(t):this.config.columns,i.forEach(function(e){var i=Object.getOwnPropertyDescriptor(t,e),o=t[e];i&&Object.defineProperty(t,e,{set:function(e){o=e,s.defWatcherBlock||s.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),o}})}),this.defWatcherBlock=!1)},Persistence.prototype.load=function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i},Persistence.prototype.retreiveData=function(e){return!!this.readFunc&&this.readFunc(this.id,e)},Persistence.prototype.mergeDefinition=function(e,t){var i=this,s=[];return t=t||[],t.forEach(function(t,o){var n,r=i._findColumn(e,t);r&&(!0===i.config.columns||void 0==i.config.columns?(n=Object.keys(r),n.push("width")):n=i.config.columns,n.forEach(function(e){void 0!==t[e]&&(r[e]=t[e])}),r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),s.push(r))}),e.forEach(function(e,o){i._findColumn(t,e)||(s.length>o?s.splice(o,0,e):s.push(e))}),s},Persistence.prototype._findColumn=function(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},Persistence.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)},Persistence.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},Persistence.prototype.getGroupConfig=function(){return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},Persistence.prototype.getPageConfig=function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e},Persistence.prototype.parseColumns=function(e){var t=this,i=[];return e.forEach(function(e){var s,o={},n=e.getDefinition();e.isGroup?(o.title=n.title,o.columns=t.parseColumns(e.getColumns())):(o.field=e.getField(),!0===t.config.columns||void 0==t.config.columns?(s=Object.keys(n),s.push("width")):s=t.config.columns,s.forEach(function(t){switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:o[t]=n[t]}})),i.push(o)}),i},Persistence.prototype.readers={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s,o=document.cookie,n=e+"-"+t,r=o.indexOf(n+"=");return r>-1&&(o=o.substr(r),i=o.indexOf(";"),i>-1&&(o=o.substr(0,i)),s=o.replace(n+"=","")),!!s&&JSON.parse(s)}},Persistence.prototype.writers={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var s=new Date;s.setDate(s.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+s.toUTCString()}},Tabulator.prototype.registerModule("persistence",Persistence);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Print = function Print(table) {
        this.table = table; //hold Tabulator object
 
 var Print = function Print(table) {
        this.table = table; //hold Tabulator object
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var Print=function(t){this.table=t,this.element=!1,this.manualBlock=!1};Print.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},Print.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},Print.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},Print.prototype.printFullscreen=function(t,e,i){var n,l,o=window.scrollX,a=window.scrollY,s=document.createElement("div"),r=document.createElement("div"),p=this.table.modules.export.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==e?e:this.table.options.printStyled,t,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(s.classList.add("tabulator-print-header"),n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof n?s.innerHTML=n:s.appendChild(n),this.element.appendChild(s)),this.element.appendChild(p),this.table.options.printFooter&&(r.classList.add("tabulator-print-footer"),l="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof l?r.innerHTML=l:r.appendChild(l),this.element.appendChild(r)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,p),window.print(),this.cleanup(),window.scrollTo(o,a),this.manualBlock=!1},Tabulator.prototype.registerModule("print",Print);
\ No newline at end of file
 var Print=function(t){this.table=t,this.element=!1,this.manualBlock=!1};Print.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},Print.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},Print.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},Print.prototype.printFullscreen=function(t,e,i){var n,l,o=window.scrollX,a=window.scrollY,s=document.createElement("div"),r=document.createElement("div"),p=this.table.modules.export.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==e?e:this.table.options.printStyled,t,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(s.classList.add("tabulator-print-header"),n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof n?s.innerHTML=n:s.appendChild(n),this.element.appendChild(s)),this.element.appendChild(p),this.table.options.printFooter&&(r.classList.add("tabulator-print-footer"),l="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof l?r.innerHTML=l:r.appendChild(l),this.element.appendChild(r)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,p),window.print(),this.cleanup(),window.scrollTo(o,a),this.manualBlock=!1},Tabulator.prototype.registerModule("print",Print);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var ReactiveData = function ReactiveData(table) {
        this.table = table; //hold Tabulator object
 
 var ReactiveData = function ReactiveData(table) {
        this.table = table; //hold Tabulator object
@@ -172,7 +172,8 @@ ReactiveData.prototype.unwatchData = function () {
 };
 
 ReactiveData.prototype.watchRow = function (row) {
 };
 
 ReactiveData.prototype.watchRow = function (row) {
-       var data = row.getData();
+       var self = this,
+           data = row.getData();
 
        this.blocked = true;
 
 
        this.blocked = true;
 
@@ -180,98 +181,9 @@ ReactiveData.prototype.watchRow = function (row) {
                this.watchKey(row, data, key);
        }
 
                this.watchKey(row, data, key);
        }
 
-       if (this.table.options.dataTree) {
-               this.watchTreeChildren(row);
-       }
-
        this.blocked = false;
 };
 
        this.blocked = false;
 };
 
-ReactiveData.prototype.watchTreeChildren = function (row) {
-       var self = this,
-           childField = row.getData()[this.table.options.dataTreeChildField],
-           origFuncs = {};
-
-       function rebuildTree() {
-               self.table.modules.dataTree.initializeRow(row);
-               self.table.modules.dataTree.layoutRow(row);
-               self.table.rowManager.refreshActiveData("tree", false, true);
-       }
-
-       if (childField) {
-
-               origFuncs.push = childField.push;
-
-               Object.defineProperty(childField, "push", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.push.apply(childField, arguments);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-
-               origFuncs.unshift = childField.unshift;
-
-               Object.defineProperty(childField, "unshift", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.unshift.apply(childField, arguments);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-
-               origFuncs.shift = childField.shift;
-
-               Object.defineProperty(childField, "shift", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.shift.call(childField);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-
-               origFuncs.pop = childField.pop;
-
-               Object.defineProperty(childField, "pop", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.pop.call(childField);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-
-               origFuncs.splice = childField.splice;
-
-               Object.defineProperty(childField, "splice", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.splice.apply(childField, arguments);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-       }
-};
-
 ReactiveData.prototype.watchKey = function (row, data, key) {
        var self = this,
            props = Object.getOwnPropertyDescriptor(data, key),
 ReactiveData.prototype.watchKey = function (row, data, key) {
        var self = this,
            props = Object.getOwnPropertyDescriptor(data, key),
diff --git a/admin/js/vendors/tabulator/js/modules/reactive_data.min.js b/admin/js/vendors/tabulator/js/modules/reactive_data.min.js
new file mode 100644 (file)
index 0000000..c5dc047
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var ReactiveData=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};ReactiveData.prototype.watchData=function(e){var t,a=this;this.currentVersion++,t=this.currentVersion,a.unwatchData(),a.data=e,a.origFuncs.push=e.push,Object.defineProperty(a.data,"push",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!1)}),a.origFuncs.push.apply(e,arguments)}}),a.origFuncs.unshift=e.unshift,Object.defineProperty(a.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!0)}),a.origFuncs.unshift.apply(e,arguments)}}),a.origFuncs.shift=e.shift,Object.defineProperty(a.data,"shift",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[0]))&&r.deleteActual(),a.origFuncs.shift.call(e)}}),a.origFuncs.pop=e.pop,Object.defineProperty(a.data,"pop",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[a.data.length-1]))&&r.deleteActual(),a.origFuncs.pop.call(e)}}),a.origFuncs.splice=e.splice,Object.defineProperty(a.data,"splice",{enumerable:!1,configurable:!0,value:function(){var r,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],c=o[1],i=!!o[2]&&o.slice(2);if(!a.blocked&&t===a.currentVersion){if(i&&(r=!!e[n]&&a.table.rowManager.getRowFromDataObject(e[n]),r?i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,r,!0)}):(i=i.slice().reverse(),i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==c){var u=e.slice(n,void 0===o[1]?o[1]:n+c);u.forEach(function(e,t){var r=a.table.rowManager.getRowFromDataObject(e);r&&r.deleteActual(t!==u.length-1)})}(i||0!==c)&&a.table.rowManager.reRenderInPosition()}return a.origFuncs.splice.apply(e,arguments)}})},ReactiveData.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},ReactiveData.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var a in t)this.watchKey(e,t,a);this.blocked=!1},ReactiveData.prototype.watchKey=function(e,t,a){var r=this,o=Object.getOwnPropertyDescriptor(t,a),n=t[a],c=this.currentVersion;Object.defineProperty(t,a,{set:function(t){if(n=t,!r.blocked&&c===r.currentVersion){var i={};i[a]=t,e.updateData(i)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),n}})},ReactiveData.prototype.unwatchRow=function(e){var t=e.getData();for(var a in t)Object.defineProperty(t,a,{value:t[a]})},ReactiveData.prototype.block=function(){this.blocked=!0},ReactiveData.prototype.unblock=function(){this.blocked=!1},Tabulator.prototype.registerModule("reactiveData",ReactiveData);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var ResizeColumns = function ResizeColumns(table) {
        this.table = table; //hold Tabulator object
 
 var ResizeColumns = function ResizeColumns(table) {
        this.table = table; //hold Tabulator object
@@ -111,15 +111,7 @@ ResizeColumns.prototype._mouseDown = function (e, column, handle) {
        function mouseMove(e) {
                // self.table.columnManager.tempScrollBlock();
 
        function mouseMove(e) {
                // self.table.columnManager.tempScrollBlock();
 
-               if (self.table.rtl) {
-                       column.setWidth(self.startWidth - ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-               } else {
-                       column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-               }
-
-               if (self.table.options.virtualDomHoz) {
-                       self.table.vdomHoz.reinitialize(true);
-               }
+               column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
 
                if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
                        column.checkCellHeights();
 
                if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
                        column.checkCellHeights();
diff --git a/admin/js/vendors/tabulator/js/modules/resize_columns.min.js b/admin/js/vendors/tabulator/js/modules/resize_columns.min.js
new file mode 100644 (file)
index 0000000..7ae0e38
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var ResizeColumns=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};ResizeColumns.prototype.initializeColumn=function(e,t,n){var o=this,i=!1,s=this.table.options.resizableColumns;if("header"===e&&(i="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:i}),!0===s||s==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var l=document.createElement("div");l.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var r=function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(o.startColumn=t,o._mouseDown(e,n,a))};a.addEventListener("mousedown",r),a.addEventListener("touchstart",r,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(e.stopPropagation(),n.reinitializeWidth(!0))}),l.addEventListener("click",function(e){e.stopPropagation()});var d=function(e){var n,i,s;(n=t.getFirstColumn())&&(i=o.table.columnManager.findColumnIndex(n),(s=i>0&&o.table.columnManager.getColumnByIndex(i-1))&&o._checkResizability(s)&&(o.startColumn=t,o._mouseDown(e,s,l)))};l.addEventListener("mousedown",d),l.addEventListener("touchstart",d,{passive:!0}),l.addEventListener("dblclick",function(e){var n,i,s;(n=t.getFirstColumn())&&(i=o.table.columnManager.findColumnIndex(n),(s=i>0&&o.table.columnManager.getColumnByIndex(i-1))&&o._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),n.appendChild(a),n.appendChild(l)}},ResizeColumns.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},ResizeColumns.prototype._mouseDown=function(e,t,n){function o(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function i(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",o),n.removeEventListener("touchmove",o),n.removeEventListener("touchend",i),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",i),n.addEventListener("touchmove",o,{passive:!0}),n.addEventListener("touchend",i)},Tabulator.prototype.registerModule("resizeColumns",ResizeColumns);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var ResizeRows = function ResizeRows(table) {
        this.table = table; //hold Tabulator object
 
 var ResizeRows = function ResizeRows(table) {
        this.table = table; //hold Tabulator object
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var ResizeRows=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};ResizeRows.prototype.initializeRow=function(e){var t=this,o=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",s.addEventListener("click",function(e){e.stopPropagation()});var a=function(o){t.startRow=e,t._mouseDown(o,e,s)};s.addEventListener("mousedown",a),s.addEventListener("touchstart",a,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(o,s,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(s),o.appendChild(n)},ResizeRows.prototype._mouseDown=function(e,t,o){function s(e){t.setHeight(a.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-a.startY))}function n(e){document.body.removeEventListener("mouseup",s),document.body.removeEventListener("mousemove",s),o.removeEventListener("touchmove",s),o.removeEventListener("touchend",n),a.table.element.classList.remove("tabulator-block-select"),a.table.options.rowResized.call(this.table,t.getComponent())}var a=this;a.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),a.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,a.startHeight=t.getHeight(),document.body.addEventListener("mousemove",s),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",s,{passive:!0}),o.addEventListener("touchend",n)},Tabulator.prototype.registerModule("resizeRows",ResizeRows);
\ No newline at end of file
 var ResizeRows=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};ResizeRows.prototype.initializeRow=function(e){var t=this,o=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",s.addEventListener("click",function(e){e.stopPropagation()});var a=function(o){t.startRow=e,t._mouseDown(o,e,s)};s.addEventListener("mousedown",a),s.addEventListener("touchstart",a,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(o,s,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(s),o.appendChild(n)},ResizeRows.prototype._mouseDown=function(e,t,o){function s(e){t.setHeight(a.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-a.startY))}function n(e){document.body.removeEventListener("mouseup",s),document.body.removeEventListener("mousemove",s),o.removeEventListener("touchmove",s),o.removeEventListener("touchend",n),a.table.element.classList.remove("tabulator-block-select"),a.table.options.rowResized.call(this.table,t.getComponent())}var a=this;a.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),a.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,a.startHeight=t.getHeight(),document.body.addEventListener("mousemove",s),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",s,{passive:!0}),o.addEventListener("touchend",n)},Tabulator.prototype.registerModule("resizeRows",ResizeRows);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var ResizeTable = function ResizeTable(table) {
        this.table = table; //hold Tabulator object
 
 var ResizeTable = function ResizeTable(table) {
        this.table = table; //hold Tabulator object
@@ -47,10 +47,6 @@ ResizeTable.prototype.initialize = function (row) {
                                                _this.containerWidth = table.element.parentNode.clientWidth;
                                        }
 
                                                _this.containerWidth = table.element.parentNode.clientWidth;
                                        }
 
-                                       if (table.options.virtualDomHoz) {
-                                               table.vdomHoz.reinitialize(true);
-                                       }
-
                                        table.redraw();
                                }
                        }
                                        table.redraw();
                                }
                        }
@@ -73,10 +69,8 @@ ResizeTable.prototype.initialize = function (row) {
                                                _this.containerWidth = nodeWidth;
                                                _this.tableHeight = table.element.clientHeight;
                                                _this.tableWidth = table.element.clientWidth;
                                                _this.containerWidth = nodeWidth;
                                                _this.tableHeight = table.element.clientHeight;
                                                _this.tableWidth = table.element.clientWidth;
-                                       }
 
 
-                                       if (table.options.virtualDomHoz) {
-                                               table.vdomHoz.reinitialize(true);
+                                               table.redraw();
                                        }
 
                                        table.redraw();
                                        }
 
                                        table.redraw();
@@ -88,10 +82,6 @@ ResizeTable.prototype.initialize = function (row) {
        } else {
                this.binding = function () {
                        if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
        } else {
                this.binding = function () {
                        if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-                               if (table.options.virtualDomHoz) {
-                                       table.vdomHoz.reinitialize(true);
-                               }
-
                                table.redraw();
                        }
                };
                                table.redraw();
                        }
                };
diff --git a/admin/js/vendors/tabulator/js/modules/resize_table.min.js b/admin/js/vendors/tabulator/js/modules/resize_table.min.js
new file mode 100644 (file)
index 0000000..e992d75
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var ResizeTable=function(e){this.table=e,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};ResizeTable.prototype.initialize=function(e){var t,i=this,n=this.table;this.tableHeight=n.element.clientHeight,this.tableWidth=n.element.clientWidth,n.element.parentNode&&(this.containerHeight=n.element.parentNode.clientHeight,this.containerWidth=n.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===n.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver(function(e){if(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),r=Math.floor(e[0].contentRect.width);i.tableHeight==t&&i.tableWidth==r||(i.tableHeight=t,i.tableWidth=r,n.element.parentNode&&(i.containerHeight=n.element.parentNode.clientHeight,i.containerWidth=n.element.parentNode.clientWidth),n.redraw())}}),this.observer.observe(n.element),t=window.getComputedStyle(n.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver(function(e){if(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),r=Math.floor(e[0].contentRect.width);i.containerHeight==t&&i.containerWidth==r||(i.containerHeight=t,i.containerWidth=r,i.tableHeight=n.element.clientHeight,i.tableWidth=n.element.clientWidth,n.redraw()),n.redraw()}}),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell)&&n.redraw()},window.addEventListener("resize",this.binding))},ResizeTable.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},Tabulator.prototype.registerModule("resizeTable",ResizeTable);
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var ResponsiveLayout = function ResponsiveLayout(table) {
        this.table = table; //hold Tabulator object
 
 var ResponsiveLayout = function ResponsiveLayout(table) {
        this.table = table; //hold Tabulator object
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var ResponsiveLayout=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};ResponsiveLayout.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,n){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=n,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,n=Array.isArray(o),s=0,o=n?o:o[Symbol.iterator]();;){var i;if(n){if(s>=o.length)break;i=o[s++]}else{if(s=o.next(),s.done)break;i=s.value}var l=i;if("responsiveCollapse"==l.definition.formatter){this.collapseHandleColumn=l;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},ResponsiveLayout.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},ResponsiveLayout.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},ResponsiveLayout.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},ResponsiveLayout.prototype.hideColumn=function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())},ResponsiveLayout.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),n=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-o;if(n<0){var s=e.columns[e.index];s?(e.hideColumn(s),e.index++):t=!1}else{var i=e.columns[e.index-1];i&&n>0&&n>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},ResponsiveLayout.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},ResponsiveLayout.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},ResponsiveLayout.prototype.generateCollapsedRowData=function(e){var t,o=this,n=e.getData(),s=[];return this.hiddenColumns.forEach(function(i){var l=i.getFieldValue(n);i.definition.title&&i.field&&(i.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return l},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},s.push({title:i.definition.title,value:i.modules.format.formatter.call(o.table.modules.format,t,i.modules.format.params)})):s.push({title:i.definition.title,value:l}))}),s},ResponsiveLayout.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},Tabulator.prototype.registerModule("responsiveLayout",ResponsiveLayout);
\ No newline at end of file
 var ResponsiveLayout=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};ResponsiveLayout.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,n){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=n,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,n=Array.isArray(o),s=0,o=n?o:o[Symbol.iterator]();;){var i;if(n){if(s>=o.length)break;i=o[s++]}else{if(s=o.next(),s.done)break;i=s.value}var l=i;if("responsiveCollapse"==l.definition.formatter){this.collapseHandleColumn=l;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},ResponsiveLayout.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},ResponsiveLayout.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},ResponsiveLayout.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},ResponsiveLayout.prototype.hideColumn=function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())},ResponsiveLayout.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),n=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-o;if(n<0){var s=e.columns[e.index];s?(e.hideColumn(s),e.index++):t=!1}else{var i=e.columns[e.index-1];i&&n>0&&n>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},ResponsiveLayout.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},ResponsiveLayout.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},ResponsiveLayout.prototype.generateCollapsedRowData=function(e){var t,o=this,n=e.getData(),s=[];return this.hiddenColumns.forEach(function(i){var l=i.getFieldValue(n);i.definition.title&&i.field&&(i.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return l},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},s.push({title:i.definition.title,value:i.modules.format.formatter.call(o.table.modules.format,t,i.modules.format.params)})):s.push({title:i.definition.title,value:l}))}),s},ResponsiveLayout.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},Tabulator.prototype.registerModule("responsiveLayout",ResponsiveLayout);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var SelectRow = function SelectRow(table) {
        this.table = table; //hold Tabulator object
 
 var SelectRow = function SelectRow(table) {
        this.table = table; //hold Tabulator object
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},SelectRow=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};SelectRow.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},SelectRow.prototype.initializeRow=function(e){var t=this,o=e.getElement(),l=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var l=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),s=t.table.rowManager.getDisplayRowIndex(e),c=l<=s?l:s,i=l>=s?l:s,n=t.table.rowManager.getDisplayRows().slice(0),a=n.splice(c,i-c+1);o.ctrlKey||o.metaKey?(a.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(void 0,!0),!0!==t.table.options.selectable&&a.length>t.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",l),document.body.addEventListener("keyup",l),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},SelectRow.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},SelectRow.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=this.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},SelectRow.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var l=this.table.rowManager.findRow(e);l?-1==this.selectedRows.indexOf(l)&&(l.modules.select||(l.modules.select={}),l.modules.select.selected=!0,l.modules.select.checkboxEl&&(l.modules.select.checkboxEl.checked=!0),l.getElement().classList.add("tabulator-selected"),this.selectedRows.push(l),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(l,!0),t||this.table.options.rowSelected.call(this.table,l.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},SelectRow.prototype.deselectRows=function(e,t){var o,l=this;if(void 0===e){o=l.selectedRows.length;for(var s=0;s<o;s++)l._deselectRow(l.selectedRows[0],!0);l._rowSelectionChanged(t)}else Array.isArray(e)?(e.forEach(function(e){l._deselectRow(e,!0)}),l._rowSelectionChanged(t)):l._deselectRow(e,t)},SelectRow.prototype._deselectRow=function(e,t){var o,l=this,s=l.table.rowManager.findRow(e);s?(o=l.selectedRows.findIndex(function(e){return e==s}))>-1&&(s.modules.select||(s.modules.select={}),s.modules.select.selected=!1,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!1),s.getElement().classList.remove("tabulator-selected"),l.selectedRows.splice(o,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!1),t||l.table.options.rowDeselected.call(this.table,s.getComponent()),l._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},SelectRow.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},SelectRow.prototype._rowSelectionChanged=function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},SelectRow.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},SelectRow.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},SelectRow.prototype.childRowSelection=function(e,t){var o=this.table.modules.dataTree.getChildren(e);if(t)for(var l=o,s=Array.isArray(l),c=0,l=s?l:l[Symbol.iterator]();;){var i;if(s){if(c>=l.length)break;i=l[c++]}else{if(c=l.next(),c.done)break;i=c.value}var n=i;this._selectRow(n,!0)}else for(var a=o,r=Array.isArray(a),d=0,a=r?a:a[Symbol.iterator]();;){var h;if(r){if(d>=a.length)break;h=a[d++]}else{if(d=a.next(),d.done)break;h=d.value}var w=h;this._deselectRow(w,!0)}},Tabulator.prototype.registerModule("selectRow",SelectRow);
\ No newline at end of file
 var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},SelectRow=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};SelectRow.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},SelectRow.prototype.initializeRow=function(e){var t=this,o=e.getElement(),l=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var l=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),s=t.table.rowManager.getDisplayRowIndex(e),c=l<=s?l:s,i=l>=s?l:s,n=t.table.rowManager.getDisplayRows().slice(0),a=n.splice(c,i-c+1);o.ctrlKey||o.metaKey?(a.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(void 0,!0),!0!==t.table.options.selectable&&a.length>t.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",l),document.body.addEventListener("keyup",l),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},SelectRow.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},SelectRow.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=this.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},SelectRow.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var l=this.table.rowManager.findRow(e);l?-1==this.selectedRows.indexOf(l)&&(l.modules.select||(l.modules.select={}),l.modules.select.selected=!0,l.modules.select.checkboxEl&&(l.modules.select.checkboxEl.checked=!0),l.getElement().classList.add("tabulator-selected"),this.selectedRows.push(l),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(l,!0),t||this.table.options.rowSelected.call(this.table,l.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},SelectRow.prototype.deselectRows=function(e,t){var o,l=this;if(void 0===e){o=l.selectedRows.length;for(var s=0;s<o;s++)l._deselectRow(l.selectedRows[0],!0);l._rowSelectionChanged(t)}else Array.isArray(e)?(e.forEach(function(e){l._deselectRow(e,!0)}),l._rowSelectionChanged(t)):l._deselectRow(e,t)},SelectRow.prototype._deselectRow=function(e,t){var o,l=this,s=l.table.rowManager.findRow(e);s?(o=l.selectedRows.findIndex(function(e){return e==s}))>-1&&(s.modules.select||(s.modules.select={}),s.modules.select.selected=!1,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!1),s.getElement().classList.remove("tabulator-selected"),l.selectedRows.splice(o,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!1),t||l.table.options.rowDeselected.call(this.table,s.getComponent()),l._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},SelectRow.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},SelectRow.prototype._rowSelectionChanged=function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},SelectRow.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},SelectRow.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},SelectRow.prototype.childRowSelection=function(e,t){var o=this.table.modules.dataTree.getChildren(e);if(t)for(var l=o,s=Array.isArray(l),c=0,l=s?l:l[Symbol.iterator]();;){var i;if(s){if(c>=l.length)break;i=l[c++]}else{if(c=l.next(),c.done)break;i=c.value}var n=i;this._selectRow(n,!0)}else for(var a=o,r=Array.isArray(a),d=0,a=r?a:a[Symbol.iterator]();;){var h;if(r){if(d>=a.length)break;h=a[d++]}else{if(d=a.next(),d.done)break;h=d.value}var w=h;this._deselectRow(w,!0)}},Tabulator.prototype.registerModule("selectRow",SelectRow);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Sort = function Sort(table) {
        this.table = table; //hold Tabulator object
 
 var Sort = function Sort(table) {
        this.table = table; //hold Tabulator object
@@ -43,19 +43,10 @@ Sort.prototype.initializeColumn = function (column, content) {
                colEl.classList.add("tabulator-sortable");
 
                arrowEl = document.createElement("div");
                colEl.classList.add("tabulator-sortable");
 
                arrowEl = document.createElement("div");
-               arrowEl.classList.add("tabulator-col-sorter");
-
-               if (_typeof(this.table.options.headerSortElement) == "object") {
-                       arrowEl.appendChild(this.table.options.headerSortElement);
-               } else {
-                       arrowEl.innerHTML = this.table.options.headerSortElement;
-               }
-
+               arrowEl.classList.add("tabulator-arrow");
                //create sorter arrow
                content.appendChild(arrowEl);
 
                //create sorter arrow
                content.appendChild(arrowEl);
 
-               column.modules.sort.element = arrowEl;
-
                //sort on click
                colEl.addEventListener("click", function (e) {
                        var dir = "",
                //sort on click
                colEl.addEventListener("click", function (e) {
                        var dir = "",
diff --git a/admin/js/vendors/tabulator/js/modules/sort.min.js b/admin/js/vendors/tabulator/js/modules/sort.min.js
new file mode 100644 (file)
index 0000000..d0b4cb0
--- /dev/null
@@ -0,0 +1,2 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sort=function(t){this.table=t,this.sortList=[],this.changed=!1};Sort.prototype.initializeColumn=function(t,e){var r,o,n=this,i=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?i=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":i=t.definition.sorter}t.modules.sort={sorter:i,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(r=t.getElement(),r.classList.add("tabulator-sortable"),o=document.createElement("div"),o.classList.add("tabulator-arrow"),e.appendChild(o),r.addEventListener("click",function(e){var r="",o=[],i=!1;if(t.modules.sort){if(t.modules.sort.tristate)r="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":r="desc";break;case"desc":r="asc";break;default:r=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(o=n.getSort(),i=o.findIndex(function(e){return e.field===t.getField()}),i>-1?(o[i].dir=r,i!=o.length-1&&(i=o.splice(i,1)[0],"none"!=r&&o.push(i))):"none"!=r&&o.push({column:t,dir:r}),n.setSort(o)):"none"==r?n.clear():n.setSort(t,r),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},Sort.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},Sort.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},Sort.prototype.setSort=function(t,e){var r=this,o=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=r.table.columnManager.findColumn(t.column),e?(t.column=e,o.push(t),r.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),r.sortList=o,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},Sort.prototype.clear=function(){this.setSort([])},Sort.prototype.findSorter=function(t){var e,r=this.table.rowManager.activeRows[0],o="string";if(r&&(r=r.getData(),t.getField()))switch(e=t.getFieldValue(r),void 0===e?"undefined":_typeof(e)){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return this.sorters[o]},Sort.prototype.sort=function(t){var e=this,r=this.table.options.sortOrderReverse?e.sortList.slice().reverse():e.sortList,o=[],n=[];e.table.options.dataSorting&&e.table.options.dataSorting.call(e.table,e.getSort()),e.clearColumnHeaders(),e.table.options.ajaxSorting?r.forEach(function(t,r){e.setColumnHeader(t.column,t.dir)}):(r.forEach(function(t,r){var n=t.column.modules.sort;t.column&&n&&(n.sorter||(n.sorter=e.findSorter(t.column)),t.params="function"==typeof n.params?n.params(t.column.getComponent(),t.dir):n.params,o.push(t)),e.setColumnHeader(t.column,t.dir)}),o.length&&e._sortItems(t,o)),e.table.options.dataSorted&&(t.forEach(function(t){n.push(t.getComponent())}),e.table.options.dataSorted.call(e.table,e.getSort(),n))},Sort.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},Sort.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},Sort.prototype._sortItems=function(t,e){var r=this,o=e.length-1;t.sort(function(t,n){for(var i,s=o;s>=0;s--){var a=e[s];if(0!==(i=r._sortRow(t,n,a.column,a.dir,a.params)))break}return i})},Sort.prototype._sortRow=function(t,e,r,o,n){var i,s,a="asc"==o?t:e,l="asc"==o?e:t;return t=r.getFieldValue(a.getData()),e=r.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",i=a.getComponent(),s=l.getComponent(),r.modules.sort.sorter.call(this,t,e,i,s,r.getComponent(),o,n)},Sort.prototype.sorters={number:function(t,e,r,o,n,i,s){var a=s.alignEmptyValues,l=s.decimalSeparator||".",u=s.thousandSeparator||",",c=0;if(t=parseFloat(String(t).split(u).join("").split(l).join(".")),e=parseFloat(String(e).split(u).join("").split(l).join(".")),isNaN(t))c=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;c=1}return("top"===a&&"desc"===i||"bottom"===a&&"asc"===i)&&(c*=-1),c},string:function(t,e,r,o,n,i,s){var a,l=s.alignEmptyValues,u=0;if(t){if(e){switch(_typeof(s.locale)){case"boolean":s.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=s.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}u=1}else u=e?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},date:function(t,e,r,o,n,i,s){return s.format||(s.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,r,o,n,i,s)},time:function(t,e,r,o,n,i,s){return s.format||(s.format="HH:mm"),this.sorters.datetime.call(this,t,e,r,o,n,i,s)},datetime:function(t,e,r,o,n,i,s){var a=s.format||"DD/MM/YYYY HH:mm:ss",l=s.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;u=1}else u=e.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,r,o,n,i,s){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,r,o,n,i,s){function a(t){switch(c){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,u=0,c=s.type||"length",d=s.alignEmptyValues,m=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,u=e?a(e):0,l-u;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===i||"bottom"===d&&"asc"===i)&&(m*=-1),m},exists:function(t,e,r,o,n,i,s){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,r,o,n,i,s){var a,l,u,c,d,m=0,f=/(\d+)|(\D+)/g,p=/\d/,h=s.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(f),l=l.match(f),d=a.length>l.length?l.length:a.length;m<d;)if(u=a[m],c=l[m++],u!==c)return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===h&&"desc"===i||"bottom"===h&&"asc"===i)&&(g*=-1),g}},Tabulator.prototype.registerModule("sort",Sort);
\ No newline at end of file
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 var Validate = function Validate(table) {
        this.table = table;
 
 var Validate = function Validate(table) {
        this.table = table;
@@ -137,7 +137,7 @@ Validate.prototype.clearValidation = function (cell) {
 
        if (cell.modules.validate && cell.modules.validate.invalid) {
 
 
        if (cell.modules.validate && cell.modules.validate.invalid) {
 
-               cell.getElement().classList.remove("tabulator-validation-fail");
+               cell.element.classList.remove("tabulator-validation-fail");
                cell.modules.validate.invalid = false;
 
                invalidIndex = this.invalidCells.indexOf(cell);
                cell.modules.validate.invalid = false;
 
                invalidIndex = this.invalidCells.indexOf(cell);
@@ -1,2 +1,2 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Validate=function(t){this.table=t,this.invalidCells=[]};Validate.prototype.initializeColumn=function(t){var i,n=this,e=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(i=n._extractValidator(t))&&e.push(i)}):(i=this._extractValidator(t.definition.validator))&&e.push(i),t.modules.validate=!!e.length&&e)},Validate.prototype._extractValidator=function(t){var i,n,e;switch(void 0===t?"undefined":_typeof(t)){case"string":return e=t.indexOf(":"),e>-1?(i=t.substring(0,e),n=t.substring(e+1)):i=t,this._buildValidator(i,n);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},Validate.prototype._buildValidator=function(t,i){var n="function"==typeof t?t:this.validators[t];return n?{type:"function"==typeof t?"function":t,func:n,params:i}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},Validate.prototype.validate=function(t,i,n){var e=this,a=[],o=this.invalidCells.indexOf(i);return t&&t.forEach(function(t){t.func.call(e,i.getComponent(),n,t.params)||a.push({type:t.type,parameters:t.params})}),a=!a.length||a,i.modules.validate||(i.modules.validate={}),!0===a?(i.modules.validate.invalid=!1,i.getElement().classList.remove("tabulator-validation-fail"),o>-1&&this.invalidCells.splice(o,1)):(i.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&i.getElement().classList.add("tabulator-validation-fail"),-1==o&&this.invalidCells.push(i)),a},Validate.prototype.getInvalidCells=function(){var t=[];return this.invalidCells.forEach(function(i){t.push(i.getComponent())}),t},Validate.prototype.clearValidation=function(t){var i;t.modules.validate&&t.modules.validate.invalid&&(t.getElement().classList.remove("tabulator-validation-fail"),t.modules.validate.invalid=!1,(i=this.invalidCells.indexOf(t))>-1&&this.invalidCells.splice(i,1))},Validate.prototype.validators={integer:function(t,i,n){return""===i||null===i||void 0===i||"number"==typeof(i=Number(i))&&isFinite(i)&&Math.floor(i)===i},float:function(t,i,n){return""===i||null===i||void 0===i||"number"==typeof(i=Number(i))&&isFinite(i)&&i%1!=0},numeric:function(t,i,n){return""===i||null===i||void 0===i||!isNaN(i)},string:function(t,i,n){return""===i||null===i||void 0===i||isNaN(i)},max:function(t,i,n){return""===i||null===i||void 0===i||parseFloat(i)<=n},min:function(t,i,n){return""===i||null===i||void 0===i||parseFloat(i)>=n},starts:function(t,i,n){return""===i||null===i||void 0===i||String(i).toLowerCase().startsWith(String(n).toLowerCase())},ends:function(t,i,n){return""===i||null===i||void 0===i||String(i).toLowerCase().endsWith(String(n).toLowerCase())},minLength:function(t,i,n){return""===i||null===i||void 0===i||String(i).length>=n},maxLength:function(t,i,n){return""===i||null===i||void 0===i||String(i).length<=n},in:function(t,i,n){return""===i||null===i||void 0===i||("string"==typeof n&&(n=n.split("|")),""===i||n.indexOf(i)>-1)},regex:function(t,i,n){return""===i||null===i||void 0===i||new RegExp(n).test(i)},unique:function(t,i,n){if(""===i||null===i||void 0===i)return!0;var e=!0,a=t.getData(),o=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var n=t.getData();n!==a&&i==o.getFieldValue(n)&&(e=!1)}),e},required:function(t,i,n){return""!==i&&null!==i&&void 0!==i}},Tabulator.prototype.registerModule("validate",Validate);
\ No newline at end of file
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Validate=function(t){this.table=t,this.invalidCells=[]};Validate.prototype.initializeColumn=function(t){var i,n=this,e=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(i=n._extractValidator(t))&&e.push(i)}):(i=this._extractValidator(t.definition.validator))&&e.push(i),t.modules.validate=!!e.length&&e)},Validate.prototype._extractValidator=function(t){var i,n,e;switch(void 0===t?"undefined":_typeof(t)){case"string":return e=t.indexOf(":"),e>-1?(i=t.substring(0,e),n=t.substring(e+1)):i=t,this._buildValidator(i,n);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},Validate.prototype._buildValidator=function(t,i){var n="function"==typeof t?t:this.validators[t];return n?{type:"function"==typeof t?"function":t,func:n,params:i}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},Validate.prototype.validate=function(t,i,n){var e=this,a=[],o=this.invalidCells.indexOf(i);return t&&t.forEach(function(t){t.func.call(e,i.getComponent(),n,t.params)||a.push({type:t.type,parameters:t.params})}),a=!a.length||a,i.modules.validate||(i.modules.validate={}),!0===a?(i.modules.validate.invalid=!1,i.getElement().classList.remove("tabulator-validation-fail"),o>-1&&this.invalidCells.splice(o,1)):(i.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&i.getElement().classList.add("tabulator-validation-fail"),-1==o&&this.invalidCells.push(i)),a},Validate.prototype.getInvalidCells=function(){var t=[];return this.invalidCells.forEach(function(i){t.push(i.getComponent())}),t},Validate.prototype.clearValidation=function(t){var i;t.modules.validate&&t.modules.validate.invalid&&(t.element.classList.remove("tabulator-validation-fail"),t.modules.validate.invalid=!1,(i=this.invalidCells.indexOf(t))>-1&&this.invalidCells.splice(i,1))},Validate.prototype.validators={integer:function(t,i,n){return""===i||null===i||void 0===i||"number"==typeof(i=Number(i))&&isFinite(i)&&Math.floor(i)===i},float:function(t,i,n){return""===i||null===i||void 0===i||"number"==typeof(i=Number(i))&&isFinite(i)&&i%1!=0},numeric:function(t,i,n){return""===i||null===i||void 0===i||!isNaN(i)},string:function(t,i,n){return""===i||null===i||void 0===i||isNaN(i)},max:function(t,i,n){return""===i||null===i||void 0===i||parseFloat(i)<=n},min:function(t,i,n){return""===i||null===i||void 0===i||parseFloat(i)>=n},starts:function(t,i,n){return""===i||null===i||void 0===i||String(i).toLowerCase().startsWith(String(n).toLowerCase())},ends:function(t,i,n){return""===i||null===i||void 0===i||String(i).toLowerCase().endsWith(String(n).toLowerCase())},minLength:function(t,i,n){return""===i||null===i||void 0===i||String(i).length>=n},maxLength:function(t,i,n){return""===i||null===i||void 0===i||String(i).length<=n},in:function(t,i,n){return""===i||null===i||void 0===i||("string"==typeof n&&(n=n.split("|")),""===i||n.indexOf(i)>-1)},regex:function(t,i,n){return""===i||null===i||void 0===i||new RegExp(n).test(i)},unique:function(t,i,n){if(""===i||null===i||void 0===i)return!0;var e=!0,a=t.getData(),o=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var n=t.getData();n!==a&&i==o.getFieldValue(n)&&(e=!1)}),e},required:function(t,i,n){return""!==i&&null!==i&&void 0!==i}},Tabulator.prototype.registerModule("validate",Validate);
\ No newline at end of file
similarity index 90%
rename from website/js/vendor/tabulator/js/tabulator.js
rename to admin/js/vendors/tabulator/js/tabulator.js
index 81f6fef..256e565 100644 (file)
@@ -1,6 +1,6 @@
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
 
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 ;(function (global, factory) {
        if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
 
 ;(function (global, factory) {
        if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
@@ -503,7 +503,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        ColumnManager.prototype.generateColumnsFromRowData = function (data) {
 
                var cols = [],
        ColumnManager.prototype.generateColumnsFromRowData = function (data) {
 
                var cols = [],
-                   definitions = this.table.options.autoColumnsDefinitions,
                    row,
                    sorter;
 
                    row,
                    sorter;
 
@@ -574,52 +573,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                cols.push(col);
                        }
 
                                cols.push(col);
                        }
 
-                       if (definitions) {
-
-                               switch (typeof definitions === 'undefined' ? 'undefined' : _typeof(definitions)) {
-
-                                       case "function":
-
-                                               this.table.options.columns = definitions.call(this.table, cols);
-
-                                               break;
-
-                                       case "object":
-
-                                               if (Array.isArray(definitions)) {
-
-                                                       cols.forEach(function (col) {
-
-                                                               var match = definitions.find(function (def) {
-
-                                                                       return def.field === col.field;
-                                                               });
-
-                                                               if (match) {
-
-                                                                       Object.assign(col, match);
-                                                               }
-                                                       });
-                                               } else {
-
-                                                       cols.forEach(function (col) {
-
-                                                               if (definitions[col.field]) {
-
-                                                                       Object.assign(col, definitions[col.field]);
-                                                               }
-                                                       });
-                                               }
-
-                                               this.table.options.columns = cols;
-
-                                               break;
-
-                               }
-                       } else {
-
-                               this.table.options.columns = cols;
-                       }
+                       this.table.options.columns = cols;
 
                        this.setColumns(this.table.options.columns);
                }
 
                        this.setColumns(this.table.options.columns);
                }
@@ -657,11 +611,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        self.table.modules.responsiveLayout.initialize();
                }
 
                        self.table.modules.responsiveLayout.initialize();
                }
 
-               if (this.table.options.virtualDomHoz) {
-
-                       this.table.vdomHoz.reinitialize(false, true);
-               }
-
                self.redraw(true);
        };
 
                self.redraw(true);
        };
 
@@ -987,11 +936,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.table.modules.responsiveLayout.initialize();
                }
 
                        this.table.modules.responsiveLayout.initialize();
                }
 
-               if (this.table.options.virtualDomHoz) {
-
-                       this.table.vdomHoz.reinitialize(true);
-               }
-
                if (this.table.options.columnMoved) {
 
                        this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
                if (this.table.options.columnMoved) {
 
                        this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
@@ -1004,11 +948,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
        };
 
        ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
-               var _this2 = this;
 
                var fromIndex = columns.indexOf(from),
 
                var fromIndex = columns.indexOf(from),
-                   toIndex,
-                   rows = [];
+                   toIndex;
 
                if (fromIndex > -1) {
 
 
                if (fromIndex > -1) {
 
@@ -1031,17 +973,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (updateRows) {
 
 
                        if (updateRows) {
 
-                               if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
-
-                                       this.table.rowManager.rows.forEach(function (row) {
-
-                                               rows = rows.concat(_this2.table.modules.dataTree.getTreeChildren(row, false, true));
-                                       });
-                               }
-
-                               rows = rows.concat(this.table.rowManager.rows);
-
-                               rows.forEach(function (row) {
+                               this.table.rowManager.rows.forEach(function (row) {
 
                                        if (row.cells.length) {
 
 
                                        if (row.cells.length) {
 
@@ -1055,7 +987,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
        };
 
        ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
-               var _this3 = this;
+               var _this2 = this;
 
                var left = 0,
                    offset = 0,
 
                var left = 0,
                    offset = 0,
@@ -1066,12 +998,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (typeof position === "undefined") {
 
 
                        if (typeof position === "undefined") {
 
-                               position = _this3.table.options.scrollToColumnPosition;
+                               position = _this2.table.options.scrollToColumnPosition;
                        }
 
                        if (typeof ifVisible === "undefined") {
 
                        }
 
                        if (typeof ifVisible === "undefined") {
 
-                               ifVisible = _this3.table.options.scrollToColumnIfVisible;
+                               ifVisible = _this2.table.options.scrollToColumnIfVisible;
                        }
 
                        if (column.visible) {
                        }
 
                        if (column.visible) {
@@ -1085,13 +1017,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        case "center":
 
 
                                        case "center":
 
-                                               adjust = -_this3.element.clientWidth / 2;
+                                               adjust = -_this2.element.clientWidth / 2;
 
                                                break;
 
                                        case "right":
 
 
                                                break;
 
                                        case "right":
 
-                                               adjust = colEl.clientWidth - _this3.headersElement.clientWidth;
+                                               adjust = colEl.clientWidth - _this2.headersElement.clientWidth;
 
                                                break;
 
 
                                                break;
 
@@ -1104,7 +1036,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        offset = colEl.offsetLeft;
 
 
                                        offset = colEl.offsetLeft;
 
-                                       if (offset > 0 && offset + colEl.offsetWidth < _this3.element.clientWidth) {
+                                       if (offset > 0 && offset + colEl.offsetWidth < _this2.element.clientWidth) {
 
                                                return false;
                                        }
 
                                                return false;
                                        }
@@ -1113,13 +1045,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                //calculate scroll position
 
 
                                //calculate scroll position
 
 
-                               left = colEl.offsetLeft + adjust;
+                               left = colEl.offsetLeft + _this2.element.scrollLeft + adjust;
 
 
-                               left = Math.max(Math.min(left, _this3.table.rowManager.element.scrollWidth - _this3.table.rowManager.element.clientWidth), 0);
+                               left = Math.max(Math.min(left, _this2.table.rowManager.element.scrollWidth - _this2.table.rowManager.element.clientWidth), 0);
 
 
-                               _this3.table.rowManager.scrollHorizontal(left);
+                               _this2.table.rowManager.scrollHorizontal(left);
 
 
-                               _this3.scrollHorizontal(left);
+                               _this2.scrollHorizontal(left);
 
                                resolve();
                        } else {
 
                                resolve();
                        } else {
@@ -1200,39 +1132,34 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
        };
 
        ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
-               var _this4 = this;
+               var _this3 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var column = _this4._addColumn(definition, before, nextToColumn);
+                       var column = _this3._addColumn(definition, before, nextToColumn);
 
 
-                       _this4._reIndexColumns();
+                       _this3._reIndexColumns();
 
 
-                       if (_this4.table.options.responsiveLayout && _this4.table.modExists("responsiveLayout", true)) {
+                       if (_this3.table.options.responsiveLayout && _this3.table.modExists("responsiveLayout", true)) {
 
 
-                               _this4.table.modules.responsiveLayout.initialize();
+                               _this3.table.modules.responsiveLayout.initialize();
                        }
 
                        }
 
-                       if (_this4.table.modExists("columnCalcs")) {
+                       if (_this3.table.modExists("columnCalcs")) {
 
 
-                               _this4.table.modules.columnCalcs.recalc(_this4.table.rowManager.activeRows);
+                               _this3.table.modules.columnCalcs.recalc(_this3.table.rowManager.activeRows);
                        }
 
                        }
 
-                       _this4.redraw();
+                       _this3.redraw();
 
 
-                       if (_this4.table.modules.layout.getMode() != "fitColumns") {
+                       if (_this3.table.modules.layout.getMode() != "fitColumns") {
 
                                column.reinitializeWidth();
                        }
 
 
                                column.reinitializeWidth();
                        }
 
-                       _this4._verticalAlignHeaders();
+                       _this3._verticalAlignHeaders();
 
 
-                       _this4.table.rowManager.reinitialize();
-
-                       if (_this4.table.options.virtualDomHoz) {
-
-                               _this4.table.vdomHoz.reinitialize();
-                       }
+                       _this3.table.rowManager.reinitialize();
 
                        resolve(column);
                });
 
                        resolve(column);
                });
@@ -1279,8 +1206,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.table.modules.responsiveLayout.initialize();
                }
 
                        this.table.modules.responsiveLayout.initialize();
                }
 
-               this._verticalAlignHeaders();
-
                this.redraw();
        };
 
                this.redraw();
        };
 
@@ -1542,22 +1467,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        ColumnComponent.prototype.setWidth = function (width) {
 
 
        ColumnComponent.prototype.setWidth = function (width) {
 
-               var result;
-
                if (width === true) {
 
                if (width === true) {
 
-                       result = this._column.reinitializeWidth(true);
+                       return this._column.reinitializeWidth(true);
                } else {
 
                } else {
 
-                       result = this._column.setWidth(width);
-               }
-
-               if (this._column.table.options.virtualDomHoz) {
-
-                       this._column.table.vdomHoz.reinitialize(true);
+                       return this._column.setWidth(width);
                }
                }
-
-               return result;
        };
 
        ColumnComponent.prototype.validate = function () {
        };
 
        ColumnComponent.prototype.validate = function () {
@@ -1585,8 +1501,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.contentElement = false;
 
 
                this.contentElement = false;
 
-               this.titleHolderElement = false;
-
                this.titleElement = false;
 
                this.groupElement = this.createGroupElement(); //column group holder element
                this.titleElement = false;
 
                this.groupElement = this.createGroupElement(); //column group holder element
@@ -1718,13 +1632,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Column.prototype.checkDefinition = function () {
        };
 
        Column.prototype.checkDefinition = function () {
-               var _this5 = this;
+               var _this4 = this;
 
                Object.keys(this.definition).forEach(function (key) {
 
 
                Object.keys(this.definition).forEach(function (key) {
 
-                       if (_this5.defaultOptionList.indexOf(key) === -1) {
+                       if (_this4.defaultOptionList.indexOf(key) === -1) {
 
 
-                               console.warn("Invalid column definition option in '" + (_this5.field || _this5.definition.title) + "' column:", key);
+                               console.warn("Invalid column definition option in '" + (_this4.field || _this4.definition.title) + "' column:", key);
                        }
                });
        };
                        }
                });
        };
@@ -2115,66 +2029,66 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //build header element for header
 
        Column.prototype._buildColumnHeader = function () {
        //build header element for header
 
        Column.prototype._buildColumnHeader = function () {
-               var _this6 = this;
 
 
-               var def = this.definition,
-                   table = this.table,
+               var self = this,
+                   def = self.definition,
+                   table = self.table,
                    sortable;
 
                //set column sorter
 
                if (table.modExists("sort")) {
 
                    sortable;
 
                //set column sorter
 
                if (table.modExists("sort")) {
 
-                       table.modules.sort.initializeColumn(this, this.titleHolderElement);
+                       table.modules.sort.initializeColumn(self, self.contentElement);
                }
 
                //set column header context menu
 
                }
 
                //set column header context menu
 
-               if ((def.headerContextMenu || def.headerClickMenu || def.headerMenu) && table.modExists("menu")) {
+               if ((def.headerContextMenu || def.headerMenu) && table.modExists("menu")) {
 
 
-                       table.modules.menu.initializeColumnHeader(this);
+                       table.modules.menu.initializeColumnHeader(self);
                }
 
                //set column formatter
 
                if (table.modExists("format")) {
 
                }
 
                //set column formatter
 
                if (table.modExists("format")) {
 
-                       table.modules.format.initializeColumn(this);
+                       table.modules.format.initializeColumn(self);
                }
 
                //set column editor
 
                if (typeof def.editor != "undefined" && table.modExists("edit")) {
 
                }
 
                //set column editor
 
                if (typeof def.editor != "undefined" && table.modExists("edit")) {
 
-                       table.modules.edit.initializeColumn(this);
+                       table.modules.edit.initializeColumn(self);
                }
 
                //set colum validator
 
                if (typeof def.validator != "undefined" && table.modExists("validate")) {
 
                }
 
                //set colum validator
 
                if (typeof def.validator != "undefined" && table.modExists("validate")) {
 
-                       table.modules.validate.initializeColumn(this);
+                       table.modules.validate.initializeColumn(self);
                }
 
                //set column mutator
 
                if (table.modExists("mutator")) {
 
                }
 
                //set column mutator
 
                if (table.modExists("mutator")) {
 
-                       table.modules.mutator.initializeColumn(this);
+                       table.modules.mutator.initializeColumn(self);
                }
 
                //set column accessor
 
                if (table.modExists("accessor")) {
 
                }
 
                //set column accessor
 
                if (table.modExists("accessor")) {
 
-                       table.modules.accessor.initializeColumn(this);
+                       table.modules.accessor.initializeColumn(self);
                }
 
                //set respoviveLayout
 
                if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
 
                }
 
                //set respoviveLayout
 
                if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
 
-                       table.modules.responsiveLayout.initializeColumn(this);
+                       table.modules.responsiveLayout.initializeColumn(self);
                }
 
                //set column visibility
                }
 
                //set column visibility
@@ -2183,10 +2097,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (def.visible) {
 
 
                        if (def.visible) {
 
-                               this.show(true);
+                               self.show(true);
                        } else {
 
                        } else {
 
-                               this.hide(true);
+                               self.hide(true);
                        }
                }
 
                        }
                }
 
@@ -2198,7 +2112,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        classeNames.forEach(function (className) {
 
 
                        classeNames.forEach(function (className) {
 
-                               _this6.element.classList.add(className);
+                               self.element.classList.add(className);
                        });
                }
 
                        });
                }
 
@@ -2209,21 +2123,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                //set min width if present
 
 
                //set min width if present
 
-               this.setMinWidth(typeof def.minWidth == "undefined" ? this.table.options.columnMinWidth : parseInt(def.minWidth));
+               self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
 
 
-               this.reinitializeWidth();
+               self.reinitializeWidth();
 
                //set tooltip if present
 
 
                //set tooltip if present
 
-               this.tooltip = this.definition.tooltip || this.definition.tooltip === false ? this.definition.tooltip : this.table.options.tooltips;
+               self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
 
                //set orizontal text alignment
 
 
                //set orizontal text alignment
 
-               this.hozAlign = typeof this.definition.hozAlign == "undefined" ? this.table.options.cellHozAlign : this.definition.hozAlign;
+               self.hozAlign = typeof self.definition.hozAlign == "undefined" ? self.table.options.cellHozAlign : self.definition.hozAlign;
 
 
-               this.vertAlign = typeof this.definition.vertAlign == "undefined" ? this.table.options.cellVertAlign : this.definition.vertAlign;
-
-               this.titleElement.style.textAlign = this.definition.headerHozAlign || this.table.options.headerHozAlign;
+               self.vertAlign = typeof self.definition.vertAlign == "undefined" ? self.table.options.cellVertAlign : self.definition.vertAlign;
        };
 
        Column.prototype._buildColumnHeaderContent = function () {
        };
 
        Column.prototype._buildColumnHeaderContent = function () {
@@ -2235,15 +2147,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                contentElement.classList.add("tabulator-col-content");
 
 
                contentElement.classList.add("tabulator-col-content");
 
-               this.titleHolderElement = document.createElement("div");
-
-               this.titleHolderElement.classList.add("tabulator-col-title-holder");
-
-               contentElement.appendChild(this.titleHolderElement);
-
                this.titleElement = this._buildColumnHeaderTitle();
 
                this.titleElement = this._buildColumnHeaderTitle();
 
-               this.titleHolderElement.appendChild(this.titleElement);
+               contentElement.appendChild(this.titleElement);
 
                return contentElement;
        };
 
                return contentElement;
        };
@@ -2311,7 +2217,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Column.prototype._formatColumnHeaderTitle = function (el, title) {
        };
 
        Column.prototype._formatColumnHeaderTitle = function (el, title) {
-               var _this7 = this;
+               var _this5 = this;
 
                var formatter, contents, params, mockCell, onRendered;
 
 
                var formatter, contents, params, mockCell, onRendered;
 
@@ -2321,7 +2227,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        onRendered = function onRendered(callback) {
 
 
                        onRendered = function onRendered(callback) {
 
-                               _this7.titleFormatterRendered = callback;
+                               _this5.titleFormatterRendered = callback;
                        };
 
                        mockCell = {
                        };
 
                        mockCell = {
@@ -2382,7 +2288,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //build header element for column group
 
        Column.prototype._buildGroupHeader = function () {
        //build header element for column group
 
        Column.prototype._buildGroupHeader = function () {
-               var _this8 = this;
+               var _this6 = this;
 
                this.element.classList.add("tabulator-col-group");
 
 
                this.element.classList.add("tabulator-col-group");
 
@@ -2398,7 +2304,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        classeNames.forEach(function (className) {
 
 
                        classeNames.forEach(function (className) {
 
-                               _this8.element.classList.add(className);
+                               _this6.element.classList.add(className);
                        });
                }
 
                        });
                }
 
@@ -2931,13 +2837,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Column.prototype.delete = function () {
        };
 
        Column.prototype.delete = function () {
-               var _this9 = this;
+               var _this7 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       if (_this9.isGroup) {
+                       if (_this7.isGroup) {
 
 
-                               _this9.columns.forEach(function (column) {
+                               _this7.columns.forEach(function (column) {
 
                                        column.delete();
                                });
 
                                        column.delete();
                                });
@@ -2945,40 +2851,24 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        //cancel edit if column is currently being edited
 
 
                        //cancel edit if column is currently being edited
 
-                       if (_this9.table.modExists("edit")) {
+                       if (_this7.table.modExists("edit")) {
 
 
-                               if (_this9.table.modules.edit.currentCell.column === _this9) {
+                               if (_this7.table.modules.edit.currentCell.column === _this7) {
 
 
-                                       _this9.table.modules.edit.cancelEdit();
+                                       _this7.table.modules.edit.cancelEdit();
                                }
                        }
 
                                }
                        }
 
-                       var cellCount = _this9.cells.length;
+                       var cellCount = _this7.cells.length;
 
                        for (var _i3 = 0; _i3 < cellCount; _i3++) {
 
 
                        for (var _i3 = 0; _i3 < cellCount; _i3++) {
 
-                               _this9.cells[0].delete();
-                       }
-
-                       if (_this9.element.parentNode) {
-
-                               _this9.element.parentNode.removeChild(_this9.element);
+                               _this7.cells[0].delete();
                        }
 
                        }
 
-                       _this9.element = false;
-
-                       _this9.contentElement = false;
-
-                       _this9.titleElement = false;
+                       _this7.element.parentNode.removeChild(_this7.element);
 
 
-                       _this9.groupElement = false;
-
-                       _this9.table.columnManager.deregisterColumn(_this9);
-
-                       if (_this9.table.options.virtualDomHoz) {
-
-                               _this9.table.vdomHoz.reinitialize(true);
-                       }
+                       _this7.table.columnManager.deregisterColumn(_this7);
 
                        resolve();
                });
 
                        resolve();
                });
@@ -3117,26 +3007,26 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Column.prototype.updateDefinition = function (updates) {
        };
 
        Column.prototype.updateDefinition = function (updates) {
-               var _this10 = this;
+               var _this8 = this;
 
                return new Promise(function (resolve, reject) {
 
                        var definition;
 
 
                return new Promise(function (resolve, reject) {
 
                        var definition;
 
-                       if (!_this10.isGroup) {
+                       if (!_this8.isGroup) {
 
 
-                               definition = Object.assign({}, _this10.getDefinition());
+                               definition = Object.assign({}, _this8.getDefinition());
 
                                definition = Object.assign(definition, updates);
 
 
                                definition = Object.assign(definition, updates);
 
-                               _this10.table.columnManager.addColumn(definition, false, _this10).then(function (column) {
+                               _this8.table.columnManager.addColumn(definition, false, _this8).then(function (column) {
 
 
-                                       if (definition.field == _this10.field) {
+                                       if (definition.field == _this8.field) {
 
 
-                                               _this10.field = false; //cleair field name to prevent deletion of duplicate column from arrays
+                                               _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays
                                        }
 
                                        }
 
-                                       _this10.delete().then(function () {
+                                       _this8.delete().then(function () {
 
                                                resolve(column.getComponent());
                                        }).catch(function (err) {
 
                                                resolve(column.getComponent());
                                        }).catch(function (err) {
@@ -3149,9 +3039,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                });
                        } else {
 
                                });
                        } else {
 
-                               console.warn("Column Update Error - The updateDefinition function is only available on columns, not column groups");
+                               console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups");
 
 
-                               reject("Column Update Error - The updateDefinition function is only available on columns, not column groups");
+                               reject("Column Update Error - The updateDefintion function is only available on columns, not column groups");
                        }
                });
        };
                        }
                });
        };
@@ -3166,11 +3056,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
        };
 
                }
        };
 
-       Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "hozAlign", "vertAlign", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "accessorPrint", "accessorPrintParams", "accessorHtmlOutput", "accessorHtmlOutputParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "headerHozAlign", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print", "headerContextMenu", "headerMenu", "contextMenu",
-
-       // "headerClickMenu",
-
-       "clickMenu", "formatterPrint", "formatterPrintParams", "formatterClipboard", "formatterClipboardParams", "formatterHtmlOutput", "formatterHtmlOutputParams", "titlePrint", "titleClipboard", "titleHtmlOutput", "titleDownload"];
+       Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "hozAlign", "vertAlign", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "accessorPrint", "accessorPrintParams", "accessorHtmlOutput", "accessorHtmlOutputParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print", "headerContextMenu", "headerMenu", "contextMenu", "formatterPrint", "formatterPrintParams", "formatterClipboard", "formatterClipboardParams", "formatterHtmlOutput", "formatterHtmlOutputParams", "titlePrint", "titleClipboard", "titleHtmlOutput", "titleDownload"];
 
        //////////////// Event Bindings /////////////////
 
 
        //////////////// Event Bindings /////////////////
 
@@ -3471,7 +3357,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
        };
 
        RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
-               var _this11 = this;
+               var _this9 = this;
 
                var rowIndex = this.getDisplayRows().indexOf(row),
                    rowEl = row.getElement(),
 
                var rowIndex = this.getDisplayRows().indexOf(row),
                    rowEl = row.getElement(),
@@ -3484,29 +3370,29 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                if (typeof position === "undefined") {
 
 
                                if (typeof position === "undefined") {
 
-                                       position = _this11.table.options.scrollToRowPosition;
+                                       position = _this9.table.options.scrollToRowPosition;
                                }
 
                                if (typeof ifVisible === "undefined") {
 
                                }
 
                                if (typeof ifVisible === "undefined") {
 
-                                       ifVisible = _this11.table.options.scrollToRowIfVisible;
+                                       ifVisible = _this9.table.options.scrollToRowIfVisible;
                                }
 
                                if (position === "nearest") {
 
                                }
 
                                if (position === "nearest") {
 
-                                       switch (_this11.renderMode) {
+                                       switch (_this9.renderMode) {
 
                                                case "classic":
 
                                                        rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
 
 
                                                case "classic":
 
                                                        rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
 
-                                                       position = Math.abs(_this11.element.scrollTop - rowTop) > Math.abs(_this11.element.scrollTop + _this11.element.clientHeight - rowTop) ? "bottom" : "top";
+                                                       position = Math.abs(_this9.element.scrollTop - rowTop) > Math.abs(_this9.element.scrollTop + _this9.element.clientHeight - rowTop) ? "bottom" : "top";
 
                                                        break;
 
                                                case "virtual":
 
 
                                                        break;
 
                                                case "virtual":
 
-                                                       position = Math.abs(_this11.vDomTop - rowIndex) > Math.abs(_this11.vDomBottom - rowIndex) ? "bottom" : "top";
+                                                       position = Math.abs(_this9.vDomTop - rowIndex) > Math.abs(_this9.vDomBottom - rowIndex) ? "bottom" : "top";
 
                                                        break;
 
 
                                                        break;
 
@@ -3519,9 +3405,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        if (Tabulator.prototype.helpers.elVisible(rowEl)) {
 
 
                                        if (Tabulator.prototype.helpers.elVisible(rowEl)) {
 
-                                               offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this11.element).top;
+                                               offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top;
 
 
-                                               if (offset > 0 && offset < _this11.element.clientHeight - rowEl.offsetHeight) {
+                                               if (offset > 0 && offset < _this9.element.clientHeight - rowEl.offsetHeight) {
 
                                                        return false;
                                                }
 
                                                        return false;
                                                }
@@ -3530,17 +3416,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                //scroll to row
 
 
                                //scroll to row
 
-                               switch (_this11.renderMode) {
+                               switch (_this9.renderMode) {
 
                                        case "classic":
 
 
                                        case "classic":
 
-                                               _this11.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this11.element).top + _this11.element.scrollTop;
+                                               _this9.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top + _this9.element.scrollTop;
 
                                                break;
 
                                        case "virtual":
 
 
                                                break;
 
                                        case "virtual":
 
-                                               _this11._virtualRenderFill(rowIndex, true);
+                                               _this9._virtualRenderFill(rowIndex, true);
 
                                                break;
 
 
                                                break;
 
@@ -3554,24 +3440,24 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        case "center":
 
 
                                        case "center":
 
-                                               if (_this11.element.scrollHeight - _this11.element.scrollTop == _this11.element.clientHeight) {
+                                               if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
 
 
-                                                       _this11.element.scrollTop = _this11.element.scrollTop + (rowEl.offsetTop - _this11.element.scrollTop) - (_this11.element.scrollHeight - rowEl.offsetTop) / 2;
+                                                       _this9.element.scrollTop = _this9.element.scrollTop + (rowEl.offsetTop - _this9.element.scrollTop) - (_this9.element.scrollHeight - rowEl.offsetTop) / 2;
                                                } else {
 
                                                } else {
 
-                                                       _this11.element.scrollTop = _this11.element.scrollTop - _this11.element.clientHeight / 2;
+                                                       _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight / 2;
                                                }
 
                                                break;
 
                                        case "bottom":
 
                                                }
 
                                                break;
 
                                        case "bottom":
 
-                                               if (_this11.element.scrollHeight - _this11.element.scrollTop == _this11.element.clientHeight) {
+                                               if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
 
 
-                                                       _this11.element.scrollTop = _this11.element.scrollTop - (_this11.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
+                                                       _this9.element.scrollTop = _this9.element.scrollTop - (_this9.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
                                                } else {
 
                                                } else {
 
-                                                       _this11.element.scrollTop = _this11.element.scrollTop - _this11.element.clientHeight + rowEl.offsetHeight;
+                                                       _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight + rowEl.offsetHeight;
                                                }
 
                                                break;
                                                }
 
                                                break;
@@ -3592,34 +3478,34 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
 
        RowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {
 
 
        RowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {
-               var _this12 = this;
+               var _this10 = this;
 
                var self = this;
 
                return new Promise(function (resolve, reject) {
 
 
                var self = this;
 
                return new Promise(function (resolve, reject) {
 
-                       if (renderInPosition && _this12.getDisplayRows().length) {
+                       if (renderInPosition && _this10.getDisplayRows().length) {
 
                                if (self.table.options.pagination) {
 
                                        self._setDataActual(data, true);
                                } else {
 
 
                                if (self.table.options.pagination) {
 
                                        self._setDataActual(data, true);
                                } else {
 
-                                       _this12.reRenderInPosition(function () {
+                                       _this10.reRenderInPosition(function () {
 
                                                self._setDataActual(data);
                                        });
                                }
                        } else {
 
 
                                                self._setDataActual(data);
                                        });
                                }
                        } else {
 
-                               if (_this12.table.options.autoColumns && columnsChanged) {
+                               if (_this10.table.options.autoColumns && columnsChanged) {
 
 
-                                       _this12.table.columnManager.generateColumnsFromRowData(data);
+                                       _this10.table.columnManager.generateColumnsFromRowData(data);
                                }
 
                                }
 
-                               _this12.resetScroll();
+                               _this10.resetScroll();
 
 
-                               _this12._setDataActual(data);
+                               _this10._setDataActual(data);
                        }
 
                        resolve();
                        }
 
                        resolve();
@@ -3664,9 +3550,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                }
                        });
 
                                }
                        });
 
-                       self.refreshActiveData(false, false, renderInPosition);
-
                        self.table.options.dataLoaded.call(this.table, data);
                        self.table.options.dataLoaded.call(this.table, data);
+
+                       self.refreshActiveData(false, false, renderInPosition);
                } else {
 
                        console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
                } else {
 
                        console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
@@ -3686,16 +3572,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
 
                this.rows = [];
                }
 
                this.rows = [];
-
-               this.activeRows = [];
-
-               this.activeRowsCount = 0;
-
-               this.displayRows = [];
-
-               this.displayRowsCount = 0;
-
-               this.adjustTableSize();
        };
 
        RowManager.prototype.deleteRow = function (row, blockRedraw) {
        };
 
        RowManager.prototype.deleteRow = function (row, blockRedraw) {
@@ -3734,10 +3610,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.table.options.rowDeleted.call(this.table, row.getComponent());
 
 
                this.table.options.rowDeleted.call(this.table, row.getComponent());
 
-               if (this.table.options.dataChanged) {
-
-                       this.table.options.dataChanged.call(this.table, this.getData());
-               }
+               this.table.options.dataEdited.call(this.table, this.getData());
 
                if (this.table.options.groupBy && this.table.modExists("groupRows")) {
 
 
                if (this.table.options.groupBy && this.table.modExists("groupRows")) {
 
@@ -3769,7 +3642,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //add multiple rows
 
        RowManager.prototype.addRows = function (data, pos, index) {
        //add multiple rows
 
        RowManager.prototype.addRows = function (data, pos, index) {
-               var _this13 = this;
+               var _this11 = this;
 
                var self = this,
                    length = 0,
 
                var self = this,
                    length = 0,
@@ -3777,7 +3650,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       pos = _this13.findAddRowPos(pos);
+                       pos = _this11.findAddRowPos(pos);
 
                        if (!Array.isArray(data)) {
 
 
                        if (!Array.isArray(data)) {
 
@@ -3798,25 +3671,25 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                rows.push(row);
                        });
 
                                rows.push(row);
                        });
 
-                       if (_this13.table.options.groupBy && _this13.table.modExists("groupRows")) {
+                       if (_this11.table.options.groupBy && _this11.table.modExists("groupRows")) {
 
 
-                               _this13.table.modules.groupRows.updateGroupRows(true);
-                       } else if (_this13.table.options.pagination && _this13.table.modExists("page")) {
+                               _this11.table.modules.groupRows.updateGroupRows(true);
+                       } else if (_this11.table.options.pagination && _this11.table.modExists("page")) {
 
 
-                               _this13.refreshActiveData(false, false, true);
+                               _this11.refreshActiveData(false, false, true);
                        } else {
 
                        } else {
 
-                               _this13.reRenderInPosition();
+                               _this11.reRenderInPosition();
                        }
 
                        //recalc column calculations if present
 
                        }
 
                        //recalc column calculations if present
 
-                       if (_this13.table.modExists("columnCalcs")) {
+                       if (_this11.table.modExists("columnCalcs")) {
 
 
-                               _this13.table.modules.columnCalcs.recalc(_this13.table.rowManager.activeRows);
+                               _this11.table.modules.columnCalcs.recalc(_this11.table.rowManager.activeRows);
                        }
 
                        }
 
-                       _this13.regenerateRowNumbers();
+                       _this11.regenerateRowNumbers();
 
                        resolve(rows);
                });
 
                        resolve(rows);
                });
@@ -3972,10 +3845,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.table.options.rowAdded.call(this.table, row.getComponent());
 
 
                this.table.options.rowAdded.call(this.table, row.getComponent());
 
-               if (this.table.options.dataChanged) {
-
-                       this.table.options.dataChanged.call(this.table, this.getData());
-               }
+               this.table.options.dataEdited.call(this.table, this.getData());
 
                if (!blockRedraw) {
 
 
                if (!blockRedraw) {
 
@@ -4000,7 +3870,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        RowManager.prototype.moveRowActual = function (from, to, after) {
        };
 
        RowManager.prototype.moveRowActual = function (from, to, after) {
-               var _this14 = this;
+               var _this12 = this;
 
                this._moveRowInArray(this.rows, from, to, after);
 
 
                this._moveRowInArray(this.rows, from, to, after);
 
@@ -4008,7 +3878,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.displayRowIterator(function (rows) {
 
 
                this.displayRowIterator(function (rows) {
 
-                       _this14._moveRowInArray(rows, from, to, after);
+                       _this12._moveRowInArray(rows, from, to, after);
                });
 
                if (this.table.options.groupBy && this.table.modExists("groupRows")) {
                });
 
                if (this.table.options.groupBy && this.table.modExists("groupRows")) {
@@ -4194,7 +4064,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        RowManager.prototype._genRemoteRequest = function () {
        };
 
        RowManager.prototype._genRemoteRequest = function () {
-               var _this15 = this;
+               var _this13 = this;
 
                var table = this.table,
                    options = table.options,
 
                var table = this.table,
                    options = table.options,
@@ -4230,7 +4100,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                table.modules.ajax.sendRequest().then(function (data) {
 
 
                table.modules.ajax.sendRequest().then(function (data) {
 
-                       _this15._setDataActual(data, true);
+                       _this13._setDataActual(data, true);
                }).catch(function (e) {});
        };
 
                }).catch(function (e) {});
        };
 
@@ -4527,11 +4397,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        self.reRenderInPosition();
                                } else {
 
                                        self.reRenderInPosition();
                                } else {
 
-                                       if (stage === "all" && this.table.options.virtualDomHoz) {
-
-                                               this.table.vdomHoz.dataChange();
-                                       }
-
                                        self.renderTable();
 
                                        if (table.options.layoutColumnsOnNewData) {
                                        self.renderTable();
 
                                        if (table.options.layoutColumnsOnNewData) {
@@ -4551,13 +4416,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //regenerate row numbers for row number formatter if in use
 
        RowManager.prototype.regenerateRowNumbers = function () {
        //regenerate row numbers for row number formatter if in use
 
        RowManager.prototype.regenerateRowNumbers = function () {
-               var _this16 = this;
+               var _this14 = this;
 
                if (this.rowNumColumn) {
 
                        this.activeRows.forEach(function (row) {
 
 
                if (this.rowNumColumn) {
 
                        this.activeRows.forEach(function (row) {
 
-                               var cell = row.getCell(_this16.rowNumColumn);
+                               var cell = row.getCell(_this14.rowNumColumn);
 
                                if (cell) {
 
 
                                if (cell) {
 
@@ -4733,12 +4598,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                break;
 
 
                                break;
 
-                       case "selected":
-
-                               rows = this.table.modules.selectRow.selectedRows;
-
-                               break;
-
                        default:
 
                                rows = this.rows;
                        default:
 
                                rows = this.rows;
@@ -4950,9 +4809,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
 
 
                        this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
 
-                       // this.tableElement.style.minHeight = "1px";
+                       this.tableElement.style.minHeight = "1px";
 
 
-                       // this.tableElement.style.visibility = "hidden";
+                       this.tableElement.style.visibility = "hidden";
                }
        };
 
                }
        };
 
@@ -5073,27 +4932,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                element.appendChild(row.getElement());
 
 
                                element.appendChild(row.getElement());
 
-                               row.initialize();
-
-                               if (!row.heightInitialized) {
-
-                                       row.normalizeHeight(true);
-                               }
-
-                               // if(!row.initialized){
-
-                               //      row.initialize(true);
-
-                               // }else{
+                               if (!row.initialized) {
 
 
-                               //      if(!row.heightInitialized){
-
-                               //              row.normalizeHeight(true);
-
-                               //      }
+                                       row.initialize(true);
+                               } else {
 
 
-                               // }
+                                       if (!row.heightInitialized) {
 
 
+                                               row.normalizeHeight(true);
+                                       }
+                               }
 
                                rowHeight = row.getHeight();
 
 
                                rowHeight = row.getHeight();
 
@@ -5476,7 +5324,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                if (this.renderMode === "virtual") {
 
 
                if (this.renderMode === "virtual") {
 
-                       var otherHeight = Math.floor(this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0));
+                       var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
 
                        if (this.fixedHeight) {
 
 
                        if (this.fixedHeight) {
 
@@ -5489,7 +5337,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                this.element.style.height = "";
 
 
                                this.element.style.height = "";
 
-                               this.element.style.height = Math.floor(this.table.element.clientHeight) - otherHeight + "px";
+                               this.element.style.height = this.table.element.clientHeight - otherHeight + "px";
 
                                this.element.scrollTop = this.scrollTop;
                        }
 
                                this.element.scrollTop = this.scrollTop;
                        }
@@ -5500,7 +5348,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        //check if the table has changed size when dealing with variable height tables
 
 
                        //check if the table has changed size when dealing with variable height tables
 
-                       if (!this.fixedHeight && Math.floor(initialHeight) != Math.floor(this.element.clientHeight)) {
+                       if (!this.fixedHeight && initialHeight != this.element.clientHeight) {
 
                                modExists = this.table.modExists("resizeTable");
 
 
                                modExists = this.table.modExists("resizeTable");
 
@@ -5518,7 +5366,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.rows.forEach(function (row) {
 
 
                this.rows.forEach(function (row) {
 
-                       row.reinitialize(true);
+                       row.reinitialize();
                });
        };
 
                });
        };
 
@@ -5614,747 +5462,162 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
        };
 
                }
        };
 
-       var VDomHoz = function VDomHoz(table) {
-
-               this.table = table;
-
-               this.element = this.table.rowManager.tableElement;
-
-               this.holderEl = this.table.rowManager.element;
+       //public row object
 
 
-               this.leftCol = 0;
+       var RowComponent = function RowComponent(row) {
 
 
-               this.rightCol = 0;
+               this._row = row;
+       };
 
 
-               this.scrollLeft = 0;
+       RowComponent.prototype.getData = function (transform) {
 
 
-               this.vDomScrollPosLeft = 0;
+               return this._row.getData(transform);
+       };
 
 
-               this.vDomScrollPosRight = 0;
+       RowComponent.prototype.getElement = function () {
 
 
-               this.vDomPadLeft = 0;
+               return this._row.getElement();
+       };
 
 
-               this.vDomPadRight = 0;
+       RowComponent.prototype.getCells = function () {
 
 
-               this.fitDataColAvg = 0;
+               var cells = [];
 
 
-               this.window = 200; //pixel margin to make column visible before it is shown on screen
+               this._row.getCells().forEach(function (cell) {
 
 
+                       cells.push(cell.getComponent());
+               });
 
 
-               this.initialized = false;
+               return cells;
+       };
 
 
-               this.columns = [];
+       RowComponent.prototype.getCell = function (column) {
 
 
-               if (this.compatabilityCheck()) {
+               var cell = this._row.getCell(column);
 
 
-                       this.initialize();
-               }
+               return cell ? cell.getComponent() : false;
        };
 
        };
 
-       VDomHoz.prototype.compatabilityCheck = function () {
+       RowComponent.prototype.getIndex = function () {
 
 
-               var options = this.table.options,
-                   frozen = false,
-                   ok = true;
+               return this._row.getData("data")[this._row.table.options.index];
+       };
 
 
-               if (options.layout == "fitDataTable") {
+       RowComponent.prototype.getPosition = function (active) {
 
 
-                       console.warn("Horizontal Vitrual DOM is not compatible with fitDataTable layout mode");
+               return this._row.table.rowManager.getRowPosition(this._row, active);
+       };
 
 
-                       ok = false;
-               }
+       RowComponent.prototype.delete = function () {
 
 
-               if (options.responsiveLayout) {
+               return this._row.delete();
+       };
 
 
-                       console.warn("Horizontal Vitrual DOM is not compatible with responsive columns");
+       RowComponent.prototype.scrollTo = function () {
 
 
-                       ok = false;
-               }
+               return this._row.table.rowManager.scrollToRow(this._row);
+       };
 
 
-               if (this.table.rtl) {
+       RowComponent.prototype.pageTo = function () {
 
 
-                       console.warn("Horizontal Vitrual DOM is not currently compatible with RTL text direction");
+               if (this._row.table.modExists("page", true)) {
 
 
-                       ok = false;
+                       return this._row.table.modules.page.setPageToRow(this._row);
                }
                }
+       };
 
 
-               // if(options.rowFormatter){
+       RowComponent.prototype.move = function (to, after) {
 
 
-               //      console.warn("Horizontal Vitrual DOM is not compatible with row formatters");
+               this._row.moveToRow(to, after);
+       };
 
 
-               //      ok = false;
+       RowComponent.prototype.update = function (data) {
 
 
-               // }
+               return this._row.updateData(data);
+       };
 
 
+       RowComponent.prototype.normalizeHeight = function () {
 
 
-               if (options.columns) {
+               this._row.normalizeHeight(true);
+       };
 
 
-                       frozen = options.columns.find(function (col) {
+       RowComponent.prototype.select = function () {
 
 
-                               return col.frozen;
-                       });
+               this._row.table.modules.selectRow.selectRows(this._row);
+       };
 
 
-                       if (frozen) {
+       RowComponent.prototype.deselect = function () {
 
 
-                               console.warn("Horizontal Vitrual DOM is not compatible with frozen columns");
+               this._row.table.modules.selectRow.deselectRows(this._row);
+       };
 
 
-                               ok = false;
-                       }
-               }
+       RowComponent.prototype.toggleSelect = function () {
 
 
-               if (!ok) {
+               this._row.table.modules.selectRow.toggleRow(this._row);
+       };
 
 
-                       options.virtualDomHoz = false;
-               }
+       RowComponent.prototype.isSelected = function () {
 
 
-               return ok;
+               return this._row.table.modules.selectRow.isRowSelected(this._row);
        };
 
        };
 
-       VDomHoz.prototype.initialize = function () {
-               var _this17 = this;
+       RowComponent.prototype._getSelf = function () {
 
 
-               this.holderEl.addEventListener("scroll", function () {
+               return this._row;
+       };
 
 
-                       var left = _this17.holderEl.scrollLeft;
+       RowComponent.prototype.validate = function () {
 
 
-                       if (_this17.scrollLeft != left) {
+               return this._row.validate();
+       };
 
 
-                               _this17.scrollLeft = left;
+       RowComponent.prototype.freeze = function () {
 
 
-                               _this17.scroll(left - (_this17.vDomScrollPosLeft + _this17.window));
-                       }
-               });
+               if (this._row.table.modExists("frozenRows", true)) {
+
+                       this._row.table.modules.frozenRows.freezeRow(this._row);
+               }
        };
 
        };
 
-       VDomHoz.prototype.deinitialize = function () {
+       RowComponent.prototype.unfreeze = function () {
 
 
-               this.initialized = false;
+               if (this._row.table.modExists("frozenRows", true)) {
+
+                       this._row.table.modules.frozenRows.unfreezeRow(this._row);
+               }
        };
 
        };
 
-       VDomHoz.prototype.clear = function () {
+       RowComponent.prototype.isFrozen = function () {
 
 
-               this.columns = [];
+               if (this._row.table.modExists("frozenRows", true)) {
 
 
-               this.leftCol = -1;
+                       var index = this._row.table.modules.frozenRows.rows.indexOf(this._row);
 
 
-               this.rightCol = 0;
+                       return index > -1;
+               }
 
 
-               this.vDomScrollPosLeft = 0;
+               return false;
+       };
 
 
-               this.vDomScrollPosRight = 0;
+       RowComponent.prototype.treeCollapse = function () {
 
 
-               this.vDomPadLeft = 0;
+               if (this._row.table.modExists("dataTree", true)) {
 
 
-               this.vDomPadRight = 0;
+                       this._row.table.modules.dataTree.collapseRow(this._row);
+               }
        };
 
        };
 
-       VDomHoz.prototype.dataChange = function () {
+       RowComponent.prototype.treeExpand = function () {
 
 
-               var change = false,
-                   collsWidth = 0,
-                   colEnd = 0,
-                   group,
-                   row,
-                   rowEl;
+               if (this._row.table.modExists("dataTree", true)) {
 
 
-               if (this.table.options.layout === "fitData") {
+                       this._row.table.modules.dataTree.expandRow(this._row);
+               }
+       };
 
 
-                       this.table.columnManager.columnsByIndex.forEach(function (column) {
+       RowComponent.prototype.treeToggle = function () {
 
 
-                               if (!column.definition.width && column.visible) {
-
-                                       change = true;
-                               }
-                       });
-
-                       if (change) {
-
-                               if (change && this.table.rowManager.getDisplayRows().length) {
-
-                                       // this.table.vdomHoz.deinitialize();
-
-
-                                       this.vDomScrollPosRight = this.scrollLeft + this.holderEl.clientWidth + this.window;
-
-                                       if (this.table.options.groupBy) {
-
-                                               group = this.table.modules.groupRows.getGroups(false)[0];
-
-                                               row = group.getRows(false)[0];
-                                       } else {
-
-                                               row = this.table.rowManager.getDisplayRows()[0];
-                                       }
-
-                                       if (row) {
-
-                                               rowEl = row.getElement();
-
-                                               row.generateCells();
-
-                                               this.element.appendChild(rowEl);
-
-                                               for (var colEnd = 0; colEnd < row.cells.length; colEnd++) {
-
-                                                       var cell = row.cells[colEnd];
-
-                                                       rowEl.appendChild(cell.getElement());
-
-                                                       cell.column.reinitializeWidth();
-
-                                                       collsWidth += cell.column.getWidth();
-
-                                                       if (collsWidth > this.vDomScrollPosRight) {
-
-                                                               break;
-                                                       }
-                                               }
-
-                                               rowEl.parentNode.removeChild(rowEl);
-
-                                               this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));
-
-                                               for (colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++) {
-
-                                                       this.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);
-                                               }
-
-                                               this.reinitialize(false, true);
-                                       }
-                               }
-                       }
-               } else {
-
-                       if (this.table.options.layout === "fitColumns") {
-
-                               this.table.modules.layout.layout();
-
-                               this.table.vdomHoz.reinitialize(false, true);
-                       }
-               }
-       };
-
-       VDomHoz.prototype.fitDataLayoutOverride = function () {
-
-               for (var _i5 = this.leftCol; _i5 <= this.rightCol; _i5++) {
-
-                       this.columns[_i5].reinitializeWidth();
-               }
-       };
-
-       VDomHoz.prototype.reinitialize = function (update, blockRedraw) {
-               var _this18 = this;
-
-               var old = {
-
-                       cols: this.columns,
-
-                       leftCol: this.leftCol,
-
-                       rightCol: this.rightCol
-
-               };
-
-               if (update && !this.initialized) {
-
-                       return;
-               }
-
-               this.clear();
-
-               this.scrollLeft = this.holderEl.scrollLeft;
-
-               this.vDomScrollPosLeft = this.scrollLeft - this.window;
-
-               this.vDomScrollPosRight = this.scrollLeft + this.holderEl.clientWidth + this.window;
-
-               var colPos = 0;
-
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-
-                       var config = {};
-
-                       if (column.visible) {
-
-                               var width = column.getWidth();
-
-                               config.leftPos = colPos;
-
-                               config.rightPos = colPos + width;
-
-                               if (colPos + width > _this18.vDomScrollPosLeft && colPos < _this18.vDomScrollPosRight) {
-
-                                       //column is visible
-
-
-                                       if (_this18.leftCol == -1) {
-
-                                               _this18.leftCol = _this18.columns.length;
-
-                                               _this18.vDomPadLeft = colPos;
-                                       }
-
-                                       _this18.rightCol = _this18.columns.length;
-                               } else {
-
-                                       // column is hidden
-
-                                       if (_this18.leftCol !== -1) {
-
-                                               _this18.vDomPadRight += width;
-                                       }
-                               }
-
-                               _this18.columns.push(column);
-
-                               column.modules.vdomHoz = config;
-
-                               colPos += width;
-                       }
-               });
-
-               this.element.style.paddingLeft = this.vDomPadLeft + "px";
-
-               this.element.style.paddingRight = this.vDomPadRight + "px";
-
-               this.initialized = true;
-
-               if (!blockRedraw) {
-
-                       if (!update || this.reinitChanged(old)) {
-
-                               this.renitializeRows();
-                       }
-               }
-
-               this.holderEl.scrollLeft = this.scrollLeft;
-       };
-
-       VDomHoz.prototype.reinitChanged = function (old) {
-               var _this19 = this;
-
-               var match = true;
-
-               if (old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol) {
-
-                       return true;
-               }
-
-               old.cols.forEach(function (col, i) {
-
-                       if (col !== _this19.columns[i]) {
-
-                               match = false;
-                       }
-               });
-
-               return !match;
-       };
-
-       VDomHoz.prototype.renitializeRows = function () {
-               var _this20 = this;
-
-               var rows = this.table.rowManager.getVisibleRows();
-
-               rows.forEach(function (row) {
-
-                       _this20.reinitializeRow(row, true);
-               });
-       };
-
-       VDomHoz.prototype.scroll = function (diff) {
-
-               this.vDomScrollPosLeft += diff;
-
-               this.vDomScrollPosRight += diff;
-
-               if (diff > this.holderEl.clientWidth * .8) {
-
-                       this.reinitialize();
-               } else {
-
-                       if (diff > 0) {
-
-                               //scroll right
-
-                               this.addColRight();
-
-                               this.removeColLeft();
-                       } else {
-
-                               //scroll left
-
-                               this.addColLeft();
-
-                               this.removeColRight();
-                       }
-               }
-       };
-
-       VDomHoz.prototype.colPositionAdjust = function (start, end, diff) {
-
-               for (var _i6 = start; _i6 < end; _i6++) {
-
-                       var column = this.columns[_i6];
-
-                       column.modules.vdomHoz.leftPos -= diff;
-
-                       column.modules.vdomHoz.rightPos -= diff;
-               }
-       };
-
-       VDomHoz.prototype.addColRight = function () {
-
-               var column = this.columns[this.rightCol + 1],
-                   rows,
-                   oldWidth,
-                   widthDiff;
-
-               if (column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight) {
-
-                       rows = this.table.rowManager.getVisibleRows();
-
-                       rows.forEach(function (row) {
-
-                               if (row.type !== "group") {
-
-                                       var cell = row.getCell(column);
-
-                                       row.getElement().appendChild(cell.getElement());
-
-                                       cell.cellRendered();
-                               }
-                       });
-
-                       if (this.fitDataColAvg) {
-
-                               oldWidth = column.getWidth();
-
-                               if (oldWidth === this.fitDataColAvg) {
-
-                                       column.reinitializeWidth();
-
-                                       widthDiff = oldWidth - column.getWidth();
-
-                                       if (widthDiff) {
-
-                                               column.modules.vdomHoz.rightPos -= widthDiff;
-
-                                               this.colPositionAdjust(this.rightCol + 1, this.columns.length, widthDiff);
-                                       }
-                               }
-                       }
-
-                       this.rightCol++;
-
-                       if (this.rightCol >= this.columns.length - 1) {
-
-                               this.vDomPadRight = 0;
-                       } else {
-
-                               this.vDomPadRight -= column.getWidth();
-                       }
-
-                       this.element.style.paddingRight = this.vDomPadRight + "px";
-
-                       this.addColRight();
-               }
-       };
-
-       VDomHoz.prototype.addColLeft = function () {
-
-               var column = this.columns[this.leftCol - 1],
-                   rows;
-
-               if (column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft) {
-
-                       var rows = this.table.rowManager.getVisibleRows();
-
-                       rows.forEach(function (row) {
-
-                               if (row.type !== "group") {
-
-                                       var cell = row.getCell(column);
-
-                                       row.getElement().prepend(cell.getElement());
-
-                                       cell.cellRendered();
-                               }
-                       });
-
-                       if (!this.leftCol) {
-
-                               this.vDomPadLeft = 0;
-                       } else {
-
-                               this.vDomPadLeft -= column.getWidth();
-                       }
-
-                       this.element.style.paddingLeft = this.vDomPadLeft + "px";
-
-                       this.leftCol--;
-
-                       this.addColLeft();
-               }
-       };
-
-       VDomHoz.prototype.removeColRight = function (column) {
-
-               var column = this.columns[this.rightCol],
-                   rows;
-
-               if (column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight) {
-
-                       rows = this.table.rowManager.getVisibleRows();
-
-                       column.modules.vdomHoz.visible = false;
-
-                       rows.forEach(function (row) {
-
-                               if (row.type !== "group") {
-
-                                       var cell = row.getCell(column);
-
-                                       row.getElement().removeChild(cell.getElement());
-                               }
-                       });
-
-                       this.vDomPadRight += column.getWidth();
-
-                       this.element.style.paddingRight = this.vDomPadRight + "px";
-
-                       this.rightCol--;
-
-                       this.removeColRight();
-               }
-       };
-
-       VDomHoz.prototype.removeColLeft = function () {
-
-               var column = this.columns[this.leftCol],
-                   rows;
-
-               if (column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft) {
-
-                       rows = this.table.rowManager.getVisibleRows();
-
-                       rows.forEach(function (row) {
-
-                               if (row.type !== "group") {
-
-                                       var cell = row.getCell(column);
-
-                                       row.getElement().removeChild(cell.getElement());
-                               }
-                       });
-
-                       this.vDomPadLeft += column.getWidth();
-
-                       this.element.style.paddingLeft = this.vDomPadLeft + "px";
-
-                       this.leftCol++;
-
-                       this.removeColLeft();
-               }
-       };
-
-       VDomHoz.prototype.initializeRow = function (row) {
-
-               if (row.type !== "group") {
-
-                       row.modules.vdomHoz = {
-
-                               leftCol: this.leftCol,
-
-                               rightCol: this.rightCol
-
-                       };
-
-                       for (var _i7 = this.leftCol; _i7 <= this.rightCol; _i7++) {
-
-                               var column = this.columns[_i7];
-
-                               if (column.visible) {
-
-                                       var cell = row.getCell(column);
-
-                                       row.element.appendChild(cell.getElement());
-
-                                       cell.cellRendered();
-                               }
-                       }
-               }
-       };
-
-       VDomHoz.prototype.reinitializeRow = function (row, force) {
-
-               if (row.type !== "group") {
-
-                       if (force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol) {
-
-                               while (row.element.firstChild) {
-                                       row.element.removeChild(row.element.firstChild);
-                               }this.initializeRow(row);
-                       }
-               }
-       };
-
-       //public row object
-
-       var RowComponent = function RowComponent(row) {
-
-               this._row = row;
-       };
-
-       RowComponent.prototype.getData = function (transform) {
-
-               return this._row.getData(transform);
-       };
-
-       RowComponent.prototype.getElement = function () {
-
-               return this._row.getElement();
-       };
-
-       RowComponent.prototype.getCells = function () {
-
-               var cells = [];
-
-               this._row.getCells().forEach(function (cell) {
-
-                       cells.push(cell.getComponent());
-               });
-
-               return cells;
-       };
-
-       RowComponent.prototype.getCell = function (column) {
-
-               var cell = this._row.getCell(column);
-
-               return cell ? cell.getComponent() : false;
-       };
-
-       RowComponent.prototype.getIndex = function () {
-
-               return this._row.getData("data")[this._row.table.options.index];
-       };
-
-       RowComponent.prototype.getPosition = function (active) {
-
-               return this._row.table.rowManager.getRowPosition(this._row, active);
-       };
-
-       RowComponent.prototype.delete = function () {
-
-               return this._row.delete();
-       };
-
-       RowComponent.prototype.scrollTo = function () {
-
-               return this._row.table.rowManager.scrollToRow(this._row);
-       };
-
-       RowComponent.prototype.pageTo = function () {
-
-               if (this._row.table.modExists("page", true)) {
-
-                       return this._row.table.modules.page.setPageToRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.move = function (to, after) {
-
-               this._row.moveToRow(to, after);
-       };
-
-       RowComponent.prototype.update = function (data) {
-
-               return this._row.updateData(data);
-       };
-
-       RowComponent.prototype.normalizeHeight = function () {
-
-               this._row.normalizeHeight(true);
-       };
-
-       RowComponent.prototype.select = function () {
-
-               this._row.table.modules.selectRow.selectRows(this._row);
-       };
-
-       RowComponent.prototype.deselect = function () {
-
-               this._row.table.modules.selectRow.deselectRows(this._row);
-       };
-
-       RowComponent.prototype.toggleSelect = function () {
-
-               this._row.table.modules.selectRow.toggleRow(this._row);
-       };
-
-       RowComponent.prototype.isSelected = function () {
-
-               return this._row.table.modules.selectRow.isRowSelected(this._row);
-       };
-
-       RowComponent.prototype._getSelf = function () {
-
-               return this._row;
-       };
-
-       RowComponent.prototype.validate = function () {
-
-               return this._row.validate();
-       };
-
-       RowComponent.prototype.freeze = function () {
-
-               if (this._row.table.modExists("frozenRows", true)) {
-
-                       this._row.table.modules.frozenRows.freezeRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.unfreeze = function () {
-
-               if (this._row.table.modExists("frozenRows", true)) {
-
-                       this._row.table.modules.frozenRows.unfreezeRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.isFrozen = function () {
-
-               if (this._row.table.modExists("frozenRows", true)) {
-
-                       var index = this._row.table.modules.frozenRows.rows.indexOf(this._row);
-
-                       return index > -1;
-               }
-
-               return false;
-       };
-
-       RowComponent.prototype.treeCollapse = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       this._row.table.modules.dataTree.collapseRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.treeExpand = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       this._row.table.modules.dataTree.expandRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.treeToggle = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
+               if (this._row.table.modExists("dataTree", true)) {
 
                        this._row.table.modules.dataTree.toggleRow(this._row);
                }
 
                        this._row.table.modules.dataTree.toggleRow(this._row);
                }
@@ -6374,7 +5637,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                if (this._row.table.modExists("dataTree", true)) {
 
 
                if (this._row.table.modExists("dataTree", true)) {
 
-                       return this._row.table.modules.dataTree.getTreeChildren(this._row, true);
+                       return this._row.table.modules.dataTree.getTreeChildren(this._row);
                }
 
                return false;
                }
 
                return false;
@@ -6518,7 +5781,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                //set column menu
 
 
                //set column menu
 
-               if ((self.table.options.rowContextMenu || self.table.options.rowClickMenu) && this.table.modExists("menu")) {
+               if (self.table.options.rowContextMenu && this.table.modExists("menu")) {
 
                        self.table.modules.menu.initializeRow(this);
                }
 
                        self.table.modules.menu.initializeRow(this);
                }
@@ -6673,14 +5936,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //functions to setup on first render
 
        Row.prototype.initialize = function (force) {
        //functions to setup on first render
 
        Row.prototype.initialize = function (force) {
-               var _this21 = this;
 
 
-               if (!this.initialized || force) {
+               var self = this;
 
 
-                       this.deleteCells();
+               if (!self.initialized || force) {
 
 
-                       while (this.element.firstChild) {
-                               this.element.removeChild(this.element.firstChild);
+                       self.deleteCells();
+
+                       while (self.element.firstChild) {
+                               self.element.removeChild(self.element.firstChild);
                        } //handle frozen cells
 
                        if (this.table.modExists("frozenColumns")) {
                        } //handle frozen cells
 
                        if (this.table.modExists("frozenColumns")) {
@@ -6690,57 +5954,45 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        this.generateCells();
 
 
                        this.generateCells();
 
-                       if (this.table.options.virtualDomHoz && this.table.vdomHoz.initialized) {
-
-                               this.table.vdomHoz.initializeRow(this);
-                       } else {
-
-                               this.cells.forEach(function (cell) {
+                       self.cells.forEach(function (cell) {
 
 
-                                       _this21.element.appendChild(cell.getElement());
+                               self.element.appendChild(cell.getElement());
 
 
-                                       cell.cellRendered();
-                               });
-                       }
+                               cell.cellRendered();
+                       });
 
                        if (force) {
 
 
                        if (force) {
 
-                               this.normalizeHeight();
+                               self.normalizeHeight();
                        }
 
                        //setup movable rows
 
                        }
 
                        //setup movable rows
 
-                       if (this.table.options.dataTree && this.table.modExists("dataTree")) {
+                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
 
 
-                               this.table.modules.dataTree.layoutRow(this);
+                               self.table.modules.dataTree.layoutRow(this);
                        }
 
                        //setup column colapse container
 
                        }
 
                        //setup column colapse container
 
-                       if (this.table.options.responsiveLayout === "collapse" && this.table.modExists("responsiveLayout")) {
+                       if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
 
 
-                               this.table.modules.responsiveLayout.layoutRow(this);
+                               self.table.modules.responsiveLayout.layoutRow(this);
                        }
 
                        }
 
-                       if (this.table.options.rowFormatter) {
+                       if (self.table.options.rowFormatter) {
 
 
-                               this.table.options.rowFormatter(this.getComponent());
+                               self.table.options.rowFormatter(self.getComponent());
                        }
 
                        //set resizable handles
 
                        }
 
                        //set resizable handles
 
-                       if (this.table.options.resizableRows && this.table.modExists("resizeRows")) {
+                       if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
 
 
-                               this.table.modules.resizeRows.initializeRow(this);
+                               self.table.modules.resizeRows.initializeRow(self);
                        }
 
                        }
 
-                       this.initialized = true;
-               } else {
-
-                       if (this.table.options.virtualDomHoz) {
-
-                               this.table.vdomHoz.reinitializeRow(this);
-                       }
+                       self.initialized = true;
                }
        };
 
                }
        };
 
@@ -6754,7 +6006,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
        };
 
                }
        };
 
-       Row.prototype.reinitialize = function (children) {
+       Row.prototype.reinitialize = function () {
 
                this.initialized = false;
 
 
                this.initialized = false;
 
@@ -6771,14 +6023,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        this.initialize(true);
                }
 
                        this.initialize(true);
                }
-
-               if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
-
-                       this.table.modules.dataTree.getTreeChildren(this, false, true).forEach(function (child) {
-
-                               child.reinitialize(true);
-                       });
-               }
        };
 
        //get heights when doing bulk row style calcs in virtual DOM
        };
 
        //get heights when doing bulk row style calcs in virtual DOM
@@ -6923,7 +6167,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update the rows data
 
        Row.prototype.updateData = function (updatedData) {
        //update the rows data
 
        Row.prototype.updateData = function (updatedData) {
-               var _this22 = this;
+               var _this15 = this;
 
                var visible = Tabulator.prototype.helpers.elVisible(this.element),
                    tempData = {},
 
                var visible = Tabulator.prototype.helpers.elVisible(this.element),
                    tempData = {},
@@ -6936,20 +6180,20 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                updatedData = JSON.parse(updatedData);
                        }
 
                                updatedData = JSON.parse(updatedData);
                        }
 
-                       if (_this22.table.options.reactiveData && _this22.table.modExists("reactiveData", true)) {
+                       if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
 
 
-                               _this22.table.modules.reactiveData.block();
+                               _this15.table.modules.reactiveData.block();
                        }
 
                        //mutate incomming data if needed
 
                        }
 
                        //mutate incomming data if needed
 
-                       if (_this22.table.modExists("mutator")) {
+                       if (_this15.table.modExists("mutator")) {
 
 
-                               tempData = Object.assign(tempData, _this22.data);
+                               tempData = Object.assign(tempData, _this15.data);
 
                                tempData = Object.assign(tempData, updatedData);
 
 
                                tempData = Object.assign(tempData, updatedData);
 
-                               newRowData = _this22.table.modules.mutator.transformRow(tempData, "data", updatedData);
+                               newRowData = _this15.table.modules.mutator.transformRow(tempData, "data", updatedData);
                        } else {
 
                                newRowData = updatedData;
                        } else {
 
                                newRowData = updatedData;
@@ -6959,23 +6203,23 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        for (var attrname in newRowData) {
 
 
                        for (var attrname in newRowData) {
 
-                               _this22.data[attrname] = newRowData[attrname];
+                               _this15.data[attrname] = newRowData[attrname];
                        }
 
                        }
 
-                       if (_this22.table.options.reactiveData && _this22.table.modExists("reactiveData", true)) {
+                       if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
 
 
-                               _this22.table.modules.reactiveData.unblock();
+                               _this15.table.modules.reactiveData.unblock();
                        }
 
                        //update affected cells only
 
                        for (var attrname in updatedData) {
 
                        }
 
                        //update affected cells only
 
                        for (var attrname in updatedData) {
 
-                               var columns = _this22.table.columnManager.getColumnsByFieldRoot(attrname);
+                               var columns = _this15.table.columnManager.getColumnsByFieldRoot(attrname);
 
                                columns.forEach(function (column) {
 
 
                                columns.forEach(function (column) {
 
-                                       var cell = _this22.getCell(column.getField());
+                                       var cell = _this15.getCell(column.getField());
 
                                        if (cell) {
 
 
                                        if (cell) {
 
@@ -6994,51 +6238,38 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                });
                        }
 
                                });
                        }
 
-                       if (_this22.table.options.groupUpdateOnCellEdit && _this22.table.options.groupBy && _this22.table.modExists("groupRows")) {
-
-                               _this22.table.modules.groupRows.reassignRowToGroup(_this22.row);
-                       }
-
                        //Partial reinitialization if visible
 
                        if (visible) {
 
                        //Partial reinitialization if visible
 
                        if (visible) {
 
-                               _this22.normalizeHeight(true);
+                               _this15.normalizeHeight(true);
 
 
-                               if (_this22.table.options.rowFormatter) {
+                               if (_this15.table.options.rowFormatter) {
 
 
-                                       _this22.table.options.rowFormatter(_this22.getComponent());
+                                       _this15.table.options.rowFormatter(_this15.getComponent());
                                }
                        } else {
 
                                }
                        } else {
 
-                               _this22.initialized = false;
+                               _this15.initialized = false;
 
 
-                               _this22.height = 0;
+                               _this15.height = 0;
 
 
-                               _this22.heightStyled = "";
+                               _this15.heightStyled = "";
                        }
 
                        }
 
-                       if (_this22.table.options.dataTree !== false && _this22.table.modExists("dataTree") && _this22.table.modules.dataTree.redrawNeeded(updatedData)) {
+                       if (_this15.table.options.dataTree !== false && _this15.table.modExists("dataTree") && _this15.table.modules.dataTree.redrawNeeded(updatedData)) {
 
 
-                               _this22.table.modules.dataTree.initializeRow(_this22);
+                               _this15.table.modules.dataTree.initializeRow(_this15);
 
 
-                               if (visible) {
+                               _this15.table.modules.dataTree.layoutRow(_this15);
 
 
-                                       _this22.table.modules.dataTree.layoutRow(_this22);
-
-                                       _this22.table.rowManager.refreshActiveData("tree", false, true);
-                               }
+                               _this15.table.rowManager.refreshActiveData("tree", false, true);
                        }
 
                        //this.reinitialize();
 
 
                        }
 
                        //this.reinitialize();
 
 
-                       _this22.table.options.rowUpdated.call(_this22.table, _this22.getComponent());
-
-                       if (_this22.table.options.dataChanged) {
-
-                               _this22.table.options.dataChanged.call(_this22.table, _this22.table.rowManager.getData());
-                       }
+                       _this15.table.options.rowUpdated.call(_this15.table, _this15.getComponent());
 
                        resolve();
                });
 
                        resolve();
                });
@@ -7046,15 +6277,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Row.prototype.getData = function (transform) {
 
 
        Row.prototype.getData = function (transform) {
 
+               var self = this;
+
                if (transform) {
 
                if (transform) {
 
-                       if (this.table.modExists("accessor")) {
+                       if (self.table.modExists("accessor")) {
 
 
-                               return this.table.modules.accessor.transformRow(this, transform);
+                               return self.table.modules.accessor.transformRow(self.data, transform);
                        }
                        }
-               }
+               } else {
 
 
-               return this.data;
+                       return this.data;
+               }
        };
 
        Row.prototype.getCell = function (column) {
        };
 
        Row.prototype.getCell = function (column) {
@@ -7195,19 +6429,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
 
        Row.prototype.delete = function () {
 
 
        Row.prototype.delete = function () {
-               var _this23 = this;
+               var _this16 = this;
 
                return new Promise(function (resolve, reject) {
 
                        var index, rows;
 
 
                return new Promise(function (resolve, reject) {
 
                        var index, rows;
 
-                       if (_this23.table.options.history && _this23.table.modExists("history")) {
+                       if (_this16.table.options.history && _this16.table.modExists("history")) {
 
 
-                               if (_this23.table.options.groupBy && _this23.table.modExists("groupRows")) {
+                               if (_this16.table.options.groupBy && _this16.table.modExists("groupRows")) {
 
 
-                                       rows = _this23.getGroup().rows;
+                                       rows = _this16.getGroup().rows;
 
 
-                                       index = rows.indexOf(_this23);
+                                       index = rows.indexOf(_this16);
 
                                        if (index) {
 
 
                                        if (index) {
 
@@ -7215,18 +6449,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        }
                                } else {
 
                                        }
                                } else {
 
-                                       index = _this23.table.rowManager.getRowIndex(_this23);
+                                       index = _this16.table.rowManager.getRowIndex(_this16);
 
                                        if (index) {
 
 
                                        if (index) {
 
-                                               index = _this23.table.rowManager.rows[index - 1];
+                                               index = _this16.table.rowManager.rows[index - 1];
                                        }
                                }
 
                                        }
                                }
 
-                               _this23.table.modules.history.action("rowDelete", _this23, { data: _this23.getData(), pos: !index, index: index });
+                               _this16.table.modules.history.action("rowDelete", _this16, { data: _this16.getData(), pos: !index, index: index });
                        }
 
                        }
 
-                       _this23.deleteActual();
+                       _this16.deleteActual();
 
                        resolve();
                });
 
                        resolve();
                });
@@ -7236,7 +6470,22 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                var index = this.table.rowManager.getRowIndex(this);
 
 
                var index = this.table.rowManager.getRowIndex(this);
 
-               this.detatchModules();
+               //deselect row if it is selected
+
+               if (this.table.modExists("selectRow")) {
+
+                       this.table.modules.selectRow._deselectRow(this, true);
+               }
+
+               //cancel edit if row is currently being edited
+
+               if (this.table.modExists("edit")) {
+
+                       if (this.table.modules.edit.currentCell.row === this) {
+
+                               this.table.modules.edit.cancelEdit();
+                       }
+               }
 
                // if(this.table.options.dataTree && this.table.modExists("dataTree")){
 
 
                // if(this.table.options.dataTree && this.table.modExists("dataTree")){
 
@@ -7266,8 +6515,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.heightInitialized = false;
 
 
                this.heightInitialized = false;
 
-               this.element = false;
-
                if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
 
                        this.table.modules.dataTree.rowDelete(this);
                if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
 
                        this.table.modules.dataTree.rowDelete(this);
@@ -7280,35 +6527,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        if (this.table.options.groupBy && this.table.modExists("groupRows")) {
 
                                this.table.modules.columnCalcs.recalcRowGroup(this);
                        if (this.table.options.groupBy && this.table.modExists("groupRows")) {
 
                                this.table.modules.columnCalcs.recalcRowGroup(this);
-                       } else {
-
-                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                       }
-               }
-       };
-
-       Row.prototype.detatchModules = function () {
-
-               //deselect row if it is selected
-
-               if (this.table.modExists("selectRow")) {
-
-                       this.table.modules.selectRow._deselectRow(this, true);
-               }
-
-               //cancel edit if row is currently being edited
-
-               if (this.table.modExists("edit")) {
-
-                       if (this.table.modules.edit.currentCell.row === this) {
-
-                               this.table.modules.edit.cancelEdit();
-                       }
-               }
-
-               if (this.table.modExists("frozenRows")) {
+                       } else {
 
 
-                       this.table.modules.frozenRows.detachRow(this);
+                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+                       }
                }
        };
 
                }
        };
 
@@ -7316,7 +6538,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                var cellCount = this.cells.length;
 
 
                var cellCount = this.cells.length;
 
-               for (var _i8 = 0; _i8 < cellCount; _i8++) {
+               for (var _i5 = 0; _i5 < cellCount; _i5++) {
 
                        this.cells[0].delete();
                }
 
                        this.cells[0].delete();
                }
@@ -7324,8 +6546,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Row.prototype.wipe = function () {
 
 
        Row.prototype.wipe = function () {
 
-               this.detatchModules();
-
                this.deleteCells();
 
                while (this.element.firstChild) {
                this.deleteCells();
 
                while (this.element.firstChild) {
@@ -7374,11 +6594,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                return this._cell.getOldValue();
        };
 
                return this._cell.getOldValue();
        };
 
-       CellComponent.prototype.getInitialValue = function () {
-
-               return this._cell.initialValue;
-       };
-
        CellComponent.prototype.getElement = function () {
 
                return this._cell.getElement();
        CellComponent.prototype.getElement = function () {
 
                return this._cell.getElement();
@@ -7419,11 +6634,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this._cell.setValueActual(this._cell.getOldValue());
        };
 
                this._cell.setValueActual(this._cell.getOldValue());
        };
 
-       CellComponent.prototype.restoreInitialValue = function () {
-
-               this._cell.setValueActual(this._cell.initialValue);
-       };
-
        CellComponent.prototype.edit = function (force) {
 
                return this._cell.edit(force);
        CellComponent.prototype.edit = function (force) {
 
                return this._cell.edit(force);
@@ -7459,7 +6669,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        CellComponent.prototype.clearValidation = function () {
 
 
        CellComponent.prototype.clearValidation = function () {
 
-               if (this._cell.table.modExists("validate", true)) {
+               if (self.table.modExists("validate", true)) {
 
                        this._cell.table.modules.validate.clearValidation(this._cell);
                }
 
                        this._cell.table.modules.validate.clearValidation(this._cell);
                }
@@ -7497,8 +6707,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.value = null;
 
 
                this.value = null;
 
-               this.initialValue;
-
                this.oldValue = null;
 
                this.modules = {};
                this.oldValue = null;
 
                this.modules = {};
@@ -7511,9 +6719,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.component = null;
 
 
                this.component = null;
 
-               this.loaded = false; //track if the cell has been added to the DOM yet
-
-
                this.build();
        };
 
                this.build();
        };
 
@@ -7531,8 +6736,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this._configureCell();
 
                this.setValueActual(this.column.getFieldValue(this.row.data));
                this._configureCell();
 
                this.setValueActual(this.column.getFieldValue(this.row.data));
-
-               this.initialValue = this.value;
        };
 
        Cell.prototype.generateElement = function () {
        };
 
        Cell.prototype.generateElement = function () {
@@ -8041,13 +7244,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Cell.prototype.getElement = function () {
 
 
        Cell.prototype.getElement = function () {
 
-               if (!this.loaded) {
-
-                       this.loaded = true;
-
-                       this.layoutElement();
-               }
-
                return this.element;
        };
 
                return this.element;
        };
 
@@ -8083,19 +7279,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                this.column.cellEvents.cellEdited.call(this.table, component);
                        }
 
                                this.column.cellEvents.cellEdited.call(this.table, component);
                        }
 
-                       if (this.table.options.groupUpdateOnCellEdit && this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                               this.table.modules.groupRows.reassignRowToGroup(this.row);
-                       }
-
                        this.cellRendered();
 
                        this.table.options.cellEdited.call(this.table, component);
 
                        this.cellRendered();
 
                        this.table.options.cellEdited.call(this.table, component);
 
-                       if (this.table.options.dataChanged) {
-
-                               this.table.options.dataChanged.call(this.table, this.table.rowManager.getData());
-                       }
+                       this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
                }
        };
 
                }
        };
 
@@ -8161,26 +7349,20 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.table.modules.reactiveData.unblock();
                }
 
                        this.table.modules.reactiveData.unblock();
                }
 
-               if (this.loaded) {
-
-                       this.layoutElement();
-               }
-       };
-
-       Cell.prototype.layoutElement = function () {
-
                this._generateContents();
 
                this._generateTooltip();
 
                //set resizable handles
 
                this._generateContents();
 
                this._generateTooltip();
 
                //set resizable handles
 
-               if (this.table.options.resizableColumns && this.table.modExists("resizeColumns") && this.row.type === "row") {
+               if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
 
                        this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
                }
 
 
                        this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
                }
 
-               if ((this.column.definition.contextMenu || this.column.definition.clickMenu) && this.table.modExists("menu")) {
+               //set column menu
+
+               if (this.column.definition.contextMenu && this.table.modExists("menu")) {
 
                        this.table.modules.menu.initializeCell(this);
                }
 
                        this.table.modules.menu.initializeCell(this);
                }
@@ -8247,7 +7429,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Cell.prototype.show = function () {
 
 
        Cell.prototype.show = function () {
 
-               this.element.style.display = this.column.vertAlign ? "inline-flex" : "";
+               this.element.style.display = "";
        };
 
        Cell.prototype.hide = function () {
        };
 
        Cell.prototype.hide = function () {
@@ -8294,7 +7476,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Cell.prototype.delete = function () {
 
 
        Cell.prototype.delete = function () {
 
-               if (!this.table.rowManager.redrawBlock && this.element.parentNode) {
+               if (!this.table.rowManager.redrawBlock) {
 
                        this.element.parentNode.removeChild(this.element);
                }
 
                        this.element.parentNode.removeChild(this.element);
                }
@@ -8309,11 +7491,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.table.modules.edit.clearEdited(this);
                }
 
                        this.table.modules.edit.clearEdited(this);
                }
 
-               if (this.table.options.history) {
-
-                       this.table.modules.history.clearComponentHistory(this);
-               }
-
                this.element = false;
 
                this.column.deleteCell(this);
                this.element = false;
 
                this.column.deleteCell(this);
@@ -8597,27 +7774,21 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.footerManager = null; //holder Footer Manager
 
 
                this.footerManager = null; //holder Footer Manager
 
-               this.vdomHoz = null; //holder horizontal virtual dom
-
-
                this.browser = ""; //hold current browser type
 
                this.browserSlow = false; //handle reduced functionality for slower browsers
 
                this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
 
                this.browser = ""; //hold current browser type
 
                this.browserSlow = false; //handle reduced functionality for slower browsers
 
                this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
 
-               this.rtl = false; //check if the table is in RTL mode
-
 
                this.modules = {}; //hold all modules bound to this table
 
 
 
                this.modules = {}; //hold all modules bound to this table
 
 
-               if (this.initializeElement(element)) {
+               this.initializeElement(element);
 
 
-                       this.initializeOptions(options || {});
+               this.initializeOptions(options || {});
 
 
-                       this._create();
-               }
+               this._create();
 
                Tabulator.prototype.comms.register(this); //register table for inderdevice communication
        };
 
                Tabulator.prototype.comms.register(this); //register table for inderdevice communication
        };
@@ -8657,9 +7828,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                cellHozAlign: "", //horizontal align columns
 
 
                cellHozAlign: "", //horizontal align columns
 
-               cellVertAlign: "", //vertical align columns
-
-               headerHozAlign: "", //horizontal header alignment
+               cellVertAlign: "", //certical align columns
 
 
                data: [], //default starting data
 
 
                data: [], //default starting data
@@ -8667,7 +7836,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                autoColumns: false, //build columns from data row structure
 
 
                autoColumns: false, //build columns from data row structure
 
-               autoColumnsDefinitions: false,
 
                reactiveData: false, //enable data reactivity
 
 
                reactiveData: false, //enable data reactivity
 
@@ -8699,8 +7867,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                headerSortTristate: false, //set default tristate header sorting
 
 
                headerSortTristate: false, //set default tristate header sorting
 
-               headerSortElement: "<div class='tabulator-arrow'></div>", //header sort element
-
 
                footerElement: false, //hold footer element
 
 
                footerElement: false, //hold footer element
 
@@ -8708,8 +7874,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                index: "id", //filed for row index
 
 
                index: "id", //filed for row index
 
 
-               textDirection: "auto",
-
                keybindings: [], //array for keybindings
 
 
                keybindings: [], //array for keybindings
 
 
@@ -8756,10 +7920,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                dataTree: false, //enable data tree
 
 
                dataTree: false, //enable data tree
 
-               dataTreeFilter: true, //filter child rows
-
-               dataTreeSort: true, //sort child rows
-
                dataTreeElementColumn: false,
 
                dataTreeBranchElement: true, //show data tree branch element
                dataTreeElementColumn: false,
 
                dataTreeBranchElement: true, //show data tree branch element
@@ -8837,8 +7997,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                virtualDomBuffer: 0, // set virtual DOM buffer size
 
 
                virtualDomBuffer: 0, // set virtual DOM buffer size
 
-               virtualDomHoz: false, //enable horizontal DOM virtualization
-
 
                persistentLayout: false, //DEPRICATED - REMOVE in 5.0
 
 
                persistentLayout: false, //DEPRICATED - REMOVE in 5.0
 
@@ -8920,8 +8078,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                groupValues: false,
 
 
                groupValues: false,
 
-               groupUpdateOnCellEdit: false,
-
                groupHeader: false, //header generation function
 
                groupHeaderPrint: null,
                groupHeader: false, //header generation function
 
                groupHeaderPrint: null,
@@ -9022,8 +8178,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                rowContextMenu: false,
 
 
                rowContextMenu: false,
 
-               rowClickMenu: false,
-
                rowAdded: function rowAdded() {},
 
                rowDeleted: function rowDeleted() {},
                rowAdded: function rowAdded() {},
 
                rowDeleted: function rowDeleted() {},
@@ -9094,9 +8248,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                dataLoaded: function dataLoaded() {},
 
 
                dataLoaded: function dataLoaded() {},
 
-               dataEdited: false, //DEPRECATED
-
-               dataChanged: false,
+               dataEdited: function dataEdited() {},
 
                //ajax callbacks
 
 
                //ajax callbacks
 
@@ -9138,8 +8290,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                groupContextMenu: false,
 
 
                groupContextMenu: false,
 
-               groupClickMenu: false,
-
                groupTap: false,
 
                groupDblTap: false,
                groupTap: false,
 
                groupDblTap: false,
@@ -9202,10 +8352,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                if (Array.isArray(this.defaultOptions[key])) {
 
 
                                if (Array.isArray(this.defaultOptions[key])) {
 
-                                       this.options[key] = Object.assign([], this.defaultOptions[key]);
+                                       this.options[key] = [];
                                } else if (_typeof(this.defaultOptions[key]) === "object" && this.defaultOptions[key] !== null) {
 
                                } else if (_typeof(this.defaultOptions[key]) === "object" && this.defaultOptions[key] !== null) {
 
-                                       this.options[key] = Object.assign({}, this.defaultOptions[key]);
+                                       this.options[key] = {};
                                } else {
 
                                        this.options[key] = this.defaultOptions[key];
                                } else {
 
                                        this.options[key] = this.defaultOptions[key];
@@ -9242,38 +8392,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
        };
 
                }
        };
 
-       Tabulator.prototype.rtlCheck = function () {
-
-               var style = window.getComputedStyle(this.element);
-
-               switch (this.options.textDirection) {
-
-                       case "auto":
-
-                               if (style.direction !== "rtl") {
-
-                                       break;
-                               };
-
-                       case "rtl":
-
-                               this.element.classList.add("tabulator-rtl");
-
-                               this.rtl = true;
-
-                               break;
-
-                       case "ltr":
-
-                               this.element.classList.add("tabulator-ltr");
-
-                       default:
-
-                               this.rtl = false;
-
-               }
-       };
-
        //convert depricated functionality to new functions
 
        Tabulator.prototype._mapDepricatedFunctionality = function () {
        //convert depricated functionality to new functions
 
        Tabulator.prototype._mapDepricatedFunctionality = function () {
@@ -9288,13 +8406,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
                }
 
                        }
                }
 
-               if (this.options.dataEdited) {
-
-                       console.warn("DEPRECATION WARNING - dataEdited option has been deprecated, please use the dataChanged option instead");
-
-                       this.options.dataChanged = this.options.dataEdited;
-               }
-
                if (this.options.downloadDataFormatter) {
 
                        console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated");
                if (this.options.downloadDataFormatter) {
 
                        console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated");
@@ -9393,8 +8504,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.bindModules();
 
 
                this.bindModules();
 
-               this.rtlCheck();
-
                if (this.element.tagName === "TABLE") {
 
                        if (this.modExists("htmlTableImport", true)) {
                if (this.element.tagName === "TABLE") {
 
                        if (this.modExists("htmlTableImport", true)) {
@@ -9413,11 +8522,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                this.rowManager.setColumnManager(this.columnManager);
 
 
                this.rowManager.setColumnManager(this.columnManager);
 
-               if (this.options.virtualDomHoz) {
-
-                       this.vdomHoz = new VDomHoz(this);
-               }
-
                this._buildElement();
 
                this._loadInitialData();
                this._buildElement();
 
                this._loadInitialData();
@@ -9438,7 +8542,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //build tabulator element
 
        Tabulator.prototype._buildElement = function () {
        //build tabulator element
 
        Tabulator.prototype._buildElement = function () {
-               var _this24 = this;
+               var _this17 = this;
 
                var element = this.element,
                    mod = this.modules,
 
                var element = this.element,
                    mod = this.modules,
@@ -9494,9 +8598,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                //set localization
 
 
                //set localization
 
-
-               mod.localize.initialize();
-
                if (options.headerFilterPlaceholder !== false) {
 
                        mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
                if (options.headerFilterPlaceholder !== false) {
 
                        mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
@@ -9618,7 +8719,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        options.initialHeaderFilter.forEach(function (item) {
 
 
                        options.initialHeaderFilter.forEach(function (item) {
 
-                               var column = _this24.columnManager.findColumn(item.field);
+                               var column = _this17.columnManager.findColumn(item.field);
 
                                if (column) {
 
 
                                if (column) {
 
@@ -9834,7 +8935,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //local data from local file
 
        Tabulator.prototype.setDataFromLocalFile = function (extensions) {
        //local data from local file
 
        Tabulator.prototype.setDataFromLocalFile = function (extensions) {
-               var _this25 = this;
+               var _this18 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
@@ -9866,7 +8967,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                return;
                                        }
 
                                                return;
                                        }
 
-                                       _this25.setData(data).then(function (data) {
+                                       _this18._setData(data).then(function (data) {
 
                                                resolve(data);
                                        }).catch(function (err) {
 
                                                resolve(data);
                                        }).catch(function (err) {
@@ -10076,7 +9177,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update table data
 
        Tabulator.prototype.updateData = function (data) {
        //update table data
 
        Tabulator.prototype.updateData = function (data) {
-               var _this26 = this;
+               var _this19 = this;
 
                var self = this;
 
 
                var self = this;
 
@@ -10084,9 +9185,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       if (_this26.modExists("ajax")) {
+                       if (_this19.modExists("ajax")) {
 
 
-                               _this26.modules.ajax.blockActiveRequest();
+                               _this19.modules.ajax.blockActiveRequest();
                        }
 
                        if (typeof data === "string") {
                        }
 
                        if (typeof data === "string") {
@@ -10125,13 +9226,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Tabulator.prototype.addData = function (data, pos, index) {
        };
 
        Tabulator.prototype.addData = function (data, pos, index) {
-               var _this27 = this;
+               var _this20 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       if (_this27.modExists("ajax")) {
+                       if (_this20.modExists("ajax")) {
 
 
-                               _this27.modules.ajax.blockActiveRequest();
+                               _this20.modules.ajax.blockActiveRequest();
                        }
 
                        if (typeof data === "string") {
                        }
 
                        if (typeof data === "string") {
@@ -10141,7 +9242,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (data) {
 
 
                        if (data) {
 
-                               _this27.rowManager.addRows(data, pos, index).then(function (rows) {
+                               _this20.rowManager.addRows(data, pos, index).then(function (rows) {
 
                                        var output = [];
 
 
                                        var output = [];
 
@@ -10164,7 +9265,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update table data
 
        Tabulator.prototype.updateOrAddData = function (data) {
        //update table data
 
        Tabulator.prototype.updateOrAddData = function (data) {
-               var _this28 = this;
+               var _this21 = this;
 
                var self = this,
                    rows = [],
 
                var self = this,
                    rows = [],
@@ -10172,9 +9273,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       if (_this28.modExists("ajax")) {
+                       if (_this21.modExists("ajax")) {
 
 
-                               _this28.modules.ajax.blockActiveRequest();
+                               _this21.modules.ajax.blockActiveRequest();
                        }
 
                        if (typeof data === "string") {
                        }
 
                        if (typeof data === "string") {
@@ -10264,11 +9365,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //delete row from table
 
        Tabulator.prototype.deleteRow = function (index) {
        //delete row from table
 
        Tabulator.prototype.deleteRow = function (index) {
-               var _this29 = this;
+               var _this22 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var self = _this29,
+                       var self = _this22,
                            count = 0,
                            successCount = 0,
                            foundRows = [];
                            count = 0,
                            successCount = 0,
                            foundRows = [];
@@ -10297,7 +9398,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        index.forEach(function (item) {
 
 
                        index.forEach(function (item) {
 
-                               var row = _this29.rowManager.findRow(item, true);
+                               var row = _this22.rowManager.findRow(item, true);
 
                                if (row) {
 
 
                                if (row) {
 
@@ -10316,7 +9417,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        foundRows.sort(function (a, b) {
 
 
                        foundRows.sort(function (a, b) {
 
-                               return _this29.rowManager.rows.indexOf(a) > _this29.rowManager.rows.indexOf(b) ? 1 : -1;
+                               return _this22.rowManager.rows.indexOf(a) > _this22.rowManager.rows.indexOf(b) ? 1 : -1;
                        });
 
                        foundRows.forEach(function (row) {
                        });
 
                        foundRows.forEach(function (row) {
@@ -10339,7 +9440,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //add row to table
 
        Tabulator.prototype.addRow = function (data, pos, index) {
        //add row to table
 
        Tabulator.prototype.addRow = function (data, pos, index) {
-               var _this30 = this;
+               var _this23 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
@@ -10348,13 +9449,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                data = JSON.parse(data);
                        }
 
                                data = JSON.parse(data);
                        }
 
-                       _this30.rowManager.addRows(data, pos, index).then(function (rows) {
+                       _this23.rowManager.addRows(data, pos, index).then(function (rows) {
 
                                //recalc column calculations if present
 
 
                                //recalc column calculations if present
 
-                               if (_this30.modExists("columnCalcs")) {
+                               if (_this23.modExists("columnCalcs")) {
 
 
-                                       _this30.modules.columnCalcs.recalc(_this30.rowManager.activeRows);
+                                       _this23.modules.columnCalcs.recalc(_this23.rowManager.activeRows);
                                }
 
                                resolve(rows[0].getComponent());
                                }
 
                                resolve(rows[0].getComponent());
@@ -10365,11 +9466,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update a row if it exitsts otherwise create it
 
        Tabulator.prototype.updateOrAddRow = function (index, data) {
        //update a row if it exitsts otherwise create it
 
        Tabulator.prototype.updateOrAddRow = function (index, data) {
-               var _this31 = this;
+               var _this24 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var row = _this31.rowManager.findRow(index);
+                       var row = _this24.rowManager.findRow(index);
 
                        if (typeof data === "string") {
 
 
                        if (typeof data === "string") {
 
@@ -10382,9 +9483,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                        //recalc column calculations if present
 
 
                                        //recalc column calculations if present
 
-                                       if (_this31.modExists("columnCalcs")) {
+                                       if (_this24.modExists("columnCalcs")) {
 
 
-                                               _this31.modules.columnCalcs.recalc(_this31.rowManager.activeRows);
+                                               _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
                                        }
 
                                        resolve(row.getComponent());
                                        }
 
                                        resolve(row.getComponent());
@@ -10394,13 +9495,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                });
                        } else {
 
                                });
                        } else {
 
-                               row = _this31.rowManager.addRows(data).then(function (rows) {
+                               row = _this24.rowManager.addRows(data).then(function (rows) {
 
                                        //recalc column calculations if present
 
 
                                        //recalc column calculations if present
 
-                                       if (_this31.modExists("columnCalcs")) {
+                                       if (_this24.modExists("columnCalcs")) {
 
 
-                                               _this31.modules.columnCalcs.recalc(_this31.rowManager.activeRows);
+                                               _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
                                        }
 
                                        resolve(rows[0].getComponent());
                                        }
 
                                        resolve(rows[0].getComponent());
@@ -10415,11 +9516,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //update row data
 
        Tabulator.prototype.updateRow = function (index, data) {
        //update row data
 
        Tabulator.prototype.updateRow = function (index, data) {
-               var _this32 = this;
+               var _this25 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var row = _this32.rowManager.findRow(index);
+                       var row = _this25.rowManager.findRow(index);
 
                        if (typeof data === "string") {
 
 
                        if (typeof data === "string") {
 
@@ -10447,15 +9548,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //scroll to row in DOM
 
        Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
        //scroll to row in DOM
 
        Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
-               var _this33 = this;
+               var _this26 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var row = _this33.rowManager.findRow(index);
+                       var row = _this26.rowManager.findRow(index);
 
                        if (row) {
 
 
                        if (row) {
 
-                               _this33.rowManager.scrollToRow(row, position, ifVisible).then(function () {
+                               _this26.rowManager.scrollToRow(row, position, ifVisible).then(function () {
 
                                        resolve();
                                }).catch(function (err) {
 
                                        resolve();
                                }).catch(function (err) {
@@ -10638,13 +9739,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Tabulator.prototype.addColumn = function (definition, before, field) {
        };
 
        Tabulator.prototype.addColumn = function (definition, before, field) {
-               var _this34 = this;
+               var _this27 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var column = _this34.columnManager.findColumn(field);
+                       var column = _this27.columnManager.findColumn(field);
 
 
-                       _this34.columnManager.addColumn(definition, before, column).then(function (column) {
+                       _this27.columnManager.addColumn(definition, before, column).then(function (column) {
 
                                resolve(column.getComponent());
                        }).catch(function (err) {
 
                                resolve(column.getComponent());
                        }).catch(function (err) {
@@ -10655,11 +9756,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Tabulator.prototype.deleteColumn = function (field) {
        };
 
        Tabulator.prototype.deleteColumn = function (field) {
-               var _this35 = this;
+               var _this28 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var column = _this35.columnManager.findColumn(field);
+                       var column = _this28.columnManager.findColumn(field);
 
                        if (column) {
 
 
                        if (column) {
 
@@ -10680,11 +9781,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Tabulator.prototype.updateColumnDefinition = function (field, definition) {
        };
 
        Tabulator.prototype.updateColumnDefinition = function (field, definition) {
-               var _this36 = this;
+               var _this29 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var column = _this36.columnManager.findColumn(field);
+                       var column = _this29.columnManager.findColumn(field);
 
                        if (column) {
 
 
                        if (column) {
 
@@ -10728,15 +9829,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //scroll to column in DOM
 
        Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
        //scroll to column in DOM
 
        Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
-               var _this37 = this;
+               var _this30 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var column = _this37.columnManager.findColumn(field);
+                       var column = _this30.columnManager.findColumn(field);
 
                        if (column) {
 
 
                        if (column) {
 
-                               _this37.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
+                               _this30.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
 
                                        resolve();
                                }).catch(function (err) {
 
                                        resolve();
                                }).catch(function (err) {
@@ -11024,7 +10125,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Tabulator.prototype.clearCellValidation = function (cells) {
        };
 
        Tabulator.prototype.clearCellValidation = function (cells) {
-               var _this38 = this;
+               var _this31 = this;
 
                if (this.modExists("validate", true)) {
 
 
                if (this.modExists("validate", true)) {
 
@@ -11040,7 +10141,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        cells.forEach(function (cell) {
 
 
                        cells.forEach(function (cell) {
 
-                               _this38.modules.validate.clearValidation(cell._getSelf());
+                               _this31.modules.validate.clearValidation(cell._getSelf());
                        });
                }
        };
                        });
                }
        };
@@ -11092,17 +10193,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Tabulator.prototype.setPageToRow = function (row) {
        };
 
        Tabulator.prototype.setPageToRow = function (row) {
-               var _this39 = this;
+               var _this32 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       if (_this39.options.pagination && _this39.modExists("page")) {
+                       if (_this32.options.pagination && _this32.modExists("page")) {
 
 
-                               row = _this39.rowManager.findRow(row);
+                               row = _this32.rowManager.findRow(row);
 
                                if (row) {
 
 
                                if (row) {
 
-                                       _this39.modules.page.setPageToRow(row).then(function () {
+                                       _this32.modules.page.setPageToRow(row).then(function () {
 
                                                resolve();
                                        }).catch(function () {
 
                                                resolve();
                                        }).catch(function () {
@@ -11208,26 +10309,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
        };
 
                }
        };
 
-       Tabulator.prototype.setGroupValues = function (groupValues) {
-
-               if (this.modExists("groupRows", true)) {
-
-                       this.options.groupValues = groupValues;
-
-                       this.modules.groupRows.initialize();
-
-                       this.rowManager.refreshActiveData("display");
-
-                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-
-                               this.modules.persistence.save("group");
-                       }
-               } else {
-
-                       return false;
-               }
-       };
-
        Tabulator.prototype.setGroupStartOpen = function (values) {
 
                if (this.modExists("groupRows", true)) {
        Tabulator.prototype.setGroupStartOpen = function (values) {
 
                if (this.modExists("groupRows", true)) {
@@ -11310,7 +10391,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Tabulator.prototype.clearCellEdited = function (cells) {
        };
 
        Tabulator.prototype.clearCellEdited = function (cells) {
-               var _this40 = this;
+               var _this33 = this;
 
                if (this.modExists("edit", true)) {
 
 
                if (this.modExists("edit", true)) {
 
@@ -11326,7 +10407,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        cells.forEach(function (cell) {
 
 
                        cells.forEach(function (cell) {
 
-                               _this40.modules.edit.clearEdited(cell._getSelf());
+                               _this33.modules.edit.clearEdited(cell._getSelf());
                        });
                }
        };
                        });
                }
        };
@@ -11636,7 +10717,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                deepClone: function deepClone(obj) {
 
 
                deepClone: function deepClone(obj) {
 
-                       var clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);
+                       var clone = Array.isArray(obj) ? [] : {};
 
                        for (var i in obj) {
 
 
                        for (var i in obj) {
 
@@ -11649,6 +10730,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                                clone[i] = this.deepClone(obj[i]);
                                        }
 
                                                clone[i] = this.deepClone(obj[i]);
                                        }
+                               } else {
+
+                                       clone[i] = obj[i];
                                }
                        }
 
                                }
                        }
 
@@ -11788,16 +10872,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                "fitData": function fitData(columns) {
 
 
                "fitData": function fitData(columns) {
 
-                       if (this.table.options.virtualDomHoz) {
-
-                               this.table.vdomHoz.fitDataLayoutOverride();
-                       } else {
-
-                               columns.forEach(function (column) {
+                       columns.forEach(function (column) {
 
 
-                                       column.reinitializeWidth();
-                               });
-                       }
+                               column.reinitializeWidth();
+                       });
 
                        if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
 
 
                        if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
 
@@ -11841,7 +10919,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
 
                "fitDataStretch": function fitDataStretch(columns) {
 
 
                "fitDataStretch": function fitDataStretch(columns) {
-                       var _this41 = this;
+                       var _this34 = this;
 
                        var colsWidth = 0,
                            tableWidth = this.table.rowManager.element.clientWidth,
 
                        var colsWidth = 0,
                            tableWidth = this.table.rowManager.element.clientWidth,
@@ -11855,7 +10933,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        column.reinitializeWidth();
                                }
 
                                        column.reinitializeWidth();
                                }
 
-                               if (_this41.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
+                               if (_this34.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
 
                                        lastCol = column;
                                }
 
                                        lastCol = column;
                                }
@@ -12147,27 +11225,20 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this.lang = false; //current language
 
                this.bindings = {}; //update events to call when locale is changed
                this.lang = false; //current language
 
                this.bindings = {}; //update events to call when locale is changed
-
-               this.langList = {};
-       };
-
-       Localize.prototype.initialize = function () {
-
-               this.langList = Tabulator.prototype.helpers.deepClone(this.langs);
        };
 
        //set header placehoder
 
        Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
 
        };
 
        //set header placehoder
 
        Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
 
-               this.langList.default.headerFilters.default = placeholder;
+               this.langs.default.headerFilters.default = placeholder;
        };
 
        //set header filter placeholder by column
 
        Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
 
        };
 
        //set header filter placeholder by column
 
        Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
 
-               this.langList.default.headerFilters.columns[column] = placeholder;
+               this.langs.default.headerFilters.columns[column] = placeholder;
 
                if (this.lang && !this.lang.headerFilters.columns[column]) {
 
 
                if (this.lang && !this.lang.headerFilters.columns[column]) {
 
@@ -12179,12 +11250,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Localize.prototype.installLang = function (locale, lang) {
 
 
        Localize.prototype.installLang = function (locale, lang) {
 
-               if (this.langList[locale]) {
+               if (this.langs[locale]) {
 
 
-                       this._setLangProp(this.langList[locale], lang);
+                       this._setLangProp(this.langs[locale], lang);
                } else {
 
                } else {
 
-                       this.langList[locale] = lang;
+                       this.langs[locale] = lang;
                }
        };
 
                }
        };
 
@@ -12244,11 +11315,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        //if locale is not set, check for matching top level locale else use default
 
 
                        //if locale is not set, check for matching top level locale else use default
 
-                       if (!self.langList[desiredLocale]) {
+                       if (!self.langs[desiredLocale]) {
 
                                var prefix = desiredLocale.split("-")[0];
 
 
                                var prefix = desiredLocale.split("-")[0];
 
-                               if (self.langList[prefix]) {
+                               if (self.langs[prefix]) {
 
                                        console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
 
 
                                        console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
 
@@ -12266,11 +11337,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                //load default lang template
 
 
                //load default lang template
 
-               self.lang = Tabulator.prototype.helpers.deepClone(self.langList.default || {});
+               self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
 
                if (desiredLocale != "default") {
 
 
                if (desiredLocale != "default") {
 
-                       traverseLang(self.langList[desiredLocale], self.lang);
+                       traverseLang(self.langs[desiredLocale], self.lang);
                }
 
                self.table.options.localized.call(self.table, self.locale, self.lang);
                }
 
                self.table.options.localized.call(self.table, self.locale, self.lang);
@@ -12289,7 +11360,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Localize.prototype.getLang = function (locale) {
 
 
        Localize.prototype.getLang = function (locale) {
 
-               return locale ? this.langList[locale] : this.lang;
+               return locale ? this.langs[locale] : this.lang;
        };
 
        //get text for current locale
        };
 
        //get text for current locale
@@ -12545,15 +11616,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        //apply accessor to row
        };
 
        //apply accessor to row
-       Accessor.prototype.transformRow = function (row, type) {
-               var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                   rowComponent = row.getComponent();
+       Accessor.prototype.transformRow = function (dataIn, type) {
+               var self = this,
+                   key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
 
                //clone data object with deep copy to isolate internal data from returned result
 
                //clone data object with deep copy to isolate internal data from returned result
-               var data = Tabulator.prototype.helpers.deepClone(row.data || {});
+               var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
 
 
-               this.table.columnManager.traverse(function (column) {
-                       var value, accessor, params, colCompnent;
+               self.table.columnManager.traverse(function (column) {
+                       var value, accessor, params, component;
 
                        if (column.modules.accessor) {
 
 
                        if (column.modules.accessor) {
 
@@ -12563,9 +11634,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        value = column.getFieldValue(data);
 
                                        if (value != "undefined") {
                                        value = column.getFieldValue(data);
 
                                        if (value != "undefined") {
-                                               colCompnent = column.getComponent();
-                                               params = typeof accessor.params === "function" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;
-                                               column.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));
+                                               component = column.getComponent();
+                                               params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
+                                               column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
                                        }
                                }
                        }
                                        }
                                }
                        }
@@ -12758,11 +11829,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Ajax.prototype._loadDataStandard = function (inPosition, columnsChanged) {
        };
 
        Ajax.prototype._loadDataStandard = function (inPosition, columnsChanged) {
-               var _this42 = this;
+               var _this35 = this;
 
                return new Promise(function (resolve, reject) {
 
                return new Promise(function (resolve, reject) {
-                       _this42.sendRequest(inPosition).then(function (data) {
-                               _this42.table.rowManager.setData(data, inPosition, columnsChanged).then(function () {
+                       _this35.sendRequest(inPosition).then(function (data) {
+                               _this35.table.rowManager.setData(data, inPosition, columnsChanged).then(function () {
                                        resolve();
                                }).catch(function (e) {
                                        reject(e);
                                        resolve();
                                }).catch(function (e) {
                                        reject(e);
@@ -12807,7 +11878,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //send ajax request
        Ajax.prototype.sendRequest = function (silent) {
 
        //send ajax request
        Ajax.prototype.sendRequest = function (silent) {
-               var _this43 = this;
+               var _this36 = this;
 
                var self = this,
                    url = self.url,
 
                var self = this,
                    url = self.url,
@@ -12821,7 +11892,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                self._loadDefaultConfig();
 
                return new Promise(function (resolve, reject) {
                self._loadDefaultConfig();
 
                return new Promise(function (resolve, reject) {
-                       if (self.table.options.ajaxRequesting.call(_this43.table, self.url, self.params) !== false) {
+                       if (self.table.options.ajaxRequesting.call(_this36.table, self.url, self.params) !== false) {
 
                                self.loading = true;
 
 
                                self.loading = true;
 
@@ -12829,7 +11900,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        self.showLoader();
                                }
 
                                        self.showLoader();
                                }
 
-                               _this43.loaderPromise(url, self.config, self.params).then(function (data) {
+                               _this36.loaderPromise(url, self.config, self.params).then(function (data) {
                                        if (requestNo === self.requestOrder) {
                                                if (self.table.options.ajaxResponse) {
                                                        data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
                                        if (requestNo === self.requestOrder) {
                                                if (self.table.options.ajaxResponse) {
                                                        data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
@@ -13040,42 +12111,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        Tabulator.prototype.registerModule("ajax", Ajax);
 
 
        Tabulator.prototype.registerModule("ajax", Ajax);
 
-       //public calc object
-       var CalcComponent = function CalcComponent(row) {
-               this._row = row;
-       };
-
-       CalcComponent.prototype.getData = function (transform) {
-               return this._row.getData(transform);
-       };
-
-       CalcComponent.prototype.getElement = function () {
-               return this._row.getElement();
-       };
-
-       CalcComponent.prototype.getTable = function () {
-               return this._row.table;
-       };
-
-       CalcComponent.prototype.getCells = function () {
-               var cells = [];
-
-               this._row.getCells().forEach(function (cell) {
-                       cells.push(cell.getComponent());
-               });
-
-               return cells;
-       };
-
-       CalcComponent.prototype.getCell = function (column) {
-               var cell = this._row.getCell(column);
-               return cell ? cell.getComponent() : false;
-       };
-
-       CalcComponent.prototype._getSelf = function () {
-               return this._row;
-       };
-
        var ColumnCalcs = function ColumnCalcs(table) {
                this.table = table; //hold Tabulator object
                this.topCalcs = [];
        var ColumnCalcs = function ColumnCalcs(table) {
                this.table = table; //hold Tabulator object
                this.topCalcs = [];
@@ -13206,7 +12241,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                var hozAdjust = 0,
                    scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
 
                var hozAdjust = 0,
                    scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
 
-               if (this.botInitialized && this.botRow) {
+               if (this.botInitialized) {
                        this.botRow.getElement().style.marginLeft = -left + "px";
                }
        };
                        this.botRow.getElement().style.marginLeft = -left + "px";
                }
        };
@@ -13257,7 +12292,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        ColumnCalcs.prototype.recalcAll = function () {
        };
 
        ColumnCalcs.prototype.recalcAll = function () {
-               var _this44 = this;
+               var _this37 = this;
 
                if (this.topCalcs.length || this.botCalcs.length) {
                        if (this.table.options.columnCalcs !== "group") {
 
                if (this.topCalcs.length || this.botCalcs.length) {
                        if (this.table.options.columnCalcs !== "group") {
@@ -13269,7 +12304,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                var groups = table.modules.groupRows.getChildGroups();
 
                                groups.forEach(function (group) {
                                var groups = table.modules.groupRows.getChildGroups();
 
                                groups.forEach(function (group) {
-                                       _this44.recalcGroup(group);
+                                       _this37.recalcGroup(group);
                                });
                        }
                }
                                });
                        }
                }
@@ -13309,16 +12344,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        ColumnCalcs.prototype.rowsToData = function (rows) {
        };
 
        ColumnCalcs.prototype.rowsToData = function (rows) {
-               var _this45 = this;
+               var _this38 = this;
 
                var data = [];
 
                rows.forEach(function (row) {
                        data.push(row.getData());
 
 
                var data = [];
 
                rows.forEach(function (row) {
                        data.push(row.getData());
 
-                       if (_this45.table.options.dataTree && _this45.table.options.dataTreeChildColumnCalcs) {
+                       if (_this38.table.options.dataTree && _this38.table.options.dataTreeChildColumnCalcs) {
                                if (row.modules.dataTree.open) {
                                if (row.modules.dataTree.open) {
-                                       var children = _this45.rowsToData(_this45.table.modules.dataTree.getFilteredTreeChildren(row));
+                                       var children = _this38.rowsToData(_this38.table.modules.dataTree.getFilteredTreeChildren(row));
                                        data = data.concat(children);
                                }
                        }
                                        data = data.concat(children);
                                }
                        }
@@ -13345,16 +12380,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
 
 
                row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
 
-               row.component = false;
-
-               row.getComponent = function () {
-                       if (!this.component) {
-                               this.component = new CalcComponent(this);
-                       }
-
-                       return this.component;
-               };
-
                row.generateCells = function () {
 
                        var cells = [];
                row.generateCells = function () {
 
                        var cells = [];
@@ -13366,9 +12391,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                self.genColumn.hozAlign = column.hozAlign;
 
                                if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
                                self.genColumn.hozAlign = column.hozAlign;
 
                                if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
+
                                        self.genColumn.modules.format = {
                                                formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
                                        self.genColumn.modules.format = {
                                                formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
-                                               params: column.definition[pos + "CalcFormatterParams"] || {}
+                                               params: column.definition[pos + "CalcFormatterParams"]
                                        };
                                } else {
                                        self.genColumn.modules.format = {
                                        };
                                } else {
                                        self.genColumn.modules.format = {
@@ -13382,7 +12408,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                //generate cell and assign to correct column
                                var cell = new Cell(self.genColumn, row);
 
                                //generate cell and assign to correct column
                                var cell = new Cell(self.genColumn, row);
-                               cell.getElement();
                                cell.column = column;
                                cell.setWidth();
 
                                cell.column = column;
                                cell.setWidth();
 
@@ -13495,7 +12520,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (values.length) {
                                output = values.reduce(function (sum, value) {
 
                        if (values.length) {
                                output = values.reduce(function (sum, value) {
-                                       return Number(sum) + Number(value);
+                                       value = Number(value);
+                                       return sum + value;
                                });
 
                                output = output / values.length;
                                });
 
                                output = output / values.length;
@@ -13589,7 +12615,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Clipboard.prototype.initialize = function () {
        };
 
        Clipboard.prototype.initialize = function () {
-               var _this46 = this;
+               var _this39 = this;
 
                this.mode = this.table.options.clipboard;
 
 
                this.mode = this.table.options.clipboard;
 
@@ -13599,25 +12625,25 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.table.element.addEventListener("copy", function (e) {
                                var plain, html, list;
 
                        this.table.element.addEventListener("copy", function (e) {
                                var plain, html, list;
 
-                               if (!_this46.blocked) {
+                               if (!_this39.blocked) {
                                        e.preventDefault();
 
                                        e.preventDefault();
 
-                                       if (_this46.customSelection) {
-                                               plain = _this46.customSelection;
+                                       if (_this39.customSelection) {
+                                               plain = _this39.customSelection;
 
 
-                                               if (_this46.table.options.clipboardCopyFormatter) {
-                                                       plain = _this46.table.options.clipboardCopyFormatter("plain", plain);
+                                               if (_this39.table.options.clipboardCopyFormatter) {
+                                                       plain = _this39.table.options.clipboardCopyFormatter("plain", plain);
                                                }
                                        } else {
 
                                                }
                                        } else {
 
-                                               var list = _this46.table.modules.export.generateExportList(_this46.table.options.clipboardCopyConfig, _this46.table.options.clipboardCopyStyled, _this46.rowRange, "clipboard");
+                                               var list = _this39.table.modules.export.generateExportList(_this39.rowRange, _this39.table.options.clipboardCopyStyled, _this39.table.options.clipboardCopyConfig, "clipboard");
 
 
-                                               html = _this46.table.modules.export.genereateHTMLTable(list);
-                                               plain = html ? _this46.generatePlainContent(list) : "";
+                                               html = _this39.table.modules.export.genereateHTMLTable(list);
+                                               plain = html ? _this39.generatePlainContent(list) : "";
 
 
-                                               if (_this46.table.options.clipboardCopyFormatter) {
-                                                       plain = _this46.table.options.clipboardCopyFormatter("plain", plain);
-                                                       html = _this46.table.options.clipboardCopyFormatter("html", html);
+                                               if (_this39.table.options.clipboardCopyFormatter) {
+                                                       plain = _this39.table.options.clipboardCopyFormatter("plain", plain);
+                                                       html = _this39.table.options.clipboardCopyFormatter("html", html);
                                                }
                                        }
 
                                                }
                                        }
 
@@ -13635,16 +12661,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                }
                                        }
 
                                                }
                                        }
 
-                                       _this46.table.options.clipboardCopied.call(_this46.table, plain, html);
+                                       _this39.table.options.clipboardCopied.call(_this39.table, plain, html);
 
 
-                                       _this46.reset();
+                                       _this39.reset();
                                }
                        });
                }
 
                if (this.mode === true || this.mode === "paste") {
                        this.table.element.addEventListener("paste", function (e) {
                                }
                        });
                }
 
                if (this.mode === true || this.mode === "paste") {
                        this.table.element.addEventListener("paste", function (e) {
-                               _this46.paste(e);
+                               _this39.paste(e);
                        });
                }
 
                        });
                }
 
@@ -13653,8 +12679,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Clipboard.prototype.reset = function () {
        };
 
        Clipboard.prototype.reset = function () {
-               this.blocked = true;
-               this.customSelection = false;
+               this.blocked = false;
+               this.originalSelectionText = "";
        };
 
        Clipboard.prototype.generatePlainContent = function (list) {
        };
 
        Clipboard.prototype.generatePlainContent = function (list) {
@@ -13672,21 +12698,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                col.value = col.component.getKey();
                                        }
 
                                                col.value = col.component.getKey();
                                        }
 
-                                       if (col.value === null) {
-                                               value = "";
-                                       } else {
-                                               switch (_typeof(col.value)) {
-                                                       case "object":
-                                                               value = JSON.stringify(col.value);
-                                                               break;
+                                       switch (_typeof(col.value)) {
+                                               case "object":
+                                                       value = JSON.stringify(col.value);
+                                                       break;
 
 
-                                                       case "undefined":
-                                                               value = "";
-                                                               break;
+                                               case "undefined":
+                                               case "null":
+                                                       value = "";
+                                                       break;
 
 
-                                                       default:
-                                                               value = col.value;
-                                               }
+                                               default:
+                                                       value = col.value;
                                        }
                                }
 
                                        }
                                }
 
@@ -14062,25 +13085,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        if (this.branchEl) {
                                config.branchEl = this.branchEl.cloneNode(true);
                                el.insertBefore(config.branchEl, el.firstChild);
                        if (this.branchEl) {
                                config.branchEl = this.branchEl.cloneNode(true);
                                el.insertBefore(config.branchEl, el.firstChild);
-
-                               if (this.table.rtl) {
-                                       config.branchEl.style.marginRight = (config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1) + config.index * this.indent + "px";
-                               } else {
-                                       config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
-                               }
+                               config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
                        } else {
                        } else {
-
-                               if (this.table.rtl) {
-                                       el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + config.index * this.indent + "px";
-                               } else {
-                                       el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
-                               }
+                               el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
                        }
                }
        };
 
        DataTree.prototype.generateControlElement = function (row, el) {
                        }
                }
        };
 
        DataTree.prototype.generateControlElement = function (row, el) {
-               var _this47 = this;
+               var _this40 = this;
 
                var config = row.modules.dataTree,
                    el = el || row.getCells()[0].getElement(),
 
                var config = row.modules.dataTree,
                    el = el || row.getCells()[0].getElement(),
@@ -14092,13 +13105,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                config.controlEl = this.collapseEl.cloneNode(true);
                                config.controlEl.addEventListener("click", function (e) {
                                        e.stopPropagation();
                                config.controlEl = this.collapseEl.cloneNode(true);
                                config.controlEl.addEventListener("click", function (e) {
                                        e.stopPropagation();
-                                       _this47.collapseRow(row);
+                                       _this40.collapseRow(row);
                                });
                        } else {
                                config.controlEl = this.expandEl.cloneNode(true);
                                config.controlEl.addEventListener("click", function (e) {
                                        e.stopPropagation();
                                });
                        } else {
                                config.controlEl = this.expandEl.cloneNode(true);
                                config.controlEl.addEventListener("click", function (e) {
                                        e.stopPropagation();
-                                       _this47.expandRow(row);
+                                       _this40.expandRow(row);
                                });
                        }
 
                                });
                        }
 
@@ -14123,7 +13136,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        DataTree.prototype.getRows = function (rows) {
        };
 
        DataTree.prototype.getRows = function (rows) {
-               var _this48 = this;
+               var _this41 = this;
 
                var output = [];
 
 
                var output = [];
 
@@ -14137,7 +13150,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                config = row.modules.dataTree.children;
 
                                if (!config.index && config.children !== false) {
                                config = row.modules.dataTree.children;
 
                                if (!config.index && config.children !== false) {
-                                       children = _this48.getChildren(row);
+                                       children = _this41.getChildren(row);
 
                                        children.forEach(function (child) {
                                                output.push(child);
 
                                        children.forEach(function (child) {
                                                output.push(child);
@@ -14150,7 +13163,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        DataTree.prototype.getChildren = function (row) {
        };
 
        DataTree.prototype.getChildren = function (row) {
-               var _this49 = this;
+               var _this42 = this;
 
                var config = row.modules.dataTree,
                    children = [],
 
                var config = row.modules.dataTree,
                    children = [],
@@ -14161,20 +13174,20 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                config.children = this.generateChildren(row);
                        }
 
                                config.children = this.generateChildren(row);
                        }
 
-                       if (this.table.modExists("filter") && this.table.options.dataTreeFilter) {
+                       if (this.table.modExists("filter")) {
                                children = this.table.modules.filter.filter(config.children);
                        } else {
                                children = config.children;
                        }
 
                                children = this.table.modules.filter.filter(config.children);
                        } else {
                                children = config.children;
                        }
 
-                       if (this.table.modExists("sort") && this.table.options.dataTreeSort) {
+                       if (this.table.modExists("sort")) {
                                this.table.modules.sort.sort(children);
                        }
 
                        children.forEach(function (child) {
                                output.push(child);
 
                                this.table.modules.sort.sort(children);
                        }
 
                        children.forEach(function (child) {
                                output.push(child);
 
-                               var subChildren = _this49.getChildren(child);
+                               var subChildren = _this42.getChildren(child);
 
                                subChildren.forEach(function (sub) {
                                        output.push(sub);
 
                                subChildren.forEach(function (sub) {
                                        output.push(sub);
@@ -14186,7 +13199,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        DataTree.prototype.generateChildren = function (row) {
        };
 
        DataTree.prototype.generateChildren = function (row) {
-               var _this50 = this;
+               var _this43 = this;
 
                var children = [];
 
 
                var children = [];
 
@@ -14197,11 +13210,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
 
                childArray.forEach(function (childData) {
                }
 
                childArray.forEach(function (childData) {
-                       var childRow = new Row(childData || {}, _this50.table.rowManager);
+                       var childRow = new Row(childData || {}, _this43.table.rowManager);
                        childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
                        childRow.modules.dataTree.parent = row;
                        if (childRow.modules.dataTree.children) {
                        childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
                        childRow.modules.dataTree.parent = row;
                        if (childRow.modules.dataTree.children) {
-                               childRow.modules.dataTree.open = _this50.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
+                               childRow.modules.dataTree.open = _this43.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
                        }
                        children.push(childRow);
                });
                        }
                        children.push(childRow);
                });
@@ -14264,7 +13277,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                config.children = this.generateChildren(row);
                        }
 
                                config.children = this.generateChildren(row);
                        }
 
-                       if (this.table.modExists("filter") && this.table.options.dataTreeFilter) {
+                       if (this.table.modExists("filter")) {
                                children = this.table.modules.filter.filter(config.children);
                        } else {
                                children = config.children;
                                children = this.table.modules.filter.filter(config.children);
                        } else {
                                children = config.children;
@@ -14338,7 +13351,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        DataTree.prototype.findChildIndex = function (subject, parent) {
        };
 
        DataTree.prototype.findChildIndex = function (subject, parent) {
-               var _this51 = this;
+               var _this44 = this;
 
                var match = false;
 
 
                var match = false;
 
@@ -14366,7 +13379,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                } else {
                        //subject should be treated as the index of the row
                        match = parent.data[this.field].find(function (row) {
                } else {
                        //subject should be treated as the index of the row
                        match = parent.data[this.field].find(function (row) {
-                               return row.data[_this51.table.options.index] == subject;
+                               return row.data[_this44.table.options.index] == subject;
                        });
                }
 
                        });
                }
 
@@ -14386,9 +13399,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                return match;
        };
 
                return match;
        };
 
-       DataTree.prototype.getTreeChildren = function (row, component, recurse) {
-               var _this52 = this;
-
+       DataTree.prototype.getTreeChildren = function (row) {
                var config = row.modules.dataTree,
                    output = [];
 
                var config = row.modules.dataTree,
                    output = [];
 
@@ -14400,11 +13411,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        config.children.forEach(function (childRow) {
                                if (childRow instanceof Row) {
 
                        config.children.forEach(function (childRow) {
                                if (childRow instanceof Row) {
-                                       output.push(component ? childRow.getComponent() : childRow);
-
-                                       if (recurse) {
-                                               output = output.concat(_this52.getTreeChildren(childRow, component, recurse));
-                                       }
+                                       output.push(childRow.getComponent());
                                }
                        });
                }
                                }
                        });
                }
@@ -14557,7 +13564,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        case "header":
                                                row.columns.forEach(function (col, i) {
                                                        if (col && col.depth === 1) {
                                        case "header":
                                                row.columns.forEach(function (col, i) {
                                                        if (col && col.depth === 1) {
-                                                               headers[i] = typeof col.value == "undefined" || col.value === null ? "" : '"' + String(col.value).split('"').join('""') + '"';
+                                                               headers[i] = typeof col.value == "undefined" || typeof col.value == "null" ? "" : col.value;
                                                        }
                                                });
                                                break;
                                                        }
                                                });
                                                break;
@@ -14588,7 +13595,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        });
 
                        if (headers.length) {
                        });
 
                        if (headers.length) {
-                               fileContents.unshift(headers.join(delimiter));
+                               fileContents = [headers].concat(fileContents);
                        }
 
                        fileContents = fileContents.join("\n");
                        }
 
                        fileContents = fileContents.join("\n");
@@ -14815,7 +13822,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                                workbook.SheetNames.push(sheet);
 
 
                                                workbook.SheetNames.push(sheet);
 
-                                               this.modules.comms.send(options.sheets[sheet], "download", "intercept", {
+                                               this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
                                                        type: "xlsx",
                                                        options: { sheetOnly: true },
                                                        active: self.active,
                                                        type: "xlsx",
                                                        options: { sheetOnly: true },
                                                        active: self.active,
@@ -14963,10 +13970,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        cell.setValueActual(cell.getValue());
                        cell.cellRendered();
 
                        cell.setValueActual(cell.getValue());
                        cell.cellRendered();
 
-                       if (cell.column.definition.editor == "textarea" || cell.column.definition.variableHeight) {
-                               cell.row.normalizeHeight(true);
-                       }
-
                        if (cell.column.cellEvents.cellEditCancelled) {
                                cell.column.cellEvents.cellEditCancelled.call(this.table, component);
                        }
                        if (cell.column.cellEvents.cellEditCancelled) {
                                cell.column.cellEvents.cellEditCancelled.call(this.table, component);
                        }
@@ -14989,11 +13992,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                });
 
                element.addEventListener("mousedown", function (e) {
                });
 
                element.addEventListener("mousedown", function (e) {
-                       if (e.button === 2) {
-                               e.preventDefault();
-                       } else {
-                               self.mouseClick = true;
-                       }
+                       self.mouseClick = true;
                });
 
                element.addEventListener("focus", function (e) {
                });
 
                element.addEventListener("focus", function (e) {
@@ -15030,24 +14029,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        this.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;
                                }
                        }
                                        this.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;
                                }
                        }
-
-                       var leftEdge = this.table.rowManager.element.scrollLeft,
-                           rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,
-                           cellEl = cell.getElement(),
-                           offset = cellEl.offsetLeft;
-
-                       if (this.table.modExists("frozenColumns")) {
-                               leftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);
-                               rightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);
-                       }
-
-                       if (cellEl.offsetLeft < leftEdge) {
-                               this.table.rowManager.element.scrollLeft -= leftEdge - cellEl.offsetLeft;
-                       } else {
-                               if (cellEl.offsetLeft + cellEl.offsetWidth > rightEdge) {
-                                       this.table.rowManager.element.scrollLeft += cellEl.offsetLeft + cellEl.offsetWidth - rightEdge;
-                               }
-                       }
                }
        };
 
                }
        };
 
@@ -15079,6 +14060,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                if (valid === true || self.table.options.validationMode === "highlight") {
                                        self.clearEditor();
 
                                if (valid === true || self.table.options.validationMode === "highlight") {
                                        self.clearEditor();
+                                       cell.setValue(value, true);
 
                                        if (!cell.modules.edit) {
                                                cell.modules.edit = {};
 
                                        if (!cell.modules.edit) {
                                                cell.modules.edit = {};
@@ -15090,15 +14072,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                self.editedCells.push(cell);
                                        }
 
                                                self.editedCells.push(cell);
                                        }
 
-                                       cell.setValue(value, true);
-
                                        if (self.table.options.dataTree && self.table.modExists("dataTree")) {
                                                self.table.modules.dataTree.checkForRestyle(cell);
                                        }
 
                                        if (valid !== true) {
                                                element.classList.add("tabulator-validation-fail");
                                        if (self.table.options.dataTree && self.table.modExists("dataTree")) {
                                                self.table.modules.dataTree.checkForRestyle(cell);
                                        }
 
                                        if (valid !== true) {
                                                element.classList.add("tabulator-validation-fail");
-                                               self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
                                                return false;
                                        }
 
                                                return false;
                                        }
 
@@ -15316,17 +14295,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                var editIndex;
 
                if (cell.modules.edit && cell.modules.edit.edited) {
                var editIndex;
 
                if (cell.modules.edit && cell.modules.edit.edited) {
-                       cell.modules.edit.edited = false;
-
-                       if (cell.modules.validate) {
-                               cell.modules.validate.invalid = false;
-                       }
-               }
+                       cell.modules.validate.invalid = false;
 
 
-               editIndex = this.editedCells.indexOf(cell);
+                       editIndex = this.editedCells.indexOf(cell);
 
 
-               if (editIndex > -1) {
-                       this.editedCells.splice(editIndex, 1);
+                       if (editIndex > -1) {
+                               this.editedCells.splice(editIndex, 1);
+                       }
                }
        };
 
                }
        };
 
@@ -15387,12 +14362,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                break;
 
                                        case 27:
                                                break;
 
                                        case 27:
-                                               cancel();
-                                               break;
-
-                                       case 35:
-                                       case 36:
-                                               e.stopPropagation();
+                                               cancel();
                                                break;
                                }
                        });
                                                break;
                                }
                        });
@@ -15439,10 +14409,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        onRendered(function () {
                                input.focus({ preventScroll: true });
                                input.style.height = "100%";
                        onRendered(function () {
                                input.focus({ preventScroll: true });
                                input.style.height = "100%";
-
-                               input.scrollHeight;
-                               input.style.height = input.scrollHeight + "px";
-                               cell.getRow().normalizeHeight();
                        });
 
                        function onChange(e) {
                        });
 
                        function onChange(e) {
@@ -15502,11 +14468,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                        e.stopPropagation();
                                                }
                                                break;
                                                        e.stopPropagation();
                                                }
                                                break;
-
-                                       case 35:
-                                       case 36:
-                                               e.stopPropagation();
-                                               break;
                                }
                        });
 
                                }
                        });
 
@@ -15607,11 +14568,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                        e.stopPropagation();
                                                }
                                                break;
                                                        e.stopPropagation();
                                                }
                                                break;
-
-                                       case 35:
-                                       case 36:
-                                               e.stopPropagation();
-                                               break;
                                }
                        });
 
                                }
                        });
 
@@ -15705,13 +14661,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                //select
                select: function select(cell, onRendered, success, cancel, editorParams) {
 
                //select
                select: function select(cell, onRendered, success, cancel, editorParams) {
-                       var _this53 = this;
-
                        var self = this,
                            cellEl = cell.getElement(),
                            initialValue = cell.getValue(),
                            vertNav = editorParams.verticalNavigation || "editor",
                        var self = this,
                            cellEl = cell.getElement(),
                            initialValue = cell.getValue(),
                            vertNav = editorParams.verticalNavigation || "editor",
-                           initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? Array.isArray(initialValue) ? initialValue : [initialValue] : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : [],
+                           initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : [],
                            input = document.createElement("input"),
                            listEl = document.createElement("div"),
                            multiselect = editorParams.multiselect,
                            input = document.createElement("input"),
                            listEl = document.createElement("div"),
                            multiselect = editorParams.multiselect,
@@ -15719,8 +14673,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                            currentItem = {},
                            displayItems = [],
                            currentItems = [],
                            currentItem = {},
                            displayItems = [],
                            currentItems = [],
-                           blurable = true,
-                           blockListShow = false;
+                           blurable = true;
+
+                       this.table.rowManager.element.addEventListener("scroll", cancelItem);
 
                        if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === "object" && !editorParams.values) {
                                console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
 
                        if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === "object" && !editorParams.values) {
                                console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
@@ -15884,12 +14839,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                        el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
 
                                                        el.addEventListener("click", function () {
                                                        el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
 
                                                        el.addEventListener("click", function () {
-                                                               blockListShow = true;
-
-                                                               setTimeout(function () {
-                                                                       blockListShow = false;
-                                                               }, 10);
-
                                                                // setCurrentItem(item);
                                                                // chooseItem();
                                                                if (multiselect) {
                                                                // setCurrentItem(item);
                                                                // chooseItem();
                                                                if (multiselect) {
@@ -15952,10 +14901,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                item.element.classList.add("active");
                                        }
                                }
                                                item.element.classList.add("active");
                                        }
                                }
-
-                               if (item && item.element && item.element.scrollIntoView) {
-                                       item.element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });
-                               }
                        }
 
                        // function chooseItem(){
                        }
 
                        // function chooseItem(){
@@ -16019,17 +14964,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                }
 
                                if (item) {
                                }
 
                                if (item) {
-                                       input.value = item.label;
                                        success(item.value);
                                }
                                        success(item.value);
                                }
-
-                               initialDisplayValue = input.value;
                        }
 
                        }
 
-                       function chooseItems(silent) {
-                               if (!silent) {
-                                       hideList();
-                               }
+                       function chooseItems() {
+                               hideList();
 
                                var output = [];
 
 
                                var output = [];
 
@@ -16037,8 +14977,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        output.push(item.value);
                                });
 
                                        output.push(item.value);
                                });
 
-                               initialDisplayValue = input.value;
-
                                success(output);
                        }
 
                                success(output);
                        }
 
@@ -16050,19 +14988,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                });
 
                                input.value = output.join(", ");
                                });
 
                                input.value = output.join(", ");
-
-                               if (self.currentCell === false) {
-                                       chooseItems(true);
-                               }
-                       }
-
-                       function unsetItems() {
-
-                               var len = currentItems.length;
-
-                               for (var _i9 = 0; _i9 < len; _i9++) {
-                                       unsetItem(0);
-                               }
                        }
 
                        function cancelItem() {
                        }
 
                        function cancelItem() {
@@ -16071,9 +14996,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
 
                        function showList() {
                        }
 
                        function showList() {
-                               currentItems = [];
-
                                if (!listEl.parentNode) {
                                if (!listEl.parentNode) {
+
                                        if (editorParams.values === true) {
                                                parseItems(getUniqueColumnValues(), initialDisplayValue);
                                        } else if (typeof editorParams.values === "string") {
                                        if (editorParams.values === true) {
                                                parseItems(getUniqueColumnValues(), initialDisplayValue);
                                        } else if (typeof editorParams.values === "string") {
@@ -16143,13 +15067,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        //      parseItems(editorParams.values || [], initialValue);
                        // }
 
                        //      parseItems(editorParams.values || [], initialValue);
                        // }
 
-                       input.addEventListener("search", function (e) {
-                               if (!input.value) {
-                                       unsetItems();
-                                       chooseItems();
-                               }
-                       });
-
                        //allow key based navigation
                        input.addEventListener("keydown", function (e) {
                                var index;
                        //allow key based navigation
                        input.addEventListener("keydown", function (e) {
                                var index;
@@ -16213,15 +15130,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                //escape
                                                cancelItem();
                                                break;
                                                //escape
                                                cancelItem();
                                                break;
-
-                                       case 9:
-                                               //tab
-                                               break;
-
-                                       default:
-                                               if (self.currentCell === false) {
-                                                       e.preventDefault();
-                                               }
                                }
                        });
 
                                }
                        });
 
@@ -16236,9 +15144,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        });
 
                        input.addEventListener("focus", function (e) {
                        });
 
                        input.addEventListener("focus", function (e) {
-                               if (!blockListShow) {
-                                       showList();
-                               }
+                               showList();
                        });
 
                        //style list element
                        });
 
                        //style list element
@@ -16250,17 +15156,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                input.focus({ preventScroll: true });
                        });
 
                                input.focus({ preventScroll: true });
                        });
 
-                       setTimeout(function () {
-                               _this53.table.rowManager.element.addEventListener("scroll", cancelItem);
-                       }, 10);
-
                        return input;
                },
 
                //autocomplete
                autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
                        return input;
                },
 
                //autocomplete
                autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
-                       var _this54 = this;
-
                        var self = this,
                            cellEl = cell.getElement(),
                            initialValue = cell.getValue(),
                        var self = this,
                            cellEl = cell.getElement(),
                            initialValue = cell.getValue(),
@@ -16275,6 +15175,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                            blurable = true,
                            uniqueColumnValues = false;
 
                            blurable = true,
                            uniqueColumnValues = false;
 
+                       this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
                        //style input
                        input.setAttribute("type", "search");
 
                        //style input
                        input.setAttribute("type", "search");
 
@@ -16565,10 +15467,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                if (item && item.element) {
                                        item.element.classList.add("active");
                                }
                                if (item && item.element) {
                                        item.element.classList.add("active");
                                }
-
-                               if (item && item.element && item.element.scrollIntoView) {
-                                       item.element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });
-                               }
                        }
 
                        function hideList() {
                        }
 
                        function hideList() {
@@ -16702,14 +15600,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                this.table.modules.edit.maskInput(input, editorParams);
                        }
 
                                this.table.modules.edit.maskInput(input, editorParams);
                        }
 
-                       setTimeout(function () {
-                               _this54.table.rowManager.element.addEventListener("scroll", cancelItem);
-                       }, 10);
-
-                       genUniqueColumnValues();
-                       input.value = initialDisplayValue;
-                       filterList(initialDisplayValue, true);
-
                        return input;
                },
 
                        return input;
                },
 
@@ -17032,10 +15922,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        input.checked = value === true || value === "true" || value === "True" || value === 1;
 
 
                        input.checked = value === true || value === "true" || value === "True" || value === 1;
 
-                       onRendered(function () {
-                               input.focus();
-                       });
-
                        function setValue(blur) {
                                if (tristate) {
                                        if (!blur) {
                        function setValue(blur) {
                                if (tristate) {
                                        if (!blur) {
@@ -17125,13 +16011,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Export.prototype.rowLookup = function (range) {
        };
 
        Export.prototype.rowLookup = function (range) {
-               var _this55 = this;
+               var _this45 = this;
 
                var rows = [];
 
                if (typeof range == "function") {
                        range.call(this.table).forEach(function (row) {
 
                var rows = [];
 
                if (typeof range == "function") {
                        range.call(this.table).forEach(function (row) {
-                               row = _this55.table.rowManager.findRow(row);
+                               row = _this45.table.rowManager.findRow(row);
 
                                if (row) {
                                        rows.push(row);
 
                                if (row) {
                                        rows.push(row);
@@ -17154,11 +16040,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                case "active":
                                default:
 
                                case "active":
                                default:
-                                       if (this.table.options.pagination) {
-                                               rows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);
-                                       } else {
-                                               rows = this.table.rowManager.getDisplayRows();
-                                       }
+                                       rows = this.table.rowManager.getDisplayRows();
                        }
                }
 
                        }
                }
 
@@ -17166,14 +16048,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Export.prototype.generateColumnGroupHeaders = function () {
        };
 
        Export.prototype.generateColumnGroupHeaders = function () {
-               var _this56 = this;
+               var _this46 = this;
 
                var output = [];
 
                var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
 
                columns.forEach(function (column) {
 
                var output = [];
 
                var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
 
                columns.forEach(function (column) {
-                       var colData = _this56.processColumnGroup(column);
+                       var colData = _this46.processColumnGroup(column);
 
                        if (colData) {
                                output.push(colData);
 
                        if (colData) {
                                output.push(colData);
@@ -17184,7 +16066,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Export.prototype.processColumnGroup = function (column) {
        };
 
        Export.prototype.processColumnGroup = function (column) {
-               var _this57 = this;
+               var _this47 = this;
 
                var subGroups = column.columns,
                    maxDepth = 0,
 
                var subGroups = column.columns,
                    maxDepth = 0,
@@ -17201,7 +16083,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        groupData.width = 0;
 
                        subGroups.forEach(function (subGroup) {
                        groupData.width = 0;
 
                        subGroups.forEach(function (subGroup) {
-                               var subGroupData = _this57.processColumnGroup(subGroup);
+                               var subGroupData = _this47.processColumnGroup(subGroup);
 
                                if (subGroupData) {
                                        groupData.width += subGroupData.width;
 
                                if (subGroupData) {
                                        groupData.width += subGroupData.width;
@@ -17251,18 +16133,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        headers[level].push(column);
 
                        if (column.height > 1) {
                        headers[level].push(column);
 
                        if (column.height > 1) {
-                               for (var _i10 = 1; _i10 < column.height; _i10++) {
+                               for (var _i6 = 1; _i6 < column.height; _i6++) {
 
 
-                                       if (typeof headers[level + _i10] === "undefined") {
-                                               headers[level + _i10] = [];
+                                       if (typeof headers[level + _i6] === "undefined") {
+                                               headers[level + _i6] = [];
                                        }
 
                                        }
 
-                                       headers[level + _i10].push(false);
+                                       headers[level + _i6].push(false);
                                }
                        }
 
                        if (column.width > 1) {
                                }
                        }
 
                        if (column.width > 1) {
-                               for (var _i11 = 1; _i11 < column.width; _i11++) {
+                               for (var _i7 = 1; _i7 < column.width; _i7++) {
                                        headers[level].push(false);
                                }
                        }
                                        headers[level].push(false);
                                }
                        }
@@ -17303,13 +16185,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Export.prototype.bodyToExportRows = function (rows) {
        };
 
        Export.prototype.bodyToExportRows = function (rows) {
-               var _this58 = this;
+               var _this48 = this;
 
                var columns = [];
                var exportRows = [];
 
                this.table.columnManager.columnsByIndex.forEach(function (column) {
 
                var columns = [];
                var exportRows = [];
 
                this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (_this58.columnVisCheck(column)) {
+                       if (_this48.columnVisCheck(column)) {
                                columns.push(column.getComponent());
                        }
                });
                                columns.push(column.getComponent());
                        }
                });
@@ -17327,15 +16209,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                rows = rows.filter(function (row) {
                        switch (row.type) {
                                case "group":
                rows = rows.filter(function (row) {
                        switch (row.type) {
                                case "group":
-                                       return _this58.config.rowGroups !== false;
+                                       return _this48.config.rowGroups !== false;
                                        break;
 
                                case "calc":
                                        break;
 
                                case "calc":
-                                       return _this58.config.columnCalcs !== false;
+                                       return _this48.config.columnCalcs !== false;
                                        break;
 
                                case "row":
                                        break;
 
                                case "row":
-                                       return !(_this58.table.options.dataTree && _this58.config.dataTree === false && row.modules.dataTree.parent);
+                                       return !(_this48.table.options.dataTree && _this48.config.dataTree === false && row.modules.dataTree.parent);
                                        break;
                        }
 
                                        break;
                        }
 
@@ -17343,7 +16225,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                });
 
                rows.forEach(function (row, i) {
                });
 
                rows.forEach(function (row, i) {
-                       var rowData = row.getData(_this58.colVisProp);
+                       var rowData = row.getData(_this48.colVisProp);
                        var exportCols = [];
                        var indent = 0;
 
                        var exportCols = [];
                        var indent = 0;
 
@@ -17359,7 +16241,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));
                                        });
 
                                                exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));
                                        });
 
-                                       if (_this58.table.options.dataTree && _this58.config.dataTree !== false) {
+                                       if (_this48.table.options.dataTree && _this48.config.dataTree !== false) {
                                                indent = row.modules.dataTree.index;
                                        }
                                        break;
                                                indent = row.modules.dataTree.index;
                                        }
                                        break;
@@ -17372,7 +16254,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Export.prototype.genereateTableElement = function (list) {
        };
 
        Export.prototype.genereateTableElement = function (list) {
-               var _this59 = this;
+               var _this49 = this;
 
                var table = document.createElement("table"),
                    headerEl = document.createElement("thead"),
 
                var table = document.createElement("table"),
                    headerEl = document.createElement("thead"),
@@ -17405,20 +16287,20 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                list.forEach(function (row, i) {
                        switch (row.type) {
                                case "header":
                list.forEach(function (row, i) {
                        switch (row.type) {
                                case "header":
-                                       headerEl.appendChild(_this59.genereateHeaderElement(row, setup, styles));
+                                       headerEl.appendChild(_this49.genereateHeaderElement(row, setup, styles));
                                        break;
 
                                case "group":
                                        break;
 
                                case "group":
-                                       bodyEl.appendChild(_this59.genereateGroupElement(row, setup, styles));
+                                       bodyEl.appendChild(_this49.genereateGroupElement(row, setup, styles));
                                        break;
 
                                case "calc":
                                        break;
 
                                case "calc":
-                                       bodyEl.appendChild(_this59.genereateCalcElement(row, setup, styles));
+                                       bodyEl.appendChild(_this49.genereateCalcElement(row, setup, styles));
                                        break;
 
                                case "row":
                                        break;
 
                                case "row":
-                                       var rowEl = _this59.genereateRowElement(row, setup, styles);
-                                       _this59.mapElementStyles(i % 2 && styles.evenRow ? styles.evenRow : styles.oddRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+                                       var rowEl = _this49.genereateRowElement(row, setup, styles);
+                                       _this49.mapElementStyles(i % 2 && styles.evenRow ? styles.evenRow : styles.oddRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
                                        bodyEl.appendChild(rowEl);
                                        break;
                        }
                                        bodyEl.appendChild(rowEl);
                                        break;
                        }
@@ -17456,7 +16338,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Export.prototype.genereateHeaderElement = function (row, setup, styles) {
        };
 
        Export.prototype.genereateHeaderElement = function (row, setup, styles) {
-               var _this60 = this;
+               var _this50 = this;
 
                var rowEl = document.createElement("tr");
 
 
                var rowEl = document.createElement("tr");
 
@@ -17470,7 +16352,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                                cellEl.innerHTML = column.value;
 
 
                                cellEl.innerHTML = column.value;
 
-                               if (_this60.cloneTableStyle) {
+                               if (_this50.cloneTableStyle) {
                                        cellEl.style.boxSizing = "border-box";
                                }
 
                                        cellEl.style.boxSizing = "border-box";
                                }
 
@@ -17478,11 +16360,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        cellEl.classList.add(className);
                                });
 
                                        cellEl.classList.add(className);
                                });
 
-                               _this60.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-                               _this60.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+                               _this50.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+                               _this50.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
 
                                if (column.component._column.visible) {
 
                                if (column.component._column.visible) {
-                                       _this60.mapElementStyles(column.component.getElement(), cellEl, ["width"]);
+                                       _this50.mapElementStyles(column.component.getElement(), cellEl, ["width"]);
                                } else {
                                        if (column.component._column.definition.width) {
                                                cellEl.style.width = column.component._column.definition.width + "px";
                                } else {
                                        if (column.component._column.definition.width) {
                                                cellEl.style.width = column.component._column.definition.width + "px";
@@ -17490,7 +16372,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                }
 
                                if (column.component._column.parent) {
                                }
 
                                if (column.component._column.parent) {
-                                       _this60.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]);
+                                       _this50.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]);
                                }
 
                                rowEl.appendChild(cellEl);
                                }
 
                                rowEl.appendChild(cellEl);
@@ -17524,7 +16406,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                rowEl.classList.add("tabulator-print-table-group");
                rowEl.classList.add("tabulator-group-level-" + row.indent);
 
                rowEl.classList.add("tabulator-print-table-group");
                rowEl.classList.add("tabulator-group-level-" + row.indent);
 
-               if (group.component.isVisible()) {
+               if (group.component.getVisibility()) {
                        rowEl.classList.add("tabulator-group-visible");
                }
 
                        rowEl.classList.add("tabulator-group-visible");
                }
 
@@ -17546,7 +16428,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Export.prototype.genereateRowElement = function (row, setup, styles) {
        };
 
        Export.prototype.genereateRowElement = function (row, setup, styles) {
-               var _this61 = this;
+               var _this51 = this;
 
                var rowEl = document.createElement("tr");
 
 
                var rowEl = document.createElement("tr");
 
@@ -17574,10 +16456,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                return column.getComponent();
                                        },
                                        getData: function getData() {
                                                return column.getComponent();
                                        },
                                        getData: function getData() {
-                                               return row.component.getData();
+                                               return rowData;
                                        },
                                        getRow: function getRow() {
                                        },
                                        getRow: function getRow() {
-                                               return row.component;
+                                               return row.getComponent();
                                        },
                                        getComponent: function getComponent() {
                                                return cellWrapper;
                                        },
                                        getComponent: function getComponent() {
                                                return cellWrapper;
@@ -17591,8 +16473,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        cellEl.classList.add(className);
                                });
 
                                        cellEl.classList.add(className);
                                });
 
-                               if (_this61.table.modExists("format") && _this61.config.formatCells !== false) {
-                                       value = _this61.table.modules.format.formatExportValue(cellWrapper, _this61.colVisProp);
+                               if (_this51.table.modExists("format") && _this51.config.formatCells !== false) {
+                                       value = _this51.table.modules.format.formatExportValue(cellWrapper, _this51.colVisProp);
                                } else {
                                        switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
                                                case "object":
                                } else {
                                        switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
                                                case "object":
@@ -17616,14 +16498,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                }
 
                                if (styles.firstCell) {
                                }
 
                                if (styles.firstCell) {
-                                       _this61.mapElementStyles(styles.firstCell, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
+                                       _this51.mapElementStyles(styles.firstCell, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
 
                                        if (column.definition.align) {
                                                cellEl.style.textAlign = column.definition.align;
                                        }
                                }
 
 
                                        if (column.definition.align) {
                                                cellEl.style.textAlign = column.definition.align;
                                        }
                                }
 
-                               if (_this61.table.options.dataTree && _this61.config.dataTree !== false) {
+                               if (_this51.table.options.dataTree && _this51.config.dataTree !== false) {
                                        if (setup.treeElementField && setup.treeElementField == column.field || !setup.treeElementField && i == 0) {
                                                if (row.component._row.modules.dataTree.controlEl) {
                                                        cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);
                                        if (setup.treeElementField && setup.treeElementField == column.field || !setup.treeElementField && i == 0) {
                                                if (row.component._row.modules.dataTree.controlEl) {
                                                        cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);
@@ -17640,8 +16522,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        cellWrapper.modules.format.renderedCallback();
                                }
 
                                        cellWrapper.modules.format.renderedCallback();
                                }
 
-                               if (setup.rowFormatter && _this61.config.formatCells !== false) {
-                                       setup.rowFormatter(row.component);
+                               if (setup.rowFormatter && _this51.config.formatCells !== false) {
+                                       var rowComponent = row.getComponent();
+
+                                       rowComponent.getElement = function () {
+                                               return rowEl;
+                                       };
+
+                                       setup.rowFormatter(rowComponent);
                                }
                        }
                });
                                }
                        }
                });
@@ -17813,7 +16701,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Filter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {
        };
 
        Filter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {
-               var _this62 = this;
+               var _this52 = this;
 
                var self = this,
                    success = column.modules.filter.success,
 
                var self = this,
                    success = column.modules.filter.success,
@@ -17938,11 +16826,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                });
 
                                editorElement.addEventListener("focus", function (e) {
                                });
 
                                editorElement.addEventListener("focus", function (e) {
-                                       var left = _this62.table.columnManager.element.scrollLeft;
+                                       var left = _this52.table.columnManager.element.scrollLeft;
 
 
-                                       if (left !== _this62.table.rowManager.element.scrollLeft) {
-                                               _this62.table.rowManager.scrollHorizontal(left);
-                                               _this62.table.columnManager.scrollHorizontal(left);
+                                       if (left !== _this52.table.rowManager.element.scrollLeft) {
+                                               _this52.table.rowManager.scrollHorizontal(left);
+                                               _this52.table.columnManager.scrollHorizontal(left);
                                        }
                                });
 
                                        }
                                });
 
@@ -18183,7 +17071,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //filter to Object
        Filter.prototype.filtersToArray = function (filterList, ajax) {
 
        //filter to Object
        Filter.prototype.filtersToArray = function (filterList, ajax) {
-               var _this63 = this;
+               var _this53 = this;
 
                var output = [];
 
 
                var output = [];
 
@@ -18191,7 +17079,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        var item;
 
                        if (Array.isArray(filter)) {
                        var item;
 
                        if (Array.isArray(filter)) {
-                               output.push(_this63.filtersToArray(filter, ajax));
+                               output.push(_this53.filtersToArray(filter, ajax));
                        } else {
                                item = { field: filter.field, type: filter.type, value: filter.value };
 
                        } else {
                                item = { field: filter.field, type: filter.type, value: filter.value };
 
@@ -18490,7 +17378,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                //in array
                "in": function _in(filterVal, rowVal, rowData, filterParams) {
                        if (Array.isArray(filterVal)) {
                //in array
                "in": function _in(filterVal, rowVal, rowData, filterParams) {
                        if (Array.isArray(filterVal)) {
-                               return filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;
+                               return filterVal.indexOf(rowVal) > -1;
                        } else {
                                console.warn("Filter Error - filter value is not an array:", filterVal);
                                return false;
                        } else {
                                console.warn("Filter Error - filter value is not an array:", filterVal);
                                return false;
@@ -18560,9 +17448,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Format.prototype.cellRendered = function (cell) {
        };
 
        Format.prototype.cellRendered = function (cell) {
-               if (cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered) {
+               if (cell.modules.format && cell.modules.format.renderedCallback) {
                        cell.modules.format.renderedCallback();
                        cell.modules.format.renderedCallback();
-                       cell.modules.format.rendered = true;
                }
        };
 
                }
        };
 
@@ -18577,7 +17464,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
 
                        cell.modules.format.renderedCallback = callback;
                        }
 
                        cell.modules.format.renderedCallback = callback;
-                       cell.modules.format.rendered = false;
                }
 
                return cell.column.modules.format.formatter.call(this, component, params, onRendered);
                }
 
                return cell.column.modules.format.formatter.call(this, component, params, onRendered);
@@ -18594,7 +17480,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                }
 
                                cell.modules.format.renderedCallback = callback;
                                }
 
                                cell.modules.format.renderedCallback = callback;
-                               cell.modules.format.rendered = false;
                        };
 
                        params = typeof formatter.params === "function" ? formatter.params(component) : formatter.params;
                        };
 
                        params = typeof formatter.params === "function" ? formatter.params(component) : formatter.params;
@@ -19185,8 +18070,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        return el;
                },
 
                        return el;
                },
 
-               rowSelection: function rowSelection(cell, formatterParams, onRendered) {
-                       var _this64 = this;
+               rowSelection: function rowSelection(cell) {
+                       var _this54 = this;
 
                        var checkbox = document.createElement("input");
 
 
                        var checkbox = document.createElement("input");
 
@@ -19201,23 +18086,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                if (typeof cell.getRow == 'function') {
                                        var row = cell.getRow();
 
                                if (typeof cell.getRow == 'function') {
                                        var row = cell.getRow();
 
-                                       if (row instanceof RowComponent) {
-
-                                               checkbox.addEventListener("change", function (e) {
-                                                       row.toggleSelect();
-                                               });
+                                       checkbox.addEventListener("change", function (e) {
+                                               row.toggleSelect();
+                                       });
 
 
-                                               checkbox.checked = row.isSelected && row.isSelected();
-                                               this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
-                                       } else {
-                                               checkbox = "";
-                                       }
+                                       checkbox.checked = row.isSelected();
+                                       this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
                                } else {
                                        checkbox.addEventListener("change", function (e) {
                                } else {
                                        checkbox.addEventListener("change", function (e) {
-                                               if (_this64.table.modules.selectRow.selectedRows.length) {
-                                                       _this64.table.deselectRow();
+                                               if (_this54.table.modules.selectRow.selectedRows.length) {
+                                                       _this54.table.deselectRow();
                                                } else {
                                                } else {
-                                                       _this64.table.selectRow(formatterParams.rowRange);
+                                                       _this54.table.selectRow();
                                                }
                                        });
 
                                                }
                                        });
 
@@ -19299,7 +18179,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //quick layout to smooth horizontal scrolling
        FrozenColumns.prototype.scrollHorizontal = function () {
 
        //quick layout to smooth horizontal scrolling
        FrozenColumns.prototype.scrollHorizontal = function () {
-               var _this65 = this;
+               var _this55 = this;
 
                var rows;
 
 
                var rows;
 
@@ -19308,7 +18188,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        //layout all rows after scroll is complete
                        this.scrollEndTimer = setTimeout(function () {
 
                        //layout all rows after scroll is complete
                        this.scrollEndTimer = setTimeout(function () {
-                               _this65.layout();
+                               _this55.layout();
                        }, 100);
 
                        rows = this.table.rowManager.getVisibleRows();
                        }, 100);
 
                        rows = this.table.rowManager.getVisibleRows();
@@ -19321,7 +18201,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        rows.forEach(function (row) {
                                if (row.type === "row") {
 
                        rows.forEach(function (row) {
                                if (row.type === "row") {
-                                       _this65.layoutRow(row);
+                                       _this55.layoutRow(row);
                                }
                        });
 
                                }
                        });
 
@@ -19355,23 +18235,23 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //calculate column positions and layout headers
        FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
 
        //calculate column positions and layout headers
        FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
-               var _this66 = this;
+               var _this56 = this;
 
                var leftParents = [];
 
                this.leftColumns.forEach(function (column, i) {
 
                var leftParents = [];
 
                this.leftColumns.forEach(function (column, i) {
-                       column.modules.frozen.margin = _this66._calcSpace(_this66.leftColumns, i) + _this66.table.columnManager.scrollLeft + "px";
+                       column.modules.frozen.margin = _this56._calcSpace(_this56.leftColumns, i) + _this56.table.columnManager.scrollLeft + "px";
 
 
-                       if (i == _this66.leftColumns.length - 1) {
+                       if (i == _this56.leftColumns.length - 1) {
                                column.modules.frozen.edge = true;
                        } else {
                                column.modules.frozen.edge = false;
                        }
 
                        if (column.parent.isGroup) {
                                column.modules.frozen.edge = true;
                        } else {
                                column.modules.frozen.edge = false;
                        }
 
                        if (column.parent.isGroup) {
-                               var parentEl = _this66.getColGroupParentElement(column);
+                               var parentEl = _this56.getColGroupParentElement(column);
                                if (!leftParents.includes(parentEl)) {
                                if (!leftParents.includes(parentEl)) {
-                                       _this66.layoutElement(parentEl, column);
+                                       _this56.layoutElement(parentEl, column);
                                        leftParents.push(parentEl);
                                }
 
                                        leftParents.push(parentEl);
                                }
 
@@ -19379,34 +18259,34 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position);
                                }
                        } else {
                                        parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position);
                                }
                        } else {
-                               _this66.layoutElement(column.getElement(), column);
+                               _this56.layoutElement(column.getElement(), column);
                        }
 
                        if (allCells) {
                                column.cells.forEach(function (cell) {
                        }
 
                        if (allCells) {
                                column.cells.forEach(function (cell) {
-                                       _this66.layoutElement(cell.getElement(), column);
+                                       _this56.layoutElement(cell.getElement(), column);
                                });
                        }
                });
 
                this.rightColumns.forEach(function (column, i) {
                                });
                        }
                });
 
                this.rightColumns.forEach(function (column, i) {
-                       column.modules.frozen.margin = _this66.rightPadding - _this66._calcSpace(_this66.rightColumns, i + 1) + "px";
+                       column.modules.frozen.margin = _this56.rightPadding - _this56._calcSpace(_this56.rightColumns, i + 1) + "px";
 
 
-                       if (i == _this66.rightColumns.length - 1) {
+                       if (i == _this56.rightColumns.length - 1) {
                                column.modules.frozen.edge = true;
                        } else {
                                column.modules.frozen.edge = false;
                        }
 
                        if (column.parent.isGroup) {
                                column.modules.frozen.edge = true;
                        } else {
                                column.modules.frozen.edge = false;
                        }
 
                        if (column.parent.isGroup) {
-                               _this66.layoutElement(_this66.getColGroupParentElement(column), column);
+                               _this56.layoutElement(_this56.getColGroupParentElement(column), column);
                        } else {
                        } else {
-                               _this66.layoutElement(column.getElement(), column);
+                               _this56.layoutElement(column.getElement(), column);
                        }
 
                        if (allCells) {
                                column.cells.forEach(function (cell) {
                        }
 
                        if (allCells) {
                                column.cells.forEach(function (cell) {
-                                       _this66.layoutElement(cell.getElement(), column);
+                                       _this56.layoutElement(cell.getElement(), column);
                                });
                        }
                });
                                });
                        }
                });
@@ -19452,7 +18332,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        FrozenColumns.prototype.layoutRow = function (row) {
        };
 
        FrozenColumns.prototype.layoutRow = function (row) {
-               var _this67 = this;
+               var _this57 = this;
 
                var rowEl = row.getElement();
 
 
                var rowEl = row.getElement();
 
@@ -19463,7 +18343,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        var cell = row.getCell(column);
 
                        if (cell) {
                        var cell = row.getCell(column);
 
                        if (cell) {
-                               _this67.layoutElement(cell.getElement(), column);
+                               _this57.layoutElement(cell.getElement(), column);
                        }
                });
 
                        }
                });
 
@@ -19471,7 +18351,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        var cell = row.getCell(column);
 
                        if (cell) {
                        var cell = row.getCell(column);
 
                        if (cell) {
-                               _this67.layoutElement(cell.getElement(), column);
+                               _this57.layoutElement(cell.getElement(), column);
                        }
                });
        };
                        }
                });
        };
@@ -19493,9 +18373,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        FrozenColumns.prototype._calcSpace = function (columns, index) {
                var width = 0;
 
        FrozenColumns.prototype._calcSpace = function (columns, index) {
                var width = 0;
 
-               for (var _i12 = 0; _i12 < index; _i12++) {
-                       if (columns[_i12].visible) {
-                               width += columns[_i12].getWidth();
+               for (var _i8 = 0; _i8 < index; _i8++) {
+                       if (columns[_i8].visible) {
+                               width += columns[_i8].getWidth();
                        }
                }
 
                        }
                }
 
@@ -19573,10 +18453,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        row.modules.frozen = false;
 
 
                        row.modules.frozen = false;
 
-                       this.detachRow(row);
+                       var rowEl = row.getElement();
+                       rowEl.parentNode.removeChild(rowEl);
 
                        this.table.rowManager.adjustTableSize();
 
 
                        this.table.rowManager.adjustTableSize();
 
+                       this.rows.splice(index, 1);
+
                        this.table.rowManager.refreshActiveData("display");
 
                        if (this.rows.length) {
                        this.table.rowManager.refreshActiveData("display");
 
                        if (this.rows.length) {
@@ -19587,17 +18470,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
        };
 
                }
        };
 
-       FrozenRows.prototype.detachRow = function (row) {
-               var index = this.rows.indexOf(row);
-
-               if (index > -1) {
-                       var rowEl = row.getElement();
-                       rowEl.parentNode.removeChild(rowEl);
-
-                       this.rows.splice(index, 1);
-               }
-       };
-
        FrozenRows.prototype.styleRows = function (row) {
                var self = this;
 
        FrozenRows.prototype.styleRows = function (row) {
                var self = this;
 
@@ -19738,12 +18610,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Group.prototype.createValueGroups = function () {
        };
 
        Group.prototype.createValueGroups = function () {
-               var _this68 = this;
+               var _this58 = this;
 
                var level = this.level + 1;
                if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
                        this.groupManager.allowedValues[level].forEach(function (value) {
 
                var level = this.level + 1;
                if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
                        this.groupManager.allowedValues[level].forEach(function (value) {
-                               _this68._createGroup(value, level);
+                               _this58._createGroup(value, level);
                        });
                }
        };
                        });
                }
        };
@@ -19774,7 +18646,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        });
                }
 
                        });
                }
 
-               if ((self.groupManager.table.options.groupContextMenu || self.groupManager.table.options.groupClickMenu) && self.groupManager.table.modExists("menu")) {
+               if (self.groupManager.table.options.groupContextMenu && self.groupManager.table.modExists("menu")) {
                        self.groupManager.table.modules.menu.initializeGroup.call(self.groupManager.table.modules.menu, self);
                }
 
                        self.groupManager.table.modules.menu.initializeGroup.call(self.groupManager.table.modules.menu, self);
                }
 
@@ -20253,15 +19125,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                this.element.insertBefore(this.arrowElement, this.element.firstChild);
        };
 
                this.element.insertBefore(this.arrowElement, this.element.firstChild);
        };
 
-       Group.prototype.getPath = function () {
-               var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
-
-               path.unshift(this.key);
-               if (this.parent) {
-                       this.parent.getPath(path);
-               }
-               return path;
-       };
        ////////////// Standard Row Functions //////////////
 
        Group.prototype.getElement = function () {
        ////////////// Standard Row Functions //////////////
 
        Group.prototype.getElement = function () {
@@ -20503,7 +19366,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        GroupRows.prototype.getChildGroups = function (group) {
        };
 
        GroupRows.prototype.getChildGroups = function (group) {
-               var _this69 = this;
+               var _this59 = this;
 
                var groupComponents = [];
 
 
                var groupComponents = [];
 
@@ -20513,7 +19376,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                group.groupList.forEach(function (child) {
                        if (child.groupList.length) {
 
                group.groupList.forEach(function (child) {
                        if (child.groupList.length) {
-                               groupComponents = groupComponents.concat(_this69.getChildGroups(child));
+                               groupComponents = groupComponents.concat(_this59.getChildGroups(child));
                        } else {
                                groupComponents.push(child);
                        }
                        } else {
                                groupComponents.push(child);
                        }
@@ -20654,32 +19517,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                return !newGroupNeeded;
        };
 
                return !newGroupNeeded;
        };
 
-       GroupRows.prototype.reassignRowToGroup = function (row) {
-               var oldRowGroup = row.getGroup(),
-                   oldGroupPath = oldRowGroup.getPath(),
-                   newGroupPath = this.getExpectedPath(row),
-                   samePath = true;
-               // figure out if new group path is the same as old group path
-               var samePath = oldGroupPath.length == newGroupPath.length && oldGroupPath.every(function (element, index) {
-                       return element === newGroupPath[index];
-               });
-               // refresh if they new path and old path aren't the same (aka the row's groupings have changed)
-               if (!samePath) {
-                       oldRowGroup.removeRow(row);
-                       this.assignRowToGroup(row, self.groups);
-                       this.table.rowManager.refreshActiveData("group", false, true);
-               }
-       };
-
-       GroupRows.prototype.getExpectedPath = function (row) {
-               var groupPath = [],
-                   rowData = row.getData();
-               this.groupIDLookups.forEach(function (groupId) {
-                       groupPath.push(groupId.func(rowData));
-               });
-               return groupPath;
-       };
-
        GroupRows.prototype.updateGroupRows = function (force) {
                var self = this,
                    output = [],
        GroupRows.prototype.updateGroupRows = function (force) {
                var self = this,
                    output = [],
@@ -20705,10 +19542,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        GroupRows.prototype.scrollHeaders = function (left) {
        };
 
        GroupRows.prototype.scrollHeaders = function (left) {
-               if (this.table.options.virtualDomHoz) {
-                       left -= this.table.vdomHoz.vDomPadLeft;
-               }
-
                left = left + "px";
 
                this.groupList.forEach(function (group) {
                left = left + "px";
 
                this.groupList.forEach(function (group) {
@@ -20765,21 +19598,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                return this.history.length - (this.index + 1);
        };
 
                return this.history.length - (this.index + 1);
        };
 
-       History.prototype.clearComponentHistory = function (component) {
-               var index = this.history.findIndex(function (item) {
-                       return item.component === component;
-               });
-
-               if (index > -1) {
-                       this.history.splice(index, 1);
-                       if (index <= this.index) {
-                               this.index--;
-                       }
-
-                       this.clearComponentHistory(component);
-               }
-       };
-
        History.prototype.undo = function () {
 
                if (this.index > -1) {
        History.prototype.undo = function () {
 
                if (this.index > -1) {
@@ -21107,13 +19925,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Keybindings.prototype.mapBindings = function (bindings) {
        };
 
        Keybindings.prototype.mapBindings = function (bindings) {
-               var _this70 = this;
+               var _this60 = this;
 
                var self = this;
 
                var _loop2 = function _loop2(key) {
 
 
                var self = this;
 
                var _loop2 = function _loop2(key) {
 
-                       if (_this70.actions[key]) {
+                       if (_this60.actions[key]) {
 
                                if (bindings[key]) {
 
 
                                if (bindings[key]) {
 
@@ -21470,18 +20288,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Menu.prototype.initializeColumnHeader = function (column) {
        };
 
        Menu.prototype.initializeColumnHeader = function (column) {
-               var _this71 = this;
+               var _this61 = this;
 
                var headerMenuEl;
 
                if (column.definition.headerContextMenu) {
 
                var headerMenuEl;
 
                if (column.definition.headerContextMenu) {
-                       column.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));
-                       this.tapHold(column, column.definition.headerContextMenu);
-               }
+                       column.getElement().addEventListener("contextmenu", function (e) {
+                               var menu = typeof column.definition.headerContextMenu == "function" ? column.definition.headerContextMenu(column.getComponent()) : column.definition.headerContextMenu;
 
 
-               // if(column.definition.headerClickMenu){
-               //      column.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));
-               // }
+                               e.preventDefault();
+
+                               _this61.loadMenu(e, column, menu);
+                       });
+               }
 
                if (column.definition.headerMenu) {
 
 
                if (column.definition.headerMenu) {
 
@@ -21490,99 +20309,55 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        headerMenuEl.innerHTML = "&vellip;";
 
                        headerMenuEl.addEventListener("click", function (e) {
                        headerMenuEl.innerHTML = "&vellip;";
 
                        headerMenuEl.addEventListener("click", function (e) {
-                               var menu = typeof column.definition.headerMenu == "function" ? column.definition.headerMenu(column.getComponent(), e) : column.definition.headerMenu;
+                               var menu = typeof column.definition.headerMenu == "function" ? column.definition.headerMenu(column.getComponent()) : column.definition.headerMenu;
                                e.stopPropagation();
                                e.preventDefault();
 
                                e.stopPropagation();
                                e.preventDefault();
 
-                               _this71.loadMenu(e, column, menu);
+                               _this61.loadMenu(e, column, menu);
                        });
 
                        column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);
                }
        };
 
                        });
 
                        column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);
                }
        };
 
-       Menu.prototype.LoadMenuEvent = function (component, menu, e) {
-               menu = typeof menu == "function" ? menu(component.getComponent(), e) : menu;
-
-               // if(component instanceof Cell){
-               //      e.stopImmediatePropagation();
-               // }
-
-               this.loadMenu(e, component, menu);
-       };
-
-       Menu.prototype.tapHold = function (component, menu) {
-               var _this72 = this;
-
-               var element = component.getElement(),
-                   tapHold = null,
-                   loaded = false;
-
-               element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-                       loaded = false;
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               loaded = true;
+       Menu.prototype.initializeCell = function (cell) {
+               var _this62 = this;
 
 
-                               _this72.LoadMenuEvent(component, menu, e);
-                       }, 1000);
-               }, { passive: true });
+               cell.getElement().addEventListener("contextmenu", function (e) {
+                       var menu = typeof cell.column.definition.contextMenu == "function" ? cell.column.definition.contextMenu(cell.getComponent()) : cell.column.definition.contextMenu;
 
 
-               element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
+                       e.stopImmediatePropagation();
 
 
-                       if (loaded) {
-                               e.preventDefault();
-                       }
+                       _this62.loadMenu(e, cell, menu);
                });
        };
 
                });
        };
 
-       Menu.prototype.initializeCell = function (cell) {
-               if (cell.column.definition.contextMenu) {
-                       cell.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));
-                       this.tapHold(cell, cell.column.definition.contextMenu);
-               }
-
-               if (cell.column.definition.clickMenu) {
-                       cell.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));
-               }
-       };
-
        Menu.prototype.initializeRow = function (row) {
        Menu.prototype.initializeRow = function (row) {
-               if (this.table.options.rowContextMenu) {
-                       row.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));
-                       this.tapHold(row, this.table.options.rowContextMenu);
-               }
+               var _this63 = this;
 
 
-               if (this.table.options.rowClickMenu) {
-                       row.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));
-               }
+               row.getElement().addEventListener("contextmenu", function (e) {
+                       var menu = typeof _this63.table.options.rowContextMenu == "function" ? _this63.table.options.rowContextMenu(row.getComponent()) : _this63.table.options.rowContextMenu;
+
+                       _this63.loadMenu(e, row, menu);
+               });
        };
 
        Menu.prototype.initializeGroup = function (group) {
        };
 
        Menu.prototype.initializeGroup = function (group) {
-               if (this.table.options.groupContextMenu) {
-                       group.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));
-                       this.tapHold(group, this.table.options.groupContextMenu);
-               }
+               var _this64 = this;
 
 
-               if (this.table.options.groupClickMenu) {
-                       group.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));
-               }
+               group.getElement().addEventListener("contextmenu", function (e) {
+                       var menu = typeof _this64.table.options.groupContextMenu == "function" ? _this64.table.options.groupContextMenu(group.getComponent()) : _this64.table.options.groupContextMenu;
+
+                       _this64.loadMenu(e, group, menu);
+               });
        };
 
        Menu.prototype.loadMenu = function (e, component, menu) {
        };
 
        Menu.prototype.loadMenu = function (e, component, menu) {
-               var _this73 = this;
+               var _this65 = this;
 
 
-               var docHeight = Math.max(document.body.offsetHeight, window.innerHeight),
-                   touch = !(e instanceof MouseEvent);
+               var docHeight = Math.max(document.body.offsetHeight, window.innerHeight);
 
 
-               if (!touch) {
-                       e.preventDefault();
-               }
+               e.preventDefault();
 
                //abort if no menu set
                if (!menu || !menu.length) {
 
                //abort if no menu set
                if (!menu || !menu.length) {
@@ -21596,7 +20371,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        }
                } else {
                        this.nestedMenuBlock = setTimeout(function () {
                        }
                } else {
                        this.nestedMenuBlock = setTimeout(function () {
-                               _this73.nestedMenuBlock = false;
+                               _this65.nestedMenuBlock = false;
                        }, 100);
                }
 
                        }, 100);
                }
 
@@ -21636,25 +20411,27 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        });
                                } else {
                                        itemEl.addEventListener("click", function (e) {
                                        });
                                } else {
                                        itemEl.addEventListener("click", function (e) {
-                                               _this73.hideMenu();
+                                               _this65.hideMenu();
                                                item.action(e, component.getComponent());
                                        });
                                }
                        }
 
                                                item.action(e, component.getComponent());
                                        });
                                }
                        }
 
-                       _this73.menuEl.appendChild(itemEl);
+                       _this65.menuEl.appendChild(itemEl);
                });
 
                });
 
-               this.menuEl.style.top = (touch ? e.touches[0].pageY : e.pageY) + "px";
-               this.menuEl.style.left = (touch ? e.touches[0].pageX : e.pageX) + "px";
+               this.menuEl.style.top = e.pageY + "px";
+               this.menuEl.style.left = e.pageX + "px";
+
+               document.body.addEventListener("click", this.blurEvent);
+               this.table.rowManager.element.addEventListener("scroll", this.blurEvent);
 
                setTimeout(function () {
 
                setTimeout(function () {
-                       _this73.table.rowManager.element.addEventListener("scroll", _this73.blurEvent);
-                       document.body.addEventListener("click", _this73.blurEvent);
-                       document.body.addEventListener("contextmenu", _this73.blurEvent);
-                       document.body.addEventListener("keydown", _this73.escEvent);
+                       document.body.addEventListener("contextmenu", _this65.blurEvent);
                }, 100);
 
                }, 100);
 
+               document.body.addEventListener("keydown", this.escEvent);
+
                document.body.appendChild(this.menuEl);
 
                //move menu to start on right edge if it is too close to the edge of the screen
                document.body.appendChild(this.menuEl);
 
                //move menu to start on right edge if it is too close to the edge of the screen
@@ -22386,7 +21163,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //establish connection with other tables
        MoveRows.prototype.connectToTables = function (row) {
 
        //establish connection with other tables
        MoveRows.prototype.connectToTables = function (row) {
-               var _this74 = this;
+               var _this66 = this;
 
                var connectionTables;
 
 
                var connectionTables;
 
@@ -22410,15 +21187,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        this.connectionSelectorsElements.forEach(function (query) {
                                if (typeof query === "string") {
 
                        this.connectionSelectorsElements.forEach(function (query) {
                                if (typeof query === "string") {
-                                       _this74.connectionElements = _this74.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));
+                                       _this66.connectionElements = _this66.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));
                                } else {
                                } else {
-                                       _this74.connectionElements.push(query);
+                                       _this66.connectionElements.push(query);
                                }
                        });
 
                        this.connectionElements.forEach(function (element) {
                                var dropEvent = function dropEvent(e) {
                                }
                        });
 
                        this.connectionElements.forEach(function (element) {
                                var dropEvent = function dropEvent(e) {
-                                       _this74.elementRowDrop(e, element, _this74.moving);
+                                       _this66.elementRowDrop(e, element, _this66.moving);
                                };
 
                                element.addEventListener("mouseup", dropEvent);
                                };
 
                                element.addEventListener("mouseup", dropEvent);
@@ -22792,7 +21569,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Page.prototype.generatePageSizeSelectList = function () {
        };
 
        Page.prototype.generatePageSizeSelectList = function () {
-               var _this75 = this;
+               var _this67 = this;
 
                var pageSizes = [];
 
 
                var pageSizes = [];
 
@@ -22810,8 +21587,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                if (this.pageSizes.indexOf(this.size) == -1) {
                                        pageSizes = [];
 
                                if (this.pageSizes.indexOf(this.size) == -1) {
                                        pageSizes = [];
 
-                                       for (var _i13 = 1; _i13 < 5; _i13++) {
-                                               pageSizes.push(this.size * _i13);
+                                       for (var _i9 = 1; _i9 < 5; _i9++) {
+                                               pageSizes.push(this.size * _i9);
                                        }
 
                                        this.pageSizes = pageSizes;
                                        }
 
                                        this.pageSizes = pageSizes;
@@ -22827,14 +21604,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                itemEl.value = item;
 
                                if (item === true) {
                                itemEl.value = item;
 
                                if (item === true) {
-                                       _this75.table.modules.localize.bind("pagination|all", function (value) {
+                                       _this67.table.modules.localize.bind("pagination|all", function (value) {
                                                itemEl.innerHTML = value;
                                        });
                                } else {
                                        itemEl.innerHTML = item;
                                }
 
                                                itemEl.innerHTML = value;
                                        });
                                } else {
                                        itemEl.innerHTML = item;
                                }
 
-                               _this75.pageSizeSelect.appendChild(itemEl);
+                               _this67.pageSizeSelect.appendChild(itemEl);
                        });
 
                        this.pageSizeSelect.value = this.size;
                        });
 
                        this.pageSizeSelect.value = this.size;
@@ -22896,11 +21673,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                //click bindings
                self.firstBut.addEventListener("click", function () {
 
                //click bindings
                self.firstBut.addEventListener("click", function () {
-                       self.setPage(1).then(function () {}).catch(function () {});
+                       self.setPage(1);
                });
 
                self.prevBut.addEventListener("click", function () {
                });
 
                self.prevBut.addEventListener("click", function () {
-                       self.previousPage().then(function () {}).catch(function () {});
+                       self.previousPage();
                });
 
                self.nextBut.addEventListener("click", function () {
                });
 
                self.nextBut.addEventListener("click", function () {
@@ -22908,7 +21685,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                });
 
                self.lastBut.addEventListener("click", function () {
                });
 
                self.lastBut.addEventListener("click", function () {
-                       self.setPage(self.max).then(function () {}).catch(function () {});
+                       self.setPage(self.max);
                });
 
                if (self.table.options.paginationElement) {
                });
 
                if (self.table.options.paginationElement) {
@@ -23028,7 +21805,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //set current page number
        Page.prototype.setPage = function (page) {
 
        //set current page number
        Page.prototype.setPage = function (page) {
-               var _this76 = this;
+               var _this68 = this;
 
                var self = this;
 
 
                var self = this;
 
@@ -23054,9 +21831,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        page = parseInt(page);
 
 
                        page = parseInt(page);
 
-                       if (page > 0 && page <= _this76.max) {
-                               _this76.page = page;
-                               _this76.trigger().then(function () {
+                       if (page > 0 && page <= _this68.max) {
+                               _this68.page = page;
+                               _this68.trigger().then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
                                        resolve();
                                }).catch(function () {
                                        reject();
@@ -23066,24 +21843,24 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        self.table.modules.persistence.save("page");
                                }
                        } else {
                                        self.table.modules.persistence.save("page");
                                }
                        } else {
-                               console.warn("Pagination Error - Requested page is out of range of 1 - " + _this76.max + ":", page);
+                               console.warn("Pagination Error - Requested page is out of range of 1 - " + _this68.max + ":", page);
                                reject();
                        }
                });
        };
 
        Page.prototype.setPageToRow = function (row) {
                                reject();
                        }
                });
        };
 
        Page.prototype.setPageToRow = function (row) {
-               var _this77 = this;
+               var _this69 = this;
 
                return new Promise(function (resolve, reject) {
 
 
                return new Promise(function (resolve, reject) {
 
-                       var rows = _this77.table.rowManager.getDisplayRows(_this77.displayIndex - 1);
+                       var rows = _this69.table.rowManager.getDisplayRows(_this69.displayIndex - 1);
                        var index = rows.indexOf(row);
 
                        if (index > -1) {
                        var index = rows.indexOf(row);
 
                        if (index > -1) {
-                               var page = _this77.size === true ? 1 : Math.ceil((index + 1) / _this77.size);
+                               var page = _this69.size === true ? 1 : Math.ceil((index + 1) / _this69.size);
 
 
-                               _this77.setPage(page).then(function () {
+                               _this69.setPage(page).then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
                                        resolve();
                                }).catch(function () {
                                        reject();
@@ -23141,9 +21918,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        self.nextBut.disabled = false;
                }
 
                        self.nextBut.disabled = false;
                }
 
-               for (var _i14 = min; _i14 <= max; _i14++) {
-                       if (_i14 > 0 && _i14 <= self.max) {
-                               self.pagesElement.appendChild(self._generatePageButton(_i14));
+               for (var _i10 = min; _i10 <= max; _i10++) {
+                       if (_i10 > 0 && _i10 <= self.max) {
+                               self.pagesElement.appendChild(self._generatePageButton(_i10));
                        }
                }
 
                        }
                }
 
@@ -23171,7 +21948,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                button.textContent = page;
 
                button.addEventListener("click", function (e) {
                button.textContent = page;
 
                button.addEventListener("click", function (e) {
-                       self.setPage(page).then(function () {}).catch(function () {});
+                       self.setPage(page);
                });
 
                return button;
                });
 
                return button;
@@ -23179,19 +21956,19 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //previous page
        Page.prototype.previousPage = function () {
 
        //previous page
        Page.prototype.previousPage = function () {
-               var _this78 = this;
+               var _this70 = this;
 
                return new Promise(function (resolve, reject) {
 
                return new Promise(function (resolve, reject) {
-                       if (_this78.page > 1) {
-                               _this78.page--;
-                               _this78.trigger().then(function () {
+                       if (_this70.page > 1) {
+                               _this70.page--;
+                               _this70.trigger().then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
                                });
 
                                        resolve();
                                }).catch(function () {
                                        reject();
                                });
 
-                               if (_this78.table.options.persistence && _this78.table.modExists("persistence", true) && _this78.table.modules.persistence.config.page) {
-                                       _this78.table.modules.persistence.save("page");
+                               if (_this70.table.options.persistence && _this70.table.modExists("persistence", true) && _this70.table.modules.persistence.config.page) {
+                                       _this70.table.modules.persistence.save("page");
                                }
                        } else {
                                console.warn("Pagination Error - Previous page would be less than page 1:", 0);
                                }
                        } else {
                                console.warn("Pagination Error - Previous page would be less than page 1:", 0);
@@ -23202,23 +21979,23 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //next page
        Page.prototype.nextPage = function () {
 
        //next page
        Page.prototype.nextPage = function () {
-               var _this79 = this;
+               var _this71 = this;
 
                return new Promise(function (resolve, reject) {
 
                return new Promise(function (resolve, reject) {
-                       if (_this79.page < _this79.max) {
-                               _this79.page++;
-                               _this79.trigger().then(function () {
+                       if (_this71.page < _this71.max) {
+                               _this71.page++;
+                               _this71.trigger().then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
                                });
 
                                        resolve();
                                }).catch(function () {
                                        reject();
                                });
 
-                               if (_this79.table.options.persistence && _this79.table.modExists("persistence", true) && _this79.table.modules.persistence.config.page) {
-                                       _this79.table.modules.persistence.save("page");
+                               if (_this71.table.options.persistence && _this71.table.modExists("persistence", true) && _this71.table.modules.persistence.config.page) {
+                                       _this71.table.modules.persistence.save("page");
                                }
                        } else {
                                }
                        } else {
-                               if (!_this79.progressiveLoad) {
-                                       console.warn("Pagination Error - Next page would be greater than maximum page of " + _this79.max + ":", _this79.max + 1);
+                               if (!_this71.progressiveLoad) {
+                                       console.warn("Pagination Error - Next page would be greater than maximum page of " + _this71.max + ":", _this71.max + 1);
                                }
                                reject();
                        }
                                }
                                reject();
                        }
@@ -23252,7 +22029,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        if (this.size === true) {
                                start = 0;
 
                        if (this.size === true) {
                                start = 0;
-                               end = data.length;
+                               end = data.length - 1;
                        } else {
                                start = this.size * (this.page - 1);
                                end = start + parseInt(this.size);
                        } else {
                                start = this.size * (this.page - 1);
                                end = start + parseInt(this.size);
@@ -23260,9 +22037,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        this._setPageButtons();
 
 
                        this._setPageButtons();
 
-                       for (var _i15 = start; _i15 < end; _i15++) {
-                               if (data[_i15]) {
-                                       output.push(data[_i15]);
+                       for (var _i11 = start; _i11 < end; _i11++) {
+                               if (data[_i11]) {
+                                       output.push(data[_i11]);
                                }
                        }
 
                                }
                        }
 
@@ -23276,28 +22053,28 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Page.prototype.trigger = function () {
        };
 
        Page.prototype.trigger = function () {
-               var _this80 = this;
+               var _this72 = this;
 
                var left;
 
                return new Promise(function (resolve, reject) {
 
 
                var left;
 
                return new Promise(function (resolve, reject) {
 
-                       switch (_this80.mode) {
+                       switch (_this72.mode) {
                                case "local":
                                case "local":
-                                       left = _this80.table.rowManager.scrollLeft;
+                                       left = _this72.table.rowManager.scrollLeft;
 
 
-                                       _this80.table.rowManager.refreshActiveData("page");
-                                       _this80.table.rowManager.scrollHorizontal(left);
+                                       _this72.table.rowManager.refreshActiveData("page");
+                                       _this72.table.rowManager.scrollHorizontal(left);
 
 
-                                       _this80.table.options.pageLoaded.call(_this80.table, _this80.getPage());
+                                       _this72.table.options.pageLoaded.call(_this72.table, _this72.getPage());
                                        resolve();
                                        break;
 
                                case "remote":
                                case "progressive_load":
                                case "progressive_scroll":
                                        resolve();
                                        break;
 
                                case "remote":
                                case "progressive_load":
                                case "progressive_scroll":
-                                       _this80.table.modules.ajax.blockActiveRequest();
-                                       _this80._getRemotePage().then(function () {
+                                       _this72.table.modules.ajax.blockActiveRequest();
+                                       _this72._getRemotePage().then(function () {
                                                resolve();
                                        }).catch(function () {
                                                reject();
                                                resolve();
                                        }).catch(function () {
                                                reject();
@@ -23305,14 +22082,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        break;
 
                                default:
                                        break;
 
                                default:
-                                       console.warn("Pagination Error - no such pagination mode:", _this80.mode);
+                                       console.warn("Pagination Error - no such pagination mode:", _this72.mode);
                                        reject();
                        }
                });
        };
 
        Page.prototype._getRemotePage = function () {
                                        reject();
                        }
                });
        };
 
        Page.prototype._getRemotePage = function () {
-               var _this81 = this;
+               var _this73 = this;
 
                var self = this,
                    oldParams,
 
                var self = this,
                    oldParams,
@@ -23329,33 +22106,33 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        pageParams = self.table.modules.ajax.getParams();
 
                        //configure request params
                        pageParams = self.table.modules.ajax.getParams();
 
                        //configure request params
-                       pageParams[_this81.dataSentNames.page] = self.page;
+                       pageParams[_this73.dataSentNames.page] = self.page;
 
                        //set page size if defined
 
                        //set page size if defined
-                       if (_this81.size) {
-                               pageParams[_this81.dataSentNames.size] = _this81.size;
+                       if (_this73.size) {
+                               pageParams[_this73.dataSentNames.size] = _this73.size;
                        }
 
                        //set sort data if defined
                        }
 
                        //set sort data if defined
-                       if (_this81.table.options.ajaxSorting && _this81.table.modExists("sort")) {
+                       if (_this73.table.options.ajaxSorting && _this73.table.modExists("sort")) {
                                var sorters = self.table.modules.sort.getSort();
 
                                sorters.forEach(function (item) {
                                        delete item.column;
                                });
 
                                var sorters = self.table.modules.sort.getSort();
 
                                sorters.forEach(function (item) {
                                        delete item.column;
                                });
 
-                               pageParams[_this81.dataSentNames.sorters] = sorters;
+                               pageParams[_this73.dataSentNames.sorters] = sorters;
                        }
 
                        //set filter data if defined
                        }
 
                        //set filter data if defined
-                       if (_this81.table.options.ajaxFiltering && _this81.table.modExists("filter")) {
+                       if (_this73.table.options.ajaxFiltering && _this73.table.modExists("filter")) {
                                var filters = self.table.modules.filter.getFilters(true, true);
                                var filters = self.table.modules.filter.getFilters(true, true);
-                               pageParams[_this81.dataSentNames.filters] = filters;
+                               pageParams[_this73.dataSentNames.filters] = filters;
                        }
 
                        self.table.modules.ajax.setParams(pageParams);
 
                        }
 
                        self.table.modules.ajax.setParams(pageParams);
 
-                       self.table.modules.ajax.sendRequest(_this81.progressiveLoad).then(function (data) {
+                       self.table.modules.ajax.sendRequest(_this73.progressiveLoad).then(function (data) {
                                self._parseRemoteData(data);
                                resolve();
                        }).catch(function (e) {
                                self._parseRemoteData(data);
                                resolve();
                        }).catch(function (e) {
@@ -23746,8 +22523,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        Persistence.prototype.getGroupConfig = function () {
        };
 
        Persistence.prototype.getGroupConfig = function () {
-               var data = {};
-
                if (this.config.group) {
                        if (this.config.group === true || this.config.group.groupBy) {
                                data.groupBy = this.table.options.groupBy;
                if (this.config.group) {
                        if (this.config.group === true || this.config.group.groupBy) {
                                data.groupBy = this.table.options.groupBy;
@@ -23784,8 +22559,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        //parse columns for data to store
        Persistence.prototype.parseColumns = function (columns) {
                var self = this,
        //parse columns for data to store
        Persistence.prototype.parseColumns = function (columns) {
                var self = this,
-                   definitions = [],
-                   excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"];
+                   definitions = [];
 
                columns.forEach(function (column) {
                        var defStore = {},
 
                columns.forEach(function (column) {
                        var defStore = {},
@@ -23816,9 +22590,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                        break;
 
                                                default:
                                                        break;
 
                                                default:
-                                                       if (typeof colDef[key] !== "function" && excludedKeys.indexOf(key) === -1) {
-                                                               defStore[key] = colDef[key];
-                                                       }
+                                                       defStore[key] = colDef[key];
                                        }
                                });
                        }
                                        }
                                });
                        }
@@ -24142,7 +22914,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        ReactiveData.prototype.watchRow = function (row) {
        };
 
        ReactiveData.prototype.watchRow = function (row) {
-               var data = row.getData();
+               var self = this,
+                   data = row.getData();
 
                this.blocked = true;
 
 
                this.blocked = true;
 
@@ -24150,98 +22923,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        this.watchKey(row, data, key);
                }
 
                        this.watchKey(row, data, key);
                }
 
-               if (this.table.options.dataTree) {
-                       this.watchTreeChildren(row);
-               }
-
                this.blocked = false;
        };
 
                this.blocked = false;
        };
 
-       ReactiveData.prototype.watchTreeChildren = function (row) {
-               var self = this,
-                   childField = row.getData()[this.table.options.dataTreeChildField],
-                   origFuncs = {};
-
-               function rebuildTree() {
-                       self.table.modules.dataTree.initializeRow(row);
-                       self.table.modules.dataTree.layoutRow(row);
-                       self.table.rowManager.refreshActiveData("tree", false, true);
-               }
-
-               if (childField) {
-
-                       origFuncs.push = childField.push;
-
-                       Object.defineProperty(childField, "push", {
-                               enumerable: false,
-                               configurable: true,
-                               value: function value() {
-                                       var result = origFuncs.push.apply(childField, arguments);
-
-                                       rebuildTree();
-
-                                       return result;
-                               }
-                       });
-
-                       origFuncs.unshift = childField.unshift;
-
-                       Object.defineProperty(childField, "unshift", {
-                               enumerable: false,
-                               configurable: true,
-                               value: function value() {
-                                       var result = origFuncs.unshift.apply(childField, arguments);
-
-                                       rebuildTree();
-
-                                       return result;
-                               }
-                       });
-
-                       origFuncs.shift = childField.shift;
-
-                       Object.defineProperty(childField, "shift", {
-                               enumerable: false,
-                               configurable: true,
-                               value: function value() {
-                                       var result = origFuncs.shift.call(childField);
-
-                                       rebuildTree();
-
-                                       return result;
-                               }
-                       });
-
-                       origFuncs.pop = childField.pop;
-
-                       Object.defineProperty(childField, "pop", {
-                               enumerable: false,
-                               configurable: true,
-                               value: function value() {
-                                       var result = origFuncs.pop.call(childField);
-
-                                       rebuildTree();
-
-                                       return result;
-                               }
-                       });
-
-                       origFuncs.splice = childField.splice;
-
-                       Object.defineProperty(childField, "splice", {
-                               enumerable: false,
-                               configurable: true,
-                               value: function value() {
-                                       var result = origFuncs.splice.apply(childField, arguments);
-
-                                       rebuildTree();
-
-                                       return result;
-                               }
-                       });
-               }
-       };
-
        ReactiveData.prototype.watchKey = function (row, data, key) {
                var self = this,
                    props = Object.getOwnPropertyDescriptor(data, key),
        ReactiveData.prototype.watchKey = function (row, data, key) {
                var self = this,
                    props = Object.getOwnPropertyDescriptor(data, key),
@@ -24403,15 +23087,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                function mouseMove(e) {
                        // self.table.columnManager.tempScrollBlock();
 
                function mouseMove(e) {
                        // self.table.columnManager.tempScrollBlock();
 
-                       if (self.table.rtl) {
-                               column.setWidth(self.startWidth - ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-                       } else {
-                               column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-                       }
-
-                       if (self.table.options.virtualDomHoz) {
-                               self.table.vdomHoz.reinitialize(true);
-                       }
+                       column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
 
                        if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
                                column.checkCellHeights();
 
                        if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
                                column.checkCellHeights();
@@ -24572,7 +23248,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
        };
 
        ResizeTable.prototype.initialize = function (row) {
        };
 
        ResizeTable.prototype.initialize = function (row) {
-               var _this82 = this;
+               var _this74 = this;
 
                var table = this.table,
                    tableStyle;
 
                var table = this.table,
                    tableStyle;
@@ -24595,17 +23271,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        var nodeHeight = Math.floor(entry[0].contentRect.height);
                                        var nodeWidth = Math.floor(entry[0].contentRect.width);
 
                                        var nodeHeight = Math.floor(entry[0].contentRect.height);
                                        var nodeWidth = Math.floor(entry[0].contentRect.width);
 
-                                       if (_this82.tableHeight != nodeHeight || _this82.tableWidth != nodeWidth) {
-                                               _this82.tableHeight = nodeHeight;
-                                               _this82.tableWidth = nodeWidth;
+                                       if (_this74.tableHeight != nodeHeight || _this74.tableWidth != nodeWidth) {
+                                               _this74.tableHeight = nodeHeight;
+                                               _this74.tableWidth = nodeWidth;
 
                                                if (table.element.parentNode) {
 
                                                if (table.element.parentNode) {
-                                                       _this82.containerHeight = table.element.parentNode.clientHeight;
-                                                       _this82.containerWidth = table.element.parentNode.clientWidth;
-                                               }
-
-                                               if (table.options.virtualDomHoz) {
-                                                       table.vdomHoz.reinitialize(true);
+                                                       _this74.containerHeight = table.element.parentNode.clientHeight;
+                                                       _this74.containerWidth = table.element.parentNode.clientWidth;
                                                }
 
                                                table.redraw();
                                                }
 
                                                table.redraw();
@@ -24625,15 +23297,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                                var nodeHeight = Math.floor(entry[0].contentRect.height);
                                                var nodeWidth = Math.floor(entry[0].contentRect.width);
 
                                                var nodeHeight = Math.floor(entry[0].contentRect.height);
                                                var nodeWidth = Math.floor(entry[0].contentRect.width);
 
-                                               if (_this82.containerHeight != nodeHeight || _this82.containerWidth != nodeWidth) {
-                                                       _this82.containerHeight = nodeHeight;
-                                                       _this82.containerWidth = nodeWidth;
-                                                       _this82.tableHeight = table.element.clientHeight;
-                                                       _this82.tableWidth = table.element.clientWidth;
-                                               }
+                                               if (_this74.containerHeight != nodeHeight || _this74.containerWidth != nodeWidth) {
+                                                       _this74.containerHeight = nodeHeight;
+                                                       _this74.containerWidth = nodeWidth;
+                                                       _this74.tableHeight = table.element.clientHeight;
+                                                       _this74.tableWidth = table.element.clientWidth;
 
 
-                                               if (table.options.virtualDomHoz) {
-                                                       table.vdomHoz.reinitialize(true);
+                                                       table.redraw();
                                                }
 
                                                table.redraw();
                                                }
 
                                                table.redraw();
@@ -24645,10 +23315,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                } else {
                        this.binding = function () {
                                if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
                } else {
                        this.binding = function () {
                                if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-                                       if (table.options.virtualDomHoz) {
-                                               table.vdomHoz.reinitialize(true);
-                                       }
-
                                        table.redraw();
                                }
                        };
                                        table.redraw();
                                }
                        };
@@ -24721,16 +23387,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                }
 
                //assign collapse column
                }
 
                //assign collapse column
-               for (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i16 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
+               for (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i12 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
                        var _ref;
 
                        if (_isArray) {
                        var _ref;
 
                        if (_isArray) {
-                               if (_i16 >= _iterator.length) break;
-                               _ref = _iterator[_i16++];
+                               if (_i12 >= _iterator.length) break;
+                               _ref = _iterator[_i12++];
                        } else {
                        } else {
-                               _i16 = _iterator.next();
-                               if (_i16.done) break;
-                               _ref = _i16.value;
+                               _i12 = _iterator.next();
+                               if (_i12.done) break;
+                               _ref = _i12.value;
                        }
 
                        var col = _ref;
                        }
 
                        var col = _ref;
@@ -25130,14 +23796,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //select a number of rows
        SelectRow.prototype.selectRows = function (rows) {
 
        //select a number of rows
        SelectRow.prototype.selectRows = function (rows) {
-               var _this83 = this;
+               var _this75 = this;
 
                var rowMatch;
 
                switch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {
                        case "undefined":
                                this.table.rowManager.rows.forEach(function (row) {
 
                var rowMatch;
 
                switch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {
                        case "undefined":
                                this.table.rowManager.rows.forEach(function (row) {
-                                       _this83._selectRow(row, true, true);
+                                       _this75._selectRow(row, true, true);
                                });
 
                                this._rowSelectionChanged();
                                });
 
                                this._rowSelectionChanged();
@@ -25151,7 +23817,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                        this._selectRow(rowMatch, true, true);
                                } else {
                                        this.table.rowManager.getRows(rows).forEach(function (row) {
                                        this._selectRow(rowMatch, true, true);
                                } else {
                                        this.table.rowManager.getRows(rows).forEach(function (row) {
-                                               _this83._selectRow(row, true, true);
+                                               _this75._selectRow(row, true, true);
                                        });
                                }
 
                                        });
                                }
 
@@ -25161,7 +23827,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        default:
                                if (Array.isArray(rows)) {
                                        rows.forEach(function (row) {
                        default:
                                if (Array.isArray(rows)) {
                                        rows.forEach(function (row) {
-                                               _this83._selectRow(row, true, true);
+                                               _this75._selectRow(row, true, true);
                                        });
 
                                        this._rowSelectionChanged();
                                        });
 
                                        this._rowSelectionChanged();
@@ -25233,7 +23899,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                        rowCount = self.selectedRows.length;
 
 
                        rowCount = self.selectedRows.length;
 
-                       for (var _i17 = 0; _i17 < rowCount; _i17++) {
+                       for (var _i13 = 0; _i13 < rowCount; _i13++) {
                                self._deselectRow(self.selectedRows[0], true);
                        }
 
                                self._deselectRow(self.selectedRows[0], true);
                        }
 
@@ -25348,16 +24014,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                var children = this.table.modules.dataTree.getChildren(row);
 
                if (select) {
                var children = this.table.modules.dataTree.getChildren(row);
 
                if (select) {
-                       for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i18 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
+                       for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i14 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
                                var _ref2;
 
                                if (_isArray2) {
                                var _ref2;
 
                                if (_isArray2) {
-                                       if (_i18 >= _iterator2.length) break;
-                                       _ref2 = _iterator2[_i18++];
+                                       if (_i14 >= _iterator2.length) break;
+                                       _ref2 = _iterator2[_i14++];
                                } else {
                                } else {
-                                       _i18 = _iterator2.next();
-                                       if (_i18.done) break;
-                                       _ref2 = _i18.value;
+                                       _i14 = _iterator2.next();
+                                       if (_i14.done) break;
+                                       _ref2 = _i14.value;
                                }
 
                                var child = _ref2;
                                }
 
                                var child = _ref2;
@@ -25365,16 +24031,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                                this._selectRow(child, true);
                        }
                } else {
                                this._selectRow(child, true);
                        }
                } else {
-                       for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i19 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
+                       for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i15 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
                                var _ref3;
 
                                if (_isArray3) {
                                var _ref3;
 
                                if (_isArray3) {
-                                       if (_i19 >= _iterator3.length) break;
-                                       _ref3 = _iterator3[_i19++];
+                                       if (_i15 >= _iterator3.length) break;
+                                       _ref3 = _iterator3[_i15++];
                                } else {
                                } else {
-                                       _i19 = _iterator3.next();
-                                       if (_i19.done) break;
-                                       _ref3 = _i19.value;
+                                       _i15 = _iterator3.next();
+                                       if (_i15.done) break;
+                                       _ref3 = _i15.value;
                                }
 
                                var _child = _ref3;
                                }
 
                                var _child = _ref3;
@@ -25427,19 +24093,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        colEl.classList.add("tabulator-sortable");
 
                        arrowEl = document.createElement("div");
                        colEl.classList.add("tabulator-sortable");
 
                        arrowEl = document.createElement("div");
-                       arrowEl.classList.add("tabulator-col-sorter");
-
-                       if (_typeof(this.table.options.headerSortElement) == "object") {
-                               arrowEl.appendChild(this.table.options.headerSortElement);
-                       } else {
-                               arrowEl.innerHTML = this.table.options.headerSortElement;
-                       }
-
+                       arrowEl.classList.add("tabulator-arrow");
                        //create sorter arrow
                        content.appendChild(arrowEl);
 
                        //create sorter arrow
                        content.appendChild(arrowEl);
 
-                       column.modules.sort.element = arrowEl;
-
                        //sort on click
                        colEl.addEventListener("click", function (e) {
                                var dir = "",
                        //sort on click
                        colEl.addEventListener("click", function (e) {
                                var dir = "",
@@ -25679,7 +24336,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
        //sort each item in sort list
        Sort.prototype._sortItems = function (data, sortList) {
 
        //sort each item in sort list
        Sort.prototype._sortItems = function (data, sortList) {
-               var _this84 = this;
+               var _this76 = this;
 
                var sorterCount = sortList.length - 1;
 
 
                var sorterCount = sortList.length - 1;
 
@@ -25689,7 +24346,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
                        for (var i = sorterCount; i >= 0; i--) {
                                var sortItem = sortList[i];
 
                        for (var i = sorterCount; i >= 0; i--) {
                                var sortItem = sortList[i];
 
-                               result = _this84._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);
+                               result = _this76._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);
 
                                if (result !== 0) {
                                        break;
 
                                if (result !== 0) {
                                        break;
@@ -26098,7 +24755,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
 
                if (cell.modules.validate && cell.modules.validate.invalid) {
 
 
                if (cell.modules.validate && cell.modules.validate.invalid) {
 
-                       cell.getElement().classList.remove("tabulator-validation-fail");
+                       cell.element.classList.remove("tabulator-validation-fail");
                        cell.modules.validate.invalid = false;
 
                        invalidIndex = this.invalidCells.indexOf(cell);
                        cell.modules.validate.invalid = false;
 
                        invalidIndex = this.invalidCells.indexOf(cell);
diff --git a/admin/js/vendors/tabulator/js/tabulator.min.js b/admin/js/vendors/tabulator/js/tabulator.min.js
new file mode 100644 (file)
index 0000000..425389a
--- /dev/null
@@ -0,0 +1 @@
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};!function(global,factory){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.Tabulator=factory()}(this,(function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function value(predicate){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),len=o.length>>>0;if("function"!=typeof predicate)throw new TypeError("predicate must be a function");for(var thisArg=arguments[1],k=0;k<len;){var kValue=o[k];if(predicate.call(thisArg,kValue,k,o))return k;k++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function value(predicate){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),len=o.length>>>0;if("function"!=typeof predicate)throw new TypeError("predicate must be a function");for(var thisArg=arguments[1],k=0;k<len;){var kValue=o[k];if(predicate.call(thisArg,kValue,k,o))return kValue;k++}}}),String.prototype.includes||(String.prototype.includes=function(search,start){if(search instanceof RegExp)throw TypeError("first argument must not be a RegExp");return void 0===start&&(start=0),-1!==this.indexOf(search,start)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function value(searchElement,fromIndex){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),len=o.length>>>0;if(0===len)return!1;var n=0|fromIndex,k=Math.max(n>=0?n:len-Math.abs(n),0);function sameValueZero(x,y){return x===y||"number"==typeof x&&"number"==typeof y&&isNaN(x)&&isNaN(y)}for(;k<len;){if(sameValueZero(o[k],searchElement))return!0;k++}return!1}}),"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function assign(target,varArgs){if(null==target)throw new TypeError("Cannot convert undefined or null to object");for(var to=Object(target),index=1;index<arguments.length;index++){var nextSource=arguments[index];if(null!=nextSource)for(var nextKey in nextSource)Object.prototype.hasOwnProperty.call(nextSource,nextKey)&&(to[nextKey]=nextSource[nextKey])}return to},writable:!0,configurable:!0});var ColumnManager=function ColumnManager(table){this.table=table,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};ColumnManager.prototype.createHeadersElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-headers"),el},ColumnManager.prototype.createHeaderElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-header"),this.table.options.headerVisible||el.classList.add("tabulator-header-hidden"),el},ColumnManager.prototype.initialize=function(){var self=this},ColumnManager.prototype.setRowManager=function(manager){this.rowManager=manager},ColumnManager.prototype.getElement=function(){return this.element},ColumnManager.prototype.getHeadersElement=function(){return this.headersElement},ColumnManager.prototype.scrollHorizontal=function(left){var hozAdjust=0,scrollWidth=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=left,left>scrollWidth?(hozAdjust=left-scrollWidth,this.element.style.marginLeft=-hozAdjust+"px"):this.element.style.marginLeft=0,this.scrollLeft=left,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},ColumnManager.prototype.generateColumnsFromRowData=function(data){var cols=[],row,sorter;if(data&&data.length){for(var key in row=data[0]){var col={field:key,title:key},value=row[key];switch(void 0===value?"undefined":_typeof(value)){case"undefined":sorter="string";break;case"boolean":sorter="boolean";break;case"object":sorter=Array.isArray(value)?"array":"string";break;default:sorter=isNaN(value)||""===value?value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}col.sorter=sorter,cols.push(col)}this.table.options.columns=cols,this.setColumns(this.table.options.columns)}},ColumnManager.prototype.setColumns=function(cols,row){for(var self=this;self.headersElement.firstChild;)self.headersElement.removeChild(self.headersElement.firstChild);self.columns=[],self.columnsByIndex=[],self.columnsByField={},self.table.modExists("frozenColumns")&&self.table.modules.frozenColumns.reset(),cols.forEach((function(def,i){self._addColumn(def)})),self._reIndexColumns(),self.table.options.responsiveLayout&&self.table.modExists("responsiveLayout",!0)&&self.table.modules.responsiveLayout.initialize(),self.redraw(!0)},ColumnManager.prototype._addColumn=function(definition,before,nextToColumn){var column=new Column(definition,this),colEl=column.getElement(),index=nextToColumn?this.findColumnIndex(nextToColumn):nextToColumn;if(nextToColumn&&index>-1){var parentIndex=this.columns.indexOf(nextToColumn.getTopColumn()),nextEl=nextToColumn.getElement();before?(this.columns.splice(parentIndex,0,column),nextEl.parentNode.insertBefore(colEl,nextEl)):(this.columns.splice(parentIndex+1,0,column),nextEl.parentNode.insertBefore(colEl,nextEl.nextSibling))}else before?(this.columns.unshift(column),this.headersElement.insertBefore(column.getElement(),this.headersElement.firstChild)):(this.columns.push(column),this.headersElement.appendChild(column.getElement())),column.columnRendered();return column},ColumnManager.prototype.registerColumnField=function(col){col.definition.field&&(this.columnsByField[col.definition.field]=col)},ColumnManager.prototype.registerColumnPosition=function(col){this.columnsByIndex.push(col)},ColumnManager.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach((function(column){column.reRegisterPosition()}))},ColumnManager.prototype._verticalAlignHeaders=function(){var self=this,minHeight=0;self.columns.forEach((function(column){var height;column.clearVerticalAlign(),(height=column.getHeight())>minHeight&&(minHeight=height)})),self.columns.forEach((function(column){column.verticalAlign(self.table.options.columnHeaderVertAlign,minHeight)})),self.rowManager.adjustTableSize()},ColumnManager.prototype.findColumn=function(subject){var self=this,match;return"object"!=(void 0===subject?"undefined":_typeof(subject))?this.columnsByField[subject]||!1:subject instanceof Column?subject:subject instanceof ColumnComponent?subject._getSelf()||!1:"undefined"!=typeof HTMLElement&&subject instanceof HTMLElement&&this.columns.find((function(column){return column.element===subject}))||!1},ColumnManager.prototype.getColumnByField=function(field){return this.columnsByField[field]},ColumnManager.prototype.getColumnsByFieldRoot=function(root){var _this=this,matches=[];return Object.keys(this.columnsByField).forEach((function(field){var fieldRoot;field.split(".")[0]===root&&matches.push(_this.columnsByField[field])})),matches},ColumnManager.prototype.getColumnByIndex=function(index){return this.columnsByIndex[index]},ColumnManager.prototype.getFirstVisibileColumn=function(index){var index;return(index=this.columnsByIndex.findIndex((function(col){return col.visible})))>-1&&this.columnsByIndex[index]},ColumnManager.prototype.getColumns=function(){return this.columns},ColumnManager.prototype.findColumnIndex=function(column){return this.columnsByIndex.findIndex((function(col){return column===col}))},ColumnManager.prototype.getRealColumns=function(){return this.columnsByIndex},ColumnManager.prototype.traverse=function(callback){var self=this;this.columnsByIndex.forEach((function(column,i){callback(column,i)}))},ColumnManager.prototype.getDefinitions=function(active){var self=this,output=[];return this.columnsByIndex.forEach((function(column){(!active||active&&column.visible)&&output.push(column.getDefinition())})),output},ColumnManager.prototype.getDefinitionTree=function(){var self=this,output=[];return this.columns.forEach((function(column){output.push(column.getDefinition(!0))})),output},ColumnManager.prototype.getComponents=function(structured){var self=this,output=[],columns;return(structured?this.columns:this.columnsByIndex).forEach((function(column){output.push(column.getComponent())})),output},ColumnManager.prototype.getWidth=function(){var width=0;return this.columnsByIndex.forEach((function(column){column.visible&&(width+=column.getWidth())})),width},ColumnManager.prototype.moveColumn=function(from,to,after){this.moveColumnActual(from,to,after),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),to.element.parentNode.insertBefore(from.element,to.element),after&&to.element.parentNode.insertBefore(to.element,from.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.moveColumnActual=function(from,to,after){from.parent.isGroup?this._moveColumnInArray(from.parent.columns,from,to,after):this._moveColumnInArray(this.columns,from,to,after),this._moveColumnInArray(this.columnsByIndex,from,to,after,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,from.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},ColumnManager.prototype._moveColumnInArray=function(columns,from,to,after,updateRows){var fromIndex=columns.indexOf(from),toIndex;fromIndex>-1&&(columns.splice(fromIndex,1),(toIndex=columns.indexOf(to))>-1?after&&(toIndex+=1):toIndex=fromIndex,columns.splice(toIndex,0,from),updateRows&&this.table.rowManager.rows.forEach((function(row){if(row.cells.length){var cell=row.cells.splice(fromIndex,1)[0];row.cells.splice(toIndex,0,cell)}})))},ColumnManager.prototype.scrollToColumn=function(column,position,ifVisible){var _this2=this,left=0,offset=0,adjust=0,colEl=column.getElement();return new Promise((function(resolve,reject){if(void 0===position&&(position=_this2.table.options.scrollToColumnPosition),void 0===ifVisible&&(ifVisible=_this2.table.options.scrollToColumnIfVisible),column.visible){switch(position){case"middle":case"center":adjust=-_this2.element.clientWidth/2;break;case"right":adjust=colEl.clientWidth-_this2.headersElement.clientWidth}if(!ifVisible&&(offset=colEl.offsetLeft)>0&&offset+colEl.offsetWidth<_this2.element.clientWidth)return!1;left=colEl.offsetLeft+_this2.element.scrollLeft+adjust,left=Math.max(Math.min(left,_this2.table.rowManager.element.scrollWidth-_this2.table.rowManager.element.clientWidth),0),_this2.table.rowManager.scrollHorizontal(left),_this2.scrollHorizontal(left),resolve()}else console.warn("Scroll Error - Column not visible"),reject("Scroll Error - Column not visible")}))},ColumnManager.prototype.generateCells=function(row){var self=this,cells=[];return this.columnsByIndex.forEach((function(column){cells.push(column.generateCell(row))})),cells},ColumnManager.prototype.getFlexBaseWidth=function(){var self=this,totalWidth=self.table.element.clientWidth,fixedWidth=0;return self.rowManager.element.scrollHeight>self.rowManager.element.clientHeight&&(totalWidth-=self.rowManager.element.offsetWidth-self.rowManager.element.clientWidth),this.columnsByIndex.forEach((function(column){var width,minWidth,colWidth;column.visible&&(width=column.definition.width||0,minWidth=void 0===column.minWidth?self.table.options.columnMinWidth:parseInt(column.minWidth),colWidth="string"==typeof width?width.indexOf("%")>-1?totalWidth/100*parseInt(width):parseInt(width):width,fixedWidth+=colWidth>minWidth?colWidth:minWidth)})),fixedWidth},ColumnManager.prototype.addColumn=function(definition,before,nextToColumn){var _this3=this;return new Promise((function(resolve,reject){var column=_this3._addColumn(definition,before,nextToColumn);_this3._reIndexColumns(),_this3.table.options.responsiveLayout&&_this3.table.modExists("responsiveLayout",!0)&&_this3.table.modules.responsiveLayout.initialize(),_this3.table.modExists("columnCalcs")&&_this3.table.modules.columnCalcs.recalc(_this3.table.rowManager.activeRows),_this3.redraw(),"fitColumns"!=_this3.table.modules.layout.getMode()&&column.reinitializeWidth(),_this3._verticalAlignHeaders(),_this3.table.rowManager.reinitialize(),resolve(column)}))},ColumnManager.prototype.deregisterColumn=function(column){var field=column.getField(),index;field&&delete this.columnsByField[field],(index=this.columnsByIndex.indexOf(column))>-1&&this.columnsByIndex.splice(index,1),(index=this.columns.indexOf(column))>-1&&this.columns.splice(index,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},ColumnManager.prototype.redraw=function(force){force&&(Tabulator.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():force?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),force&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var ColumnComponent=function ColumnComponent(column){this._column=column,this.type="ColumnComponent"};ColumnComponent.prototype.getElement=function(){return this._column.getElement()},ColumnComponent.prototype.getDefinition=function(){return this._column.getDefinition()},ColumnComponent.prototype.getField=function(){return this._column.getField()},ColumnComponent.prototype.getCells=function(){var cells=[];return this._column.cells.forEach((function(cell){cells.push(cell.getComponent())})),cells},ColumnComponent.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._column.visible},ColumnComponent.prototype.isVisible=function(){return this._column.visible},ColumnComponent.prototype.show=function(){this._column.isGroup?this._column.columns.forEach((function(column){column.show()})):this._column.show()},ColumnComponent.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach((function(column){column.hide()})):this._column.hide()},ColumnComponent.prototype.toggle=function(){this._column.visible?this.hide():this.show()},ColumnComponent.prototype.delete=function(){return this._column.delete()},ColumnComponent.prototype.getSubColumns=function(){var output=[];return this._column.columns.length&&this._column.columns.forEach((function(column){output.push(column.getComponent())})),output},ColumnComponent.prototype.getParentColumn=function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()},ColumnComponent.prototype._getSelf=function(){return this._column},ColumnComponent.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},ColumnComponent.prototype.getTable=function(){return this._column.table},ColumnComponent.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},ColumnComponent.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},ColumnComponent.prototype.getHeaderFilterValue=function(){if(this._column.table.modExists("filter",!0))return this._column.table.modules.filter.getHeaderFilterValue(this._column)},ColumnComponent.prototype.setHeaderFilterValue=function(value){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,value)},ColumnComponent.prototype.move=function(to,after){var toColumn=this._column.table.columnManager.findColumn(to);toColumn?this._column.table.columnManager.moveColumn(this._column,toColumn,after):console.warn("Move Error - No matching column found:",toColumn)},ColumnComponent.prototype.getNextColumn=function(){var nextCol=this._column.nextColumn();return!!nextCol&&nextCol.getComponent()},ColumnComponent.prototype.getPrevColumn=function(){var prevCol=this._column.prevColumn();return!!prevCol&&prevCol.getComponent()},ColumnComponent.prototype.updateDefinition=function(updates){return this._column.updateDefinition(updates)},ColumnComponent.prototype.getWidth=function(){return this._column.getWidth()},ColumnComponent.prototype.setWidth=function(width){return!0===width?this._column.reinitializeWidth(!0):this._column.setWidth(width)},ColumnComponent.prototype.validate=function(){return this._column.validate()};var Column=function Column(def,parent){var self=this;this.table=parent.table,this.definition=def,this.parent=parent,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this._mapDepricatedFunctionality(),def.columns?(this.isGroup=!0,def.columns.forEach((function(def,i){var newCol=new Column(def,self);self.attachColumn(newCol)})),self.checkColumnVisibility()):parent.registerColumnField(this),def.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};Column.prototype.createElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-col"),el.setAttribute("role","columnheader"),el.setAttribute("aria-sort","none"),el},Column.prototype.createGroupElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-col-group-cols"),el},Column.prototype.checkDefinition=function(){var _this4=this;Object.keys(this.definition).forEach((function(key){-1===_this4.defaultOptionList.indexOf(key)&&console.warn("Invalid column definition option in '"+(_this4.field||_this4.definition.title)+"' column:",key)}))},Column.prototype.setField=function(field){this.field=field,this.fieldStructure=field?this.table.options.nestedFieldSeparator?field.split(this.table.options.nestedFieldSeparator):[field]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},Column.prototype.registerColumnPosition=function(column){this.parent.registerColumnPosition(column)},Column.prototype.registerColumnField=function(column){this.parent.registerColumnField(column)},Column.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach((function(column){column.reRegisterPosition()})):this.registerColumnPosition(this)},Column.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign")),void 0!==this.definition.downloadTitle&&(this.definition.titleDownload=this.definition.downloadTitle,console.warn("downloadTitle definition property is deprecated, you should now use titleDownload"))},Column.prototype.setTooltip=function(){var self=this,def=self.definition,tooltip=def.headerTooltip||!1===def.tooltip?def.headerTooltip:self.table.options.tooltipsHeader;tooltip?!0===tooltip?def.field?self.table.modules.localize.bind("columns|"+def.field,(function(value){self.element.setAttribute("title",value||def.title)})):self.element.setAttribute("title",def.title):("function"==typeof tooltip&&!1===(tooltip=tooltip(self.getComponent()))&&(tooltip=""),self.element.setAttribute("title",tooltip)):self.element.setAttribute("title","")},Column.prototype._buildHeader=function(){for(var self=this,def=self.definition;self.element.firstChild;)self.element.removeChild(self.element.firstChild);def.headerVertical&&(self.element.classList.add("tabulator-col-vertical"),"flip"===def.headerVertical&&self.element.classList.add("tabulator-col-vertical-flip")),self.contentElement=self._bindEvents(),self.contentElement=self._buildColumnHeaderContent(),self.element.appendChild(self.contentElement),self.isGroup?self._buildGroupHeader():self._buildColumnHeader(),self.setTooltip(),self.table.options.resizableColumns&&self.table.modExists("resizeColumns")&&self.table.modules.resizeColumns.initializeColumn("header",self,self.element),def.headerFilter&&self.table.modExists("filter")&&self.table.modExists("edit")&&(void 0!==def.headerFilterPlaceholder&&def.field&&self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field,def.headerFilterPlaceholder),self.table.modules.filter.initializeColumn(self)),self.table.modExists("frozenColumns")&&self.table.modules.frozenColumns.initializeColumn(self),self.table.options.movableColumns&&!self.isGroup&&self.table.modExists("moveColumn")&&self.table.modules.moveColumn.initializeColumn(self),(def.topCalc||def.bottomCalc)&&self.table.modExists("columnCalcs")&&self.table.modules.columnCalcs.initializeColumn(self),self.table.modExists("persistence")&&self.table.modules.persistence.config.columns&&self.table.modules.persistence.initializeColumn(self),self.element.addEventListener("mouseenter",(function(e){self.setTooltip()}))},Column.prototype._bindEvents=function(){var self=this,def=self.definition,dblTap,tapHold,tap;"function"==typeof def.headerClick&&self.element.addEventListener("click",(function(e){def.headerClick(e,self.getComponent())})),"function"==typeof def.headerDblClick&&self.element.addEventListener("dblclick",(function(e){def.headerDblClick(e,self.getComponent())})),"function"==typeof def.headerContext&&self.element.addEventListener("contextmenu",(function(e){def.headerContext(e,self.getComponent())})),"function"==typeof def.headerTap&&(tap=!1,self.element.addEventListener("touchstart",(function(e){tap=!0}),{passive:!0}),self.element.addEventListener("touchend",(function(e){tap&&def.headerTap(e,self.getComponent()),tap=!1}))),"function"==typeof def.headerDblTap&&(dblTap=null,self.element.addEventListener("touchend",(function(e){dblTap?(clearTimeout(dblTap),dblTap=null,def.headerDblTap(e,self.getComponent())):dblTap=setTimeout((function(){clearTimeout(dblTap),dblTap=null}),300)}))),"function"==typeof def.headerTapHold&&(tapHold=null,self.element.addEventListener("touchstart",(function(e){clearTimeout(tapHold),tapHold=setTimeout((function(){clearTimeout(tapHold),tapHold=null,tap=!1,def.headerTapHold(e,self.getComponent())}),1e3)}),{passive:!0}),self.element.addEventListener("touchend",(function(e){clearTimeout(tapHold),tapHold=null}))),"function"==typeof def.cellClick&&(self.cellEvents.cellClick=def.cellClick),"function"==typeof def.cellDblClick&&(self.cellEvents.cellDblClick=def.cellDblClick),"function"==typeof def.cellContext&&(self.cellEvents.cellContext=def.cellContext),"function"==typeof def.cellMouseEnter&&(self.cellEvents.cellMouseEnter=def.cellMouseEnter),"function"==typeof def.cellMouseLeave&&(self.cellEvents.cellMouseLeave=def.cellMouseLeave),"function"==typeof def.cellMouseOver&&(self.cellEvents.cellMouseOver=def.cellMouseOver),"function"==typeof def.cellMouseOut&&(self.cellEvents.cellMouseOut=def.cellMouseOut),"function"==typeof def.cellMouseMove&&(self.cellEvents.cellMouseMove=def.cellMouseMove),"function"==typeof def.cellTap&&(self.cellEvents.cellTap=def.cellTap),"function"==typeof def.cellDblTap&&(self.cellEvents.cellDblTap=def.cellDblTap),"function"==typeof def.cellTapHold&&(self.cellEvents.cellTapHold=def.cellTapHold),"function"==typeof def.cellEdited&&(self.cellEvents.cellEdited=def.cellEdited),"function"==typeof def.cellEditing&&(self.cellEvents.cellEditing=def.cellEditing),"function"==typeof def.cellEditCancelled&&(self.cellEvents.cellEditCancelled=def.cellEditCancelled)},Column.prototype._buildColumnHeader=function(){var self=this,def=self.definition,table=self.table,sortable,classeNames;(table.modExists("sort")&&table.modules.sort.initializeColumn(self,self.contentElement),(def.headerContextMenu||def.headerMenu)&&table.modExists("menu")&&table.modules.menu.initializeColumnHeader(self),table.modExists("format")&&table.modules.format.initializeColumn(self),void 0!==def.editor&&table.modExists("edit")&&table.modules.edit.initializeColumn(self),void 0!==def.validator&&table.modExists("validate")&&table.modules.validate.initializeColumn(self),table.modExists("mutator")&&table.modules.mutator.initializeColumn(self),table.modExists("accessor")&&table.modules.accessor.initializeColumn(self),_typeof(table.options.responsiveLayout)&&table.modExists("responsiveLayout")&&table.modules.responsiveLayout.initializeColumn(self),void 0!==def.visible&&(def.visible?self.show(!0):self.hide(!0)),def.cssClass)&&def.cssClass.split(" ").forEach((function(className){self.element.classList.add(className)}));def.field&&this.element.setAttribute("tabulator-field",def.field),self.setMinWidth(void 0===def.minWidth?self.table.options.columnMinWidth:parseInt(def.minWidth)),self.reinitializeWidth(),self.tooltip=self.definition.tooltip||!1===self.definition.tooltip?self.definition.tooltip:self.table.options.tooltips,self.hozAlign=void 0===self.definition.hozAlign?self.table.options.cellHozAlign:self.definition.hozAlign,self.vertAlign=void 0===self.definition.vertAlign?self.table.options.cellVertAlign:self.definition.vertAlign},Column.prototype._buildColumnHeaderContent=function(){var def=this.definition,table=this.table,contentElement=document.createElement("div");return contentElement.classList.add("tabulator-col-content"),this.titleElement=this._buildColumnHeaderTitle(),contentElement.appendChild(this.titleElement),contentElement},Column.prototype._buildColumnHeaderTitle=function(){var self=this,def=self.definition,table=self.table,title,titleHolderElement=document.createElement("div");if(titleHolderElement.classList.add("tabulator-col-title"),def.editableTitle){var titleElement=document.createElement("input");titleElement.classList.add("tabulator-title-editor"),titleElement.addEventListener("click",(function(e){e.stopPropagation(),titleElement.focus()})),titleElement.addEventListener("change",(function(){def.title=titleElement.value,table.options.columnTitleChanged.call(self.table,self.getComponent())})),titleHolderElement.appendChild(titleElement),def.field?table.modules.localize.bind("columns|"+def.field,(function(text){titleElement.value=text||def.title||"&nbsp;"})):titleElement.value=def.title||"&nbsp;"}else def.field?table.modules.localize.bind("columns|"+def.field,(function(text){self._formatColumnHeaderTitle(titleHolderElement,text||def.title||"&nbsp;")})):self._formatColumnHeaderTitle(titleHolderElement,def.title||"&nbsp;");return titleHolderElement},Column.prototype._formatColumnHeaderTitle=function(el,title){var _this5=this,formatter,contents,params,mockCell,onRendered;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(formatter=this.table.modules.format.getFormatter(this.definition.titleFormatter),onRendered=function onRendered(callback){_this5.titleFormatterRendered=callback},mockCell={getValue:function getValue(){return title},getElement:function getElement(){return el}},params="function"==typeof(params=this.definition.titleFormatterParams||{})?params():params,void 0===(contents=formatter.call(this.table.modules.format,mockCell,params,onRendered))?"undefined":_typeof(contents)){case"object":contents instanceof Node?el.appendChild(contents):(el.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",contents));break;case"undefined":case"null":el.innerHTML="";break;default:el.innerHTML=contents}else el.innerHTML=title},Column.prototype._buildGroupHeader=function(){var _this6=this,classeNames;(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass)&&this.definition.cssClass.split(" ").forEach((function(className){_this6.element.classList.add(className)}));(this.definition.headerContextMenu||this.definition.headerMenu)&&this.table.modExists("menu")&&this.table.modules.menu.initializeColumnHeader(this),this.element.appendChild(this.groupElement)},Column.prototype._getFlatData=function(data){return data[this.field]},Column.prototype._getNestedData=function(data){for(var dataObj=data,structure=this.fieldStructure,length=structure.length,output,_i=0;_i<length&&(output=dataObj=dataObj[structure[_i]],dataObj);_i++);return output},Column.prototype._setFlatData=function(data,value){this.field&&(data[this.field]=value)},Column.prototype._setNestedData=function(data,value){for(var dataObj=data,structure=this.fieldStructure,length=structure.length,_i2=0;_i2<length;_i2++)if(_i2==length-1)dataObj[structure[_i2]]=value;else{if(!dataObj[structure[_i2]]){if(void 0===value)break;dataObj[structure[_i2]]={}}dataObj=dataObj[structure[_i2]]}},Column.prototype.attachColumn=function(column){var self=this;this.groupElement?(this.columns.push(column),this.groupElement.appendChild(column.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},Column.prototype.verticalAlign=function(alignment,height){var parentHeight=this.parent.isGroup?this.parent.getGroupElement().clientHeight:height||this.parent.getHeadersElement().clientHeight;this.element.style.height=parentHeight+"px",this.isGroup&&(this.groupElement.style.minHeight=parentHeight-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===alignment||(this.element.style.paddingTop="bottom"===alignment?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach((function(column){column.verticalAlign(alignment)}))},Column.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach((function(column){column.clearVerticalAlign()}))},Column.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},Column.prototype.getElement=function(){return this.element},Column.prototype.getGroupElement=function(){return this.groupElement},Column.prototype.getField=function(){return this.field},Column.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},Column.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},Column.prototype.getColumns=function(){return this.columns},Column.prototype.getCells=function(){return this.cells},Column.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},Column.prototype.getDefinition=function(updateBranches){var colDefs=[];return this.isGroup&&updateBranches&&(this.columns.forEach((function(column){colDefs.push(column.getDefinition(!0))})),this.definition.columns=colDefs),this.definition},Column.prototype.checkColumnVisibility=function(){var visible=!1;this.columns.forEach((function(column){column.visible&&(visible=!0)})),visible?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},Column.prototype.show=function(silent,responsiveToggle){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(cell){cell.show()})),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!responsiveToggle&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),silent||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.hide=function(silent,responsiveToggle){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach((function(cell){cell.hide()})),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!responsiveToggle&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),silent||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.matchChildWidths=function(){var childWidth=0;this.contentElement&&this.columns.length&&(this.columns.forEach((function(column){column.visible&&(childWidth+=column.getWidth())})),this.contentElement.style.maxWidth=childWidth-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.setWidth=function(width){this.widthFixed=!0,this.setWidthActual(width)},Column.prototype.setWidthActual=function(width){isNaN(width)&&(width=Math.floor(this.table.element.clientWidth/100*parseInt(width))),width=Math.max(this.minWidth,width),this.width=width,this.widthStyled=width?width+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach((function(cell){cell.setWidth()})),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},Column.prototype.checkCellHeights=function(){var rows=[];this.cells.forEach((function(cell){cell.row.heightInitialized&&(null!==cell.row.getElement().offsetParent?(rows.push(cell.row),cell.row.clearCellHeight()):cell.row.heightInitialized=!1)})),rows.forEach((function(row){row.calcHeight()})),rows.forEach((function(row){row.setCellHeight()}))},Column.prototype.getWidth=function(){var width=0;return this.isGroup?this.columns.forEach((function(column){column.visible&&(width+=column.getWidth())})):width=this.width,width},Column.prototype.getHeight=function(){return this.element.offsetHeight},Column.prototype.setMinWidth=function(minWidth){this.minWidth=minWidth,this.minWidthStyled=minWidth?minWidth+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach((function(cell){cell.setMinWidth()}))},Column.prototype.delete=function(){var _this7=this;return new Promise((function(resolve,reject){_this7.isGroup&&_this7.columns.forEach((function(column){column.delete()})),_this7.table.modExists("edit")&&_this7.table.modules.edit.currentCell.column===_this7&&_this7.table.modules.edit.cancelEdit();for(var cellCount=_this7.cells.length,_i3=0;_i3<cellCount;_i3++)_this7.cells[0].delete();_this7.element.parentNode.removeChild(_this7.element),_this7.table.columnManager.deregisterColumn(_this7),resolve()}))},Column.prototype.columnRendered=function(){this.titleFormatterRendered&&this.titleFormatterRendered()},Column.prototype.validate=function(){var invalid=[];return this.cells.forEach((function(cell){cell.validate()||invalid.push(cell.getComponent())})),!invalid.length||invalid},Column.prototype.generateCell=function(row){var self=this,cell=new Cell(this,row);return this.cells.push(cell),cell},Column.prototype.nextColumn=function(){var index=this.table.columnManager.findColumnIndex(this);return index>-1&&this._nextVisibleColumn(index+1)},Column.prototype._nextVisibleColumn=function(index){var column=this.table.columnManager.getColumnByIndex(index);return!column||column.visible?column:this._nextVisibleColumn(index+1)},Column.prototype.prevColumn=function(){var index=this.table.columnManager.findColumnIndex(this);return index>-1&&this._prevVisibleColumn(index-1)},Column.prototype._prevVisibleColumn=function(index){var column=this.table.columnManager.getColumnByIndex(index);return!column||column.visible?column:this._prevVisibleColumn(index-1)},Column.prototype.reinitializeWidth=function(force){this.widthFixed=!1,void 0===this.definition.width||force||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},Column.prototype.fitToData=function(){var self=this;this.widthFixed||(this.element.style.width="",this.cells.forEach((function(cell){cell.clearWidth()})));var maxWidth=this.element.offsetWidth;this.width&&this.widthFixed||(this.cells.forEach((function(cell){var width=cell.getWidth();width>maxWidth&&(maxWidth=width)})),maxWidth&&this.setWidthActual(maxWidth+1))},Column.prototype.updateDefinition=function(updates){var _this8=this;return new Promise((function(resolve,reject){var definition;_this8.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),reject("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(definition=Object.assign({},_this8.getDefinition()),definition=Object.assign(definition,updates),_this8.table.columnManager.addColumn(definition,!1,_this8).then((function(column){definition.field==_this8.field&&(_this8.field=!1),_this8.delete().then((function(){resolve(column.getComponent())})).catch((function(err){reject(err)}))})).catch((function(err){reject(err)})))}))},Column.prototype.deleteCell=function(cell){var index=this.cells.indexOf(cell);index>-1&&this.cells.splice(index,1)},Column.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams","titlePrint","titleClipboard","titleHtmlOutput","titleDownload"],Column.prototype.getComponent=function(){return this.component||(this.component=new ColumnComponent(this)),this.component};var RowManager=function RowManager(table){this.table=table,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};RowManager.prototype.createHolderElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-tableHolder"),el.setAttribute("tabindex",0),el},RowManager.prototype.createTableElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-table"),el},RowManager.prototype.getElement=function(){return this.element},RowManager.prototype.getTableElement=function(){return this.tableElement},RowManager.prototype.getRowPosition=function(row,active){return active?this.activeRows.indexOf(row):this.rows.indexOf(row)},RowManager.prototype.setColumnManager=function(manager){this.columnManager=manager},RowManager.prototype.initialize=function(){var self=this;self.setRenderMode(),self.element.appendChild(self.tableElement),self.firstRender=!0,self.element.addEventListener("scroll",(function(){var left=self.element.scrollLeft;self.scrollLeft!=left&&(self.columnManager.scrollHorizontal(left),self.table.options.groupBy&&self.table.modules.groupRows.scrollHeaders(left),self.table.modExists("columnCalcs")&&self.table.modules.columnCalcs.scrollHorizontal(left),self.table.options.scrollHorizontal(left)),self.scrollLeft=left})),"virtual"===this.renderMode&&self.element.addEventListener("scroll",(function(){var top=self.element.scrollTop,dir=self.scrollTop>top;self.scrollTop!=top?(self.scrollTop=top,self.scrollVertical(dir),"scroll"==self.table.options.ajaxProgressiveLoad&&self.table.modules.ajax.nextPage(self.element.scrollHeight-self.element.clientHeight-top),self.table.options.scrollVertical(top)):self.scrollTop=top}))},RowManager.prototype.findRow=function(subject){var self=this,_match,match;return"object"!=(void 0===subject?"undefined":_typeof(subject))?null!=subject&&(self.rows.find((function(row){return row.data[self.table.options.index]==subject}))||!1):subject instanceof Row?subject:subject instanceof RowComponent?subject._getSelf()||!1:"undefined"!=typeof HTMLElement&&subject instanceof HTMLElement&&self.rows.find((function(row){return row.element===subject}))||!1},RowManager.prototype.getRowFromDataObject=function(data){var match;return this.rows.find((function(row){return row.data===data}))||!1},RowManager.prototype.getRowFromPosition=function(position,active){return active?this.activeRows[position]:this.rows[position]},RowManager.prototype.scrollToRow=function(row,position,ifVisible){var _this9=this,rowIndex=this.getDisplayRows().indexOf(row),rowEl=row.getElement(),rowTop,offset=0;return new Promise((function(resolve,reject){if(rowIndex>-1){if(void 0===position&&(position=_this9.table.options.scrollToRowPosition),void 0===ifVisible&&(ifVisible=_this9.table.options.scrollToRowIfVisible),"nearest"===position)switch(_this9.renderMode){case"classic":rowTop=Tabulator.prototype.helpers.elOffset(rowEl).top,position=Math.abs(_this9.element.scrollTop-rowTop)>Math.abs(_this9.element.scrollTop+_this9.element.clientHeight-rowTop)?"bottom":"top";break;case"virtual":position=Math.abs(_this9.vDomTop-rowIndex)>Math.abs(_this9.vDomBottom-rowIndex)?"bottom":"top"}if(!ifVisible&&Tabulator.prototype.helpers.elVisible(rowEl)&&(offset=Tabulator.prototype.helpers.elOffset(rowEl).top-Tabulator.prototype.helpers.elOffset(_this9.element).top)>0&&offset<_this9.element.clientHeight-rowEl.offsetHeight)return!1;switch(_this9.renderMode){case"classic":_this9.element.scrollTop=Tabulator.prototype.helpers.elOffset(rowEl).top-Tabulator.prototype.helpers.elOffset(_this9.element).top+_this9.element.scrollTop;break;case"virtual":_this9._virtualRenderFill(rowIndex,!0)}switch(position){case"middle":case"center":_this9.element.scrollHeight-_this9.element.scrollTop==_this9.element.clientHeight?_this9.element.scrollTop=_this9.element.scrollTop+(rowEl.offsetTop-_this9.element.scrollTop)-(_this9.element.scrollHeight-rowEl.offsetTop)/2:_this9.element.scrollTop=_this9.element.scrollTop-_this9.element.clientHeight/2;break;case"bottom":_this9.element.scrollHeight-_this9.element.scrollTop==_this9.element.clientHeight?_this9.element.scrollTop=_this9.element.scrollTop-(_this9.element.scrollHeight-rowEl.offsetTop)+rowEl.offsetHeight:_this9.element.scrollTop=_this9.element.scrollTop-_this9.element.clientHeight+rowEl.offsetHeight}resolve()}else console.warn("Scroll Error - Row not visible"),reject("Scroll Error - Row not visible")}))},RowManager.prototype.setData=function(data,renderInPosition,columnsChanged){var _this10=this,self=this;return new Promise((function(resolve,reject){renderInPosition&&_this10.getDisplayRows().length?self.table.options.pagination?self._setDataActual(data,!0):_this10.reRenderInPosition((function(){self._setDataActual(data)})):(_this10.table.options.autoColumns&&columnsChanged&&_this10.table.columnManager.generateColumnsFromRowData(data),_this10.resetScroll(),_this10._setDataActual(data)),resolve()}))},RowManager.prototype._setDataActual=function(data,renderInPosition){var self=this;self.table.options.dataLoading.call(this.table,data),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(data)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(data),data.forEach((function(def,i){if(def&&"object"===(void 0===def?"undefined":_typeof(def))){var row=new Row(def,self);self.rows.push(row)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",def)})),self.table.options.dataLoaded.call(this.table,data),self.refreshActiveData(!1,!1,renderInPosition)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===data?"undefined":_typeof(data),"\nData:     ",data)},RowManager.prototype._wipeElements=function(){this.rows.forEach((function(row){row.wipe()})),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},RowManager.prototype.deleteRow=function(row,blockRedraw){var allIndex=this.rows.indexOf(row),activeIndex=this.activeRows.indexOf(row);activeIndex>-1&&this.activeRows.splice(activeIndex,1),allIndex>-1&&this.rows.splice(allIndex,1),this.setActiveRows(this.activeRows),this.displayRowIterator((function(rows){var displayIndex=rows.indexOf(row);displayIndex>-1&&rows.splice(displayIndex,1)})),blockRedraw||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,row.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},RowManager.prototype.addRow=function(data,pos,index,blockRedraw){var row=this.addRowActual(data,pos,index,blockRedraw);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",row,{data:data,pos:pos,index:index}),row},RowManager.prototype.addRows=function(data,pos,index){var _this11=this,self=this,length=0,rows=[];return new Promise((function(resolve,reject){pos=_this11.findAddRowPos(pos),Array.isArray(data)||(data=[data]),length=data.length-1,(void 0===index&&pos||void 0!==index&&!pos)&&data.reverse(),data.forEach((function(item,i){var row=self.addRow(item,pos,index,!0);rows.push(row)})),_this11.table.options.groupBy&&_this11.table.modExists("groupRows")?_this11.table.modules.groupRows.updateGroupRows(!0):_this11.table.options.pagination&&_this11.table.modExists("page")?_this11.refreshActiveData(!1,!1,!0):_this11.reRenderInPosition(),_this11.table.modExists("columnCalcs")&&_this11.table.modules.columnCalcs.recalc(_this11.table.rowManager.activeRows),_this11.regenerateRowNumbers(),resolve(rows)}))},RowManager.prototype.findAddRowPos=function(pos){return void 0===pos&&(pos=this.table.options.addRowPos),"pos"===pos&&(pos=!0),"bottom"===pos&&(pos=!1),pos},RowManager.prototype.addRowActual=function(data,pos,index,blockRedraw){var row=data instanceof Row?data:new Row(data||{},this),top=this.findAddRowPos(pos),allIndex=-1,activeIndex,dispRows;if(!index&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(dispRows=this.getDisplayRows(),top?dispRows.length?index=dispRows[0]:this.activeRows.length&&(index=this.activeRows[this.activeRows.length-1],top=!1):dispRows.length&&(index=dispRows[dispRows.length-1],top=!(dispRows.length<this.table.modules.page.getPageSize()))),void 0!==index&&(index=this.findRow(index)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(row);var groupRows=row.getGroup().rows;groupRows.length>1&&(!index||index&&-1==groupRows.indexOf(index)?top?groupRows[0]!==row&&(index=groupRows[0],this._moveRowInArray(row.getGroup().rows,row,index,!top)):groupRows[groupRows.length-1]!==row&&(index=groupRows[groupRows.length-1],this._moveRowInArray(row.getGroup().rows,row,index,!top)):this._moveRowInArray(row.getGroup().rows,row,index,!top))}return index&&(allIndex=this.rows.indexOf(index)),index&&allIndex>-1?(activeIndex=this.activeRows.indexOf(index),this.displayRowIterator((function(rows){var displayIndex=rows.indexOf(index);displayIndex>-1&&rows.splice(top?displayIndex:displayIndex+1,0,row)})),activeIndex>-1&&this.activeRows.splice(top?activeIndex:activeIndex+1,0,row),this.rows.splice(top?allIndex:allIndex+1,0,row)):top?(this.displayRowIterator((function(rows){rows.unshift(row)})),this.activeRows.unshift(row),this.rows.unshift(row)):(this.displayRowIterator((function(rows){rows.push(row)})),this.activeRows.push(row),this.rows.push(row)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,row.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),blockRedraw||this.reRenderInPosition(),row},RowManager.prototype.moveRow=function(from,to,after){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",from,{posFrom:this.getRowPosition(from),posTo:this.getRowPosition(to),to:to,after:after}),this.moveRowActual(from,to,after),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,from.getComponent())},RowManager.prototype.moveRowActual=function(from,to,after){var _this12=this;if(this._moveRowInArray(this.rows,from,to,after),this._moveRowInArray(this.activeRows,from,to,after),this.displayRowIterator((function(rows){_this12._moveRowInArray(rows,from,to,after)})),this.table.options.groupBy&&this.table.modExists("groupRows")){!after&&to instanceof Group&&(to=this.table.rowManager.prevDisplayRow(from)||to);var toGroup=to.getGroup(),fromGroup=from.getGroup();toGroup===fromGroup?this._moveRowInArray(toGroup.rows,from,to,after):(fromGroup&&fromGroup.removeRow(from),toGroup.insertRow(from,to,after))}},RowManager.prototype._moveRowInArray=function(rows,from,to,after){var fromIndex,toIndex,start,end;if(from!==to&&((fromIndex=rows.indexOf(from))>-1&&(rows.splice(fromIndex,1),(toIndex=rows.indexOf(to))>-1?after?rows.splice(toIndex+1,0,from):rows.splice(toIndex,0,from):rows.splice(fromIndex,0,from)),rows===this.getDisplayRows())){end=toIndex>fromIndex?toIndex:fromIndex+1;for(var _i4=start=fromIndex<toIndex?fromIndex:toIndex;_i4<=end;_i4++)rows[_i4]&&this.styleRow(rows[_i4],_i4)}},RowManager.prototype.clearData=function(){this.setData([])},RowManager.prototype.getRowIndex=function(row){return this.findRowIndex(row,this.rows)},RowManager.prototype.getDisplayRowIndex=function(row){var index=this.getDisplayRows().indexOf(row);return index>-1&&index},RowManager.prototype.nextDisplayRow=function(row,rowOnly){var index=this.getDisplayRowIndex(row),nextRow=!1;return!1!==index&&index<this.displayRowsCount-1&&(nextRow=this.getDisplayRows()[index+1]),!nextRow||nextRow instanceof Row&&"row"==nextRow.type?nextRow:this.nextDisplayRow(nextRow,rowOnly)},RowManager.prototype.prevDisplayRow=function(row,rowOnly){var index=this.getDisplayRowIndex(row),prevRow=!1;return index&&(prevRow=this.getDisplayRows()[index-1]),!rowOnly||!prevRow||prevRow instanceof Row&&"row"==prevRow.type?prevRow:this.prevDisplayRow(prevRow,rowOnly)},RowManager.prototype.findRowIndex=function(row,list){var rowIndex;return!!((row=this.findRow(row))&&(rowIndex=list.indexOf(row))>-1)&&rowIndex},RowManager.prototype.getData=function(active,transform){var output=[],rows;return this.getRows(active).forEach((function(row){"row"==row.type&&output.push(row.getData(transform||"data"))})),output},RowManager.prototype.getComponents=function(active){var output=[],rows;return this.getRows(active).forEach((function(row){output.push(row.getComponent())})),output},RowManager.prototype.getDataCount=function(active){var rows;return this.getRows(active).length},RowManager.prototype._genRemoteRequest=function(){var _this13=this,table=this.table,options=table.options,params={};if(table.modExists("page")){if(options.ajaxSorting){var sorters=this.table.modules.sort.getSort();sorters.forEach((function(item){delete item.column})),params[this.table.modules.page.paginationDataSentNames.sorters]=sorters}if(options.ajaxFiltering){var filters=this.table.modules.filter.getFilters(!0,!0);params[this.table.modules.page.paginationDataSentNames.filters]=filters}this.table.modules.ajax.setParams(params,!0)}table.modules.ajax.sendRequest().then((function(data){_this13._setDataActual(data,!0)})).catch((function(e){}))},RowManager.prototype.filterRefresh=function(){var table=this.table,options=table.options,left=this.scrollLeft;options.ajaxFiltering?"remote"==options.pagination&&table.modExists("page")?(table.modules.page.reset(!0),table.modules.page.setPage(1).then((function(){})).catch((function(){}))):options.ajaxProgressiveLoad?table.modules.ajax.loadData().then((function(){})).catch((function(){})):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(left)},RowManager.prototype.sorterRefresh=function(loadOrignalData){var table=this.table,options=this.table.options,left=this.scrollLeft;options.ajaxSorting?("remote"==options.pagination||options.progressiveLoad)&&table.modExists("page")?(table.modules.page.reset(!0),table.modules.page.setPage(1).then((function(){})).catch((function(){}))):options.ajaxProgressiveLoad?table.modules.ajax.loadData().then((function(){})).catch((function(){})):this._genRemoteRequest():this.refreshActiveData(loadOrignalData?"filter":"sort"),this.scrollHorizontal(left)},RowManager.prototype.scrollHorizontal=function(left){this.scrollLeft=left,this.element.scrollLeft=left,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(left),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(left)},RowManager.prototype.refreshActiveData=function(stage,skipStage,renderInPosition){var self=this,table=this.table,cascadeOrder=["all","filter","sort","display","freeze","group","tree","page"],displayIndex;if(this.redrawBlock)(!this.redrawBlockRestoreConfig||cascadeOrder.indexOf(stage)<cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:stage,skipStage:skipStage,renderInPosition:renderInPosition});else{switch(this.table.modExists("edit")&&this.table.modules.edit.cancelEdit(),stage||(stage="all"),table.options.selectable&&!table.options.selectablePersistence&&table.modExists("selectRow")&&table.modules.selectRow.deselectRows(),stage){case"all":case"filter":skipStage?skipStage=!1:table.modExists("filter")?this.setActiveRows(table.modules.filter.filter(this.rows)):this.setActiveRows(this.rows.slice(0));case"sort":skipStage?skipStage=!1:table.modExists("sort")&&table.modules.sort.sort(this.activeRows),this.regenerateRowNumbers();case"display":this.resetDisplayRows();case"freeze":skipStage?skipStage=!1:this.table.modExists("frozenRows")&&table.modules.frozenRows.isFrozen()&&(table.modules.frozenRows.getDisplayIndex()||table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),displayIndex=table.modules.frozenRows.getDisplayIndex(),!0!==(displayIndex=this.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex-1)),displayIndex))&&table.modules.frozenRows.setDisplayIndex(displayIndex));case"group":skipStage?skipStage=!1:table.options.groupBy&&table.modExists("groupRows")&&(table.modules.groupRows.getDisplayIndex()||table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),displayIndex=table.modules.groupRows.getDisplayIndex(),!0!==(displayIndex=this.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex-1)),displayIndex))&&table.modules.groupRows.setDisplayIndex(displayIndex));case"tree":skipStage?skipStage=!1:table.options.dataTree&&table.modExists("dataTree")&&(table.modules.dataTree.getDisplayIndex()||table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),displayIndex=table.modules.dataTree.getDisplayIndex(),!0!==(displayIndex=this.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex-1)),displayIndex))&&table.modules.dataTree.setDisplayIndex(displayIndex)),table.options.pagination&&table.modExists("page")&&!renderInPosition&&"local"==table.modules.page.getMode()&&table.modules.page.reset();case"page":skipStage?skipStage=!1:table.options.pagination&&table.modExists("page")&&(table.modules.page.getDisplayIndex()||table.modules.page.setDisplayIndex(this.getNextDisplayIndex()),displayIndex=table.modules.page.getDisplayIndex(),"local"==table.modules.page.getMode()&&table.modules.page.setMaxRows(this.getDisplayRows(displayIndex-1).length),!0!==(displayIndex=this.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex-1)),displayIndex))&&table.modules.page.setDisplayIndex(displayIndex))}Tabulator.prototype.helpers.elVisible(this.element)&&(renderInPosition?this.reRenderInPosition():(this.renderTable(),table.options.layoutColumnsOnNewData&&this.table.columnManager.redraw(!0))),table.modExists("columnCalcs")&&table.modules.columnCalcs.recalc(this.activeRows)}},RowManager.prototype.regenerateRowNumbers=function(){var _this14=this;this.rowNumColumn&&this.activeRows.forEach((function(row){var cell=row.getCell(_this14.rowNumColumn);cell&&cell._generateContents()}))},RowManager.prototype.setActiveRows=function(activeRows){this.activeRows=activeRows,this.activeRowsCount=this.activeRows.length},RowManager.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},RowManager.prototype.getNextDisplayIndex=function(){return this.displayRows.length},RowManager.prototype.setDisplayRows=function(displayRows,index){var output=!0;return index&&void 0!==this.displayRows[index]?(this.displayRows[index]=displayRows,output=!0):(this.displayRows.push(displayRows),output=index=this.displayRows.length-1),index==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),output},RowManager.prototype.getDisplayRows=function(index){return void 0===index?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[index]||[]},RowManager.prototype.getVisibleRows=function(viewable){var topEdge=this.element.scrollTop,bottomEdge=this.element.clientHeight+topEdge,topFound=!1,topRow=0,bottomRow=0,rows=this.getDisplayRows();if(viewable){this.getDisplayRows();for(var i=this.vDomTop;i<=this.vDomBottom;i++)if(rows[i])if(topFound){if(!(bottomEdge-rows[i].getElement().offsetTop>=0))break;bottomRow=i}else if(topEdge-rows[i].getElement().offsetTop>=0)topRow=i;else{if(topFound=!0,!(bottomEdge-rows[i].getElement().offsetTop>=0))break;bottomRow=i}}else topRow=this.vDomTop,bottomRow=this.vDomBottom;return rows.slice(topRow,bottomRow+1)},RowManager.prototype.displayRowIterator=function(callback){this.displayRows.forEach(callback),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},RowManager.prototype.getRows=function(active){var rows;switch(active){case"active":rows=this.activeRows;break;case"display":rows=this.table.rowManager.getDisplayRows();break;case"visible":rows=this.getVisibleRows(!0);break;default:rows=this.rows}return rows},RowManager.prototype.reRenderInPosition=function(callback){if("virtual"==this.getRenderMode())if(this.redrawBlock)callback?callback():this.redrawBlockRederInPosition=!0;else{for(var scrollTop=this.element.scrollTop,topRow=!1,topOffset=!1,left=this.scrollLeft,rows=this.getDisplayRows(),i=this.vDomTop;i<=this.vDomBottom;i++)if(rows[i]){var diff=scrollTop-rows[i].getElement().offsetTop;if(!(!1===topOffset||Math.abs(diff)<topOffset))break;topOffset=diff,topRow=i}callback&&callback(),this._virtualRenderFill(!1===topRow?this.displayRowsCount-1:topRow,!0,topOffset||0),this.scrollHorizontal(left)}else this.renderTable(),callback&&callback()},RowManager.prototype.setRenderMode=function(){this.table.options.virtualDom?(this.renderMode="virtual",this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):this.renderMode="classic"},RowManager.prototype.getRenderMode=function(){return this.renderMode},RowManager.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px"),this.table.options.renderComplete.call(this.table)},RowManager.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},RowManager.prototype.checkClassicModeGroupHeaderWidth=function(){var self=this,element=this.tableElement,onlyGroupHeaders=!0;self.getDisplayRows().forEach((function(row,index){self.styleRow(row,index),element.appendChild(row.getElement()),row.initialize(!0),"group"!==row.type&&(onlyGroupHeaders=!1)})),element.style.minWidth=onlyGroupHeaders?self.table.columnManager.getWidth()+"px":""},RowManager.prototype.renderEmptyScroll=function(){this.table.options.placeholder?this.tableElement.style.display="none":(this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden")},RowManager.prototype._clearVirtualDom=function(){var element=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);element.firstChild;)element.removeChild(element.firstChild);element.style.paddingTop="",element.style.paddingBottom="",element.style.minWidth="",element.style.minHeight="",element.style.display="",element.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},RowManager.prototype.styleRow=function(row,index){var rowEl=row.getElement();index%2?(rowEl.classList.add("tabulator-row-even"),rowEl.classList.remove("tabulator-row-odd")):(rowEl.classList.add("tabulator-row-odd"),rowEl.classList.remove("tabulator-row-even"))},RowManager.prototype._virtualRenderFill=function(position,forceMove,offset){var self=this,element=this.tableElement,holder=this.element,topPad=0,rowsHeight=0,topPadHeight=0,i=0,onlyGroupHeaders=!0,rows=this.getDisplayRows();if(offset=offset||0,position=position||0){for(;element.firstChild;)element.removeChild(element.firstChild);var heightOccupied=(this.displayRowsCount-position+1)*this.vDomRowHeight;heightOccupied<this.height&&(position-=Math.ceil((this.height-heightOccupied)/this.vDomRowHeight))<0&&(position=0),position-=topPad=Math.min(Math.max(Math.floor(this.vDomWindowBuffer/this.vDomRowHeight),this.vDomWindowMinMarginRows),position)}else this._clearVirtualDom();if(this.displayRowsCount&&Tabulator.prototype.helpers.elVisible(this.element)){for(this.vDomTop=position,this.vDomBottom=position-1;(rowsHeight<=this.height+this.vDomWindowBuffer||i<this.vDomWindowMinTotalRows)&&this.vDomBottom<this.displayRowsCount-1;){var index=this.vDomBottom+1,row=rows[index],rowHeight=0;this.styleRow(row,index),element.appendChild(row.getElement()),row.initialized?row.heightInitialized||row.normalizeHeight(!0):row.initialize(!0),rowHeight=row.getHeight(),i<topPad?topPadHeight+=rowHeight:rowsHeight+=rowHeight,rowHeight>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*rowHeight),"group"!==row.type&&(onlyGroupHeaders=!1),this.vDomBottom++,i++}position?(this.vDomTopPad=forceMove?this.vDomRowHeight*this.vDomTop+offset:this.scrollTop-topPadHeight,this.vDomBottomPad=this.vDomBottom==this.displayRowsCount-1?0:Math.max(this.vDomScrollHeight-this.vDomTopPad-rowsHeight-topPadHeight,0)):(this.vDomTopPad=0,this.vDomRowHeight=Math.floor((rowsHeight+topPadHeight)/i),this.vDomBottomPad=this.vDomRowHeight*(this.displayRowsCount-this.vDomBottom-1),this.vDomScrollHeight=topPadHeight+rowsHeight+this.vDomBottomPad-this.height),element.style.paddingTop=this.vDomTopPad+"px",element.style.paddingBottom=this.vDomBottomPad+"px",forceMove&&(this.scrollTop=this.vDomTopPad+topPadHeight+offset-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&forceMove&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,holder.scrollTop=this.scrollTop,element.style.minWidth=onlyGroupHeaders?this.table.columnManager.getWidth()+"px":"",this.table.options.groupBy&&"fitDataFill"!=this.table.modules.layout.getMode()&&this.displayRowsCount==this.table.modules.groupRows.countGroups()&&(this.tableElement.style.minWidth=this.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},RowManager.prototype.scrollVertical=function(dir){var topDiff=this.scrollTop-this.vDomScrollPosTop,bottomDiff=this.scrollTop-this.vDomScrollPosBottom,margin=2*this.vDomWindowBuffer;if(-topDiff>margin||bottomDiff>margin){var left=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(left)}else dir?(topDiff<0&&this._addTopRow(-topDiff),bottomDiff<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(-bottomDiff):this.vDomScrollPosBottom=this.scrollTop)):(topDiff>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(topDiff):this.vDomScrollPosTop=this.scrollTop),bottomDiff>=0&&this._addBottomRow(bottomDiff))},RowManager.prototype._addTopRow=function(topDiff){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,table=this.tableElement,rows=this.getDisplayRows();if(this.vDomTop){var index=this.vDomTop-1,topRow=rows[index],topRowHeight=topRow.getHeight()||this.vDomRowHeight;topDiff>=topRowHeight&&(this.styleRow(topRow,index),table.insertBefore(topRow.getElement(),table.firstChild),topRow.initialized&&topRow.heightInitialized||(this.vDomTopNewRows.push(topRow),topRow.heightInitialized||topRow.clearCellHeight()),topRow.initialize(),this.vDomTopPad-=topRowHeight,this.vDomTopPad<0&&(this.vDomTopPad=index*this.vDomRowHeight),index||(this.vDomTopPad=0),table.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=topRowHeight,this.vDomTop--),topDiff=-(this.scrollTop-this.vDomScrollPosTop),topRow.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*topRow.getHeight()),i<this.vDomMaxRenderChain&&this.vDomTop&&topDiff>=(rows[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(topDiff,i+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},RowManager.prototype._removeTopRow=function(topDiff){var table=this.tableElement,topRow=this.getDisplayRows()[this.vDomTop],topRowHeight=topRow.getHeight()||this.vDomRowHeight;if(topDiff>=topRowHeight){var rowEl=topRow.getElement();rowEl.parentNode.removeChild(rowEl),this.vDomTopPad+=topRowHeight,table.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?topRowHeight:topRowHeight+this.vDomWindowBuffer,this.vDomTop++,topDiff=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(topDiff)}},RowManager.prototype._addBottomRow=function(bottomDiff){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,table=this.tableElement,rows=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var index=this.vDomBottom+1,bottomRow=rows[index],bottomRowHeight=bottomRow.getHeight()||this.vDomRowHeight;bottomDiff>=bottomRowHeight&&(this.styleRow(bottomRow,index),table.appendChild(bottomRow.getElement()),bottomRow.initialized&&bottomRow.heightInitialized||(this.vDomBottomNewRows.push(bottomRow),bottomRow.heightInitialized||bottomRow.clearCellHeight()),bottomRow.initialize(),this.vDomBottomPad-=bottomRowHeight,(this.vDomBottomPad<0||index==this.displayRowsCount-1)&&(this.vDomBottomPad=0),table.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=bottomRowHeight,this.vDomBottom++),bottomDiff=this.scrollTop-this.vDomScrollPosBottom,bottomRow.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*bottomRow.getHeight()),i<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&bottomDiff>=(rows[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(bottomDiff,i+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},RowManager.prototype._removeBottomRow=function(bottomDiff){var table=this.tableElement,bottomRow=this.getDisplayRows()[this.vDomBottom],bottomRowHeight=bottomRow.getHeight()||this.vDomRowHeight;if(bottomDiff>=bottomRowHeight){var rowEl=bottomRow.getElement();rowEl.parentNode&&rowEl.parentNode.removeChild(rowEl),this.vDomBottomPad+=bottomRowHeight,this.vDomBottomPad<0&&(this.vDomBottomPad=0),table.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=bottomRowHeight,this.vDomBottom--,bottomDiff=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(bottomDiff)}},RowManager.prototype._quickNormalizeRowHeight=function(rows){rows.forEach((function(row){row.calcHeight()})),rows.forEach((function(row){row.setCellHeight()})),rows.length=0},RowManager.prototype.normalizeHeight=function(){this.activeRows.forEach((function(row){row.normalizeHeight()}))},RowManager.prototype.adjustTableSize=function(){var initialHeight=this.element.clientHeight,modExists;if("virtual"===this.renderMode){var otherHeight=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.fixedHeight?(this.element.style.minHeight="calc(100% - "+otherHeight+"px)",this.element.style.height="calc(100% - "+otherHeight+"px)",this.element.style.maxHeight="calc(100% - "+otherHeight+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-otherHeight+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||initialHeight==this.element.clientHeight||((modExists=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!modExists)&&this.redraw()}},RowManager.prototype.reinitialize=function(){this.rows.forEach((function(row){row.reinitialize()}))},RowManager.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},RowManager.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},RowManager.prototype.redraw=function(force){var pos=0,left=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,force?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(left)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},RowManager.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var event=document.createEvent("Event");event.initEvent("scroll",!1,!0),this.element.dispatchEvent(event)}else this.element.dispatchEvent(new Event("scroll"))};var RowComponent=function RowComponent(row){this._row=row};RowComponent.prototype.getData=function(transform){return this._row.getData(transform)},RowComponent.prototype.getElement=function(){return this._row.getElement()},RowComponent.prototype.getCells=function(){var cells=[];return this._row.getCells().forEach((function(cell){cells.push(cell.getComponent())})),cells},RowComponent.prototype.getCell=function(column){var cell=this._row.getCell(column);return!!cell&&cell.getComponent()},RowComponent.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},RowComponent.prototype.getPosition=function(active){return this._row.table.rowManager.getRowPosition(this._row,active)},RowComponent.prototype.delete=function(){return this._row.delete()},RowComponent.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},RowComponent.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},RowComponent.prototype.move=function(to,after){this._row.moveToRow(to,after)},RowComponent.prototype.update=function(data){return this._row.updateData(data)},RowComponent.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},RowComponent.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},RowComponent.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},RowComponent.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},RowComponent.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},RowComponent.prototype._getSelf=function(){return this._row},RowComponent.prototype.validate=function(){return this._row.validate()},RowComponent.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},RowComponent.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},RowComponent.prototype.isFrozen=function(){var index;return!!this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.rows.indexOf(this._row)>-1},RowComponent.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},RowComponent.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},RowComponent.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},RowComponent.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},RowComponent.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},RowComponent.prototype.addTreeChild=function(data,pos,index){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.addTreeChildRow(this._row,data,pos,index)},RowComponent.prototype.reformat=function(){return this._row.reinitialize()},RowComponent.prototype.getGroup=function(){return this._row.getGroup().getComponent()},RowComponent.prototype.getTable=function(){return this._row.table},RowComponent.prototype.getNextRow=function(){var row=this._row.nextRow();return row?row.getComponent():row},RowComponent.prototype.getPrevRow=function(){var row=this._row.prevRow();return row?row.getComponent():row};var Row=function Row(data,parent){var type=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=parent.table,this.parent=parent,this.data={},this.type=type,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.component=null,this.setData(data),this.generateElement()};Row.prototype.createElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-row"),el.setAttribute("role","row"),el},Row.prototype.getElement=function(){return this.element},Row.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.generateElement=function(){var self=this,dblTap,tapHold,tap;!1!==self.table.options.selectable&&self.table.modExists("selectRow")&&self.table.modules.selectRow.initializeRow(this),!1!==self.table.options.movableRows&&self.table.modExists("moveRow")&&self.table.modules.moveRow.initializeRow(this),!1!==self.table.options.dataTree&&self.table.modExists("dataTree")&&self.table.modules.dataTree.initializeRow(this),"collapse"===self.table.options.responsiveLayout&&self.table.modExists("responsiveLayout")&&self.table.modules.responsiveLayout.initializeRow(this),self.table.options.rowContextMenu&&this.table.modExists("menu")&&self.table.modules.menu.initializeRow(this),self.table.options.rowClick&&self.element.addEventListener("click",(function(e){self.table.options.rowClick(e,self.getComponent())})),self.table.options.rowDblClick&&self.element.addEventListener("dblclick",(function(e){self.table.options.rowDblClick(e,self.getComponent())})),self.table.options.rowContext&&self.element.addEventListener("contextmenu",(function(e){self.table.options.rowContext(e,self.getComponent())})),self.table.options.rowMouseEnter&&self.element.addEventListener("mouseenter",(function(e){self.table.options.rowMouseEnter(e,self.getComponent())})),self.table.options.rowMouseLeave&&self.element.addEventListener("mouseleave",(function(e){self.table.options.rowMouseLeave(e,self.getComponent())})),self.table.options.rowMouseOver&&self.element.addEventListener("mouseover",(function(e){self.table.options.rowMouseOver(e,self.getComponent())})),self.table.options.rowMouseOut&&self.element.addEventListener("mouseout",(function(e){self.table.options.rowMouseOut(e,self.getComponent())})),self.table.options.rowMouseMove&&self.element.addEventListener("mousemove",(function(e){self.table.options.rowMouseMove(e,self.getComponent())})),self.table.options.rowTap&&(tap=!1,self.element.addEventListener("touchstart",(function(e){tap=!0}),{passive:!0}),self.element.addEventListener("touchend",(function(e){tap&&self.table.options.rowTap(e,self.getComponent()),tap=!1}))),self.table.options.rowDblTap&&(dblTap=null,self.element.addEventListener("touchend",(function(e){dblTap?(clearTimeout(dblTap),dblTap=null,self.table.options.rowDblTap(e,self.getComponent())):dblTap=setTimeout((function(){clearTimeout(dblTap),dblTap=null}),300)}))),self.table.options.rowTapHold&&(tapHold=null,self.element.addEventListener("touchstart",(function(e){clearTimeout(tapHold),tapHold=setTimeout((function(){clearTimeout(tapHold),tapHold=null,tap=!1,self.table.options.rowTapHold(e,self.getComponent())}),1e3)}),{passive:!0}),self.element.addEventListener("touchend",(function(e){clearTimeout(tapHold),tapHold=null})))},Row.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},Row.prototype.initialize=function(force){var self=this;if(!self.initialized||force){for(self.deleteCells();self.element.firstChild;)self.element.removeChild(self.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),self.cells.forEach((function(cell){self.element.appendChild(cell.getElement()),cell.cellRendered()})),force&&self.normalizeHeight(),self.table.options.dataTree&&self.table.modExists("dataTree")&&self.table.modules.dataTree.layoutRow(this),"collapse"===self.table.options.responsiveLayout&&self.table.modExists("responsiveLayout")&&self.table.modules.responsiveLayout.layoutRow(this),self.table.options.rowFormatter&&self.table.options.rowFormatter(self.getComponent()),self.table.options.resizableRows&&self.table.modExists("resizeRows")&&self.table.modules.resizeRows.initializeRow(self),self.initialized=!0}},Row.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},Row.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},Row.prototype.calcHeight=function(force){var maxHeight=0,minHeight=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach((function(cell){var height=cell.getHeight();height>maxHeight&&(maxHeight=height)})),this.height=force?Math.max(maxHeight,minHeight):this.manualHeight?this.height:Math.max(maxHeight,minHeight),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},Row.prototype.setCellHeight=function(){this.cells.forEach((function(cell){cell.setHeight()})),this.heightInitialized=!0},Row.prototype.clearCellHeight=function(){this.cells.forEach((function(cell){cell.clearHeight()}))},Row.prototype.normalizeHeight=function(force){force&&this.clearCellHeight(),this.calcHeight(force),this.setCellHeight()},Row.prototype.setHeight=function(height,force){(this.height!=height||force)&&(this.manualHeight=!0,this.height=height,this.heightStyled=height?height+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},Row.prototype.getHeight=function(){return this.outerHeight},Row.prototype.getWidth=function(){return this.element.offsetWidth},Row.prototype.deleteCell=function(cell){var index=this.cells.indexOf(cell);index>-1&&this.cells.splice(index,1)},Row.prototype.setData=function(data){this.table.modExists("mutator")&&(data=this.table.modules.mutator.transformRow(data,"data")),this.data=data,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},Row.prototype.updateData=function(updatedData){var _this15=this,visible=Tabulator.prototype.helpers.elVisible(this.element),tempData={},newRowData;return new Promise((function(resolve,reject){for(var attrname in"string"==typeof updatedData&&(updatedData=JSON.parse(updatedData)),_this15.table.options.reactiveData&&_this15.table.modExists("reactiveData",!0)&&_this15.table.modules.reactiveData.block(),_this15.table.modExists("mutator")?(tempData=Object.assign(tempData,_this15.data),tempData=Object.assign(tempData,updatedData),newRowData=_this15.table.modules.mutator.transformRow(tempData,"data",updatedData)):newRowData=updatedData,newRowData)_this15.data[attrname]=newRowData[attrname];for(var attrname in _this15.table.options.reactiveData&&_this15.table.modExists("reactiveData",!0)&&_this15.table.modules.reactiveData.unblock(),updatedData){var columns;_this15.table.columnManager.getColumnsByFieldRoot(attrname).forEach((function(column){var cell=_this15.getCell(column.getField());if(cell){var value=column.getFieldValue(newRowData);cell.getValue()!=value&&(cell.setValueProcessData(value),visible&&cell.cellRendered())}}))}visible?(_this15.normalizeHeight(!0),_this15.table.options.rowFormatter&&_this15.table.options.rowFormatter(_this15.getComponent())):(_this15.initialized=!1,_this15.height=0,_this15.heightStyled=""),!1!==_this15.table.options.dataTree&&_this15.table.modExists("dataTree")&&_this15.table.modules.dataTree.redrawNeeded(updatedData)&&(_this15.table.modules.dataTree.initializeRow(_this15),_this15.table.modules.dataTree.layoutRow(_this15),_this15.table.rowManager.refreshActiveData("tree",!1,!0)),_this15.table.options.rowUpdated.call(_this15.table,_this15.getComponent()),resolve()}))},Row.prototype.getData=function(transform){var self=this;return transform?this.table.modExists("accessor")?this.table.modules.accessor.transformRow(this.data,transform):void 0:this.data},Row.prototype.getCell=function(column){var match=!1;return column=this.table.columnManager.findColumn(column),match=this.cells.find((function(cell){return cell.column===column}))},Row.prototype.getCellIndex=function(findCell){return this.cells.findIndex((function(cell){return cell===findCell}))},Row.prototype.findNextEditableCell=function(index){var nextCell=!1;if(index<this.cells.length-1)for(var i=index+1;i<this.cells.length;i++){var cell=this.cells[i];if(cell.column.modules.edit&&Tabulator.prototype.helpers.elVisible(cell.getElement())){var allowEdit=!0;if("function"==typeof cell.column.modules.edit.check&&(allowEdit=cell.column.modules.edit.check(cell.getComponent())),allowEdit){nextCell=cell;break}}}return nextCell},Row.prototype.findPrevEditableCell=function(index){var prevCell=!1;if(index>0)for(var i=index-1;i>=0;i--){var cell=this.cells[i],allowEdit=!0;if(cell.column.modules.edit&&Tabulator.prototype.helpers.elVisible(cell.getElement())&&("function"==typeof cell.column.modules.edit.check&&(allowEdit=cell.column.modules.edit.check(cell.getComponent())),allowEdit)){prevCell=cell;break}}return prevCell},Row.prototype.getCells=function(){return this.cells},Row.prototype.nextRow=function(){var row;return this.table.rowManager.nextDisplayRow(this,!0)||!1},Row.prototype.prevRow=function(){var row;return this.table.rowManager.prevDisplayRow(this,!0)||!1},Row.prototype.moveToRow=function(to,before){var toRow=this.table.rowManager.findRow(to);toRow?(this.table.rowManager.moveRowActual(this,toRow,!before),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",to)},Row.prototype.validate=function(){var invalid=[];return this.cells.forEach((function(cell){cell.validate()||invalid.push(cell.getComponent())})),!invalid.length||invalid},Row.prototype.delete=function(){var _this16=this;return new Promise((function(resolve,reject){var index,rows;_this16.table.options.history&&_this16.table.modExists("history")&&(_this16.table.options.groupBy&&_this16.table.modExists("groupRows")?(index=(rows=_this16.getGroup().rows).indexOf(_this16))&&(index=rows[index-1]):(index=_this16.table.rowManager.getRowIndex(_this16))&&(index=_this16.table.rowManager.rows[index-1]),_this16.table.modules.history.action("rowDelete",_this16,{data:_this16.getData(),pos:!index,index:index})),_this16.deleteActual(),resolve()}))},Row.prototype.deleteActual=function(blockRedraw){var index=this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.modExists("edit")&&this.table.modules.edit.currentCell.row===this&&this.table.modules.edit.cancelEdit(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,blockRedraw),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.modules.dataTree.rowDelete(this),this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},Row.prototype.deleteCells=function(){for(var cellCount=this.cells.length,_i5=0;_i5<cellCount;_i5++)this.cells[0].delete()},Row.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.getGroup=function(){return this.modules.group||!1},Row.prototype.getComponent=function(){return this.component||(this.component=new RowComponent(this)),this.component};var CellComponent=function CellComponent(cell){this._cell=cell};CellComponent.prototype.getValue=function(){return this._cell.getValue()},CellComponent.prototype.getOldValue=function(){return this._cell.getOldValue()},CellComponent.prototype.getElement=function(){return this._cell.getElement()},CellComponent.prototype.getRow=function(){return this._cell.row.getComponent()},CellComponent.prototype.getData=function(){return this._cell.row.getData()},CellComponent.prototype.getField=function(){return this._cell.column.getField()},CellComponent.prototype.getColumn=function(){return this._cell.column.getComponent()},CellComponent.prototype.setValue=function(value,mutate){void 0===mutate&&(mutate=!0),this._cell.setValue(value,mutate)},CellComponent.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},CellComponent.prototype.edit=function(force){return this._cell.edit(force)},CellComponent.prototype.cancelEdit=function(){this._cell.cancelEdit()},CellComponent.prototype.isEdited=function(){return!!this._cell.modules.edit&&this._cell.modules.edit.edited},CellComponent.prototype.clearEdited=function(){self.table.modExists("edit",!0)&&this._cell.table.modules.edit.clearEdited(this._cell)},CellComponent.prototype.isValid=function(){return!this._cell.modules.validate||!this._cell.modules.validate.invalid},CellComponent.prototype.validate=function(){return this._cell.validate()},CellComponent.prototype.clearValidation=function(){self.table.modExists("validate",!0)&&this._cell.table.modules.validate.clearValidation(this._cell)},CellComponent.prototype.nav=function(){return this._cell.nav()},CellComponent.prototype.checkHeight=function(){this._cell.checkHeight()},CellComponent.prototype.getTable=function(){return this._cell.table},CellComponent.prototype._getSelf=function(){return this._cell};var Cell=function Cell(column,row){this.table=column.table,this.column=column,this.row=row,this.element=null,this.value=null,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.build()};Cell.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},Cell.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},Cell.prototype._configureCell=function(){var self=this,cellEvents=self.column.cellEvents,element=self.element,field=this.column.getField(),vertAligns={top:"flex-start",bottom:"flex-end",middle:"center"},hozAligns={left:"flex-start",right:"flex-end",center:"center"},classNames;(element.style.textAlign=self.column.hozAlign,self.column.vertAlign&&(element.style.display="inline-flex",element.style.alignItems=vertAligns[self.column.vertAlign]||"",self.column.hozAlign&&(element.style.justifyContent=hozAligns[self.column.hozAlign]||"")),field&&element.setAttribute("tabulator-field",field),self.column.definition.cssClass)&&self.column.definition.cssClass.split(" ").forEach((function(className){element.classList.add(className)}));"hover"===this.table.options.tooltipGenerationMode&&element.addEventListener("mouseenter",(function(e){self._generateTooltip()})),self._bindClickEvents(cellEvents),self._bindTouchEvents(cellEvents),self._bindMouseEvents(cellEvents),self.column.modules.edit&&self.table.modules.edit.bindEditor(self),self.column.definition.rowHandle&&!1!==self.table.options.movableRows&&self.table.modExists("moveRow")&&self.table.modules.moveRow.initializeCell(self),self.column.visible||self.hide()},Cell.prototype._bindClickEvents=function(cellEvents){var self=this,element=self.element;(cellEvents.cellClick||self.table.options.cellClick)&&element.addEventListener("click",(function(e){var component=self.getComponent();cellEvents.cellClick&&cellEvents.cellClick.call(self.table,e,component),self.table.options.cellClick&&self.table.options.cellClick.call(self.table,e,component)})),cellEvents.cellDblClick||this.table.options.cellDblClick?element.addEventListener("dblclick",(function(e){var component=self.getComponent();cellEvents.cellDblClick&&cellEvents.cellDblClick.call(self.table,e,component),self.table.options.cellDblClick&&self.table.options.cellDblClick.call(self.table,e,component)})):element.addEventListener("dblclick",(function(e){if(!self.table.modExists("edit")||self.table.modules.edit.currentCell!==self){e.preventDefault();try{var range;if(document.selection)(range=document.body.createTextRange()).moveToElementText(self.element),range.select();else if(window.getSelection){var range;(range=document.createRange()).selectNode(self.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(range)}}catch(e){}}})),(cellEvents.cellContext||this.table.options.cellContext)&&element.addEventListener("contextmenu",(function(e){var component=self.getComponent();cellEvents.cellContext&&cellEvents.cellContext.call(self.table,e,component),self.table.options.cellContext&&self.table.options.cellContext.call(self.table,e,component)}))},Cell.prototype._bindMouseEvents=function(cellEvents){var self=this,element=self.element;(cellEvents.cellMouseEnter||self.table.options.cellMouseEnter)&&element.addEventListener("mouseenter",(function(e){var component=self.getComponent();cellEvents.cellMouseEnter&&cellEvents.cellMouseEnter.call(self.table,e,component),self.table.options.cellMouseEnter&&self.table.options.cellMouseEnter.call(self.table,e,component)})),(cellEvents.cellMouseLeave||self.table.options.cellMouseLeave)&&element.addEventListener("mouseleave",(function(e){var component=self.getComponent();cellEvents.cellMouseLeave&&cellEvents.cellMouseLeave.call(self.table,e,component),self.table.options.cellMouseLeave&&self.table.options.cellMouseLeave.call(self.table,e,component)})),(cellEvents.cellMouseOver||self.table.options.cellMouseOver)&&element.addEventListener("mouseover",(function(e){var component=self.getComponent();cellEvents.cellMouseOver&&cellEvents.cellMouseOver.call(self.table,e,component),self.table.options.cellMouseOver&&self.table.options.cellMouseOver.call(self.table,e,component)})),(cellEvents.cellMouseOut||self.table.options.cellMouseOut)&&element.addEventListener("mouseout",(function(e){var component=self.getComponent();cellEvents.cellMouseOut&&cellEvents.cellMouseOut.call(self.table,e,component),self.table.options.cellMouseOut&&self.table.options.cellMouseOut.call(self.table,e,component)})),(cellEvents.cellMouseMove||self.table.options.cellMouseMove)&&element.addEventListener("mousemove",(function(e){var component=self.getComponent();cellEvents.cellMouseMove&&cellEvents.cellMouseMove.call(self.table,e,component),self.table.options.cellMouseMove&&self.table.options.cellMouseMove.call(self.table,e,component)}))},Cell.prototype._bindTouchEvents=function(cellEvents){var self=this,element=self.element,dblTap,tapHold,tap;(cellEvents.cellTap||this.table.options.cellTap)&&(tap=!1,element.addEventListener("touchstart",(function(e){tap=!0}),{passive:!0}),element.addEventListener("touchend",(function(e){if(tap){var component=self.getComponent();cellEvents.cellTap&&cellEvents.cellTap.call(self.table,e,component),self.table.options.cellTap&&self.table.options.cellTap.call(self.table,e,component)}tap=!1}))),(cellEvents.cellDblTap||this.table.options.cellDblTap)&&(dblTap=null,element.addEventListener("touchend",(function(e){if(dblTap){clearTimeout(dblTap),dblTap=null;var component=self.getComponent();cellEvents.cellDblTap&&cellEvents.cellDblTap.call(self.table,e,component),self.table.options.cellDblTap&&self.table.options.cellDblTap.call(self.table,e,component)}else dblTap=setTimeout((function(){clearTimeout(dblTap),dblTap=null}),300)}))),(cellEvents.cellTapHold||this.table.options.cellTapHold)&&(tapHold=null,element.addEventListener("touchstart",(function(e){clearTimeout(tapHold),tapHold=setTimeout((function(){clearTimeout(tapHold),tapHold=null,tap=!1;var component=self.getComponent();cellEvents.cellTapHold&&cellEvents.cellTapHold.call(self.table,e,component),self.table.options.cellTapHold&&self.table.options.cellTapHold.call(self.table,e,component)}),1e3)}),{passive:!0}),element.addEventListener("touchend",(function(e){clearTimeout(tapHold),tapHold=null})))},Cell.prototype._generateContents=function(){var val;switch(void 0===(val=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value)?"undefined":_typeof(val)){case"object":if(val instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(val)}else this.element.innerHTML="",null!=val&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",val);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=val}},Cell.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},Cell.prototype._generateTooltip=function(){var tooltip=this.column.tooltip;tooltip?(!0===tooltip?tooltip=this.value:"function"==typeof tooltip&&!1===(tooltip=tooltip(this.getComponent()))&&(tooltip=""),void 0===tooltip&&(tooltip=""),this.element.setAttribute("title",tooltip)):this.element.setAttribute("title","")},Cell.prototype.getElement=function(){return this.element},Cell.prototype.getValue=function(){return this.value},Cell.prototype.getOldValue=function(){return this.oldValue},Cell.prototype.setValue=function(value,mutate){var changed,component;this.setValueProcessData(value,mutate)&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),component=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,component),this.cellRendered(),this.table.options.cellEdited.call(this.table,component),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},Cell.prototype.setValueProcessData=function(value,mutate){var changed=!1;return this.value!=value&&(changed=!0,mutate&&this.column.modules.mutate&&(value=this.table.modules.mutator.transformCell(this,value))),this.setValueActual(value),changed&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),changed},Cell.prototype.setValueActual=function(value){this.oldValue=this.value,this.value=value,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,value),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.column.definition.contextMenu&&this.table.modExists("menu")&&this.table.modules.menu.initializeCell(this),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},Cell.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},Cell.prototype.clearWidth=function(){this.width="",this.element.style.width=""},Cell.prototype.getWidth=function(){return this.width||this.element.offsetWidth},Cell.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},Cell.prototype.checkHeight=function(){this.row.reinitializeHeight()},Cell.prototype.clearHeight=function(){this.element.style.height="",this.height=null},Cell.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},Cell.prototype.getHeight=function(){return this.height||this.element.offsetHeight},Cell.prototype.show=function(){this.element.style.display=""},Cell.prototype.hide=function(){this.element.style.display="none"},Cell.prototype.edit=function(force){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,force)},Cell.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var editing=this.table.modules.edit.getCurrentCell();editing&&editing._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},Cell.prototype.validate=function(){var valid;return!this.column.modules.validate||!this.table.modExists("validate",!0)||!0===this.table.modules.validate.validate(this.column.modules.validate,this,this.getValue())},Cell.prototype.delete=function(){this.table.rowManager.redrawBlock||this.element.parentNode.removeChild(this.element),this.modules.validate&&this.modules.validate.invalid&&this.table.modules.validate.clearValidation(this),this.modules.edit&&this.modules.edit.edited&&this.table.modules.edit.clearEdited(this),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},Cell.prototype.nav=function(){var self=this,nextCell=!1,index=this.row.getCellIndex(this);return{next:function next(){var nextCell=this.right(),nextRow;return!!nextCell||!(!(nextRow=self.table.rowManager.nextDisplayRow(self.row,!0))||!(nextCell=nextRow.findNextEditableCell(-1)))&&(nextCell.edit(),!0)},prev:function prev(){var nextCell=this.left(),prevRow;return!!nextCell||!(!(prevRow=self.table.rowManager.prevDisplayRow(self.row,!0))||!(nextCell=prevRow.findPrevEditableCell(prevRow.cells.length)))&&(nextCell.edit(),!0)},left:function left(){return!!(nextCell=self.row.findPrevEditableCell(index))&&(nextCell.edit(),!0)},right:function right(){return!!(nextCell=self.row.findNextEditableCell(index))&&(nextCell.edit(),!0)},up:function up(){var nextRow=self.table.rowManager.prevDisplayRow(self.row,!0);nextRow&&nextRow.cells[index].edit()},down:function down(){var nextRow=self.table.rowManager.nextDisplayRow(self.row,!0);nextRow&&nextRow.cells[index].edit()}}},Cell.prototype.getIndex=function(){this.row.getCellIndex(this)},Cell.prototype.getComponent=function(){return this.component||(this.component=new CellComponent(this)),this.component};var FooterManager=function FooterManager(table){this.table=table,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};FooterManager.prototype.createElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-footer"),el},FooterManager.prototype._initialize=function(element){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},FooterManager.prototype.getElement=function(){return this.element},FooterManager.prototype.append=function(element,parent){this.activate(parent),this.element.appendChild(element),this.table.rowManager.adjustTableSize()},FooterManager.prototype.prepend=function(element,parent){this.activate(parent),this.element.insertBefore(element,this.element.firstChild),this.table.rowManager.adjustTableSize()},FooterManager.prototype.remove=function(element){element.parentNode.removeChild(element),this.deactivate()},FooterManager.prototype.deactivate=function(force){this.element.firstChild&&!force||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},FooterManager.prototype.activate=function(parent){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),parent&&this.links.push(parent)},FooterManager.prototype.redraw=function(){this.links.forEach((function(link){link.footerRedraw()}))};var Tabulator=function Tabulator(element,options){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.modules={},this.initializeElement(element),this.initializeOptions(options||{}),this._create(),Tabulator.prototype.comms.register(this)};Tabulator.prototype.defaultOptions={height:!1,minHeight:!1,maxHeight:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],cellHozAlign:"",cellVertAlign:"",data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopyConfig:!1,clipboardCopyFormatter:!1,clipboardCopyRowRange:"active",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopied:function clipboardCopied(){},clipboardPasted:function clipboardPasted(){},clipboardPasteError:function clipboardPasteError(){},downloadDataFormatter:!1,downloadReady:function downloadReady(data,blob){return blob},downloadComplete:!1,downloadConfig:{},downloadRowRange:"active",dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function dataTreeRowExpanded(){},dataTreeRowCollapsed:function dataTreeRowCollapsed(){},dataTreeChildColumnCalcs:!1,dataTreeSelectPropagate:!1,printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printStyled:!0,printVisibleRows:!0,printRowRange:"visible",printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function selectableCheck(data,row){return!0},headerFilterLiveFilterDelay:300,headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,groupHeaderPrint:null,groupHeaderClipboard:null,groupHeaderHtmlOutput:null,groupHeaderDownload:null,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsConnectedElements:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function movableRowsSendingStart(){},movableRowsSent:function movableRowsSent(){},movableRowsSentFailed:function movableRowsSentFailed(){},movableRowsSendingStop:function movableRowsSendingStop(){},movableRowsReceivingStart:function movableRowsReceivingStart(){},movableRowsReceived:function movableRowsReceived(){},movableRowsReceivedFailed:function movableRowsReceivedFailed(){},movableRowsReceivingStop:function movableRowsReceivingStop(){},movableRowsElementDrop:function movableRowsElementDrop(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,tableBuilding:function tableBuilding(){},tableBuilt:function tableBuilt(){},renderStarted:function renderStarted(){},renderComplete:function renderComplete(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowContextMenu:!1,rowAdded:function rowAdded(){},rowDeleted:function rowDeleted(){},rowMoved:function rowMoved(){},rowUpdated:function rowUpdated(){},rowSelectionChanged:function rowSelectionChanged(){},rowSelected:function rowSelected(){},rowDeselected:function rowDeselected(){},rowResized:function rowResized(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function cellEditing(){},cellEdited:function cellEdited(){},cellEditCancelled:function cellEditCancelled(){},columnMoved:!1,columnResized:function columnResized(){},columnTitleChanged:function columnTitleChanged(){},columnVisibilityChanged:function columnVisibilityChanged(){},htmlImporting:function htmlImporting(){},htmlImported:function htmlImported(){},dataLoading:function dataLoading(){},dataLoaded:function dataLoaded(){},dataEdited:function dataEdited(){},ajaxRequesting:function ajaxRequesting(){},ajaxResponse:!1,ajaxError:function ajaxError(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function dataSorting(){},dataSorted:function dataSorted(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function dataGrouping(){},dataGrouped:!1,groupVisibilityChanged:function groupVisibilityChanged(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupContextMenu:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function pageLoaded(){},localized:function localized(){},validationMode:"blocking",validationFailed:function validationFailed(){},historyUndo:function historyUndo(){},historyRedo:function historyRedo(){},scrollHorizontal:function scrollHorizontal(){},scrollVertical:function scrollVertical(){}},Tabulator.prototype.initializeOptions=function(options){if(!1!==options.invalidOptionWarnings)for(var key in options)void 0===this.defaultOptions[key]&&console.warn("Invalid table constructor option:",key);for(var key in this.defaultOptions)key in options?this.options[key]=options[key]:Array.isArray(this.defaultOptions[key])?this.options[key]=[]:"object"===_typeof(this.defaultOptions[key])&&null!==this.defaultOptions[key]?this.options[key]={}:this.options[key]=this.defaultOptions[key]},Tabulator.prototype.initializeElement=function(element){return"undefined"!=typeof HTMLElement&&element instanceof HTMLElement?(this.element=element,!0):"string"==typeof element?(this.element=document.querySelector(element),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",element),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",element),!1)},Tabulator.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),this.options.downloadDataFormatter&&console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated"),void 0!==this.options.clipboardCopyHeader&&(this.options.columnHeaders=this.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),!0!==this.options.printVisibleRows&&(console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option"),this.options.persistence.printRowRange="active"),!0!==this.options.printCopyStyle&&(console.warn("printCopyStyle option is deprecated, you should now use the printStyled option"),this.options.persistence.printStyled=this.options.printCopyStyle),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},Tabulator.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},Tabulator.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new ColumnManager(this),this.rowManager=new RowManager(this),this.footerManager=new FooterManager(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},Tabulator.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},Tabulator.prototype._buildElement=function(){var _this17=this,element=this.element,mod=this.modules,options=this.options;for(options.tableBuilding.call(this),element.classList.add("tabulator"),element.setAttribute("role","grid");element.firstChild;)element.removeChild(element.firstChild);for(var locale in options.height&&(options.height=isNaN(options.height)?options.height:options.height+"px",element.style.height=options.height),!1!==options.minHeight&&(options.minHeight=isNaN(options.minHeight)?options.minHeight:options.minHeight+"px",element.style.minHeight=options.minHeight),!1!==options.maxHeight&&(options.maxHeight=isNaN(options.maxHeight)?options.maxHeight:options.maxHeight+"px",element.style.maxHeight=options.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&mod.layout.initialize(options.layout),!1!==options.headerFilterPlaceholder&&mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder),options.langs)mod.localize.installLang(locale,options.langs[locale]);if(mod.localize.setLocale(options.locale),"string"==typeof options.placeholder){var el=document.createElement("div");el.classList.add("tabulator-placeholder");var span=document.createElement("span");span.innerHTML=options.placeholder,el.appendChild(span),options.placeholder=el}if(element.appendChild(this.columnManager.getElement()),element.appendChild(this.rowManager.getElement()),options.footerElement&&this.footerManager.activate(),options.persistence&&this.modExists("persistence",!0)&&mod.persistence.initialize(),options.persistence&&this.modExists("persistence",!0)&&mod.persistence.config.columns&&(options.columns=mod.persistence.load("columns",options.columns)),options.movableRows&&this.modExists("moveRow")&&mod.moveRow.initialize(),options.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&mod.columnCalcs.initialize(),this.columnManager.setColumns(options.columns),options.dataTree&&this.modExists("dataTree",!0)&&mod.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(options.persistence&&this.modExists("persistence",!0)&&mod.persistence.config.sort||options.initialSort)&&this.modExists("sort",!0)){var sorters=[];options.persistence&&this.modExists("persistence",!0)&&mod.persistence.config.sort?!1===(sorters=mod.persistence.load("sort"))&&options.initialSort&&(sorters=options.initialSort):options.initialSort&&(sorters=options.initialSort),mod.sort.setSort(sorters)}if((options.persistence&&this.modExists("persistence",!0)&&mod.persistence.config.filter||options.initialFilter)&&this.modExists("filter",!0)){var filters=[];options.persistence&&this.modExists("persistence",!0)&&mod.persistence.config.filter?!1===(filters=mod.persistence.load("filter"))&&options.initialFilter&&(filters=options.initialFilter):options.initialFilter&&(filters=options.initialFilter),mod.filter.setFilter(filters)}options.initialHeaderFilter&&this.modExists("filter",!0)&&options.initialHeaderFilter.forEach((function(item){var column=_this17.columnManager.findColumn(item.field);if(!column)return console.warn("Column Filter Error - No matching column found:",item.field),!1;mod.filter.setHeaderFilterValue(column,item.value)})),this.modExists("ajax")&&mod.ajax.initialize(),options.pagination&&this.modExists("page",!0)&&mod.page.initialize(),options.groupBy&&this.modExists("groupRows",!0)&&mod.groupRows.initialize(),this.modExists("keybindings")&&mod.keybindings.initialize(),this.modExists("selectRow")&&mod.selectRow.clearSelectionData(!0),options.autoResize&&this.modExists("resizeTable")&&mod.resizeTable.initialize(),this.modExists("clipboard")&&mod.clipboard.initialize(),options.printAsHtml&&this.modExists("print")&&mod.print.initialize(),options.tableBuilt.call(this)},Tabulator.prototype._loadInitialData=function(){var self=this;if(self.options.pagination&&self.modExists("page"))if(self.modules.page.reset(!0,!0),"local"==self.options.pagination){if(self.options.data.length)self.rowManager.setData(self.options.data,!1,!0);else{if((self.options.ajaxURL||self.options.ajaxURLGenerator)&&self.modExists("ajax"))return void self.modules.ajax.loadData(!1,!0).then((function(){})).catch((function(){self.options.paginationInitialPage&&self.modules.page.setPage(self.options.paginationInitialPage)}));self.rowManager.setData(self.options.data,!1,!0)}self.options.paginationInitialPage&&self.modules.page.setPage(self.options.paginationInitialPage)}else self.options.ajaxURL?self.modules.page.setPage(self.options.paginationInitialPage).then((function(){})).catch((function(){})):self.rowManager.setData([],!1,!0);else self.options.data.length?self.rowManager.setData(self.options.data):(self.options.ajaxURL||self.options.ajaxURLGenerator)&&self.modExists("ajax")?self.modules.ajax.loadData(!1,!0).then((function(){})).catch((function(){})):self.rowManager.setData(self.options.data,!1,!0)},Tabulator.prototype.destroy=function(){var element=this.element;for(Tabulator.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach((function(row){row.wipe()})),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();element.firstChild;)element.removeChild(element.firstChild);element.classList.remove("tabulator")},Tabulator.prototype._detectBrowser=function(){var ua=navigator.userAgent||navigator.vendor||window.opera;ua.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):ua.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):ua.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.substr(0,4))},Tabulator.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},Tabulator.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},Tabulator.prototype.setDataFromLocalFile=function(extensions){var _this18=this;return new Promise((function(resolve,reject){var input=document.createElement("input");input.type="file",input.accept=extensions||".json,application/json",input.addEventListener("change",(function(e){var file=input.files[0],reader=new FileReader,data;reader.readAsText(file),reader.onload=function(e){try{data=JSON.parse(reader.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void reject(e)}_this18._setData(data).then((function(data){resolve(data)})).catch((function(err){resolve(err)}))},reader.onerror=function(e){console.warn("File Load Error - Unable to read file"),reject()}})),input.click()}))},Tabulator.prototype.setData=function(data,params,config){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(data,params,config,!1,!0)},Tabulator.prototype._setData=function(data,params,config,inPosition,columnsChanged){var self=this;return"string"!=typeof data?data?this.rowManager.setData(data,inPosition,columnsChanged):this.modExists("ajax")&&(this.modules.ajax.getUrl||this.options.ajaxURLGenerator)?"remote"==this.options.pagination&&this.modExists("page",!0)?(this.modules.page.reset(!0,!0),this.modules.page.setPage(1)):this.modules.ajax.loadData(inPosition,columnsChanged):this.rowManager.setData([],inPosition,columnsChanged):0==data.indexOf("{")||0==data.indexOf("[")?this.rowManager.setData(JSON.parse(data),inPosition,columnsChanged):this.modExists("ajax",!0)?(params&&this.modules.ajax.setParams(params),config&&this.modules.ajax.setConfig(config),this.modules.ajax.setUrl(data),"remote"==this.options.pagination&&this.modExists("page",!0)?(this.modules.page.reset(!0,!0),this.modules.page.setPage(1)):this.modules.ajax.loadData(inPosition,columnsChanged)):void 0},Tabulator.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},Tabulator.prototype.getData=function(active){return!0===active&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),active="active"),this.rowManager.getData(active)},Tabulator.prototype.getDataCount=function(active){return!0===active&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),active="active"),this.rowManager.getDataCount(active)},Tabulator.prototype.searchRows=function(field,type,value){if(this.modExists("filter",!0))return this.modules.filter.search("rows",field,type,value)},Tabulator.prototype.searchData=function(field,type,value){if(this.modExists("filter",!0))return this.modules.filter.search("data",field,type,value)},Tabulator.prototype.getHtml=function(visible,style,config){if(this.modExists("export",!0))return this.modules.export.getHtml(visible,style,config)},Tabulator.prototype.print=function(visible,style,config){if(this.modExists("print",!0))return this.modules.print.printFullscreen(visible,style,config)},Tabulator.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},Tabulator.prototype.replaceData=function(data,params,config){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(data,params,config,!0)},Tabulator.prototype.updateData=function(data){var _this19=this,self=this,responses=0;return new Promise((function(resolve,reject){_this19.modExists("ajax")&&_this19.modules.ajax.blockActiveRequest(),"string"==typeof data&&(data=JSON.parse(data)),data?data.forEach((function(item){var row=self.rowManager.findRow(item[self.options.index]);row&&(responses++,row.updateData(item).then((function(){--responses||resolve()})))})):(console.warn("Update Error - No data provided"),reject("Update Error - No data provided"))}))},Tabulator.prototype.addData=function(data,pos,index){var _this20=this;return new Promise((function(resolve,reject){_this20.modExists("ajax")&&_this20.modules.ajax.blockActiveRequest(),"string"==typeof data&&(data=JSON.parse(data)),data?_this20.rowManager.addRows(data,pos,index).then((function(rows){var output=[];rows.forEach((function(row){output.push(row.getComponent())})),resolve(output)})):(console.warn("Update Error - No data provided"),reject("Update Error - No data provided"))}))},Tabulator.prototype.updateOrAddData=function(data){var _this21=this,self=this,rows=[],responses=0;return new Promise((function(resolve,reject){_this21.modExists("ajax")&&_this21.modules.ajax.blockActiveRequest(),"string"==typeof data&&(data=JSON.parse(data)),data?data.forEach((function(item){var row=self.rowManager.findRow(item[self.options.index]);responses++,row?row.updateData(item).then((function(){responses--,rows.push(row.getComponent()),responses||resolve(rows)})):self.rowManager.addRows(item).then((function(newRows){responses--,rows.push(newRows[0].getComponent()),responses||resolve(rows)}))})):(console.warn("Update Error - No data provided"),reject("Update Error - No data provided"))}))},Tabulator.prototype.getRow=function(index){var row=this.rowManager.findRow(index);return row?row.getComponent():(console.warn("Find Error - No matching row found:",index),!1)},Tabulator.prototype.getRowFromPosition=function(position,active){var row=this.rowManager.getRowFromPosition(position,active);return row?row.getComponent():(console.warn("Find Error - No matching row found:",position),!1)},Tabulator.prototype.deleteRow=function(index){var _this22=this;return new Promise((function(resolve,reject){var self=_this22,count=0,successCount=0,foundRows=[];function doneCheck(){++count==index.length&&successCount&&(self.rowManager.reRenderInPosition(),resolve())}Array.isArray(index)||(index=[index]),index.forEach((function(item){var row=_this22.rowManager.findRow(item,!0);row?foundRows.push(row):(console.warn("Delete Error - No matching row found:",item),reject("Delete Error - No matching row found"),doneCheck())})),foundRows.sort((function(a,b){return _this22.rowManager.rows.indexOf(a)>_this22.rowManager.rows.indexOf(b)?1:-1})),foundRows.forEach((function(row){row.delete().then((function(){successCount++,doneCheck()})).catch((function(err){doneCheck(),reject(err)}))}))}))},Tabulator.prototype.addRow=function(data,pos,index){var _this23=this;return new Promise((function(resolve,reject){"string"==typeof data&&(data=JSON.parse(data)),_this23.rowManager.addRows(data,pos,index).then((function(rows){_this23.modExists("columnCalcs")&&_this23.modules.columnCalcs.recalc(_this23.rowManager.activeRows),resolve(rows[0].getComponent())}))}))},Tabulator.prototype.updateOrAddRow=function(index,data){var _this24=this;return new Promise((function(resolve,reject){var row=_this24.rowManager.findRow(index);"string"==typeof data&&(data=JSON.parse(data)),row?row.updateData(data).then((function(){_this24.modExists("columnCalcs")&&_this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows),resolve(row.getComponent())})).catch((function(err){reject(err)})):row=_this24.rowManager.addRows(data).then((function(rows){_this24.modExists("columnCalcs")&&_this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows),resolve(rows[0].getComponent())})).catch((function(err){reject(err)}))}))},Tabulator.prototype.updateRow=function(index,data){var _this25=this;return new Promise((function(resolve,reject){var row=_this25.rowManager.findRow(index);"string"==typeof data&&(data=JSON.parse(data)),row?row.updateData(data).then((function(){resolve(row.getComponent())})).catch((function(err){reject(err)})):(console.warn("Update Error - No matching row found:",index),reject("Update Error - No matching row found"))}))},Tabulator.prototype.scrollToRow=function(index,position,ifVisible){var _this26=this;return new Promise((function(resolve,reject){var row=_this26.rowManager.findRow(index);row?_this26.rowManager.scrollToRow(row,position,ifVisible).then((function(){resolve()})).catch((function(err){reject(err)})):(console.warn("Scroll Error - No matching row found:",index),reject("Scroll Error - No matching row found"))}))},Tabulator.prototype.moveRow=function(from,to,after){var fromRow=this.rowManager.findRow(from);fromRow?fromRow.moveToRow(to,after):console.warn("Move Error - No matching row found:",from)},Tabulator.prototype.getRows=function(active){return!0===active&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),active="active"),this.rowManager.getComponents(active)},Tabulator.prototype.getRowPosition=function(index,active){var row=this.rowManager.findRow(index);return row?this.rowManager.getRowPosition(row,active):(console.warn("Position Error - No matching row found:",index),!1)},Tabulator.prototype.copyToClipboard=function(selector){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(selector)},Tabulator.prototype.setColumns=function(definition){this.columnManager.setColumns(definition)},Tabulator.prototype.getColumns=function(structured){return this.columnManager.getComponents(structured)},Tabulator.prototype.getColumn=function(field){var col=this.columnManager.findColumn(field);return col?col.getComponent():(console.warn("Find Error - No matching column found:",field),!1)},Tabulator.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},Tabulator.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},Tabulator.prototype.setColumnLayout=function(layout){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,layout)),!0)},Tabulator.prototype.showColumn=function(field){var column=this.columnManager.findColumn(field);if(!column)return console.warn("Column Show Error - No matching column found:",field),!1;column.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.hideColumn=function(field){var column=this.columnManager.findColumn(field);if(!column)return console.warn("Column Hide Error - No matching column found:",field),!1;column.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.toggleColumn=function(field){var column=this.columnManager.findColumn(field);if(!column)return console.warn("Column Visibility Toggle Error - No matching column found:",field),!1;column.visible?column.hide():column.show()},Tabulator.prototype.addColumn=function(definition,before,field){var _this27=this;return new Promise((function(resolve,reject){var column=_this27.columnManager.findColumn(field);_this27.columnManager.addColumn(definition,before,column).then((function(column){resolve(column.getComponent())})).catch((function(err){reject(err)}))}))},Tabulator.prototype.deleteColumn=function(field){var _this28=this;return new Promise((function(resolve,reject){var column=_this28.columnManager.findColumn(field);column?column.delete().then((function(){resolve()})).catch((function(err){reject(err)})):(console.warn("Column Delete Error - No matching column found:",field),reject())}))},Tabulator.prototype.updateColumnDefinition=function(field,definition){var _this29=this;return new Promise((function(resolve,reject){var column=_this29.columnManager.findColumn(field);column?column.updateDefinition(definition).then((function(col){resolve(col)})).catch((function(err){reject(err)})):(console.warn("Column Update Error - No matching column found:",field),reject())}))},Tabulator.prototype.moveColumn=function(from,to,after){var fromColumn=this.columnManager.findColumn(from),toColumn=this.columnManager.findColumn(to);fromColumn?toColumn?this.columnManager.moveColumn(fromColumn,toColumn,after):console.warn("Move Error - No matching column found:",toColumn):console.warn("Move Error - No matching column found:",from)},Tabulator.prototype.scrollToColumn=function(field,position,ifVisible){var _this30=this;return new Promise((function(resolve,reject){var column=_this30.columnManager.findColumn(field);column?_this30.columnManager.scrollToColumn(column,position,ifVisible).then((function(){resolve()})).catch((function(err){reject(err)})):(console.warn("Scroll Error - No matching column found:",field),reject("Scroll Error - No matching column found"))}))},Tabulator.prototype.setLocale=function(locale){this.modules.localize.setLocale(locale)},Tabulator.prototype.getLocale=function(){return this.modules.localize.getLocale()},Tabulator.prototype.getLang=function(locale){return this.modules.localize.getLang(locale)},Tabulator.prototype.redraw=function(force){this.columnManager.redraw(force),this.rowManager.redraw(force)},Tabulator.prototype.setHeight=function(height){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(height)?height:height+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},Tabulator.prototype.setSort=function(sortList,dir){this.modExists("sort",!0)&&(this.modules.sort.setSort(sortList,dir),this.rowManager.sorterRefresh())},Tabulator.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},Tabulator.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},Tabulator.prototype.setFilter=function(field,type,value,params){this.modExists("filter",!0)&&(this.modules.filter.setFilter(field,type,value,params),this.rowManager.filterRefresh())},Tabulator.prototype.addFilter=function(field,type,value,params){this.modExists("filter",!0)&&(this.modules.filter.addFilter(field,type,value,params),this.rowManager.filterRefresh())},Tabulator.prototype.getFilters=function(all){if(this.modExists("filter",!0))return this.modules.filter.getFilters(all)},Tabulator.prototype.setHeaderFilterFocus=function(field){if(this.modExists("filter",!0)){var column=this.columnManager.findColumn(field);if(!column)return console.warn("Column Filter Focus Error - No matching column found:",field),!1;this.modules.filter.setHeaderFilterFocus(column)}},Tabulator.prototype.getHeaderFilterValue=function(field){if(this.modExists("filter",!0)){var column=this.columnManager.findColumn(field);if(column)return this.modules.filter.getHeaderFilterValue(column);console.warn("Column Filter Error - No matching column found:",field)}},Tabulator.prototype.setHeaderFilterValue=function(field,value){if(this.modExists("filter",!0)){var column=this.columnManager.findColumn(field);if(!column)return console.warn("Column Filter Error - No matching column found:",field),!1;this.modules.filter.setHeaderFilterValue(column,value)}},Tabulator.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},Tabulator.prototype.removeFilter=function(field,type,value){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(field,type,value),this.rowManager.filterRefresh())},Tabulator.prototype.clearFilter=function(all){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(all),this.rowManager.filterRefresh())},Tabulator.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},Tabulator.prototype.selectRow=function(rows){this.modExists("selectRow",!0)&&(!0===rows&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),rows="active"),this.modules.selectRow.selectRows(rows))},Tabulator.prototype.deselectRow=function(rows){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(rows)},Tabulator.prototype.toggleSelectRow=function(row){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(row)},Tabulator.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},Tabulator.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},Tabulator.prototype.getInvalidCells=function(){if(this.modExists("validate",!0))return this.modules.validate.getInvalidCells()},Tabulator.prototype.clearCellValidation=function(cells){var _this31=this;this.modExists("validate",!0)&&(cells||(cells=this.modules.validate.getInvalidCells()),Array.isArray(cells)||(cells=[cells]),cells.forEach((function(cell){_this31.modules.validate.clearValidation(cell._getSelf())})))},Tabulator.prototype.validate=function(cells){var output=[];return this.rowManager.rows.forEach((function(row){var valid=row.validate();!0!==valid&&(output=output.concat(valid))})),!output.length||output},Tabulator.prototype.setMaxPage=function(max){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(max)},Tabulator.prototype.setPage=function(page){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(page):new Promise((function(resolve,reject){reject()}))},Tabulator.prototype.setPageToRow=function(row){var _this32=this;return new Promise((function(resolve,reject){_this32.options.pagination&&_this32.modExists("page")&&(row=_this32.rowManager.findRow(row))?_this32.modules.page.setPageToRow(row).then((function(){resolve()})).catch((function(){reject()})):reject()}))},Tabulator.prototype.setPageSize=function(size){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(size),this.modules.page.setPage(1).then((function(){})).catch((function(){}))},Tabulator.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},Tabulator.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},Tabulator.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},Tabulator.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},Tabulator.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},Tabulator.prototype.setGroupBy=function(groups){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=groups,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},Tabulator.prototype.setGroupStartOpen=function(values){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=values,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.setGroupHeader=function(values){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=values,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.getGroups=function(values){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},Tabulator.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},Tabulator.prototype.getEditedCells=function(){if(this.modExists("edit",!0))return this.modules.edit.getEditedCells()},Tabulator.prototype.clearCellEdited=function(cells){var _this33=this;this.modExists("edit",!0)&&(cells||(cells=this.modules.edit.getEditedCells()),Array.isArray(cells)||(cells=[cells]),cells.forEach((function(cell){_this33.modules.edit.clearEdited(cell._getSelf())})))},Tabulator.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},Tabulator.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},Tabulator.prototype.navigatePrev=function(){var cell=!1;return!(!this.modExists("edit",!0)||!(cell=this.modules.edit.currentCell))&&cell.nav().prev()},Tabulator.prototype.navigateNext=function(){var cell=!1;return!(!this.modExists("edit",!0)||!(cell=this.modules.edit.currentCell))&&cell.nav().next()},Tabulator.prototype.navigateLeft=function(){var cell=!1;return!(!this.modExists("edit",!0)||!(cell=this.modules.edit.currentCell))&&(e.preventDefault(),cell.nav().left())},Tabulator.prototype.navigateRight=function(){var cell=!1;return!(!this.modExists("edit",!0)||!(cell=this.modules.edit.currentCell))&&(e.preventDefault(),cell.nav().right())},Tabulator.prototype.navigateUp=function(){var cell=!1;return!(!this.modExists("edit",!0)||!(cell=this.modules.edit.currentCell))&&(e.preventDefault(),cell.nav().up())},Tabulator.prototype.navigateDown=function(){var cell=!1;return!(!this.modExists("edit",!0)||!(cell=this.modules.edit.currentCell))&&(e.preventDefault(),cell.nav().down())},Tabulator.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},Tabulator.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},Tabulator.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},Tabulator.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},Tabulator.prototype.download=function(type,filename,options,active){this.modExists("download",!0)&&this.modules.download.download(type,filename,options,active)},Tabulator.prototype.downloadToTab=function(type,filename,options,active){this.modExists("download",!0)&&this.modules.download.download(type,filename,options,active,!0)},Tabulator.prototype.tableComms=function(table,module,action,data){this.modules.comms.receive(table,module,action,data)},Tabulator.prototype.moduleBindings={},Tabulator.prototype.extendModule=function(name,property,values){if(Tabulator.prototype.moduleBindings[name]){var source=Tabulator.prototype.moduleBindings[name].prototype[property];if(source)if("object"==(void 0===values?"undefined":_typeof(values)))for(var key in values)source[key]=values[key];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",property)}else console.warn("Module Error - module does not exist:",name)},Tabulator.prototype.registerModule=function(name,module){var self=this;Tabulator.prototype.moduleBindings[name]=module},Tabulator.prototype.bindModules=function(){for(var name in this.modules={},Tabulator.prototype.moduleBindings)this.modules[name]=new Tabulator.prototype.moduleBindings[name](this)},Tabulator.prototype.modExists=function(plugin,required){return!!this.modules[plugin]||(required&&console.error("Tabulator Module Not Installed: "+plugin),!1)},Tabulator.prototype.helpers={elVisible:function elVisible(el){return!(el.offsetWidth<=0&&el.offsetHeight<=0)},elOffset:function elOffset(el){var box=el.getBoundingClientRect();return{top:box.top+window.pageYOffset-document.documentElement.clientTop,left:box.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function deepClone(obj){var clone=Array.isArray(obj)?[]:{};for(var i in obj)null!=obj[i]&&"object"===_typeof(obj[i])?obj[i]instanceof Date?clone[i]=new Date(obj[i]):clone[i]=this.deepClone(obj[i]):clone[i]=obj[i];return clone}},Tabulator.prototype.comms={tables:[],register:function register(table){Tabulator.prototype.comms.tables.push(table)},deregister:function deregister(table){var index=Tabulator.prototype.comms.tables.indexOf(table);index>-1&&Tabulator.prototype.comms.tables.splice(index,1)},lookupTable:function lookupTable(query,silent){var results=[],matches,match;if("string"==typeof query){if((matches=document.querySelectorAll(query)).length)for(var i=0;i<matches.length;i++)(match=Tabulator.prototype.comms.matchElement(matches[i]))&&results.push(match)}else"undefined"!=typeof HTMLElement&&query instanceof HTMLElement||query instanceof Tabulator?(match=Tabulator.prototype.comms.matchElement(query))&&results.push(match):Array.isArray(query)?query.forEach((function(item){results=results.concat(Tabulator.prototype.comms.lookupTable(item))})):silent||console.warn("Table Connection Error - Invalid Selector",query);return results},matchElement:function matchElement(element){return Tabulator.prototype.comms.tables.find((function(table){return element instanceof Tabulator?table===element:table.element===element}))}},Tabulator.prototype.findTable=function(query){var results=Tabulator.prototype.comms.lookupTable(query,!0);return!(Array.isArray(results)&&!results.length)&&results};var Layout=function Layout(table){this.table=table,this.mode=null};Layout.prototype.initialize=function(layout){this.modes[layout]?this.mode=layout:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+layout),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},Layout.prototype.getMode=function(){return this.mode},Layout.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},Layout.prototype.modes={fitData:function fitData(columns){columns.forEach((function(column){column.reinitializeWidth()})),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function fitDataFill(columns){columns.forEach((function(column){column.reinitializeWidth()})),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataTable:function fitDataTable(columns){columns.forEach((function(column){column.reinitializeWidth()})),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function fitDataStretch(columns){var _this34=this,colsWidth=0,tableWidth=this.table.rowManager.element.clientWidth,gap=0,lastCol=!1;columns.forEach((function(column,i){column.widthFixed||column.reinitializeWidth(),(_this34.table.options.responsiveLayout?column.modules.responsive.visible:column.visible)&&(lastCol=column),column.visible&&(colsWidth+=column.getWidth())})),lastCol?(gap=tableWidth-colsWidth+lastCol.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(lastCol.setWidth(0),this.table.modules.responsiveLayout.update()),gap>0?lastCol.setWidth(gap):lastCol.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function fitColumns(columns){var self=this,totalWidth=this.table.element.clientWidth,fixedWidth=0,flexWidth=0,flexGrowUnits=0,flexColWidth=0,flexColumns=[],fixedShrinkColumns=[],flexShrinkUnits=0,overflowWidth=0,gapFill=0;function calcWidth(width){var colWidth;return colWidth="string"==typeof width?width.indexOf("%")>-1?totalWidth/100*parseInt(width):parseInt(width):width}function scaleColumns(columns,freeSpace,colWidth,shrinkCols){var oversizeCols=[],oversizeSpace=0,remainingSpace=0,nextColWidth=0,gap=0,changeUnits=0,undersizeCols=[];function calcGrow(col){return colWidth*(col.column.definition.widthGrow||1)}function calcShrink(col){return calcWidth(col.width)-colWidth*(col.column.definition.widthShrink||0)}return columns.forEach((function(col,i){var width=shrinkCols?calcShrink(col):calcGrow(col);col.column.minWidth>=width?oversizeCols.push(col):(undersizeCols.push(col),changeUnits+=shrinkCols?col.column.definition.widthShrink||1:col.column.definition.widthGrow||1)})),oversizeCols.length?(oversizeCols.forEach((function(col){oversizeSpace+=shrinkCols?col.width-col.column.minWidth:col.column.minWidth,col.width=col.column.minWidth})),gap=(remainingSpace=freeSpace-oversizeSpace)-(nextColWidth=changeUnits?Math.floor(remainingSpace/changeUnits):remainingSpace)*changeUnits,gap+=scaleColumns(undersizeCols,remainingSpace,nextColWidth,shrinkCols)):(gap=changeUnits?freeSpace-Math.floor(freeSpace/changeUnits)*changeUnits:freeSpace,undersizeCols.forEach((function(column){column.width=shrinkCols?calcShrink(column):calcGrow(column)}))),gap}this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(totalWidth-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),columns.forEach((function(column){var width,minWidth,colWidth;column.visible&&(width=column.definition.width,minWidth=parseInt(column.minWidth),width?(colWidth=calcWidth(width),fixedWidth+=colWidth>minWidth?colWidth:minWidth,column.definition.widthShrink&&(fixedShrinkColumns.push({column:column,width:colWidth>minWidth?colWidth:minWidth}),flexShrinkUnits+=column.definition.widthShrink)):(flexColumns.push({column:column,width:0}),flexGrowUnits+=column.definition.widthGrow||1))})),flexWidth=totalWidth-fixedWidth,flexColWidth=Math.floor(flexWidth/flexGrowUnits);var gapFill=scaleColumns(flexColumns,flexWidth,flexColWidth,!1);flexColumns.length&&gapFill>0&&(flexColumns[flexColumns.length-1].width+=+gapFill),flexColumns.forEach((function(col){flexWidth-=col.width})),(overflowWidth=Math.abs(gapFill)+flexWidth)>0&&flexShrinkUnits&&(gapFill=scaleColumns(fixedShrinkColumns,overflowWidth,Math.floor(overflowWidth/flexShrinkUnits),!0)),fixedShrinkColumns.length&&(fixedShrinkColumns[fixedShrinkColumns.length-1].width-=gapFill),flexColumns.forEach((function(col){col.column.setWidth(col.width)})),fixedShrinkColumns.forEach((function(col){col.column.setWidth(col.width)}))}},Tabulator.prototype.registerModule("layout",Layout);var Localize=function Localize(table){this.table=table,this.locale="default",this.lang=!1,this.bindings={}};Localize.prototype.setHeaderFilterPlaceholder=function(placeholder){this.langs.default.headerFilters.default=placeholder},Localize.prototype.setHeaderFilterColumnPlaceholder=function(column,placeholder){this.langs.default.headerFilters.columns[column]=placeholder,this.lang&&!this.lang.headerFilters.columns[column]&&(this.lang.headerFilters.columns[column]=placeholder)},Localize.prototype.installLang=function(locale,lang){this.langs[locale]?this._setLangProp(this.langs[locale],lang):this.langs[locale]=lang},Localize.prototype._setLangProp=function(lang,values){for(var key in values)lang[key]&&"object"==_typeof(lang[key])?this._setLangProp(lang[key],values[key]):lang[key]=values[key]},Localize.prototype.setLocale=function(desiredLocale){var self=this;function traverseLang(trans,path){for(var prop in trans)"object"==_typeof(trans[prop])?(path[prop]||(path[prop]={}),traverseLang(trans[prop],path[prop])):path[prop]=trans[prop]}if(!0===(desiredLocale=desiredLocale||"default")&&navigator.language&&(desiredLocale=navigator.language.toLowerCase()),desiredLocale&&!this.langs[desiredLocale]){var prefix=desiredLocale.split("-")[0];this.langs[prefix]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",desiredLocale,prefix),desiredLocale=prefix):(console.warn("Localization Error - Matching locale not found, using default: ",desiredLocale),desiredLocale="default")}this.locale=desiredLocale,this.lang=Tabulator.prototype.helpers.deepClone(this.langs.default||{}),"default"!=desiredLocale&&traverseLang(this.langs[desiredLocale],this.lang),this.table.options.localized.call(this.table,this.locale,this.lang),this._executeBindings()},Localize.prototype.getLocale=function(locale){return self.locale},Localize.prototype.getLang=function(locale){return locale?this.langs[locale]:this.lang},Localize.prototype.getText=function(path,value){var path,pathArray=(path=value?path+"|"+value:path).split("|"),text;return this._getLangElement(pathArray,this.locale)||""},Localize.prototype._getLangElement=function(path,locale){var self=this,root=this.lang;return path.forEach((function(level){var rootPath;root&&(rootPath=root[level],root=void 0!==rootPath&&rootPath)})),root},Localize.prototype.bind=function(path,callback){this.bindings[path]||(this.bindings[path]=[]),this.bindings[path].push(callback),callback(this.getText(path),this.lang)},Localize.prototype._executeBindings=function(){var self=this,_loop=function _loop(path){self.bindings[path].forEach((function(binding){binding(self.getText(path),self.lang)}))};for(var path in self.bindings)_loop(path)},Localize.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}},Tabulator.prototype.registerModule("localize",Localize);var Comms=function Comms(table){this.table=table};Comms.prototype.getConnections=function(selectors){var self=this,connections=[],connection;return(connection=Tabulator.prototype.comms.lookupTable(selectors)).forEach((function(con){self.table!==con&&connections.push(con)})),connections},Comms.prototype.send=function(selectors,module,action,data){var self=this,connections=this.getConnections(selectors);connections.forEach((function(connection){connection.tableComms(self.table.element,module,action,data)})),!connections.length&&selectors&&console.warn("Table Connection Error - No tables matching selector found",selectors)},Comms.prototype.receive=function(table,module,action,data){if(this.table.modExists(module))return this.table.modules[module].commsReceived(table,action,data);console.warn("Inter-table Comms Error - no such module:",module)},Tabulator.prototype.registerModule("comms",Comms);var Accessor=function Accessor(table){this.table=table,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};Accessor.prototype.initializeColumn=function(column){var self=this,match=!1,config={};this.allowedTypes.forEach((function(type){var key="accessor"+(type.charAt(0).toUpperCase()+type.slice(1)),accessor;column.definition[key]&&(accessor=self.lookupAccessor(column.definition[key]))&&(match=!0,config[key]={accessor:accessor,params:column.definition[key+"Params"]||{}})})),match&&(column.modules.accessor=config)},Accessor.prototype.lookupAccessor=function(value){var accessor=!1;switch(void 0===value?"undefined":_typeof(value)){case"string":this.accessors[value]?accessor=this.accessors[value]:console.warn("Accessor Error - No such accessor found, ignoring: ",value);break;case"function":accessor=value}return accessor},Accessor.prototype.transformRow=function(dataIn,type){var self=this,key="accessor"+(type.charAt(0).toUpperCase()+type.slice(1)),data=Tabulator.prototype.helpers.deepClone(dataIn||{});return this.table.columnManager.traverse((function(column){var value,accessor,params,component;column.modules.accessor&&(accessor=column.modules.accessor[key]||column.modules.accessor.accessor||!1)&&"undefined"!=(value=column.getFieldValue(data))&&(component=column.getComponent(),params="function"==typeof accessor.params?accessor.params(value,data,type,component):accessor.params,column.setFieldValue(data,accessor.accessor(value,data,type,params,component)))})),data},Accessor.prototype.accessors={},Tabulator.prototype.registerModule("accessor",Accessor);var Ajax=function Ajax(table){this.table=table,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};Ajax.prototype.initialize=function(){var template;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?((template=document.createElement("template")).innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=template.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?((template=document.createElement("template")).innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=template.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},Ajax.prototype.createLoaderElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-loader"),el},Ajax.prototype.createMsgElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-loader-msg"),el.setAttribute("role","alert"),el},Ajax.prototype.setParams=function(params,update){if(update)for(var key in this.params=this.params||{},params)this.params[key]=params[key];else this.params=params},Ajax.prototype.getParams=function(){return this.params||{}},Ajax.prototype.setConfig=function(config){if(this._loadDefaultConfig(),"string"==typeof config)this.config.method=config;else for(var key in config)this.config[key]=config[key]},Ajax.prototype._loadDefaultConfig=function(force){var self=this;if(!this.config||force)for(var key in this.config={},this.defaultConfig)this.config[key]=this.defaultConfig[key]},Ajax.prototype.setUrl=function(url){this.url=url},Ajax.prototype.getUrl=function(){return this.url},Ajax.prototype.loadData=function(inPosition,columnsChanged){var self=this;return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(inPosition,columnsChanged)},Ajax.prototype.nextPage=function(diff){var margin;this.loading||diff<(margin=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight)&&this.table.modules.page.nextPage().then((function(){})).catch((function(){}))},Ajax.prototype.blockActiveRequest=function(){this.requestOrder++},Ajax.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},Ajax.prototype._loadDataStandard=function(inPosition,columnsChanged){var _this35=this;return new Promise((function(resolve,reject){_this35.sendRequest(inPosition).then((function(data){_this35.table.rowManager.setData(data,inPosition,columnsChanged).then((function(){resolve()})).catch((function(e){reject(e)}))})).catch((function(e){reject(e)}))}))},Ajax.prototype.generateParamsList=function(data,prefix){var self=this,output=[];if(prefix=prefix||"",Array.isArray(data))data.forEach((function(item,i){output=output.concat(self.generateParamsList(item,prefix?prefix+"["+i+"]":i))}));else if("object"===(void 0===data?"undefined":_typeof(data)))for(var key in data)output=output.concat(self.generateParamsList(data[key],prefix?prefix+"["+key+"]":key));else output.push({key:prefix,value:data});return output},Ajax.prototype.serializeParams=function(params){var output=this.generateParamsList(params),encoded=[];return output.forEach((function(item){encoded.push(encodeURIComponent(item.key)+"="+encodeURIComponent(item.value))})),encoded.join("&")},Ajax.prototype.sendRequest=function(silent){var _this36=this,self=this,url=self.url,requestNo,esc,query;return self.requestOrder++,requestNo=self.requestOrder,self._loadDefaultConfig(),new Promise((function(resolve,reject){!1!==self.table.options.ajaxRequesting.call(_this36.table,self.url,self.params)?(self.loading=!0,silent||self.showLoader(),_this36.loaderPromise(url,self.config,self.params).then((function(data){requestNo===self.requestOrder?(self.table.options.ajaxResponse&&(data=self.table.options.ajaxResponse.call(self.table,self.url,self.params,data)),resolve(data),self.hideLoader(),self.loading=!1):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made")})).catch((function(error){console.error("Ajax Load Error: ",error),self.table.options.ajaxError.call(self.table,error),self.showError(),setTimeout((function(){self.hideLoader()}),3e3),self.loading=!1,reject()}))):reject()}))},Ajax.prototype.showLoader=function(){var shouldLoad;if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},Ajax.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},Ajax.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},Ajax.prototype.defaultConfig={method:"GET"},Ajax.prototype.defaultURLGenerator=function(url,config,params){return url&&params&&Object.keys(params).length&&(config.method&&"get"!=config.method.toLowerCase()||(config.method="get",url+=(url.includes("?")?"&":"?")+this.serializeParams(params))),url},Ajax.prototype.defaultLoaderPromise=function(url,config,params){var self=this,contentType;return new Promise((function(resolve,reject){if(url=self.urlGenerator(url,config,params),"GET"!=config.method.toUpperCase())if(contentType="object"===_typeof(self.table.options.ajaxContentType)?self.table.options.ajaxContentType:self.contentTypeFormatters[self.table.options.ajaxContentType]){for(var key in contentType.headers)config.headers||(config.headers={}),void 0===config.headers[key]&&(config.headers[key]=contentType.headers[key]);config.body=contentType.body.call(self,url,config,params)}else console.warn("Ajax Error - Invalid ajaxContentType value:",self.table.options.ajaxContentType);url?(void 0===config.headers&&(config.headers={}),void 0===config.headers.Accept&&(config.headers.Accept="application/json"),void 0===config.headers["X-Requested-With"]&&(config.headers["X-Requested-With"]="XMLHttpRequest"),void 0===config.mode&&(config.mode="cors"),"cors"==config.mode?(void 0===config.headers["Access-Control-Allow-Origin"]&&(config.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===config.credentials&&(config.credentials="same-origin")):void 0===config.credentials&&(config.credentials="include"),fetch(url,config).then((function(response){response.ok?response.json().then((function(data){resolve(data)})).catch((function(error){reject(error),console.warn("Ajax Load Error - Invalid JSON returned",error)})):(console.error("Ajax Load Error - Connection Error: "+response.status,response.statusText),reject(response))})).catch((function(error){console.error("Ajax Load Error - Connection Error: ",error),reject(error)}))):(console.warn("Ajax Load Error - No URL Set"),resolve([]))}))},Ajax.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function body(url,config,params){return JSON.stringify(params)}},form:{headers:{},body:function body(url,config,params){var output=this.generateParamsList(params),form=new FormData;return output.forEach((function(item){form.append(item.key,item.value)})),form}}},Tabulator.prototype.registerModule("ajax",Ajax);var ColumnCalcs=function ColumnCalcs(table){this.table=table,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};ColumnCalcs.prototype.createElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-calcs-holder"),el},ColumnCalcs.prototype.initialize=function(){this.genColumn=new Column({field:"value"},this)},ColumnCalcs.prototype.registerColumnField=function(){},ColumnCalcs.prototype.initializeColumn=function(column){var def=column.definition,config={topCalcParams:def.topCalcParams||{},botCalcParams:def.bottomCalcParams||{}};if(def.topCalc){switch(_typeof(def.topCalc)){case"string":this.calculations[def.topCalc]?config.topCalc=this.calculations[def.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",def.topCalc);break;case"function":config.topCalc=def.topCalc}config.topCalc&&(column.modules.columnCalcs=config,this.topCalcs.push(column),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(def.bottomCalc){switch(_typeof(def.bottomCalc)){case"string":this.calculations[def.bottomCalc]?config.botCalc=this.calculations[def.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",def.bottomCalc);break;case"function":config.botCalc=def.bottomCalc}config.botCalc&&(column.modules.columnCalcs=config,this.botCalcs.push(column),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},ColumnCalcs.prototype.removeCalcs=function(){var changed=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),changed=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),changed=!0),changed&&this.table.rowManager.adjustTableSize()},ColumnCalcs.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},ColumnCalcs.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},ColumnCalcs.prototype.scrollHorizontal=function(left){var hozAdjust=0,scrollWidth=this.table.columnManager.getElement().scrollWidth-this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-left+"px")},ColumnCalcs.prototype.recalc=function(rows){var data,row;if(this.topInitialized||this.botInitialized){if(data=this.rowsToData(rows),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),row=this.generateRow("top",this.rowsToData(rows)),this.topRow=row;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(row.getElement()),row.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),row=this.generateRow("bottom",this.rowsToData(rows)),this.botRow=row;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(row.getElement()),row.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},ColumnCalcs.prototype.recalcRowGroup=function(row){this.recalcGroup(this.table.modules.groupRows.getRowGroup(row))},ColumnCalcs.prototype.recalcAll=function(){var _this37=this,groups;(this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalc(this.table.rowManager.activeRows),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs&&table.modules.groupRows.getChildGroups().forEach((function(group){_this37.recalcGroup(group)})))},ColumnCalcs.prototype.recalcGroup=function(group){var data,rowData;group&&group.calcs&&(group.calcs.bottom&&(data=this.rowsToData(group.rows),rowData=this.generateRowData("bottom",data),group.calcs.bottom.updateData(rowData),group.calcs.bottom.reinitialize()),group.calcs.top&&(data=this.rowsToData(group.rows),rowData=this.generateRowData("top",data),group.calcs.top.updateData(rowData),group.calcs.top.reinitialize()))},ColumnCalcs.prototype.generateTopRow=function(rows){return this.generateRow("top",this.rowsToData(rows))},ColumnCalcs.prototype.generateBottomRow=function(rows){return this.generateRow("bottom",this.rowsToData(rows))},ColumnCalcs.prototype.rowsToData=function(rows){var _this38=this,data=[];return rows.forEach((function(row){if(data.push(row.getData()),_this38.table.options.dataTree&&_this38.table.options.dataTreeChildColumnCalcs&&row.modules.dataTree.open){var children=_this38.rowsToData(_this38.table.modules.dataTree.getFilteredTreeChildren(row));data=data.concat(children)}})),data},ColumnCalcs.prototype.generateRow=function(pos,data){var self=this,rowData=this.generateRowData(pos,data),row;return self.table.modExists("mutator")&&self.table.modules.mutator.disable(),row=new Row(rowData,this,"calc"),self.table.modExists("mutator")&&self.table.modules.mutator.enable(),row.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+pos),row.generateCells=function(){var cells=[];self.table.columnManager.columnsByIndex.forEach((function(column){self.genColumn.setField(column.getField()),self.genColumn.hozAlign=column.hozAlign,column.definition[pos+"CalcFormatter"]&&self.table.modExists("format")?self.genColumn.modules.format={formatter:self.table.modules.format.getFormatter(column.definition[pos+"CalcFormatter"]),params:column.definition[pos+"CalcFormatterParams"]}:self.genColumn.modules.format={formatter:self.table.modules.format.getFormatter("plaintext"),params:{}},self.genColumn.definition.cssClass=column.definition.cssClass;var cell=new Cell(self.genColumn,row);cell.column=column,cell.setWidth(),column.cells.push(cell),cells.push(cell),column.visible||cell.hide()})),this.cells=cells},row},ColumnCalcs.prototype.generateRowData=function(pos,data){var rowData={},calcs="top"==pos?this.topCalcs:this.botCalcs,type="top"==pos?"topCalc":"botCalc",params,paramKey;return calcs.forEach((function(column){var values=[];column.modules.columnCalcs&&column.modules.columnCalcs[type]&&(data.forEach((function(item){values.push(column.getFieldValue(item))})),paramKey=type+"Params",params="function"==typeof column.modules.columnCalcs[paramKey]?column.modules.columnCalcs[paramKey](values,data):column.modules.columnCalcs[paramKey],column.setFieldValue(rowData,column.modules.columnCalcs[type](values,data,params)))})),rowData},ColumnCalcs.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},ColumnCalcs.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},ColumnCalcs.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},ColumnCalcs.prototype.getResults=function(){var self=this,results={},groups;return this.table.options.groupBy&&this.table.modExists("groupRows")?(groups=this.table.modules.groupRows.getGroups(!0)).forEach((function(group){results[group.getKey()]=self.getGroupResults(group)})):results={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},results},ColumnCalcs.prototype.getGroupResults=function(group){var self=this,groupObj=group._getSelf(),subGroups=group.getSubGroups(),subGroupResults={},results={};return subGroups.forEach((function(subgroup){subGroupResults[subgroup.getKey()]=self.getGroupResults(subgroup)})),results={top:groupObj.calcs.top?groupObj.calcs.top.getData():{},bottom:groupObj.calcs.bottom?groupObj.calcs.bottom.getData():{},groups:subGroupResults}},ColumnCalcs.prototype.calculations={avg:function avg(values,data,calcParams){var output=0,precision=void 0!==calcParams.precision?calcParams.precision:2;return values.length&&(output=values.reduce((function(sum,value){return sum+(value=Number(value))})),output/=values.length,output=!1!==precision?output.toFixed(precision):output),parseFloat(output).toString()},max:function max(values,data,calcParams){var output=null,precision=void 0!==calcParams.precision&&calcParams.precision;return values.forEach((function(value){((value=Number(value))>output||null===output)&&(output=value)})),null!==output?!1!==precision?output.toFixed(precision):output:""},min:function min(values,data,calcParams){var output=null,precision=void 0!==calcParams.precision&&calcParams.precision;return values.forEach((function(value){((value=Number(value))<output||null===output)&&(output=value)})),null!==output?!1!==precision?output.toFixed(precision):output:""},sum:function sum(values,data,calcParams){var output=0,precision=void 0!==calcParams.precision&&calcParams.precision;return values.length&&values.forEach((function(value){value=Number(value),output+=isNaN(value)?0:Number(value)})),!1!==precision?output.toFixed(precision):output},concat:function concat(values,data,calcParams){var output=0;return values.length&&(output=values.reduce((function(sum,value){return String(sum)+String(value)}))),output},count:function count(values,data,calcParams){var output=0;return values.length&&values.forEach((function(value){value&&output++})),output}},Tabulator.prototype.registerModule("columnCalcs",ColumnCalcs);var Clipboard=function Clipboard(table){this.table=table,this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0};Clipboard.prototype.initialize=function(){var _this39=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",(function(e){var plain,html,list;if(!_this39.blocked){if(e.preventDefault(),_this39.customSelection)plain=_this39.customSelection,_this39.table.options.clipboardCopyFormatter&&(plain=_this39.table.options.clipboardCopyFormatter("plain",plain));else{var list=_this39.table.modules.export.generateExportList(_this39.rowRange,_this39.table.options.clipboardCopyStyled,_this39.table.options.clipboardCopyConfig,"clipboard");plain=(html=_this39.table.modules.export.genereateHTMLTable(list))?_this39.generatePlainContent(list):"",_this39.table.options.clipboardCopyFormatter&&(plain=_this39.table.options.clipboardCopyFormatter("plain",plain),html=_this39.table.options.clipboardCopyFormatter("html",html))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",plain):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",plain),html&&e.clipboardData.setData("text/html",html)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",plain),html&&e.originalEvent.clipboardData.setData("text/html",html)),_this39.table.options.clipboardCopied.call(_this39.table,plain,html),_this39.reset()}})),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",(function(e){_this39.paste(e)})),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},Clipboard.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},Clipboard.prototype.generatePlainContent=function(list){var output=[];return list.forEach((function(row){var rowData=[];row.columns.forEach((function(col){var value="";if(col)switch("group"===row.type&&(col.value=col.component.getKey()),_typeof(col.value)){case"object":value=JSON.stringify(col.value);break;case"undefined":case"null":value="";break;default:value=col.value}rowData.push(value)})),output.push(rowData.join("\t"))})),output.join("\n")},Clipboard.prototype.copy=function(range,internal){var range,sel,textRange;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=range||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?((range=document.createRange()).selectNodeContents(this.table.element),(sel=window.getSelection()).toString()&&internal&&(this.customSelection=sel.toString()),sel.removeAllRanges(),sel.addRange(range)):void 0!==document.selection&&void 0!==document.body.createTextRange&&((textRange=document.body.createTextRange()).moveToElementText(this.table.element),textRange.select()),document.execCommand("copy"),sel&&sel.removeAllRanges())},Clipboard.prototype.setPasteAction=function(action){switch(void 0===action?"undefined":_typeof(action)){case"string":this.pasteAction=this.pasteActions[action],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",action);break;case"function":this.pasteAction=action}},Clipboard.prototype.setPasteParser=function(parser){switch(void 0===parser?"undefined":_typeof(parser)){case"string":this.pasteParser=this.pasteParsers[parser],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",parser);break;case"function":this.pasteParser=parser}},Clipboard.prototype.paste=function(e){var data,rowData,rows;this.checkPaseOrigin(e)&&(data=this.getPasteData(e),(rowData=this.pasteParser.call(this,data))?(e.preventDefault(),this.table.modExists("mutator")&&(rowData=this.mutateData(rowData)),rows=this.pasteAction.call(this,rowData),this.table.options.clipboardPasted.call(this.table,data,rowData,rows)):this.table.options.clipboardPasteError.call(this.table,data))},Clipboard.prototype.mutateData=function(data){var self=this,output=[];return Array.isArray(data)?data.forEach((function(row){output.push(self.table.modules.mutator.transformRow(row,"clipboard"))})):output=data,output},Clipboard.prototype.checkPaseOrigin=function(e){var valid=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(valid=!1),valid},Clipboard.prototype.getPasteData=function(e){var data;return window.clipboardData&&window.clipboardData.getData?data=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?data=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(data=e.originalEvent.clipboardData.getData("text/plain")),data},Clipboard.prototype.pasteParsers={table:function table(clipboard){var data=[],success=!1,headerFindSuccess=!0,columns=this.table.columnManager.columns,columnMap=[],rows=[];return(clipboard=clipboard.split("\n")).forEach((function(row){data.push(row.split("\t"))})),!(!data.length||1===data.length&&data[0].length<2)&&(success=!0,data[0].forEach((function(value){var column=columns.find((function(column){return value&&column.definition.title&&value.trim()&&column.definition.title.trim()===value.trim()}));column?columnMap.push(column):headerFindSuccess=!1})),headerFindSuccess||(headerFindSuccess=!0,columnMap=[],data[0].forEach((function(value){var column=columns.find((function(column){return value&&column.field&&value.trim()&&column.field.trim()===value.trim()}));column?columnMap.push(column):headerFindSuccess=!1})),headerFindSuccess||(columnMap=this.table.columnManager.columnsByIndex)),headerFindSuccess&&data.shift(),data.forEach((function(item){var row={};item.forEach((function(value,i){columnMap[i]&&(row[columnMap[i].field]=value)})),rows.push(row)})),rows)}},Clipboard.prototype.pasteActions={replace:function replace(rows){return this.table.setData(rows)},update:function update(rows){return this.table.updateOrAddData(rows)},insert:function insert(rows){return this.table.addData(rows)}},Tabulator.prototype.registerModule("clipboard",Clipboard);var DataTree=function DataTree(table){this.table=table,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};DataTree.prototype.initialize=function(){var dummyEl=null,firstCol=this.table.columnManager.getFirstVisibileColumn(),options=this.table.options;switch(this.field=options.dataTreeChildField,this.indent=options.dataTreeChildIndent,this.elementField=options.dataTreeElementColumn||!!firstCol&&firstCol.field,options.dataTreeBranchElement&&(!0===options.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof options.dataTreeBranchElement?((dummyEl=document.createElement("div")).innerHTML=options.dataTreeBranchElement,this.branchEl=dummyEl.firstChild):this.branchEl=options.dataTreeBranchElement),options.dataTreeCollapseElement?"string"==typeof options.dataTreeCollapseElement?((dummyEl=document.createElement("div")).innerHTML=options.dataTreeCollapseElement,this.collapseEl=dummyEl.firstChild):this.collapseEl=options.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),options.dataTreeExpandElement?"string"==typeof options.dataTreeExpandElement?((dummyEl=document.createElement("div")).innerHTML=options.dataTreeExpandElement,this.expandEl=dummyEl.firstChild):this.expandEl=options.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(options.dataTreeStartExpanded)){case"boolean":this.startOpen=function(row,index){return options.dataTreeStartExpanded};break;case"function":this.startOpen=options.dataTreeStartExpanded;break;default:this.startOpen=function(row,index){return options.dataTreeStartExpanded[index]}}},DataTree.prototype.initializeRow=function(row){var childArray=row.getData()[this.field],isArray=Array.isArray(childArray),children=isArray||!isArray&&"object"===(void 0===childArray?"undefined":_typeof(childArray))&&null!==childArray;!children&&row.modules.dataTree&&row.modules.dataTree.branchEl&&row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl),!children&&row.modules.dataTree&&row.modules.dataTree.controlEl&&row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl),row.modules.dataTree={index:row.modules.dataTree?row.modules.dataTree.index:0,open:!!children&&(row.modules.dataTree?row.modules.dataTree.open:this.startOpen(row.getComponent(),0)),controlEl:!(!row.modules.dataTree||!children)&&row.modules.dataTree.controlEl,branchEl:!(!row.modules.dataTree||!children)&&row.modules.dataTree.branchEl,parent:!!row.modules.dataTree&&row.modules.dataTree.parent,children:children}},DataTree.prototype.layoutRow=function(row){var cell,el=(this.elementField?row.getCell(this.elementField):row.getCells()[0]).getElement(),config=row.modules.dataTree;config.branchEl&&(config.branchEl.parentNode&&config.branchEl.parentNode.removeChild(config.branchEl),config.branchEl=!1),config.controlEl&&(config.controlEl.parentNode&&config.controlEl.parentNode.removeChild(config.controlEl),config.controlEl=!1),this.generateControlElement(row,el),row.element.classList.add("tabulator-tree-level-"+config.index),config.index&&(this.branchEl?(config.branchEl=this.branchEl.cloneNode(!0),el.insertBefore(config.branchEl,el.firstChild),config.branchEl.style.marginLeft=(config.branchEl.offsetWidth+config.branchEl.style.marginRight)*(config.index-1)+config.index*this.indent+"px"):el.style.paddingLeft=parseInt(window.getComputedStyle(el,null).getPropertyValue("padding-left"))+config.index*this.indent+"px")},DataTree.prototype.generateControlElement=function(row,el){var _this40=this,config=row.modules.dataTree,el=el||row.getCells()[0].getElement(),oldControl=config.controlEl;!1!==config.children&&(config.open?(config.controlEl=this.collapseEl.cloneNode(!0),config.controlEl.addEventListener("click",(function(e){e.stopPropagation(),_this40.collapseRow(row)}))):(config.controlEl=this.expandEl.cloneNode(!0),config.controlEl.addEventListener("click",(function(e){e.stopPropagation(),_this40.expandRow(row)}))),config.controlEl.addEventListener("mousedown",(function(e){e.stopPropagation()})),oldControl&&oldControl.parentNode===el?oldControl.parentNode.replaceChild(config.controlEl,oldControl):el.insertBefore(config.controlEl,el.firstChild))},DataTree.prototype.setDisplayIndex=function(index){this.displayIndex=index},DataTree.prototype.getDisplayIndex=function(){return this.displayIndex},DataTree.prototype.getRows=function(rows){var _this41=this,output=[];return rows.forEach((function(row,i){var config,children;output.push(row),row instanceof Row&&((config=row.modules.dataTree.children).index||!1===config.children||(children=_this41.getChildren(row)).forEach((function(child){output.push(child)})))})),output},DataTree.prototype.getChildren=function(row){var _this42=this,config=row.modules.dataTree,children=[],output=[];return!1!==config.children&&config.open&&(Array.isArray(config.children)||(config.children=this.generateChildren(row)),children=this.table.modExists("filter")?this.table.modules.filter.filter(config.children):config.children,this.table.modExists("sort")&&this.table.modules.sort.sort(children),children.forEach((function(child){var subChildren;output.push(child),_this42.getChildren(child).forEach((function(sub){output.push(sub)}))}))),output},DataTree.prototype.generateChildren=function(row){var _this43=this,children=[],childArray=row.getData()[this.field];return Array.isArray(childArray)||(childArray=[childArray]),childArray.forEach((function(childData){var childRow=new Row(childData||{},_this43.table.rowManager);childRow.modules.dataTree.index=row.modules.dataTree.index+1,childRow.modules.dataTree.parent=row,childRow.modules.dataTree.children&&(childRow.modules.dataTree.open=_this43.startOpen(childRow.getComponent(),childRow.modules.dataTree.index)),children.push(childRow)})),children},DataTree.prototype.expandRow=function(row,silent){var config=row.modules.dataTree;!1!==config.children&&(config.open=!0,row.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(row.getComponent(),row.modules.dataTree.index))},DataTree.prototype.collapseRow=function(row){var config=row.modules.dataTree;!1!==config.children&&(config.open=!1,row.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(row.getComponent(),row.modules.dataTree.index))},DataTree.prototype.toggleRow=function(row){var config=row.modules.dataTree;!1!==config.children&&(config.open?this.collapseRow(row):this.expandRow(row))},DataTree.prototype.getTreeParent=function(row){return!!row.modules.dataTree.parent&&row.modules.dataTree.parent.getComponent()},DataTree.prototype.getFilteredTreeChildren=function(row){var config=row.modules.dataTree,output=[],children;return config.children&&(Array.isArray(config.children)||(config.children=this.generateChildren(row)),(children=this.table.modExists("filter")?this.table.modules.filter.filter(config.children):config.children).forEach((function(childRow){childRow instanceof Row&&output.push(childRow)}))),output},DataTree.prototype.rowDelete=function(row){var parent=row.modules.dataTree.parent,childIndex;parent&&(!1!==(childIndex=this.findChildIndex(row,parent))&&parent.data[this.field].splice(childIndex,1),parent.data[this.field].length||delete parent.data[this.field],this.initializeRow(parent),this.layoutRow(parent)),this.table.rowManager.refreshActiveData("tree",!1,!0)},DataTree.prototype.addTreeChildRow=function(row,data,top,index){var childIndex=!1;"string"==typeof data&&(data=JSON.parse(data)),Array.isArray(row.data[this.field])||(row.data[this.field]=[],row.modules.dataTree.open=this.startOpen(row.getComponent(),row.modules.dataTree.index)),void 0!==index&&!1!==(childIndex=this.findChildIndex(index,row))&&row.data[this.field].splice(top?childIndex:childIndex+1,0,data),!1===childIndex&&(top?row.data[this.field].unshift(data):row.data[this.field].push(data)),this.initializeRow(row),this.layoutRow(row),this.table.rowManager.refreshActiveData("tree",!1,!0)},DataTree.prototype.findChildIndex=function(subject,parent){var _this44=this,match=!1;return"object"==(void 0===subject?"undefined":_typeof(subject))?subject instanceof Row?match=subject.data:subject instanceof RowComponent?match=subject._getSelf().data:"undefined"!=typeof HTMLElement&&subject instanceof HTMLElement&&parent.modules.dataTree&&(match=parent.modules.dataTree.children.find((function(childRow){return childRow instanceof Row&&childRow.element===subject})))&&(match=match.data):match=null!=subject&&parent.data[this.field].find((function(row){return row.data[_this44.table.options.index]==subject})),match&&(Array.isArray(parent.data[this.field])&&(match=parent.data[this.field].indexOf(match)),-1==match&&(match=!1)),match},DataTree.prototype.getTreeChildren=function(row){var config=row.modules.dataTree,output=[];return config.children&&(Array.isArray(config.children)||(config.children=this.generateChildren(row)),config.children.forEach((function(childRow){childRow instanceof Row&&output.push(childRow.getComponent())}))),output},DataTree.prototype.checkForRestyle=function(cell){cell.row.cells.indexOf(cell)||cell.row.reinitialize()},DataTree.prototype.getChildField=function(){return this.field},DataTree.prototype.redrawNeeded=function(data){return!!this.field&&void 0!==data[this.field]||!!this.elementField&&void 0!==data[this.elementField]},Tabulator.prototype.registerModule("dataTree",DataTree);var Download=function Download(table){this.table=table};Download.prototype.download=function(type,filename,options,range,interceptCallback){var self=this,downloadFunc=!1;function buildLink(data,mime){interceptCallback?!0===interceptCallback?self.triggerDownload(data,mime,type,filename,!0):interceptCallback(data):self.triggerDownload(data,mime,type,filename)}if("function"==typeof type?downloadFunc=type:self.downloaders[type]?downloadFunc=self.downloaders[type]:console.warn("Download Error - No such download type found: ",type),downloadFunc){var list=this.generateExportList(range);downloadFunc.call(this.table,list,options||{},buildLink)}},Download.prototype.generateExportList=function(range){var list=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,range||this.table.options.downloadRowRange,"download"),groupHeader=this.table.options.groupHeaderDownload;return groupHeader&&!Array.isArray(groupHeader)&&(groupHeader=[groupHeader]),list.forEach((function(row){var group;"group"===row.type&&(group=row.columns[0],groupHeader&&groupHeader[row.indent]&&(group.value=groupHeader[row.indent](group.value,row.component._group.getRowCount(),row.component._group.getData(),row.component)))})),list},Download.prototype.triggerDownload=function(data,mime,type,filename,newTab){var element=document.createElement("a"),blob=new Blob([data],{type:mime}),filename=filename||"Tabulator."+("function"==typeof type?"txt":type);(blob=this.table.options.downloadReady.call(this.table,data,blob))&&(newTab?window.open(window.URL.createObjectURL(blob)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(blob,filename):(element.setAttribute("href",window.URL.createObjectURL(blob)),element.setAttribute("download",filename),element.style.display="none",document.body.appendChild(element),element.click(),document.body.removeChild(element)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},Download.prototype.commsReceived=function(table,action,data){switch(action){case"intercept":this.download(data.type,"",data.options,data.active,data.intercept)}},Download.prototype.downloaders={csv:function csv(list,options,setFileContents){var delimiter=options&&options.delimiter?options.delimiter:",",fileContents=[],headers=[];list.forEach((function(row){var item=[];switch(row.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":row.columns.forEach((function(col,i){col&&1===col.depth&&(headers[i]=void 0===col.value||"null"==typeof col.value?"":col.value)}));break;case"row":row.columns.forEach((function(col){if(col){switch(_typeof(col.value)){case"object":col.value=JSON.stringify(col.value);break;case"undefined":case"null":col.value=""}item.push('"'+String(col.value).split('"').join('""')+'"')}})),fileContents.push(item.join(delimiter))}})),headers.length&&(fileContents=[headers].concat(fileContents)),fileContents=fileContents.join("\n"),options.bom&&(fileContents="\ufeff"+fileContents),setFileContents(fileContents,"text/csv")},json:function json(list,options,setFileContents){var fileContents=[];list.forEach((function(row){var item={};switch(row.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":row.columns.forEach((function(col){col&&(item[col.component.getField()]=col.value)})),fileContents.push(item)}})),setFileContents(fileContents=JSON.stringify(fileContents,null,"\t"),"application/json")},pdf:function pdf(list,options,setFileContents){var header=[],body=[],autoTableParams={},rowGroupStyles=options.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},rowCalcStyles=options.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},jsPDFParams=options.jsPDF||{},title=options&&options.title?options.title:"";function parseRow(row,styles){var rowData=[];return row.columns.forEach((function(col){var cell;if(col){switch(_typeof(col.value)){case"object":col.value=JSON.stringify(col.value);break;case"undefined":case"null":col.value=""}cell={content:col.value,colSpan:col.width,rowSpan:col.height},styles&&(cell.styles=styles),rowData.push(cell)}else rowData.push("")})),rowData}jsPDFParams.orientation||(jsPDFParams.orientation=options.orientation||"landscape"),jsPDFParams.unit||(jsPDFParams.unit="pt"),list.forEach((function(row){switch(row.type){case"header":header.push(parseRow(row));break;case"group":body.push(parseRow(row,rowGroupStyles));break;case"calc":body.push(parseRow(row,rowCalcStyles));break;case"row":body.push(parseRow(row))}}));var doc=new jsPDF(jsPDFParams);options&&options.autoTable&&(autoTableParams="function"==typeof options.autoTable?options.autoTable(doc)||{}:options.autoTable),title&&(autoTableParams.addPageContent=function(data){doc.text(title,40,30)}),autoTableParams.head=header,autoTableParams.body=body,doc.autoTable(autoTableParams),options&&options.documentProcessing&&options.documentProcessing(doc),setFileContents(doc.output("arraybuffer"),"application/pdf")},xlsx:function xlsx(list,options,setFileContents){var self=this,sheetName=options.sheetName||"Sheet1",workbook=XLSX.utils.book_new(),output;function generateSheet(){var rows=[],merges=[],worksheet={},range={s:{c:0,r:0},e:{c:list[0]?list[0].columns.reduce((function(a,b){return a+(b&&b.width?b.width:1)}),0):0,r:list.length}};return list.forEach((function(row,i){var rowData=[];row.columns.forEach((function(col,j){col?(rowData.push(col.value instanceof Date||"object"!==_typeof(col.value)?col.value:JSON.stringify(col.value)),(col.width>1||col.height>-1)&&merges.push({s:{r:i,c:j},e:{r:i+col.height-1,c:j+col.width-1}})):rowData.push("")})),rows.push(rowData)})),XLSX.utils.sheet_add_aoa(worksheet,rows),worksheet["!ref"]=XLSX.utils.encode_range(range),merges.length&&(worksheet["!merges"]=merges),worksheet}if(workbook.SheetNames=[],workbook.Sheets={},options.sheetOnly)setFileContents(generateSheet());else{if(options.sheets)for(var sheet in options.sheets)!0===options.sheets[sheet]?(workbook.SheetNames.push(sheet),workbook.Sheets[sheet]=generateSheet()):(workbook.SheetNames.push(sheet),this.table.modules.comms.send(options.sheets[sheet],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:this.active,intercept:function intercept(data){workbook.Sheets[sheet]=data}}));else workbook.SheetNames.push(sheetName),workbook.Sheets[sheetName]=generateSheet();options.documentProcessing&&(workbook=options.documentProcessing(workbook)),setFileContents(s2ab(output=XLSX.write(workbook,{bookType:"xlsx",bookSST:!0,type:"binary"})),"application/octet-stream")}function s2ab(s){for(var buf=new ArrayBuffer(s.length),view=new Uint8Array(buf),i=0;i!=s.length;++i)view[i]=255&s.charCodeAt(i);return buf}},html:function html(list,options,setFileContents){this.modExists("export",!0)&&setFileContents(this.modules.export.genereateHTMLTable(list),"text/html")}},Tabulator.prototype.registerModule("download",Download);var Edit=function Edit(table){this.table=table,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[]};Edit.prototype.initializeColumn=function(column){var self=this,config={editor:!1,blocked:!1,check:column.definition.editable,params:column.definition.editorParams||{}};switch(_typeof(column.definition.editor)){case"string":"tick"===column.definition.editor&&(column.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),this.editors[column.definition.editor]?config.editor=this.editors[column.definition.editor]:console.warn("Editor Error - No such editor found: ",column.definition.editor);break;case"function":config.editor=column.definition.editor;break;case"boolean":!0===column.definition.editor&&("function"!=typeof column.definition.formatter?("tick"===column.definition.formatter&&(column.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),this.editors[column.definition.formatter]?config.editor=this.editors[column.definition.formatter]:config.editor=this.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",column.definition.formatter))}config.editor&&(column.modules.edit=config)},Edit.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},Edit.prototype.clearEditor=function(cancel){var cell=this.currentCell,cellEl;if(this.invalidEdit=!1,cell){for(this.currentCell=!1,cellEl=cell.getElement(),cancel?cell.validate():cellEl.classList.remove("tabulator-validation-fail"),cellEl.classList.remove("tabulator-editing");cellEl.firstChild;)cellEl.removeChild(cellEl.firstChild);cell.row.getElement().classList.remove("tabulator-row-editing")}},Edit.prototype.cancelEdit=function(){if(this.currentCell){var cell=this.currentCell,component=this.currentCell.getComponent();this.clearEditor(!0),cell.setValueActual(cell.getValue()),cell.cellRendered(),cell.column.cellEvents.cellEditCancelled&&cell.column.cellEvents.cellEditCancelled.call(this.table,component),this.table.options.cellEditCancelled.call(this.table,component)}},Edit.prototype.bindEditor=function(cell){var self=this,element=cell.getElement();element.setAttribute("tabindex",0),element.addEventListener("click",(function(e){element.classList.contains("tabulator-editing")||element.focus({preventScroll:!0})})),element.addEventListener("mousedown",(function(e){self.mouseClick=!0})),element.addEventListener("focus",(function(e){self.recursionBlock||self.edit(cell,e,!1)}))},Edit.prototype.focusCellNoEvent=function(cell,block){this.recursionBlock=!0,block&&"ie"===this.table.browser||cell.getElement().focus({preventScroll:!0}),this.recursionBlock=!1},Edit.prototype.editCell=function(cell,forceEdit){this.focusCellNoEvent(cell),this.edit(cell,!1,forceEdit)},Edit.prototype.focusScrollAdjust=function(cell){if("virtual"==this.table.rowManager.getRenderMode()){var topEdge=this.table.rowManager.element.scrollTop,bottomEdge=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,rowEl=cell.row.getElement(),offset=rowEl.offsetTop;rowEl.offsetTop<topEdge?this.table.rowManager.element.scrollTop-=topEdge-rowEl.offsetTop:rowEl.offsetTop+rowEl.offsetHeight>bottomEdge&&(this.table.rowManager.element.scrollTop+=rowEl.offsetTop+rowEl.offsetHeight-bottomEdge)}},Edit.prototype.edit=function(cell,e,forceEdit){var self=this,allowEdit=!0,rendered=function rendered(){},element=cell.getElement(),cellEditor,component,params;if(!this.currentCell){if(cell.column.modules.edit.blocked)return this.mouseClick=!1,element.blur(),!1;switch(e&&e.stopPropagation(),_typeof(cell.column.modules.edit.check)){case"function":allowEdit=cell.column.modules.edit.check(cell.getComponent());break;case"boolean":allowEdit=cell.column.modules.edit.check}if(allowEdit||forceEdit){if(self.cancelEdit(),self.currentCell=cell,this.focusScrollAdjust(cell),component=cell.getComponent(),this.mouseClick&&(this.mouseClick=!1,cell.column.cellEvents.cellClick&&cell.column.cellEvents.cellClick.call(this.table,e,component)),cell.column.cellEvents.cellEditing&&cell.column.cellEvents.cellEditing.call(this.table,component),self.table.options.cellEditing.call(this.table,component),params="function"==typeof cell.column.modules.edit.params?cell.column.modules.edit.params(component):cell.column.modules.edit.params,!1===(cellEditor=cell.column.modules.edit.editor.call(self,component,onRendered,success,cancel,params)))return element.blur(),!1;if(!(cellEditor instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",cellEditor),element.blur(),!1;for(element.classList.add("tabulator-editing"),cell.row.getElement().classList.add("tabulator-row-editing");element.firstChild;)element.removeChild(element.firstChild);element.appendChild(cellEditor),rendered();for(var children=element.children,i=0;i<children.length;i++)children[i].addEventListener("click",(function(e){e.stopPropagation()}));return!0}return this.mouseClick=!1,element.blur(),!1}function success(value){if(self.currentCell===cell){var valid=!0;return cell.column.modules.validate&&self.table.modExists("validate")&&"manual"!=self.table.options.validationMode&&(valid=self.table.modules.validate.validate(cell.column.modules.validate,cell,value)),!0===valid||"highlight"===self.table.options.validationMode?(self.clearEditor(),cell.setValue(value,!0),cell.modules.edit||(cell.modules.edit={}),cell.modules.edit.edited=!0,-1==self.editedCells.indexOf(cell)&&self.editedCells.push(cell),self.table.options.dataTree&&self.table.modExists("dataTree")&&self.table.modules.dataTree.checkForRestyle(cell),!0===valid||(element.classList.add("tabulator-validation-fail"),!1)):(self.invalidEdit=!0,element.classList.add("tabulator-validation-fail"),self.focusCellNoEvent(cell,!0),rendered(),self.table.options.validationFailed.call(self.table,cell.getComponent(),value,valid),!1)}}function cancel(){self.currentCell===cell&&(self.cancelEdit(),self.table.options.dataTree&&self.table.modExists("dataTree")&&self.table.modules.dataTree.checkForRestyle(cell))}function onRendered(callback){rendered=callback}this.invalidEdit||this.cancelEdit()},Edit.prototype.maskInput=function(el,options){var mask=options.mask,maskLetter=void 0!==options.maskLetterChar?options.maskLetterChar:"A",maskNumber=void 0!==options.maskNumberChar?options.maskNumberChar:"9",maskWildcard=void 0!==options.maskWildcardChar?options.maskWildcardChar:"*",success=!1;function fillSymbols(index){var symbol=mask[index];void 0!==symbol&&symbol!==maskWildcard&&symbol!==maskLetter&&symbol!==maskNumber&&(el.value=el.value+""+symbol,fillSymbols(index+1))}el.addEventListener("keydown",(function(e){var index=el.value.length,char=e.key;if(e.keyCode>46){if(index>=mask.length)return e.preventDefault(),e.stopPropagation(),success=!1,!1;switch(mask[index]){case maskLetter:if(char.toUpperCase()==char.toLowerCase())return e.preventDefault(),e.stopPropagation(),success=!1,!1;break;case maskNumber:if(isNaN(char))return e.preventDefault(),e.stopPropagation(),success=!1,!1;break;case maskWildcard:break;default:if(char!==mask[index])return e.preventDefault(),e.stopPropagation(),success=!1,!1}success=!0}})),el.addEventListener("keyup",(function(e){e.keyCode>46&&options.maskAutoFill&&fillSymbols(el.value.length)})),el.placeholder||(el.placeholder=mask),options.maskAutoFill&&fillSymbols(el.value.length)},Edit.prototype.getEditedCells=function(){var output=[];return this.editedCells.forEach((function(cell){output.push(cell.getComponent())})),output},Edit.prototype.clearEdited=function(cell){var editIndex;cell.modules.edit&&cell.modules.edit.edited&&(cell.modules.validate.invalid=!1,(editIndex=this.editedCells.indexOf(cell))>-1&&this.editedCells.splice(editIndex,1))},Edit.prototype.editors={input:function input(cell,onRendered,success,cancel,editorParams){var cellValue=cell.getValue(),input=document.createElement("input");if(input.setAttribute("type",editorParams.search?"search":"text"),input.style.padding="4px",input.style.width="100%",input.style.boxSizing="border-box",editorParams.elementAttributes&&"object"==_typeof(editorParams.elementAttributes))for(var key in editorParams.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),input.setAttribute(key,input.getAttribute(key)+editorParams.elementAttributes["+"+key])):input.setAttribute(key,editorParams.elementAttributes[key]);function onChange(e){null==cellValue&&""!==input.value||input.value!==cellValue?success(input.value)&&(cellValue=input.value):cancel()}return input.value=void 0!==cellValue?cellValue:"",onRendered((function(){input.focus({preventScroll:!0}),input.style.height="100%"})),input.addEventListener("change",onChange),input.addEventListener("blur",onChange),input.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:onChange(e);break;case 27:cancel()}})),editorParams.mask&&this.table.modules.edit.maskInput(input,editorParams),input},textarea:function textarea(cell,onRendered,success,cancel,editorParams){var self=this,cellValue=cell.getValue(),vertNav=editorParams.verticalNavigation||"hybrid",value=String(null!=cellValue?cellValue:""),count=(value.match(/(?:\r\n|\r|\n)/g)||[]).length+1,input=document.createElement("textarea"),scrollHeight=0;if(input.style.display="block",input.style.padding="2px",input.style.height="100%",input.style.width="100%",input.style.boxSizing="border-box",input.style.whiteSpace="pre-wrap",input.style.resize="none",editorParams.elementAttributes&&"object"==_typeof(editorParams.elementAttributes))for(var key in editorParams.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),input.setAttribute(key,input.getAttribute(key)+editorParams.elementAttributes["+"+key])):input.setAttribute(key,editorParams.elementAttributes[key]);function onChange(e){null==cellValue&&""!==input.value||input.value!==cellValue?(success(input.value)&&(cellValue=input.value),setTimeout((function(){cell.getRow().normalizeHeight()}),300)):cancel()}return input.value=value,onRendered((function(){input.focus({preventScroll:!0}),input.style.height="100%"})),input.addEventListener("change",onChange),input.addEventListener("blur",onChange),input.addEventListener("keyup",(function(){input.style.height="";var heightNow=input.scrollHeight;input.style.height=heightNow+"px",heightNow!=scrollHeight&&(scrollHeight=heightNow,cell.getRow().normalizeHeight())})),input.addEventListener("keydown",(function(e){switch(e.keyCode){case 27:cancel();break;case 38:("editor"==vertNav||"hybrid"==vertNav&&input.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==vertNav||"hybrid"==vertNav&&input.selectionStart!==input.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation())}})),editorParams.mask&&this.table.modules.edit.maskInput(input,editorParams),input},number:function number(cell,onRendered,success,cancel,editorParams){var cellValue=cell.getValue(),vertNav=editorParams.verticalNavigation||"editor",input=document.createElement("input");if(input.setAttribute("type","number"),void 0!==editorParams.max&&input.setAttribute("max",editorParams.max),void 0!==editorParams.min&&input.setAttribute("min",editorParams.min),void 0!==editorParams.step&&input.setAttribute("step",editorParams.step),input.style.padding="4px",input.style.width="100%",input.style.boxSizing="border-box",editorParams.elementAttributes&&"object"==_typeof(editorParams.elementAttributes))for(var key in editorParams.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),input.setAttribute(key,input.getAttribute(key)+editorParams.elementAttributes["+"+key])):input.setAttribute(key,editorParams.elementAttributes[key]);input.value=cellValue;var blurFunc=function blurFunc(e){onChange()};function onChange(){var value=input.value;isNaN(value)||""===value||(value=Number(value)),value!==cellValue?success(value)&&(cellValue=value):cancel()}return onRendered((function(){input.removeEventListener("blur",blurFunc),input.focus({preventScroll:!0}),input.style.height="100%",input.addEventListener("blur",blurFunc)})),input.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:onChange();break;case 27:cancel();break;case 38:case 40:"editor"==vertNav&&(e.stopImmediatePropagation(),e.stopPropagation())}})),editorParams.mask&&this.table.modules.edit.maskInput(input,editorParams),input},range:function range(cell,onRendered,success,cancel,editorParams){var cellValue=cell.getValue(),input=document.createElement("input");if(input.setAttribute("type","range"),void 0!==editorParams.max&&input.setAttribute("max",editorParams.max),void 0!==editorParams.min&&input.setAttribute("min",editorParams.min),void 0!==editorParams.step&&input.setAttribute("step",editorParams.step),input.style.padding="4px",input.style.width="100%",input.style.boxSizing="border-box",editorParams.elementAttributes&&"object"==_typeof(editorParams.elementAttributes))for(var key in editorParams.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),input.setAttribute(key,input.getAttribute(key)+editorParams.elementAttributes["+"+key])):input.setAttribute(key,editorParams.elementAttributes[key]);function onChange(){var value=input.value;isNaN(value)||""===value||(value=Number(value)),value!=cellValue?success(value)&&(cellValue=value):cancel()}return input.value=cellValue,onRendered((function(){input.focus({preventScroll:!0}),input.style.height="100%"})),input.addEventListener("blur",(function(e){onChange()})),input.addEventListener("keydown",(function(e){switch(e.keyCode){case 13:onChange();break;case 27:cancel()}})),input},select:function select(cell,onRendered,success,cancel,editorParams){var self=this,cellEl=cell.getElement(),initialValue=cell.getValue(),vertNav=editorParams.verticalNavigation||"editor",initialDisplayValue=void 0!==initialValue||null===initialValue?initialValue:void 0!==editorParams.defaultValue?editorParams.defaultValue:[],input=document.createElement("input"),listEl=document.createElement("div"),multiselect=editorParams.multiselect,dataItems=[],currentItem={},displayItems=[],currentItems=[],blurable=!0;function getUniqueColumnValues(field){var output={},data=self.table.getData(),column;return(column=field?self.table.columnManager.getColumnByField(field):cell.getColumn()._getSelf())?(data.forEach((function(row){var val=column.getFieldValue(row);null!=val&&""!==val&&(output[val]=!0)})),output=editorParams.sortValuesList?"asc"==editorParams.sortValuesList?Object.keys(output).sort():Object.keys(output).sort().reverse():Object.keys(output)):console.warn("unable to find matching column to create select lookup list:",field),output}function parseItems(inputValues,curentValues){var dataList=[],displayList=[];function processComplexListItem(item){var item={label:item.label,value:item.value,itemParams:item.itemParams,elementAttributes:item.elementAttributes,element:!1};return curentValues.indexOf(item.value)>-1&&setItem(item),dataList.push(item),displayList.push(item),item}if("function"==typeof inputValues&&(inputValues=inputValues(cell)),Array.isArray(inputValues))inputValues.forEach((function(value){var item;"object"===(void 0===value?"undefined":_typeof(value))?value.options?(item={label:value.label,group:!0,itemParams:value.itemParams,elementAttributes:value.elementAttributes,element:!1},displayList.push(item),value.options.forEach((function(item){processComplexListItem(item)}))):processComplexListItem(value):(item={label:value,value:value,element:!1},curentValues.indexOf(item.value)>-1&&setItem(item),dataList.push(item),displayList.push(item))}));else for(var key in inputValues){var item={label:inputValues[key],value:key,element:!1};curentValues.indexOf(item.value)>-1&&setItem(item),dataList.push(item),displayList.push(item)}dataItems=dataList,displayItems=displayList,fillList()}function fillList(){for(;listEl.firstChild;)listEl.removeChild(listEl.firstChild);displayItems.forEach((function(item){var el=item.element;if(!el){if(el=document.createElement("div"),item.label=editorParams.listItemFormatter?editorParams.listItemFormatter(item.value,item.label,cell,el,item.itemParams):item.label,item.group?(el.classList.add("tabulator-edit-select-list-group"),el.tabIndex=0,el.innerHTML=""===item.label?"&nbsp;":item.label):(el.classList.add("tabulator-edit-select-list-item"),el.tabIndex=0,el.innerHTML=""===item.label?"&nbsp;":item.label,el.addEventListener("click",(function(){multiselect?(toggleItem(item),input.focus()):chooseItem(item)})),currentItems.indexOf(item)>-1&&el.classList.add("active")),item.elementAttributes&&"object"==_typeof(item.elementAttributes))for(var key in item.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),el.setAttribute(key,input.getAttribute(key)+item.elementAttributes["+"+key])):el.setAttribute(key,item.elementAttributes[key]);el.addEventListener("mousedown",(function(){blurable=!1,setTimeout((function(){blurable=!0}),10)})),item.element=el}listEl.appendChild(el)}))}function setCurrentItem(item,active){!multiselect&&currentItem&&currentItem.element&&currentItem.element.classList.remove("active"),currentItem&&currentItem.element&&currentItem.element.classList.remove("focused"),currentItem=item,item.element&&(item.element.classList.add("focused"),active&&item.element.classList.add("active"))}function setItem(item){var index;-1==currentItems.indexOf(item)&&(currentItems.push(item),setCurrentItem(item,!0)),fillInput()}function unsetItem(index){var item=currentItems[index];index>-1&&(currentItems.splice(index,1),item.element&&item.element.classList.remove("active"))}function toggleItem(item){item||(item=currentItem);var index=currentItems.indexOf(item);index>-1?unsetItem(index):(!0!==multiselect&&currentItems.length>=multiselect&&unsetItem(0),setItem(item)),fillInput()}function chooseItem(item){hideList(),item||(item=currentItem),item&&success(item.value)}function chooseItems(){hideList();var output=[];currentItems.forEach((function(item){output.push(item.value)})),success(output)}function fillInput(){var output=[];currentItems.forEach((function(item){output.push(item.label)})),input.value=output.join(", ")}function cancelItem(){hideList(),cancel()}function showList(){if(!listEl.parentNode){!0===editorParams.values?parseItems(getUniqueColumnValues(),initialDisplayValue):"string"==typeof editorParams.values?parseItems(getUniqueColumnValues(editorParams.values),initialDisplayValue):parseItems(editorParams.values||[],initialDisplayValue);var offset=Tabulator.prototype.helpers.elOffset(cellEl);listEl.style.minWidth=cellEl.offsetWidth+"px",listEl.style.top=offset.top+cellEl.offsetHeight+"px",listEl.style.left=offset.left+"px",listEl.addEventListener("mousedown",(function(e){blurable=!1,setTimeout((function(){blurable=!0}),10)})),document.body.appendChild(listEl)}}function hideList(){listEl.parentNode&&listEl.parentNode.removeChild(listEl),removeScrollListener()}function removeScrollListener(){self.table.rowManager.element.removeEventListener("scroll",cancelItem)}if(this.table.rowManager.element.addEventListener("scroll",cancelItem),(Array.isArray(editorParams)||!Array.isArray(editorParams)&&"object"===(void 0===editorParams?"undefined":_typeof(editorParams))&&!editorParams.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),editorParams={values:editorParams}),input.setAttribute("type","text"),input.style.padding="4px",input.style.width="100%",input.style.boxSizing="border-box",input.style.cursor="default",input.readOnly=0!=this.currentCell,editorParams.elementAttributes&&"object"==_typeof(editorParams.elementAttributes))for(var key in editorParams.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),input.setAttribute(key,input.getAttribute(key)+editorParams.elementAttributes["+"+key])):input.setAttribute(key,editorParams.elementAttributes[key]);return input.value=void 0!==initialValue||null===initialValue?initialValue:"",input.addEventListener("keydown",(function(e){var index;switch(e.keyCode){case 38:index=dataItems.indexOf(currentItem),("editor"==vertNav||"hybrid"==vertNav&&index)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),index>0&&setCurrentItem(dataItems[index-1],!multiselect));break;case 40:index=dataItems.indexOf(currentItem),("editor"==vertNav||"hybrid"==vertNav&&index<dataItems.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),index<dataItems.length-1&&setCurrentItem(-1==index?dataItems[0]:dataItems[index+1],!multiselect));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:multiselect?toggleItem():chooseItem();break;case 27:cancelItem()}})),input.addEventListener("blur",(function(e){blurable&&(multiselect?chooseItems():cancelItem())})),input.addEventListener("focus",(function(e){showList()})),(listEl=document.createElement("div")).classList.add("tabulator-edit-select-list"),onRendered((function(){input.style.height="100%",input.focus({preventScroll:!0})})),input},autocomplete:function autocomplete(cell,onRendered,success,cancel,editorParams){var self=this,cellEl=cell.getElement(),initialValue=cell.getValue(),vertNav=editorParams.verticalNavigation||"editor",initialDisplayValue=void 0!==initialValue||null===initialValue?initialValue:void 0!==editorParams.defaultValue?editorParams.defaultValue:"",input=document.createElement("input"),listEl=document.createElement("div"),allItems=[],displayItems=[],values=[],currentItem=!1,blurable=!0,uniqueColumnValues=!1;if(this.table.rowManager.element.addEventListener("scroll",cancelItem),input.setAttribute("type","search"),input.style.padding="4px",input.style.width="100%",input.style.boxSizing="border-box",editorParams.elementAttributes&&"object"==_typeof(editorParams.elementAttributes))for(var key in editorParams.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),input.setAttribute(key,input.getAttribute(key)+editorParams.elementAttributes["+"+key])):input.setAttribute(key,editorParams.elementAttributes[key]);function genUniqueColumnValues(){!0===editorParams.values?uniqueColumnValues=getUniqueColumnValues():"string"==typeof editorParams.values&&(uniqueColumnValues=getUniqueColumnValues(editorParams.values))}function getUniqueColumnValues(field){var output={},data=self.table.getData(),column;return(column=field?self.table.columnManager.getColumnByField(field):cell.getColumn()._getSelf())?(data.forEach((function(row){var val=column.getFieldValue(row);null!=val&&""!==val&&(output[val]=!0)})),output=editorParams.sortValuesList?"asc"==editorParams.sortValuesList?Object.keys(output).sort():Object.keys(output).sort().reverse():Object.keys(output)):console.warn("unable to find matching column to create autocomplete lookup list:",field),output}function filterList(term,intialLoad){var matches=[],values,items,searchEl;values=uniqueColumnValues||(editorParams.values||[]),editorParams.searchFunc?(matches=editorParams.searchFunc(term,values))instanceof Promise?(addNotice(void 0!==editorParams.searchingPlaceholder?editorParams.searchingPlaceholder:"Searching..."),matches.then((function(result){fillListIfNotEmpty(parseItems(result),intialLoad)})).catch((function(err){console.err("error in autocomplete search promise:",err)}))):fillListIfNotEmpty(parseItems(matches),intialLoad):(items=parseItems(values),""===term?editorParams.showListOnEmpty&&(matches=items):items.forEach((function(item){null===item.value&&void 0===item.value||(String(item.value).toLowerCase().indexOf(String(term).toLowerCase())>-1||String(item.title).toLowerCase().indexOf(String(term).toLowerCase())>-1)&&matches.push(item)})),fillListIfNotEmpty(matches,intialLoad))}function addNotice(notice){var searchEl=document.createElement("div");clearList(),!1!==notice&&(searchEl.classList.add("tabulator-edit-select-list-notice"),searchEl.tabIndex=0,notice instanceof Node?searchEl.appendChild(notice):searchEl.innerHTML=notice,listEl.appendChild(searchEl))}function parseItems(inputValues){var itemList=[];if(Array.isArray(inputValues))inputValues.forEach((function(value){var item={};"object"===(void 0===value?"undefined":_typeof(value))?(item.title=editorParams.listItemFormatter?editorParams.listItemFormatter(value.value,value.label):value.label,item.value=value.value):(item.title=editorParams.listItemFormatter?editorParams.listItemFormatter(value,value):value,item.value=value),itemList.push(item)}));else for(var key in inputValues){var item={title:editorParams.listItemFormatter?editorParams.listItemFormatter(key,inputValues[key]):inputValues[key],value:key};itemList.push(item)}return itemList}function clearList(){for(;listEl.firstChild;)listEl.removeChild(listEl.firstChild)}function fillListIfNotEmpty(items,intialLoad){items.length?fillList(items,intialLoad):editorParams.emptyPlaceholder&&addNotice(editorParams.emptyPlaceholder)}function fillList(items,intialLoad){var current=!1;clearList(),(displayItems=items).forEach((function(item){var el=item.element;el||((el=document.createElement("div")).classList.add("tabulator-edit-select-list-item"),el.tabIndex=0,el.innerHTML=item.title,el.addEventListener("click",(function(e){setCurrentItem(item),chooseItem()})),el.addEventListener("mousedown",(function(e){blurable=!1,setTimeout((function(){blurable=!0}),10)})),item.element=el,intialLoad&&item.value==initialValue&&(input.value=item.title,item.element.classList.add("active"),current=!0),item===currentItem&&(item.element.classList.add("active"),current=!0)),listEl.appendChild(el)})),current||setCurrentItem(!1)}function chooseItem(){hideList(),currentItem?initialValue!==currentItem.value?(initialValue=currentItem.value,input.value=currentItem.title,success(currentItem.value)):cancel():editorParams.freetext?(initialValue=input.value,success(input.value)):editorParams.allowEmpty&&""===input.value?(initialValue=input.value,success(input.value)):cancel()}function showList(){if(!listEl.parentNode){for(;listEl.firstChild;)listEl.removeChild(listEl.firstChild);var offset=Tabulator.prototype.helpers.elOffset(cellEl);listEl.style.minWidth=cellEl.offsetWidth+"px",listEl.style.top=offset.top+cellEl.offsetHeight+"px",listEl.style.left=offset.left+"px",document.body.appendChild(listEl)}}function setCurrentItem(item,showInputValue){currentItem&&currentItem.element&&currentItem.element.classList.remove("active"),currentItem=item,item&&item.element&&item.element.classList.add("active")}function hideList(){listEl.parentNode&&listEl.parentNode.removeChild(listEl),removeScrollListener()}function cancelItem(){hideList(),cancel()}function removeScrollListener(){self.table.rowManager.element.removeEventListener("scroll",cancelItem)}return listEl.classList.add("tabulator-edit-select-list"),listEl.addEventListener("mousedown",(function(e){blurable=!1,setTimeout((function(){blurable=!0}),10)})),input.addEventListener("keydown",(function(e){var index;switch(e.keyCode){case 38:index=displayItems.indexOf(currentItem),("editor"==vertNav||"hybrid"==vertNav&&index)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),setCurrentItem(index>0&&displayItems[index-1]));break;case 40:index=displayItems.indexOf(currentItem),("editor"==vertNav||"hybrid"==vertNav&&index<displayItems.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),index<displayItems.length-1&&setCurrentItem(-1==index?displayItems[0]:displayItems[index+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation();break;case 13:chooseItem();break;case 27:cancelItem();break;case 36:case 35:e.stopImmediatePropagation()}})),input.addEventListener("keyup",(function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:filterList(input.value)}})),input.addEventListener("search",(function(e){filterList(input.value)})),input.addEventListener("blur",(function(e){blurable&&chooseItem()})),input.addEventListener("focus",(function(e){var value=initialDisplayValue;genUniqueColumnValues(),showList(),input.value=value,filterList(value,!0)})),onRendered((function(){input.style.height="100%",input.focus({preventScroll:!0})})),editorParams.mask&&this.table.modules.edit.maskInput(input,editorParams),input},star:function star(cell,onRendered,success,cancel,editorParams){var self=this,element=cell.getElement(),value=cell.getValue(),maxStars=element.getElementsByTagName("svg").length||5,size=element.getElementsByTagName("svg")[0]?element.getElementsByTagName("svg")[0].getAttribute("width"):14,stars=[],starsHolder=document.createElement("div"),star=document.createElementNS("http://www.w3.org/2000/svg","svg");function starChange(val){stars.forEach((function(star,i){i<val?("ie"==self.table.browser?star.setAttribute("class","tabulator-star-active"):star.classList.replace("tabulator-star-inactive","tabulator-star-active"),star.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==self.table.browser?star.setAttribute("class","tabulator-star-inactive"):star.classList.replace("tabulator-star-active","tabulator-star-inactive"),star.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')}))}function buildStar(i){var starHolder=document.createElement("span"),nextStar=star.cloneNode(!0);stars.push(nextStar),starHolder.addEventListener("mouseenter",(function(e){e.stopPropagation(),e.stopImmediatePropagation(),starChange(i)})),starHolder.addEventListener("mousemove",(function(e){e.stopPropagation(),e.stopImmediatePropagation()})),starHolder.addEventListener("click",(function(e){e.stopPropagation(),e.stopImmediatePropagation(),success(i),element.blur()})),starHolder.appendChild(nextStar),starsHolder.appendChild(starHolder)}function changeValue(val){value=val,starChange(val)}if(element.style.whiteSpace="nowrap",element.style.overflow="hidden",element.style.textOverflow="ellipsis",starsHolder.style.verticalAlign="middle",starsHolder.style.display="inline-block",starsHolder.style.padding="4px",star.setAttribute("width",size),star.setAttribute("height",size),star.setAttribute("viewBox","0 0 512 512"),star.setAttribute("xml:space","preserve"),star.style.padding="0 1px",editorParams.elementAttributes&&"object"==_typeof(editorParams.elementAttributes))for(var key in editorParams.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),starsHolder.setAttribute(key,starsHolder.getAttribute(key)+editorParams.elementAttributes["+"+key])):starsHolder.setAttribute(key,editorParams.elementAttributes[key]);for(var i=1;i<=maxStars;i++)buildStar(i);return starChange(value=Math.min(parseInt(value),maxStars)),starsHolder.addEventListener("mousemove",(function(e){starChange(0)})),starsHolder.addEventListener("click",(function(e){success(0)})),element.addEventListener("blur",(function(e){cancel()})),element.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:changeValue(value+1);break;case 37:changeValue(value-1);break;case 13:success(value);break;case 27:cancel()}})),starsHolder},progress:function progress(cell,onRendered,success,cancel,editorParams){var element=cell.getElement(),max=void 0===editorParams.max?element.getElementsByTagName("div")[0].getAttribute("max")||100:editorParams.max,min=void 0===editorParams.min?element.getElementsByTagName("div")[0].getAttribute("min")||0:editorParams.min,percent=(max-min)/100,value=cell.getValue()||0,handle=document.createElement("div"),bar=document.createElement("div"),mouseDrag,mouseDragWidth;function updateValue(){var calcVal=percent*Math.round(bar.offsetWidth/(element.clientWidth/100))+min;success(calcVal),element.setAttribute("aria-valuenow",calcVal),element.setAttribute("aria-label",value)}if(handle.style.position="absolute",handle.style.right="0",handle.style.top="0",handle.style.bottom="0",handle.style.width="5px",handle.classList.add("tabulator-progress-handle"),bar.style.display="inline-block",bar.style.position="relative",bar.style.height="100%",bar.style.backgroundColor="#488CE9",bar.style.maxWidth="100%",bar.style.minWidth="0%",editorParams.elementAttributes&&"object"==_typeof(editorParams.elementAttributes))for(var key in editorParams.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),bar.setAttribute(key,bar.getAttribute(key)+editorParams.elementAttributes["+"+key])):bar.setAttribute(key,editorParams.elementAttributes[key]);return element.style.padding="4px 4px",value=Math.min(parseFloat(value),max),value=Math.max(parseFloat(value),min),value=Math.round((value-min)/percent),bar.style.width=value+"%",element.setAttribute("aria-valuemin",min),element.setAttribute("aria-valuemax",max),bar.appendChild(handle),handle.addEventListener("mousedown",(function(e){mouseDrag=e.screenX,mouseDragWidth=bar.offsetWidth})),handle.addEventListener("mouseover",(function(){handle.style.cursor="ew-resize"})),element.addEventListener("mousemove",(function(e){mouseDrag&&(bar.style.width=mouseDragWidth+e.screenX-mouseDrag+"px")})),element.addEventListener("mouseup",(function(e){mouseDrag&&(e.stopPropagation(),e.stopImmediatePropagation(),mouseDrag=!1,mouseDragWidth=!1,updateValue())})),element.addEventListener("keydown",(function(e){switch(e.keyCode){case 39:e.preventDefault(),bar.style.width=bar.clientWidth+element.clientWidth/100+"px";break;case 37:e.preventDefault(),bar.style.width=bar.clientWidth-element.clientWidth/100+"px";break;case 9:case 13:updateValue();break;case 27:cancel()}})),element.addEventListener("blur",(function(){cancel()})),bar},tickCross:function tickCross(cell,onRendered,success,cancel,editorParams){var value=cell.getValue(),input=document.createElement("input"),tristate=editorParams.tristate,indetermValue=void 0===editorParams.indeterminateValue?null:editorParams.indeterminateValue,indetermState=!1;if(input.setAttribute("type","checkbox"),input.style.marginTop="5px",input.style.boxSizing="border-box",editorParams.elementAttributes&&"object"==_typeof(editorParams.elementAttributes))for(var key in editorParams.elementAttributes)"+"==key.charAt(0)?(key=key.slice(1),input.setAttribute(key,input.getAttribute(key)+editorParams.elementAttributes["+"+key])):input.setAttribute(key,editorParams.elementAttributes[key]);function setValue(blur){return tristate?blur?indetermState?indetermValue:input.checked:input.checked&&!indetermState?(input.checked=!1,input.indeterminate=!0,indetermState=!0,indetermValue):(indetermState=!1,input.checked):input.checked}return input.value=value,!tristate||void 0!==value&&value!==indetermValue&&""!==value||(indetermState=!0,input.indeterminate=!0),"firefox"!=this.table.browser&&onRendered((function(){input.focus({preventScroll:!0})})),input.checked=!0===value||"true"===value||"True"===value||1===value,input.addEventListener("change",(function(e){success(setValue())})),input.addEventListener("blur",(function(e){success(setValue(!0))})),input.addEventListener("keydown",(function(e){13==e.keyCode&&success(setValue()),27==e.keyCode&&cancel()})),input}},Tabulator.prototype.registerModule("edit",Edit);var ExportRow=function ExportRow(type,columns,component,indent){this.type=type,this.columns=columns,this.component=component||!1,this.indent=indent||0},ExportColumn=function ExportColumn(value,component,width,height,depth){this.value=value,this.component=component||!1,this.width=width,this.height=height,this.depth=depth},Export=function Export(table){this.table=table,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};Export.prototype.generateExportList=function(config,style,range,colVisProp){this.cloneTableStyle=style,this.config=config||{},this.colVisProp=colVisProp;var headers=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],body=this.bodyToExportRows(this.rowLookup(range));return headers.concat(body)},Export.prototype.genereateTable=function(config,style,range,colVisProp){var list=this.generateExportList(config,style,range,colVisProp);return this.genereateTableElement(list)},Export.prototype.rowLookup=function(range){var _this45=this,rows=[];if("function"==typeof range)range.call(this.table).forEach((function(row){(row=_this45.table.rowManager.findRow(row))&&rows.push(row)}));else switch(range){case!0:case"visible":rows=this.table.rowManager.getVisibleRows(!0);break;case"all":rows=this.table.rowManager.rows;break;case"selected":rows=this.table.modules.selectRow.selectedRows;break;case"active":default:rows=this.table.rowManager.getDisplayRows()}return Object.assign([],rows)},Export.prototype.generateColumnGroupHeaders=function(){var _this46=this,output=[],columns;return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach((function(column){var colData=_this46.processColumnGroup(column);colData&&output.push(colData)})),output},Export.prototype.processColumnGroup=function(column){var _this47=this,subGroups=column.columns,maxDepth=0,title,groupData={title:column.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||column.definition.title,column:column,depth:1};if(subGroups.length){if(groupData.subGroups=[],groupData.width=0,subGroups.forEach((function(subGroup){var subGroupData=_this47.processColumnGroup(subGroup);subGroupData&&(groupData.width+=subGroupData.width,groupData.subGroups.push(subGroupData),subGroupData.depth>maxDepth&&(maxDepth=subGroupData.depth))})),groupData.depth+=maxDepth,!groupData.width)return!1}else{if(!this.columnVisCheck(column))return!1;groupData.width=1}return groupData},Export.prototype.columnVisCheck=function(column){return!1!==column.definition[this.colVisProp]&&(column.visible||!column.visible&&column.definition[this.colVisProp])},Export.prototype.headersToExportRows=function(columns){var headers=[],headerDepth=0,exportRows=[];function parseColumnGroup(column,level){var depth=headerDepth-level;if(void 0===headers[level]&&(headers[level]=[]),column.height=column.subGroups?1:depth-column.depth+1,headers[level].push(column),column.height>1)for(var _i6=1;_i6<column.height;_i6++)void 0===headers[level+_i6]&&(headers[level+_i6]=[]),headers[level+_i6].push(!1);if(column.width>1)for(var _i7=1;_i7<column.width;_i7++)headers[level].push(!1);column.subGroups&&column.subGroups.forEach((function(subGroup){parseColumnGroup(subGroup,level+1)}))}return columns.forEach((function(column){column.depth>headerDepth&&(headerDepth=column.depth)})),columns.forEach((function(column){parseColumnGroup(column,0)})),headers.forEach((function(header){var columns=[];header.forEach((function(col){col?columns.push(new ExportColumn(col.title,col.column.getComponent(),col.width,col.height,col.depth)):columns.push(null)})),exportRows.push(new ExportRow("header",columns))})),exportRows},Export.prototype.bodyToExportRows=function(rows){var _this48=this,columns=[],exportRows=[];return this.table.columnManager.columnsByIndex.forEach((function(column){_this48.columnVisCheck(column)&&columns.push(column.getComponent())})),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&rows.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&rows.push(this.table.modules.columnCalcs.botRow)),(rows=rows.filter((function(row){switch(row.type){case"group":return!1!==_this48.config.rowGroups;case"calc":return!1!==_this48.config.columnCalcs;case"row":return!(_this48.table.options.dataTree&&!1===_this48.config.dataTree&&row.modules.dataTree.parent)}return!0}))).forEach((function(row,i){var rowData=row.getData(_this48.colVisProp),exportCols=[],indent=0;switch(row.type){case"group":indent=row.level,exportCols.push(new ExportColumn(row.key,row.getComponent(),columns.length,1));break;case"calc":case"row":columns.forEach((function(col){exportCols.push(new ExportColumn(col._column.getFieldValue(rowData),col,1,1))})),_this48.table.options.dataTree&&!1!==_this48.config.dataTree&&(indent=row.modules.dataTree.index)}exportRows.push(new ExportRow(row.type,exportCols,row.getComponent(),indent))})),exportRows},Export.prototype.genereateTableElement=function(list){var _this49=this,table=document.createElement("table"),headerEl=document.createElement("thead"),bodyEl=document.createElement("tbody"),styles=this.lookupTableStyles(),rowFormatter=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],setup={};return setup.rowFormatter=null!==rowFormatter?rowFormatter:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(setup.treeElementField=this.table.modules.dataTree.elementField),setup.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],setup.groupHeader&&!Array.isArray(setup.groupHeader)&&(setup.groupHeader=[setup.groupHeader]),table.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),headerEl,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),list.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),list.forEach((function(row,i){switch(row.type){case"header":headerEl.appendChild(_this49.genereateHeaderElement(row,setup,styles));break;case"group":bodyEl.appendChild(_this49.genereateGroupElement(row,setup,styles));break;case"calc":bodyEl.appendChild(_this49.genereateCalcElement(row,setup,styles));break;case"row":var rowEl=_this49.genereateRowElement(row,setup,styles);_this49.mapElementStyles(i%2&&styles.evenRow?styles.evenRow:styles.oddRow,rowEl,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),bodyEl.appendChild(rowEl)}})),headerEl.innerHTML&&table.appendChild(headerEl),table.appendChild(bodyEl),this.mapElementStyles(this.table.element,table,["border-top","border-left","border-right","border-bottom"]),table},Export.prototype.lookupTableStyles=function(){var styles={};return this.cloneTableStyle&&window.getComputedStyle&&(styles.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),styles.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),styles.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),styles.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),styles.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],styles.firstRow&&(styles.styleCells=styles.firstRow.getElementsByClassName("tabulator-cell"),styles.firstCell=styles.styleCells[0],styles.lastCell=styles.styleCells[styles.styleCells.length-1])),styles},Export.prototype.genereateHeaderElement=function(row,setup,styles){var _this50=this,rowEl=document.createElement("tr");return row.columns.forEach((function(column){if(column){var cellEl=document.createElement("th"),classNames=column.component._column.definition.cssClass?column.component._column.definition.cssClass.split(" "):[];cellEl.colSpan=column.width,cellEl.rowSpan=column.height,cellEl.innerHTML=column.value,_this50.cloneTableStyle&&(cellEl.style.boxSizing="border-box"),classNames.forEach((function(className){cellEl.classList.add(className)})),_this50.mapElementStyles(column.component.getElement(),cellEl,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),_this50.mapElementStyles(column.component._column.contentElement,cellEl,["padding-top","padding-left","padding-right","padding-bottom"]),column.component._column.visible?_this50.mapElementStyles(column.component.getElement(),cellEl,["width"]):column.component._column.definition.width&&(cellEl.style.width=column.component._column.definition.width+"px"),column.component._column.parent&&_this50.mapElementStyles(column.component._column.parent.groupElement,cellEl,["border-top"]),rowEl.appendChild(cellEl)}})),rowEl},Export.prototype.genereateGroupElement=function(row,setup,styles){var rowEl=document.createElement("tr"),cellEl=document.createElement("td"),group=row.columns[0];return rowEl.classList.add("tabulator-print-table-row"),setup.groupHeader&&setup.groupHeader[row.indent]?group.value=setup.groupHeader[row.indent](group.value,row.component._group.getRowCount(),row.component._group.getData(),row.component):!1===setup.groupHeader?group.value=group.value:group.value=row.component._group.generator(group.value,row.component._group.getRowCount(),row.component._group.getData(),row.component),cellEl.colSpan=group.width,cellEl.innerHTML=group.value,rowEl.classList.add("tabulator-print-table-group"),rowEl.classList.add("tabulator-group-level-"+row.indent),group.component.getVisibility()&&rowEl.classList.add("tabulator-group-visible"),this.mapElementStyles(styles.firstGroup,rowEl,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(styles.firstGroup,cellEl,["padding-top","padding-left","padding-right","padding-bottom"]),rowEl.appendChild(cellEl),rowEl},Export.prototype.genereateCalcElement=function(row,setup,styles){var rowEl=this.genereateRowElement(row,setup,styles);return rowEl.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(styles.calcRow,rowEl,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),rowEl},Export.prototype.genereateRowElement=function(row,setup,styles){var _this51=this,rowEl=document.createElement("tr");return rowEl.classList.add("tabulator-print-table-row"),row.columns.forEach((function(col){if(col){var cellEl=document.createElement("td"),column=col.component._column,value=col.value,cellWrapper={modules:{},getValue:function getValue(){return value},getField:function getField(){return column.definition.field},getElement:function getElement(){return cellEl},getColumn:function getColumn(){return column.getComponent()},getData:function getData(){return rowData},getRow:function getRow(){return row.getComponent()},getComponent:function getComponent(){return cellWrapper},column:column},classNames;if((column.definition.cssClass?column.definition.cssClass.split(" "):[]).forEach((function(className){cellEl.classList.add(className)})),_this51.table.modExists("format")&&!1!==_this51.config.formatCells)value=_this51.table.modules.format.formatExportValue(cellWrapper,_this51.colVisProp);else switch(void 0===value?"undefined":_typeof(value)){case"object":value=JSON.stringify(value);break;case"undefined":case"null":value="";break;default:value=value}if(value instanceof Node?cellEl.appendChild(value):cellEl.innerHTML=value,styles.firstCell&&(_this51.mapElementStyles(styles.firstCell,cellEl,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),column.definition.align&&(cellEl.style.textAlign=column.definition.align)),_this51.table.options.dataTree&&!1!==_this51.config.dataTree&&(setup.treeElementField&&setup.treeElementField==column.field||!setup.treeElementField&&0==i)&&(row.component._row.modules.dataTree.controlEl&&cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(!0),cellEl.firstChild),row.component._row.modules.dataTree.branchEl&&cellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(!0),cellEl.firstChild)),rowEl.appendChild(cellEl),cellWrapper.modules.format&&cellWrapper.modules.format.renderedCallback&&cellWrapper.modules.format.renderedCallback(),setup.rowFormatter&&!1!==_this51.config.formatCells){var rowComponent=row.getComponent();rowComponent.getElement=function(){return rowEl},setup.rowFormatter(rowComponent)}}})),rowEl},Export.prototype.genereateHTMLTable=function(list){var holder=document.createElement("div");return holder.appendChild(this.genereateTableElement(list)),holder.innerHTML},Export.prototype.getHtml=function(visible,style,config,colVisProp){var list=this.generateExportList(config||this.table.options.htmlOutputConfig,style,visible,colVisProp||"htmlOutput");return this.genereateHTMLTable(list)},Export.prototype.mapElementStyles=function(from,to,props){if(this.cloneTableStyle&&from&&to){var lookup={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var fromStyle=window.getComputedStyle(from);props.forEach((function(prop){to.style[lookup[prop]]=fromStyle.getPropertyValue(prop)}))}}},Tabulator.prototype.registerModule("export",Export);var Filter=function Filter(table){this.table=table,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};Filter.prototype.initializeColumn=function(column,value){var self=this,field=column.getField(),params;function success(value){var filterType="input"==column.modules.filter.tagType&&"text"==column.modules.filter.attrType||"textarea"==column.modules.filter.tagType?"partial":"match",type="",filterChangeCheck="",filterFunc;if(void 0===column.modules.filter.prevSuccess||column.modules.filter.prevSuccess!==value){if(column.modules.filter.prevSuccess=value,column.modules.filter.emptyFunc(value))delete self.headerFilters[field];else{switch(column.modules.filter.value=value,_typeof(column.definition.headerFilterFunc)){case"string":self.filters[column.definition.headerFilterFunc]?(type=column.definition.headerFilterFunc,filterFunc=function filterFunc(data){var params=column.definition.headerFilterFuncParams||{},fieldVal=column.getFieldValue(data);return params="function"==typeof params?params(value,fieldVal,data):params,self.filters[column.definition.headerFilterFunc](value,fieldVal,data,params)}):console.warn("Header Filter Error - Matching filter function not found: ",column.definition.headerFilterFunc);break;case"function":type=filterFunc=function filterFunc(data){var params=column.definition.headerFilterFuncParams||{},fieldVal=column.getFieldValue(data);return params="function"==typeof params?params(value,fieldVal,data):params,column.definition.headerFilterFunc(value,fieldVal,data,params)}}if(!filterFunc)switch(filterType){case"partial":filterFunc=function filterFunc(data){var colVal=column.getFieldValue(data);return null!=colVal&&String(colVal).toLowerCase().indexOf(String(value).toLowerCase())>-1},type="like";break;default:filterFunc=function filterFunc(data){return column.getFieldValue(data)==value},type="="}self.headerFilters[field]={value:value,func:filterFunc,type:type,params:{}}}filterChangeCheck=JSON.stringify(self.headerFilters),self.prevHeaderFilterChangeCheck!==filterChangeCheck&&(self.prevHeaderFilterChangeCheck=filterChangeCheck,self.changed=!0,self.table.rowManager.filterRefresh())}return!0}column.modules.filter={success:success,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(column)},Filter.prototype.generateHeaderFilterElement=function(column,initialValue,reinitialize){var _this52=this,self=this,success=column.modules.filter.success,field=column.getField(),filterElement,editor,editorElement,cellWrapper,typingTimer,searchTrigger,params;function cancel(){}if(column.modules.filter.headerElement&&column.modules.filter.headerElement.parentNode&&column.contentElement.removeChild(column.modules.filter.headerElement.parentNode),field){switch(column.modules.filter.emptyFunc=column.definition.headerFilterEmptyCheck||function(value){return!value&&"0"!==value},(filterElement=document.createElement("div")).classList.add("tabulator-header-filter"),_typeof(column.definition.headerFilter)){case"string":self.table.modules.edit.editors[column.definition.headerFilter]?(editor=self.table.modules.edit.editors[column.definition.headerFilter],"tick"!==column.definition.headerFilter&&"tickCross"!==column.definition.headerFilter||column.definition.headerFilterEmptyCheck||(column.modules.filter.emptyFunc=function(value){return!0!==value&&!1!==value})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",column.definition.editor);break;case"function":editor=column.definition.headerFilter;break;case"boolean":column.modules.edit&&column.modules.edit.editor?editor=column.modules.edit.editor:column.definition.formatter&&self.table.modules.edit.editors[column.definition.formatter]?(editor=self.table.modules.edit.editors[column.definition.formatter],"tick"!==column.definition.formatter&&"tickCross"!==column.definition.formatter||column.definition.headerFilterEmptyCheck||(column.modules.filter.emptyFunc=function(value){return!0!==value&&!1!==value})):editor=self.table.modules.edit.editors.input}if(editor){if(cellWrapper={getValue:function getValue(){return void 0!==initialValue?initialValue:""},getField:function getField(){return column.definition.field},getElement:function getElement(){return filterElement},getColumn:function getColumn(){return column.getComponent()},getRow:function getRow(){return{normalizeHeight:function normalizeHeight(){}}}},params="function"==typeof(params=column.definition.headerFilterParams||{})?params.call(self.table):params,!(editorElement=editor.call(this.table.modules.edit,cellWrapper,(function(){}),success,cancel,params)))return void console.warn("Filter Error - Cannot add filter to "+field+" column, editor returned a value of false");if(!(editorElement instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+field+" column, editor should return an instance of Node, the editor returned:",editorElement);field?self.table.modules.localize.bind("headerFilters|columns|"+column.definition.field,(function(value){editorElement.setAttribute("placeholder",void 0!==value&&value?value:self.table.modules.localize.getText("headerFilters|default"))})):self.table.modules.localize.bind("headerFilters|default",(function(value){editorElement.setAttribute("placeholder",void 0!==self.column.definition.headerFilterPlaceholder&&self.column.definition.headerFilterPlaceholder?self.column.definition.headerFilterPlaceholder:value)})),editorElement.addEventListener("click",(function(e){e.stopPropagation(),editorElement.focus()})),editorElement.addEventListener("focus",(function(e){var left=_this52.table.columnManager.element.scrollLeft;left!==_this52.table.rowManager.element.scrollLeft&&(_this52.table.rowManager.scrollHorizontal(left),_this52.table.columnManager.scrollHorizontal(left))})),typingTimer=!1,searchTrigger=function searchTrigger(e){typingTimer&&clearTimeout(typingTimer),typingTimer=setTimeout((function(){success(editorElement.value)}),self.table.options.headerFilterLiveFilterDelay)},column.modules.filter.headerElement=editorElement,column.modules.filter.attrType=editorElement.hasAttribute("type")?editorElement.getAttribute("type").toLowerCase():"",column.modules.filter.tagType=editorElement.tagName.toLowerCase(),!1!==column.definition.headerFilterLiveFilter&&("autocomplete"!==column.definition.headerFilter&&"tickCross"!==column.definition.headerFilter&&("autocomplete"!==column.definition.editor&&"tickCross"!==column.definition.editor||!0!==column.definition.headerFilter)&&(editorElement.addEventListener("keyup",searchTrigger),editorElement.addEventListener("search",searchTrigger),"number"==column.modules.filter.attrType&&editorElement.addEventListener("change",(function(e){success(editorElement.value)})),"text"==column.modules.filter.attrType&&"ie"!==this.table.browser&&editorElement.setAttribute("type","search")),"input"!=column.modules.filter.tagType&&"select"!=column.modules.filter.tagType&&"textarea"!=column.modules.filter.tagType||editorElement.addEventListener("mousedown",(function(e){e.stopPropagation()}))),filterElement.appendChild(editorElement),column.contentElement.appendChild(filterElement),reinitialize||self.headerFilterColumns.push(column)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",column.definition.title)},Filter.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach((function(column){column.modules.filter&&column.modules.filter.headerElement&&(column.modules.filter.headerElement.style.display="none")}))},Filter.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach((function(column){column.modules.filter&&column.modules.filter.headerElement&&(column.modules.filter.headerElement.style.display="")}))},Filter.prototype.setHeaderFilterFocus=function(column){column.modules.filter&&column.modules.filter.headerElement?column.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",column.getField())},Filter.prototype.getHeaderFilterValue=function(column){if(column.modules.filter&&column.modules.filter.headerElement)return column.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",column.getField())},Filter.prototype.setHeaderFilterValue=function(column,value){column&&(column.modules.filter&&column.modules.filter.headerElement?(this.generateHeaderFilterElement(column,value,!0),column.modules.filter.success(value)):console.warn("Column Filter Error - No header filter set on column:",column.getField()))},Filter.prototype.reloadHeaderFilter=function(column){column&&(column.modules.filter&&column.modules.filter.headerElement?this.generateHeaderFilterElement(column,column.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",column.getField()))},Filter.prototype.hasChanged=function(){var changed=this.changed;return this.changed=!1,changed},Filter.prototype.setFilter=function(field,type,value,params){var self=this;this.filterList=[],Array.isArray(field)||(field=[{field:field,type:type,value:value,params:params}]),this.addFilter(field)},Filter.prototype.addFilter=function(field,type,value,params){var self=this;Array.isArray(field)||(field=[{field:field,type:type,value:value,params:params}]),field.forEach((function(filter){(filter=self.findFilter(filter))&&(self.filterList.push(filter),self.changed=!0)})),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.findFilter=function(filter){var self=this,column;if(Array.isArray(filter))return this.findSubFilters(filter);var filterFunc=!1;return"function"==typeof filter.field?filterFunc=function filterFunc(data){return filter.field(data,filter.type||{})}:self.filters[filter.type]?filterFunc=(column=self.table.columnManager.getColumnByField(filter.field))?function filterFunc(data){return self.filters[filter.type](filter.value,column.getFieldValue(data),data,filter.params||{})}:function filterFunc(data){return self.filters[filter.type](filter.value,data[filter.field],data,filter.params||{})}:console.warn("Filter Error - No such filter type found, ignoring: ",filter.type),filter.func=filterFunc,!!filter.func&&filter},Filter.prototype.findSubFilters=function(filters){var self=this,output=[];return filters.forEach((function(filter){(filter=self.findFilter(filter))&&output.push(filter)})),!!output.length&&output},Filter.prototype.getFilters=function(all,ajax){var output=[];return all&&(output=this.getHeaderFilters()),ajax&&output.forEach((function(item){"function"==typeof item.type&&(item.type="function")})),output=output.concat(this.filtersToArray(this.filterList,ajax))},Filter.prototype.filtersToArray=function(filterList,ajax){var _this53=this,output=[];return filterList.forEach((function(filter){var item;Array.isArray(filter)?output.push(_this53.filtersToArray(filter,ajax)):(item={field:filter.field,type:filter.type,value:filter.value},ajax&&"function"==typeof item.type&&(item.type="function"),output.push(item))})),output},Filter.prototype.getHeaderFilters=function(){var self=this,output=[];for(var key in this.headerFilters)output.push({field:key,type:this.headerFilters[key].type,value:this.headerFilters[key].value});return output},Filter.prototype.removeFilter=function(field,type,value){var self=this;Array.isArray(field)||(field=[{field:field,type:type,value:value}]),field.forEach((function(filter){var index=-1;(index="object"==_typeof(filter.field)?self.filterList.findIndex((function(element){return filter===element})):self.filterList.findIndex((function(element){return filter.field===element.field&&filter.type===element.type&&filter.value===element.value})))>-1?(self.filterList.splice(index,1),self.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",filter.type)})),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearFilter=function(all){this.filterList=[],all&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearHeaderFilter=function(){var self=this;this.headerFilters={},self.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach((function(column){column.modules.filter.value=null,column.modules.filter.prevSuccess=void 0,self.reloadHeaderFilter(column)})),this.changed=!0},Filter.prototype.search=function(searchType,field,type,value){var self=this,activeRows=[],filterList=[];return Array.isArray(field)||(field=[{field:field,type:type,value:value}]),field.forEach((function(filter){(filter=self.findFilter(filter))&&filterList.push(filter)})),this.table.rowManager.rows.forEach((function(row){var match=!0;filterList.forEach((function(filter){self.filterRecurse(filter,row.getData())||(match=!1)})),match&&activeRows.push("data"===searchType?row.getData("data"):row.getComponent())})),activeRows},Filter.prototype.filter=function(rowList,filters){var self=this,activeRows=[],activeRowComponents=[];return self.table.options.dataFiltering&&self.table.options.dataFiltering.call(self.table,self.getFilters()),self.table.options.ajaxFiltering||!self.filterList.length&&!Object.keys(self.headerFilters).length?activeRows=rowList.slice(0):rowList.forEach((function(row){self.filterRow(row)&&activeRows.push(row)})),self.table.options.dataFiltered&&(activeRows.forEach((function(row){activeRowComponents.push(row.getComponent())})),self.table.options.dataFiltered.call(self.table,self.getFilters(),activeRowComponents)),activeRows},Filter.prototype.filterRow=function(row,filters){var self=this,match=!0,data=row.getData();for(var field in self.filterList.forEach((function(filter){self.filterRecurse(filter,data)||(match=!1)})),self.headerFilters)self.headerFilters[field].func(data)||(match=!1);return match},Filter.prototype.filterRecurse=function(filter,data){var self=this,match=!1;return Array.isArray(filter)?filter.forEach((function(subFilter){self.filterRecurse(subFilter,data)&&(match=!0)})):match=filter.func(data),match},Filter.prototype.filters={"=":function _(filterVal,rowVal,rowData,filterParams){return rowVal==filterVal},"<":function _(filterVal,rowVal,rowData,filterParams){return rowVal<filterVal},"<=":function _(filterVal,rowVal,rowData,filterParams){return rowVal<=filterVal},">":function _(filterVal,rowVal,rowData,filterParams){return rowVal>filterVal},">=":function _(filterVal,rowVal,rowData,filterParams){return rowVal>=filterVal},"!=":function _(filterVal,rowVal,rowData,filterParams){return rowVal!=filterVal},regex:function regex(filterVal,rowVal,rowData,filterParams){return"string"==typeof filterVal&&(filterVal=new RegExp(filterVal)),filterVal.test(rowVal)},like:function like(filterVal,rowVal,rowData,filterParams){return null==filterVal?rowVal===filterVal:null!=rowVal&&String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase())>-1},keywords:function keywords(filterVal,rowVal,rowData,filterParams){var keywords=filterVal.toLowerCase().split(void 0===filterParams.separator?" ":filterParams.separator),value=String(null==rowVal?"":rowVal).toLowerCase(),matches=[];return keywords.forEach((function(keyword){value.includes(keyword)&&matches.push(!0)})),filterParams.matchAll?matches.length===keywords.length:!!matches.length},starts:function starts(filterVal,rowVal,rowData,filterParams){return null==filterVal?rowVal===filterVal:null!=rowVal&&String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase())},ends:function ends(filterVal,rowVal,rowData,filterParams){return null==filterVal?rowVal===filterVal:null!=rowVal&&String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase())},in:function _in(filterVal,rowVal,rowData,filterParams){return Array.isArray(filterVal)?filterVal.indexOf(rowVal)>-1:(console.warn("Filter Error - filter value is not an array:",filterVal),!1)}},Tabulator.prototype.registerModule("filter",Filter);var Format=function Format(table){this.table=table};Format.prototype.initializeColumn=function(column){column.modules.format=this.lookupFormatter(column,""),void 0!==column.definition.formatterPrint&&(column.modules.format.print=this.lookupFormatter(column,"Print")),void 0!==column.definition.formatterClipboard&&(column.modules.format.clipboard=this.lookupFormatter(column,"Clipboard")),void 0!==column.definition.formatterHtmlOutput&&(column.modules.format.htmlOutput=this.lookupFormatter(column,"HtmlOutput"))},Format.prototype.lookupFormatter=function(column,type){var config={params:column.definition["formatter"+type+"Params"]||{}},formatter=column.definition["formatter"+type];switch(void 0===formatter?"undefined":_typeof(formatter)){case"string":"tick"===formatter&&(formatter="tickCross",void 0===config.params.crossElement&&(config.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[formatter]?config.formatter=this.formatters[formatter]:(console.warn("Formatter Error - No such formatter found: ",formatter),config.formatter=this.formatters.plaintext);break;case"function":config.formatter=formatter;break;default:config.formatter=this.formatters.plaintext}return config},Format.prototype.cellRendered=function(cell){cell.modules.format&&cell.modules.format.renderedCallback&&cell.modules.format.renderedCallback()},Format.prototype.formatValue=function(cell){var component=cell.getComponent(),params="function"==typeof cell.column.modules.format.params?cell.column.modules.format.params(component):cell.column.modules.format.params;function onRendered(callback){cell.modules.format||(cell.modules.format={}),cell.modules.format.renderedCallback=callback}return cell.column.modules.format.formatter.call(this,component,params,onRendered)},Format.prototype.formatExportValue=function(cell,type){var formatter=cell.column.modules.format[type],params;if(formatter){var onRendered=function onRendered(callback){cell.modules.format||(cell.modules.format={}),cell.modules.format.renderedCallback=callback};return params="function"==typeof formatter.params?formatter.params(component):formatter.params,formatter.formatter.call(this,cell.getComponent(),params,onRendered)}return this.formatValue(cell)},Format.prototype.sanitizeHTML=function(value){if(value){var entityMap={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(value).replace(/[&<>"'`=\/]/g,(function(s){return entityMap[s]}))}return value},Format.prototype.emptyToSpace=function(value){return null==value||""===value?"&nbsp;":value},Format.prototype.getFormatter=function(formatter){var formatter;switch(void 0===formatter?"undefined":_typeof(formatter)){case"string":this.formatters[formatter]?formatter=this.formatters[formatter]:(console.warn("Formatter Error - No such formatter found: ",formatter),formatter=this.formatters.plaintext);break;case"function":formatter=formatter;break;default:formatter=this.formatters.plaintext}return formatter},Format.prototype.formatters={plaintext:function plaintext(cell,formatterParams,onRendered){return this.emptyToSpace(this.sanitizeHTML(cell.getValue()))},html:function html(cell,formatterParams,onRendered){return cell.getValue()},textarea:function textarea(cell,formatterParams,onRendered){return cell.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(cell.getValue()))},money:function money(cell,formatterParams,onRendered){var floatVal=parseFloat(cell.getValue()),number,integer,decimal,rgx,decimalSym=formatterParams.decimal||".",thousandSym=formatterParams.thousand||",",symbol=formatterParams.symbol||"",after=!!formatterParams.symbolAfter,precision=void 0!==formatterParams.precision?formatterParams.precision:2;if(isNaN(floatVal))return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));for(number=!1!==precision?floatVal.toFixed(precision):floatVal,integer=(number=String(number).split("."))[0],decimal=number.length>1?decimalSym+number[1]:"",rgx=/(\d+)(\d{3})/;rgx.test(integer);)integer=integer.replace(rgx,"$1"+thousandSym+"$2");return after?integer+decimal+symbol:symbol+integer+decimal},link:function link(cell,formatterParams,onRendered){var value=cell.getValue(),urlPrefix=formatterParams.urlPrefix||"",download=formatterParams.download,label=value,el=document.createElement("a"),data;if(formatterParams.labelField&&(label=(data=cell.getData())[formatterParams.labelField]),formatterParams.label)switch(_typeof(formatterParams.label)){case"string":label=formatterParams.label;break;case"function":label=formatterParams.label(cell)}if(label){if(formatterParams.urlField&&(value=(data=cell.getData())[formatterParams.urlField]),formatterParams.url)switch(_typeof(formatterParams.url)){case"string":value=formatterParams.url;break;case"function":value=formatterParams.url(cell)}return el.setAttribute("href",urlPrefix+value),formatterParams.target&&el.setAttribute("target",formatterParams.target),formatterParams.download&&(download="function"==typeof download?download(cell):!0===download?"":download,el.setAttribute("download",download)),el.innerHTML=this.emptyToSpace(this.sanitizeHTML(label)),el}return"&nbsp;"},image:function image(cell,formatterParams,onRendered){var el=document.createElement("img");switch(el.setAttribute("src",cell.getValue()),_typeof(formatterParams.height)){case"number":el.style.height=formatterParams.height+"px";break;case"string":el.style.height=formatterParams.height}switch(_typeof(formatterParams.width)){case"number":el.style.width=formatterParams.width+"px";break;case"string":el.style.width=formatterParams.width}return el.addEventListener("load",(function(){cell.getRow().normalizeHeight()})),el},tickCross:function tickCross(cell,formatterParams,onRendered){var value=cell.getValue(),element=cell.getElement(),empty=formatterParams.allowEmpty,truthy=formatterParams.allowTruthy,tick=void 0!==formatterParams.tickElement?formatterParams.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',cross=void 0!==formatterParams.crossElement?formatterParams.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return truthy&&value||!0===value||"true"===value||"True"===value||1===value||"1"===value?(element.setAttribute("aria-checked",!0),tick||""):!empty||"null"!==value&&""!==value&&null!=value?(element.setAttribute("aria-checked",!1),cross||""):(element.setAttribute("aria-checked","mixed"),"")},datetime:function datetime(cell,formatterParams,onRendered){var inputFormat=formatterParams.inputFormat||"YYYY-MM-DD hh:mm:ss",outputFormat=formatterParams.outputFormat||"DD/MM/YYYY hh:mm:ss",invalid=void 0!==formatterParams.invalidPlaceholder?formatterParams.invalidPlaceholder:"",value=cell.getValue(),newDatetime=moment(value,inputFormat);return newDatetime.isValid()?formatterParams.timezone?newDatetime.tz(formatterParams.timezone).format(outputFormat):newDatetime.format(outputFormat):!0===invalid?value:"function"==typeof invalid?invalid(value):invalid},datetimediff:function datetime(cell,formatterParams,onRendered){var inputFormat=formatterParams.inputFormat||"YYYY-MM-DD hh:mm:ss",invalid=void 0!==formatterParams.invalidPlaceholder?formatterParams.invalidPlaceholder:"",suffix=void 0!==formatterParams.suffix&&formatterParams.suffix,unit=void 0!==formatterParams.unit?formatterParams.unit:void 0,humanize=void 0!==formatterParams.humanize&&formatterParams.humanize,date=void 0!==formatterParams.date?formatterParams.date:moment(),value=cell.getValue(),newDatetime=moment(value,inputFormat);return newDatetime.isValid()?humanize?moment.duration(newDatetime.diff(date)).humanize(suffix):newDatetime.diff(date,unit)+(suffix?" "+suffix:""):!0===invalid?value:"function"==typeof invalid?invalid(value):invalid},lookup:function lookup(cell,formatterParams,onRendered){var value=cell.getValue();return void 0===formatterParams[value]?(console.warn("Missing display value for "+value),value):formatterParams[value]},star:function star(cell,formatterParams,onRendered){var value=cell.getValue(),element=cell.getElement(),maxStars=formatterParams&&formatterParams.stars?formatterParams.stars:5,stars=document.createElement("span"),star=document.createElementNS("http://www.w3.org/2000/svg","svg"),starActive='<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',starInactive='<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';stars.style.verticalAlign="middle",star.setAttribute("width","14"),star.setAttribute("height","14"),star.setAttribute("viewBox","0 0 512 512"),star.setAttribute("xml:space","preserve"),star.style.padding="0 1px",value=value&&!isNaN(value)?parseInt(value):0,value=Math.max(0,Math.min(value,maxStars));for(var i=1;i<=maxStars;i++){var nextStar=star.cloneNode(!0);nextStar.innerHTML=i<=value?starActive:starInactive,stars.appendChild(nextStar)}return element.style.whiteSpace="nowrap",element.style.overflow="hidden",element.style.textOverflow="ellipsis",element.setAttribute("aria-label",value),stars},traffic:function traffic(cell,formatterParams,onRendered){var value=this.sanitizeHTML(cell.getValue())||0,el=document.createElement("span"),max=formatterParams&&formatterParams.max?formatterParams.max:100,min=formatterParams&&formatterParams.min?formatterParams.min:0,colors=formatterParams&&void 0!==formatterParams.color?formatterParams.color:["red","orange","green"],color="#666666",percent,percentValue;if(!isNaN(value)&&void 0!==cell.getValue()){switch(el.classList.add("tabulator-traffic-light"),percentValue=parseFloat(value)<=max?parseFloat(value):max,percentValue=parseFloat(percentValue)>=min?parseFloat(percentValue):min,percent=(max-min)/100,percentValue=Math.round((percentValue-min)/percent),void 0===colors?"undefined":_typeof(colors)){case"string":color=colors;break;case"function":color=colors(value);break;case"object":if(Array.isArray(colors)){var unit=100/colors.length,index=Math.floor(percentValue/unit);index=Math.min(index,colors.length-1),color=colors[index=Math.max(index,0)];break}}return el.style.backgroundColor=color,el}},progress:function progress(cell,formatterParams,onRendered){var value=this.sanitizeHTML(cell.getValue())||0,element=cell.getElement(),max=formatterParams&&formatterParams.max?formatterParams.max:100,min=formatterParams&&formatterParams.min?formatterParams.min:0,legendAlign=formatterParams&&formatterParams.legendAlign?formatterParams.legendAlign:"center",percent,percentValue,color,legend,legendColor,top,left,right,bottom;switch(percentValue=parseFloat(value)<=max?parseFloat(value):max,percentValue=parseFloat(percentValue)>=min?parseFloat(percentValue):min,percent=(max-min)/100,percentValue=Math.round((percentValue-min)/percent),_typeof(formatterParams.color)){case"string":color=formatterParams.color;break;case"function":color=formatterParams.color(value);break;case"object":if(Array.isArray(formatterParams.color)){var unit=100/formatterParams.color.length,index=Math.floor(percentValue/unit);index=Math.min(index,formatterParams.color.length-1),index=Math.max(index,0),color=formatterParams.color[index];break}default:color="#2DC214"}switch(_typeof(formatterParams.legend)){case"string":legend=formatterParams.legend;break;case"function":legend=formatterParams.legend(value);break;case"boolean":legend=value;break;default:legend=!1}switch(_typeof(formatterParams.legendColor)){case"string":legendColor=formatterParams.legendColor;break;case"function":legendColor=formatterParams.legendColor(value);break;case"object":if(Array.isArray(formatterParams.legendColor)){var unit=100/formatterParams.legendColor.length,index=Math.floor(percentValue/unit);index=Math.min(index,formatterParams.legendColor.length-1),index=Math.max(index,0),legendColor=formatterParams.legendColor[index]}break;default:legendColor="#000"}element.style.minWidth="30px",element.style.position="relative",element.setAttribute("aria-label",percentValue);var barEl=document.createElement("div");if(barEl.style.display="inline-block",barEl.style.position="relative",barEl.style.width=percentValue+"%",barEl.style.backgroundColor=color,barEl.style.height="100%",barEl.setAttribute("data-max",max),barEl.setAttribute("data-min",min),legend){var legendEl=document.createElement("div");legendEl.style.position="absolute",legendEl.style.top="4px",legendEl.style.left=0,legendEl.style.textAlign=legendAlign,legendEl.style.width="100%",legendEl.style.color=legendColor,legendEl.innerHTML=legend}return onRendered((function(){if(!(cell instanceof CellComponent)){var holderEl=document.createElement("div");holderEl.style.position="absolute",holderEl.style.top="4px",holderEl.style.bottom="4px",holderEl.style.left="4px",holderEl.style.right="4px",element.appendChild(holderEl),element=holderEl}element.appendChild(barEl),legend&&element.appendChild(legendEl)})),""},color:function color(cell,formatterParams,onRendered){return cell.getElement().style.backgroundColor=this.sanitizeHTML(cell.getValue()),""},buttonTick:function buttonTick(cell,formatterParams,onRendered){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function buttonCross(cell,formatterParams,onRendered){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function rownum(cell,formatterParams,onRendered){return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf())+1},handle:function handle(cell,formatterParams,onRendered){return cell.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function responsiveCollapse(cell,formatterParams,onRendered){var self=this,open=!1,el=document.createElement("div"),config=cell.getRow()._row.modules.responsiveLayout;function toggleList(isOpen){var collapseEl=config.element;config.open=isOpen,collapseEl&&(config.open?(el.classList.add("open"),collapseEl.style.display=""):(el.classList.remove("open"),collapseEl.style.display="none"))}return el.classList.add("tabulator-responsive-collapse-toggle"),el.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",cell.getElement().classList.add("tabulator-row-handle"),el.addEventListener("click",(function(e){e.stopImmediatePropagation(),toggleList(!config.open)})),toggleList(config.open),el},rowSelection:function rowSelection(cell){var _this54=this,checkbox=document.createElement("input");if(checkbox.type="checkbox",this.table.modExists("selectRow",!0))if(checkbox.addEventListener("click",(function(e){e.stopPropagation()})),"function"==typeof cell.getRow){var row=cell.getRow();checkbox.addEventListener("change",(function(e){row.toggleSelect()})),checkbox.checked=row.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(row,checkbox)}else checkbox.addEventListener("change",(function(e){_this54.table.modules.selectRow.selectedRows.length?_this54.table.deselectRow():_this54.table.selectRow()})),this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);return checkbox}},Tabulator.prototype.registerModule("format",Format);var FrozenColumns=function FrozenColumns(table){this.table=table,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};FrozenColumns.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},FrozenColumns.prototype.initializeColumn=function(column){var config={margin:0,edge:!1};column.isGroup||(this.frozenCheck(column)?(config.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(column):this.rightColumns.unshift(column),this.active=!0,column.modules.frozen=config):this.initializationMode="right")},FrozenColumns.prototype.frozenCheck=function(column){var frozen=!1;return column.parent.isGroup&&column.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),column.parent.isGroup?this.frozenCheck(column.parent):column.definition.frozen},FrozenColumns.prototype.scrollHorizontal=function(){var _this55=this,rows;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout((function(){_this55.layout()}),100),rows=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),rows.forEach((function(row){"row"===row.type&&_this55.layoutRow(row)})),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},FrozenColumns.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},FrozenColumns.prototype.layoutColumnPosition=function(allCells){var _this56=this,leftParents=[];this.leftColumns.forEach((function(column,i){if(column.modules.frozen.margin=_this56._calcSpace(_this56.leftColumns,i)+_this56.table.columnManager.scrollLeft+"px",i==_this56.leftColumns.length-1?column.modules.frozen.edge=!0:column.modules.frozen.edge=!1,column.parent.isGroup){var parentEl=_this56.getColGroupParentElement(column);leftParents.includes(parentEl)||(_this56.layoutElement(parentEl,column),leftParents.push(parentEl)),column.modules.frozen.edge&&parentEl.classList.add("tabulator-frozen-"+column.modules.frozen.position)}else _this56.layoutElement(column.getElement(),column);allCells&&column.cells.forEach((function(cell){_this56.layoutElement(cell.getElement(),column)}))})),this.rightColumns.forEach((function(column,i){column.modules.frozen.margin=_this56.rightPadding-_this56._calcSpace(_this56.rightColumns,i+1)+"px",i==_this56.rightColumns.length-1?column.modules.frozen.edge=!0:column.modules.frozen.edge=!1,column.parent.isGroup?_this56.layoutElement(_this56.getColGroupParentElement(column),column):_this56.layoutElement(column.getElement(),column),allCells&&column.cells.forEach((function(cell){_this56.layoutElement(cell.getElement(),column)}))}))},FrozenColumns.prototype.getColGroupParentElement=function(column){return column.parent.isGroup?this.getColGroupParentElement(column.parent):column.getElement()},FrozenColumns.prototype.layout=function(){var self=this,rightMargin=0;self.active&&(this.calcMargins(),self.table.rowManager.getDisplayRows().forEach((function(row){"row"===row.type&&self.layoutRow(row)})),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.layoutRow=function(row){var _this57=this,rowEl;row.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach((function(column){var cell=row.getCell(column);cell&&_this57.layoutElement(cell.getElement(),column)})),this.rightColumns.forEach((function(column){var cell=row.getCell(column);cell&&_this57.layoutElement(cell.getElement(),column)}))},FrozenColumns.prototype.layoutElement=function(element,column){column.modules.frozen&&(element.style.position="absolute",element.style.left=column.modules.frozen.margin,element.classList.add("tabulator-frozen"),column.modules.frozen.edge&&element.classList.add("tabulator-frozen-"+column.modules.frozen.position))},FrozenColumns.prototype._calcSpace=function(columns,index){for(var width=0,_i8=0;_i8<index;_i8++)columns[_i8].visible&&(width+=columns[_i8].getWidth());return width},Tabulator.prototype.registerModule("frozenColumns",FrozenColumns);var FrozenRows=function FrozenRows(table){this.table=table,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};FrozenRows.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},FrozenRows.prototype.setDisplayIndex=function(index){this.displayIndex=index},FrozenRows.prototype.getDisplayIndex=function(){return this.displayIndex},FrozenRows.prototype.isFrozen=function(){return!!this.rows.length},FrozenRows.prototype.getRows=function(rows){var self=this,frozen=[],output=rows.slice(0);return this.rows.forEach((function(row){var index=output.indexOf(row);index>-1&&output.splice(index,1)})),output},FrozenRows.prototype.freezeRow=function(row){row.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(row.modules.frozen=!0,this.topElement.appendChild(row.getElement()),row.initialize(),row.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(row),this.table.rowManager.refreshActiveData("display"),this.styleRows())},FrozenRows.prototype.unfreezeRow=function(row){var index=this.rows.indexOf(row);if(row.modules.frozen){row.modules.frozen=!1;var rowEl=row.getElement();rowEl.parentNode.removeChild(rowEl),this.table.rowManager.adjustTableSize(),this.rows.splice(index,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},FrozenRows.prototype.styleRows=function(row){var self=this;this.rows.forEach((function(row,i){self.table.rowManager.styleRow(row,i)}))},Tabulator.prototype.registerModule("frozenRows",FrozenRows);var GroupComponent=function GroupComponent(group){this._group=group,this.type="GroupComponent"};GroupComponent.prototype.getKey=function(){return this._group.key},GroupComponent.prototype.getField=function(){return this._group.field},GroupComponent.prototype.getElement=function(){return this._group.element},GroupComponent.prototype.getRows=function(){return this._group.getRows(!0)},GroupComponent.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},GroupComponent.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},GroupComponent.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._group.visible},GroupComponent.prototype.isVisible=function(){return this._group.visible},GroupComponent.prototype.show=function(){this._group.show()},GroupComponent.prototype.hide=function(){this._group.hide()},GroupComponent.prototype.toggle=function(){this._group.toggleVisibility()},GroupComponent.prototype._getSelf=function(){return this._group},GroupComponent.prototype.getTable=function(){return this._group.groupManager.table};var Group=function Group(groupManager,parent,level,key,field,generator,oldGroup){this.groupManager=groupManager,this.parent=parent,this.key=key,this.level=level,this.field=field,this.hasSubGroups=level<groupManager.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=oldGroup,this.rows=[],this.groups=[],this.groupList=[],this.generator=generator,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=oldGroup?oldGroup.visible:void 0!==groupManager.startOpen[level]?groupManager.startOpen[level]:groupManager.startOpen[0],this.component=null,this.createElements(),this.addBindings(),this.createValueGroups()};Group.prototype.wipe=function(){this.groupList.length?this.groupList.forEach((function(group){group.wipe()})):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},Group.prototype.createElements=function(){var arrow=document.createElement("div");arrow.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(arrow),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},Group.prototype.createValueGroups=function(){var _this58=this,level=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[level]&&this.groupManager.allowedValues[level].forEach((function(value){_this58._createGroup(value,level)}))},Group.prototype.addBindings=function(){var self=this,dblTap,tapHold,tap,toggleElement;self.groupManager.table.options.groupClick&&self.element.addEventListener("click",(function(e){self.groupManager.table.options.groupClick.call(self.groupManager.table,e,self.getComponent())})),self.groupManager.table.options.groupDblClick&&self.element.addEventListener("dblclick",(function(e){self.groupManager.table.options.groupDblClick.call(self.groupManager.table,e,self.getComponent())})),self.groupManager.table.options.groupContext&&self.element.addEventListener("contextmenu",(function(e){self.groupManager.table.options.groupContext.call(self.groupManager.table,e,self.getComponent())})),self.groupManager.table.options.groupContextMenu&&self.groupManager.table.modExists("menu")&&self.groupManager.table.modules.menu.initializeGroup.call(self.groupManager.table.modules.menu,self),self.groupManager.table.options.groupTap&&(tap=!1,self.element.addEventListener("touchstart",(function(e){tap=!0}),{passive:!0}),self.element.addEventListener("touchend",(function(e){tap&&self.groupManager.table.options.groupTap(e,self.getComponent()),tap=!1}))),self.groupManager.table.options.groupDblTap&&(dblTap=null,self.element.addEventListener("touchend",(function(e){dblTap?(clearTimeout(dblTap),dblTap=null,self.groupManager.table.options.groupDblTap(e,self.getComponent())):dblTap=setTimeout((function(){clearTimeout(dblTap),dblTap=null}),300)}))),self.groupManager.table.options.groupTapHold&&(tapHold=null,self.element.addEventListener("touchstart",(function(e){clearTimeout(tapHold),tapHold=setTimeout((function(){clearTimeout(tapHold),tapHold=null,tap=!1,self.groupManager.table.options.groupTapHold(e,self.getComponent())}),1e3)}),{passive:!0}),self.element.addEventListener("touchend",(function(e){clearTimeout(tapHold),tapHold=null}))),self.groupManager.table.options.groupToggleElement&&(toggleElement="arrow"==self.groupManager.table.options.groupToggleElement?self.arrowElement:self.element).addEventListener("click",(function(e){e.stopPropagation(),e.stopImmediatePropagation(),self.toggleVisibility()}))},Group.prototype._createGroup=function(groupID,level){var groupKey=level+"_"+groupID,group=new Group(this.groupManager,this,level,groupID,this.groupManager.groupIDLookups[level].field,this.groupManager.headerGenerator[level]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[groupKey]);this.groups[groupKey]=group,this.groupList.push(group)},Group.prototype._addRowToGroup=function(row){var level=this.level+1;if(this.hasSubGroups){var groupID=this.groupManager.groupIDLookups[level].func(row.getData()),groupKey=level+"_"+groupID;this.groupManager.allowedValues&&this.groupManager.allowedValues[level]?this.groups[groupKey]&&this.groups[groupKey].addRow(row):(this.groups[groupKey]||this._createGroup(groupID,level),this.groups[groupKey].addRow(row))}},Group.prototype._addRow=function(row){this.rows.push(row),row.modules.group=this},Group.prototype.insertRow=function(row,to,after){var data=this.conformRowData({});row.updateData(data);var toIndex=this.rows.indexOf(to);toIndex>-1?after?this.rows.splice(toIndex+1,0,row):this.rows.splice(toIndex,0,row):after?this.rows.push(row):this.rows.unshift(row),row.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},Group.prototype.scrollHeader=function(left){this.arrowElement.style.marginLeft=left,this.groupList.forEach((function(child){child.scrollHeader(left)}))},Group.prototype.getRowIndex=function(row){},Group.prototype.conformRowData=function(data){return this.field?data[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(data=this.parent.conformRowData(data)),data},Group.prototype.removeRow=function(row){var index=this.rows.indexOf(row),el=row.getElement();index>-1&&this.rows.splice(index,1),this.groupManager.table.options.groupValues||this.rows.length?(el.parentNode&&el.parentNode.removeChild(el),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},Group.prototype.removeGroup=function(group){var groupKey=group.level+"_"+group.key,index;this.groups[groupKey]&&(delete this.groups[groupKey],(index=this.groupList.indexOf(group))>-1&&this.groupList.splice(index,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},Group.prototype.getHeadersAndRows=function(noCalc){var output=[];return output.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach((function(group){output=output.concat(group.getHeadersAndRows(noCalc))})):(!noCalc&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),output.push(this.calcs.top)),output=output.concat(this.rows),!noCalc&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),output.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!noCalc&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),output.push(this.calcs.top))),!noCalc&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),output.push(this.calcs.bottom)))),output},Group.prototype.getData=function(visible,transform){var self=this,output=[];return this._visSet(),(!visible||visible&&this.visible)&&this.rows.forEach((function(row){output.push(row.getData(transform||"data"))})),output},Group.prototype.getRowCount=function(){var count=0;return this.groupList.length?this.groupList.forEach((function(group){count+=group.getRowCount()})):count=this.rows.length,count},Group.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},Group.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach((function(group){var rows;group.getHeadersAndRows().forEach((function(row){row.detachElement()}))})):this.rows.forEach((function(row){var rowEl=row.getElement();rowEl.parentNode.removeChild(rowEl)})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},Group.prototype.show=function(){var self=this;if(this.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var prev=this.getElement();this.groupList.length?this.groupList.forEach((function(group){var rows;group.getHeadersAndRows().forEach((function(row){var rowEl=row.getElement();prev.parentNode.insertBefore(rowEl,prev.nextSibling),row.initialize(),prev=rowEl}))})):this.rows.forEach((function(row){var rowEl=row.getElement();prev.parentNode.insertBefore(rowEl,prev.nextSibling),row.initialize(),prev=rowEl})),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},Group.prototype._visSet=function(){var data=[];"function"==typeof this.visible&&(this.rows.forEach((function(row){data.push(row.getData())})),this.visible=this.visible(this.key,this.getRowCount(),data,this.getComponent()))},Group.prototype.getRowGroup=function(row){var match=!1;return this.groupList.length?this.groupList.forEach((function(group){var result=group.getRowGroup(row);result&&(match=result)})):this.rows.find((function(item){return item===row}))&&(match=this),match},Group.prototype.getSubGroups=function(component){var output=[];return this.groupList.forEach((function(child){output.push(component?child.getComponent():child)})),output},Group.prototype.getRows=function(compoment){var output=[];return this.rows.forEach((function(row){output.push(compoment?row.getComponent():row)})),output},Group.prototype.generateGroupHeaderContents=function(){var data=[];for(this.rows.forEach((function(row){data.push(row.getData())})),this.elementContents=this.generator(this.key,this.getRowCount(),data,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},Group.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var i=0;i<this.element.childNodes.length;++i)this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);return this.generateGroupHeaderContents(),this.element},Group.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Group.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},Group.prototype.initialize=function(force){this.initialized&&!force||(this.normalizeHeight(),this.initialized=!0)},Group.prototype.reinitialize=function(){this.initialized=!1,this.height=0,Tabulator.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},Group.prototype.setHeight=function(height){this.height!=height&&(this.height=height,this.outerHeight=this.element.offsetHeight)},Group.prototype.getHeight=function(){return this.outerHeight},Group.prototype.getGroup=function(){return this},Group.prototype.reinitializeHeight=function(){},Group.prototype.calcHeight=function(){},Group.prototype.setCellHeight=function(){},Group.prototype.clearCellHeight=function(){},Group.prototype.getComponent=function(){return this.component||(this.component=new GroupComponent(this)),this.component};var GroupRows=function GroupRows(table){this.table=table,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};GroupRows.prototype.initialize=function(){var self=this,groupBy=self.table.options.groupBy,startOpen=self.table.options.groupStartOpen,groupHeader=self.table.options.groupHeader,cols;(this.allowedValues=self.table.options.groupValues,Array.isArray(groupBy)&&Array.isArray(groupHeader)&&groupBy.length>groupHeader.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),self.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],self.table.modules.localize.bind("groups|item",(function(langValue,lang){self.headerGenerator[0]=function(value,count,data){return(void 0===value?"":value)+"<span>("+count+" "+(1===count?langValue:lang.groups.items)+")</span>"}})),this.groupIDLookups=[],Array.isArray(groupBy)||groupBy)?this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs():this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs&&this.table.columnManager.getRealColumns().forEach((function(col){col.definition.topCalc&&self.table.modules.columnCalcs.initializeTopRow(),col.definition.bottomCalc&&self.table.modules.columnCalcs.initializeBottomRow()}));Array.isArray(groupBy)||(groupBy=[groupBy]),groupBy.forEach((function(group,i){var lookupFunc,column;lookupFunc="function"==typeof group?group:(column=self.table.columnManager.getColumnByField(group))?function lookupFunc(data){return column.getFieldValue(data)}:function lookupFunc(data){return data[group]},self.groupIDLookups.push({field:"function"!=typeof group&&group,func:lookupFunc,values:!!self.allowedValues&&self.allowedValues[i]})})),startOpen&&(Array.isArray(startOpen)||(startOpen=[startOpen]),startOpen.forEach((function(level){level="function"==typeof level?level:function(){return!0}})),self.startOpen=startOpen),groupHeader&&(self.headerGenerator=Array.isArray(groupHeader)?groupHeader:[groupHeader]),this.initialized=!0},GroupRows.prototype.setDisplayIndex=function(index){this.displayIndex=index},GroupRows.prototype.getDisplayIndex=function(){return this.displayIndex},GroupRows.prototype.getRows=function(rows){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(rows),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):rows.slice(0)},GroupRows.prototype.getGroups=function(compoment){var groupComponents=[];return this.groupList.forEach((function(group){groupComponents.push(compoment?group.getComponent():group)})),groupComponents},GroupRows.prototype.getChildGroups=function(group){var _this59=this,groupComponents=[];return group||(group=this),group.groupList.forEach((function(child){child.groupList.length?groupComponents=groupComponents.concat(_this59.getChildGroups(child)):groupComponents.push(child)})),groupComponents},GroupRows.prototype.wipe=function(){this.groupList.forEach((function(group){group.wipe()}))},GroupRows.prototype.pullGroupListData=function(groupList){var self=this,groupListData=[];return groupList.forEach((function(group){var groupHeader={level:0,rowCount:0,headerContent:""},childData=[];group.hasSubGroups?(childData=self.pullGroupListData(group.groupList),groupHeader.level=group.level,groupHeader.rowCount=childData.length-group.groupList.length,groupHeader.headerContent=group.generator(group.key,groupHeader.rowCount,group.rows,group),groupListData.push(groupHeader),groupListData=groupListData.concat(childData)):(groupHeader.level=group.level,groupHeader.headerContent=group.generator(group.key,group.rows.length,group.rows,group),groupHeader.rowCount=group.getRows().length,groupListData.push(groupHeader),group.getRows().forEach((function(row){groupListData.push(row.getData("data"))})))})),groupListData},GroupRows.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},GroupRows.prototype.getRowGroup=function(row){var match=!1;return this.groupList.forEach((function(group){var result=group.getRowGroup(row);result&&(match=result)})),match},GroupRows.prototype.countGroups=function(){return this.groupList.length},GroupRows.prototype.generateGroups=function(rows){var self=this,oldGroups=self.groups;self.groups={},self.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach((function(value){self.createGroup(value,0,oldGroups)})),rows.forEach((function(row){self.assignRowToExistingGroup(row,oldGroups)}))):rows.forEach((function(row){self.assignRowToGroup(row,oldGroups)}))},GroupRows.prototype.createGroup=function(groupID,level,oldGroups){var groupKey=level+"_"+groupID,group;oldGroups=oldGroups||[],group=new Group(this,!1,level,groupID,this.groupIDLookups[0].field,this.headerGenerator[0],oldGroups[groupKey]),this.groups[groupKey]=group,this.groupList.push(group)},GroupRows.prototype.assignRowToExistingGroup=function(row,oldGroups){var groupID,groupKey="0_"+this.groupIDLookups[0].func(row.getData());this.groups[groupKey]&&this.groups[groupKey].addRow(row)},GroupRows.prototype.assignRowToGroup=function(row,oldGroups){var groupID=this.groupIDLookups[0].func(row.getData()),newGroupNeeded=!this.groups["0_"+groupID];return newGroupNeeded&&this.createGroup(groupID,0,oldGroups),this.groups["0_"+groupID].addRow(row),!newGroupNeeded},GroupRows.prototype.updateGroupRows=function(force){var self=this,output=[],oldRowCount;if(this.groupList.forEach((function(group){output=output.concat(group.getHeadersAndRows())})),force){var displayIndex=this.table.rowManager.setDisplayRows(output,this.getDisplayIndex());!0!==displayIndex&&this.setDisplayIndex(displayIndex),this.table.rowManager.refreshActiveData("group",!0,!0)}return output},GroupRows.prototype.scrollHeaders=function(left){left+="px",this.groupList.forEach((function(group){group.scrollHeader(left)}))},GroupRows.prototype.removeGroup=function(group){var groupKey=group.level+"_"+group.key,index;this.groups[groupKey]&&(delete this.groups[groupKey],(index=this.groupList.indexOf(group))>-1&&this.groupList.splice(index,1))},Tabulator.prototype.registerModule("groupRows",GroupRows);var History=function History(table){this.table=table,this.history=[],this.index=-1};History.prototype.clear=function(){this.history=[],this.index=-1},History.prototype.action=function(type,component,data){this.history=this.history.slice(0,this.index+1),this.history.push({type:type,component:component,data:data}),this.index++},History.prototype.getHistoryUndoSize=function(){return this.index+1},History.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},History.prototype.undo=function(){if(this.index>-1){var action=this.history[this.index];return this.undoers[action.type].call(this,action),this.index--,this.table.options.historyUndo.call(this.table,action.type,action.component.getComponent(),action.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},History.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var action=this.history[this.index];return this.redoers[action.type].call(this,action),this.table.options.historyRedo.call(this.table,action.type,action.component.getComponent(),action.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},History.prototype.undoers={cellEdit:function cellEdit(action){action.component.setValueProcessData(action.data.oldValue)},rowAdd:function rowAdd(action){action.component.deleteActual()},rowDelete:function rowDelete(action){var newRow=this.table.rowManager.addRowActual(action.data.data,action.data.pos,action.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(action.component,newRow)},rowMove:function rowMove(action){this.table.rowManager.moveRowActual(action.component,this.table.rowManager.rows[action.data.posFrom],!action.data.after),this.table.rowManager.redraw()}},History.prototype.redoers={cellEdit:function cellEdit(action){action.component.setValueProcessData(action.data.newValue)},rowAdd:function rowAdd(action){var newRow=this.table.rowManager.addRowActual(action.data.data,action.data.pos,action.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(action.component,newRow)},rowDelete:function rowDelete(action){action.component.deleteActual()},rowMove:function rowMove(action){this.table.rowManager.moveRowActual(action.component,this.table.rowManager.rows[action.data.posTo],action.data.after),this.table.rowManager.redraw()}},History.prototype._rebindRow=function(oldRow,newRow){this.history.forEach((function(action){if(action.component instanceof Row)action.component===oldRow&&(action.component=newRow);else if(action.component instanceof Cell&&action.component.row===oldRow){var field=action.component.column.getField();field&&(action.component=newRow.getCell(field))}}))},Tabulator.prototype.registerModule("history",History);var HtmlTableImport=function HtmlTableImport(table){this.table=table,this.fieldIndex=[],this.hasIndex=!1};HtmlTableImport.prototype.parseTable=function(){var self=this,element=this.table.element,options=this.table.options,columns=options.columns,headers=element.getElementsByTagName("th"),rows=element.getElementsByTagName("tbody")[0],data=[],newTable;this.hasIndex=!1,this.table.options.htmlImporting.call(this.table),rows=rows?rows.getElementsByTagName("tr"):[],this._extractOptions(element,options),headers.length?this._extractHeaders(headers,rows):this._generateBlankHeaders(headers,rows);for(var index=0;index<rows.length;index++){var row,cells=rows[index].getElementsByTagName("td"),item={};this.hasIndex||(item[options.index]=index);for(var i=0;i<cells.length;i++){var cell=cells[i];void 0!==this.fieldIndex[i]&&(item[this.fieldIndex[i]]=cell.innerHTML)}data.push(item)}var newElement=document.createElement("div"),attributes=element.attributes;for(var i in attributes)"object"==_typeof(attributes[i])&&newElement.setAttribute(attributes[i].name,attributes[i].value);element.parentNode.replaceChild(newElement,element),options.data=data,this.table.options.htmlImported.call(this.table),this.table.element=newElement},HtmlTableImport.prototype._extractOptions=function(element,options,defaultOptions){var attributes=element.attributes,optionsArr=defaultOptions?Object.assign([],defaultOptions):Object.keys(options),optionsList={};for(var index in optionsArr.forEach((function(item){optionsList[item.toLowerCase()]=item})),attributes){var attrib=attributes[index],name;attrib&&"object"==(void 0===attrib?"undefined":_typeof(attrib))&&attrib.name&&0===attrib.name.indexOf("tabulator-")&&(name=attrib.name.replace("tabulator-",""),void 0!==optionsList[name]&&(options[optionsList[name]]=this._attribValue(attrib.value)))}},HtmlTableImport.prototype._attribValue=function(value){return"true"===value||"false"!==value&&value},HtmlTableImport.prototype._findCol=function(title){var match;return this.table.options.columns.find((function(column){return column.title===title}))||!1},HtmlTableImport.prototype._extractHeaders=function(headers,rows){for(var index=0;index<headers.length;index++){var header=headers[index],exists=!1,col=this._findCol(header.textContent),width,attributes;col?exists=!0:col={title:header.textContent.trim()},col.field||(col.field=header.textContent.trim().toLowerCase().replace(" ","_")),(width=header.getAttribute("width"))&&!col.width&&(col.width=width),attributes=header.attributes,this._extractOptions(header,col,Column.prototype.defaultOptionList),this.fieldIndex[index]=col.field,col.field==this.table.options.index&&(this.hasIndex=!0),exists||this.table.options.columns.push(col)}},HtmlTableImport.prototype._generateBlankHeaders=function(headers,rows){for(var index=0;index<headers.length;index++){var header=headers[index],col={title:"",field:"col"+index};this.fieldIndex[index]=col.field;var width=header.getAttribute("width");width&&(col.width=width),this.table.options.columns.push(col)}},Tabulator.prototype.registerModule("htmlTableImport",HtmlTableImport);var Keybindings=function Keybindings(table){this.table=table,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};Keybindings.prototype.initialize=function(){var bindings=this.table.options.keybindings,mergedBindings={};if(this.watchKeys={},this.pressedKeys=[],!1!==bindings){for(var key in this.bindings)mergedBindings[key]=this.bindings[key];if(Object.keys(bindings).length)for(var _key in bindings)mergedBindings[_key]=bindings[_key];this.mapBindings(mergedBindings),this.bindEvents()}},Keybindings.prototype.mapBindings=function(bindings){var _this60=this,self=this,_loop2=function _loop2(key){_this60.actions[key]?bindings[key]&&("object"!==_typeof(bindings[key])&&(bindings[key]=[bindings[key]]),bindings[key].forEach((function(binding){self.mapBinding(key,binding)}))):console.warn("Key Binding Error - no such action:",key)};for(var key in bindings)_loop2(key)},Keybindings.prototype.mapBinding=function(action,symbolsList){var self=this,binding={action:this.actions[action],keys:[],ctrl:!1,shift:!1,meta:!1},symbols;symbolsList.toString().toLowerCase().split(" ").join("").split("+").forEach((function(symbol){switch(symbol){case"ctrl":binding.ctrl=!0;break;case"shift":binding.shift=!0;break;case"meta":binding.meta=!0;break;default:symbol=parseInt(symbol),binding.keys.push(symbol),self.watchKeys[symbol]||(self.watchKeys[symbol]=[]),self.watchKeys[symbol].push(binding)}}))},Keybindings.prototype.bindEvents=function(){var self=this;this.keyupBinding=function(e){var code=e.keyCode,bindings=self.watchKeys[code];bindings&&(self.pressedKeys.push(code),bindings.forEach((function(binding){self.checkBinding(e,binding)})))},this.keydownBinding=function(e){var code=e.keyCode,bindings;if(self.watchKeys[code]){var index=self.pressedKeys.indexOf(code);index>-1&&self.pressedKeys.splice(index,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},Keybindings.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},Keybindings.prototype.checkBinding=function(e,binding){var self=this,match=!0;return e.ctrlKey==binding.ctrl&&e.shiftKey==binding.shift&&e.metaKey==binding.meta&&(binding.keys.forEach((function(key){var index;-1==self.pressedKeys.indexOf(key)&&(match=!1)})),match&&binding.action.call(self,e),!0)},Keybindings.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},Keybindings.prototype.actions={keyBlock:function keyBlock(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function scrollPageUp(e){var rowManager=this.table.rowManager,newPos=rowManager.scrollTop-rowManager.height,scrollMax=rowManager.element.scrollHeight;e.preventDefault(),rowManager.displayRowsCount&&(newPos>=0?rowManager.element.scrollTop=newPos:rowManager.scrollToRow(rowManager.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function scrollPageDown(e){var rowManager=this.table.rowManager,newPos=rowManager.scrollTop+rowManager.height,scrollMax=rowManager.element.scrollHeight;e.preventDefault(),rowManager.displayRowsCount&&(newPos<=scrollMax?rowManager.element.scrollTop=newPos:rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function scrollToStart(e){var rowManager=this.table.rowManager;e.preventDefault(),rowManager.displayRowsCount&&rowManager.scrollToRow(rowManager.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function scrollToEnd(e){var rowManager=this.table.rowManager;e.preventDefault(),rowManager.displayRowsCount&&rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount-1]),this.table.element.focus()},navPrev:function navPrev(e){var cell=!1;this.table.modExists("edit")&&(cell=this.table.modules.edit.currentCell)&&(e.preventDefault(),cell.nav().prev())},navNext:function navNext(e){var cell=!1,newRow=this.table.options.tabEndNewRow,nav;this.table.modExists("edit")&&(cell=this.table.modules.edit.currentCell)&&(e.preventDefault(),(nav=cell.nav()).next()||newRow&&(cell.getElement().firstChild.blur(),(newRow=!0===newRow?this.table.addRow({}):"function"==typeof newRow?this.table.addRow(newRow(cell.row.getComponent())):this.table.addRow(Object.assign({},newRow))).then((function(){setTimeout((function(){nav.next()}))}))))},navLeft:function navLeft(e){var cell=!1;this.table.modExists("edit")&&(cell=this.table.modules.edit.currentCell)&&(e.preventDefault(),cell.nav().left())},navRight:function navRight(e){var cell=!1;this.table.modExists("edit")&&(cell=this.table.modules.edit.currentCell)&&(e.preventDefault(),cell.nav().right())},navUp:function navUp(e){var cell=!1;this.table.modExists("edit")&&(cell=this.table.modules.edit.currentCell)&&(e.preventDefault(),cell.nav().up())},navDown:function navDown(e){var cell=!1;this.table.modExists("edit")&&(cell=this.table.modules.edit.currentCell)&&(e.preventDefault(),cell.nav().down())},undo:function undo(e){var cell=!1;this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&((cell=this.table.modules.edit.currentCell)||(e.preventDefault(),this.table.modules.history.undo()))},redo:function redo(e){var cell=!1;this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&((cell=this.table.modules.edit.currentCell)||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function copyToClipboard(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},Tabulator.prototype.registerModule("keybindings",Keybindings);var Menu=function Menu(table){this.table=table,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1};Menu.prototype.initializeColumnHeader=function(column){var _this61=this,headerMenuEl;column.definition.headerContextMenu&&column.getElement().addEventListener("contextmenu",(function(e){var menu="function"==typeof column.definition.headerContextMenu?column.definition.headerContextMenu(column.getComponent()):column.definition.headerContextMenu;e.preventDefault(),_this61.loadMenu(e,column,menu)})),column.definition.headerMenu&&((headerMenuEl=document.createElement("span")).classList.add("tabulator-header-menu-button"),headerMenuEl.innerHTML="&vellip;",headerMenuEl.addEventListener("click",(function(e){var menu="function"==typeof column.definition.headerMenu?column.definition.headerMenu(column.getComponent()):column.definition.headerMenu;e.stopPropagation(),e.preventDefault(),_this61.loadMenu(e,column,menu)})),column.titleElement.insertBefore(headerMenuEl,column.titleElement.firstChild))},Menu.prototype.initializeCell=function(cell){var _this62=this;cell.getElement().addEventListener("contextmenu",(function(e){var menu="function"==typeof cell.column.definition.contextMenu?cell.column.definition.contextMenu(cell.getComponent()):cell.column.definition.contextMenu;e.stopImmediatePropagation(),_this62.loadMenu(e,cell,menu)}))},Menu.prototype.initializeRow=function(row){var _this63=this;row.getElement().addEventListener("contextmenu",(function(e){var menu="function"==typeof _this63.table.options.rowContextMenu?_this63.table.options.rowContextMenu(row.getComponent()):_this63.table.options.rowContextMenu;_this63.loadMenu(e,row,menu)}))},Menu.prototype.initializeGroup=function(group){var _this64=this;group.getElement().addEventListener("contextmenu",(function(e){var menu="function"==typeof _this64.table.options.groupContextMenu?_this64.table.options.groupContextMenu(group.getComponent()):_this64.table.options.groupContextMenu;_this64.loadMenu(e,group,menu)}))},Menu.prototype.loadMenu=function(e,component,menu){var _this65=this,docHeight=Math.max(document.body.offsetHeight,window.innerHeight);if(e.preventDefault(),menu&&menu.length){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout((function(){_this65.nestedMenuBlock=!1}),100);this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),menu.forEach((function(item){var itemEl=document.createElement("div"),label=item.label,disabled=item.disabled;item.separator?itemEl.classList.add("tabulator-menu-separator"):(itemEl.classList.add("tabulator-menu-item"),"function"==typeof label&&(label=label(component.getComponent())),label instanceof Node?itemEl.appendChild(label):itemEl.innerHTML=label,"function"==typeof disabled&&(disabled=disabled(component.getComponent())),disabled?(itemEl.classList.add("tabulator-menu-item-disabled"),itemEl.addEventListener("click",(function(e){e.stopPropagation()}))):itemEl.addEventListener("click",(function(e){_this65.hideMenu(),item.action(e,component.getComponent())}))),_this65.menuEl.appendChild(itemEl)})),this.menuEl.style.top=e.pageY+"px",this.menuEl.style.left=e.pageX+"px",document.body.addEventListener("click",this.blurEvent),this.table.rowManager.element.addEventListener("scroll",this.blurEvent),setTimeout((function(){document.body.addEventListener("contextmenu",_this65.blurEvent)}),100),document.body.addEventListener("keydown",this.escEvent),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=docHeight&&(this.menuEl.style.top="",this.menuEl.style.bottom=docHeight-e.pageY+"px")}},Menu.prototype.isOpen=function(){return!!this.menuEl.parentNode},Menu.prototype.escMenu=function(e){27==e.keyCode&&this.hideMenu()},Menu.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.escEvent&&document.body.removeEventListener("keydown",this.escEvent),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},Menu.prototype.menus={},Tabulator.prototype.registerModule("menu",Menu);var MoveColumns=function MoveColumns(table){this.table=table,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};MoveColumns.prototype.createPlaceholderElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-col"),el.classList.add("tabulator-col-placeholder"),el},MoveColumns.prototype.initializeColumn=function(column){var self=this,config={},colEl;column.modules.frozen||(colEl=column.getElement(),config.mousemove=function(e){column.parent===self.moving.parent&&((self.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(colEl).left+self.table.columnManager.element.scrollLeft>column.getWidth()/2?self.toCol===column&&self.toColAfter||(colEl.parentNode.insertBefore(self.placeholderElement,colEl.nextSibling),self.moveColumn(column,!0)):(self.toCol!==column||self.toColAfter)&&(colEl.parentNode.insertBefore(self.placeholderElement,colEl),self.moveColumn(column,!1)))}.bind(self),colEl.addEventListener("mousedown",(function(e){self.touchMove=!1,1===e.which&&(self.checkTimeout=setTimeout((function(){self.startMove(e,column)}),self.checkPeriod))})),colEl.addEventListener("mouseup",(function(e){1===e.which&&self.checkTimeout&&clearTimeout(self.checkTimeout)})),self.bindTouchEvents(column)),column.modules.moveColumn=config},MoveColumns.prototype.bindTouchEvents=function(column){var self=this,colEl=column.getElement(),startXMove=!1,dir=!1,currentCol,nextCol,prevCol,nextColWidth,prevColWidth,nextColWidthLast,prevColWidthLast;colEl.addEventListener("touchstart",(function(e){self.checkTimeout=setTimeout((function(){self.touchMove=!0,currentCol=column,nextCol=column.nextColumn(),nextColWidth=nextCol?nextCol.getWidth()/2:0,prevCol=column.prevColumn(),prevColWidth=prevCol?prevCol.getWidth()/2:0,nextColWidthLast=0,prevColWidthLast=0,startXMove=!1,self.startMove(e,column)}),self.checkPeriod)}),{passive:!0}),colEl.addEventListener("touchmove",(function(e){var halfCol,diff,moveToCol;self.moving&&(self.moveHover(e),startXMove||(startXMove=e.touches[0].pageX),(diff=e.touches[0].pageX-startXMove)>0?nextCol&&diff-nextColWidthLast>nextColWidth&&(moveToCol=nextCol)!==column&&(startXMove=e.touches[0].pageX,moveToCol.getElement().parentNode.insertBefore(self.placeholderElement,moveToCol.getElement().nextSibling),self.moveColumn(moveToCol,!0)):prevCol&&-diff-prevColWidthLast>prevColWidth&&(moveToCol=prevCol)!==column&&(startXMove=e.touches[0].pageX,moveToCol.getElement().parentNode.insertBefore(self.placeholderElement,moveToCol.getElement()),self.moveColumn(moveToCol,!1)),moveToCol&&(currentCol=moveToCol,nextCol=moveToCol.nextColumn(),nextColWidthLast=nextColWidth,nextColWidth=nextCol?nextCol.getWidth()/2:0,prevCol=moveToCol.prevColumn(),prevColWidthLast=prevColWidth,prevColWidth=prevCol?prevCol.getWidth()/2:0))}),{passive:!0}),colEl.addEventListener("touchend",(function(e){self.checkTimeout&&clearTimeout(self.checkTimeout),self.moving&&self.endMove(e)}))},MoveColumns.prototype.startMove=function(e,column){var element=column.getElement();this.moving=column,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(element).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=column.getWidth()+"px",this.placeholderElement.style.height=column.getHeight()+"px",element.parentNode.insertBefore(this.placeholderElement,element),element.parentNode.removeChild(element),this.hoverElement=element.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},MoveColumns.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach((function(column){column.modules.moveColumn.mousemove&&column.getElement().addEventListener("mousemove",column.modules.moveColumn.mousemove)}))},MoveColumns.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach((function(column){column.modules.moveColumn.mousemove&&column.getElement().removeEventListener("mousemove",column.modules.moveColumn.mousemove)}))},MoveColumns.prototype.moveColumn=function(column,after){var movingCells=this.moving.getCells();this.toCol=column,this.toColAfter=after,after?column.getCells().forEach((function(cell,i){var cellEl=cell.getElement();cellEl.parentNode.insertBefore(movingCells[i].getElement(),cellEl.nextSibling)})):column.getCells().forEach((function(cell,i){var cellEl=cell.getElement();cellEl.parentNode.insertBefore(movingCells[i].getElement(),cellEl)}))},MoveColumns.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},MoveColumns.prototype.moveHover=function(e){var self=this,columnHolder=self.table.columnManager.getElement(),scrollLeft=columnHolder.scrollLeft,xPos=(self.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(columnHolder).left+scrollLeft,scrollPos;self.hoverElement.style.left=xPos-self.startX+"px",xPos-scrollLeft<self.autoScrollMargin&&(self.autoScrollTimeout||(self.autoScrollTimeout=setTimeout((function(){scrollPos=Math.max(0,scrollLeft-5),self.table.rowManager.getElement().scrollLeft=scrollPos,self.autoScrollTimeout=!1}),1))),scrollLeft+columnHolder.clientWidth-xPos<self.autoScrollMargin&&(self.autoScrollTimeout||(self.autoScrollTimeout=setTimeout((function(){scrollPos=Math.min(columnHolder.clientWidth,scrollLeft+5),self.table.rowManager.getElement().scrollLeft=scrollPos,self.autoScrollTimeout=!1}),1)))},Tabulator.prototype.registerModule("moveColumn",MoveColumns);var MoveRows=function MoveRows(table){this.table=table,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1};MoveRows.prototype.createPlaceholderElement=function(){var el=document.createElement("div");return el.classList.add("tabulator-row"),el.classList.add("tabulator-row-placeholder"),el},MoveRows.prototype.initialize=function(handle){this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements},MoveRows.prototype.setHandle=function(handle){this.hasHandle=handle},MoveRows.prototype.initializeGroupHeader=function(group){var self=this,config={},rowEl;config.mouseup=function(e){self.tableRowDrop(e,row)}.bind(self),config.mousemove=function(e){var rowEl,rowEl;e.pageY-Tabulator.prototype.helpers.elOffset(group.element).top+self.table.rowManager.element.scrollTop>group.getHeight()/2?self.toRow===group&&self.toRowAfter||((rowEl=group.getElement()).parentNode.insertBefore(self.placeholderElement,rowEl.nextSibling),self.moveRow(group,!0)):(self.toRow!==group||self.toRowAfter)&&(rowEl=group.getElement()).previousSibling&&(rowEl.parentNode.insertBefore(self.placeholderElement,rowEl),self.moveRow(group,!1))}.bind(self),group.modules.moveRow=config},MoveRows.prototype.initializeRow=function(row){var self=this,config={},rowEl;config.mouseup=function(e){self.tableRowDrop(e,row)}.bind(self),config.mousemove=function(e){var rowEl,rowEl;e.pageY-Tabulator.prototype.helpers.elOffset(row.element).top+self.table.rowManager.element.scrollTop>row.getHeight()/2?self.toRow===row&&self.toRowAfter||((rowEl=row.getElement()).parentNode.insertBefore(self.placeholderElement,rowEl.nextSibling),self.moveRow(row,!0)):(self.toRow!==row||self.toRowAfter)&&((rowEl=row.getElement()).parentNode.insertBefore(self.placeholderElement,rowEl),self.moveRow(row,!1))}.bind(self),this.hasHandle||((rowEl=row.getElement()).addEventListener("mousedown",(function(e){1===e.which&&(self.checkTimeout=setTimeout((function(){self.startMove(e,row)}),self.checkPeriod))})),rowEl.addEventListener("mouseup",(function(e){1===e.which&&self.checkTimeout&&clearTimeout(self.checkTimeout)})),this.bindTouchEvents(row,row.getElement())),row.modules.moveRow=config},MoveRows.prototype.initializeCell=function(cell){var self=this,cellEl=cell.getElement();cellEl.addEventListener("mousedown",(function(e){1===e.which&&(self.checkTimeout=setTimeout((function(){self.startMove(e,cell.row)}),self.checkPeriod))})),cellEl.addEventListener("mouseup",(function(e){1===e.which&&self.checkTimeout&&clearTimeout(self.checkTimeout)})),this.bindTouchEvents(cell.row,cell.getElement())},MoveRows.prototype.bindTouchEvents=function(row,element){var self=this,startYMove=!1,dir=!1,currentRow,nextRow,prevRow,nextRowHeight,prevRowHeight,nextRowHeightLast,prevRowHeightLast;element.addEventListener("touchstart",(function(e){self.checkTimeout=setTimeout((function(){self.touchMove=!0,currentRow=row,nextRow=row.nextRow(),nextRowHeight=nextRow?nextRow.getHeight()/2:0,prevRow=row.prevRow(),prevRowHeight=prevRow?prevRow.getHeight()/2:0,nextRowHeightLast=0,prevRowHeightLast=0,startYMove=!1,self.startMove(e,row)}),self.checkPeriod)}),{passive:!0}),this.moving,this.toRow,this.toRowAfter,element.addEventListener("touchmove",(function(e){var halfCol,diff,moveToRow;self.moving&&(e.preventDefault(),self.moveHover(e),startYMove||(startYMove=e.touches[0].pageY),(diff=e.touches[0].pageY-startYMove)>0?nextRow&&diff-nextRowHeightLast>nextRowHeight&&(moveToRow=nextRow)!==row&&(startYMove=e.touches[0].pageY,moveToRow.getElement().parentNode.insertBefore(self.placeholderElement,moveToRow.getElement().nextSibling),self.moveRow(moveToRow,!0)):prevRow&&-diff-prevRowHeightLast>prevRowHeight&&(moveToRow=prevRow)!==row&&(startYMove=e.touches[0].pageY,moveToRow.getElement().parentNode.insertBefore(self.placeholderElement,moveToRow.getElement()),self.moveRow(moveToRow,!1)),moveToRow&&(currentRow=moveToRow,nextRow=moveToRow.nextRow(),nextRowHeightLast=nextRowHeight,nextRowHeight=nextRow?nextRow.getHeight()/2:0,prevRow=moveToRow.prevRow(),prevRowHeightLast=prevRowHeight,prevRowHeight=prevRow?prevRow.getHeight()/2:0))})),element.addEventListener("touchend",(function(e){self.checkTimeout&&clearTimeout(self.checkTimeout),self.moving&&(self.endMove(e),self.touchMove=!1)}))},MoveRows.prototype._bindMouseMove=function(){var self=this;this.table.rowManager.getDisplayRows().forEach((function(row){"row"!==row.type&&"group"!==row.type||!row.modules.moveRow.mousemove||row.getElement().addEventListener("mousemove",row.modules.moveRow.mousemove)}))},MoveRows.prototype._unbindMouseMove=function(){var self=this;this.table.rowManager.getDisplayRows().forEach((function(row){"row"!==row.type&&"group"!==row.type||!row.modules.moveRow.mousemove||row.getElement().removeEventListener("mousemove",row.modules.moveRow.mousemove)}))},MoveRows.prototype.startMove=function(e,row){var element=row.getElement();this.setStartPosition(e,row),this.moving=row,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=row.getWidth()+"px",this.placeholderElement.style.height=row.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(row)):(element.parentNode.insertBefore(this.placeholderElement,element),element.parentNode.removeChild(element)),this.hoverElement=element.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},MoveRows.prototype.setStartPosition=function(e,row){var pageX=this.touchMove?e.touches[0].pageX:e.pageX,pageY=this.touchMove?e.touches[0].pageY:e.pageY,element,position;element=row.getElement(),this.connection?(position=element.getBoundingClientRect(),this.startX=position.left-pageX+window.pageXOffset,this.startY=position.top-pageY+window.pageYOffset):this.startY=pageY-element.getBoundingClientRect().top},MoveRows.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},MoveRows.prototype.moveRow=function(row,after){this.toRow=row,this.toRowAfter=after},MoveRows.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},MoveRows.prototype.moveHoverTable=function(e){var rowHolder=this.table.rowManager.getElement(),scrollTop=rowHolder.scrollTop,yPos=(this.touchMove?e.touches[0].pageY:e.pageY)-rowHolder.getBoundingClientRect().top+scrollTop,scrollPos;this.hoverElement.style.top=yPos-this.startY+"px"},MoveRows.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},MoveRows.prototype.elementRowDrop=function(e,element,row){this.table.options.movableRowsElementDrop&&this.table.options.movableRowsElementDrop(e,element,!!row&&row.getComponent())},MoveRows.prototype.connectToTables=function(row){var _this66=this,connectionTables;this.connectionSelectorsTables&&(connectionTables=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStart.call(this.table,connectionTables),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","connect",{row:row})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach((function(query){"string"==typeof query?_this66.connectionElements=_this66.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query))):_this66.connectionElements.push(query)})),this.connectionElements.forEach((function(element){var dropEvent=function dropEvent(e){_this66.elementRowDrop(e,element,_this66.moving)};element.addEventListener("mouseup",dropEvent),element.tabulatorElementDropEvent=dropEvent,element.classList.add("tabulator-movingrow-receiving")})))},MoveRows.prototype.disconnectFromTables=function(){var connectionTables;this.connectionSelectorsTables&&(connectionTables=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStop.call(this.table,connectionTables),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach((function(element){element.classList.remove("tabulator-movingrow-receiving"),element.removeEventListener("mouseup",element.tabulatorElementDropEvent),delete element.tabulatorElementDropEvent}))},MoveRows.prototype.connect=function(table,row){var self=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=table,this.connectedRow=row,this.table.element.classList.add("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((function(row){"row"===row.type&&row.modules.moveRow&&row.modules.moveRow.mouseup&&row.getElement().addEventListener("mouseup",row.modules.moveRow.mouseup)})),this.tableRowDropEvent=this.tableRowDrop.bind(this),this.table.element.addEventListener("mouseup",this.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,row,table),!0)},MoveRows.prototype.disconnect=function(table){var self=this;table===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),this.table.rowManager.getDisplayRows().forEach((function(row){"row"===row.type&&row.modules.moveRow&&row.modules.moveRow.mouseup&&row.getElement().removeEventListener("mouseup",row.modules.moveRow.mouseup)})),this.table.element.removeEventListener("mouseup",this.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,table)):console.warn("Move Row Error - trying to disconnect from non connected table")},MoveRows.prototype.dropComplete=function(table,row,success){var sender=!1;if(success){switch(_typeof(this.table.options.movableRowsSender)){case"string":sender=this.senders[this.table.options.movableRowsSender];break;case"function":sender=this.table.options.movableRowsSender}sender?sender.call(this,this.moving.getComponent(),row?row.getComponent():void 0,table):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),row?row.getComponent():void 0,table)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),row?row.getComponent():void 0,table);this.endMove()},MoveRows.prototype.tableRowDrop=function(e,row){var receiver=!1,success=!1;switch(console.trace("drop"),e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":receiver=this.receivers[this.table.options.movableRowsReceiver];break;case"function":receiver=this.table.options.movableRowsReceiver}receiver?success=receiver.call(this,this.connectedRow.getComponent(),row?row.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),success?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),row?row.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),row?row.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:row,success:success})},MoveRows.prototype.receivers={insert:function insert(fromRow,toRow,fromTable){return this.table.addRow(fromRow.getData(),void 0,toRow),!0},add:function add(fromRow,toRow,fromTable){return this.table.addRow(fromRow.getData()),!0},update:function update(fromRow,toRow,fromTable){return!!toRow&&(toRow.update(fromRow.getData()),!0)},replace:function replace(fromRow,toRow,fromTable){return!!toRow&&(this.table.addRow(fromRow.getData(),void 0,toRow),toRow.delete(),!0)}},MoveRows.prototype.senders={delete:function _delete(fromRow,toRow,toTable){fromRow.delete()}},MoveRows.prototype.commsReceived=function(table,action,data){switch(action){case"connect":return this.connect(table,data.row);case"disconnect":return this.disconnect(table);case"dropcomplete":return this.dropComplete(table,data.row,data.success)}},Tabulator.prototype.registerModule("moveRow",MoveRows);var Mutator=function Mutator(table){this.table=table,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};Mutator.prototype.initializeColumn=function(column){var self=this,match=!1,config={};this.allowedTypes.forEach((function(type){var key="mutator"+(type.charAt(0).toUpperCase()+type.slice(1)),mutator;column.definition[key]&&(mutator=self.lookupMutator(column.definition[key]))&&(match=!0,config[key]={mutator:mutator,params:column.definition[key+"Params"]||{}})})),match&&(column.modules.mutate=config)},Mutator.prototype.lookupMutator=function(value){var mutator=!1;switch(void 0===value?"undefined":_typeof(value)){case"string":this.mutators[value]?mutator=this.mutators[value]:console.warn("Mutator Error - No such mutator found, ignoring: ",value);break;case"function":mutator=value}return mutator},Mutator.prototype.transformRow=function(data,type,updatedData){var self=this,key="mutator"+(type.charAt(0).toUpperCase()+type.slice(1)),value;return this.enabled&&this.table.columnManager.traverse((function(column){var mutator,params,component;column.modules.mutate&&(mutator=column.modules.mutate[key]||column.modules.mutate.mutator||!1)&&(value=column.getFieldValue(void 0!==updatedData?updatedData:data),"data"!=type&&void 0===value||(component=column.getComponent(),params="function"==typeof mutator.params?mutator.params(value,data,type,component):mutator.params,column.setFieldValue(data,mutator.mutator(value,data,type,params,component))))})),data},Mutator.prototype.transformCell=function(cell,value){var mutator=cell.column.modules.mutate.mutatorEdit||cell.column.modules.mutate.mutator||!1,tempData={};return mutator?(tempData=Object.assign(tempData,cell.row.getData()),cell.column.setFieldValue(tempData,value),mutator.mutator(value,tempData,"edit",mutator.params,cell.getComponent())):value},Mutator.prototype.enable=function(){this.enabled=!0},Mutator.prototype.disable=function(){this.enabled=!1},Mutator.prototype.mutators={},Tabulator.prototype.registerModule("mutator",Mutator);var Page=function Page(table){this.table=table,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.createElements()};Page.prototype.createElements=function(){var button;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),(button=document.createElement("button")).classList.add("tabulator-page"),button.setAttribute("type","button"),button.setAttribute("role","button"),button.setAttribute("aria-label",""),button.setAttribute("title",""),this.firstBut=button.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=button.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=button.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=button.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},Page.prototype.generatePageSizeSelectList=function(){var _this67=this,pageSizes=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))pageSizes=this.table.options.paginationSizeSelector,this.pageSizes=pageSizes,-1==this.pageSizes.indexOf(this.size)&&pageSizes.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){pageSizes=[];for(var _i9=1;_i9<5;_i9++)pageSizes.push(this.size*_i9);this.pageSizes=pageSizes}else pageSizes=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);pageSizes.forEach((function(item){var itemEl=document.createElement("option");itemEl.value=item,!0===item?_this67.table.modules.localize.bind("pagination|all",(function(value){itemEl.innerHTML=value})):itemEl.innerHTML=item,_this67.pageSizeSelect.appendChild(itemEl)})),this.pageSizeSelect.value=this.size}},Page.prototype.initialize=function(hidden){var self=this,pageSelectLabel,testElRow,testElCell;this.dataSentNames=Object.assign({},this.paginationDataSentNames),this.dataSentNames=Object.assign(this.dataSentNames,this.table.options.paginationDataSent),this.dataReceivedNames=Object.assign({},this.paginationDataReceivedNames),this.dataReceivedNames=Object.assign(this.dataReceivedNames,this.table.options.paginationDataReceived),self.table.modules.localize.bind("pagination|first",(function(value){self.firstBut.innerHTML=value})),self.table.modules.localize.bind("pagination|first_title",(function(value){self.firstBut.setAttribute("aria-label",value),self.firstBut.setAttribute("title",value)})),self.table.modules.localize.bind("pagination|prev",(function(value){self.prevBut.innerHTML=value})),self.table.modules.localize.bind("pagination|prev_title",(function(value){self.prevBut.setAttribute("aria-label",value),self.prevBut.setAttribute("title",value)})),self.table.modules.localize.bind("pagination|next",(function(value){self.nextBut.innerHTML=value})),self.table.modules.localize.bind("pagination|next_title",(function(value){self.nextBut.setAttribute("aria-label",value),self.nextBut.setAttribute("title",value)})),self.table.modules.localize.bind("pagination|last",(function(value){self.lastBut.innerHTML=value})),self.table.modules.localize.bind("pagination|last_title",(function(value){self.lastBut.setAttribute("aria-label",value),self.lastBut.setAttribute("title",value)})),self.firstBut.addEventListener("click",(function(){self.setPage(1)})),self.prevBut.addEventListener("click",(function(){self.previousPage()})),self.nextBut.addEventListener("click",(function(){self.nextPage().then((function(){})).catch((function(){}))})),self.lastBut.addEventListener("click",(function(){self.setPage(self.max)})),self.table.options.paginationElement&&(self.element=self.table.options.paginationElement),this.pageSizeSelect&&(pageSelectLabel=document.createElement("label"),self.table.modules.localize.bind("pagination|page_size",(function(value){self.pageSizeSelect.setAttribute("aria-label",value),self.pageSizeSelect.setAttribute("title",value),pageSelectLabel.innerHTML=value})),self.element.appendChild(pageSelectLabel),self.element.appendChild(self.pageSizeSelect),self.pageSizeSelect.addEventListener("change",(function(e){self.setPageSize("true"==self.pageSizeSelect.value||self.pageSizeSelect.value),self.setPage(1).then((function(){})).catch((function(){}))}))),self.element.appendChild(self.firstBut),self.element.appendChild(self.prevBut),self.element.appendChild(self.pagesElement),self.element.appendChild(self.nextBut),self.element.appendChild(self.lastBut),self.table.options.paginationElement||hidden||self.table.footerManager.append(self.element,self),self.mode=self.table.options.pagination,self.table.options.paginationSize?self.size=self.table.options.paginationSize:((testElRow=document.createElement("div")).classList.add("tabulator-row"),testElRow.style.visibility=hidden,(testElCell=document.createElement("div")).classList.add("tabulator-cell"),testElCell.innerHTML="Page Row Test",testElRow.appendChild(testElCell),self.table.rowManager.getTableElement().appendChild(testElRow),self.size=Math.floor(self.table.rowManager.getElement().clientHeight/testElRow.offsetHeight),self.table.rowManager.getTableElement().removeChild(testElRow)),self.count=self.table.options.paginationButtonCount,self.generatePageSizeSelectList()},Page.prototype.initializeProgressive=function(mode){this.initialize(!0),this.mode="progressive_"+mode,this.progressiveLoad=!0},Page.prototype.setDisplayIndex=function(index){this.displayIndex=index},Page.prototype.getDisplayIndex=function(){return this.displayIndex},Page.prototype.setMaxRows=function(rowCount){this.max=rowCount?!0===this.size?1:Math.ceil(rowCount/this.size):1,this.page>this.max&&(this.page=this.max)},Page.prototype.reset=function(force,columnsChanged){return("local"==this.mode||force)&&(this.page=1),columnsChanged&&(this.initialLoad=!0),!0},Page.prototype.setMaxPage=function(max){max=parseInt(max),this.max=max||1,this.page>this.max&&(this.page=this.max,this.trigger())},Page.prototype.setPage=function(page){var _this68=this,self=this;switch(page){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return new Promise((function(resolve,reject){(page=parseInt(page))>0&&page<=_this68.max?(_this68.page=page,_this68.trigger().then((function(){resolve()})).catch((function(){reject()})),self.table.options.persistence&&self.table.modExists("persistence",!0)&&self.table.modules.persistence.config.page&&self.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+_this68.max+":",page),reject())}))},Page.prototype.setPageToRow=function(row){var _this69=this;return new Promise((function(resolve,reject){var rows,index=_this69.table.rowManager.getDisplayRows(_this69.displayIndex-1).indexOf(row);if(index>-1){var page=!0===_this69.size?1:Math.ceil((index+1)/_this69.size);_this69.setPage(page).then((function(){resolve()})).catch((function(){reject()}))}else console.warn("Pagination Error - Requested row is not visible"),reject()}))},Page.prototype.setPageSize=function(size){!0!==size&&(size=parseInt(size)),size>0&&(this.size=size),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},Page.prototype._setPageButtons=function(){for(var self=this,leftSize=Math.floor((this.count-1)/2),rightSize=Math.ceil((this.count-1)/2),min=this.max-this.page+leftSize+1<this.count?this.max-this.count+1:Math.max(this.page-leftSize,1),max=this.page<=rightSize?Math.min(this.count,this.max):Math.min(this.page+rightSize,this.max);this.pagesElement.firstChild;)this.pagesElement.removeChild(this.pagesElement.firstChild);1==this.page?(this.firstBut.disabled=!0,this.prevBut.disabled=!0):(this.firstBut.disabled=!1,this.prevBut.disabled=!1),this.page==this.max?(this.lastBut.disabled=!0,this.nextBut.disabled=!0):(this.lastBut.disabled=!1,this.nextBut.disabled=!1);for(var _i10=min;_i10<=max;_i10++)_i10>0&&_i10<=this.max&&this.pagesElement.appendChild(this._generatePageButton(_i10));this.footerRedraw()},Page.prototype._generatePageButton=function(page){var self=this,button=document.createElement("button");return button.classList.add("tabulator-page"),page==self.page&&button.classList.add("active"),button.setAttribute("type","button"),button.setAttribute("role","button"),self.table.modules.localize.bind("pagination|page_title",(function(value){button.setAttribute("aria-label",value+" "+page),button.setAttribute("title",value+" "+page)})),button.setAttribute("data-page",page),button.textContent=page,button.addEventListener("click",(function(e){self.setPage(page)})),button},Page.prototype.previousPage=function(){var _this70=this;return new Promise((function(resolve,reject){_this70.page>1?(_this70.page--,_this70.trigger().then((function(){resolve()})).catch((function(){reject()})),_this70.table.options.persistence&&_this70.table.modExists("persistence",!0)&&_this70.table.modules.persistence.config.page&&_this70.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),reject())}))},Page.prototype.nextPage=function(){var _this71=this;return new Promise((function(resolve,reject){_this71.page<_this71.max?(_this71.page++,_this71.trigger().then((function(){resolve()})).catch((function(){reject()})),_this71.table.options.persistence&&_this71.table.modExists("persistence",!0)&&_this71.table.modules.persistence.config.page&&_this71.table.modules.persistence.save("page")):(_this71.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+_this71.max+":",_this71.max+1),reject())}))},Page.prototype.getPage=function(){return this.page},Page.prototype.getPageMax=function(){return this.max},Page.prototype.getPageSize=function(size){return this.size},Page.prototype.getMode=function(){return this.mode},Page.prototype.getRows=function(data){var output,start,end;if("local"==this.mode){output=[],!0===this.size?(start=0,end=data.length-1):end=(start=this.size*(this.page-1))+parseInt(this.size),this._setPageButtons();for(var _i11=start;_i11<end;_i11++)data[_i11]&&output.push(data[_i11]);return output}return this._setPageButtons(),data.slice(0)},Page.prototype.trigger=function(){var _this72=this,left;return new Promise((function(resolve,reject){switch(_this72.mode){case"local":left=_this72.table.rowManager.scrollLeft,_this72.table.rowManager.refreshActiveData("page"),_this72.table.rowManager.scrollHorizontal(left),_this72.table.options.pageLoaded.call(_this72.table,_this72.getPage()),resolve();break;case"remote":case"progressive_load":case"progressive_scroll":_this72.table.modules.ajax.blockActiveRequest(),_this72._getRemotePage().then((function(){resolve()})).catch((function(){reject()}));break;default:console.warn("Pagination Error - no such pagination mode:",_this72.mode),reject()}}))},Page.prototype._getRemotePage=function(){var _this73=this,self=this,oldParams,pageParams;return new Promise((function(resolve,reject){if(self.table.modExists("ajax",!0)||reject(),oldParams=Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams()||{}),(pageParams=self.table.modules.ajax.getParams())[_this73.dataSentNames.page]=self.page,_this73.size&&(pageParams[_this73.dataSentNames.size]=_this73.size),_this73.table.options.ajaxSorting&&_this73.table.modExists("sort")){var sorters=self.table.modules.sort.getSort();sorters.forEach((function(item){delete item.column})),pageParams[_this73.dataSentNames.sorters]=sorters}if(_this73.table.options.ajaxFiltering&&_this73.table.modExists("filter")){var filters=self.table.modules.filter.getFilters(!0,!0);pageParams[_this73.dataSentNames.filters]=filters}self.table.modules.ajax.setParams(pageParams),self.table.modules.ajax.sendRequest(_this73.progressiveLoad).then((function(data){self._parseRemoteData(data),resolve()})).catch((function(e){reject()})),self.table.modules.ajax.setParams(oldParams)}))},Page.prototype._parseRemoteData=function(data){var self=this,left,data,margin;if(void 0===data[this.dataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),data[this.dataReceivedNames.data]){if(this.max=parseInt(data[this.dataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(data[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page):this.table.rowManager.addRows(data[this.dataReceivedNames.data]),this.page<this.max&&setTimeout((function(){self.nextPage().then((function(){})).catch((function(){}))}),self.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":data=this.table.rowManager.getData().concat(data[this.dataReceivedNames.data]),this.table.rowManager.setData(data,!0,this.initialLoad&&1==this.page),margin=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,self.table.rowManager.element.scrollHeight<=self.table.rowManager.element.clientHeight+margin&&self.nextPage().then((function(){})).catch((function(){}))}else left=this.table.rowManager.scrollLeft,this.table.rowManager.setData(data[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page),this.table.rowManager.scrollHorizontal(left),this.table.columnManager.scrollHorizontal(left),this.table.options.pageLoaded.call(this.table,this.getPage());this.initialLoad=!1}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property")},Page.prototype.footerRedraw=function(){var footer=this.table.footerManager.element;Math.ceil(footer.clientWidth)-footer.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(footer.clientWidth)-footer.scrollWidth<0&&(this.pagesElement.style.display="none"))},Page.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},Page.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},Tabulator.prototype.registerModule("page",Page);var Persistence=function Persistence(table){this.table=table,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};Persistence.prototype.localStorageTest=function(){var testKey="_tabulator_test";try{return window.localStorage.setItem(testKey,testKey),window.localStorage.removeItem(testKey),!0}catch(e){return!1}},Persistence.prototype.initialize=function(){var mode=this.table.options.persistenceMode,id=this.table.options.persistenceID,retreivedData;this.mode=!0!==mode?mode:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(id||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(retreivedData=this.retreiveData("page"))&&(void 0===retreivedData.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=retreivedData.paginationSize),void 0===retreivedData.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=retreivedData.paginationInitialPage)),this.config.group&&(retreivedData=this.retreiveData("group"))&&(void 0===retreivedData.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=retreivedData.groupBy),void 0===retreivedData.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=retreivedData.groupStartOpen),void 0===retreivedData.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=retreivedData.groupHeader))},Persistence.prototype.initializeColumn=function(column){var self=this,def,keys;this.config.columns&&(this.defWatcherBlock=!0,def=column.getDefinition(),(keys=!0===this.config.columns?Object.keys(def):this.config.columns).forEach((function(key){var props=Object.getOwnPropertyDescriptor(def,key),value=def[key];props&&Object.defineProperty(def,key,{set:function set(newValue){value=newValue,self.defWatcherBlock||self.save("columns"),props.set&&props.set(newValue)},get:function get(){return props.get&&props.get(),value}})})),this.defWatcherBlock=!1)},Persistence.prototype.load=function(type,current){var data=this.retreiveData(type);return current&&(data=data?this.mergeDefinition(current,data):current),data},Persistence.prototype.retreiveData=function(type){return!!this.readFunc&&this.readFunc(this.id,type)},Persistence.prototype.mergeDefinition=function(oldCols,newCols){var self=this,output=[];return(newCols=newCols||[]).forEach((function(column,to){var from=self._findColumn(oldCols,column),keys;from&&(!0===self.config.columns||null==self.config.columns?(keys=Object.keys(from)).push("width"):keys=self.config.columns,keys.forEach((function(key){void 0!==column[key]&&(from[key]=column[key])})),from.columns&&(from.columns=self.mergeDefinition(from.columns,column.columns)),output.push(from))})),oldCols.forEach((function(column,i){var from;self._findColumn(newCols,column)||(output.length>i?output.splice(i,0,column):output.push(column))})),output},Persistence.prototype._findColumn=function(columns,subject){var type=subject.columns?"group":subject.field?"field":"object";return columns.find((function(col){switch(type){case"group":return col.title===subject.title&&col.columns.length===subject.columns.length;case"field":return col.field===subject.field;case"object":return col===subject}}))},Persistence.prototype.save=function(type){var data={};switch(type){case"columns":data=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":data=this.table.modules.filter.getFilters();break;case"sort":data=this.validateSorters(this.table.modules.sort.getSort());break;case"group":data=this.getGroupConfig();break;case"page":data=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,type,data)},Persistence.prototype.validateSorters=function(data){return data.forEach((function(item){item.column=item.field,delete item.field})),data},Persistence.prototype.getGroupConfig=function(){return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},Persistence.prototype.getPageConfig=function(){var data={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(data.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(data.paginationInitialPage=this.table.modules.page.getPage())),data},Persistence.prototype.parseColumns=function(columns){var self=this,definitions=[];return columns.forEach((function(column){var defStore={},colDef=column.getDefinition(),keys;column.isGroup?(defStore.title=colDef.title,defStore.columns=self.parseColumns(column.getColumns())):(defStore.field=column.getField(),!0===self.config.columns||null==self.config.columns?(keys=Object.keys(colDef)).push("width"):keys=self.config.columns,keys.forEach((function(key){switch(key){case"width":defStore.width=column.getWidth();break;case"visible":defStore.visible=column.visible;break;default:defStore[key]=colDef[key]}}))),definitions.push(defStore)})),definitions},Persistence.prototype.readers={local:function local(id,type){var data=localStorage.getItem(id+"-"+type);return!!data&&JSON.parse(data)},cookie:function cookie(id,type){var cookie=document.cookie,key=id+"-"+type,cookiePos=cookie.indexOf(key+"="),end,data;return cookiePos>-1&&(cookie=cookie.substr(cookiePos),(end=cookie.indexOf(";"))>-1&&(cookie=cookie.substr(0,end)),data=cookie.replace(key+"=","")),!!data&&JSON.parse(data)}},Persistence.prototype.writers={local:function local(id,type,data){localStorage.setItem(id+"-"+type,JSON.stringify(data))},cookie:function cookie(id,type,data){var expireDate=new Date;expireDate.setDate(expireDate.getDate()+1e4),document.cookie=id+"-"+type+"="+JSON.stringify(data)+"; expires="+expireDate.toUTCString()}},Tabulator.prototype.registerModule("persistence",Persistence);var Print=function Print(table){this.table=table,this.element=!1,this.manualBlock=!1};Print.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},Print.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},Print.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},Print.prototype.printFullscreen=function(visible,style,config){var scrollX=window.scrollX,scrollY=window.scrollY,headerEl=document.createElement("div"),footerEl=document.createElement("div"),tableEl=this.table.modules.export.genereateTable(void 0!==config?config:this.table.options.printConfig,void 0!==style?style:this.table.options.printStyled,visible,"print"),headerContent,footerContent;this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(headerEl.classList.add("tabulator-print-header"),"string"==typeof(headerContent="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader)?headerEl.innerHTML=headerContent:headerEl.appendChild(headerContent),this.element.appendChild(headerEl)),this.element.appendChild(tableEl),this.table.options.printFooter&&(footerEl.classList.add("tabulator-print-footer"),"string"==typeof(footerContent="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter)?footerEl.innerHTML=footerContent:footerEl.appendChild(footerContent),this.element.appendChild(footerEl)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,tableEl),window.print(),this.cleanup(),window.scrollTo(scrollX,scrollY),this.manualBlock=!1},Tabulator.prototype.registerModule("print",Print);var ReactiveData=function ReactiveData(table){this.table=table,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};ReactiveData.prototype.watchData=function(data){var self=this,pushFunc,version;this.currentVersion++,version=this.currentVersion,self.unwatchData(),self.data=data,self.origFuncs.push=data.push,Object.defineProperty(self.data,"push",{enumerable:!1,configurable:!0,value:function value(){var args=Array.from(arguments);return self.blocked||version!==self.currentVersion||args.forEach((function(arg){self.table.rowManager.addRowActual(arg,!1)})),self.origFuncs.push.apply(data,arguments)}}),self.origFuncs.unshift=data.unshift,Object.defineProperty(self.data,"unshift",{enumerable:!1,configurable:!0,value:function value(){var args=Array.from(arguments);return self.blocked||version!==self.currentVersion||args.forEach((function(arg){self.table.rowManager.addRowActual(arg,!0)})),self.origFuncs.unshift.apply(data,arguments)}}),self.origFuncs.shift=data.shift,Object.defineProperty(self.data,"shift",{enumerable:!1,configurable:!0,value:function value(){var row;return self.blocked||version!==self.currentVersion||self.data.length&&(row=self.table.rowManager.getRowFromDataObject(self.data[0]))&&row.deleteActual(),self.origFuncs.shift.call(data)}}),self.origFuncs.pop=data.pop,Object.defineProperty(self.data,"pop",{enumerable:!1,configurable:!0,value:function value(){var row;return self.blocked||version!==self.currentVersion||self.data.length&&(row=self.table.rowManager.getRowFromDataObject(self.data[self.data.length-1]))&&row.deleteActual(),self.origFuncs.pop.call(data)}}),self.origFuncs.splice=data.splice,Object.defineProperty(self.data,"splice",{enumerable:!1,configurable:!0,value:function value(){var args=Array.from(arguments),start=args[0]<0?data.length+args[0]:args[0],end=args[1],newRows=!!args[2]&&args.slice(2),startRow;if(!self.blocked&&version===self.currentVersion){if(newRows&&((startRow=!!data[start]&&self.table.rowManager.getRowFromDataObject(data[start]))?newRows.forEach((function(rowData){self.table.rowManager.addRowActual(rowData,!0,startRow,!0)})):(newRows=newRows.slice().reverse()).forEach((function(rowData){self.table.rowManager.addRowActual(rowData,!0,!1,!0)}))),0!==end){var oldRows=data.slice(start,void 0===args[1]?args[1]:start+end);oldRows.forEach((function(rowData,i){var row=self.table.rowManager.getRowFromDataObject(rowData);row&&row.deleteActual(i!==oldRows.length-1)}))}(newRows||0!==end)&&self.table.rowManager.reRenderInPosition()}return self.origFuncs.splice.apply(data,arguments)}})},ReactiveData.prototype.unwatchData=function(){if(!1!==this.data)for(var key in this.origFuncs)Object.defineProperty(this.data,key,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},ReactiveData.prototype.watchRow=function(row){var self=this,data=row.getData();for(var key in this.blocked=!0,data)this.watchKey(row,data,key);this.blocked=!1},ReactiveData.prototype.watchKey=function(row,data,key){var self=this,props=Object.getOwnPropertyDescriptor(data,key),value=data[key],version=this.currentVersion;Object.defineProperty(data,key,{set:function set(newValue){if(value=newValue,!self.blocked&&version===self.currentVersion){var update={};update[key]=newValue,row.updateData(update)}props.set&&props.set(newValue)},get:function get(){return props.get&&props.get(),value}})},ReactiveData.prototype.unwatchRow=function(row){var data=row.getData();for(var key in data)Object.defineProperty(data,key,{value:data[key]})},ReactiveData.prototype.block=function(){this.blocked=!0},ReactiveData.prototype.unblock=function(){this.blocked=!1},Tabulator.prototype.registerModule("reactiveData",ReactiveData);var ResizeColumns=function ResizeColumns(table){this.table=table,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};ResizeColumns.prototype.initializeColumn=function(type,column,element){var self=this,variableHeight=!1,mode=this.table.options.resizableColumns;if("header"===type&&(variableHeight="textarea"==column.definition.formatter||column.definition.variableHeight,column.modules.resize={variableHeight:variableHeight}),!0===mode||mode==type){var handle=document.createElement("div");handle.className="tabulator-col-resize-handle";var prevHandle=document.createElement("div");prevHandle.className="tabulator-col-resize-handle prev",handle.addEventListener("click",(function(e){e.stopPropagation()}));var handleDown=function handleDown(e){var nearestColumn=column.getLastColumn();nearestColumn&&self._checkResizability(nearestColumn)&&(self.startColumn=column,self._mouseDown(e,nearestColumn,handle))};handle.addEventListener("mousedown",handleDown),handle.addEventListener("touchstart",handleDown,{passive:!0}),handle.addEventListener("dblclick",(function(e){var col=column.getLastColumn();col&&self._checkResizability(col)&&(e.stopPropagation(),col.reinitializeWidth(!0))})),prevHandle.addEventListener("click",(function(e){e.stopPropagation()}));var prevHandleDown=function prevHandleDown(e){var nearestColumn,colIndex,prevColumn;(nearestColumn=column.getFirstColumn())&&(prevColumn=(colIndex=self.table.columnManager.findColumnIndex(nearestColumn))>0&&self.table.columnManager.getColumnByIndex(colIndex-1))&&self._checkResizability(prevColumn)&&(self.startColumn=column,self._mouseDown(e,prevColumn,prevHandle))};prevHandle.addEventListener("mousedown",prevHandleDown),prevHandle.addEventListener("touchstart",prevHandleDown,{passive:!0}),prevHandle.addEventListener("dblclick",(function(e){var nearestColumn,colIndex,prevColumn;(nearestColumn=column.getFirstColumn())&&(prevColumn=(colIndex=self.table.columnManager.findColumnIndex(nearestColumn))>0&&self.table.columnManager.getColumnByIndex(colIndex-1))&&self._checkResizability(prevColumn)&&(e.stopPropagation(),prevColumn.reinitializeWidth(!0))})),element.appendChild(handle),element.appendChild(prevHandle)}},ResizeColumns.prototype._checkResizability=function(column){return void 0!==column.definition.resizable?column.definition.resizable:this.table.options.resizableColumns},ResizeColumns.prototype._mouseDown=function(e,column,handle){var self=this;function mouseMove(e){column.setWidth(self.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-self.startX)),!self.table.browserSlow&&column.modules.resize&&column.modules.resize.variableHeight&&column.checkCellHeights()}function mouseUp(e){self.startColumn.modules.edit&&(self.startColumn.modules.edit.blocked=!1),self.table.browserSlow&&column.modules.resize&&column.modules.resize.variableHeight&&column.checkCellHeights(),document.body.removeEventListener("mouseup",mouseUp),document.body.removeEventListener("mousemove",mouseMove),handle.removeEventListener("touchmove",mouseMove),handle.removeEventListener("touchend",mouseUp),self.table.element.classList.remove("tabulator-block-select"),self.table.options.persistence&&self.table.modExists("persistence",!0)&&self.table.modules.persistence.config.columns&&self.table.modules.persistence.save("columns"),self.table.options.columnResized.call(self.table,column.getComponent())}self.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),self.startColumn.modules.edit&&(self.startColumn.modules.edit.blocked=!0),self.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,self.startWidth=column.getWidth(),document.body.addEventListener("mousemove",mouseMove),document.body.addEventListener("mouseup",mouseUp),handle.addEventListener("touchmove",mouseMove,{passive:!0}),handle.addEventListener("touchend",mouseUp)},Tabulator.prototype.registerModule("resizeColumns",ResizeColumns);var ResizeRows=function ResizeRows(table){this.table=table,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};ResizeRows.prototype.initializeRow=function(row){var self=this,rowEl=row.getElement(),handle=document.createElement("div");handle.className="tabulator-row-resize-handle";var prevHandle=document.createElement("div");prevHandle.className="tabulator-row-resize-handle prev",handle.addEventListener("click",(function(e){e.stopPropagation()}));var handleDown=function handleDown(e){self.startRow=row,self._mouseDown(e,row,handle)};handle.addEventListener("mousedown",handleDown),handle.addEventListener("touchstart",handleDown,{passive:!0}),prevHandle.addEventListener("click",(function(e){e.stopPropagation()}));var prevHandleDown=function prevHandleDown(e){var prevRow=self.table.rowManager.prevDisplayRow(row);prevRow&&(self.startRow=prevRow,self._mouseDown(e,prevRow,prevHandle))};prevHandle.addEventListener("mousedown",prevHandleDown),prevHandle.addEventListener("touchstart",prevHandleDown,{passive:!0}),rowEl.appendChild(handle),rowEl.appendChild(prevHandle)},ResizeRows.prototype._mouseDown=function(e,row,handle){var self=this;function mouseMove(e){row.setHeight(self.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-self.startY))}function mouseUp(e){document.body.removeEventListener("mouseup",mouseMove),document.body.removeEventListener("mousemove",mouseMove),handle.removeEventListener("touchmove",mouseMove),handle.removeEventListener("touchend",mouseUp),self.table.element.classList.remove("tabulator-block-select"),self.table.options.rowResized.call(this.table,row.getComponent())}self.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),self.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,self.startHeight=row.getHeight(),document.body.addEventListener("mousemove",mouseMove),document.body.addEventListener("mouseup",mouseUp),handle.addEventListener("touchmove",mouseMove,{passive:!0}),handle.addEventListener("touchend",mouseUp)},Tabulator.prototype.registerModule("resizeRows",ResizeRows);var ResizeTable=function ResizeTable(table){this.table=table,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};ResizeTable.prototype.initialize=function(row){var _this74=this,table=this.table,tableStyle;this.tableHeight=table.element.clientHeight,this.tableWidth=table.element.clientWidth,table.element.parentNode&&(this.containerHeight=table.element.parentNode.clientHeight,this.containerWidth=table.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===table.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver((function(entry){if(!table.browserMobile||table.browserMobile&&!table.modules.edit.currentCell){var nodeHeight=Math.floor(entry[0].contentRect.height),nodeWidth=Math.floor(entry[0].contentRect.width);_this74.tableHeight==nodeHeight&&_this74.tableWidth==nodeWidth||(_this74.tableHeight=nodeHeight,_this74.tableWidth=nodeWidth,table.element.parentNode&&(_this74.containerHeight=table.element.parentNode.clientHeight,_this74.containerWidth=table.element.parentNode.clientWidth),table.redraw())}})),this.observer.observe(table.element),tableStyle=window.getComputedStyle(table.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(tableStyle.getPropertyValue("max-height")||tableStyle.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver((function(entry){if(!table.browserMobile||table.browserMobile&&!table.modules.edit.currentCell){var nodeHeight=Math.floor(entry[0].contentRect.height),nodeWidth=Math.floor(entry[0].contentRect.width);_this74.containerHeight==nodeHeight&&_this74.containerWidth==nodeWidth||(_this74.containerHeight=nodeHeight,_this74.containerWidth=nodeWidth,_this74.tableHeight=table.element.clientHeight,_this74.tableWidth=table.element.clientWidth,table.redraw()),table.redraw()}})),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!table.browserMobile||table.browserMobile&&!table.modules.edit.currentCell)&&table.redraw()},window.addEventListener("resize",this.binding))},ResizeTable.prototype.clearBindings=function(row){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},Tabulator.prototype.registerModule("resizeTable",ResizeTable);var ResponsiveLayout=function ResponsiveLayout(table){this.table=table,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};ResponsiveLayout.prototype.initialize=function(){var self=this,columns=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach((function(column,i){column.modules.responsive&&column.modules.responsive.order&&column.modules.responsive.visible&&(column.modules.responsive.index=i,columns.push(column),column.visible||"collapse"!==self.mode||self.hiddenColumns.push(column))})),columns=(columns=columns.reverse()).sort((function(a,b){var diff;return b.modules.responsive.order-a.modules.responsive.order||b.modules.responsive.index-a.modules.responsive.index})),this.columns=columns,"collapse"===this.mode&&this.generateCollapsedContent();for(var _iterator=this.table.columnManager.columnsByIndex,_isArray=Array.isArray(_iterator),_i12=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;){var _ref;if(_isArray){if(_i12>=_iterator.length)break;_ref=_iterator[_i12++]}else{if((_i12=_iterator.next()).done)break;_ref=_i12.value}var col=_ref;if("responsiveCollapse"==col.definition.formatter){this.collapseHandleColumn=col;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.initializeColumn=function(column){var def=column.getDefinition();column.modules.responsive={order:void 0===def.responsive?1:def.responsive,visible:!1!==def.visible}},ResponsiveLayout.prototype.initializeRow=function(row){var el;"calc"!==row.type&&((el=document.createElement("div")).classList.add("tabulator-responsive-collapse"),row.modules.responsiveLayout={element:el,open:this.collapseStartOpen},this.collapseStartOpen||(el.style.display="none"))},ResponsiveLayout.prototype.layoutRow=function(row){var rowEl=row.getElement();row.modules.responsiveLayout&&(rowEl.appendChild(row.modules.responsiveLayout.element),this.generateCollapsedRowContent(row))},ResponsiveLayout.prototype.updateColumnVisibility=function(column,visible){var index;column.modules.responsive&&(column.modules.responsive.visible=visible,this.initialize())},ResponsiveLayout.prototype.hideColumn=function(column){var colCount=this.hiddenColumns.length;column.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(column),this.generateCollapsedContent(),this.collapseHandleColumn&&!colCount&&this.collapseHandleColumn.show())},ResponsiveLayout.prototype.showColumn=function(column){var index;column.show(!1,!0),column.setWidth(column.getWidth()),"collapse"===this.mode&&((index=this.hiddenColumns.indexOf(column))>-1&&this.hiddenColumns.splice(index,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.update=function(){for(var self=this,working=!0;working;){var width="fitColumns"==this.table.modules.layout.getMode()?this.table.columnManager.getFlexBaseWidth():this.table.columnManager.getWidth(),diff=(this.table.options.headerVisible?this.table.columnManager.element.clientWidth:this.table.element.clientWidth)-width;if(diff<0){var column=this.columns[this.index];column?(this.hideColumn(column),this.index++):working=!1}else{var _column=this.columns[this.index-1];_column&&diff>0&&diff>=_column.getWidth()?(this.showColumn(_column),this.index--):working=!1}this.table.rowManager.activeRowsCount||this.table.rowManager.renderEmptyScroll()}},ResponsiveLayout.prototype.generateCollapsedContent=function(){var self=this,rows;this.table.rowManager.getDisplayRows().forEach((function(row){self.generateCollapsedRowContent(row)}))},ResponsiveLayout.prototype.generateCollapsedRowContent=function(row){var el,contents;if(row.modules.responsiveLayout){for(el=row.modules.responsiveLayout.element;el.firstChild;)el.removeChild(el.firstChild);(contents=this.collapseFormatter(this.generateCollapsedRowData(row)))&&el.appendChild(contents)}},ResponsiveLayout.prototype.generateCollapsedRowData=function(row){var self=this,data=row.getData(),output=[],mockCellComponent;return this.hiddenColumns.forEach((function(column){var value=column.getFieldValue(data);column.definition.title&&column.field&&(column.modules.format&&self.table.options.responsiveLayoutCollapseUseFormatters?(mockCellComponent={value:!1,data:{},getValue:function getValue(){return value},getData:function getData(){return data},getElement:function getElement(){return document.createElement("div")},getRow:function getRow(){return row.getComponent()},getColumn:function getColumn(){return column.getComponent()}},output.push({title:column.definition.title,value:column.modules.format.formatter.call(self.table.modules.format,mockCellComponent,column.modules.format.params)})):output.push({title:column.definition.title,value:value}))})),output},ResponsiveLayout.prototype.formatCollapsedData=function(data){var list=document.createElement("table"),listContents="";return data.forEach((function(item){var div=document.createElement("div");item.value instanceof Node&&(div.appendChild(item.value),item.value=div.innerHTML),listContents+="<tr><td><strong>"+item.title+"</strong></td><td>"+item.value+"</td></tr>"})),list.innerHTML=listContents,Object.keys(data).length?list:""},Tabulator.prototype.registerModule("responsiveLayout",ResponsiveLayout);var SelectRow=function SelectRow(table){this.table=table,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};SelectRow.prototype.clearSelectionData=function(silent){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],silent||this._rowSelectionChanged()},SelectRow.prototype.initializeRow=function(row){var self=this,element=row.getElement(),endSelect=function endSelect(){setTimeout((function(){self.selecting=!1}),50),document.body.removeEventListener("mouseup",endSelect)};row.modules.select={selected:!1},self.table.options.selectableCheck.call(this.table,row.getComponent())?(element.classList.add("tabulator-selectable"),element.classList.remove("tabulator-unselectable"),self.table.options.selectable&&"highlight"!=self.table.options.selectable&&("click"===self.table.options.selectableRangeMode?element.addEventListener("click",(function(e){if(e.shiftKey){self.table._clearSelection(),self.lastClickedRow=self.lastClickedRow||row;var lastClickedRowIdx=self.table.rowManager.getDisplayRowIndex(self.lastClickedRow),rowIdx=self.table.rowManager.getDisplayRowIndex(row),fromRowIdx=lastClickedRowIdx<=rowIdx?lastClickedRowIdx:rowIdx,toRowIdx=lastClickedRowIdx>=rowIdx?lastClickedRowIdx:rowIdx,rows,toggledRows=self.table.rowManager.getDisplayRows().slice(0).splice(fromRowIdx,toRowIdx-fromRowIdx+1);e.ctrlKey||e.metaKey?(toggledRows.forEach((function(toggledRow){toggledRow!==self.lastClickedRow&&(!0===self.table.options.selectable||self.isRowSelected(row)?self.toggleRow(toggledRow):self.selectedRows.length<self.table.options.selectable&&self.toggleRow(toggledRow))})),self.lastClickedRow=row):(self.deselectRows(void 0,!0),!0!==self.table.options.selectable&&toggledRows.length>self.table.options.selectable&&(toggledRows=toggledRows.slice(0,self.table.options.selectable)),self.selectRows(toggledRows)),self.table._clearSelection()}else e.ctrlKey||e.metaKey?(self.toggleRow(row),self.lastClickedRow=row):(self.deselectRows(void 0,!0),self.selectRows(row),self.lastClickedRow=row)})):(element.addEventListener("click",(function(e){self.table.modExists("edit")&&self.table.modules.edit.getCurrentCell()||self.table._clearSelection(),self.selecting||self.toggleRow(row)})),element.addEventListener("mousedown",(function(e){if(e.shiftKey)return self.table._clearSelection(),self.selecting=!0,self.selectPrev=[],document.body.addEventListener("mouseup",endSelect),document.body.addEventListener("keyup",endSelect),self.toggleRow(row),!1})),element.addEventListener("mouseenter",(function(e){self.selecting&&(self.table._clearSelection(),self.toggleRow(row),self.selectPrev[1]==row&&self.toggleRow(self.selectPrev[0]))})),element.addEventListener("mouseout",(function(e){self.selecting&&(self.table._clearSelection(),self.selectPrev.unshift(row))}))))):(element.classList.add("tabulator-unselectable"),element.classList.remove("tabulator-selectable"))},SelectRow.prototype.toggleRow=function(row){this.table.options.selectableCheck.call(this.table,row.getComponent())&&(row.modules.select&&row.modules.select.selected?this._deselectRow(row):this._selectRow(row))},SelectRow.prototype.selectRows=function(rows){var _this75=this,rowMatch;switch(void 0===rows?"undefined":_typeof(rows)){case"undefined":this.table.rowManager.rows.forEach((function(row){_this75._selectRow(row,!0,!0)})),this._rowSelectionChanged();break;case"string":(rowMatch=this.table.rowManager.findRow(rows))?this._selectRow(rowMatch,!0,!0):this.table.rowManager.getRows(rows).forEach((function(row){_this75._selectRow(row,!0,!0)})),this._rowSelectionChanged();break;default:Array.isArray(rows)?(rows.forEach((function(row){_this75._selectRow(row,!0,!0)})),this._rowSelectionChanged()):this._selectRow(rows,!1,!0)}},SelectRow.prototype._selectRow=function(rowInfo,silent,force){var index;if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!force&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var row=this.table.rowManager.findRow(rowInfo);row?-1==this.selectedRows.indexOf(row)&&(row.modules.select||(row.modules.select={}),row.modules.select.selected=!0,row.modules.select.checkboxEl&&(row.modules.select.checkboxEl.checked=!0),row.getElement().classList.add("tabulator-selected"),this.selectedRows.push(row),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(row,!0),silent||this.table.options.rowSelected.call(this.table,row.getComponent()),this._rowSelectionChanged(silent)):silent||console.warn("Selection Error - No such row found, ignoring selection:"+rowInfo)},SelectRow.prototype.isRowSelected=function(row){return-1!==this.selectedRows.indexOf(row)},SelectRow.prototype.deselectRows=function(rows,silent){var self=this,rowCount;if(void 0===rows){rowCount=self.selectedRows.length;for(var _i13=0;_i13<rowCount;_i13++)self._deselectRow(self.selectedRows[0],!0);self._rowSelectionChanged(silent)}else Array.isArray(rows)?(rows.forEach((function(row){self._deselectRow(row,!0)})),self._rowSelectionChanged(silent)):self._deselectRow(rows,silent)},SelectRow.prototype._deselectRow=function(rowInfo,silent){var self=this,row=this.table.rowManager.findRow(rowInfo),index;row?(index=this.selectedRows.findIndex((function(selectedRow){return selectedRow==row})))>-1&&(row.modules.select||(row.modules.select={}),row.modules.select.selected=!1,row.modules.select.checkboxEl&&(row.modules.select.checkboxEl.checked=!1),row.getElement().classList.remove("tabulator-selected"),this.selectedRows.splice(index,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(row,!1),silent||this.table.options.rowDeselected.call(this.table,row.getComponent()),this._rowSelectionChanged(silent)):silent||console.warn("Deselection Error - No such row found, ignoring selection:"+rowInfo)},SelectRow.prototype.getSelectedData=function(){var data=[];return this.selectedRows.forEach((function(row){data.push(row.getData())})),data},SelectRow.prototype.getSelectedRows=function(){var rows=[];return this.selectedRows.forEach((function(row){rows.push(row.getComponent())})),rows},SelectRow.prototype._rowSelectionChanged=function(silent){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),silent||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},SelectRow.prototype.registerRowSelectCheckbox=function(row,element){row._row.modules.select||(row._row.modules.select={}),row._row.modules.select.checkboxEl=element},SelectRow.prototype.registerHeaderSelectCheckbox=function(element){this.headerCheckboxElement=element},SelectRow.prototype.childRowSelection=function(row,select){var children=this.table.modules.dataTree.getChildren(row);if(select)for(var _iterator2=children,_isArray2=Array.isArray(_iterator2),_i14=0,_iterator2=_isArray2?_iterator2:_iterator2[Symbol.iterator]();;){var _ref2;if(_isArray2){if(_i14>=_iterator2.length)break;_ref2=_iterator2[_i14++]}else{if((_i14=_iterator2.next()).done)break;_ref2=_i14.value}var child=_ref2;this._selectRow(child,!0)}else for(var _iterator3=children,_isArray3=Array.isArray(_iterator3),_i15=0,_iterator3=_isArray3?_iterator3:_iterator3[Symbol.iterator]();;){var _ref3;if(_isArray3){if(_i15>=_iterator3.length)break;_ref3=_iterator3[_i15++]}else{if((_i15=_iterator3.next()).done)break;_ref3=_i15.value}var _child=_ref3;this._deselectRow(_child,!0)}},Tabulator.prototype.registerModule("selectRow",SelectRow);var Sort=function Sort(table){this.table=table,this.sortList=[],this.changed=!1};Sort.prototype.initializeColumn=function(column,content){var self=this,sorter=!1,colEl,arrowEl;switch(_typeof(column.definition.sorter)){case"string":self.sorters[column.definition.sorter]?sorter=self.sorters[column.definition.sorter]:console.warn("Sort Error - No such sorter found: ",column.definition.sorter);break;case"function":sorter=column.definition.sorter}column.modules.sort={sorter:sorter,dir:"none",params:column.definition.sorterParams||{},startingDir:column.definition.headerSortStartingDir||"asc",tristate:void 0!==column.definition.headerSortTristate?column.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===column.definition.headerSort?!1!==this.table.options.headerSort:!1!==column.definition.headerSort)&&((colEl=column.getElement()).classList.add("tabulator-sortable"),(arrowEl=document.createElement("div")).classList.add("tabulator-arrow"),content.appendChild(arrowEl),colEl.addEventListener("click",(function(e){var dir="",sorters=[],match=!1;if(column.modules.sort){if(column.modules.sort.tristate)dir="none"==column.modules.sort.dir?column.modules.sort.startingDir:column.modules.sort.dir==column.modules.sort.startingDir?"asc"==column.modules.sort.dir?"desc":"asc":"none";else switch(column.modules.sort.dir){case"asc":dir="desc";break;case"desc":dir="asc";break;default:dir=column.modules.sort.startingDir}self.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?((match=(sorters=self.getSort()).findIndex((function(sorter){return sorter.field===column.getField()})))>-1?(sorters[match].dir=dir,match!=sorters.length-1&&(match=sorters.splice(match,1)[0],"none"!=dir&&sorters.push(match))):"none"!=dir&&sorters.push({column:column,dir:dir}),self.setSort(sorters)):"none"==dir?self.clear():self.setSort(column,dir),self.table.rowManager.sorterRefresh(!self.sortList.length)}})))},Sort.prototype.hasChanged=function(){var changed=this.changed;return this.changed=!1,changed},Sort.prototype.getSort=function(){var self=this,sorters=[];return this.sortList.forEach((function(item){item.column&&sorters.push({column:item.column.getComponent(),field:item.column.getField(),dir:item.dir})})),sorters},Sort.prototype.setSort=function(sortList,dir){var self=this,newSortList=[];Array.isArray(sortList)||(sortList=[{column:sortList,dir:dir}]),sortList.forEach((function(item){var column;(column=self.table.columnManager.findColumn(item.column))?(item.column=column,newSortList.push(item),self.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",item.column)})),self.sortList=newSortList,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},Sort.prototype.clear=function(){this.setSort([])},Sort.prototype.findSorter=function(column){var row=this.table.rowManager.activeRows[0],sorter="string",field,value;if(row&&(row=row.getData(),field=column.getField()))switch(void 0===(value=column.getFieldValue(row))?"undefined":_typeof(value)){case"undefined":sorter="string";break;case"boolean":sorter="boolean";break;default:isNaN(value)||""===value?value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(sorter="alphanum"):sorter="number"}return this.sorters[sorter]},Sort.prototype.sort=function(data){var self=this,sortList=this.table.options.sortOrderReverse?self.sortList.slice().reverse():self.sortList,sortListActual=[],rowComponents=[],lastSort;self.table.options.dataSorting&&self.table.options.dataSorting.call(self.table,self.getSort()),self.clearColumnHeaders(),self.table.options.ajaxSorting?sortList.forEach((function(item,i){self.setColumnHeader(item.column,item.dir)})):(sortList.forEach((function(item,i){var sortObj=item.column.modules.sort;item.column&&sortObj&&(sortObj.sorter||(sortObj.sorter=self.findSorter(item.column)),item.params="function"==typeof sortObj.params?sortObj.params(item.column.getComponent(),item.dir):sortObj.params,sortListActual.push(item)),self.setColumnHeader(item.column,item.dir)})),sortListActual.length&&self._sortItems(data,sortListActual)),self.table.options.dataSorted&&(data.forEach((function(row){rowComponents.push(row.getComponent())})),self.table.options.dataSorted.call(self.table,self.getSort(),rowComponents))},Sort.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach((function(column){column.modules.sort&&(column.modules.sort.dir="none",column.getElement().setAttribute("aria-sort","none"))}))},Sort.prototype.setColumnHeader=function(column,dir){column.modules.sort.dir=dir,column.getElement().setAttribute("aria-sort",dir)},Sort.prototype._sortItems=function(data,sortList){var _this76=this,sorterCount=sortList.length-1;data.sort((function(a,b){for(var result,i=sorterCount;i>=0;i--){var sortItem=sortList[i];if(0!==(result=_this76._sortRow(a,b,sortItem.column,sortItem.dir,sortItem.params)))break}return result}))},Sort.prototype._sortRow=function(a,b,column,dir,params){var el1Comp,el2Comp,colComp,el1="asc"==dir?a:b,el2="asc"==dir?b:a;return a=void 0!==(a=column.getFieldValue(el1.getData()))?a:"",b=void 0!==(b=column.getFieldValue(el2.getData()))?b:"",el1Comp=el1.getComponent(),el2Comp=el2.getComponent(),column.modules.sort.sorter.call(this,a,b,el1Comp,el2Comp,column.getComponent(),dir,params)},Sort.prototype.sorters={number:function number(a,b,aRow,bRow,column,dir,params){var alignEmptyValues=params.alignEmptyValues,decimal=params.decimalSeparator||".",thousand=params.thousandSeparator||",",emptyAlign=0;if(a=parseFloat(String(a).split(thousand).join("").split(decimal).join(".")),b=parseFloat(String(b).split(thousand).join("").split(decimal).join(".")),isNaN(a))emptyAlign=isNaN(b)?0:-1;else{if(!isNaN(b))return a-b;emptyAlign=1}return("top"===alignEmptyValues&&"desc"===dir||"bottom"===alignEmptyValues&&"asc"===dir)&&(emptyAlign*=-1),emptyAlign},string:function string(a,b,aRow,bRow,column,dir,params){var alignEmptyValues=params.alignEmptyValues,emptyAlign=0,locale;if(a){if(b){switch(_typeof(params.locale)){case"boolean":params.locale&&(locale=this.table.modules.localize.getLocale());break;case"string":locale=params.locale}return String(a).toLowerCase().localeCompare(String(b).toLowerCase(),locale)}emptyAlign=1}else emptyAlign=b?-1:0;return("top"===alignEmptyValues&&"desc"===dir||"bottom"===alignEmptyValues&&"asc"===dir)&&(emptyAlign*=-1),emptyAlign},date:function date(a,b,aRow,bRow,column,dir,params){return params.format||(params.format="DD/MM/YYYY"),this.sorters.datetime.call(this,a,b,aRow,bRow,column,dir,params)},time:function time(a,b,aRow,bRow,column,dir,params){return params.format||(params.format="HH:mm"),this.sorters.datetime.call(this,a,b,aRow,bRow,column,dir,params)},datetime:function datetime(a,b,aRow,bRow,column,dir,params){var format=params.format||"DD/MM/YYYY HH:mm:ss",alignEmptyValues=params.alignEmptyValues,emptyAlign=0;if("undefined"!=typeof moment){if(a=moment(a,format),b=moment(b,format),a.isValid()){if(b.isValid())return a-b;emptyAlign=1}else emptyAlign=b.isValid()?-1:0;return("top"===alignEmptyValues&&"desc"===dir||"bottom"===alignEmptyValues&&"asc"===dir)&&(emptyAlign*=-1),emptyAlign}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function boolean(a,b,aRow,bRow,column,dir,params){var el1,el2;return(!0===a||"true"===a||"True"===a||1===a?1:0)-(!0===b||"true"===b||"True"===b||1===b?1:0)},array:function array(a,b,aRow,bRow,column,dir,params){var el1=0,el2=0,type=params.type||"length",alignEmptyValues=params.alignEmptyValues,emptyAlign=0;function calc(value){switch(type){case"length":return value.length;case"sum":return value.reduce((function(c,d){return c+d}));case"max":return Math.max.apply(null,value);case"min":return Math.min.apply(null,value);case"avg":return value.reduce((function(c,d){return c+d}))/value.length}}if(Array.isArray(a)){if(Array.isArray(b))return(el1=a?calc(a):0)-(el2=b?calc(b):0);alignEmptyValues=1}else alignEmptyValues=Array.isArray(b)?-1:0;return("top"===alignEmptyValues&&"desc"===dir||"bottom"===alignEmptyValues&&"asc"===dir)&&(emptyAlign*=-1),emptyAlign},exists:function exists(a,b,aRow,bRow,column,dir,params){var el1,el2;return(void 0===a?0:1)-(void 0===b?0:1)},alphanum:function alphanum(as,bs,aRow,bRow,column,dir,params){var a,b,a1,b1,i=0,L,rx=/(\d+)|(\D+)/g,rd=/\d/,alignEmptyValues=params.alignEmptyValues,emptyAlign=0;if(as||0===as){if(bs||0===bs){if(isFinite(as)&&isFinite(bs))return as-bs;if((a=String(as).toLowerCase())===(b=String(bs).toLowerCase()))return 0;if(!rd.test(a)||!rd.test(b))return a>b?1:-1;for(a=a.match(rx),b=b.match(rx),L=a.length>b.length?b.length:a.length;i<L;)if((a1=a[i])!==(b1=b[i++]))return isFinite(a1)&&isFinite(b1)?("0"===a1.charAt(0)&&(a1="."+a1),"0"===b1.charAt(0)&&(b1="."+b1),a1-b1):a1>b1?1:-1;return a.length>b.length}emptyAlign=1}else emptyAlign=bs||0===bs?-1:0;return("top"===alignEmptyValues&&"desc"===dir||"bottom"===alignEmptyValues&&"asc"===dir)&&(emptyAlign*=-1),emptyAlign}},Tabulator.prototype.registerModule("sort",Sort);var Validate=function Validate(table){this.table=table,this.invalidCells=[]};return Validate.prototype.initializeColumn=function(column){var self=this,config=[],validator;column.definition.validator&&(Array.isArray(column.definition.validator)?column.definition.validator.forEach((function(item){(validator=self._extractValidator(item))&&config.push(validator)})):(validator=this._extractValidator(column.definition.validator))&&config.push(validator),column.modules.validate=!!config.length&&config)},Validate.prototype._extractValidator=function(value){var type,params,pos;switch(void 0===value?"undefined":_typeof(value)){case"string":return(pos=value.indexOf(":"))>-1?(type=value.substring(0,pos),params=value.substring(pos+1)):type=value,this._buildValidator(type,params);case"function":return this._buildValidator(value);case"object":return this._buildValidator(value.type,value.parameters)}},Validate.prototype._buildValidator=function(type,params){var func="function"==typeof type?type:this.validators[type];return func?{type:"function"==typeof type?"function":type,func:func,params:params}:(console.warn("Validator Setup Error - No matching validator found:",type),!1)},Validate.prototype.validate=function(validators,cell,value){var self=this,valid=[],invalidIndex=this.invalidCells.indexOf(cell);return validators&&validators.forEach((function(item){item.func.call(self,cell.getComponent(),value,item.params)||valid.push({type:item.type,parameters:item.params})})),valid=!valid.length||valid,cell.modules.validate||(cell.modules.validate={}),!0===valid?(cell.modules.validate.invalid=!1,cell.getElement().classList.remove("tabulator-validation-fail"),invalidIndex>-1&&this.invalidCells.splice(invalidIndex,1)):(cell.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&cell.getElement().classList.add("tabulator-validation-fail"),-1==invalidIndex&&this.invalidCells.push(cell)),valid},Validate.prototype.getInvalidCells=function(){var output=[];return this.invalidCells.forEach((function(cell){output.push(cell.getComponent())})),output},Validate.prototype.clearValidation=function(cell){var invalidIndex;cell.modules.validate&&cell.modules.validate.invalid&&(cell.element.classList.remove("tabulator-validation-fail"),cell.modules.validate.invalid=!1,(invalidIndex=this.invalidCells.indexOf(cell))>-1&&this.invalidCells.splice(invalidIndex,1))},Validate.prototype.validators={integer:function integer(cell,value,parameters){return""===value||null==value||"number"==typeof(value=Number(value))&&isFinite(value)&&Math.floor(value)===value},float:function float(cell,value,parameters){return""===value||null==value||"number"==typeof(value=Number(value))&&isFinite(value)&&value%1!=0},numeric:function numeric(cell,value,parameters){return""===value||null==value||!isNaN(value)},string:function string(cell,value,parameters){return""===value||null==value||isNaN(value)},max:function max(cell,value,parameters){return""===value||null==value||parseFloat(value)<=parameters},min:function min(cell,value,parameters){return""===value||null==value||parseFloat(value)>=parameters},starts:function starts(cell,value,parameters){return""===value||null==value||String(value).toLowerCase().startsWith(String(parameters).toLowerCase())},ends:function ends(cell,value,parameters){return""===value||null==value||String(value).toLowerCase().endsWith(String(parameters).toLowerCase())},minLength:function minLength(cell,value,parameters){return""===value||null==value||String(value).length>=parameters},maxLength:function maxLength(cell,value,parameters){return""===value||null==value||String(value).length<=parameters},in:function _in(cell,value,parameters){return""===value||null==value||("string"==typeof parameters&&(parameters=parameters.split("|")),""===value||parameters.indexOf(value)>-1)},regex:function regex(cell,value,parameters){return""===value||null==value||new RegExp(parameters).test(value);var reg},unique:function unique(cell,value,parameters){if(""===value||null==value)return!0;var unique=!0,cellData=cell.getData(),column=cell.getColumn()._getSelf();return this.table.rowManager.rows.forEach((function(row){var data=row.getData();data!==cellData&&value==column.getFieldValue(data)&&(unique=!1)})),unique},required:function required(cell,value,parameters){return""!==value&&null!=value}},Tabulator.prototype.registerModule("validate",Validate),Tabulator}));
\ No newline at end of file
diff --git a/admin/js/vendors/tabulator/js/tabulator.min.orig.js b/admin/js/vendors/tabulator/js/tabulator.min.orig.js
new file mode 100644 (file)
index 0000000..74f4780
--- /dev/null
@@ -0,0 +1,12 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e,t){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Tabulator=t()}(this,function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),o=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=t[n];if(e.call(i,s,n,t))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),o=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=t[n];if(e.call(i,s,n,t))return s;n++}}}),String.prototype.includes||(String.prototype.includes=function(e,t){if(e instanceof RegExp)throw TypeError("first argument must not be a RegExp");return void 0===t&&(t=0),-1!==this.indexOf(e,t)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),i=o.length>>>0;if(0===i)return!1;for(var n=0|t,s=Math.max(n>=0?n:i-Math.abs(n),0);s<i;){if(function(e,t){return e===t||"number"==typeof e&&"number"==typeof t&&isNaN(e)&&isNaN(t)}(o[s],e))return!0;s++}return!1}}),"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,t){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var o=Object(e),i=1;i<arguments.length;i++){var n=arguments[i];if(null!==n&&void 0!==n)for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(o[s]=n[s])}return o},writable:!0,configurable:!0});var t=function(e){this.table=e,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e},t.prototype.createHeaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-header"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e},t.prototype.initialize=function(){},t.prototype.setRowManager=function(e){this.rowManager=e},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(e){var t=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>o?(t=e-o,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(e){var t,o,i=[];if(e&&e.length){t=e[0];for(var n in t){var s={field:n,title:n},r=t[n];switch(void 0===r?"undefined":_typeof(r)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(r)?"array":"string";break;default:o=isNaN(r)||""===r?r.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(e,t){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),e.forEach(function(e,t){o._addColumn(e)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},t.prototype._addColumn=function(e,t,o){var i=new n(e,this),s=i.getElement(),r=o?this.findColumnIndex(o):o;if(o&&r>-1){var a=this.columns.indexOf(o.getTopColumn()),l=o.getElement();t?(this.columns.splice(a,0,i),l.parentNode.insertBefore(s,l)):(this.columns.splice(a+1,0,i),l.parentNode.insertBefore(s,l.nextSibling))}else t?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement())),i.columnRendered();return i},t.prototype.registerColumnField=function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)},t.prototype.registerColumnPosition=function(e){this.columnsByIndex.push(e)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(e){e.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var e=this,t=0;e.columns.forEach(function(e){var o;e.clearVerticalAlign(),(o=e.getHeight())>t&&(t=o)}),e.columns.forEach(function(o){o.verticalAlign(e.table.options.columnHeaderVertAlign,t)}),e.rowManager.adjustTableSize()},t.prototype.findColumn=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e)))return this.columnsByField[e]||!1;if(e instanceof n)return e;if(e instanceof o)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.columns.find(function(t){return t.element===e})||!1}return!1},t.prototype.getColumnByField=function(e){return this.columnsByField[e]},t.prototype.getColumnsByFieldRoot=function(e){var t=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===e&&o.push(t.columnsByField[i])}),o},t.prototype.getColumnByIndex=function(e){return this.columnsByIndex[e]},t.prototype.getFirstVisibileColumn=function(e){var e=this.columnsByIndex.findIndex(function(e){return e.visible});return e>-1&&this.columnsByIndex[e]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(e){return this.columnsByIndex.findIndex(function(t){return e===t})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(e){this.columnsByIndex.forEach(function(t,o){e(t,o)})},t.prototype.getDefinitions=function(e){var t=this,o=[];return t.columnsByIndex.forEach(function(t){(!e||e&&t.visible)&&o.push(t.getDefinition())}),o},t.prototype.getDefinitionTree=function(){var e=this,t=[];return e.columns.forEach(function(e){t.push(e.getDefinition(!0))}),t},t.prototype.getComponents=function(e){var t=this,o=[];return(e?t.columns:t.columnsByIndex).forEach(function(e){o.push(e.getComponent())}),o},t.prototype.getWidth=function(){var e=0;return this.columnsByIndex.forEach(function(t){t.visible&&(e+=t.getWidth())}),e},t.prototype.moveColumn=function(e,t,o){this.moveColumnActual(e,t,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t.element.parentNode.insertBefore(e.element,t.element),o&&t.element.parentNode.insertBefore(t.element,e.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.moveColumnActual=function(e,t,o){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,o):this._moveColumnInArray(this.columns,e,t,o),this._moveColumnInArray(this.columnsByIndex,e,t,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,e.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(e,t,o,i,n){var s,r=e.indexOf(t);r>-1&&(e.splice(r,1),s=e.indexOf(o),s>-1?i&&(s+=1):s=r,e.splice(s,0,t),n&&this.table.rowManager.rows.forEach(function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(s,0,t)}}))},t.prototype.scrollToColumn=function(e,t,o){var i=this,n=0,s=0,r=0,a=e.getElement();return new Promise(function(l,c){if(void 0===t&&(t=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":r=-i.element.clientWidth/2;break;case"right":r=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+r,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),l()}else console.warn("Scroll Error - Column not visible"),c("Scroll Error - Column not visible")})},t.prototype.generateCells=function(e){var t=this,o=[];return t.columnsByIndex.forEach(function(t){o.push(t.generateCell(e))}),o},t.prototype.getFlexBaseWidth=function(){var e=this,t=e.table.element.clientWidth,o=0;return e.rowManager.element.scrollHeight>e.rowManager.element.clientHeight&&(t-=e.rowManager.element.offsetWidth-e.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,r;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?e.table.options.columnMinWidth:parseInt(i.minWidth),r="string"==typeof n?n.indexOf("%")>-1?t/100*parseInt(n):parseInt(n):n,o+=r>s?r:s)}),o},t.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i._addColumn(e,t,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&r.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),n(r)})},t.prototype.deregisterColumn=function(e){var t,o=e.getField();o&&delete this.columnsByField[o],t=this.columnsByIndex.indexOf(e),t>-1&&this.columnsByIndex.splice(t,1),t=this.columns.indexOf(e),t>-1&&this.columns.splice(t,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(e){e&&(d.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():e?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var o=function(e){this._column=e,this.type="ColumnComponent"};o.prototype.getElement=function(){return this._column.getElement()},o.prototype.getDefinition=function(){return this._column.getDefinition()},o.prototype.getField=function(){return this._column.getField()},o.prototype.getCells=function(){var e=[];return this._column.cells.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._column.visible},o.prototype.isVisible=function(){return this._column.visible},o.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.show()}):this._column.show()},o.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.hide()}):this._column.hide()},o.prototype.toggle=function(){this._column.visible?this.hide():this.show()},o.prototype.delete=function(){return this._column.delete()},o.prototype.getSubColumns=function(){var e=[];return this._column.columns.length&&this._column.columns.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getParentColumn=function(){return this._column.parent instanceof n&&this._column.parent.getComponent()},o.prototype._getSelf=function(){return this._column},o.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},o.prototype.getTable=function(){return this._column.table},o.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},o.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},o.prototype.getHeaderFilterValue=function(){if(this._column.table.modExists("filter",!0))return this._column.table.modules.filter.getHeaderFilterValue(this._column)},o.prototype.setHeaderFilterValue=function(e){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,e)},o.prototype.move=function(e,t){var o=this._column.table.columnManager.findColumn(e);o?this._column.table.columnManager.moveColumn(this._column,o,t):console.warn("Move Error - No matching column found:",o)},o.prototype.getNextColumn=function(){var e=this._column.nextColumn();return!!e&&e.getComponent()},o.prototype.getPrevColumn=function(){var e=this._column.prevColumn();return!!e&&e.getComponent()},o.prototype.updateDefinition=function(e){return this._column.updateDefinition(e)},o.prototype.getWidth=function(){return this._column.getWidth()},o.prototype.setWidth=function(e){return!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e)},o.prototype.validate=function(){return this._column.validate()};var n=function e(t,o){var i=this;this.table=o.table,this.definition=t,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this._mapDepricatedFunctionality(),t.columns?(this.isGroup=!0,t.columns.forEach(function(t,o){var n=new e(t,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),t.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};n.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e},n.prototype.createGroupElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e},n.prototype.checkDefinition=function(){var e=this;Object.keys(this.definition).forEach(function(t){-1===e.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)})},n.prototype.setField=function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},n.prototype.registerColumnPosition=function(e){this.parent.registerColumnPosition(e)},n.prototype.registerColumnField=function(e){this.parent.registerColumnField(e)},n.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(e){e.reRegisterPosition()}):this.registerColumnPosition(this)},n.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign")),void 0!==this.definition.downloadTitle&&(this.definition.titleDownload=this.definition.downloadTitle,console.warn("downloadTitle definition property is deprecated, you should now use titleDownload"))},n.prototype.setTooltip=function(){var e=this,t=e.definition,o=t.headerTooltip||!1===t.tooltip?t.headerTooltip:e.table.options.tooltipsHeader;o?!0===o?t.field?e.table.modules.localize.bind("columns|"+t.field,function(o){e.element.setAttribute("title",o||t.title)}):e.element.setAttribute("title",t.title):("function"==typeof o&&!1===(o=o(e.getComponent()))&&(o=""),e.element.setAttribute("title",o)):e.element.setAttribute("title","")},n.prototype._buildHeader=function(){for(var e=this,t=e.definition;e.element.firstChild;)e.element.removeChild(e.element.firstChild);t.headerVertical&&(e.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&e.element.classList.add("tabulator-col-vertical-flip")),e.contentElement=e._bindEvents(),e.contentElement=e._buildColumnHeaderContent(),e.element.appendChild(e.contentElement),e.isGroup?e._buildGroupHeader():e._buildColumnHeader(),e.setTooltip(),e.table.options.resizableColumns&&e.table.modExists("resizeColumns")&&e.table.modules.resizeColumns.initializeColumn("header",e,e.element),t.headerFilter&&e.table.modExists("filter")&&e.table.modExists("edit")&&(void 0!==t.headerFilterPlaceholder&&t.field&&e.table.modules.localize.setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),e.table.modules.filter.initializeColumn(e)),e.table.modExists("frozenColumns")&&e.table.modules.frozenColumns.initializeColumn(e),e.table.options.movableColumns&&!e.isGroup&&e.table.modExists("moveColumn")&&e.table.modules.moveColumn.initializeColumn(e),(t.topCalc||t.bottomCalc)&&e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.initializeColumn(e),e.table.modExists("persistence")&&e.table.modules.persistence.config.columns&&e.table.modules.persistence.initializeColumn(e),e.element.addEventListener("mouseenter",function(t){e.setTooltip()})},n.prototype._bindEvents=function(){var e,t,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(e){n.headerClick(e,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(e){n.headerDblClick(e,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(e){n.headerContext(e,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&n.headerTap(e,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,n.headerDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),"function"==typeof n.headerTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,n.headerTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},n.prototype._buildColumnHeader=function(){var e=this,t=e.definition,o=e.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(e,e.contentElement),(t.headerContextMenu||t.headerMenu)&&o.modExists("menu")&&o.modules.menu.initializeColumnHeader(e),o.modExists("format")&&o.modules.format.initializeColumn(e),void 0!==t.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(e),void 0!==t.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(e),o.modExists("mutator")&&o.modules.mutator.initializeColumn(e),o.modExists("accessor")&&o.modules.accessor.initializeColumn(e),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(e),void 0!==t.visible&&(t.visible?e.show(!0):e.hide(!0)),t.cssClass){t.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}t.field&&this.element.setAttribute("tabulator-field",t.field),e.setMinWidth(void 0===t.minWidth?e.table.options.columnMinWidth:parseInt(t.minWidth)),e.reinitializeWidth(),e.tooltip=e.definition.tooltip||!1===e.definition.tooltip?e.definition.tooltip:e.table.options.tooltips,e.hozAlign=void 0===e.definition.hozAlign?e.table.options.cellHozAlign:e.definition.hozAlign,e.vertAlign=void 0===e.definition.vertAlign?e.table.options.cellVertAlign:e.definition.vertAlign},n.prototype._buildColumnHeaderContent=function(){var e=(this.definition,this.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),this.titleElement=this._buildColumnHeaderTitle(),e.appendChild(this.titleElement),e},n.prototype._buildColumnHeaderTitle=function(){var e=this,t=e.definition,o=e.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),t.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(e){e.stopPropagation(),n.focus()}),n.addEventListener("change",function(){t.title=n.value,o.options.columnTitleChanged.call(e.table,e.getComponent())}),i.appendChild(n),t.field?o.modules.localize.bind("columns|"+t.field,function(e){n.value=e||t.title||"&nbsp;"}):n.value=t.title||"&nbsp;"}else t.field?o.modules.localize.bind("columns|"+t.field,function(o){e._formatColumnHeaderTitle(i,o||t.title||"&nbsp;")}):e._formatColumnHeaderTitle(i,t.title||"&nbsp;");return i},n.prototype._formatColumnHeaderTitle=function(e,t){var o,i,n,s,r,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),r=function(e){a.titleFormatterRendered=e},s={getValue:function(){return t},getElement:function(){return e}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n,r),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=i}else e.innerHTML=t},n.prototype._buildGroupHeader=function(){var e=this;if(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass){this.definition.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}(this.definition.headerContextMenu||this.definition.headerMenu)&&this.table.modExists("menu")&&this.table.modules.menu.initializeColumnHeader(this),this.element.appendChild(this.groupElement)},n.prototype._getFlatData=function(e){return e[this.field]},n.prototype._getNestedData=function(e){for(var t,o=e,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],t=o,o);s++);return t},n.prototype._setFlatData=function(e,t){this.field&&(e[this.field]=t)},n.prototype._setNestedData=function(e,t){for(var o=e,i=this.fieldStructure,n=i.length,s=0;s<n;s++)if(s==n-1)o[i[s]]=t;else{if(!o[i[s]]){if(void 0===t)break;o[i[s]]={}}o=o[i[s]]}},n.prototype.attachColumn=function(e){var t=this;t.groupElement?(t.columns.push(e),t.groupElement.appendChild(e.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},n.prototype.verticalAlign=function(e,t){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:t||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===e||(this.element.style.paddingTop="bottom"===e?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(t){t.verticalAlign(e)})},n.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(e){e.clearVerticalAlign()})},n.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},n.prototype.getElement=function(){return this.element},n.prototype.getGroupElement=function(){return this.groupElement},n.prototype.getField=function(){return this.field},n.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},n.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},n.prototype.getColumns=function(){return this.columns},n.prototype.getCells=function(){return this.cells},n.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},n.prototype.getDefinition=function(e){var t=[];return this.isGroup&&e&&(this.columns.forEach(function(e){t.push(e.getDefinition(!0))}),this.definition.columns=t),this.definition},n.prototype.checkColumnVisibility=function(){var e=!1;this.columns.forEach(function(t){t.visible&&(e=!0)}),e?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},n.prototype.show=function(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},n.prototype.hide=function(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},n.prototype.matchChildWidths=function(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}),this.contentElement.style.maxWidth=e-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())},n.prototype.setWidth=function(e){this.widthFixed=!0,this.setWidthActual(e)},n.prototype.setWidthActual=function(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(e){e.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},n.prototype.checkCellHeights=function(){var e=[];this.cells.forEach(function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)}),e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()})},n.prototype.getWidth=function(){var e=0;return this.isGroup?this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}):e=this.width,e},n.prototype.getHeight=function(){return this.element.offsetHeight},n.prototype.setMinWidth=function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(e){e.setMinWidth()})},n.prototype.delete=function(){var e=this;return new Promise(function(t,o){e.isGroup&&e.columns.forEach(function(e){e.delete()}),e.table.modExists("edit")&&e.table.modules.edit.currentCell.column===e&&e.table.modules.edit.cancelEdit();for(var i=e.cells.length,n=0;n<i;n++)e.cells[0].delete();e.element.parentNode.removeChild(e.element),e.table.columnManager.deregisterColumn(e),t()})},n.prototype.columnRendered=function(){this.titleFormatterRendered&&this.titleFormatterRendered()},n.prototype.validate=function(){var e=[];return this.cells.forEach(function(t){t.validate()||e.push(t.getComponent())}),!e.length||e},n.prototype.generateCell=function(e){var t=this,o=new c(t,e);return this.cells.push(o),o},n.prototype.nextColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._nextVisibleColumn(e+1)},n.prototype._nextVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)},n.prototype.prevColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)},n.prototype._prevVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)},n.prototype.reinitializeWidth=function(e){this.widthFixed=!1,
+void 0===this.definition.width||e||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},n.prototype.fitToData=function(){var e=this;this.widthFixed||(this.element.style.width="",e.cells.forEach(function(e){e.clearWidth()}));var t=this.element.offsetWidth;e.width&&this.widthFixed||(e.cells.forEach(function(e){var o=e.getWidth();o>t&&(t=o)}),t&&e.setWidthActual(t+1))},n.prototype.updateDefinition=function(e){var t=this;return new Promise(function(o,i){var n;t.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),i("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(n=Object.assign({},t.getDefinition()),n=Object.assign(n,e),t.table.columnManager.addColumn(n,!1,t).then(function(e){n.field==t.field&&(t.field=!1),t.delete().then(function(){o(e.getComponent())}).catch(function(e){i(e)})}).catch(function(e){i(e)}))})},n.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},n.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams","titlePrint","titleClipboard","titleHtmlOutput","titleDownload"],n.prototype.getComponent=function(){return this.component||(this.component=new o(this)),this.component};var s=function(e){this.table=e,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};s.prototype.createHolderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-tableHolder"),e.setAttribute("tabindex",0),e},s.prototype.createTableElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e},s.prototype.getElement=function(){return this.element},s.prototype.getTableElement=function(){return this.tableElement},s.prototype.getRowPosition=function(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)},s.prototype.setColumnManager=function(e){this.columnManager=e},s.prototype.initialize=function(){var e=this;e.setRenderMode(),e.element.appendChild(e.tableElement),e.firstRender=!0,e.element.addEventListener("scroll",function(){var t=e.element.scrollLeft;e.scrollLeft!=t&&(e.columnManager.scrollHorizontal(t),e.table.options.groupBy&&e.table.modules.groupRows.scrollHeaders(t),e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.scrollHorizontal(t),e.table.options.scrollHorizontal(t)),e.scrollLeft=t}),"virtual"===this.renderMode&&e.element.addEventListener("scroll",function(){var t=e.element.scrollTop,o=e.scrollTop>t;e.scrollTop!=t?(e.scrollTop=t,e.scrollVertical(o),"scroll"==e.table.options.ajaxProgressiveLoad&&e.table.modules.ajax.nextPage(e.element.scrollHeight-e.element.clientHeight-t),e.table.options.scrollVertical(t)):e.scrollTop=t})},s.prototype.findRow=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e))){if(void 0===e||null===e)return!1;return t.rows.find(function(o){return o.data[t.table.options.index]==e})||!1}if(e instanceof a)return e;if(e instanceof r)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.rows.find(function(t){return t.element===e})||!1}return!1},s.prototype.getRowFromDataObject=function(e){return this.rows.find(function(t){return t.data===e})||!1},s.prototype.getRowFromPosition=function(e,t){return t?this.activeRows[e]:this.rows[e]},s.prototype.scrollToRow=function(e,t,o){var i,n=this,s=this.getDisplayRows().indexOf(e),r=e.getElement(),a=0;return new Promise(function(e,l){if(s>-1){if(void 0===t&&(t=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===t)switch(n.renderMode){case"classic":i=d.prototype.helpers.elOffset(r).top,t=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":t=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&d.prototype.helpers.elVisible(r)&&(a=d.prototype.helpers.elOffset(r).top-d.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-r.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=d.prototype.helpers.elOffset(r).top-d.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(t){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(r.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-r.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-r.offsetTop)+r.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+r.offsetHeight}e()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},s.prototype.setData=function(e,t,o){var i=this,n=this;return new Promise(function(s,r){t&&i.getDisplayRows().length?n.table.options.pagination?n._setDataActual(e,!0):i.reRenderInPosition(function(){n._setDataActual(e)}):(i.table.options.autoColumns&&o&&i.table.columnManager.generateColumnsFromRowData(e),i.resetScroll(),i._setDataActual(e)),s()})},s.prototype._setDataActual=function(e,t){var o=this;o.table.options.dataLoading.call(this.table,e),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(e)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(e),e.forEach(function(e,t){if(e&&"object"===(void 0===e?"undefined":_typeof(e))){var i=new a(e,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)}),o.table.options.dataLoaded.call(this.table,e),o.refreshActiveData(!1,!1,t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===e?"undefined":_typeof(e),"\nData:     ",e)},s.prototype._wipeElements=function(){this.rows.forEach(function(e){e.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},s.prototype.deleteRow=function(e,t){var o=this.rows.indexOf(e),i=this.activeRows.indexOf(e);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(t){var o=t.indexOf(e);o>-1&&t.splice(o,1)}),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,e.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},s.prototype.addRow=function(e,t,o,i){var n=this.addRowActual(e,t,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:e,pos:t,index:o}),n},s.prototype.addRows=function(e,t,o){var i=this,n=this,s=0,r=[];return new Promise(function(a,l){t=i.findAddRowPos(t),Array.isArray(e)||(e=[e]),s=e.length-1,(void 0===o&&t||void 0!==o&&!t)&&e.reverse(),e.forEach(function(e,i){var s=n.addRow(e,t,o,!0);r.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.regenerateRowNumbers(),a(r)})},s.prototype.findAddRowPos=function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e},s.prototype.addRowActual=function(e,t,o,i){var n,s,r=e instanceof a?e:new a(e||{},this),l=this.findAddRowPos(t),c=-1;if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(s=this.getDisplayRows(),l?s.length?o=s[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],l=!1):s.length&&(o=s[s.length-1],l=!(s.length<this.table.modules.page.getPageSize()))),void 0!==o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(r);var u=r.getGroup().rows;u.length>1&&(!o||o&&-1==u.indexOf(o)?l?u[0]!==r&&(o=u[0],this._moveRowInArray(r.getGroup().rows,r,o,!l)):u[u.length-1]!==r&&(o=u[u.length-1],this._moveRowInArray(r.getGroup().rows,r,o,!l)):this._moveRowInArray(r.getGroup().rows,r,o,!l))}return o&&(c=this.rows.indexOf(o)),o&&c>-1?(n=this.activeRows.indexOf(o),this.displayRowIterator(function(e){var t=e.indexOf(o);t>-1&&e.splice(l?t:t+1,0,r)}),n>-1&&this.activeRows.splice(l?n:n+1,0,r),this.rows.splice(l?c:c+1,0,r)):l?(this.displayRowIterator(function(e){e.unshift(r)}),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator(function(e){e.push(r)}),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,r.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),r},s.prototype.moveRow=function(e,t,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",e,{posFrom:this.getRowPosition(e),posTo:this.getRowPosition(t),to:t,after:o}),this.moveRowActual(e,t,o),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,e.getComponent())},s.prototype.moveRowActual=function(e,t,o){var i=this;if(this._moveRowInArray(this.rows,e,t,o),this._moveRowInArray(this.activeRows,e,t,o),this.displayRowIterator(function(n){i._moveRowInArray(n,e,t,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){!o&&t instanceof S&&(t=this.table.rowManager.prevDisplayRow(e)||t);var n=t.getGroup(),s=e.getGroup();n===s?this._moveRowInArray(n.rows,e,t,o):(s&&s.removeRow(e),n.insertRow(e,t,o))}},s.prototype._moveRowInArray=function(e,t,o,i){var n,s,r,a;if(t!==o&&(n=e.indexOf(t),n>-1&&(e.splice(n,1),s=e.indexOf(o),s>-1?i?e.splice(s+1,0,t):e.splice(s,0,t):e.splice(n,0,t)),e===this.getDisplayRows())){r=n<s?n:s,a=s>n?s:n+1;for(var l=r;l<=a;l++)e[l]&&this.styleRow(e[l],l)}},s.prototype.clearData=function(){this.setData([])},s.prototype.getRowIndex=function(e){return this.findRowIndex(e,this.rows)},s.prototype.getDisplayRowIndex=function(e){var t=this.getDisplayRows().indexOf(e);return t>-1&&t},s.prototype.nextDisplayRow=function(e,t){var o=this.getDisplayRowIndex(e),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof a&&"row"==i.type?i:this.nextDisplayRow(i,t)},s.prototype.prevDisplayRow=function(e,t){var o=this.getDisplayRowIndex(e),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!t||!i||i instanceof a&&"row"==i.type?i:this.prevDisplayRow(i,t)},s.prototype.findRowIndex=function(e,t){var o;return!!((e=this.findRow(e))&&(o=t.indexOf(e))>-1)&&o},s.prototype.getData=function(e,t){var o=[];return this.getRows(e).forEach(function(e){"row"==e.type&&o.push(e.getData(t||"data"))}),o},s.prototype.getComponents=function(e){var t=[];return this.getRows(e).forEach(function(e){t.push(e.getComponent())}),t},s.prototype.getDataCount=function(e){return this.getRows(e).length},s.prototype._genRemoteRequest=function(){var e=this,t=this.table,o=t.options,i={};if(t.modExists("page")){if(o.ajaxSorting){var n=this.table.modules.sort.getSort();n.forEach(function(e){delete e.column}),i[this.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=this.table.modules.filter.getFilters(!0,!0);i[this.table.modules.page.paginationDataSentNames.filters]=s}this.table.modules.ajax.setParams(i,!0)}t.modules.ajax.sendRequest().then(function(t){e._setDataActual(t,!0)}).catch(function(e){})},s.prototype.filterRefresh=function(){var e=this.table,t=e.options,o=this.scrollLeft;t.ajaxFiltering?"remote"==t.pagination&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):t.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},s.prototype.sorterRefresh=function(e){var t=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(e?"filter":"sort"),this.scrollHorizontal(i)},s.prototype.scrollHorizontal=function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(e),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(e)},s.prototype.refreshActiveData=function(e,t,o){var i,n=this,s=this.table,r=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||r.indexOf(e)<r.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:e,skipStage:t,renderInPosition:o}));switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),e||(e="all"),s.options.selectable&&!s.options.selectablePersistence&&s.modExists("selectRow")&&s.modules.selectRow.deselectRows(),e){case"all":case"filter":t?t=!1:s.modExists("filter")?n.setActiveRows(s.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":t?t=!1:s.modExists("sort")&&s.modules.sort.sort(this.activeRows),this.regenerateRowNumbers();case"display":this.resetDisplayRows();case"freeze":t?t=!1:this.table.modExists("frozenRows")&&s.modules.frozenRows.isFrozen()&&(s.modules.frozenRows.getDisplayIndex()||s.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.frozenRows.setDisplayIndex(i));case"group":t?t=!1:s.options.groupBy&&s.modExists("groupRows")&&(s.modules.groupRows.getDisplayIndex()||s.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.groupRows.setDisplayIndex(i));case"tree":t?t=!1:s.options.dataTree&&s.modExists("dataTree")&&(s.modules.dataTree.getDisplayIndex()||s.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&s.modules.dataTree.setDisplayIndex(i)),s.options.pagination&&s.modExists("page")&&!o&&"local"==s.modules.page.getMode()&&s.modules.page.reset();case"page":t?t=!1:s.options.pagination&&s.modExists("page")&&(s.modules.page.getDisplayIndex()||s.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.page.getDisplayIndex(),"local"==s.modules.page.getMode()&&s.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(s.modules.page.getRows(this.getDisplayRows(i-1)),i))&&s.modules.page.setDisplayIndex(i))}d.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),s.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),s.modExists("columnCalcs")&&s.modules.columnCalcs.recalc(this.activeRows)},s.prototype.regenerateRowNumbers=function(){var e=this;this.rowNumColumn&&this.activeRows.forEach(function(t){var o=t.getCell(e.rowNumColumn);o&&o._generateContents()})},s.prototype.setActiveRows=function(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length},s.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},s.prototype.getNextDisplayIndex=function(){return this.displayRows.length},s.prototype.setDisplayRows=function(e,t){var o=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,o=!0):(this.displayRows.push(e),o=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},s.prototype.getDisplayRows=function(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]},s.prototype.getVisibleRows=function(e){var t=this.element.scrollTop,o=this.element.clientHeight+t,i=!1,n=0,s=0,r=this.getDisplayRows();if(e){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(i){if(!(o-r[a].getElement().offsetTop>=0))break;s=a}else if(t-r[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-r[a].getElement().offsetTop>=0))break;s=a}}else n=this.vDomTop,s=this.vDomBottom;return r.slice(n,s+1)},s.prototype.displayRowIterator=function(e){this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},s.prototype.getRows=function(e){var t;switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!0);break;default:t=this.rows}return t},s.prototype.reRenderInPosition=function(e){if("virtual"==this.getRenderMode())if(this.redrawBlock)e?e():this.redrawBlockRederInPosition=!0;else{for(var t=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(s[r]){var a=t-s[r].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=r}e&&e(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),e&&e()},s.prototype.setRenderMode=function(){this.table.options.virtualDom?(this.renderMode="virtual",this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):this.renderMode="classic"},s.prototype.getRenderMode=function(){return this.renderMode},s.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px"),this.table.options.renderComplete.call(this.table)},s.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},s.prototype.checkClassicModeGroupHeaderWidth=function(){var e=this,t=this.tableElement,o=!0;e.getDisplayRows().forEach(function(i,n){e.styleRow(i,n),t.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),t.style.minWidth=o?e.table.columnManager.getWidth()+"px":""},s.prototype.renderEmptyScroll=function(){this.table.options.placeholder?this.tableElement.style.display="none":(this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden")},s.prototype._clearVirtualDom=function(){var e=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},s.prototype.styleRow=function(e,t){var o=e.getElement();t%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},s.prototype._virtualRenderFill=function(e,t,o){var i=this,n=i.tableElement,s=i.element,r=0,a=0,l=0,c=0,u=!0,h=i.getDisplayRows();if(e=e||0,o=o||0,e){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-e+1)*i.vDomRowHeight;p<i.height&&(e-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(e=0),r=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),e),e-=r}else i._clearVirtualDom();if(i.displayRowsCount&&d.prototype.helpers.elVisible(i.element)){for(i.vDomTop=e,i.vDomBottom=e-1;(a<=i.height+i.vDomWindowBuffer||c<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var m=i.vDomBottom+1,f=h[m],g=0;i.styleRow(f,m),n.appendChild(f.getElement()),f.initialized?f.heightInitialized||f.normalizeHeight(!0):f.initialize(!0),g=f.getHeight(),c<r?l+=g:a+=g,g>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*g),"group"!==f.type&&(u=!1),i.vDomBottom++,c++}e?(i.vDomTopPad=t?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-l,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-l,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+l)/c),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=l+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",t&&(this.scrollTop=i.vDomTopPad+l+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&t&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=u?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},s.prototype.scrollVertical=function(e){var t=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-t>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else e?(t<0&&this._addTopRow(-t),o<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(-o):this.vDomScrollPosBottom=this.scrollTop)):(t>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(t):this.vDomScrollPosTop=this.scrollTop),o>=0&&this._addBottomRow(o))},s.prototype._addTopRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],r=s.getHeight()||this.vDomRowHeight;e>=r&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=r,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=r,this.vDomTop--),e=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t<this.vDomMaxRenderChain&&this.vDomTop&&e>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(e,t+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},s.prototype._removeTopRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,t.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,e=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(e)}},s.prototype._addBottomRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],r=s.getHeight()||this.vDomRowHeight;e>=r&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=r,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=r,this.vDomBottom++),e=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&e>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(e,t+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},s.prototype._removeBottomRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),t.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,e=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(e)}},s.prototype._quickNormalizeRowHeight=function(e){e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()}),e.length=0},s.prototype.normalizeHeight=function(){this.activeRows.forEach(function(e){e.normalizeHeight()})},s.prototype.adjustTableSize=function(){var e,t=this.element.clientHeight;if("virtual"===this.renderMode){var o=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.fixedHeight?(this.element.style.minHeight="calc(100% - "+o+"px)",this.element.style.height="calc(100% - "+o+"px)",this.element.style.maxHeight="calc(100% - "+o+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-o+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||t==this.element.clientHeight||((e=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!e)&&this.redraw()}},s.prototype.reinitialize=function(){this.rows.forEach(function(e){e.reinitialize()})},s.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},s.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},s.prototype.redraw=function(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(t)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},s.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))};var r=function(e){this._row=e};r.prototype.getData=function(e){return this._row.getData(e)},r.prototype.getElement=function(){return this._row.getElement()},r.prototype.getCells=function(){var e=[];return this._row.getCells().forEach(function(t){e.push(t.getComponent())}),e},r.prototype.getCell=function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()},r.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},r.prototype.getPosition=function(e){return this._row.table.rowManager.getRowPosition(this._row,e)},r.prototype.delete=function(){return this._row.delete()},r.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},r.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},r.prototype.move=function(e,t){this._row.moveToRow(e,t)},r.prototype.update=function(e){return this._row.updateData(e)},
+r.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},r.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},r.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},r.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},r.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},r.prototype._getSelf=function(){return this._row},r.prototype.validate=function(){return this._row.validate()},r.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},r.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},r.prototype.isFrozen=function(){if(this._row.table.modExists("frozenRows",!0)){return this._row.table.modules.frozenRows.rows.indexOf(this._row)>-1}return!1},r.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},r.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},r.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},r.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},r.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},r.prototype.addTreeChild=function(e,t,o){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.addTreeChildRow(this._row,e,t,o)},r.prototype.reformat=function(){return this._row.reinitialize()},r.prototype.getGroup=function(){return this._row.getGroup().getComponent()},r.prototype.getTable=function(){return this._row.table},r.prototype.getNextRow=function(){var e=this._row.nextRow();return e?e.getComponent():e},r.prototype.getPrevRow=function(){var e=this._row.prevRow();return e?e.getComponent():e};var a=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=t.table,this.parent=t,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.component=null,this.setData(e),this.generateElement()};a.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.setAttribute("role","row"),e},a.prototype.getElement=function(){return this.element},a.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.generateElement=function(){var e,t,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),i.table.options.rowContextMenu&&this.table.modExists("menu")&&i.table.modules.menu.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(e){i.table.options.rowClick(e,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(e){i.table.options.rowDblClick(e,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(e){i.table.options.rowContext(e,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(e){i.table.options.rowMouseEnter(e,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(e){i.table.options.rowMouseLeave(e,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(e){i.table.options.rowMouseOver(e,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(e){i.table.options.rowMouseOut(e,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(e){i.table.options.rowMouseMove(e,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&i.table.options.rowTap(e,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,i.table.options.rowDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),i.table.options.rowTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,i.table.options.rowTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null}))},a.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},a.prototype.initialize=function(e){var t=this;if(!t.initialized||e){for(t.deleteCells();t.element.firstChild;)t.element.removeChild(t.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),t.cells.forEach(function(e){t.element.appendChild(e.getElement()),e.cellRendered()}),e&&t.normalizeHeight(),t.table.options.dataTree&&t.table.modExists("dataTree")&&t.table.modules.dataTree.layoutRow(this),"collapse"===t.table.options.responsiveLayout&&t.table.modExists("responsiveLayout")&&t.table.modules.responsiveLayout.layoutRow(this),t.table.options.rowFormatter&&t.table.options.rowFormatter(t.getComponent()),t.table.options.resizableRows&&t.table.modExists("resizeRows")&&t.table.modules.resizeRows.initializeRow(t),t.initialized=!0}},a.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},a.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},a.prototype.calcHeight=function(e){var t=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(e){var o=e.getHeight();o>t&&(t=o)}),this.height=e?Math.max(t,o):this.manualHeight?this.height:Math.max(t,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},a.prototype.setCellHeight=function(){this.cells.forEach(function(e){e.setHeight()}),this.heightInitialized=!0},a.prototype.clearCellHeight=function(){this.cells.forEach(function(e){e.clearHeight()})},a.prototype.normalizeHeight=function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()},a.prototype.setHeight=function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},a.prototype.getHeight=function(){return this.outerHeight},a.prototype.getWidth=function(){return this.element.offsetWidth},a.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},a.prototype.setData=function(e){this.table.modExists("mutator")&&(e=this.table.modules.mutator.transformRow(e,"data")),this.data=e,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},a.prototype.updateData=function(e){var t,o=this,i=d.prototype.helpers.elVisible(this.element),n={};return new Promise(function(s,r){"string"==typeof e&&(e=JSON.parse(e)),o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.block(),o.table.modExists("mutator")?(n=Object.assign(n,o.data),n=Object.assign(n,e),t=o.table.modules.mutator.transformRow(n,"data",e)):t=e;for(var a in t)o.data[a]=t[a];o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.unblock();for(var a in e){o.table.columnManager.getColumnsByFieldRoot(a).forEach(function(e){var n=o.getCell(e.getField());if(n){var s=e.getFieldValue(t);n.getValue()!=s&&(n.setValueProcessData(s),i&&n.cellRendered())}})}i?(o.normalizeHeight(!0),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(o.initialized=!1,o.height=0,o.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.redrawNeeded(e)&&(o.table.modules.dataTree.initializeRow(o),o.table.modules.dataTree.layoutRow(o),o.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(o.table,o.getComponent()),s()})},a.prototype.getData=function(e){var t=this;return e?t.table.modExists("accessor")?t.table.modules.accessor.transformRow(t.data,e):void 0:this.data},a.prototype.getCell=function(e){return e=this.table.columnManager.findColumn(e),this.cells.find(function(t){return t.column===e})},a.prototype.getCellIndex=function(e){return this.cells.findIndex(function(t){return t===e})},a.prototype.findNextEditableCell=function(e){var t=!1;if(e<this.cells.length-1)for(var o=e+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&d.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){t=i;break}}}return t},a.prototype.findPrevEditableCell=function(e){var t=!1;if(e>0)for(var o=e-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&d.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){t=i;break}}return t},a.prototype.getCells=function(){return this.cells},a.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},a.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},a.prototype.moveToRow=function(e,t){var o=this.table.rowManager.findRow(e);o?(this.table.rowManager.moveRowActual(this,o,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)},a.prototype.validate=function(){var e=[];return this.cells.forEach(function(t){t.validate()||e.push(t.getComponent())}),!e.length||e},a.prototype.delete=function(){var e=this;return new Promise(function(t,o){var i,n;e.table.options.history&&e.table.modExists("history")&&(e.table.options.groupBy&&e.table.modExists("groupRows")?(n=e.getGroup().rows,(i=n.indexOf(e))&&(i=n[i-1])):(i=e.table.rowManager.getRowIndex(e))&&(i=e.table.rowManager.rows[i-1]),e.table.modules.history.action("rowDelete",e,{data:e.getData(),pos:!i,index:i})),e.deleteActual(),t()})},a.prototype.deleteActual=function(e){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.modExists("edit")&&this.table.modules.edit.currentCell.row===this&&this.table.modules.edit.cancelEdit(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.modules.dataTree.rowDelete(this),this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},a.prototype.deleteCells=function(){for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete()},a.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.getGroup=function(){return this.modules.group||!1},a.prototype.getComponent=function(){return this.component||(this.component=new r(this)),this.component};var l=function(e){this._cell=e};l.prototype.getValue=function(){return this._cell.getValue()},l.prototype.getOldValue=function(){return this._cell.getOldValue()},l.prototype.getElement=function(){return this._cell.getElement()},l.prototype.getRow=function(){return this._cell.row.getComponent()},l.prototype.getData=function(){return this._cell.row.getData()},l.prototype.getField=function(){return this._cell.column.getField()},l.prototype.getColumn=function(){return this._cell.column.getComponent()},l.prototype.setValue=function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)},l.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},l.prototype.edit=function(e){return this._cell.edit(e)},l.prototype.cancelEdit=function(){this._cell.cancelEdit()},l.prototype.isEdited=function(){return!!this._cell.modules.edit&&this._cell.modules.edit.edited},l.prototype.clearEdited=function(){self.table.modExists("edit",!0)&&this._cell.table.modules.edit.clearEdited(this._cell)},l.prototype.isValid=function(){return!this._cell.modules.validate||!this._cell.modules.validate.invalid},l.prototype.validate=function(){return this._cell.validate()},l.prototype.clearValidation=function(){self.table.modExists("validate",!0)&&this._cell.table.modules.validate.clearValidation(this._cell)},l.prototype.nav=function(){return this._cell.nav()},l.prototype.checkHeight=function(){this._cell.checkHeight()},l.prototype.getTable=function(){return this._cell.table},l.prototype._getSelf=function(){return this._cell};var c=function(e,t){this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.build()};c.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},c.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},c.prototype._configureCell=function(){var e=this,t=e.column.cellEvents,o=e.element,i=this.column.getField(),n={top:"flex-start",bottom:"flex-end",middle:"center"},s={left:"flex-start",right:"flex-end",center:"center"};if(o.style.textAlign=e.column.hozAlign,e.column.vertAlign&&(o.style.display="inline-flex",o.style.alignItems=n[e.column.vertAlign]||"",e.column.hozAlign&&(o.style.justifyContent=s[e.column.hozAlign]||"")),i&&o.setAttribute("tabulator-field",i),e.column.definition.cssClass){e.column.definition.cssClass.split(" ").forEach(function(e){o.classList.add(e)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(t){e._generateTooltip()}),e._bindClickEvents(t),e._bindTouchEvents(t),e._bindMouseEvents(t),e.column.modules.edit&&e.table.modules.edit.bindEditor(e),e.column.definition.rowHandle&&!1!==e.table.options.movableRows&&e.table.modExists("moveRow")&&e.table.modules.moveRow.initializeCell(e),e.column.visible||e.hide()},c.prototype._bindClickEvents=function(e){var t=this,o=t.element;(e.cellClick||t.table.options.cellClick)&&o.addEventListener("click",function(o){var i=t.getComponent();e.cellClick&&e.cellClick.call(t.table,o,i),t.table.options.cellClick&&t.table.options.cellClick.call(t.table,o,i)}),e.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=t.getComponent();e.cellDblClick&&e.cellDblClick.call(t.table,o,i),t.table.options.cellDblClick&&t.table.options.cellDblClick.call(t.table,o,i)}):o.addEventListener("dblclick",function(e){if(!t.table.modExists("edit")||t.table.modules.edit.currentCell!==t){e.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(t.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(t.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(e){}}}),(e.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=t.getComponent();e.cellContext&&e.cellContext.call(t.table,o,i),t.table.options.cellContext&&t.table.options.cellContext.call(t.table,o,i)})},c.prototype._bindMouseEvents=function(e){var t=this,o=t.element;(e.cellMouseEnter||t.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=t.getComponent();e.cellMouseEnter&&e.cellMouseEnter.call(t.table,o,i),t.table.options.cellMouseEnter&&t.table.options.cellMouseEnter.call(t.table,o,i)}),(e.cellMouseLeave||t.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=t.getComponent();e.cellMouseLeave&&e.cellMouseLeave.call(t.table,o,i),t.table.options.cellMouseLeave&&t.table.options.cellMouseLeave.call(t.table,o,i)}),(e.cellMouseOver||t.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=t.getComponent();e.cellMouseOver&&e.cellMouseOver.call(t.table,o,i),t.table.options.cellMouseOver&&t.table.options.cellMouseOver.call(t.table,o,i)}),(e.cellMouseOut||t.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=t.getComponent();e.cellMouseOut&&e.cellMouseOut.call(t.table,o,i),t.table.options.cellMouseOut&&t.table.options.cellMouseOut.call(t.table,o,i)}),(e.cellMouseMove||t.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=t.getComponent();e.cellMouseMove&&e.cellMouseMove.call(t.table,o,i),t.table.options.cellMouseMove&&t.table.options.cellMouseMove.call(t.table,o,i)})},c.prototype._bindTouchEvents=function(e){var t,o,i,n=this,s=n.element;(e.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(e){i=!0},{passive:!0}),s.addEventListener("touchend",function(t){if(i){var o=n.getComponent();e.cellTap&&e.cellTap.call(n.table,t,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,t,o)}i=!1})),(e.cellDblTap||this.table.options.cellDblTap)&&(t=null,s.addEventListener("touchend",function(o){if(t){clearTimeout(t),t=null;var i=n.getComponent();e.cellDblTap&&e.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else t=setTimeout(function(){clearTimeout(t),t=null},300)})),(e.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();e.cellTapHold&&e.cellTapHold.call(n.table,t,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,t,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(e){clearTimeout(o),o=null}))},c.prototype._generateContents=function(){var e;switch(e=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===e?"undefined":_typeof(e)){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}},c.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},c.prototype._generateTooltip=function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")},c.prototype.getElement=function(){return this.element},c.prototype.getValue=function(){return this.value},c.prototype.getOldValue=function(){return this.oldValue},c.prototype.setValue=function(e,t){var o,i=this.setValueProcessData(e,t);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.cellRendered(),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},c.prototype.setValueProcessData=function(e,t){var o=!1;return this.value!=e&&(o=!0,t&&this.column.modules.mutate&&(e=this.table.modules.mutator.transformCell(this,e))),this.setValueActual(e),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},c.prototype.setValueActual=function(e){this.oldValue=this.value,this.value=e,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,e),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.column.definition.contextMenu&&this.table.modExists("menu")&&this.table.modules.menu.initializeCell(this),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},c.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},c.prototype.clearWidth=function(){this.width="",this.element.style.width=""},c.prototype.getWidth=function(){return this.width||this.element.offsetWidth},c.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},c.prototype.checkHeight=function(){this.row.reinitializeHeight()},c.prototype.clearHeight=function(){this.element.style.height="",this.height=null},c.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},c.prototype.getHeight=function(){return this.height||this.element.offsetHeight},c.prototype.show=function(){this.element.style.display=""},c.prototype.hide=function(){this.element.style.display="none"},c.prototype.edit=function(e){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,e)},c.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var e=this.table.modules.edit.getCurrentCell();e&&e._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},c.prototype.validate=function(){if(this.column.modules.validate&&this.table.modExists("validate",!0)){return!0===this.table.modules.validate.validate(this.column.modules.validate,this,this.getValue())}return!0},c.prototype.delete=function(){this.table.rowManager.redrawBlock||this.element.parentNode.removeChild(this.element),this.modules.validate&&this.modules.validate.invalid&&this.table.modules.validate.clearValidation(this),this.modules.edit&&this.modules.edit.edited&&this.table.modules.edit.clearEdited(this),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},c.prototype.nav=function(){var e=this,t=!1,o=this.row.getCellIndex(this);return{next:function(){var t,o=this.right();return!!o||!(!(t=e.table.rowManager.nextDisplayRow(e.row,!0))||!(o=t.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var t,o=this.left();return!!o||!(!(t=e.table.rowManager.prevDisplayRow(e.row,!0))||!(o=t.findPrevEditableCell(t.cells.length)))&&(o.edit(),!0)},left:function(){return!!(t=e.row.findPrevEditableCell(o))&&(t.edit(),!0)},right:function(){return!!(t=e.row.findNextEditableCell(o))&&(t.edit(),!0)},up:function(){var t=e.table.rowManager.prevDisplayRow(e.row,!0);t&&t.cells[o].edit()},down:function(){var t=e.table.rowManager.nextDisplayRow(e.row,!0);t&&t.cells[o].edit()}}},c.prototype.getIndex=function(){this.row.getCellIndex(this)},c.prototype.getComponent=function(){return this.component||(this.component=new l(this)),this.component};var u=function(e){this.table=e,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};u.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e},u.prototype._initialize=function(e){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},u.prototype.getElement=function(){return this.element},u.prototype.append=function(e,t){this.activate(t),this.element.appendChild(e),this.table.rowManager.adjustTableSize()},u.prototype.prepend=function(e,t){this.activate(t),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()},u.prototype.remove=function(e){e.parentNode.removeChild(e),this.deactivate()},u.prototype.deactivate=function(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},u.prototype.activate=function(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)},u.prototype.redraw=function(){this.links.forEach(function(e){e.footerRedraw()})};var d=function e(t,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.modules={},this.initializeElement(t),this.initializeOptions(o||{}),this._create(),e.prototype.comms.register(this)};d.prototype.defaultOptions={height:!1,minHeight:!1,maxHeight:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],cellHozAlign:"",cellVertAlign:"",data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopyConfig:!1,clipboardCopyFormatter:!1,clipboardCopyRowRange:"active",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(e,t){return t},downloadComplete:!1,downloadConfig:{},downloadRowRange:"active",dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},dataTreeChildColumnCalcs:!1,dataTreeSelectPropagate:!1,printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printStyled:!0,printVisibleRows:!0,printRowRange:"visible",printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(e,t){return!0},headerFilterLiveFilterDelay:300,headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,groupHeaderPrint:null,groupHeaderClipboard:null,groupHeaderHtmlOutput:null,groupHeaderDownload:null,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsConnectedElements:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},movableRowsElementDrop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowContextMenu:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupContextMenu:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationMode:"blocking",validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},d.prototype.initializeOptions=function(e){if(!1!==e.invalidOptionWarnings)for(var t in e)void 0===this.defaultOptions[t]&&console.warn("Invalid table constructor option:",t)
+;for(var t in this.defaultOptions)t in e?this.options[t]=e[t]:Array.isArray(this.defaultOptions[t])?this.options[t]=[]:"object"===_typeof(this.defaultOptions[t])&&null!==this.defaultOptions[t]?this.options[t]={}:this.options[t]=this.defaultOptions[t]},d.prototype.initializeElement=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)},d.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),this.options.downloadDataFormatter&&console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated"),void 0!==this.options.clipboardCopyHeader&&(this.options.columnHeaders=this.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),!0!==this.options.printVisibleRows&&(console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option"),this.options.persistence.printRowRange="active"),!0!==this.options.printCopyStyle&&(console.warn("printCopyStyle option is deprecated, you should now use the printStyled option"),this.options.persistence.printStyled=this.options.printCopyStyle),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},d.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},d.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new s(this),this.footerManager=new u(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},d.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},d.prototype._buildElement=function(){var e=this,t=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",t.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",t.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",t.style.maxHeight=i.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var r=document.createElement("span");r.innerHTML=i.placeholder,s.appendChild(r),i.placeholder=s}if(t.appendChild(this.columnManager.getElement()),t.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var l=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(l=o.persistence.load("filter"))&&i.initialFilter&&(l=i.initialFilter):i.initialFilter&&(l=i.initialFilter),o.filter.setFilter(l)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(t){var i=e.columnManager.findColumn(t.field);if(!i)return console.warn("Column Filter Error - No matching column found:",t.field),!1;o.filter.setHeaderFilterValue(i,t.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},d.prototype._loadInitialData=function(){var e=this;if(e.options.pagination&&e.modExists("page"))if(e.modules.page.reset(!0,!0),"local"==e.options.pagination){if(e.options.data.length)e.rowManager.setData(e.options.data,!1,!0);else{if((e.options.ajaxURL||e.options.ajaxURLGenerator)&&e.modExists("ajax"))return void e.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){e.options.paginationInitialPage&&e.modules.page.setPage(e.options.paginationInitialPage)});e.rowManager.setData(e.options.data,!1,!0)}e.options.paginationInitialPage&&e.modules.page.setPage(e.options.paginationInitialPage)}else e.options.ajaxURL?e.modules.page.setPage(e.options.paginationInitialPage).then(function(){}).catch(function(){}):e.rowManager.setData([],!1,!0);else e.options.data.length?e.rowManager.setData(e.options.data):(e.options.ajaxURL||e.options.ajaxURLGenerator)&&e.modExists("ajax")?e.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){}):e.rowManager.setData(e.options.data,!1,!0)},d.prototype.destroy=function(){var e=this.element;for(d.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(e){e.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")},d.prototype._detectBrowser=function(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))},d.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},d.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},d.prototype.setDataFromLocalFile=function(e){var t=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=e||".json,application/json",n.addEventListener("change",function(e){var s,r=n.files[0],a=new FileReader;a.readAsText(r),a.onload=function(e){try{s=JSON.parse(a.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void i(e)}t._setData(s).then(function(e){o(e)}).catch(function(e){o(e)})},a.onerror=function(e){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},d.prototype.setData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!1,!0)},d.prototype._setData=function(e,t,o,i,n){var s=this;return"string"!=typeof e?e?s.rowManager.setData(e,i,n):s.modExists("ajax")&&(s.modules.ajax.getUrl||s.options.ajaxURLGenerator)?"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n):s.rowManager.setData([],i,n):0==e.indexOf("{")||0==e.indexOf("[")?s.rowManager.setData(JSON.parse(e),i,n):s.modExists("ajax",!0)?(t&&s.modules.ajax.setParams(t),o&&s.modules.ajax.setConfig(o),s.modules.ajax.setUrl(e),"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n)):void 0},d.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},d.prototype.getData=function(e){return!0===e&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getData(e)},d.prototype.getDataCount=function(e){return!0===e&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getDataCount(e)},d.prototype.searchRows=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",e,t,o)},d.prototype.searchData=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",e,t,o)},d.prototype.getHtml=function(e,t,o){if(this.modExists("export",!0))return this.modules.export.getHtml(e,t,o)},d.prototype.print=function(e,t,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(e,t,o)},d.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},d.prototype.replaceData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!0)},d.prototype.updateData=function(e){var t=this,o=this,i=0;return new Promise(function(n,s){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);t&&(i++,t.updateData(e).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},d.prototype.addData=function(e,t,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?i.rowManager.addRows(e,t,o).then(function(e){var t=[];e.forEach(function(e){t.push(e.getComponent())}),n(t)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},d.prototype.updateOrAddData=function(e){var t=this,o=this,i=[],n=0;return new Promise(function(s,r){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);n++,t?t.updateData(e).then(function(){n--,i.push(t.getComponent()),n||s(i)}):o.rowManager.addRows(e).then(function(e){n--,i.push(e[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),r("Update Error - No data provided"))})},d.prototype.getRow=function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.getRowFromPosition=function(e,t){var o=this.rowManager.getRowFromPosition(e,t);return o?o.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.deleteRow=function(e){var t=this;return new Promise(function(o,i){function n(){++r==e.length&&a&&(s.rowManager.reRenderInPosition(),o())}var s=t,r=0,a=0,l=[];Array.isArray(e)||(e=[e]),e.forEach(function(e){var o=t.rowManager.findRow(e,!0);o?l.push(o):(console.warn("Delete Error - No matching row found:",e),i("Delete Error - No matching row found"),n())}),l.sort(function(e,o){return t.rowManager.rows.indexOf(e)>t.rowManager.rows.indexOf(o)?1:-1}),l.forEach(function(e){e.delete().then(function(){a++,n()}).catch(function(e){n(),i(e)})})})},d.prototype.addRow=function(e,t,o){var i=this;return new Promise(function(n,s){"string"==typeof e&&(e=JSON.parse(e)),i.rowManager.addRows(e,t,o).then(function(e){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(e[0].getComponent())})})},d.prototype.updateOrAddRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(e){n(e)}):s=o.rowManager.addRows(t).then(function(e){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(e[0].getComponent())}).catch(function(e){n(e)})})},d.prototype.updateRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){i(s.getComponent())}).catch(function(e){n(e)}):(console.warn("Update Error - No matching row found:",e),n("Update Error - No matching row found"))})},d.prototype.scrollToRow=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.rowManager.findRow(e);r?i.rowManager.scrollToRow(r,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching row found:",e),s("Scroll Error - No matching row found"))})},d.prototype.moveRow=function(e,t,o){var i=this.rowManager.findRow(e);i?i.moveToRow(t,o):console.warn("Move Error - No matching row found:",e)},d.prototype.getRows=function(e){return!0===e&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getComponents(e)},d.prototype.getRowPosition=function(e,t){var o=this.rowManager.findRow(e);return o?this.rowManager.getRowPosition(o,t):(console.warn("Position Error - No matching row found:",e),!1)},d.prototype.copyToClipboard=function(e){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(e)},d.prototype.setColumns=function(e){this.columnManager.setColumns(e)},d.prototype.getColumns=function(e){return this.columnManager.getComponents(e)},d.prototype.getColumn=function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)},d.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},d.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},d.prototype.setColumnLayout=function(e){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,e)),!0)},d.prototype.showColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.hideColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.toggleColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()},d.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(o);i.columnManager.addColumn(e,t,r).then(function(e){n(e.getComponent())}).catch(function(e){s(e)})})},d.prototype.deleteColumn=function(e){var t=this;return new Promise(function(o,i){var n=t.columnManager.findColumn(e);n?n.delete().then(function(){o()}).catch(function(e){i(e)}):(console.warn("Column Delete Error - No matching column found:",e),i())})},d.prototype.updateColumnDefinition=function(e,t){var o=this;return new Promise(function(i,n){var s=o.columnManager.findColumn(e);s?s.updateDefinition(t).then(function(e){i(e)}).catch(function(e){n(e)}):(console.warn("Column Update Error - No matching column found:",e),n())})},d.prototype.moveColumn=function(e,t,o){var i=this.columnManager.findColumn(e),n=this.columnManager.findColumn(t);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",e)},d.prototype.scrollToColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(e);r?i.columnManager.scrollToColumn(r,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching column found:",e),s("Scroll Error - No matching column found"))})},d.prototype.setLocale=function(e){this.modules.localize.setLocale(e)},d.prototype.getLocale=function(){return this.modules.localize.getLocale()},d.prototype.getLang=function(e){return this.modules.localize.getLang(e)},d.prototype.redraw=function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)},d.prototype.setHeight=function(e){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},d.prototype.setSort=function(e,t){this.modExists("sort",!0)&&(this.modules.sort.setSort(e,t),this.rowManager.sorterRefresh())},d.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},d.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},d.prototype.setFilter=function(e,t,o,i){this.modExists("filter",!0)&&(this.modules.filter.setFilter(e,t,o,i),this.rowManager.filterRefresh())},d.prototype.addFilter=function(e,t,o,i){this.modExists("filter",!0)&&(this.modules.filter.addFilter(e,t,o,i),this.rowManager.filterRefresh())},d.prototype.getFilters=function(e){if(this.modExists("filter",!0))return this.modules.filter.getFilters(e)},d.prototype.setHeaderFilterFocus=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterFocus(t)}},d.prototype.getHeaderFilterValue=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(t)return this.modules.filter.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}},d.prototype.setHeaderFilterValue=function(e,t){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(e);if(!o)return console.warn("Column Filter Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterValue(o,t)}},d.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},d.prototype.removeFilter=function(e,t,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(e,t,o),this.rowManager.filterRefresh())},d.prototype.clearFilter=function(e){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(e),this.rowManager.filterRefresh())},d.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},d.prototype.selectRow=function(e){this.modExists("selectRow",!0)&&(!0===e&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),e="active"),this.modules.selectRow.selectRows(e))},d.prototype.deselectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(e)},d.prototype.toggleSelectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(e)},d.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},d.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},d.prototype.getInvalidCells=function(){if(this.modExists("validate",!0))return this.modules.validate.getInvalidCells()},d.prototype.clearCellValidation=function(e){var t=this;this.modExists("validate",!0)&&(e||(e=this.modules.validate.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach(function(e){t.modules.validate.clearValidation(e._getSelf())}))},d.prototype.validate=function(e){var t=[];return this.rowManager.rows.forEach(function(e){var o=e.validate();!0!==o&&(t=t.concat(o))}),!t.length||t},d.prototype.setMaxPage=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(e)},d.prototype.setPage=function(e){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(e):new Promise(function(e,t){t()})},d.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){t.options.pagination&&t.modExists("page")?(e=t.rowManager.findRow(e),e?t.modules.page.setPageToRow(e).then(function(){o()}).catch(function(){i()}):i()):i()})},d.prototype.setPageSize=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(e),this.modules.page.setPage(1).then(function(){}).catch(function(){})},d.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},d.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},d.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},d.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},d.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},d.prototype.setGroupBy=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=e,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},d.prototype.setGroupStartOpen=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.setGroupHeader=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.getGroups=function(e){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},d.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},d.prototype.getEditedCells=function(){if(this.modExists("edit",!0))return this.modules.edit.getEditedCells()},d.prototype.clearCellEdited=function(e){var t=this;this.modExists("edit",!0)&&(e||(e=this.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach(function(e){t.modules.edit.clearEdited(e._getSelf())}))},d.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},d.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},d.prototype.navigatePrev=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().prev()},d.prototype.navigateNext=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().next()},d.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},d.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},d.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},d.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},d.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},d.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},d.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},d.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},d.prototype.download=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i)},d.prototype.downloadToTab=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i,!0)},d.prototype.tableComms=function(e,t,o,i){this.modules.comms.receive(e,t,o,i)},d.prototype.moduleBindings={},d.prototype.extendModule=function(e,t,o){if(d.prototype.moduleBindings[e]){var i=d.prototype.moduleBindings[e].prototype[t];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",t)}else console.warn("Module Error - module does not exist:",e)},d.prototype.registerModule=function(e,t){d.prototype.moduleBindings[e]=t},d.prototype.bindModules=function(){this.modules={};for(var e in d.prototype.moduleBindings)this.modules[e]=new d.prototype.moduleBindings[e](this)},d.prototype.modExists=function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)},d.prototype.helpers={elVisible:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)},elOffset:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(e){var t=Array.isArray(e)?[]:{};for(var o in e)null!=e[o]&&"object"===_typeof(e[o])?e[o]instanceof Date?t[o]=new Date(e[o]):t[o]=this.deepClone(e[o]):t[o]=e[o];return t}},d.prototype.comms={tables:[],register:function(e){d.prototype.comms.tables.push(e)},deregister:function(e){var t=d.prototype.comms.tables.indexOf(e);t>-1&&d.prototype.comms.tables.splice(t,1)},lookupTable:function(e,t){var o,i,n=[];if("string"==typeof e){if(o=document.querySelectorAll(e),o.length)for(var s=0;s<o.length;s++)(i=d.prototype.comms.matchElement(o[s]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e instanceof d?(i=d.prototype.comms.matchElement(e))&&n.push(i):Array.isArray(e)?e.forEach(function(e){n=n.concat(d.prototype.comms.lookupTable(e))}):t||console.warn("Table Connection Error - Invalid Selector",e);return n},matchElement:function(e){return d.prototype.comms.tables.find(function(t){return e instanceof d?t===e:t.element===e})}},d.prototype.findTable=function(e){var t=d.prototype.comms.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t};var h=function(e){this.table=e,this.mode=null};h.prototype.initialize=function(e){this.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},h.prototype.getMode=function(){return this.mode},h.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},h.prototype.modes={
+fitData:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataTable:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(e){var t=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,s=!1;e.forEach(function(e,i){e.widthFixed||e.reinitializeWidth(),(t.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(s=e),e.visible&&(o+=e.getWidth())}),s?(n=i-o+s.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(s.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?s.setWidth(n):s.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){function t(e){return"string"==typeof e?e.indexOf("%")>-1?n/100*parseInt(e):parseInt(e):e}function o(e,i,n,s){function r(e){return n*(e.column.definition.widthGrow||1)}function a(e){return t(e.width)-n*(e.column.definition.widthShrink||0)}var l=[],c=0,u=0,d=0,h=0,p=0,m=[];return e.forEach(function(e,t){var o=s?a(e):r(e);e.column.minWidth>=o?l.push(e):(m.push(e),p+=s?e.column.definition.widthShrink||1:e.column.definition.widthGrow||1)}),l.length?(l.forEach(function(e){c+=s?e.width-e.column.minWidth:e.column.minWidth,e.width=e.column.minWidth}),u=i-c,d=p?Math.floor(u/p):u,h=u-d*p,h+=o(m,u,d,s)):(h=p?i-Math.floor(i/p)*p:i,m.forEach(function(e){e.width=s?a(e):r(e)})),h}var i=this,n=i.table.element.clientWidth,s=0,r=0,a=0,l=0,c=[],u=[],d=0,h=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach(function(e){var o,i,n;e.visible&&(o=e.definition.width,i=parseInt(e.minWidth),o?(n=t(o),s+=n>i?n:i,e.definition.widthShrink&&(u.push({column:e,width:n>i?n:i}),d+=e.definition.widthShrink)):(c.push({column:e,width:0}),a+=e.definition.widthGrow||1))}),r=n-s,l=Math.floor(r/a);var p=o(c,r,l,!1);c.length&&p>0&&(c[c.length-1].width+=+p),c.forEach(function(e){r-=e.width}),h=Math.abs(p)+r,h>0&&d&&(p=o(u,h,Math.floor(h/d),!0)),u.length&&(u[u.length-1].width-=p),c.forEach(function(e){e.column.setWidth(e.width)}),u.forEach(function(e){e.column.setWidth(e.width)})}},d.prototype.registerModule("layout",h);var p=function(e){this.table=e,this.locale="default",this.lang=!1,this.bindings={}};p.prototype.setHeaderFilterPlaceholder=function(e){this.langs.default.headerFilters.default=e},p.prototype.setHeaderFilterColumnPlaceholder=function(e,t){this.langs.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)},p.prototype.installLang=function(e,t){this.langs[e]?this._setLangProp(this.langs[e],t):this.langs[e]=t},p.prototype._setLangProp=function(e,t){for(var o in t)e[o]&&"object"==_typeof(e[o])?this._setLangProp(e[o],t[o]):e[o]=t[o]},p.prototype.setLocale=function(e){function t(e,o){for(var i in e)"object"==_typeof(e[i])?(o[i]||(o[i]={}),t(e[i],o[i])):o[i]=e[i]}var o=this;if(e=e||"default",!0===e&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!o.langs[e]){var i=e.split("-")[0];o.langs[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,i),e=i):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}o.locale=e,o.lang=d.prototype.helpers.deepClone(o.langs.default||{}),"default"!=e&&t(o.langs[e],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},p.prototype.getLocale=function(e){return self.locale},p.prototype.getLang=function(e){return e?this.langs[e]:this.lang},p.prototype.getText=function(e,t){var e=t?e+"|"+t:e,o=e.split("|");return this._getLangElement(o,this.locale)||""},p.prototype._getLangElement=function(e,t){var o=this,i=o.lang;return e.forEach(function(e){var t;i&&(t=i[e],i=void 0!==t&&t)}),i},p.prototype.bind=function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)},p.prototype._executeBindings=function(){var e=this;for(var t in e.bindings)!function(t){e.bindings[t].forEach(function(o){o(e.getText(t),e.lang)})}(t)},p.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}},d.prototype.registerModule("localize",p);var m=function(e){this.table=e};m.prototype.getConnections=function(e){var t,o=this,i=[];return t=d.prototype.comms.lookupTable(e),t.forEach(function(e){o.table!==e&&i.push(e)}),i},m.prototype.send=function(e,t,o,i){var n=this,s=this.getConnections(e);s.forEach(function(e){e.tableComms(n.table.element,t,o,i)}),!s.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)},m.prototype.receive=function(e,t,o,i){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,o,i);console.warn("Inter-table Comms Error - no such module:",t)},d.prototype.registerModule("comms",m);var f=function(e){this.table=e,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};f.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[r]&&(s=t.lookupAccessor(e.definition[r]))&&(o=!0,i[r]={accessor:s,params:e.definition[r+"Params"]||{}})}),o&&(e.modules.accessor=i)},f.prototype.lookupAccessor=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.accessors[e]?t=this.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t},f.prototype.transformRow=function(e,t){var o=this,i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),n=d.prototype.helpers.deepClone(e||{});return o.table.columnManager.traverse(function(e){var o,s,r,a;e.modules.accessor&&(s=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(o=e.getFieldValue(n))&&(a=e.getComponent(),r="function"==typeof s.params?s.params(o,n,t,a):s.params,e.setFieldValue(n,s.accessor(o,n,t,r,a)))}),n},f.prototype.accessors={},d.prototype.registerModule("accessor",f);var g=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};g.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},g.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},g.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},g.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},g.prototype.getParams=function(){return this.params||{}},g.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},g.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},g.prototype.setUrl=function(e){this.url=e},g.prototype.getUrl=function(){return this.url},g.prototype.loadData=function(e,t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e,t)},g.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},g.prototype.blockActiveRequest=function(){this.requestOrder++},g.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},g.prototype._loadDataStandard=function(e,t){var o=this;return new Promise(function(i,n){o.sendRequest(e).then(function(s){o.table.rowManager.setData(s,e,t).then(function(){i()}).catch(function(e){n(e)})}).catch(function(e){n(e)})})},g.prototype.generateParamsList=function(e,t){var o=this,i=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,n){i=i.concat(o.generateParamsList(e,t?t+"["+n+"]":n))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var n in e)i=i.concat(o.generateParamsList(e[n],t?t+"["+n+"]":n));else i.push({key:t,value:e});return i},g.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},g.prototype.sendRequest=function(e){var t,o=this,i=this,n=i.url;return i.requestOrder++,t=i.requestOrder,i._loadDefaultConfig(),new Promise(function(s,r){!1!==i.table.options.ajaxRequesting.call(o.table,i.url,i.params)?(i.loading=!0,e||i.showLoader(),o.loaderPromise(n,i.config,i.params).then(function(e){t===i.requestOrder?(i.table.options.ajaxResponse&&(e=i.table.options.ajaxResponse.call(i.table,i.url,i.params,e)),s(e),i.hideLoader(),i.loading=!1):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made")}).catch(function(e){console.error("Ajax Load Error: ",e),i.table.options.ajaxError.call(i.table,e),i.showError(),setTimeout(function(){i.hideLoader()},3e3),i.loading=!1,r()})):r()})},g.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},g.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},g.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},g.prototype.defaultConfig={method:"GET"},g.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+this.serializeParams(o))),e},g.prototype.defaultLoaderPromise=function(e,t,o){var i,n=this;return new Promise(function(s,r){if(e=n.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(i="object"===_typeof(n.table.options.ajaxContentType)?n.table.options.ajaxContentType:n.contentTypeFormatters[n.table.options.ajaxContentType]){for(var a in i.headers)t.headers||(t.headers={}),void 0===t.headers[a]&&(t.headers[a]=i.headers[a]);t.body=i.body.call(n,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",n.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){s(e)}).catch(function(e){r(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),r(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),r(e)})):(console.warn("Ajax Load Error - No URL Set"),s([]))})},g.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var i=this.generateParamsList(o),n=new FormData;return i.forEach(function(e){n.append(e.key,e.value)}),n}}},d.prototype.registerModule("ajax",g);var b=function(e){this.table=e,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};b.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e},b.prototype.initialize=function(){this.genColumn=new n({field:"value"},this)},b.prototype.registerColumnField=function(){},b.prototype.initializeColumn=function(e){var t=e.definition,o={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(_typeof(t.topCalc)){case"string":this.calculations[t.topCalc]?o.topCalc=this.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":o.topCalc=t.topCalc}o.topCalc&&(e.modules.columnCalcs=o,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(_typeof(t.bottomCalc)){case"string":this.calculations[t.bottomCalc]?o.botCalc=this.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":o.botCalc=t.bottomCalc}o.botCalc&&(e.modules.columnCalcs=o,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},b.prototype.removeCalcs=function(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()},b.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},b.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},b.prototype.scrollHorizontal=function(e){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-e+"px")},b.prototype.recalc=function(e){var t;if(this.topInitialized||this.botInitialized){if(this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),t=this.generateRow("top",this.rowsToData(e)),this.topRow=t;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(t.getElement()),t.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),t=this.generateRow("bottom",this.rowsToData(e)),this.botRow=t;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(t.getElement()),t.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},b.prototype.recalcRowGroup=function(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))},b.prototype.recalcAll=function(){var e=this;if((this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalc(this.table.rowManager.activeRows),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs)){table.modules.groupRows.getChildGroups().forEach(function(t){e.recalcGroup(t)})}},b.prototype.recalcGroup=function(e){var t,o;e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),o=this.generateRowData("bottom",t),e.calcs.bottom.updateData(o),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),o=this.generateRowData("top",t),e.calcs.top.updateData(o),e.calcs.top.reinitialize()))},b.prototype.generateTopRow=function(e){return this.generateRow("top",this.rowsToData(e))},b.prototype.generateBottomRow=function(e){return this.generateRow("bottom",this.rowsToData(e))},b.prototype.rowsToData=function(e){var t=this,o=[];return e.forEach(function(e){if(o.push(e.getData()),t.table.options.dataTree&&t.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree.open){var i=t.rowsToData(t.table.modules.dataTree.getFilteredTreeChildren(e));o=o.concat(i)}}),o},b.prototype.generateRow=function(e,t){var o,i=this,n=this.generateRowData(e,t);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),o=new a(n,this,"calc"),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),o.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),o.generateCells=function(){var t=[];i.table.columnManager.columnsByIndex.forEach(function(n){i.genColumn.setField(n.getField()),i.genColumn.hozAlign=n.hozAlign,n.definition[e+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(n.definition[e+"CalcFormatter"]),params:n.definition[e+"CalcFormatterParams"]}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=n.definition.cssClass;var s=new c(i.genColumn,o);s.column=n,s.setWidth(),n.cells.push(s),t.push(s),n.visible||s.hide()}),this.cells=t},o},b.prototype.generateRowData=function(e,t){var o,i,n={},s="top"==e?this.topCalcs:this.botCalcs,r="top"==e?"topCalc":"botCalc";return s.forEach(function(e){var s=[];e.modules.columnCalcs&&e.modules.columnCalcs[r]&&(t.forEach(function(t){s.push(e.getFieldValue(t))}),i=r+"Params",o="function"==typeof e.modules.columnCalcs[i]?e.modules.columnCalcs[i](s,t):e.modules.columnCalcs[i],e.setFieldValue(n,e.modules.columnCalcs[r](s,t,o)))}),n},b.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},b.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},b.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},b.prototype.getResults=function(){var e,t=this,o={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(e=this.table.modules.groupRows.getGroups(!0),e.forEach(function(e){o[e.getKey()]=t.getGroupResults(e)})):o={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},o},b.prototype.getGroupResults=function(e){var t=this,o=e._getSelf(),i=e.getSubGroups(),n={};return i.forEach(function(e){n[e.getKey()]=t.getGroupResults(e)}),{top:o.calcs.top?o.calcs.top.getData():{},bottom:o.calcs.bottom?o.calcs.bottom.getData():{},groups:n}},b.prototype.calculations={avg:function(e,t,o){var i=0,n=void 0!==o.precision?o.precision:2;return e.length&&(i=e.reduce(function(e,t){return t=Number(t),e+t}),i/=e.length,i=!1!==n?i.toFixed(n):i),parseFloat(i).toString()},max:function(e,t,o){var i=null,n=void 0!==o.precision&&o.precision;return e.forEach(function(e){((e=Number(e))>i||null===i)&&(i=e)}),null!==i?!1!==n?i.toFixed(n):i:""},min:function(e,t,o){var i=null,n=void 0!==o.precision&&o.precision;return e.forEach(function(e){((e=Number(e))<i||null===i)&&(i=e)}),null!==i?!1!==n?i.toFixed(n):i:""},sum:function(e,t,o){var i=0,n=void 0!==o.precision&&o.precision;return e.length&&e.forEach(function(e){e=Number(e),i+=isNaN(e)?0:Number(e)}),!1!==n?i.toFixed(n):i},concat:function(e,t,o){var i=0;return e.length&&(i=e.reduce(function(e,t){return String(e)+String(t)})),i},count:function(e,t,o){var i=0;return e.length&&e.forEach(function(e){e&&i++}),i}},d.prototype.registerModule("columnCalcs",b);var v=function(e){this.table=e,this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0};v.prototype.initialize=function(){var e=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(t){var o,i,n;if(!e.blocked){if(t.preventDefault(),e.customSelection)o=e.customSelection,e.table.options.clipboardCopyFormatter&&(o=e.table.options.clipboardCopyFormatter("plain",o));else{var n=e.table.modules.export.generateExportList(e.rowRange,e.table.options.clipboardCopyStyled,e.table.options.clipboardCopyConfig,"clipboard");i=e.table.modules.export.genereateHTMLTable(n),o=i?e.generatePlainContent(n):"",e.table.options.clipboardCopyFormatter&&(o=e.table.options.clipboardCopyFormatter("plain",o),i=e.table.options.clipboardCopyFormatter("html",i))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",o):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",o),i&&t.clipboardData.setData("text/html",i)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",o),i&&t.originalEvent.clipboardData.setData("text/html",i)),e.table.options.clipboardCopied.call(e.table,o,i),e.reset()}}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(t){e.paste(t)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},v.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},v.prototype.generatePlainContent=function(e){var t=[];return e.forEach(function(e){var o=[];e.columns.forEach(function(t){var i="";if(t)switch("group"===e.type&&(t.value=t.component.getKey()),_typeof(t.value)){case"object":i=JSON.stringify(t.value);break;case"undefined":case"null":i="";break;default:i=t.value}o.push(i)}),t.push(o.join("\t"))}),t.join("\n")},v.prototype.copy=function(e,t){var e,o,i;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?(e=document.createRange(),e.selectNodeContents(this.table.element),o=window.getSelection(),o.toString()&&t&&(this.customSelection=o.toString()),o.removeAllRanges(),o.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(i=document.body.createTextRange(),i.moveToElementText(this.table.element),i.select()),document.execCommand("copy"),o&&o.removeAllRanges())},v.prototype.setPasteAction=function(e){switch(void 0===e?"undefined":_typeof(e)){case"string":this.pasteAction=this.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}},v.prototype.setPasteParser=function(e){switch(void 0===e?"undefined":_typeof(e)){case"string":this.pasteParser=this.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}},v.prototype.paste=function(e){var t,o,i;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),o=this.pasteParser.call(this,t),o?(e.preventDefault(),this.table.modExists("mutator")&&(o=this.mutateData(o)),i=this.pasteAction.call(this,o),this.table.options.clipboardPasted.call(this.table,t,o,i)):this.table.options.clipboardPasteError.call(this.table,t))},v.prototype.mutateData=function(e){var t=this,o=[];return Array.isArray(e)?e.forEach(function(e){o.push(t.table.modules.mutator.transformRow(e,"clipboard"))}):o=e,o},v.prototype.checkPaseOrigin=function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t},v.prototype.getPasteData=function(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t},v.prototype.pasteParsers={table:function(e){var t=[],o=!0,i=this.table.columnManager.columns,n=[],s=[];return e=e.split("\n"),e.forEach(function(e){t.push(e.split("\t"))}),!(!t.length||1===t.length&&t[0].length<2)&&(!0,t[0].forEach(function(e){var t=i.find(function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()});t?n.push(t):o=!1}),o||(o=!0,n=[],t[0].forEach(function(e){var t=i.find(function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()});t?n.push(t):o=!1}),o||(n=this.table.columnManager.columnsByIndex)),o&&t.shift(),t.forEach(function(e){var t={};e.forEach(function(e,o){n[o]&&(t[n[o].field]=e)}),s.push(t)}),s)}},v.prototype.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},d.prototype.registerModule("clipboard",v);var y=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};y.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),o=this.table.options;switch(this.field=o.dataTreeChildField,this.indent=o.dataTreeChildIndent,this.elementField=o.dataTreeElementColumn||!!t&&t.field,o.dataTreeBranchElement&&(!0===o.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof o.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=o.dataTreeBranchElement),o.dataTreeCollapseElement?"string"==typeof o.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=o.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),o.dataTreeExpandElement?"string"==typeof o.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=o.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(o.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return o.dataTreeStartExpanded};break;case"function":this.startOpen=o.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return o.dataTreeStartExpanded[t]}}},y.prototype.initializeRow=function(e){var t=e.getData()[this.field],o=Array.isArray(t),i=o||!o&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;!i&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!i&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!i&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:i}},y.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],o=t.getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,o),e.element.classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),o.insertBefore(i.branchEl,o.firstChild),i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):o.style.paddingLeft=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")},y.prototype.generateControlElement=function(e,t){var o=this,i=e.modules.dataTree,t=t||e.getCells()[0].getElement(),n=i.controlEl;!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.collapseRow(e)})):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.expandRow(e)})),i.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),n&&n.parentNode===t?n.parentNode.replaceChild(i.controlEl,n):t.insertBefore(i.controlEl,t.firstChild))},y.prototype.setDisplayIndex=function(e){this.displayIndex=e},y.prototype.getDisplayIndex=function(){return this.displayIndex},y.prototype.getRows=function(e){var t=this,o=[];return e.forEach(function(e,i){var n,s;o.push(e),e instanceof a&&(n=e.modules.dataTree.children,n.index||!1===n.children||(s=t.getChildren(e),s.forEach(function(e){o.push(e)})))}),o},y.prototype.getChildren=function(e){var t=this,o=e.modules.dataTree,i=[],n=[];return!1!==o.children&&o.open&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),i=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,this.table.modExists("sort")&&this.table.modules.sort.sort(i),i.forEach(function(e){n.push(e),t.getChildren(e).forEach(function(e){n.push(e)})})),n},
+y.prototype.generateChildren=function(e){var t=this,o=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach(function(i){var n=new a(i||{},t.table.rowManager);n.modules.dataTree.index=e.modules.dataTree.index+1,n.modules.dataTree.parent=e,n.modules.dataTree.children&&(n.modules.dataTree.open=t.startOpen(n.getComponent(),n.modules.dataTree.index)),o.push(n)}),o},y.prototype.expandRow=function(e,t){var o=e.modules.dataTree;!1!==o.children&&(o.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},y.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},y.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},y.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},y.prototype.getFilteredTreeChildren=function(e){var t,o=e.modules.dataTree,i=[];return o.children&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),t=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,t.forEach(function(e){e instanceof a&&i.push(e)})),i},y.prototype.rowDelete=function(e){var t,o=e.modules.dataTree.parent;o&&(t=this.findChildIndex(e,o),!1!==t&&o.data[this.field].splice(t,1),o.data[this.field].length||delete o.data[this.field],this.initializeRow(o),this.layoutRow(o)),this.table.rowManager.refreshActiveData("tree",!1,!0)},y.prototype.addTreeChildRow=function(e,t,o,i){var n=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==i&&!1!==(n=this.findChildIndex(i,e))&&e.data[this.field].splice(o?n:n+1,0,t),!1===n&&(o?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)},y.prototype.findChildIndex=function(e,t){var o=this,i=!1;return"object"==(void 0===e?"undefined":_typeof(e))?e instanceof a?i=e.data:e instanceof r?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(i=t.modules.dataTree.children.find(function(t){return t instanceof a&&t.element===e}))&&(i=i.data):i=void 0!==e&&null!==e&&t.data[this.field].find(function(t){return t.data[o.table.options.index]==e}),i&&(Array.isArray(t.data[this.field])&&(i=t.data[this.field].indexOf(i)),-1==i&&(i=!1)),i},y.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,o=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof a&&o.push(e.getComponent())})),o},y.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||e.row.reinitialize()},y.prototype.getChildField=function(){return this.field},y.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},d.prototype.registerModule("dataTree",y);var w=function(e){this.table=e};w.prototype.download=function(e,t,o,i,n){function s(o,i){n?!0===n?r.triggerDownload(o,i,e,t,!0):n(o):r.triggerDownload(o,i,e,t)}var r=this,a=!1;if("function"==typeof e?a=e:r.downloaders[e]?a=r.downloaders[e]:console.warn("Download Error - No such download type found: ",e),a){var l=this.generateExportList(i);a.call(this.table,l,o||{},s)}},w.prototype.generateExportList=function(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),o=this.table.options.groupHeaderDownload;return o&&!Array.isArray(o)&&(o=[o]),t.forEach(function(e){var t;"group"===e.type&&(t=e.columns[0],o&&o[e.indent]&&(t.value=o[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))}),t},w.prototype.triggerDownload=function(e,t,o,i,n){var s=document.createElement("a"),r=new Blob([e],{type:t}),i=i||"Tabulator."+("function"==typeof o?"txt":o);(r=this.table.options.downloadReady.call(this.table,e,r))&&(n?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,i):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},w.prototype.commsReceived=function(e,t,o){switch(t){case"intercept":this.download(o.type,"",o.options,o.active,o.intercept)}},w.prototype.downloaders={csv:function(e,t,o){var i=t&&t.delimiter?t.delimiter:",",n=[],s=[];e.forEach(function(e){var t=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(function(e,t){e&&1===e.depth&&(s[t]=void 0===e.value||"null"==typeof e.value?"":e.value)});break;case"row":e.columns.forEach(function(e){if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}t.push('"'+String(e.value).split('"').join('""')+'"')}}),n.push(t.join(i))}}),s.length&&(n=[s].concat(n)),n=n.join("\n"),t.bom&&(n="\ufeff"+n),o(n,"text/csv")},json:function(e,t,o){var i=[];e.forEach(function(e){var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach(function(e){e&&(t[e.component.getField()]=e.value)}),i.push(t)}}),i=JSON.stringify(i,null,"\t"),o(i,"application/json")},pdf:function(e,t,o){function i(e,t){var o=[];return e.columns.forEach(function(e){var i;if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}i={content:e.value,colSpan:e.width,rowSpan:e.height},t&&(i.styles=t),o.push(i)}else o.push("")}),o}var n=[],s=[],r={},a=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},l=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},c=t.jsPDF||{},u=t&&t.title?t.title:"";c.orientation||(c.orientation=t.orientation||"landscape"),c.unit||(c.unit="pt"),e.forEach(function(e){switch(e.type){case"header":n.push(i(e));break;case"group":s.push(i(e,a));break;case"calc":s.push(i(e,l));break;case"row":s.push(i(e))}});var d=new jsPDF(c);t&&t.autoTable&&(r="function"==typeof t.autoTable?t.autoTable(d)||{}:t.autoTable),u&&(r.addPageContent=function(e){d.text(u,40,30)}),r.head=n,r.body=s,d.autoTable(r),t&&t.documentProcessing&&t.documentProcessing(d),o(d.output("arraybuffer"),"application/pdf")},xlsx:function(e,t,o){function i(){var t=[],o=[],i={},n={s:{c:0,r:0},e:{c:e[0]?e[0].columns.reduce(function(e,t){return e+(t&&t.width?t.width:1)},0):0,r:e.length}};return e.forEach(function(e,i){var n=[];e.columns.forEach(function(e,t){e?(n.push(e.value instanceof Date||"object"!==_typeof(e.value)?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&o.push({s:{r:i,c:t},e:{r:i+e.height-1,c:t+e.width-1}})):n.push("")}),t.push(n)}),XLSX.utils.sheet_add_aoa(i,t),i["!ref"]=XLSX.utils.encode_range(n),o.length&&(i["!merges"]=o),i}var n,s=this,r=t.sheetName||"Sheet1",a=XLSX.utils.book_new();if(a.SheetNames=[],a.Sheets={},t.sheetOnly)return void o(i());if(t.sheets)for(var l in t.sheets)!0===t.sheets[l]?(a.SheetNames.push(l),a.Sheets[l]=i()):(a.SheetNames.push(l),this.table.modules.comms.send(t.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:s.active,intercept:function(e){a.Sheets[l]=e}}));else a.SheetNames.push(r),a.Sheets[r]=i();t.documentProcessing&&(a=t.documentProcessing(a)),n=XLSX.write(a,{bookType:"xlsx",bookSST:!0,type:"binary"}),o(function(e){for(var t=new ArrayBuffer(e.length),o=new Uint8Array(t),i=0;i!=e.length;++i)o[i]=255&e.charCodeAt(i);return t}(n),"application/octet-stream")},html:function(e,t,o){this.modExists("export",!0)&&o(this.modules.export.genereateHTMLTable(e),"text/html")}},d.prototype.registerModule("download",w);var E=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[]};E.prototype.initializeColumn=function(e){var t=this,o={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?o.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":o.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?o.editor=t.editors[e.definition.formatter]:o.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}o.editor&&(e.modules.edit=o)},E.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},E.prototype.clearEditor=function(e){var t,o=this.currentCell;if(this.invalidEdit=!1,o){for(this.currentCell=!1,t=o.getElement(),e?o.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);o.row.getElement().classList.remove("tabulator-row-editing")}},E.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},E.prototype.bindEditor=function(e){var t=this,o=e.getElement();o.setAttribute("tabindex",0),o.addEventListener("click",function(e){o.classList.contains("tabulator-editing")||o.focus({preventScroll:!0})}),o.addEventListener("mousedown",function(e){t.mouseClick=!0}),o.addEventListener("focus",function(o){t.recursionBlock||t.edit(e,o,!1)})},E.prototype.focusCellNoEvent=function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1},E.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},E.prototype.focusScrollAdjust=function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,o=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,i=e.row.getElement();i.offsetTop;i.offsetTop<t?this.table.rowManager.element.scrollTop-=t-i.offsetTop:i.offsetTop+i.offsetHeight>o&&(this.table.rowManager.element.scrollTop+=i.offsetTop+i.offsetHeight-o)}},E.prototype.edit=function(e,t,o){function i(t){if(c.currentCell===e){var o=!0;return e.column.modules.validate&&c.table.modExists("validate")&&"manual"!=c.table.options.validationMode&&(o=c.table.modules.validate.validate(e.column.modules.validate,e,t)),!0===o||"highlight"===c.table.options.validationMode?(c.clearEditor(),e.setValue(t,!0),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==c.editedCells.indexOf(e)&&c.editedCells.push(e),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(e),!0===o||(h.classList.add("tabulator-validation-fail"),!1)):(c.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),c.focusCellNoEvent(e,!0),d(),c.table.options.validationFailed.call(c.table,e.getComponent(),t,o),!1)}}function n(){c.currentCell===e&&(c.cancelEdit(),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(e))}function s(e){d=e}var r,a,l,c=this,u=!0,d=function(){},h=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":u=e.column.modules.edit.check(e.getComponent());break;case"boolean":u=e.column.modules.edit.check}if(u||o){if(c.cancelEdit(),c.currentCell=e,this.focusScrollAdjust(e),a=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,a)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,a),c.table.options.cellEditing.call(this.table,a),l="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(a):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(c,a,s,i,n,l)))return h.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),h.blur(),!1;for(h.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(r),d();for(var p=h.children,m=0;m<p.length;m++)p[m].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,h.blur(),!1},E.prototype.maskInput=function(e,t){function o(t){var a=i[t];void 0!==a&&a!==r&&a!==n&&a!==s&&(e.value=e.value+""+a,o(t+1))}var i=t.mask,n=void 0!==t.maskLetterChar?t.maskLetterChar:"A",s=void 0!==t.maskNumberChar?t.maskNumberChar:"9",r=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*",a=!1;e.addEventListener("keydown",function(t){var o=e.value.length,l=t.key;if(t.keyCode>46){if(o>=i.length)return t.preventDefault(),t.stopPropagation(),a=!1,!1;switch(i[o]){case n:if(l.toUpperCase()==l.toLowerCase())return t.preventDefault(),t.stopPropagation(),a=!1,!1;break;case s:if(isNaN(l))return t.preventDefault(),t.stopPropagation(),a=!1,!1;break;case r:break;default:if(l!==i[o])return t.preventDefault(),t.stopPropagation(),a=!1,!1}a=!0}}),e.addEventListener("keyup",function(i){i.keyCode>46&&t.maskAutoFill&&o(e.value.length)}),e.placeholder||(e.placeholder=i),t.maskAutoFill&&o(e.value.length)},E.prototype.getEditedCells=function(){var e=[];return this.editedCells.forEach(function(t){e.push(t.getComponent())}),e},E.prototype.clearEdited=function(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.validate.invalid=!1,(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1))},E.prototype.editors={input:function(e,t,o,i,n){function s(e){(null===r||void 0===r)&&""!==a.value||a.value!==r?o(a.value)&&(r=a.value):i()}var r=e.getValue(),a=document.createElement("input");if(a.setAttribute("type",n.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=void 0!==r?r:"",t(function(){a.focus({preventScroll:!0}),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s(e);break;case 27:i()}}),n.mask&&this.table.modules.edit.maskInput(a,n),a},textarea:function(e,t,o,i,n){function s(t){(null===r||void 0===r)&&""!==c.value||c.value!==r?(o(c.value)&&(r=c.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):i()}var r=e.getValue(),a=n.verticalNavigation||"hybrid",l=String(null!==r&&void 0!==r?r:""),c=(l.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),u=0;if(c.style.display="block",c.style.padding="2px",c.style.height="100%",c.style.width="100%",c.style.boxSizing="border-box",c.style.whiteSpace="pre-wrap",c.style.resize="none",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),c.setAttribute(d,c.getAttribute(d)+n.elementAttributes["+"+d])):c.setAttribute(d,n.elementAttributes[d]);return c.value=l,t(function(){c.focus({preventScroll:!0}),c.style.height="100%"}),c.addEventListener("change",s),c.addEventListener("blur",s),c.addEventListener("keyup",function(){c.style.height="";var t=c.scrollHeight;c.style.height=t+"px",t!=u&&(u=t,e.getRow().normalizeHeight())}),c.addEventListener("keydown",function(e){switch(e.keyCode){case 27:i();break;case 38:("editor"==a||"hybrid"==a&&c.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==a||"hybrid"==a&&c.selectionStart!==c.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation())}}),n.mask&&this.table.modules.edit.maskInput(c,n),c},number:function(e,t,o,i,n){function s(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!==r?o(e)&&(r=e):i()}var r=e.getValue(),a=n.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==n.max&&l.setAttribute("max",n.max),void 0!==n.min&&l.setAttribute("min",n.min),void 0!==n.step&&l.setAttribute("step",n.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var c in n.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+n.elementAttributes["+"+c])):l.setAttribute(c,n.elementAttributes[c]);l.value=r;var u=function(e){s()};return t(function(){l.removeEventListener("blur",u),l.focus({preventScroll:!0}),l.style.height="100%",l.addEventListener("blur",u)}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s();break;case 27:i();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}}),n.mask&&this.table.modules.edit.maskInput(l,n),l},range:function(e,t,o,i,n){function s(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=r?o(e)&&(r=e):i()}var r=e.getValue(),a=document.createElement("input");if(a.setAttribute("type","range"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=r,t(function(){a.focus({preventScroll:!0}),a.style.height="100%"}),a.addEventListener("blur",function(e){s()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s();break;case 27:i()}}),a},select:function(e,t,o,i,n){function s(t){var o,i={},s=w.table.getData();return o=t?w.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),o?(s.forEach(function(e){var t=o.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(i[t]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create select lookup list:",t),i}function r(t,o){function i(e){var e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return o.indexOf(e.value)>-1&&c(e),n.push(e),s.push(e),e}var n=[],s=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1},s.push(t),e.options.forEach(function(e){i(e)})):i(e):(t={label:e,value:e,element:!1},o.indexOf(t.value)>-1&&c(t),n.push(t),s.push(t))});else for(var r in t){var l={label:t[r],value:r,element:!1};o.indexOf(l.value)>-1&&c(l),n.push(l),s.push(l)}D=n,S=s,a()}function a(){for(;L.firstChild;)L.removeChild(L.firstChild);S.forEach(function(t){var o=t.element;if(!o){if(o=document.createElement("div"),t.label=n.listItemFormatter?n.listItemFormatter(t.value,t.label,e,o,t.itemParams):t.label,t.group?(o.classList.add("tabulator-edit-select-list-group"),o.tabIndex=0,o.innerHTML=""===t.label?"&nbsp;":t.label):(o.classList.add("tabulator-edit-select-list-item"),o.tabIndex=0,o.innerHTML=""===t.label?"&nbsp;":t.label,o.addEventListener("click",function(){T?(h(t),M.focus()):p(t)}),H.indexOf(t)>-1&&o.classList.add("active")),t.elementAttributes&&"object"==_typeof(t.elementAttributes))for(var i in t.elementAttributes)"+"==i.charAt(0)?(i=i.slice(1),o.setAttribute(i,M.getAttribute(i)+t.elementAttributes["+"+i])):o.setAttribute(i,t.elementAttributes[i]);o.addEventListener("mousedown",function(){z=!1,setTimeout(function(){z=!0},10)}),t.element=o}L.appendChild(o)})}function l(e,t){!T&&k&&k.element&&k.element.classList.remove("active"),k&&k.element&&k.element.classList.remove("focused"),k=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active"))}function c(e){-1==H.indexOf(e)&&(H.push(e),l(e,!0)),f()}function u(e){var t=H[e];e>-1&&(H.splice(e,1),t.element&&t.element.classList.remove("active"))}function h(e){e||(e=k);var t=H.indexOf(e);t>-1?u(t):(!0!==T&&H.length>=T&&u(0),c(e)),f()}function p(e){v(),e||(e=k),e&&o(e.value)}function m(){v();var e=[];H.forEach(function(t){e.push(t.value)}),o(e)}function f(){var e=[];H.forEach(function(t){e.push(t.label)}),M.value=e.join(", ")}function g(){v(),i()}function b(){if(!L.parentNode){!0===n.values?r(s(),R):"string"==typeof n.values?r(s(n.values),R):r(n.values||[],R);var e=d.prototype.helpers.elOffset(E);L.style.minWidth=E.offsetWidth+"px",L.style.top=e.top+E.offsetHeight+"px",L.style.left=e.left+"px",L.addEventListener("mousedown",function(e){z=!1,setTimeout(function(){z=!0},10)}),document.body.appendChild(L)}}function v(){L.parentNode&&L.parentNode.removeChild(L),y()}function y(){w.table.rowManager.element.removeEventListener("scroll",g)}var w=this,E=e.getElement(),C=e.getValue(),x=n.verticalNavigation||"editor",R=void 0!==C||null===C?C:void 0!==n.defaultValue?n.defaultValue:[],M=document.createElement("input"),L=document.createElement("div"),T=n.multiselect,D=[],k={},S=[],H=[],z=!0;if(this.table.rowManager.element.addEventListener("scroll",g),(Array.isArray(n)||!Array.isArray(n)&&"object"===(void 0===n?"undefined":_typeof(n))&&!n.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),n={values:n}),M.setAttribute("type","text"),M.style.padding="4px",M.style.width="100%",M.style.boxSizing="border-box",M.style.cursor="default",M.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var A in n.elementAttributes)"+"==A.charAt(0)?(A=A.slice(1),M.setAttribute(A,M.getAttribute(A)+n.elementAttributes["+"+A])):M.setAttribute(A,n.elementAttributes[A]);return M.value=void 0!==C||null===C?C:"",M.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=D.indexOf(k),("editor"==x||"hybrid"==x&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&l(D[t-1],!T));break;case 40:t=D.indexOf(k),("editor"==x||"hybrid"==x&&t<D.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<D.length-1&&(-1==t?l(D[0],!T):l(D[t+1],!T)));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:T?h():p();break;case 27:g()}}),M.addEventListener("blur",function(e){z&&(T?m():g())}),M.addEventListener("focus",function(e){b()}),L=document.createElement("div"),L.classList.add("tabulator-edit-select-list"),t(function(){M.style.height="100%",M.focus({preventScroll:!0})}),M},autocomplete:function(e,t,o,i,n){function s(){!0===n.values?S=r():"string"==typeof n.values&&(S=r(n.values))}function r(t){var o,i={},s=w.table.getData();return o=t?w.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),o?(s.forEach(function(e){var t=o.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(i[t]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create autocomplete lookup list:",t),i}function a(e,t){var o,i,s=[];o=S||(n.values||[]),n.searchFunc?(s=n.searchFunc(e,o),s instanceof Promise?(l(void 0!==n.searchingPlaceholder?n.searchingPlaceholder:"Searching..."),s.then(function(e){h(c(e),t)}).catch(function(e){console.err("error in autocomplete search promise:",e)})):h(c(s),t)):(i=c(o),""===e?n.showListOnEmpty&&(s=i):i.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&s.push(t)}),h(s,t))}function l(e){var t=document.createElement("div");u(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,L.appendChild(t))}function c(e){var t=[];if(Array.isArray(e))e.forEach(function(e){var o={};"object"===(void 0===e?"undefined":_typeof(e))?(o.title=n.listItemFormatter?n.listItemFormatter(e.value,e.label):e.label,o.value=e.value):(o.title=n.listItemFormatter?n.listItemFormatter(e,e):e,o.value=e),t.push(o)});else for(var o in e){var i={title:n.listItemFormatter?n.listItemFormatter(o,e[o]):e[o],value:o};t.push(i)}return t}function u(){for(;L.firstChild;)L.removeChild(L.firstChild)}function h(e,t){e.length?p(e,t):n.emptyPlaceholder&&l(n.emptyPlaceholder)}function p(e,t){var o=!1;u(),T=e,T.forEach(function(e){var i=e.element;i||(i=document.createElement("div"),i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=e.title,i.addEventListener("click",function(t){g(e),m()}),i.addEventListener("mousedown",function(e){k=!1,setTimeout(function(){k=!0},10)}),e.element=i,t&&e.value==C&&(M.value=e.title,e.element.classList.add("active"),o=!0),e===D&&(e.element.classList.add("active"),o=!0)),L.appendChild(i)}),o||g(!1)}function m(){b(),D?C!==D.value?(C=D.value,M.value=D.title,o(D.value)):i():n.freetext?(C=M.value,o(M.value)):n.allowEmpty&&""===M.value?(C=M.value,o(M.value)):i()}function f(){if(!L.parentNode){for(;L.firstChild;)L.removeChild(L.firstChild);var e=d.prototype.helpers.elOffset(E);L.style.minWidth=E.offsetWidth+"px",L.style.top=e.top+E.offsetHeight+"px",L.style.left=e.left+"px",document.body.appendChild(L)}}function g(e,t){D&&D.element&&D.element.classList.remove("active"),D=e,e&&e.element&&e.element.classList.add("active")}function b(){L.parentNode&&L.parentNode.removeChild(L),y()}function v(){b(),i()}function y(){w.table.rowManager.element.removeEventListener("scroll",v)}var w=this,E=e.getElement(),C=e.getValue(),x=n.verticalNavigation||"editor",R=void 0!==C||null===C?C:void 0!==n.defaultValue?n.defaultValue:"",M=document.createElement("input"),L=document.createElement("div"),T=[],D=!1,k=!0,S=!1;if(this.table.rowManager.element.addEventListener("scroll",v),M.setAttribute("type","search"),M.style.padding="4px",M.style.width="100%",M.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var H in n.elementAttributes)"+"==H.charAt(0)?(H=H.slice(1),M.setAttribute(H,M.getAttribute(H)+n.elementAttributes["+"+H])):M.setAttribute(H,n.elementAttributes[H]);return L.classList.add("tabulator-edit-select-list"),L.addEventListener("mousedown",function(e){k=!1,setTimeout(function(){k=!0},10)}),M.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=T.indexOf(D),("editor"==x||"hybrid"==x&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),g(t>0?T[t-1]:!1));break;case 40:t=T.indexOf(D),("editor"==x||"hybrid"==x&&t<T.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<T.length-1&&g(-1==t?T[0]:T[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation();break;case 13:m();break;case 27:v();break;case 36:case 35:e.stopImmediatePropagation()}}),M.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:a(M.value)}}),M.addEventListener("search",function(e){a(M.value)}),M.addEventListener("blur",function(e){k&&m()}),M.addEventListener("focus",function(e){var t=R;s(),f(),M.value=t,a(t,!0)}),t(function(){M.style.height="100%",M.focus({preventScroll:!0})}),n.mask&&this.table.modules.edit.maskInput(M,n),M},star:function(e,t,o,i,n){function s(e){h.forEach(function(t,o){o<e?("ie"==a.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==a.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){c=e,s(e)}var a=this,l=e.getElement(),c=e.getValue(),u=l.getElementsByTagName("svg").length||5,d=l.getElementsByTagName("svg")[0]?l.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],p=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.style.whiteSpace="nowrap",l.style.overflow="hidden",l.style.textOverflow="ellipsis",p.style.verticalAlign="middle",p.style.display="inline-block",p.style.padding="4px",m.setAttribute("width",d),m.setAttribute("height",d),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),p.setAttribute(f,p.getAttribute(f)+n.elementAttributes["+"+f])):p.setAttribute(f,n.elementAttributes[f]);for(var g=1;g<=u;g++)!function(e){var t=document.createElement("span"),i=m.cloneNode(!0);h.push(i),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),s(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e),l.blur()}),t.appendChild(i),p.appendChild(t)}(g);return c=Math.min(parseInt(c),u),s(c),p.addEventListener("mousemove",function(e){s(0)}),p.addEventListener("click",function(e){o(0)}),l.addEventListener("blur",function(e){i()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(c+1);break;case 37:r(c-1);break;case 13:o(c);break;case 27:i()}}),p},progress:function(e,t,o,i,n){function s(){var e=d*Math.round(m.offsetWidth/(l.clientWidth/100))+u;o(e),l.setAttribute("aria-valuenow",e),l.setAttribute("aria-label",h)}var r,a,l=e.getElement(),c=void 0===n.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:n.max,u=void 0===n.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:n.min,d=(c-u)/100,h=e.getValue()||0,p=document.createElement("div"),m=document.createElement("div");if(p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.classList.add("tabulator-progress-handle"),m.style.display="inline-block",
+m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),m.setAttribute(f,m.getAttribute(f)+n.elementAttributes["+"+f])):m.setAttribute(f,n.elementAttributes[f]);return l.style.padding="4px 4px",h=Math.min(parseFloat(h),c),h=Math.max(parseFloat(h),u),h=Math.round((h-u)/d),m.style.width=h+"%",l.setAttribute("aria-valuemin",u),l.setAttribute("aria-valuemax",c),m.appendChild(p),p.addEventListener("mousedown",function(e){r=e.screenX,a=m.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),l.addEventListener("mousemove",function(e){r&&(m.style.width=a+e.screenX-r+"px")}),l.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,a=!1,s())}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:e.preventDefault(),m.style.width=m.clientWidth+l.clientWidth/100+"px";break;case 37:e.preventDefault(),m.style.width=m.clientWidth-l.clientWidth/100+"px";break;case 9:case 13:s();break;case 27:i()}}),l.addEventListener("blur",function(){i()}),m},tickCross:function(e,t,o,i,n){function s(e){return l?e?u?c:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,c):(u=!1,a.checked):a.checked}var r=e.getValue(),a=document.createElement("input"),l=n.tristate,c=void 0===n.indeterminateValue?null:n.indeterminateValue,u=!1;if(a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),a.setAttribute(d,a.getAttribute(d)+n.elementAttributes["+"+d])):a.setAttribute(d,n.elementAttributes[d]);return a.value=r,!l||void 0!==r&&r!==c&&""!==r||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){a.focus({preventScroll:!0})}),a.checked=!0===r||"true"===r||"True"===r||1===r,a.addEventListener("change",function(e){o(s())}),a.addEventListener("blur",function(e){o(s(!0))}),a.addEventListener("keydown",function(e){13==e.keyCode&&o(s()),27==e.keyCode&&i()}),a}},d.prototype.registerModule("edit",E);var C=function(e,t,o,i){this.type=e,this.columns=t,this.component=o||!1,this.indent=i||0},x=function(e,t,o,i,n){this.value=e,this.component=t||!1,this.width=o,this.height=i,this.depth=n},R=function(e){this.table=e,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};R.prototype.generateExportList=function(e,t,o,i){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=i;var n=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],s=this.bodyToExportRows(this.rowLookup(o));return n.concat(s)},R.prototype.genereateTable=function(e,t,o,i){var n=this.generateExportList(e,t,o,i);return this.genereateTableElement(n)},R.prototype.rowLookup=function(e){var t=this,o=[];if("function"==typeof e)e.call(this.table).forEach(function(e){(e=t.table.rowManager.findRow(e))&&o.push(e)});else switch(e){case!0:case"visible":o=this.table.rowManager.getVisibleRows(!0);break;case"all":o=this.table.rowManager.rows;break;case"selected":o=this.table.modules.selectRow.selectedRows;break;case"active":default:o=this.table.rowManager.getDisplayRows()}return Object.assign([],o)},R.prototype.generateColumnGroupHeaders=function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var i=e.processColumnGroup(o);i&&t.push(i)}),t},R.prototype.processColumnGroup=function(e){var t=this,o=e.columns,i=0,n=e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,s={title:n,column:e,depth:1};if(o.length){if(s.subGroups=[],s.width=0,o.forEach(function(e){var o=t.processColumnGroup(e);o&&(s.width+=o.width,s.subGroups.push(o),o.depth>i&&(i=o.depth))}),s.depth+=i,!s.width)return!1}else{if(!this.columnVisCheck(e))return!1;s.width=1}return s},R.prototype.columnVisCheck=function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])},R.prototype.headersToExportRows=function(e){function t(e,n){var s=i-n;if(void 0===o[n]&&(o[n]=[]),e.height=e.subGroups?1:s-e.depth+1,o[n].push(e),e.height>1)for(var r=1;r<e.height;r++)void 0===o[n+r]&&(o[n+r]=[]),o[n+r].push(!1);if(e.width>1)for(var a=1;a<e.width;a++)o[n].push(!1);e.subGroups&&e.subGroups.forEach(function(e){t(e,n+1)})}var o=[],i=0,n=[];return e.forEach(function(e){e.depth>i&&(i=e.depth)}),e.forEach(function(e){t(e,0)}),o.forEach(function(e){var t=[];e.forEach(function(e){e?t.push(new x(e.title,e.column.getComponent(),e.width,e.height,e.depth)):t.push(null)}),n.push(new C("header",t))}),n},R.prototype.bodyToExportRows=function(e){var t=this,o=[],i=[];return this.table.columnManager.columnsByIndex.forEach(function(e){t.columnVisCheck(e)&&o.push(e.getComponent())}),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),e=e.filter(function(e){switch(e.type){case"group":return!1!==t.config.rowGroups;case"calc":return!1!==t.config.columnCalcs;case"row":return!(t.table.options.dataTree&&!1===t.config.dataTree&&e.modules.dataTree.parent)}return!0}),e.forEach(function(e,n){var s=e.getData(t.colVisProp),r=[],a=0;switch(e.type){case"group":a=e.level,r.push(new x(e.key,e.getComponent(),o.length,1));break;case"calc":case"row":o.forEach(function(e){r.push(new x(e._column.getFieldValue(s),e,1,1))}),t.table.options.dataTree&&!1!==t.config.dataTree&&(a=e.modules.dataTree.index)}i.push(new C(e.type,r,e.getComponent(),a))}),i},R.prototype.genereateTableElement=function(e){var t=this,o=document.createElement("table"),i=document.createElement("thead"),n=document.createElement("tbody"),s=this.lookupTableStyles(),r=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],a={};return a.rowFormatter=null!==r?r:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(a.treeElementField=this.table.modules.dataTree.elementField),a.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],a.groupHeader&&!Array.isArray(a.groupHeader)&&(a.groupHeader=[a.groupHeader]),o.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),i,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(function(e,o){switch(e.type){case"header":i.appendChild(t.genereateHeaderElement(e,a,s));break;case"group":n.appendChild(t.genereateGroupElement(e,a,s));break;case"calc":n.appendChild(t.genereateCalcElement(e,a,s));break;case"row":var r=t.genereateRowElement(e,a,s);t.mapElementStyles(o%2&&s.evenRow?s.evenRow:s.oddRow,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n.appendChild(r)}}),i.innerHTML&&o.appendChild(i),o.appendChild(n),this.mapElementStyles(this.table.element,o,["border-top","border-left","border-right","border-bottom"]),o},R.prototype.lookupTableStyles=function(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e},R.prototype.genereateHeaderElement=function(e,t,o){var i=this,n=document.createElement("tr");return e.columns.forEach(function(e){if(e){var t=document.createElement("th"),o=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,i.cloneTableStyle&&(t.style.boxSizing="border-box"),o.forEach(function(e){t.classList.add(e)}),i.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),i.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?i.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&i.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),n.appendChild(t)}}),n},R.prototype.genereateGroupElement=function(e,t,o){var i=document.createElement("tr"),n=document.createElement("td"),s=e.columns[0];return i.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?s.value=t.groupHeader[e.indent](s.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1===t.groupHeader?s.value=s.value:s.value=e.component._group.generator(s.value,e.component._group.getRowCount(),e.component._group.getData(),e.component),n.colSpan=s.width,n.innerHTML=s.value,i.classList.add("tabulator-print-table-group"),i.classList.add("tabulator-group-level-"+e.indent),s.component.getVisibility()&&i.classList.add("tabulator-group-visible"),this.mapElementStyles(o.firstGroup,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(o.firstGroup,n,["padding-top","padding-left","padding-right","padding-bottom"]),i.appendChild(n),i},R.prototype.genereateCalcElement=function(e,t,o){var i=this.genereateRowElement(e,t,o);return i.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(o.calcRow,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),i},R.prototype.genereateRowElement=function(e,t,o){var n=this,s=document.createElement("tr");return s.classList.add("tabulator-print-table-row"),e.columns.forEach(function(r){if(r){var a=document.createElement("td"),l=r.component._column,c=r.value,u={modules:{},getValue:function(){return c},getField:function(){return l.definition.field},getElement:function(){return a},getColumn:function(){return l.getComponent()},getData:function(){return rowData},getRow:function(){return e.getComponent()},getComponent:function(){return u},column:l};if((l.definition.cssClass?l.definition.cssClass.split(" "):[]).forEach(function(e){a.classList.add(e)}),n.table.modExists("format")&&!1!==n.config.formatCells)c=n.table.modules.format.formatExportValue(u,n.colVisProp);else switch(void 0===c?"undefined":_typeof(c)){case"object":c=JSON.stringify(c);break;case"undefined":case"null":c="";break;default:c=c}if(c instanceof Node?a.appendChild(c):a.innerHTML=c,o.firstCell&&(n.mapElementStyles(o.firstCell,a,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),l.definition.align&&(a.style.textAlign=l.definition.align)),n.table.options.dataTree&&!1!==n.config.dataTree&&(t.treeElementField&&t.treeElementField==l.field||!t.treeElementField&&0==i)&&(e.component._row.modules.dataTree.controlEl&&a.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),a.firstChild),e.component._row.modules.dataTree.branchEl&&a.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),a.firstChild)),s.appendChild(a),u.modules.format&&u.modules.format.renderedCallback&&u.modules.format.renderedCallback(),t.rowFormatter&&!1!==n.config.formatCells){var d=e.getComponent();d.getElement=function(){return s},t.rowFormatter(d)}}}),s},R.prototype.genereateHTMLTable=function(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML},R.prototype.getHtml=function(e,t,o,i){var n=this.generateExportList(o||this.table.options.htmlOutputConfig,t,e,i||"htmlOutput");return this.genereateHTMLTable(n)},R.prototype.mapElementStyles=function(e,t,o){if(this.cloneTableStyle&&e&&t){var i={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(e);o.forEach(function(e){t.style[i[e]]=n.getPropertyValue(e)})}}},d.prototype.registerModule("export",R);var M=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};M.prototype.initializeColumn=function(e,t){function o(t){var o,r="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",a="",l="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete n.headerFilters[s];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":n.filters[e.definition.headerFilterFunc]?(a=e.definition.headerFilterFunc,o=function(o){var i=e.definition.headerFilterFuncParams||{},s=e.getFieldValue(o);return i="function"==typeof i?i(t,s,o):i,n.filters[e.definition.headerFilterFunc](t,s,o,i)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":o=function(o){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(o);return i="function"==typeof i?i(t,n,o):i,e.definition.headerFilterFunc(t,n,o,i)},a=o}if(!o)switch(r){case"partial":o=function(o){var i=e.getFieldValue(o);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},a="like";break;default:o=function(o){return e.getFieldValue(o)==t},a="="}n.headerFilters[s]={value:t,func:o,type:a,params:i||{}}}l=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==l&&(n.prevHeaderFilterChangeCheck=l,n.changed=!0,n.table.rowManager.filterRefresh())}return!0}var i,n=this,s=e.getField();e.modules.filter={success:o,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},M.prototype.generateHeaderFilterElement=function(e,t,o){function i(){}var n,s,r,a,l,c,u,d=this,h=this,p=e.modules.filter.success,m=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),m){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":h.table.modules.edit.editors[e.definition.headerFilter]?(s=h.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":s=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?s=e.modules.edit.editor:e.definition.formatter&&h.table.modules.edit.editors[e.definition.formatter]?(s=h.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):s=h.table.modules.edit.editors.input}if(s){if(a={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(h.table):u,!(r=s.call(this.table.modules.edit,a,function(){},p,i,u)))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor should return an instance of Node, the editor returned:",r);m?h.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){r.setAttribute("placeholder",void 0!==e&&e?e:h.table.modules.localize.getText("headerFilters|default"))}):h.table.modules.localize.bind("headerFilters|default",function(e){r.setAttribute("placeholder",void 0!==h.column.definition.headerFilterPlaceholder&&h.column.definition.headerFilterPlaceholder?h.column.definition.headerFilterPlaceholder:e)}),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("focus",function(e){var t=d.table.columnManager.element.scrollLeft;t!==d.table.rowManager.element.scrollLeft&&(d.table.rowManager.scrollHorizontal(t),d.table.columnManager.scrollHorizontal(t))}),l=!1,c=function(e){l&&clearTimeout(l),l=setTimeout(function(){p(r.value)},h.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=r,e.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=r.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(r.addEventListener("keyup",c),r.addEventListener("search",c),"number"==e.modules.filter.attrType&&r.addEventListener("change",function(e){p(r.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||r.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(r),e.contentElement.appendChild(n),o||h.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},M.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},M.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},M.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},M.prototype.getHeaderFilterValue=function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())},M.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},M.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},M.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},M.prototype.setFilter=function(e,t,o,i){var n=this;n.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:o,params:i}]),n.addFilter(e)},M.prototype.addFilter=function(e,t,o,i){var n=this;Array.isArray(e)||(e=[{field:e,type:t,value:o,params:i}]),e.forEach(function(e){(e=n.findFilter(e))&&(n.filterList.push(e),n.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},M.prototype.findFilter=function(e){var t,o=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:o.filters[e.type]?(t=o.table.columnManager.getColumnByField(e.field),i=t?function(i){return o.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return o.filters[e.type](e.value,t[e.field],t,e.params||{})}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},M.prototype.findSubFilters=function(e){var t=this,o=[];return e.forEach(function(e){(e=t.findFilter(e))&&o.push(e)}),!!o.length&&o},M.prototype.getFilters=function(e,t){var o=[];return e&&(o=this.getHeaderFilters()),t&&o.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),o=o.concat(this.filtersToArray(this.filterList,t))},M.prototype.filtersToArray=function(e,t){var o=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(o.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},M.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},M.prototype.removeFilter=function(e,t,o){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:o}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},M.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},M.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},e.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},M.prototype.search=function(e,t,o,i){var n=this,s=[],r=[];return Array.isArray(t)||(t=[{field:t,type:o,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&r.push(e)}),this.table.rowManager.rows.forEach(function(t){var o=!0;r.forEach(function(e){n.filterRecurse(e,t.getData())||(o=!1)}),o&&s.push("data"===e?t.getData("data"):t.getComponent())}),s},M.prototype.filter=function(e,t){var o=this,i=[],n=[];return o.table.options.dataFiltering&&o.table.options.dataFiltering.call(o.table,o.getFilters()),o.table.options.ajaxFiltering||!o.filterList.length&&!Object.keys(o.headerFilters).length?i=e.slice(0):e.forEach(function(e){o.filterRow(e)&&i.push(e)}),o.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),o.table.options.dataFiltered.call(o.table,o.getFilters(),n)),i},M.prototype.filterRow=function(e,t){var o=this,i=!0,n=e.getData();o.filterList.forEach(function(e){o.filterRecurse(e,n)||(i=!1)});for(var s in o.headerFilters)o.headerFilters[s].func(n)||(i=!1);return i},M.prototype.filterRecurse=function(e,t){var o=this,i=!1;return Array.isArray(e)?e.forEach(function(e){o.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},M.prototype.filters={"=":function(e,t,o,i){return t==e},"<":function(e,t,o,i){return t<e},"<=":function(e,t,o,i){return t<=e},">":function(e,t,o,i){return t>e},">=":function(e,t,o,i){return t>=e},"!=":function(e,t,o,i){return t!=e},regex:function(e,t,o,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,o,i){var n=e.toLowerCase().split(void 0===i.separator?" ":i.separator),s=String(null===t||void 0===t?"":t).toLowerCase(),r=[];return n.forEach(function(e){s.includes(e)&&r.push(!0)}),i.matchAll?r.length===n.length:!!r.length},starts:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,o,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},d.prototype.registerModule("filter",M);var L=function(e){this.table=e};L.prototype.initializeColumn=function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))},L.prototype.lookupFormatter=function(e,t){var o={params:e.definition["formatter"+t+"Params"]||{}},i=e.definition["formatter"+t];switch(void 0===i?"undefined":_typeof(i)){case"string":"tick"===i&&(i="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[i]?o.formatter=this.formatters[i]:(console.warn("Formatter Error - No such formatter found: ",i),o.formatter=this.formatters.plaintext);break;case"function":o.formatter=i;break;default:o.formatter=this.formatters.plaintext}return o},L.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&e.modules.format.renderedCallback()},L.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t}var o=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,i,t)},L.prototype.formatExportValue=function(e,t){var o,i=e.column.modules.format[t];if(i){var n=function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t};return o="function"==typeof i.params?i.params(component):i.params,i.formatter.call(this,e.getComponent(),o,n)}return this.formatValue(e)},L.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},L.prototype.emptyToSpace=function(e){return null===e||void 0===e||""===e?"&nbsp;":e},L.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},L.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var i,n,s,r,a=parseFloat(e.getValue()),l=t.decimal||".",c=t.thousand||",",u=t.symbol||"",d=!!t.symbolAfter,h=void 0!==t.precision?t.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(i=!1!==h?a.toFixed(h):a,i=String(i).split("."),n=i[0],s=i.length>1?l+i[1]:"",r=/(\d+)(\d{3})/;r.test(n);)n=n.replace(r,"$1"+c+"$2");return d?n+s+u:u+n+s},link:function(e,t,o){var i,n=e.getValue(),s=t.urlPrefix||"",r=t.download,a=n,l=document.createElement("a");if(t.labelField&&(i=e.getData(),a=i[t.labelField]),t.label)switch(_typeof(t.label)){case"string":a=t.label;break;case"function":a=t.label(e)}if(a){if(t.urlField&&(i=e.getData(),n=i[t.urlField]),t.url)switch(_typeof(t.url)){case"string":n=t.url;break;case"function":n=t.url(e)}return l.setAttribute("href",s+n),t.target&&l.setAttribute("target",t.target),t.download&&(r="function"==typeof r?r(e):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(a)),l}return"&nbsp;"},image:function(e,t,o){var i=document.createElement("img");switch(i.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":i.style.height=t.height+"px";break;case"string":i.style.height=t.height}switch(_typeof(t.width)){case"number":i.style.width=t.width+"px";break;case"string":i.style.width=t.width}return i.addEventListener("load",function(){e.getRow().normalizeHeight()}),i},tickCross:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t.allowEmpty,r=t.allowTruthy,a=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return r&&i||!0===i||"true"===i||"True"===i||1===i||"1"===i?(n.setAttribute("aria-checked",!0),a||""):!s||"null"!==i&&""!==i&&null!==i&&void 0!==i?(n.setAttribute("aria-checked",!1),l||""):(n.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=t.outputFormat||"DD/MM/YYYY hh:mm:ss",s=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=e.getValue(),a=moment(r,i);return a.isValid()?t.timezone?a.tz(t.timezone).format(n):a.format(n):!0===s?r:"function"==typeof s?s(r):s},datetimediff:function(e,t,o){
+var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",s=void 0!==t.suffix&&t.suffix,r=void 0!==t.unit?t.unit:void 0,a=void 0!==t.humanize&&t.humanize,l=void 0!==t.date?t.date:moment(),c=e.getValue(),u=moment(c,i);return u.isValid()?a?moment.duration(u.diff(l)).humanize(s):u.diff(l,r)+(s?" "+s:""):!0===n?c:"function"==typeof n?n(c):n},lookup:function(e,t,o){var i=e.getValue();return void 0===t[i]?(console.warn("Missing display value for "+i),i):t[i]},star:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",i=i&&!isNaN(i)?parseInt(i):0,i=Math.max(0,Math.min(i,s));for(var l=1;l<=s;l++){var c=a.cloneNode(!0);c.innerHTML=l<=i?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',r.appendChild(c)}return n.style.whiteSpace="nowrap",n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.setAttribute("aria-label",i),r},traffic:function(e,t,o){var i,n,s=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],u="#666666";if(!isNaN(s)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),n=parseFloat(s)<=a?parseFloat(s):a,n=parseFloat(n)>=l?parseFloat(n):l,i=(a-l)/100,n=Math.round((n-l)/i),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(s);break;case"object":if(Array.isArray(c)){var d=100/c.length,h=Math.floor(n/d);h=Math.min(h,c.length-1),h=Math.max(h,0),u=c[h];break}}return r.style.backgroundColor=u,r}},progress:function(e,t,o){var i,n,s,r,a,c=this.sanitizeHTML(e.getValue())||0,u=e.getElement(),d=t&&t.max?t.max:100,h=t&&t.min?t.min:0,p=t&&t.legendAlign?t.legendAlign:"center";switch(n=parseFloat(c)<=d?parseFloat(c):d,n=parseFloat(n)>=h?parseFloat(n):h,i=(d-h)/100,n=Math.round((n-h)/i),_typeof(t.color)){case"string":s=t.color;break;case"function":s=t.color(c);break;case"object":if(Array.isArray(t.color)){var m=100/t.color.length,f=Math.floor(n/m);f=Math.min(f,t.color.length-1),f=Math.max(f,0),s=t.color[f];break}default:s="#2DC214"}switch(_typeof(t.legend)){case"string":r=t.legend;break;case"function":r=t.legend(c);break;case"boolean":r=c;break;default:r=!1}switch(_typeof(t.legendColor)){case"string":a=t.legendColor;break;case"function":a=t.legendColor(c);break;case"object":if(Array.isArray(t.legendColor)){var m=100/t.legendColor.length,f=Math.floor(n/m);f=Math.min(f,t.legendColor.length-1),f=Math.max(f,0),a=t.legendColor[f]}break;default:a="#000"}u.style.minWidth="30px",u.style.position="relative",u.setAttribute("aria-label",n);var g=document.createElement("div");if(g.style.display="inline-block",g.style.position="relative",g.style.width=n+"%",g.style.backgroundColor=s,g.style.height="100%",g.setAttribute("data-max",d),g.setAttribute("data-min",h),r){var b=document.createElement("div");b.style.position="absolute",b.style.top="4px",b.style.left=0,b.style.textAlign=p,b.style.width="100%",b.style.color=a,b.innerHTML=r}return o(function(){if(!(e instanceof l)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",u.appendChild(t),u=t}u.appendChild(g),r&&u.appendChild(b)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function i(e){var t=s.element;s.open=e,t&&(s.open?(n.classList.add("open"),t.style.display=""):(n.classList.remove("open"),t.style.display="none"))}var n=document.createElement("div"),s=e.getRow()._row.modules.responsiveLayout;return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",function(e){e.stopImmediatePropagation(),i(!s.open)}),i(s.open),n},rowSelection:function(e){var t=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var i=e.getRow();o.addEventListener("change",function(e){i.toggleSelect()}),o.checked=i.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(i,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},d.prototype.registerModule("format",L);var T=function(e){this.table=e,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};T.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},T.prototype.initializeColumn=function(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")},T.prototype.frozenCheck=function(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen},T.prototype.scrollHorizontal=function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){t.layout()},100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},T.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},T.prototype.layoutColumnPosition=function(e){var t=this,o=[];this.leftColumns.forEach(function(i,n){if(i.modules.frozen.margin=t._calcSpace(t.leftColumns,n)+t.table.columnManager.scrollLeft+"px",n==t.leftColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup){var s=t.getColGroupParentElement(i);o.includes(s)||(t.layoutElement(s,i),o.push(s)),i.modules.frozen.edge&&s.classList.add("tabulator-frozen-"+i.modules.frozen.position)}else t.layoutElement(i.getElement(),i);e&&i.cells.forEach(function(e){t.layoutElement(e.getElement(),i)})}),this.rightColumns.forEach(function(o,i){o.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,i+1)+"px",i==t.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup?t.layoutElement(t.getColGroupParentElement(o),o):t.layoutElement(o.getElement(),o),e&&o.cells.forEach(function(e){t.layoutElement(e.getElement(),o)})})},T.prototype.getColGroupParentElement=function(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()},T.prototype.layout=function(){var e=this;e.active&&(this.calcMargins(),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.layoutRow=function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)}),this.rightColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)})},T.prototype.layoutElement=function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))},T.prototype._calcSpace=function(e,t){for(var o=0,i=0;i<t;i++)e[i].visible&&(o+=e[i].getWidth());return o},d.prototype.registerModule("frozenColumns",T);var D=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};D.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},D.prototype.setDisplayIndex=function(e){this.displayIndex=e},D.prototype.getDisplayIndex=function(){return this.displayIndex},D.prototype.isFrozen=function(){return!!this.rows.length},D.prototype.getRows=function(e){var t=e.slice(0);return this.rows.forEach(function(e){var o=t.indexOf(e);o>-1&&t.splice(o,1)}),t},D.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},D.prototype.unfreezeRow=function(e){var t=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var o=e.getElement();o.parentNode.removeChild(o),this.table.rowManager.adjustTableSize(),this.rows.splice(t,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},D.prototype.styleRows=function(e){var t=this;this.rows.forEach(function(e,o){t.table.rowManager.styleRow(e,o)})},d.prototype.registerModule("frozenRows",D);var k=function(e){this._group=e,this.type="GroupComponent"};k.prototype.getKey=function(){return this._group.key},k.prototype.getField=function(){return this._group.field},k.prototype.getElement=function(){return this._group.element},k.prototype.getRows=function(){return this._group.getRows(!0)},k.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},k.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},k.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._group.visible},k.prototype.isVisible=function(){return this._group.visible},k.prototype.show=function(){this._group.show()},k.prototype.hide=function(){this._group.hide()},k.prototype.toggle=function(){this._group.toggleVisibility()},k.prototype._getSelf=function(){return this._group},k.prototype.getTable=function(){return this._group.groupManager.table};var S=function(e,t,o,i,n,s,r){this.groupManager=e,this.parent=t,this.key=i,this.level=o,this.field=n,this.hasSubGroups=o<e.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=r,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=r?r.visible:void 0!==e.startOpen[o]?e.startOpen[o]:e.startOpen[0],this.component=null,this.createElements(),this.addBindings(),this.createValueGroups()};S.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(e){e.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},S.prototype.createElements=function(){var e=document.createElement("div");e.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(e),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},S.prototype.createValueGroups=function(){var e=this,t=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]&&this.groupManager.allowedValues[t].forEach(function(o){e._createGroup(o,t)})},S.prototype.addBindings=function(){var e,t,o,i,n=this;n.groupManager.table.options.groupClick&&n.element.addEventListener("click",function(e){n.groupManager.table.options.groupClick.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupDblClick&&n.element.addEventListener("dblclick",function(e){n.groupManager.table.options.groupDblClick.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupContext&&n.element.addEventListener("contextmenu",function(e){n.groupManager.table.options.groupContext.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupContextMenu&&n.groupManager.table.modExists("menu")&&n.groupManager.table.modules.menu.initializeGroup.call(n.groupManager.table.modules.menu,n),n.groupManager.table.options.groupTap&&(o=!1,n.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),n.element.addEventListener("touchend",function(e){o&&n.groupManager.table.options.groupTap(e,n.getComponent()),o=!1})),n.groupManager.table.options.groupDblTap&&(e=null,n.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,n.groupManager.table.options.groupDblTap(t,n.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),n.groupManager.table.options.groupTapHold&&(t=null,n.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,n.groupManager.table.options.groupTapHold(e,n.getComponent())},1e3)},{passive:!0}),n.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),n.groupManager.table.options.groupToggleElement&&(i="arrow"==n.groupManager.table.options.groupToggleElement?n.arrowElement:n.element,i.addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),n.toggleVisibility()}))},S.prototype._createGroup=function(e,t){var o=t+"_"+e,i=new S(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[o]);this.groups[o]=i,this.groupList.push(i)},S.prototype._addRowToGroup=function(e){var t=this.level+1;if(this.hasSubGroups){var o=this.groupManager.groupIDLookups[t].func(e.getData()),i=t+"_"+o;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[i]&&this.groups[i].addRow(e):(this.groups[i]||this._createGroup(o,t),this.groups[i].addRow(e))}},S.prototype._addRow=function(e){this.rows.push(e),e.modules.group=this},S.prototype.insertRow=function(e,t,o){var i=this.conformRowData({});e.updateData(i);var n=this.rows.indexOf(t);n>-1?o?this.rows.splice(n+1,0,e):this.rows.splice(n,0,e):o?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},S.prototype.scrollHeader=function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach(function(t){t.scrollHeader(e)})},S.prototype.getRowIndex=function(e){},S.prototype.conformRowData=function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e},S.prototype.removeRow=function(e){var t=this.rows.indexOf(e),o=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(o.parentNode&&o.parentNode.removeChild(o),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},S.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],t=this.groupList.indexOf(e),t>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},S.prototype.getHeadersAndRows=function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(o){t=t.concat(o.getHeadersAndRows(e))}):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t},S.prototype.getData=function(e,t){var o=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach(function(e){o.push(e.getData(t||"data"))}),o},S.prototype.getRowCount=function(){var e=0;return this.groupList.length?this.groupList.forEach(function(t){e+=t.getRowCount()}):e=this.rows.length,e},S.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},S.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){e.detachElement()})}):this.rows.forEach(function(e){var t=e.getElement();t.parentNode.removeChild(t)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},S.prototype.show=function(){var e=this;if(e.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var t=e.getElement();this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o})}):e.rows.forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},S.prototype._visSet=function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach(function(t){e.push(t.getData())}),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))},S.prototype.getRowGroup=function(e){var t=!1;return this.groupList.length?this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}):this.rows.find(function(t){return t===e})&&(t=this),t},S.prototype.getSubGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},S.prototype.getRows=function(e){var t=[];return this.rows.forEach(function(o){t.push(e?o.getComponent():o)}),t},S.prototype.generateGroupHeaderContents=function(){var e=[];for(this.rows.forEach(function(t){e.push(t.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},S.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;e<this.element.childNodes.length;++e)this.element.childNodes[e].parentNode.removeChild(this.element.childNodes[e]);return this.generateGroupHeaderContents(),this.element},S.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},S.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},S.prototype.initialize=function(e){this.initialized&&!e||(this.normalizeHeight(),this.initialized=!0)},S.prototype.reinitialize=function(){this.initialized=!1,this.height=0,d.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},S.prototype.setHeight=function(e){this.height!=e&&(this.height=e,this.outerHeight=this.element.offsetHeight)},S.prototype.getHeight=function(){return this.outerHeight},S.prototype.getGroup=function(){return this},S.prototype.reinitializeHeight=function(){},S.prototype.calcHeight=function(){},S.prototype.setCellHeight=function(){},S.prototype.clearCellHeight=function(){},S.prototype.getComponent=function(){return this.component||(this.component=new k(this)),this.component};var H=function(e){this.table=e,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};H.prototype.initialize=function(){var e=this,t=e.table.options.groupBy,o=e.table.options.groupStartOpen,i=e.table.options.groupHeader;if(this.allowedValues=e.table.options.groupValues,Array.isArray(t)&&Array.isArray(i)&&t.length>i.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),e.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],e.table.modules.localize.bind("groups|item",function(t,o){e.headerGenerator[0]=function(e,i,n){return(void 0===e?"":e)+"<span>("+i+" "+(1===i?t:o.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(t)||t)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var n=this.table.columnManager.getRealColumns();n.forEach(function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(t)||(t=[t]),t.forEach(function(t,o){var i,n;"function"==typeof t?i=t:(n=e.table.columnManager.getColumnByField(t),i=n?function(e){return n.getFieldValue(e)}:function(e){return e[t]}),e.groupIDLookups.push({field:"function"!=typeof t&&t,func:i,values:!!e.allowedValues&&e.allowedValues[o]})}),o&&(Array.isArray(o)||(o=[o]),o.forEach(function(e){e="function"==typeof e?e:function(){return!0}}),e.startOpen=o),i&&(e.headerGenerator=Array.isArray(i)?i:[i]),this.initialized=!0},H.prototype.setDisplayIndex=function(e){this.displayIndex=e},H.prototype.getDisplayIndex=function(){return this.displayIndex},H.prototype.getRows=function(e){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(e),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):e.slice(0)},H.prototype.getGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},H.prototype.getChildGroups=function(e){var t=this,o=[];return e||(e=this),e.groupList.forEach(function(e){e.groupList.length?o=o.concat(t.getChildGroups(e)):o.push(e)}),o},H.prototype.wipe=function(){this.groupList.forEach(function(e){e.wipe()})},H.prototype.pullGroupListData=function(e){var t=this,o=[];return e.forEach(function(e){var i={};i.level=0,i.rowCount=0,i.headerContent="";var n=[];e.hasSubGroups?(n=t.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=n.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),o.push(i),o=o.concat(n)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,o.push(i),e.getRows().forEach(function(e){o.push(e.getData("data"))}))}),o},H.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},H.prototype.getRowGroup=function(e){var t=!1;return this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}),t},H.prototype.countGroups=function(){return this.groupList.length},H.prototype.generateGroups=function(e){var t=this,o=t.groups;t.groups={},t.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(e){t.createGroup(e,0,o)}),e.forEach(function(e){t.assignRowToExistingGroup(e,o)})):e.forEach(function(e){t.assignRowToGroup(e,o)})},H.prototype.createGroup=function(e,t,o){var i,n=t+"_"+e;o=o||[],i=new S(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],o[n]),this.groups[n]=i,this.groupList.push(i)},H.prototype.assignRowToExistingGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i="0_"+o;this.groups[i]&&this.groups[i].addRow(e)},H.prototype.assignRowToGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i=!this.groups["0_"+o];return i&&this.createGroup(o,0,t),this.groups["0_"+o].addRow(e),!i},H.prototype.updateGroupRows=function(e){var t=this,o=[];if(t.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows())}),e){var i=t.table.rowManager.setDisplayRows(o,this.getDisplayIndex());!0!==i&&this.setDisplayIndex(i),t.table.rowManager.refreshActiveData("group",!0,!0)}return o},H.prototype.scrollHeaders=function(e){e+="px",this.groupList.forEach(function(t){t.scrollHeader(e)})},H.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))},d.prototype.registerModule("groupRows",H);var z=function(e){this.table=e,this.history=[],this.index=-1};z.prototype.clear=function(){this.history=[],this.index=-1},z.prototype.action=function(e,t,o){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:o}),this.index++},z.prototype.getHistoryUndoSize=function(){return this.index+1},z.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},z.prototype.undo=function(){if(this.index>-1){var e=this.history[this.index];return this.undoers[e.type].call(this,e),this.index--,this.table.options.historyUndo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},z.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return this.redoers[e.type].call(this,e),this.table.options.historyRedo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},z.prototype.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){
+this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},z.prototype.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}},z.prototype._rebindRow=function(e,t){this.history.forEach(function(o){if(o.component instanceof a)o.component===e&&(o.component=t);else if(o.component instanceof c&&o.component.row===e){var i=o.component.column.getField();i&&(o.component=t.getCell(i))}})},d.prototype.registerModule("history",z);var A=function(e){this.table=e,this.fieldIndex=[],this.hasIndex=!1};A.prototype.parseTable=function(){var e=this,t=e.table.element,o=e.table.options,i=(o.columns,t.getElementsByTagName("th")),n=t.getElementsByTagName("tbody")[0],s=[];e.hasIndex=!1,e.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],e._extractOptions(t,o),i.length?e._extractHeaders(i,n):e._generateBlankHeaders(i,n);for(var r=0;r<n.length;r++){var a=n[r],l=a.getElementsByTagName("td"),c={};e.hasIndex||(c[o.index]=r);for(var u=0;u<l.length;u++){var d=l[u];void 0!==this.fieldIndex[u]&&(c[this.fieldIndex[u]]=d.innerHTML)}s.push(c)}var h=document.createElement("div"),p=t.attributes;for(var u in p)"object"==_typeof(p[u])&&h.setAttribute(p[u].name,p[u].value);t.parentNode.replaceChild(h,t),o.data=s,e.table.options.htmlImported.call(this.table),this.table.element=h},A.prototype._extractOptions=function(e,t,o){var i=e.attributes,n=o?Object.assign([],o):Object.keys(t),s={};n.forEach(function(e){s[e.toLowerCase()]=e});for(var r in i){var a,l=i[r];l&&"object"==(void 0===l?"undefined":_typeof(l))&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==s[a]&&(t[s[a]]=this._attribValue(l.value)))}},A.prototype._attribValue=function(e){return"true"===e||"false"!==e&&e},A.prototype._findCol=function(e){return this.table.options.columns.find(function(t){return t.title===e})||!1},A.prototype._extractHeaders=function(e,t){for(var o=0;o<e.length;o++){var i,s=e[o],r=!1,a=this._findCol(s.textContent);a?r=!0:a={title:s.textContent.trim()},a.field||(a.field=s.textContent.trim().toLowerCase().replace(" ","_")),i=s.getAttribute("width"),i&&!a.width&&(a.width=i),s.attributes,this._extractOptions(s,a,n.prototype.defaultOptionList),this.fieldIndex[o]=a.field,a.field==this.table.options.index&&(this.hasIndex=!0),r||this.table.options.columns.push(a)}},A.prototype._generateBlankHeaders=function(e,t){for(var o=0;o<e.length;o++){var i=e[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var s=i.getAttribute("width");s&&(n.width=s),this.table.options.columns.push(n)}},d.prototype.registerModule("htmlTableImport",A);var _=function(e){this.table=e,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};_.prototype.initialize=function(){var e=this.table.options.keybindings,t={};if(this.watchKeys={},this.pressedKeys=[],!1!==e){for(var o in this.bindings)t[o]=this.bindings[o];if(Object.keys(e).length)for(var i in e)t[i]=e[i];this.mapBindings(t),this.bindEvents()}},_.prototype.mapBindings=function(e){var t=this,o=this;for(var i in e)!function(i){t.actions[i]?e[i]&&("object"!==_typeof(e[i])&&(e[i]=[e[i]]),e[i].forEach(function(e){o.mapBinding(i,e)})):console.warn("Key Binding Error - no such action:",i)}(i)},_.prototype.mapBinding=function(e,t){var o=this,i={action:this.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach(function(e){switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=parseInt(e),i.keys.push(e),o.watchKeys[e]||(o.watchKeys[e]=[]),o.watchKeys[e].push(i)}})},_.prototype.bindEvents=function(){var e=this;this.keyupBinding=function(t){var o=t.keyCode,i=e.watchKeys[o];i&&(e.pressedKeys.push(o),i.forEach(function(o){e.checkBinding(t,o)}))},this.keydownBinding=function(t){var o=t.keyCode;if(e.watchKeys[o]){var i=e.pressedKeys.indexOf(o);i>-1&&e.pressedKeys.splice(i,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},_.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},_.prototype.checkBinding=function(e,t){var o=this,i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach(function(e){-1==o.pressedKeys.indexOf(e)&&(i=!1)}),i&&t.action.call(o,e),!0)},_.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},_.prototype.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,o=t.scrollTop-t.height;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o>=0?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,o=t.scrollTop+t.height,i=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o<=i?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().prev())},navNext:function(e){var t,o=!1,i=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(o=this.table.modules.edit.currentCell)&&(e.preventDefault(),t=o.nav(),t.next()||i&&(o.getElement().firstChild.blur(),i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(o.row.getComponent())):this.table.addRow(Object.assign({},i)),i.then(function(){setTimeout(function(){t.next()})})))},navLeft:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().left())},navRight:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().right())},navUp:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().up())},navDown:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().down())},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},d.prototype.registerModule("keybindings",_);var P=function(e){this.table=e,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1};P.prototype.initializeColumnHeader=function(e){var t,o=this;e.definition.headerContextMenu&&e.getElement().addEventListener("contextmenu",function(t){var i="function"==typeof e.definition.headerContextMenu?e.definition.headerContextMenu(e.getComponent()):e.definition.headerContextMenu;t.preventDefault(),o.loadMenu(t,e,i)}),e.definition.headerMenu&&(t=document.createElement("span"),t.classList.add("tabulator-header-menu-button"),t.innerHTML="&vellip;",t.addEventListener("click",function(t){var i="function"==typeof e.definition.headerMenu?e.definition.headerMenu(e.getComponent()):e.definition.headerMenu;t.stopPropagation(),t.preventDefault(),o.loadMenu(t,e,i)}),e.titleElement.insertBefore(t,e.titleElement.firstChild))},P.prototype.initializeCell=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof e.column.definition.contextMenu?e.column.definition.contextMenu(e.getComponent()):e.column.definition.contextMenu;o.stopImmediatePropagation(),t.loadMenu(o,e,i)})},P.prototype.initializeRow=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof t.table.options.rowContextMenu?t.table.options.rowContextMenu(e.getComponent()):t.table.options.rowContextMenu;t.loadMenu(o,e,i)})},P.prototype.initializeGroup=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof t.table.options.groupContextMenu?t.table.options.groupContextMenu(e.getComponent()):t.table.options.groupContextMenu;t.loadMenu(o,e,i)})},P.prototype.loadMenu=function(e,t,o){var i=this,n=Math.max(document.body.offsetHeight,window.innerHeight);if(e.preventDefault(),o&&o.length){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout(function(){i.nestedMenuBlock=!1},100);this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),o.forEach(function(e){var o=document.createElement("div"),n=e.label,s=e.disabled;e.separator?o.classList.add("tabulator-menu-separator"):(o.classList.add("tabulator-menu-item"),"function"==typeof n&&(n=n(t.getComponent())),n instanceof Node?o.appendChild(n):o.innerHTML=n,"function"==typeof s&&(s=s(t.getComponent())),s?(o.classList.add("tabulator-menu-item-disabled"),o.addEventListener("click",function(e){e.stopPropagation()})):o.addEventListener("click",function(o){i.hideMenu(),e.action(o,t.getComponent())})),i.menuEl.appendChild(o)}),this.menuEl.style.top=e.pageY+"px",this.menuEl.style.left=e.pageX+"px",document.body.addEventListener("click",this.blurEvent),this.table.rowManager.element.addEventListener("scroll",this.blurEvent),setTimeout(function(){document.body.addEventListener("contextmenu",i.blurEvent)},100),document.body.addEventListener("keydown",this.escEvent),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=n&&(this.menuEl.style.top="",this.menuEl.style.bottom=n-e.pageY+"px")}},P.prototype.isOpen=function(){return!!this.menuEl.parentNode},P.prototype.escMenu=function(e){27==e.keyCode&&this.hideMenu()},P.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.escEvent&&document.body.removeEventListener("keydown",this.escEvent),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},P.prototype.menus={},d.prototype.registerModule("menu",P);var F=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};F.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},F.prototype.initializeColumn=function(e){var t,o=this,i={};e.modules.frozen||(t=e.getElement(),i.mousemove=function(i){e.parent===o.moving.parent&&((o.touchMove?i.touches[0].pageX:i.pageX)-d.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=i},F.prototype.bindTouchEvents=function(e){var t,o,i,n,s,r,a,l=this,c=e.getElement(),u=!1;c.addEventListener("touchstart",function(c){l.checkTimeout=setTimeout(function(){l.touchMove=!0,t=e,o=e.nextColumn(),n=o?o.getWidth()/2:0,i=e.prevColumn(),s=i?i.getWidth()/2:0,r=0,a=0,u=!1,l.startMove(c,e)},l.checkPeriod)},{passive:!0}),c.addEventListener("touchmove",function(c){var d,h;l.moving&&(l.moveHover(c),u||(u=c.touches[0].pageX),d=c.touches[0].pageX-u,d>0?o&&d-r>n&&(h=o)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveColumn(h,!0)):i&&-d-a>s&&(h=i)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveColumn(h,!1)),h&&(t=h,o=h.nextColumn(),r=n,n=o?o.getWidth()/2:0,i=h.prevColumn(),a=s,s=i?i.getWidth()/2:0))},{passive:!0}),c.addEventListener("touchend",function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&l.endMove(e)})},F.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},F.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},F.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},F.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i.nextSibling)}):e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i)})},F.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},F.prototype.moveHover=function(e){var t,o=this,i=o.table.columnManager.getElement(),n=i.scrollLeft,s=(o.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(i).left+n;o.hoverElement.style.left=s-o.startX+"px",s-n<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,n-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),n+i.clientWidth-s<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(i.clientWidth,n+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},d.prototype.registerModule("moveColumn",F);var N=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1};N.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},N.prototype.initialize=function(e){this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements},N.prototype.setHandle=function(e){this.hasHandle=e},N.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-d.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(t.placeholderElement,i.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var i=e.getElement();i.previousSibling&&(i.parentNode.insertBefore(t.placeholderElement,i),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},N.prototype.initializeRow=function(e){var t,o=this,i={};i.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),i.mousemove=function(t){if(t.pageY-d.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=i},N.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},N.prototype.bindTouchEvents=function(e,t){var o,i,n,s,r,a,l,c=this,u=!1;t.addEventListener("touchstart",function(t){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=e,i=e.nextRow(),s=i?i.getHeight()/2:0,n=e.prevRow(),r=n?n.getHeight()/2:0,a=0,l=0,u=!1,c.startMove(t,e)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var d,h;c.moving&&(t.preventDefault(),c.moveHover(t),u||(u=t.touches[0].pageY),d=t.touches[0].pageY-u,d>0?i&&d-a>s&&(h=i)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement().nextSibling),c.moveRow(h,!0)):n&&-d-l>r&&(h=n)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement()),c.moveRow(h,!1)),h&&(o=h,i=h.nextRow(),a=s,s=i?i.getHeight()/2:0,n=h.prevRow(),l=r,r=n?n.getHeight()/2:0))}),t.addEventListener("touchend",function(e){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(e),c.touchMove=!1)})},N.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},N.prototype.setStartPosition=function(e,t){var o,i,n=this.touchMove?e.touches[0].pageX:e.pageX,s=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(i=o.getBoundingClientRect(),this.startX=i.left-n+window.pageXOffset,this.startY=i.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},N.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},N.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},N.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},N.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,i=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=i-this.startY+"px"},N.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},N.prototype.elementRowDrop=function(e,t,o){this.table.options.movableRowsElementDrop&&this.table.options.movableRowsElementDrop(e,t,!!o&&o.getComponent())},N.prototype.connectToTables=function(e){var t,o=this;this.connectionSelectorsTables&&(t=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach(function(e){"string"==typeof e?o.connectionElements=o.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):o.connectionElements.push(e)}),this.connectionElements.forEach(function(e){var t=function(t){o.elementRowDrop(t,e,o.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")}))},N.prototype.disconnectFromTables=function(){var e;this.connectionSelectorsTables&&(e=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach(function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent})},N.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},N.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},N.prototype.dropComplete=function(e,t,o){var i=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":i=this.senders[this.table.options.movableRowsSender];break;case"function":i=this.table.options.movableRowsSender}i?i.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},N.prototype.tableRowDrop=function(e,t){var o=!1,i=!1;switch(console.trace("drop"),e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?i=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),i?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:i})},N.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},N.prototype.senders={delete:function(e,t,o){e.delete()}},N.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},d.prototype.registerModule("moveRow",N);var B=function(e){this.table=e,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};B.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="mutator"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[r]&&(s=t.lookupMutator(e.definition[r]))&&(o=!0,i[r]={mutator:s,params:e.definition[r+"Params"]||{}})}),o&&(e.modules.mutate=i)},B.prototype.lookupMutator=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.mutators[e]?t=this.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t},B.prototype.transformRow=function(e,t,o){var i,n=this,s="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&n.table.columnManager.traverse(function(n){var r,a,l;n.modules.mutate&&(r=n.modules.mutate[s]||n.modules.mutate.mutator||!1)&&(i=n.getFieldValue(void 0!==o?o:e),"data"!=t&&void 0===i||(l=n.getComponent(),a="function"==typeof r.params?r.params(i,e,t,l):r.params,n.setFieldValue(e,r.mutator(i,e,t,a,l))))}),e},B.prototype.transformCell=function(e,t){var o=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,i={};return o?(i=Object.assign(i,e.row.getData()),e.column.setFieldValue(i,t),o.mutator(t,i,"edit",o.params,e.getComponent())):t},B.prototype.enable=function(){this.enabled=!0},B.prototype.disable=function(){this.enabled=!1},B.prototype.mutators={},d.prototype.registerModule("mutator",B);var O=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.createElements()};O.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},O.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var o=1;o<5;o++)t.push(this.size*o);this.pageSizes=t}else t=this.pageSizes
+;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var o=document.createElement("option");o.value=t,!0===t?e.table.modules.localize.bind("pagination|all",function(e){o.innerHTML=e}):o.innerHTML=t,e.pageSizeSelect.appendChild(o)}),this.pageSizeSelect.value=this.size}},O.prototype.initialize=function(e){var t,o,i,n=this;this.dataSentNames=Object.assign({},this.paginationDataSentNames),this.dataSentNames=Object.assign(this.dataSentNames,this.table.options.paginationDataSent),this.dataReceivedNames=Object.assign({},this.paginationDataReceivedNames),this.dataReceivedNames=Object.assign(this.dataReceivedNames,this.table.options.paginationDataReceived),n.table.modules.localize.bind("pagination|first",function(e){n.firstBut.innerHTML=e}),n.table.modules.localize.bind("pagination|first_title",function(e){n.firstBut.setAttribute("aria-label",e),n.firstBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|prev",function(e){n.prevBut.innerHTML=e}),n.table.modules.localize.bind("pagination|prev_title",function(e){n.prevBut.setAttribute("aria-label",e),n.prevBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|next",function(e){n.nextBut.innerHTML=e}),n.table.modules.localize.bind("pagination|next_title",function(e){n.nextBut.setAttribute("aria-label",e),n.nextBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|last",function(e){n.lastBut.innerHTML=e}),n.table.modules.localize.bind("pagination|last_title",function(e){n.lastBut.setAttribute("aria-label",e),n.lastBut.setAttribute("title",e)}),n.firstBut.addEventListener("click",function(){n.setPage(1)}),n.prevBut.addEventListener("click",function(){n.previousPage()}),n.nextBut.addEventListener("click",function(){n.nextPage().then(function(){}).catch(function(){})}),n.lastBut.addEventListener("click",function(){n.setPage(n.max)}),n.table.options.paginationElement&&(n.element=n.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),n.table.modules.localize.bind("pagination|page_size",function(e){n.pageSizeSelect.setAttribute("aria-label",e),n.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),n.element.appendChild(t),n.element.appendChild(n.pageSizeSelect),n.pageSizeSelect.addEventListener("change",function(e){n.setPageSize("true"==n.pageSizeSelect.value||n.pageSizeSelect.value),n.setPage(1).then(function(){}).catch(function(){})})),n.element.appendChild(n.firstBut),n.element.appendChild(n.prevBut),n.element.appendChild(n.pagesElement),n.element.appendChild(n.nextBut),n.element.appendChild(n.lastBut),n.table.options.paginationElement||e||n.table.footerManager.append(n.element,n),n.mode=n.table.options.pagination,n.table.options.paginationSize?n.size=n.table.options.paginationSize:(o=document.createElement("div"),o.classList.add("tabulator-row"),o.style.visibility=e,i=document.createElement("div"),i.classList.add("tabulator-cell"),i.innerHTML="Page Row Test",o.appendChild(i),n.table.rowManager.getTableElement().appendChild(o),n.size=Math.floor(n.table.rowManager.getElement().clientHeight/o.offsetHeight),n.table.rowManager.getTableElement().removeChild(o)),n.count=n.table.options.paginationButtonCount,n.generatePageSizeSelectList()},O.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},O.prototype.setDisplayIndex=function(e){this.displayIndex=e},O.prototype.getDisplayIndex=function(){return this.displayIndex},O.prototype.setMaxRows=function(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},O.prototype.reset=function(e,t){return("local"==this.mode||e)&&(this.page=1),t&&(this.initialLoad=!0),!0},O.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},O.prototype.setPage=function(e){var t=this,o=this;switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return new Promise(function(i,n){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){n()}),o.table.options.persistence&&o.table.modExists("persistence",!0)&&o.table.modules.persistence.config.page&&o.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),n())})},O.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){var n=t.table.rowManager.getDisplayRows(t.displayIndex-1),s=n.indexOf(e);if(s>-1){var r=!0===t.size?1:Math.ceil((s+1)/t.size);t.setPage(r).then(function(){o()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},O.prototype.setPageSize=function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},O.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),o=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),n=this.page<=o?Math.min(this.count,this.max):Math.min(this.page+o,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=e.max&&e.pagesElement.appendChild(e._generatePageButton(s));this.footerRedraw()},O.prototype._generatePageButton=function(e){var t=this,o=document.createElement("button");return o.classList.add("tabulator-page"),e==t.page&&o.classList.add("active"),o.setAttribute("type","button"),o.setAttribute("role","button"),t.table.modules.localize.bind("pagination|page_title",function(t){o.setAttribute("aria-label",t+" "+e),o.setAttribute("title",t+" "+e)}),o.setAttribute("data-page",e),o.textContent=e,o.addEventListener("click",function(o){t.setPage(e)}),o},O.prototype.previousPage=function(){var e=this;return new Promise(function(t,o){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){o()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),o())})},O.prototype.nextPage=function(){var e=this;return new Promise(function(t,o){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){o()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),o())})},O.prototype.getPage=function(){return this.page},O.prototype.getPageMax=function(){return this.max},O.prototype.getPageSize=function(e){return this.size},O.prototype.getMode=function(){return this.mode},O.prototype.getRows=function(e){var t,o,i;if("local"==this.mode){t=[],!0===this.size?(o=0,i=e.length-1):(o=this.size*(this.page-1),i=o+parseInt(this.size)),this._setPageButtons();for(var n=o;n<i;n++)e[n]&&t.push(e[n]);return t}return this._setPageButtons(),e.slice(0)},O.prototype.trigger=function(){var e,t=this;return new Promise(function(o,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),o();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){o()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},O.prototype._getRemotePage=function(){var e,t,o=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),e=d.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[o.dataSentNames.page]=i.page,o.size&&(t[o.dataSentNames.size]=o.size),o.table.options.ajaxSorting&&o.table.modExists("sort")){var r=i.table.modules.sort.getSort();r.forEach(function(e){delete e.column}),t[o.dataSentNames.sorters]=r}if(o.table.options.ajaxFiltering&&o.table.modExists("filter")){var a=i.table.modules.filter.getFilters(!0,!0);t[o.dataSentNames.filters]=a}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(o.progressiveLoad).then(function(e){i._parseRemoteData(e),n()}).catch(function(e){s()}),i.table.modules.ajax.setParams(e)})},O.prototype._parseRemoteData=function(e){var t,e,o,i=this;if(void 0===e[this.dataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e[this.dataReceivedNames.data]){if(this.max=parseInt(e[this.dataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page):this.table.rowManager.addRows(e[this.dataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.dataReceivedNames.data]),this.table.rowManager.setData(e,!0,this.initialLoad&&1==this.page),o=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+o&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());this.initialLoad=!1}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property")},O.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},O.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},O.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},d.prototype.registerModule("page",O);var I=function(e){this.table=e,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};I.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},I.prototype.initialize=function(){var e,t=this.table.options.persistenceMode,o=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(o||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader))},I.prototype.initializeColumn=function(e){var t,o,i=this;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),o=!0===this.config.columns?Object.keys(t):this.config.columns,o.forEach(function(e){var o=Object.getOwnPropertyDescriptor(t,e),n=t[e];o&&Object.defineProperty(t,e,{set:function(e){n=e,i.defWatcherBlock||i.save("columns"),o.set&&o.set(e)},get:function(){return o.get&&o.get(),n}})}),this.defWatcherBlock=!1)},I.prototype.load=function(e,t){var o=this.retreiveData(e);return t&&(o=o?this.mergeDefinition(t,o):t),o},I.prototype.retreiveData=function(e){return!!this.readFunc&&this.readFunc(this.id,e)},I.prototype.mergeDefinition=function(e,t){var o=this,i=[];return t=t||[],t.forEach(function(t,n){var s,r=o._findColumn(e,t);r&&(!0===o.config.columns||void 0==o.config.columns?(s=Object.keys(r),s.push("width")):s=o.config.columns,s.forEach(function(e){void 0!==t[e]&&(r[e]=t[e])}),r.columns&&(r.columns=o.mergeDefinition(r.columns,t.columns)),i.push(r))}),e.forEach(function(e,n){o._findColumn(t,e)||(i.length>n?i.splice(n,0,e):i.push(e))}),i},I.prototype._findColumn=function(e,t){var o=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(o){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},I.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)},I.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},I.prototype.getGroupConfig=function(){return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},I.prototype.getPageConfig=function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e},I.prototype.parseColumns=function(e){var t=this,o=[];return e.forEach(function(e){var i,n={},s=e.getDefinition();e.isGroup?(n.title=s.title,n.columns=t.parseColumns(e.getColumns())):(n.field=e.getField(),!0===t.config.columns||void 0==t.config.columns?(i=Object.keys(s),i.push("width")):i=t.config.columns,i.forEach(function(t){switch(t){case"width":n.width=e.getWidth();break;case"visible":n.visible=e.visible;break;default:n[t]=s[t]}})),o.push(n)}),o},I.prototype.readers={local:function(e,t){var o=localStorage.getItem(e+"-"+t);return!!o&&JSON.parse(o)},cookie:function(e,t){var o,i,n=document.cookie,s=e+"-"+t,r=n.indexOf(s+"=");return r>-1&&(n=n.substr(r),o=n.indexOf(";"),o>-1&&(n=n.substr(0,o)),i=n.replace(s+"=","")),!!i&&JSON.parse(i)}},I.prototype.writers={local:function(e,t,o){localStorage.setItem(e+"-"+t,JSON.stringify(o))},cookie:function(e,t,o){var i=new Date;i.setDate(i.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(o)+"; expires="+i.toUTCString()}},d.prototype.registerModule("persistence",I);var j=function(e){this.table=e,this.element=!1,this.manualBlock=!1};j.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},j.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},j.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},j.prototype.printFullscreen=function(e,t,o){var i,n,s=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),c=this.table.modules.export.genereateTable(void 0!==o?o:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),i="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof i?a.innerHTML=i:a.appendChild(i),this.element.appendChild(a)),this.element.appendChild(c),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),n="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof n?l.innerHTML=n:l.appendChild(n),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,c),window.print(),this.cleanup(),window.scrollTo(s,r),this.manualBlock=!1},d.prototype.registerModule("print",j);var V=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};V.prototype.watchData=function(e){var t,o=this;this.currentVersion++,t=this.currentVersion,o.unwatchData(),o.data=e,o.origFuncs.push=e.push,Object.defineProperty(o.data,"push",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!1)}),o.origFuncs.push.apply(e,arguments)}}),o.origFuncs.unshift=e.unshift,Object.defineProperty(o.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!0)}),o.origFuncs.unshift.apply(e,arguments)}}),o.origFuncs.shift=e.shift,Object.defineProperty(o.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[0]))&&i.deleteActual(),o.origFuncs.shift.call(e)}}),o.origFuncs.pop=e.pop,Object.defineProperty(o.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[o.data.length-1]))&&i.deleteActual(),o.origFuncs.pop.call(e)}}),o.origFuncs.splice=e.splice,Object.defineProperty(o.data,"splice",{enumerable:!1,configurable:!0,value:function(){var i,n=Array.from(arguments),s=n[0]<0?e.length+n[0]:n[0],r=n[1],a=!!n[2]&&n.slice(2);if(!o.blocked&&t===o.currentVersion){if(a&&(i=!!e[s]&&o.table.rowManager.getRowFromDataObject(e[s]),i?a.forEach(function(e){o.table.rowManager.addRowActual(e,!0,i,!0)}):(a=a.slice().reverse(),a.forEach(function(e){o.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(s,void 0===n[1]?n[1]:s+r);l.forEach(function(e,t){var i=o.table.rowManager.getRowFromDataObject(e);i&&i.deleteActual(t!==l.length-1)})}(a||0!==r)&&o.table.rowManager.reRenderInPosition()}return o.origFuncs.splice.apply(e,arguments)}})},V.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},V.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var o in t)this.watchKey(e,t,o);this.blocked=!1},V.prototype.watchKey=function(e,t,o){var i=this,n=Object.getOwnPropertyDescriptor(t,o),s=t[o],r=this.currentVersion;Object.defineProperty(t,o,{set:function(t){if(s=t,!i.blocked&&r===i.currentVersion){var a={};a[o]=t,e.updateData(a)}n.set&&n.set(t)},get:function(){return n.get&&n.get(),s}})},V.prototype.unwatchRow=function(e){var t=e.getData();for(var o in t)Object.defineProperty(t,o,{value:t[o]})},V.prototype.block=function(){this.blocked=!0},V.prototype.unblock=function(){this.blocked=!1},d.prototype.registerModule("reactiveData",V);var W=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};W.prototype.initializeColumn=function(e,t,o){var i=this,n=!1,s=this.table.options.resizableColumns;if("header"===e&&(n="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:n}),!0===s||s==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var a=document.createElement("div");a.className="tabulator-col-resize-handle prev",r.addEventListener("click",function(e){e.stopPropagation()});var l=function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(i.startColumn=t,i._mouseDown(e,o,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(e.stopPropagation(),o.reinitializeWidth(!0))}),a.addEventListener("click",function(e){e.stopPropagation()});var c=function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(i.startColumn=t,i._mouseDown(e,s,a)))};a.addEventListener("mousedown",c),a.addEventListener("touchstart",c,{passive:!0}),a.addEventListener("dblclick",function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),o.appendChild(r),o.appendChild(a)}},W.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},W.prototype._mouseDown=function(e,t,o){function i(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},d.prototype.registerModule("resizeColumns",W);var G=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};G.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=document.createElement("div");i.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",i.addEventListener("click",function(e){e.stopPropagation()});var s=function(o){t.startRow=e,t._mouseDown(o,e,i)};i.addEventListener("mousedown",s),i.addEventListener("touchstart",s,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var i=t.table.rowManager.prevDisplayRow(e);i&&(t.startRow=i,t._mouseDown(o,i,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(i),o.appendChild(n)},G.prototype._mouseDown=function(e,t,o){function i(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.rowResized.call(this.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},d.prototype.registerModule("resizeRows",G);var U=function(e){this.table=e,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};U.prototype.initialize=function(e){var t,o=this,i=this.table;this.tableHeight=i.element.clientHeight,this.tableWidth=i.element.clientWidth,i.element.parentNode&&(this.containerHeight=i.element.parentNode.clientHeight,this.containerWidth=i.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.tableHeight==t&&o.tableWidth==n||(o.tableHeight=t,o.tableWidth=n,i.element.parentNode&&(o.containerHeight=i.element.parentNode.clientHeight,o.containerWidth=i.element.parentNode.clientWidth),i.redraw())}}),this.observer.observe(i.element),t=window.getComputedStyle(i.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.containerHeight==t&&o.containerWidth==n||(o.containerHeight=t,o.containerWidth=n,o.tableHeight=i.element.clientHeight,o.tableWidth=i.element.clientWidth,i.redraw()),i.redraw()}}),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell)&&i.redraw()},window.addEventListener("resize",this.binding))},U.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},d.prototype.registerModule("resizeTable",U);var Y=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};Y.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,i){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=i,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,i=Array.isArray(o),n=0,o=i?o:o[Symbol.iterator]();;){var s;if(i){if(n>=o.length)break;s=o[n++]}else{if(n=o.next(),n.done)break;s=n.value}var r=s;if("responsiveCollapse"==r.definition.formatter){this.collapseHandleColumn=r;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},Y.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},Y.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},Y.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},Y.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},Y.prototype.hideColumn=function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())},Y.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},Y.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),i=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-o;if(i<0){var n=e.columns[e.index];n?(e.hideColumn(n),e.index++):t=!1}else{var s=e.columns[e.index-1]
+;s&&i>0&&i>=s.getWidth()?(e.showColumn(s),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},Y.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},Y.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},Y.prototype.generateCollapsedRowData=function(e){var t,o=this,i=e.getData(),n=[];return this.hiddenColumns.forEach(function(s){var r=s.getFieldValue(i);s.definition.title&&s.field&&(s.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return r},getData:function(){return i},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return s.getComponent()}},n.push({title:s.definition.title,value:s.modules.format.formatter.call(o.table.modules.format,t,s.modules.format.params)})):n.push({title:s.definition.title,value:r}))}),n},Y.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},d.prototype.registerModule("responsiveLayout",Y);var q=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};q.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},q.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var i=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),n=t.table.rowManager.getDisplayRowIndex(e),s=i<=n?i:n,r=i>=n?i:n,a=t.table.rowManager.getDisplayRows().slice(0),l=a.splice(s,r-s+1);o.ctrlKey||o.metaKey?(l.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(void 0,!0),!0!==t.table.options.selectable&&l.length>t.table.options.selectable&&(l=l.slice(0,t.table.options.selectable)),t.selectRows(l)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",i),document.body.addEventListener("keyup",i),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},q.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},q.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=this.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},q.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var i=this.table.rowManager.findRow(e);i?-1==this.selectedRows.indexOf(i)&&(i.modules.select||(i.modules.select={}),i.modules.select.selected=!0,i.modules.select.checkboxEl&&(i.modules.select.checkboxEl.checked=!0),i.getElement().classList.add("tabulator-selected"),this.selectedRows.push(i),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(i,!0),t||this.table.options.rowSelected.call(this.table,i.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},q.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},q.prototype.deselectRows=function(e,t){var o,i=this;if(void 0===e){o=i.selectedRows.length;for(var n=0;n<o;n++)i._deselectRow(i.selectedRows[0],!0);i._rowSelectionChanged(t)}else Array.isArray(e)?(e.forEach(function(e){i._deselectRow(e,!0)}),i._rowSelectionChanged(t)):i._deselectRow(e,t)},q.prototype._deselectRow=function(e,t){var o,i=this,n=i.table.rowManager.findRow(e);n?(o=i.selectedRows.findIndex(function(e){return e==n}))>-1&&(n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),n.getElement().classList.remove("tabulator-selected"),i.selectedRows.splice(o,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!1),t||i.table.options.rowDeselected.call(this.table,n.getComponent()),i._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},q.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},q.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},q.prototype._rowSelectionChanged=function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},q.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},q.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},q.prototype.childRowSelection=function(e,t){var o=this.table.modules.dataTree.getChildren(e);if(t)for(var i=o,n=Array.isArray(i),s=0,i=n?i:i[Symbol.iterator]();;){var r;if(n){if(s>=i.length)break;r=i[s++]}else{if(s=i.next(),s.done)break;r=s.value}var a=r;this._selectRow(a,!0)}else for(var l=o,c=Array.isArray(l),u=0,l=c?l:l[Symbol.iterator]();;){var d;if(c){if(u>=l.length)break;d=l[u++]}else{if(u=l.next(),u.done)break;d=u.value}var h=d;this._deselectRow(h,!0)}},d.prototype.registerModule("selectRow",q);var X=function(e){this.table=e,this.sortList=[],this.changed=!1};X.prototype.initializeColumn=function(e,t){var o,i,n=this,s=!1;switch(_typeof(e.definition.sorter)){case"string":n.sorters[e.definition.sorter]?s=n.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:void 0!==e.definition.headerSortTristate?e.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===e.definition.headerSort?!1!==this.table.options.headerSort:!1!==e.definition.headerSort)&&(o=e.getElement(),o.classList.add("tabulator-sortable"),i=document.createElement("div"),i.classList.add("tabulator-arrow"),t.appendChild(i),o.addEventListener("click",function(t){var o="",i=[],s=!1;if(e.modules.sort){if(e.modules.sort.tristate)o="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":o="desc";break;case"desc":o="asc";break;default:o=e.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?(i=n.getSort(),s=i.findIndex(function(t){return t.field===e.getField()}),s>-1?(i[s].dir=o,s!=i.length-1&&(s=i.splice(s,1)[0],"none"!=o&&i.push(s))):"none"!=o&&i.push({column:e,dir:o}),n.setSort(i)):"none"==o?n.clear():n.setSort(e,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},X.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},X.prototype.getSort=function(){var e=this,t=[];return e.sortList.forEach(function(e){e.column&&t.push({column:e.column.getComponent(),field:e.column.getField(),dir:e.dir})}),t},X.prototype.setSort=function(e,t){var o=this,i=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach(function(e){var t;t=o.table.columnManager.findColumn(e.column),t?(e.column=t,i.push(e),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)}),o.sortList=i,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},X.prototype.clear=function(){this.setSort([])},X.prototype.findSorter=function(e){var t,o=this.table.rowManager.activeRows[0],i="string";if(o&&(o=o.getData(),e.getField()))switch(t=e.getFieldValue(o),void 0===t?"undefined":_typeof(t)){case"undefined":i="string";break;case"boolean":i="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(i="alphanum"):i="number"}return this.sorters[i]},X.prototype.sort=function(e){var t=this,o=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,i=[],n=[];t.table.options.dataSorting&&t.table.options.dataSorting.call(t.table,t.getSort()),t.clearColumnHeaders(),t.table.options.ajaxSorting?o.forEach(function(e,o){t.setColumnHeader(e.column,e.dir)}):(o.forEach(function(e,o){var n=e.column.modules.sort;e.column&&n&&(n.sorter||(n.sorter=t.findSorter(e.column)),e.params="function"==typeof n.params?n.params(e.column.getComponent(),e.dir):n.params,i.push(e)),t.setColumnHeader(e.column,e.dir)}),i.length&&t._sortItems(e,i)),t.table.options.dataSorted&&(e.forEach(function(e){n.push(e.getComponent())}),t.table.options.dataSorted.call(t.table,t.getSort(),n))},X.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))})},X.prototype.setColumnHeader=function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)},X.prototype._sortItems=function(e,t){var o=this,i=t.length-1;e.sort(function(e,n){for(var s,r=i;r>=0;r--){var a=t[r];if(0!==(s=o._sortRow(e,n,a.column,a.dir,a.params)))break}return s})},X.prototype._sortRow=function(e,t,o,i,n){var s,r,a="asc"==i?e:t,l="asc"==i?t:e;return e=o.getFieldValue(a.getData()),t=o.getFieldValue(l.getData()),e=void 0!==e?e:"",t=void 0!==t?t:"",s=a.getComponent(),r=l.getComponent(),o.modules.sort.sorter.call(this,e,t,s,r,o.getComponent(),i,n)},X.prototype.sorters={number:function(e,t,o,i,n,s,r){var a=r.alignEmptyValues,l=r.decimalSeparator||".",c=r.thousandSeparator||",",u=0;if(e=parseFloat(String(e).split(c).join("").split(l).join(".")),t=parseFloat(String(t).split(c).join("").split(l).join(".")),isNaN(e))u=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;u=1}return("top"===a&&"desc"===s||"bottom"===a&&"asc"===s)&&(u*=-1),u},string:function(e,t,o,i,n,s,r){var a,l=r.alignEmptyValues,c=0;if(e){if(t){switch(_typeof(r.locale)){case"boolean":r.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}c=1}else c=t?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c},date:function(e,t,o,i,n,s,r){return r.format||(r.format="DD/MM/YYYY"),this.sorters.datetime.call(this,e,t,o,i,n,s,r)},time:function(e,t,o,i,n,s,r){return r.format||(r.format="HH:mm"),this.sorters.datetime.call(this,e,t,o,i,n,s,r)},datetime:function(e,t,o,i,n,s,r){var a=r.format||"DD/MM/YYYY HH:mm:ss",l=r.alignEmptyValues,c=0;if("undefined"!=typeof moment){if(e=moment(e,a),t=moment(t,a),e.isValid()){if(t.isValid())return e-t;c=1}else c=t.isValid()?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(e,t,o,i,n,s,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,o,i,n,s,r){function a(e){switch(u){case"length":return e.length;case"sum":return e.reduce(function(e,t){return e+t});case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce(function(e,t){return e+t})/e.length}}var l=0,c=0,u=r.type||"length",d=r.alignEmptyValues,h=0;if(Array.isArray(e)){if(Array.isArray(t))return l=e?a(e):0,c=t?a(t):0,l-c;d=1}else d=Array.isArray(t)?-1:0;return("top"===d&&"desc"===s||"bottom"===d&&"asc"===s)&&(h*=-1),h},exists:function(e,t,o,i,n,s,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,o,i,n,s,r){var a,l,c,u,d,h=0,p=/(\d+)|(\D+)/g,m=/\d/,f=r.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if(a=String(e).toLowerCase(),l=String(t).toLowerCase(),a===l)return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),d=a.length>l.length?l.length:a.length;h<d;)if(c=a[h],u=l[h++],c!==u)return isFinite(c)&&isFinite(u)?("0"===c.charAt(0)&&(c="."+c),"0"===u.charAt(0)&&(u="."+u),c-u):c>u?1:-1;return a.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===f&&"desc"===s||"bottom"===f&&"asc"===s)&&(g*=-1),g}},d.prototype.registerModule("sort",X);var K=function(e){this.table=e,this.invalidCells=[]};return K.prototype.initializeColumn=function(e){var t,o=this,i=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach(function(e){(t=o._extractValidator(e))&&i.push(t)}):(t=this._extractValidator(e.definition.validator))&&i.push(t),e.modules.validate=!!i.length&&i)},K.prototype._extractValidator=function(e){var t,o,i;switch(void 0===e?"undefined":_typeof(e)){case"string":return i=e.indexOf(":"),i>-1?(t=e.substring(0,i),o=e.substring(i+1)):t=e,this._buildValidator(t,o);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}},K.prototype._buildValidator=function(e,t){var o="function"==typeof e?e:this.validators[e];return o?{type:"function"==typeof e?"function":e,func:o,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)},K.prototype.validate=function(e,t,o){var i=this,n=[],s=this.invalidCells.indexOf(t);return e&&e.forEach(function(e){e.func.call(i,t.getComponent(),o,e.params)||n.push({type:e.type,parameters:e.params})}),n=!n.length||n,t.modules.validate||(t.modules.validate={}),!0===n?(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),s>-1&&this.invalidCells.splice(s,1)):(t.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==s&&this.invalidCells.push(t)),n},K.prototype.getInvalidCells=function(){var e=[];return this.invalidCells.forEach(function(t){e.push(t.getComponent())}),e},K.prototype.clearValidation=function(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.element.classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))},K.prototype.validators={integer:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,o){return""===t||null===t||void 0===t||!isNaN(t)},string:function(e,t,o){return""===t||null===t||void 0===t||isNaN(t)},max:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)<=o},min:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)>=o},starts:function(e,t,o){return""===t||null===t||void 0===t||String(t).toLowerCase().startsWith(String(o).toLowerCase())},ends:function(e,t,o){return""===t||null===t||void 0===t||String(t).toLowerCase().endsWith(String(o).toLowerCase())},minLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length>=o},maxLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length<=o},in:function(e,t,o){return""===t||null===t||void 0===t||("string"==typeof o&&(o=o.split("|")),""===t||o.indexOf(t)>-1)},regex:function(e,t,o){return""===t||null===t||void 0===t||new RegExp(o).test(t)},unique:function(e,t,o){if(""===t||null===t||void 0===t)return!0;var i=!0,n=e.getData(),s=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(e){var o=e.getData();o!==n&&t==s.getFieldValue(o)&&(i=!1)}),i},required:function(e,t,o){return""!==t&&null!==t&&void 0!==t}},d.prototype.registerModule("validate",K),d});
\ No newline at end of file
@@ -1,4 +1,4 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
 
 'use strict';
 
 
 'use strict';
 
@@ -424,7 +424,6 @@ ColumnManager.prototype.scrollHorizontal = function (left) {
 ColumnManager.prototype.generateColumnsFromRowData = function (data) {
 
        var cols = [],
 ColumnManager.prototype.generateColumnsFromRowData = function (data) {
 
        var cols = [],
-           definitions = this.table.options.autoColumnsDefinitions,
            row,
            sorter;
 
            row,
            sorter;
 
@@ -495,52 +494,7 @@ ColumnManager.prototype.generateColumnsFromRowData = function (data) {
                        cols.push(col);
                }
 
                        cols.push(col);
                }
 
-               if (definitions) {
-
-                       switch (typeof definitions === 'undefined' ? 'undefined' : _typeof(definitions)) {
-
-                               case "function":
-
-                                       this.table.options.columns = definitions.call(this.table, cols);
-
-                                       break;
-
-                               case "object":
-
-                                       if (Array.isArray(definitions)) {
-
-                                               cols.forEach(function (col) {
-
-                                                       var match = definitions.find(function (def) {
-
-                                                               return def.field === col.field;
-                                                       });
-
-                                                       if (match) {
-
-                                                               Object.assign(col, match);
-                                                       }
-                                               });
-                                       } else {
-
-                                               cols.forEach(function (col) {
-
-                                                       if (definitions[col.field]) {
-
-                                                               Object.assign(col, definitions[col.field]);
-                                                       }
-                                               });
-                                       }
-
-                                       this.table.options.columns = cols;
-
-                                       break;
-
-                       }
-               } else {
-
-                       this.table.options.columns = cols;
-               }
+               this.table.options.columns = cols;
 
                this.setColumns(this.table.options.columns);
        }
 
                this.setColumns(this.table.options.columns);
        }
@@ -577,11 +531,6 @@ ColumnManager.prototype.setColumns = function (cols, row) {
                self.table.modules.responsiveLayout.initialize();
        }
 
                self.table.modules.responsiveLayout.initialize();
        }
 
-       if (this.table.options.virtualDomHoz) {
-
-               this.table.vdomHoz.reinitialize(false, true);
-       }
-
        self.redraw(true);
 };
 
        self.redraw(true);
 };
 
@@ -898,11 +847,6 @@ ColumnManager.prototype.moveColumnActual = function (from, to, after) {
                this.table.modules.responsiveLayout.initialize();
        }
 
                this.table.modules.responsiveLayout.initialize();
        }
 
-       if (this.table.options.virtualDomHoz) {
-
-               this.table.vdomHoz.reinitialize(true);
-       }
-
        if (this.table.options.columnMoved) {
 
                this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
        if (this.table.options.columnMoved) {
 
                this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
@@ -915,11 +859,9 @@ ColumnManager.prototype.moveColumnActual = function (from, to, after) {
 };
 
 ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
 };
 
 ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
-       var _this2 = this;
 
        var fromIndex = columns.indexOf(from),
 
        var fromIndex = columns.indexOf(from),
-           toIndex,
-           rows = [];
+           toIndex;
 
        if (fromIndex > -1) {
 
 
        if (fromIndex > -1) {
 
@@ -942,17 +884,7 @@ ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after,
 
                if (updateRows) {
 
 
                if (updateRows) {
 
-                       if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
-
-                               this.table.rowManager.rows.forEach(function (row) {
-
-                                       rows = rows.concat(_this2.table.modules.dataTree.getTreeChildren(row, false, true));
-                               });
-                       }
-
-                       rows = rows.concat(this.table.rowManager.rows);
-
-                       rows.forEach(function (row) {
+                       this.table.rowManager.rows.forEach(function (row) {
 
                                if (row.cells.length) {
 
 
                                if (row.cells.length) {
 
@@ -966,7 +898,7 @@ ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after,
 };
 
 ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
 };
 
 ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
-       var _this3 = this;
+       var _this2 = this;
 
        var left = 0,
            offset = 0,
 
        var left = 0,
            offset = 0,
@@ -977,12 +909,12 @@ ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible)
 
                if (typeof position === "undefined") {
 
 
                if (typeof position === "undefined") {
 
-                       position = _this3.table.options.scrollToColumnPosition;
+                       position = _this2.table.options.scrollToColumnPosition;
                }
 
                if (typeof ifVisible === "undefined") {
 
                }
 
                if (typeof ifVisible === "undefined") {
 
-                       ifVisible = _this3.table.options.scrollToColumnIfVisible;
+                       ifVisible = _this2.table.options.scrollToColumnIfVisible;
                }
 
                if (column.visible) {
                }
 
                if (column.visible) {
@@ -995,13 +927,13 @@ ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible)
 
                                case "center":
 
 
                                case "center":
 
-                                       adjust = -_this3.element.clientWidth / 2;
+                                       adjust = -_this2.element.clientWidth / 2;
 
                                        break;
 
                                case "right":
 
 
                                        break;
 
                                case "right":
 
-                                       adjust = colEl.clientWidth - _this3.headersElement.clientWidth;
+                                       adjust = colEl.clientWidth - _this2.headersElement.clientWidth;
 
                                        break;
 
 
                                        break;
 
@@ -1013,7 +945,7 @@ ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible)
 
                                offset = colEl.offsetLeft;
 
 
                                offset = colEl.offsetLeft;
 
-                               if (offset > 0 && offset + colEl.offsetWidth < _this3.element.clientWidth) {
+                               if (offset > 0 && offset + colEl.offsetWidth < _this2.element.clientWidth) {
 
                                        return false;
                                }
 
                                        return false;
                                }
@@ -1021,13 +953,13 @@ ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible)
 
                        //calculate scroll position
 
 
                        //calculate scroll position
 
-                       left = colEl.offsetLeft + adjust;
+                       left = colEl.offsetLeft + _this2.element.scrollLeft + adjust;
 
 
-                       left = Math.max(Math.min(left, _this3.table.rowManager.element.scrollWidth - _this3.table.rowManager.element.clientWidth), 0);
+                       left = Math.max(Math.min(left, _this2.table.rowManager.element.scrollWidth - _this2.table.rowManager.element.clientWidth), 0);
 
 
-                       _this3.table.rowManager.scrollHorizontal(left);
+                       _this2.table.rowManager.scrollHorizontal(left);
 
 
-                       _this3.scrollHorizontal(left);
+                       _this2.scrollHorizontal(left);
 
                        resolve();
                } else {
 
                        resolve();
                } else {
@@ -1106,39 +1038,34 @@ ColumnManager.prototype.getFlexBaseWidth = function () {
 };
 
 ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
 };
 
 ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
-       var _this4 = this;
+       var _this3 = this;
 
        return new Promise(function (resolve, reject) {
 
 
        return new Promise(function (resolve, reject) {
 
-               var column = _this4._addColumn(definition, before, nextToColumn);
+               var column = _this3._addColumn(definition, before, nextToColumn);
 
 
-               _this4._reIndexColumns();
+               _this3._reIndexColumns();
 
 
-               if (_this4.table.options.responsiveLayout && _this4.table.modExists("responsiveLayout", true)) {
+               if (_this3.table.options.responsiveLayout && _this3.table.modExists("responsiveLayout", true)) {
 
 
-                       _this4.table.modules.responsiveLayout.initialize();
+                       _this3.table.modules.responsiveLayout.initialize();
                }
 
                }
 
-               if (_this4.table.modExists("columnCalcs")) {
+               if (_this3.table.modExists("columnCalcs")) {
 
 
-                       _this4.table.modules.columnCalcs.recalc(_this4.table.rowManager.activeRows);
+                       _this3.table.modules.columnCalcs.recalc(_this3.table.rowManager.activeRows);
                }
 
                }
 
-               _this4.redraw();
+               _this3.redraw();
 
 
-               if (_this4.table.modules.layout.getMode() != "fitColumns") {
+               if (_this3.table.modules.layout.getMode() != "fitColumns") {
 
                        column.reinitializeWidth();
                }
 
 
                        column.reinitializeWidth();
                }
 
-               _this4._verticalAlignHeaders();
-
-               _this4.table.rowManager.reinitialize();
-
-               if (_this4.table.options.virtualDomHoz) {
+               _this3._verticalAlignHeaders();
 
 
-                       _this4.table.vdomHoz.reinitialize();
-               }
+               _this3.table.rowManager.reinitialize();
 
                resolve(column);
        });
 
                resolve(column);
        });
@@ -1181,8 +1108,6 @@ ColumnManager.prototype.deregisterColumn = function (column) {
                this.table.modules.responsiveLayout.initialize();
        }
 
                this.table.modules.responsiveLayout.initialize();
        }
 
-       this._verticalAlignHeaders();
-
        this.redraw();
 };
 
        this.redraw();
 };
 
@@ -1397,19 +1322,11 @@ ColumnComponent.prototype.getWidth = function () {
 };
 
 ColumnComponent.prototype.setWidth = function (width) {
 };
 
 ColumnComponent.prototype.setWidth = function (width) {
-       var result;
-
        if (width === true) {
        if (width === true) {
-               result = this._column.reinitializeWidth(true);
+               return this._column.reinitializeWidth(true);
        } else {
        } else {
-               result = this._column.setWidth(width);
+               return this._column.setWidth(width);
        }
        }
-
-       if (this._column.table.options.virtualDomHoz) {
-               this._column.table.vdomHoz.reinitialize(true);
-       }
-
-       return result;
 };
 
 ColumnComponent.prototype.validate = function () {
 };
 
 ColumnComponent.prototype.validate = function () {
@@ -1427,7 +1344,6 @@ var Column = function Column(def, parent) {
        this.cells = []; //cells bound to this column
        this.element = this.createElement(); //column header element
        this.contentElement = false;
        this.cells = []; //cells bound to this column
        this.element = this.createElement(); //column header element
        this.contentElement = false;
-       this.titleHolderElement = false;
        this.titleElement = false;
        this.groupElement = this.createGroupElement(); //column group holder element
        this.isGroup = false;
        this.titleElement = false;
        this.groupElement = this.createGroupElement(); //column group holder element
        this.isGroup = false;
@@ -1520,11 +1436,11 @@ Column.prototype.createGroupElement = function () {
 };
 
 Column.prototype.checkDefinition = function () {
 };
 
 Column.prototype.checkDefinition = function () {
-       var _this5 = this;
+       var _this4 = this;
 
        Object.keys(this.definition).forEach(function (key) {
 
        Object.keys(this.definition).forEach(function (key) {
-               if (_this5.defaultOptionList.indexOf(key) === -1) {
-                       console.warn("Invalid column definition option in '" + (_this5.field || _this5.definition.title) + "' column:", key);
+               if (_this4.defaultOptionList.indexOf(key) === -1) {
+                       console.warn("Invalid column definition option in '" + (_this4.field || _this4.definition.title) + "' column:", key);
                }
        });
 };
                }
        });
 };
@@ -1822,58 +1738,57 @@ Column.prototype._bindEvents = function () {
 
 //build header element for header
 Column.prototype._buildColumnHeader = function () {
 
 //build header element for header
 Column.prototype._buildColumnHeader = function () {
-       var _this6 = this;
-
-       var def = this.definition,
-           table = this.table,
+       var self = this,
+           def = self.definition,
+           table = self.table,
            sortable;
 
        //set column sorter
        if (table.modExists("sort")) {
            sortable;
 
        //set column sorter
        if (table.modExists("sort")) {
-               table.modules.sort.initializeColumn(this, this.titleHolderElement);
+               table.modules.sort.initializeColumn(self, self.contentElement);
        }
 
        //set column header context menu
        }
 
        //set column header context menu
-       if ((def.headerContextMenu || def.headerClickMenu || def.headerMenu) && table.modExists("menu")) {
-               table.modules.menu.initializeColumnHeader(this);
+       if ((def.headerContextMenu || def.headerMenu) && table.modExists("menu")) {
+               table.modules.menu.initializeColumnHeader(self);
        }
 
        //set column formatter
        if (table.modExists("format")) {
        }
 
        //set column formatter
        if (table.modExists("format")) {
-               table.modules.format.initializeColumn(this);
+               table.modules.format.initializeColumn(self);
        }
 
        //set column editor
        if (typeof def.editor != "undefined" && table.modExists("edit")) {
        }
 
        //set column editor
        if (typeof def.editor != "undefined" && table.modExists("edit")) {
-               table.modules.edit.initializeColumn(this);
+               table.modules.edit.initializeColumn(self);
        }
 
        //set colum validator
        if (typeof def.validator != "undefined" && table.modExists("validate")) {
        }
 
        //set colum validator
        if (typeof def.validator != "undefined" && table.modExists("validate")) {
-               table.modules.validate.initializeColumn(this);
+               table.modules.validate.initializeColumn(self);
        }
 
        //set column mutator
        if (table.modExists("mutator")) {
        }
 
        //set column mutator
        if (table.modExists("mutator")) {
-               table.modules.mutator.initializeColumn(this);
+               table.modules.mutator.initializeColumn(self);
        }
 
        //set column accessor
        if (table.modExists("accessor")) {
        }
 
        //set column accessor
        if (table.modExists("accessor")) {
-               table.modules.accessor.initializeColumn(this);
+               table.modules.accessor.initializeColumn(self);
        }
 
        //set respoviveLayout
        if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
        }
 
        //set respoviveLayout
        if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
-               table.modules.responsiveLayout.initializeColumn(this);
+               table.modules.responsiveLayout.initializeColumn(self);
        }
 
        //set column visibility
        if (typeof def.visible != "undefined") {
                if (def.visible) {
        }
 
        //set column visibility
        if (typeof def.visible != "undefined") {
                if (def.visible) {
-                       this.show(true);
+                       self.show(true);
                } else {
                } else {
-                       this.hide(true);
+                       self.hide(true);
                }
        }
 
                }
        }
 
@@ -1881,7 +1796,7 @@ Column.prototype._buildColumnHeader = function () {
        if (def.cssClass) {
                var classeNames = def.cssClass.split(" ");
                classeNames.forEach(function (className) {
        if (def.cssClass) {
                var classeNames = def.cssClass.split(" ");
                classeNames.forEach(function (className) {
-                       _this6.element.classList.add(className);
+                       self.element.classList.add(className);
                });
        }
 
                });
        }
 
@@ -1890,18 +1805,16 @@ Column.prototype._buildColumnHeader = function () {
        }
 
        //set min width if present
        }
 
        //set min width if present
-       this.setMinWidth(typeof def.minWidth == "undefined" ? this.table.options.columnMinWidth : parseInt(def.minWidth));
+       self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
 
 
-       this.reinitializeWidth();
+       self.reinitializeWidth();
 
        //set tooltip if present
 
        //set tooltip if present
-       this.tooltip = this.definition.tooltip || this.definition.tooltip === false ? this.definition.tooltip : this.table.options.tooltips;
+       self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
 
        //set orizontal text alignment
 
        //set orizontal text alignment
-       this.hozAlign = typeof this.definition.hozAlign == "undefined" ? this.table.options.cellHozAlign : this.definition.hozAlign;
-       this.vertAlign = typeof this.definition.vertAlign == "undefined" ? this.table.options.cellVertAlign : this.definition.vertAlign;
-
-       this.titleElement.style.textAlign = this.definition.headerHozAlign || this.table.options.headerHozAlign;
+       self.hozAlign = typeof self.definition.hozAlign == "undefined" ? self.table.options.cellHozAlign : self.definition.hozAlign;
+       self.vertAlign = typeof self.definition.vertAlign == "undefined" ? self.table.options.cellVertAlign : self.definition.vertAlign;
 };
 
 Column.prototype._buildColumnHeaderContent = function () {
 };
 
 Column.prototype._buildColumnHeaderContent = function () {
@@ -1911,14 +1824,9 @@ Column.prototype._buildColumnHeaderContent = function () {
        var contentElement = document.createElement("div");
        contentElement.classList.add("tabulator-col-content");
 
        var contentElement = document.createElement("div");
        contentElement.classList.add("tabulator-col-content");
 
-       this.titleHolderElement = document.createElement("div");
-       this.titleHolderElement.classList.add("tabulator-col-title-holder");
-
-       contentElement.appendChild(this.titleHolderElement);
-
        this.titleElement = this._buildColumnHeaderTitle();
 
        this.titleElement = this._buildColumnHeaderTitle();
 
-       this.titleHolderElement.appendChild(this.titleElement);
+       contentElement.appendChild(this.titleElement);
 
        return contentElement;
 };
 
        return contentElement;
 };
@@ -1970,7 +1878,7 @@ Column.prototype._buildColumnHeaderTitle = function () {
 };
 
 Column.prototype._formatColumnHeaderTitle = function (el, title) {
 };
 
 Column.prototype._formatColumnHeaderTitle = function (el, title) {
-       var _this7 = this;
+       var _this5 = this;
 
        var formatter, contents, params, mockCell, onRendered;
 
 
        var formatter, contents, params, mockCell, onRendered;
 
@@ -1979,7 +1887,7 @@ Column.prototype._formatColumnHeaderTitle = function (el, title) {
                formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
 
                onRendered = function onRendered(callback) {
                formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
 
                onRendered = function onRendered(callback) {
-                       _this7.titleFormatterRendered = callback;
+                       _this5.titleFormatterRendered = callback;
                };
 
                mockCell = {
                };
 
                mockCell = {
@@ -2020,7 +1928,7 @@ Column.prototype._formatColumnHeaderTitle = function (el, title) {
 
 //build header element for column group
 Column.prototype._buildGroupHeader = function () {
 
 //build header element for column group
 Column.prototype._buildGroupHeader = function () {
-       var _this8 = this;
+       var _this6 = this;
 
        this.element.classList.add("tabulator-col-group");
        this.element.setAttribute("role", "columngroup");
 
        this.element.classList.add("tabulator-col-group");
        this.element.setAttribute("role", "columngroup");
@@ -2030,7 +1938,7 @@ Column.prototype._buildGroupHeader = function () {
        if (this.definition.cssClass) {
                var classeNames = this.definition.cssClass.split(" ");
                classeNames.forEach(function (className) {
        if (this.definition.cssClass) {
                var classeNames = this.definition.cssClass.split(" ");
                classeNames.forEach(function (className) {
-                       _this8.element.classList.add(className);
+                       _this6.element.classList.add(className);
                });
        }
 
                });
        }
 
@@ -2433,43 +2341,32 @@ Column.prototype.setMinWidth = function (minWidth) {
 };
 
 Column.prototype.delete = function () {
 };
 
 Column.prototype.delete = function () {
-       var _this9 = this;
+       var _this7 = this;
 
        return new Promise(function (resolve, reject) {
 
 
        return new Promise(function (resolve, reject) {
 
-               if (_this9.isGroup) {
-                       _this9.columns.forEach(function (column) {
+               if (_this7.isGroup) {
+                       _this7.columns.forEach(function (column) {
                                column.delete();
                        });
                }
 
                //cancel edit if column is currently being edited
                                column.delete();
                        });
                }
 
                //cancel edit if column is currently being edited
-               if (_this9.table.modExists("edit")) {
-                       if (_this9.table.modules.edit.currentCell.column === _this9) {
-                               _this9.table.modules.edit.cancelEdit();
+               if (_this7.table.modExists("edit")) {
+                       if (_this7.table.modules.edit.currentCell.column === _this7) {
+                               _this7.table.modules.edit.cancelEdit();
                        }
                }
 
                        }
                }
 
-               var cellCount = _this9.cells.length;
+               var cellCount = _this7.cells.length;
 
                for (var i = 0; i < cellCount; i++) {
 
                for (var i = 0; i < cellCount; i++) {
-                       _this9.cells[0].delete();
+                       _this7.cells[0].delete();
                }
 
                }
 
-               if (_this9.element.parentNode) {
-                       _this9.element.parentNode.removeChild(_this9.element);
-               }
-
-               _this9.element = false;
-               _this9.contentElement = false;
-               _this9.titleElement = false;
-               _this9.groupElement = false;
+               _this7.element.parentNode.removeChild(_this7.element);
 
 
-               _this9.table.columnManager.deregisterColumn(_this9);
-
-               if (_this9.table.options.virtualDomHoz) {
-                       _this9.table.vdomHoz.reinitialize(true);
-               }
+               _this7.table.columnManager.deregisterColumn(_this7);
 
                resolve();
        });
 
                resolve();
        });
@@ -2577,22 +2474,22 @@ Column.prototype.fitToData = function () {
 };
 
 Column.prototype.updateDefinition = function (updates) {
 };
 
 Column.prototype.updateDefinition = function (updates) {
-       var _this10 = this;
+       var _this8 = this;
 
        return new Promise(function (resolve, reject) {
                var definition;
 
 
        return new Promise(function (resolve, reject) {
                var definition;
 
-               if (!_this10.isGroup) {
-                       definition = Object.assign({}, _this10.getDefinition());
+               if (!_this8.isGroup) {
+                       definition = Object.assign({}, _this8.getDefinition());
                        definition = Object.assign(definition, updates);
 
                        definition = Object.assign(definition, updates);
 
-                       _this10.table.columnManager.addColumn(definition, false, _this10).then(function (column) {
+                       _this8.table.columnManager.addColumn(definition, false, _this8).then(function (column) {
 
 
-                               if (definition.field == _this10.field) {
-                                       _this10.field = false; //cleair field name to prevent deletion of duplicate column from arrays
+                               if (definition.field == _this8.field) {
+                                       _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays
                                }
 
                                }
 
-                               _this10.delete().then(function () {
+                               _this8.delete().then(function () {
                                        resolve(column.getComponent());
                                }).catch(function (err) {
                                        reject(err);
                                        resolve(column.getComponent());
                                }).catch(function (err) {
                                        reject(err);
@@ -2601,8 +2498,8 @@ Column.prototype.updateDefinition = function (updates) {
                                reject(err);
                        });
                } else {
                                reject(err);
                        });
                } else {
-                       console.warn("Column Update Error - The updateDefinition function is only available on columns, not column groups");
-                       reject("Column Update Error - The updateDefinition function is only available on columns, not column groups");
+                       console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups");
+                       reject("Column Update Error - The updateDefintion function is only available on columns, not column groups");
                }
        });
 };
                }
        });
 };
@@ -2615,9 +2512,7 @@ Column.prototype.deleteCell = function (cell) {
        }
 };
 
        }
 };
 
-Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "hozAlign", "vertAlign", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "accessorPrint", "accessorPrintParams", "accessorHtmlOutput", "accessorHtmlOutputParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "headerHozAlign", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print", "headerContextMenu", "headerMenu", "contextMenu",
-// "headerClickMenu",
-"clickMenu", "formatterPrint", "formatterPrintParams", "formatterClipboard", "formatterClipboardParams", "formatterHtmlOutput", "formatterHtmlOutputParams", "titlePrint", "titleClipboard", "titleHtmlOutput", "titleDownload"];
+Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "hozAlign", "vertAlign", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "accessorPrint", "accessorPrintParams", "accessorHtmlOutput", "accessorHtmlOutputParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print", "headerContextMenu", "headerMenu", "contextMenu", "formatterPrint", "formatterPrintParams", "formatterClipboard", "formatterClipboardParams", "formatterHtmlOutput", "formatterHtmlOutputParams", "titlePrint", "titleClipboard", "titleHtmlOutput", "titleDownload"];
 
 //////////////// Event Bindings /////////////////
 
 
 //////////////// Event Bindings /////////////////
 
@@ -2834,7 +2729,7 @@ RowManager.prototype.getRowFromPosition = function (position, active) {
 };
 
 RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
 };
 
 RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
-       var _this11 = this;
+       var _this9 = this;
 
        var rowIndex = this.getDisplayRows().indexOf(row),
            rowEl = row.getElement(),
 
        var rowIndex = this.getDisplayRows().indexOf(row),
            rowEl = row.getElement(),
@@ -2845,21 +2740,21 @@ RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
                if (rowIndex > -1) {
 
                        if (typeof position === "undefined") {
                if (rowIndex > -1) {
 
                        if (typeof position === "undefined") {
-                               position = _this11.table.options.scrollToRowPosition;
+                               position = _this9.table.options.scrollToRowPosition;
                        }
 
                        if (typeof ifVisible === "undefined") {
                        }
 
                        if (typeof ifVisible === "undefined") {
-                               ifVisible = _this11.table.options.scrollToRowIfVisible;
+                               ifVisible = _this9.table.options.scrollToRowIfVisible;
                        }
 
                        if (position === "nearest") {
                        }
 
                        if (position === "nearest") {
-                               switch (_this11.renderMode) {
+                               switch (_this9.renderMode) {
                                        case "classic":
                                                rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
                                        case "classic":
                                                rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
-                                               position = Math.abs(_this11.element.scrollTop - rowTop) > Math.abs(_this11.element.scrollTop + _this11.element.clientHeight - rowTop) ? "bottom" : "top";
+                                               position = Math.abs(_this9.element.scrollTop - rowTop) > Math.abs(_this9.element.scrollTop + _this9.element.clientHeight - rowTop) ? "bottom" : "top";
                                                break;
                                        case "virtual":
                                                break;
                                        case "virtual":
-                                               position = Math.abs(_this11.vDomTop - rowIndex) > Math.abs(_this11.vDomBottom - rowIndex) ? "bottom" : "top";
+                                               position = Math.abs(_this9.vDomTop - rowIndex) > Math.abs(_this9.vDomBottom - rowIndex) ? "bottom" : "top";
                                                break;
                                }
                        }
                                                break;
                                }
                        }
@@ -2867,21 +2762,21 @@ RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
                        //check row visibility
                        if (!ifVisible) {
                                if (Tabulator.prototype.helpers.elVisible(rowEl)) {
                        //check row visibility
                        if (!ifVisible) {
                                if (Tabulator.prototype.helpers.elVisible(rowEl)) {
-                                       offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this11.element).top;
+                                       offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top;
 
 
-                                       if (offset > 0 && offset < _this11.element.clientHeight - rowEl.offsetHeight) {
+                                       if (offset > 0 && offset < _this9.element.clientHeight - rowEl.offsetHeight) {
                                                return false;
                                        }
                                }
                        }
 
                        //scroll to row
                                                return false;
                                        }
                                }
                        }
 
                        //scroll to row
-                       switch (_this11.renderMode) {
+                       switch (_this9.renderMode) {
                                case "classic":
                                case "classic":
-                                       _this11.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this11.element).top + _this11.element.scrollTop;
+                                       _this9.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top + _this9.element.scrollTop;
                                        break;
                                case "virtual":
                                        break;
                                case "virtual":
-                                       _this11._virtualRenderFill(rowIndex, true);
+                                       _this9._virtualRenderFill(rowIndex, true);
                                        break;
                        }
 
                                        break;
                        }
 
@@ -2890,20 +2785,20 @@ RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
                                case "middle":
                                case "center":
 
                                case "middle":
                                case "center":
 
-                                       if (_this11.element.scrollHeight - _this11.element.scrollTop == _this11.element.clientHeight) {
-                                               _this11.element.scrollTop = _this11.element.scrollTop + (rowEl.offsetTop - _this11.element.scrollTop) - (_this11.element.scrollHeight - rowEl.offsetTop) / 2;
+                                       if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
+                                               _this9.element.scrollTop = _this9.element.scrollTop + (rowEl.offsetTop - _this9.element.scrollTop) - (_this9.element.scrollHeight - rowEl.offsetTop) / 2;
                                        } else {
                                        } else {
-                                               _this11.element.scrollTop = _this11.element.scrollTop - _this11.element.clientHeight / 2;
+                                               _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight / 2;
                                        }
 
                                        break;
 
                                case "bottom":
 
                                        }
 
                                        break;
 
                                case "bottom":
 
-                                       if (_this11.element.scrollHeight - _this11.element.scrollTop == _this11.element.clientHeight) {
-                                               _this11.element.scrollTop = _this11.element.scrollTop - (_this11.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
+                                       if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
+                                               _this9.element.scrollTop = _this9.element.scrollTop - (_this9.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
                                        } else {
                                        } else {
-                                               _this11.element.scrollTop = _this11.element.scrollTop - _this11.element.clientHeight + rowEl.offsetHeight;
+                                               _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight + rowEl.offsetHeight;
                                        }
 
                                        break;
                                        }
 
                                        break;
@@ -2920,26 +2815,25 @@ RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
 ////////////////// Data Handling //////////////////
 
 RowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {
 ////////////////// Data Handling //////////////////
 
 RowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {
-       var _this12 = this;
+       var _this10 = this;
 
        var self = this;
 
        return new Promise(function (resolve, reject) {
 
        var self = this;
 
        return new Promise(function (resolve, reject) {
-               if (renderInPosition && _this12.getDisplayRows().length) {
+               if (renderInPosition && _this10.getDisplayRows().length) {
                        if (self.table.options.pagination) {
                                self._setDataActual(data, true);
                        } else {
                        if (self.table.options.pagination) {
                                self._setDataActual(data, true);
                        } else {
-                               _this12.reRenderInPosition(function () {
+                               _this10.reRenderInPosition(function () {
                                        self._setDataActual(data);
                                });
                        }
                } else {
                                        self._setDataActual(data);
                                });
                        }
                } else {
-                       if (_this12.table.options.autoColumns && columnsChanged) {
-                               _this12.table.columnManager.generateColumnsFromRowData(data);
+                       if (_this10.table.options.autoColumns && columnsChanged) {
+                               _this10.table.columnManager.generateColumnsFromRowData(data);
                        }
                        }
-                       _this12.resetScroll();
-
-                       _this12._setDataActual(data);
+                       _this10.resetScroll();
+                       _this10._setDataActual(data);
                }
 
                resolve();
                }
 
                resolve();
@@ -2976,9 +2870,9 @@ RowManager.prototype._setDataActual = function (data, renderInPosition) {
                        }
                });
 
                        }
                });
 
-               self.refreshActiveData(false, false, renderInPosition);
-
                self.table.options.dataLoaded.call(this.table, data);
                self.table.options.dataLoaded.call(this.table, data);
+
+               self.refreshActiveData(false, false, renderInPosition);
        } else {
                console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
        }
        } else {
                console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
        }
@@ -2994,12 +2888,6 @@ RowManager.prototype._wipeElements = function () {
        }
 
        this.rows = [];
        }
 
        this.rows = [];
-       this.activeRows = [];
-       this.activeRowsCount = 0;
-       this.displayRows = [];
-       this.displayRowsCount = 0;
-
-       this.adjustTableSize();
 };
 
 RowManager.prototype.deleteRow = function (row, blockRedraw) {
 };
 
 RowManager.prototype.deleteRow = function (row, blockRedraw) {
@@ -3032,9 +2920,7 @@ RowManager.prototype.deleteRow = function (row, blockRedraw) {
 
        this.table.options.rowDeleted.call(this.table, row.getComponent());
 
 
        this.table.options.rowDeleted.call(this.table, row.getComponent());
 
-       if (this.table.options.dataChanged) {
-               this.table.options.dataChanged.call(this.table, this.getData());
-       }
+       this.table.options.dataEdited.call(this.table, this.getData());
 
        if (this.table.options.groupBy && this.table.modExists("groupRows")) {
                this.table.modules.groupRows.updateGroupRows(true);
 
        if (this.table.options.groupBy && this.table.modExists("groupRows")) {
                this.table.modules.groupRows.updateGroupRows(true);
@@ -3060,14 +2946,14 @@ RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
 
 //add multiple rows
 RowManager.prototype.addRows = function (data, pos, index) {
 
 //add multiple rows
 RowManager.prototype.addRows = function (data, pos, index) {
-       var _this13 = this;
+       var _this11 = this;
 
        var self = this,
            length = 0,
            rows = [];
 
        return new Promise(function (resolve, reject) {
 
        var self = this,
            length = 0,
            rows = [];
 
        return new Promise(function (resolve, reject) {
-               pos = _this13.findAddRowPos(pos);
+               pos = _this11.findAddRowPos(pos);
 
                if (!Array.isArray(data)) {
                        data = [data];
 
                if (!Array.isArray(data)) {
                        data = [data];
@@ -3084,20 +2970,20 @@ RowManager.prototype.addRows = function (data, pos, index) {
                        rows.push(row);
                });
 
                        rows.push(row);
                });
 
-               if (_this13.table.options.groupBy && _this13.table.modExists("groupRows")) {
-                       _this13.table.modules.groupRows.updateGroupRows(true);
-               } else if (_this13.table.options.pagination && _this13.table.modExists("page")) {
-                       _this13.refreshActiveData(false, false, true);
+               if (_this11.table.options.groupBy && _this11.table.modExists("groupRows")) {
+                       _this11.table.modules.groupRows.updateGroupRows(true);
+               } else if (_this11.table.options.pagination && _this11.table.modExists("page")) {
+                       _this11.refreshActiveData(false, false, true);
                } else {
                } else {
-                       _this13.reRenderInPosition();
+                       _this11.reRenderInPosition();
                }
 
                //recalc column calculations if present
                }
 
                //recalc column calculations if present
-               if (_this13.table.modExists("columnCalcs")) {
-                       _this13.table.modules.columnCalcs.recalc(_this13.table.rowManager.activeRows);
+               if (_this11.table.modExists("columnCalcs")) {
+                       _this11.table.modules.columnCalcs.recalc(_this11.table.rowManager.activeRows);
                }
 
                }
 
-               _this13.regenerateRowNumbers();
+               _this11.regenerateRowNumbers();
                resolve(rows);
        });
 };
                resolve(rows);
        });
 };
@@ -3218,9 +3104,7 @@ RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
 
        this.table.options.rowAdded.call(this.table, row.getComponent());
 
 
        this.table.options.rowAdded.call(this.table, row.getComponent());
 
-       if (this.table.options.dataChanged) {
-               this.table.options.dataChanged.call(this.table, this.getData());
-       }
+       this.table.options.dataEdited.call(this.table, this.getData());
 
        if (!blockRedraw) {
                this.reRenderInPosition();
 
        if (!blockRedraw) {
                this.reRenderInPosition();
@@ -3242,13 +3126,13 @@ RowManager.prototype.moveRow = function (from, to, after) {
 };
 
 RowManager.prototype.moveRowActual = function (from, to, after) {
 };
 
 RowManager.prototype.moveRowActual = function (from, to, after) {
-       var _this14 = this;
+       var _this12 = this;
 
        this._moveRowInArray(this.rows, from, to, after);
        this._moveRowInArray(this.activeRows, from, to, after);
 
        this.displayRowIterator(function (rows) {
 
        this._moveRowInArray(this.rows, from, to, after);
        this._moveRowInArray(this.activeRows, from, to, after);
 
        this.displayRowIterator(function (rows) {
-               _this14._moveRowInArray(rows, from, to, after);
+               _this12._moveRowInArray(rows, from, to, after);
        });
 
        if (this.table.options.groupBy && this.table.modExists("groupRows")) {
        });
 
        if (this.table.options.groupBy && this.table.modExists("groupRows")) {
@@ -3402,7 +3286,7 @@ RowManager.prototype.getDataCount = function (active) {
 };
 
 RowManager.prototype._genRemoteRequest = function () {
 };
 
 RowManager.prototype._genRemoteRequest = function () {
-       var _this15 = this;
+       var _this13 = this;
 
        var table = this.table,
            options = table.options,
 
        var table = this.table,
            options = table.options,
@@ -3431,7 +3315,7 @@ RowManager.prototype._genRemoteRequest = function () {
        }
 
        table.modules.ajax.sendRequest().then(function (data) {
        }
 
        table.modules.ajax.sendRequest().then(function (data) {
-               _this15._setDataActual(data, true);
+               _this13._setDataActual(data, true);
        }).catch(function (e) {});
 };
 
        }).catch(function (e) {});
 };
 
@@ -3653,13 +3537,7 @@ RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPos
                        if (renderInPosition) {
                                self.reRenderInPosition();
                        } else {
                        if (renderInPosition) {
                                self.reRenderInPosition();
                        } else {
-
-                               if (stage === "all" && this.table.options.virtualDomHoz) {
-                                       this.table.vdomHoz.dataChange();
-                               }
-
                                self.renderTable();
                                self.renderTable();
-
                                if (table.options.layoutColumnsOnNewData) {
                                        self.table.columnManager.redraw(true);
                                }
                                if (table.options.layoutColumnsOnNewData) {
                                        self.table.columnManager.redraw(true);
                                }
@@ -3674,11 +3552,11 @@ RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPos
 
 //regenerate row numbers for row number formatter if in use
 RowManager.prototype.regenerateRowNumbers = function () {
 
 //regenerate row numbers for row number formatter if in use
 RowManager.prototype.regenerateRowNumbers = function () {
-       var _this16 = this;
+       var _this14 = this;
 
        if (this.rowNumColumn) {
                this.activeRows.forEach(function (row) {
 
        if (this.rowNumColumn) {
                this.activeRows.forEach(function (row) {
-                       var cell = row.getCell(_this16.rowNumColumn);
+                       var cell = row.getCell(_this14.rowNumColumn);
 
                        if (cell) {
                                cell._generateContents();
 
                        if (cell) {
                                cell._generateContents();
@@ -3811,10 +3689,6 @@ RowManager.prototype.getRows = function (active) {
                        rows = this.getVisibleRows(true);
                        break;
 
                        rows = this.getVisibleRows(true);
                        break;
 
-               case "selected":
-                       rows = this.table.modules.selectRow.selectedRows;
-                       break;
-
                default:
                        rows = this.rows;
        }
                default:
                        rows = this.rows;
        }
@@ -3975,8 +3849,8 @@ RowManager.prototype.renderEmptyScroll = function () {
                this.tableElement.style.display = "none";
        } else {
                this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
                this.tableElement.style.display = "none";
        } else {
                this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
-               // this.tableElement.style.minHeight = "1px";
-               // this.tableElement.style.visibility = "hidden";
+               this.tableElement.style.minHeight = "1px";
+               this.tableElement.style.visibility = "hidden";
        }
 };
 
        }
 };
 
@@ -4068,21 +3942,14 @@ RowManager.prototype._virtualRenderFill = function (position, forceMove, offset)
                        self.styleRow(row, index);
 
                        element.appendChild(row.getElement());
                        self.styleRow(row, index);
 
                        element.appendChild(row.getElement());
-
-                       row.initialize();
-
-                       if (!row.heightInitialized) {
-                               row.normalizeHeight(true);
+                       if (!row.initialized) {
+                               row.initialize(true);
+                       } else {
+                               if (!row.heightInitialized) {
+                                       row.normalizeHeight(true);
+                               }
                        }
 
                        }
 
-                       // if(!row.initialized){
-                       //      row.initialize(true);
-                       // }else{
-                       //      if(!row.heightInitialized){
-                       //              row.normalizeHeight(true);
-                       //      }
-                       // }
-
                        rowHeight = row.getHeight();
 
                        if (i < topPad) {
                        rowHeight = row.getHeight();
 
                        if (i < topPad) {
@@ -4379,7 +4246,7 @@ RowManager.prototype.adjustTableSize = function () {
            modExists;
 
        if (this.renderMode === "virtual") {
            modExists;
 
        if (this.renderMode === "virtual") {
-               var otherHeight = Math.floor(this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0));
+               var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
 
                if (this.fixedHeight) {
                        this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
 
                if (this.fixedHeight) {
                        this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
@@ -4387,7 +4254,7 @@ RowManager.prototype.adjustTableSize = function () {
                        this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
                } else {
                        this.element.style.height = "";
                        this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
                } else {
                        this.element.style.height = "";
-                       this.element.style.height = Math.floor(this.table.element.clientHeight) - otherHeight + "px";
+                       this.element.style.height = this.table.element.clientHeight - otherHeight + "px";
                        this.element.scrollTop = this.scrollTop;
                }
 
                        this.element.scrollTop = this.scrollTop;
                }
 
@@ -4395,7 +4262,7 @@ RowManager.prototype.adjustTableSize = function () {
                this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
 
                //check if the table has changed size when dealing with variable height tables
                this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
 
                //check if the table has changed size when dealing with variable height tables
-               if (!this.fixedHeight && Math.floor(initialHeight) != Math.floor(this.element.clientHeight)) {
+               if (!this.fixedHeight && initialHeight != this.element.clientHeight) {
                        modExists = this.table.modExists("resizeTable");
 
                        if (modExists && !this.table.modules.resizeTable.autoResize || !modExists) {
                        modExists = this.table.modExists("resizeTable");
 
                        if (modExists && !this.table.modules.resizeTable.autoResize || !modExists) {
@@ -4408,7 +4275,7 @@ RowManager.prototype.adjustTableSize = function () {
 //renitialize all rows
 RowManager.prototype.reinitialize = function () {
        this.rows.forEach(function (row) {
 //renitialize all rows
 RowManager.prototype.reinitialize = function () {
        this.rows.forEach(function (row) {
-               row.reinitialize(true);
+               row.reinitialize();
        });
 };
 
        });
 };
 
@@ -4480,462 +4347,6 @@ RowManager.prototype.resetScroll = function () {
        }
 };
 
        }
 };
 
-var VDomHoz = function VDomHoz(table) {
-       this.table = table;
-
-       this.element = this.table.rowManager.tableElement;
-       this.holderEl = this.table.rowManager.element;
-
-       this.leftCol = 0;
-       this.rightCol = 0;
-       this.scrollLeft = 0;
-
-       this.vDomScrollPosLeft = 0;
-       this.vDomScrollPosRight = 0;
-
-       this.vDomPadLeft = 0;
-       this.vDomPadRight = 0;
-
-       this.fitDataColAvg = 0;
-
-       this.window = 200; //pixel margin to make column visible before it is shown on screen
-
-       this.initialized = false;
-
-       this.columns = [];
-
-       if (this.compatabilityCheck()) {
-               this.initialize();
-       }
-};
-
-VDomHoz.prototype.compatabilityCheck = function () {
-       var options = this.table.options,
-           frozen = false,
-           ok = true;
-
-       if (options.layout == "fitDataTable") {
-               console.warn("Horizontal Vitrual DOM is not compatible with fitDataTable layout mode");
-               ok = false;
-       }
-
-       if (options.responsiveLayout) {
-               console.warn("Horizontal Vitrual DOM is not compatible with responsive columns");
-               ok = false;
-       }
-
-       if (this.table.rtl) {
-               console.warn("Horizontal Vitrual DOM is not currently compatible with RTL text direction");
-               ok = false;
-       }
-
-       // if(options.rowFormatter){
-       //      console.warn("Horizontal Vitrual DOM is not compatible with row formatters");
-       //      ok = false;
-       // }
-
-       if (options.columns) {
-               frozen = options.columns.find(function (col) {
-                       return col.frozen;
-               });
-
-               if (frozen) {
-                       console.warn("Horizontal Vitrual DOM is not compatible with frozen columns");
-                       ok = false;
-               }
-       }
-
-       if (!ok) {
-               options.virtualDomHoz = false;
-       }
-
-       return ok;
-};
-
-VDomHoz.prototype.initialize = function () {
-       var _this17 = this;
-
-       this.holderEl.addEventListener("scroll", function () {
-               var left = _this17.holderEl.scrollLeft;
-
-               if (_this17.scrollLeft != left) {
-                       _this17.scrollLeft = left;
-                       _this17.scroll(left - (_this17.vDomScrollPosLeft + _this17.window));
-               }
-       });
-};
-
-VDomHoz.prototype.deinitialize = function () {
-       this.initialized = false;
-};
-
-VDomHoz.prototype.clear = function () {
-       this.columns = [];
-
-       this.leftCol = -1;
-       this.rightCol = 0;
-
-       this.vDomScrollPosLeft = 0;
-       this.vDomScrollPosRight = 0;
-       this.vDomPadLeft = 0;
-       this.vDomPadRight = 0;
-};
-
-VDomHoz.prototype.dataChange = function () {
-       var change = false,
-           collsWidth = 0,
-           colEnd = 0,
-           group,
-           row,
-           rowEl;
-
-       if (this.table.options.layout === "fitData") {
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (!column.definition.width && column.visible) {
-                               change = true;
-                       }
-               });
-
-               if (change) {
-                       if (change && this.table.rowManager.getDisplayRows().length) {
-                               // this.table.vdomHoz.deinitialize();
-
-                               this.vDomScrollPosRight = this.scrollLeft + this.holderEl.clientWidth + this.window;
-
-                               if (this.table.options.groupBy) {
-                                       group = this.table.modules.groupRows.getGroups(false)[0];
-
-                                       row = group.getRows(false)[0];
-                               } else {
-                                       row = this.table.rowManager.getDisplayRows()[0];
-                               }
-
-                               if (row) {
-
-                                       rowEl = row.getElement();
-
-                                       row.generateCells();
-
-                                       this.element.appendChild(rowEl);
-
-                                       for (var colEnd = 0; colEnd < row.cells.length; colEnd++) {
-                                               var cell = row.cells[colEnd];
-                                               rowEl.appendChild(cell.getElement());
-
-                                               cell.column.reinitializeWidth();
-
-                                               collsWidth += cell.column.getWidth();
-
-                                               if (collsWidth > this.vDomScrollPosRight) {
-                                                       break;
-                                               }
-                                       }
-
-                                       rowEl.parentNode.removeChild(rowEl);
-
-                                       this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));
-
-                                       for (colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++) {
-                                               this.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);
-                                       }
-
-                                       this.reinitialize(false, true);
-                               }
-                       }
-               }
-       } else {
-               if (this.table.options.layout === "fitColumns") {
-                       this.table.modules.layout.layout();
-                       this.table.vdomHoz.reinitialize(false, true);
-               }
-       }
-};
-
-VDomHoz.prototype.fitDataLayoutOverride = function () {
-       for (var i = this.leftCol; i <= this.rightCol; i++) {
-               this.columns[i].reinitializeWidth();
-       }
-};
-
-VDomHoz.prototype.reinitialize = function (update, blockRedraw) {
-       var _this18 = this;
-
-       var old = {
-               cols: this.columns,
-               leftCol: this.leftCol,
-               rightCol: this.rightCol
-       };
-
-       if (update && !this.initialized) {
-               return;
-       }
-
-       this.clear();
-
-       this.scrollLeft = this.holderEl.scrollLeft;
-
-       this.vDomScrollPosLeft = this.scrollLeft - this.window;
-       this.vDomScrollPosRight = this.scrollLeft + this.holderEl.clientWidth + this.window;
-
-       var colPos = 0;
-
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               var config = {};
-
-               if (column.visible) {
-                       var width = column.getWidth();
-
-                       config.leftPos = colPos;
-                       config.rightPos = colPos + width;
-
-                       if (colPos + width > _this18.vDomScrollPosLeft && colPos < _this18.vDomScrollPosRight) {
-                               //column is visible
-
-                               if (_this18.leftCol == -1) {
-                                       _this18.leftCol = _this18.columns.length;
-                                       _this18.vDomPadLeft = colPos;
-                               }
-
-                               _this18.rightCol = _this18.columns.length;
-                       } else {
-                               // column is hidden
-                               if (_this18.leftCol !== -1) {
-                                       _this18.vDomPadRight += width;
-                               }
-                       }
-
-                       _this18.columns.push(column);
-
-                       column.modules.vdomHoz = config;
-
-                       colPos += width;
-               }
-       });
-
-       this.element.style.paddingLeft = this.vDomPadLeft + "px";
-       this.element.style.paddingRight = this.vDomPadRight + "px";
-
-       this.initialized = true;
-
-       if (!blockRedraw) {
-               if (!update || this.reinitChanged(old)) {
-                       this.renitializeRows();
-               }
-       }
-
-       this.holderEl.scrollLeft = this.scrollLeft;
-};
-
-VDomHoz.prototype.reinitChanged = function (old) {
-       var _this19 = this;
-
-       var match = true;
-
-       if (old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol) {
-               return true;
-       }
-
-       old.cols.forEach(function (col, i) {
-               if (col !== _this19.columns[i]) {
-                       match = false;
-               }
-       });
-
-       return !match;
-};
-
-VDomHoz.prototype.renitializeRows = function () {
-       var _this20 = this;
-
-       var rows = this.table.rowManager.getVisibleRows();
-       rows.forEach(function (row) {
-               _this20.reinitializeRow(row, true);
-       });
-};
-
-VDomHoz.prototype.scroll = function (diff) {
-       this.vDomScrollPosLeft += diff;
-       this.vDomScrollPosRight += diff;
-
-       if (diff > this.holderEl.clientWidth * .8) {
-               this.reinitialize();
-       } else {
-               if (diff > 0) {
-                       //scroll right
-                       this.addColRight();
-                       this.removeColLeft();
-               } else {
-                       //scroll left
-                       this.addColLeft();
-                       this.removeColRight();
-               }
-       }
-};
-
-VDomHoz.prototype.colPositionAdjust = function (start, end, diff) {
-       for (var i = start; i < end; i++) {
-               var column = this.columns[i];
-
-               column.modules.vdomHoz.leftPos -= diff;
-               column.modules.vdomHoz.rightPos -= diff;
-       }
-};
-
-VDomHoz.prototype.addColRight = function () {
-       var column = this.columns[this.rightCol + 1],
-           rows,
-           oldWidth,
-           widthDiff;
-
-       if (column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight) {
-
-               rows = this.table.rowManager.getVisibleRows();
-
-               rows.forEach(function (row) {
-                       if (row.type !== "group") {
-                               var cell = row.getCell(column);
-                               row.getElement().appendChild(cell.getElement());
-                               cell.cellRendered();
-                       }
-               });
-
-               if (this.fitDataColAvg) {
-
-                       oldWidth = column.getWidth();
-
-                       if (oldWidth === this.fitDataColAvg) {
-                               column.reinitializeWidth();
-
-                               widthDiff = oldWidth - column.getWidth();
-
-                               if (widthDiff) {
-                                       column.modules.vdomHoz.rightPos -= widthDiff;
-                                       this.colPositionAdjust(this.rightCol + 1, this.columns.length, widthDiff);
-                               }
-                       }
-               }
-
-               this.rightCol++;
-
-               if (this.rightCol >= this.columns.length - 1) {
-                       this.vDomPadRight = 0;
-               } else {
-                       this.vDomPadRight -= column.getWidth();
-               }
-
-               this.element.style.paddingRight = this.vDomPadRight + "px";
-
-               this.addColRight();
-       }
-};
-
-VDomHoz.prototype.addColLeft = function () {
-       var column = this.columns[this.leftCol - 1],
-           rows;
-
-       if (column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft) {
-               var rows = this.table.rowManager.getVisibleRows();
-
-               rows.forEach(function (row) {
-                       if (row.type !== "group") {
-                               var cell = row.getCell(column);
-                               row.getElement().prepend(cell.getElement());
-                               cell.cellRendered();
-                       }
-               });
-
-               if (!this.leftCol) {
-                       this.vDomPadLeft = 0;
-               } else {
-                       this.vDomPadLeft -= column.getWidth();
-               }
-
-               this.element.style.paddingLeft = this.vDomPadLeft + "px";
-
-               this.leftCol--;
-
-               this.addColLeft();
-       }
-};
-
-VDomHoz.prototype.removeColRight = function (column) {
-       var column = this.columns[this.rightCol],
-           rows;
-
-       if (column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight) {
-               rows = this.table.rowManager.getVisibleRows();
-
-               column.modules.vdomHoz.visible = false;
-
-               rows.forEach(function (row) {
-                       if (row.type !== "group") {
-                               var cell = row.getCell(column);
-                               row.getElement().removeChild(cell.getElement());
-                       }
-               });
-
-               this.vDomPadRight += column.getWidth();
-               this.element.style.paddingRight = this.vDomPadRight + "px";
-
-               this.rightCol--;
-
-               this.removeColRight();
-       }
-};
-
-VDomHoz.prototype.removeColLeft = function () {
-       var column = this.columns[this.leftCol],
-           rows;
-
-       if (column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft) {
-
-               rows = this.table.rowManager.getVisibleRows();
-
-               rows.forEach(function (row) {
-                       if (row.type !== "group") {
-                               var cell = row.getCell(column);
-                               row.getElement().removeChild(cell.getElement());
-                       }
-               });
-
-               this.vDomPadLeft += column.getWidth();
-               this.element.style.paddingLeft = this.vDomPadLeft + "px";
-
-               this.leftCol++;
-
-               this.removeColLeft();
-       }
-};
-
-VDomHoz.prototype.initializeRow = function (row) {
-       if (row.type !== "group") {
-               row.modules.vdomHoz = {
-                       leftCol: this.leftCol,
-                       rightCol: this.rightCol
-               };
-
-               for (var i = this.leftCol; i <= this.rightCol; i++) {
-                       var column = this.columns[i];
-
-                       if (column.visible) {
-                               var cell = row.getCell(column);
-
-                               row.element.appendChild(cell.getElement());
-                               cell.cellRendered();
-                       }
-               }
-       }
-};
-
-VDomHoz.prototype.reinitializeRow = function (row, force) {
-       if (row.type !== "group") {
-               if (force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol) {
-                       while (row.element.firstChild) {
-                               row.element.removeChild(row.element.firstChild);
-                       }this.initializeRow(row);
-               }
-       }
-};
 //public row object
 var RowComponent = function RowComponent(row) {
        this._row = row;
 //public row object
 var RowComponent = function RowComponent(row) {
        this._row = row;
@@ -5071,7 +4482,7 @@ RowComponent.prototype.getTreeParent = function () {
 
 RowComponent.prototype.getTreeChildren = function () {
        if (this._row.table.modExists("dataTree", true)) {
 
 RowComponent.prototype.getTreeChildren = function () {
        if (this._row.table.modExists("dataTree", true)) {
-               return this._row.table.modules.dataTree.getTreeChildren(this._row, true);
+               return this._row.table.modules.dataTree.getTreeChildren(this._row);
        }
 
        return false;
        }
 
        return false;
@@ -5176,7 +4587,7 @@ Row.prototype.generateElement = function () {
        }
 
        //set column menu
        }
 
        //set column menu
-       if ((self.table.options.rowContextMenu || self.table.options.rowClickMenu) && this.table.modExists("menu")) {
+       if (self.table.options.rowContextMenu && this.table.modExists("menu")) {
                self.table.modules.menu.initializeRow(this);
        }
 
                self.table.modules.menu.initializeRow(this);
        }
 
@@ -5296,14 +4707,14 @@ Row.prototype.generateCells = function () {
 
 //functions to setup on first render
 Row.prototype.initialize = function (force) {
 
 //functions to setup on first render
 Row.prototype.initialize = function (force) {
-       var _this21 = this;
+       var self = this;
 
 
-       if (!this.initialized || force) {
+       if (!self.initialized || force) {
 
 
-               this.deleteCells();
+               self.deleteCells();
 
 
-               while (this.element.firstChild) {
-                       this.element.removeChild(this.element.firstChild);
+               while (self.element.firstChild) {
+                       self.element.removeChild(self.element.firstChild);
                } //handle frozen cells
                if (this.table.modExists("frozenColumns")) {
                        this.table.modules.frozenColumns.layoutRow(this);
                } //handle frozen cells
                if (this.table.modExists("frozenColumns")) {
                        this.table.modules.frozenColumns.layoutRow(this);
@@ -5311,43 +4722,35 @@ Row.prototype.initialize = function (force) {
 
                this.generateCells();
 
 
                this.generateCells();
 
-               if (this.table.options.virtualDomHoz && this.table.vdomHoz.initialized) {
-                       this.table.vdomHoz.initializeRow(this);
-               } else {
-                       this.cells.forEach(function (cell) {
-                               _this21.element.appendChild(cell.getElement());
-                               cell.cellRendered();
-                       });
-               }
+               self.cells.forEach(function (cell) {
+                       self.element.appendChild(cell.getElement());
+                       cell.cellRendered();
+               });
 
                if (force) {
 
                if (force) {
-                       this.normalizeHeight();
+                       self.normalizeHeight();
                }
 
                //setup movable rows
                }
 
                //setup movable rows
-               if (this.table.options.dataTree && this.table.modExists("dataTree")) {
-                       this.table.modules.dataTree.layoutRow(this);
+               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+                       self.table.modules.dataTree.layoutRow(this);
                }
 
                //setup column colapse container
                }
 
                //setup column colapse container
-               if (this.table.options.responsiveLayout === "collapse" && this.table.modExists("responsiveLayout")) {
-                       this.table.modules.responsiveLayout.layoutRow(this);
+               if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
+                       self.table.modules.responsiveLayout.layoutRow(this);
                }
 
                }
 
-               if (this.table.options.rowFormatter) {
-                       this.table.options.rowFormatter(this.getComponent());
+               if (self.table.options.rowFormatter) {
+                       self.table.options.rowFormatter(self.getComponent());
                }
 
                //set resizable handles
                }
 
                //set resizable handles
-               if (this.table.options.resizableRows && this.table.modExists("resizeRows")) {
-                       this.table.modules.resizeRows.initializeRow(this);
+               if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
+                       self.table.modules.resizeRows.initializeRow(self);
                }
 
                }
 
-               this.initialized = true;
-       } else {
-               if (this.table.options.virtualDomHoz) {
-                       this.table.vdomHoz.reinitializeRow(this);
-               }
+               self.initialized = true;
        }
 };
 
        }
 };
 
@@ -5359,7 +4762,7 @@ Row.prototype.reinitializeHeight = function () {
        }
 };
 
        }
 };
 
-Row.prototype.reinitialize = function (children) {
+Row.prototype.reinitialize = function () {
        this.initialized = false;
        this.heightInitialized = false;
 
        this.initialized = false;
        this.heightInitialized = false;
 
@@ -5371,12 +4774,6 @@ Row.prototype.reinitialize = function (children) {
        if (this.element.offsetParent !== null) {
                this.initialize(true);
        }
        if (this.element.offsetParent !== null) {
                this.initialize(true);
        }
-
-       if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
-               this.table.modules.dataTree.getTreeChildren(this, false, true).forEach(function (child) {
-                       child.reinitialize(true);
-               });
-       }
 };
 
 //get heights when doing bulk row style calcs in virtual DOM
 };
 
 //get heights when doing bulk row style calcs in virtual DOM
@@ -5487,7 +4884,7 @@ Row.prototype.setData = function (data) {
 
 //update the rows data
 Row.prototype.updateData = function (updatedData) {
 
 //update the rows data
 Row.prototype.updateData = function (updatedData) {
-       var _this22 = this;
+       var _this15 = this;
 
        var visible = Tabulator.prototype.helpers.elVisible(this.element),
            tempData = {},
 
        var visible = Tabulator.prototype.helpers.elVisible(this.element),
            tempData = {},
@@ -5499,37 +4896,37 @@ Row.prototype.updateData = function (updatedData) {
                        updatedData = JSON.parse(updatedData);
                }
 
                        updatedData = JSON.parse(updatedData);
                }
 
-               if (_this22.table.options.reactiveData && _this22.table.modExists("reactiveData", true)) {
-                       _this22.table.modules.reactiveData.block();
+               if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
+                       _this15.table.modules.reactiveData.block();
                }
 
                //mutate incomming data if needed
                }
 
                //mutate incomming data if needed
-               if (_this22.table.modExists("mutator")) {
+               if (_this15.table.modExists("mutator")) {
 
 
-                       tempData = Object.assign(tempData, _this22.data);
+                       tempData = Object.assign(tempData, _this15.data);
                        tempData = Object.assign(tempData, updatedData);
 
                        tempData = Object.assign(tempData, updatedData);
 
-                       newRowData = _this22.table.modules.mutator.transformRow(tempData, "data", updatedData);
+                       newRowData = _this15.table.modules.mutator.transformRow(tempData, "data", updatedData);
                } else {
                        newRowData = updatedData;
                }
 
                //set data
                for (var attrname in newRowData) {
                } else {
                        newRowData = updatedData;
                }
 
                //set data
                for (var attrname in newRowData) {
-                       _this22.data[attrname] = newRowData[attrname];
+                       _this15.data[attrname] = newRowData[attrname];
                }
 
                }
 
-               if (_this22.table.options.reactiveData && _this22.table.modExists("reactiveData", true)) {
-                       _this22.table.modules.reactiveData.unblock();
+               if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
+                       _this15.table.modules.reactiveData.unblock();
                }
 
                //update affected cells only
                for (var attrname in updatedData) {
 
                }
 
                //update affected cells only
                for (var attrname in updatedData) {
 
-                       var columns = _this22.table.columnManager.getColumnsByFieldRoot(attrname);
+                       var columns = _this15.table.columnManager.getColumnsByFieldRoot(attrname);
 
                        columns.forEach(function (column) {
 
                        columns.forEach(function (column) {
-                               var cell = _this22.getCell(column.getField());
+                               var cell = _this15.getCell(column.getField());
 
                                if (cell) {
                                        var value = column.getFieldValue(newRowData);
 
                                if (cell) {
                                        var value = column.getFieldValue(newRowData);
@@ -5544,52 +4941,43 @@ Row.prototype.updateData = function (updatedData) {
                        });
                }
 
                        });
                }
 
-               if (_this22.table.options.groupUpdateOnCellEdit && _this22.table.options.groupBy && _this22.table.modExists("groupRows")) {
-                       _this22.table.modules.groupRows.reassignRowToGroup(_this22.row);
-               }
-
                //Partial reinitialization if visible
                if (visible) {
                //Partial reinitialization if visible
                if (visible) {
-                       _this22.normalizeHeight(true);
+                       _this15.normalizeHeight(true);
 
 
-                       if (_this22.table.options.rowFormatter) {
-                               _this22.table.options.rowFormatter(_this22.getComponent());
+                       if (_this15.table.options.rowFormatter) {
+                               _this15.table.options.rowFormatter(_this15.getComponent());
                        }
                } else {
                        }
                } else {
-                       _this22.initialized = false;
-                       _this22.height = 0;
-                       _this22.heightStyled = "";
+                       _this15.initialized = false;
+                       _this15.height = 0;
+                       _this15.heightStyled = "";
                }
 
                }
 
-               if (_this22.table.options.dataTree !== false && _this22.table.modExists("dataTree") && _this22.table.modules.dataTree.redrawNeeded(updatedData)) {
-                       _this22.table.modules.dataTree.initializeRow(_this22);
-
-                       if (visible) {
-                               _this22.table.modules.dataTree.layoutRow(_this22);
-                               _this22.table.rowManager.refreshActiveData("tree", false, true);
-                       }
+               if (_this15.table.options.dataTree !== false && _this15.table.modExists("dataTree") && _this15.table.modules.dataTree.redrawNeeded(updatedData)) {
+                       _this15.table.modules.dataTree.initializeRow(_this15);
+                       _this15.table.modules.dataTree.layoutRow(_this15);
+                       _this15.table.rowManager.refreshActiveData("tree", false, true);
                }
 
                //this.reinitialize();
 
                }
 
                //this.reinitialize();
 
-               _this22.table.options.rowUpdated.call(_this22.table, _this22.getComponent());
-
-               if (_this22.table.options.dataChanged) {
-                       _this22.table.options.dataChanged.call(_this22.table, _this22.table.rowManager.getData());
-               }
+               _this15.table.options.rowUpdated.call(_this15.table, _this15.getComponent());
 
                resolve();
        });
 };
 
 Row.prototype.getData = function (transform) {
 
                resolve();
        });
 };
 
 Row.prototype.getData = function (transform) {
+       var self = this;
+
        if (transform) {
        if (transform) {
-               if (this.table.modExists("accessor")) {
-                       return this.table.modules.accessor.transformRow(this, transform);
+               if (self.table.modExists("accessor")) {
+                       return self.table.modules.accessor.transformRow(self.data, transform);
                }
                }
+       } else {
+               return this.data;
        }
        }
-
-       return this.data;
 };
 
 Row.prototype.getCell = function (column) {
 };
 
 Row.prototype.getCell = function (column) {
@@ -5699,32 +5087,32 @@ Row.prototype.validate = function () {
 ///////////////////// Actions  /////////////////////
 
 Row.prototype.delete = function () {
 ///////////////////// Actions  /////////////////////
 
 Row.prototype.delete = function () {
-       var _this23 = this;
+       var _this16 = this;
 
        return new Promise(function (resolve, reject) {
                var index, rows;
 
 
        return new Promise(function (resolve, reject) {
                var index, rows;
 
-               if (_this23.table.options.history && _this23.table.modExists("history")) {
+               if (_this16.table.options.history && _this16.table.modExists("history")) {
 
 
-                       if (_this23.table.options.groupBy && _this23.table.modExists("groupRows")) {
-                               rows = _this23.getGroup().rows;
-                               index = rows.indexOf(_this23);
+                       if (_this16.table.options.groupBy && _this16.table.modExists("groupRows")) {
+                               rows = _this16.getGroup().rows;
+                               index = rows.indexOf(_this16);
 
                                if (index) {
                                        index = rows[index - 1];
                                }
                        } else {
 
                                if (index) {
                                        index = rows[index - 1];
                                }
                        } else {
-                               index = _this23.table.rowManager.getRowIndex(_this23);
+                               index = _this16.table.rowManager.getRowIndex(_this16);
 
                                if (index) {
 
                                if (index) {
-                                       index = _this23.table.rowManager.rows[index - 1];
+                                       index = _this16.table.rowManager.rows[index - 1];
                                }
                        }
 
                                }
                        }
 
-                       _this23.table.modules.history.action("rowDelete", _this23, { data: _this23.getData(), pos: !index, index: index });
+                       _this16.table.modules.history.action("rowDelete", _this16, { data: _this16.getData(), pos: !index, index: index });
                }
 
                }
 
-               _this23.deleteActual();
+               _this16.deleteActual();
 
                resolve();
        });
 
                resolve();
        });
@@ -5733,7 +5121,17 @@ Row.prototype.delete = function () {
 Row.prototype.deleteActual = function (blockRedraw) {
        var index = this.table.rowManager.getRowIndex(this);
 
 Row.prototype.deleteActual = function (blockRedraw) {
        var index = this.table.rowManager.getRowIndex(this);
 
-       this.detatchModules();
+       //deselect row if it is selected
+       if (this.table.modExists("selectRow")) {
+               this.table.modules.selectRow._deselectRow(this, true);
+       }
+
+       //cancel edit if row is currently being edited
+       if (this.table.modExists("edit")) {
+               if (this.table.modules.edit.currentCell.row === this) {
+                       this.table.modules.edit.cancelEdit();
+               }
+       }
 
        // if(this.table.options.dataTree && this.table.modExists("dataTree")){
        //      this.table.modules.dataTree.collapseRow(this, true);
 
        // if(this.table.options.dataTree && this.table.modExists("dataTree")){
        //      this.table.modules.dataTree.collapseRow(this, true);
@@ -5755,7 +5153,6 @@ Row.prototype.deleteActual = function (blockRedraw) {
 
        this.initialized = false;
        this.heightInitialized = false;
 
        this.initialized = false;
        this.heightInitialized = false;
-       this.element = false;
 
        if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
                this.table.modules.dataTree.rowDelete(this);
 
        if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
                this.table.modules.dataTree.rowDelete(this);
@@ -5771,24 +5168,6 @@ Row.prototype.deleteActual = function (blockRedraw) {
        }
 };
 
        }
 };
 
-Row.prototype.detatchModules = function () {
-       //deselect row if it is selected
-       if (this.table.modExists("selectRow")) {
-               this.table.modules.selectRow._deselectRow(this, true);
-       }
-
-       //cancel edit if row is currently being edited
-       if (this.table.modExists("edit")) {
-               if (this.table.modules.edit.currentCell.row === this) {
-                       this.table.modules.edit.cancelEdit();
-               }
-       }
-
-       if (this.table.modExists("frozenRows")) {
-               this.table.modules.frozenRows.detachRow(this);
-       }
-};
-
 Row.prototype.deleteCells = function () {
        var cellCount = this.cells.length;
 
 Row.prototype.deleteCells = function () {
        var cellCount = this.cells.length;
 
@@ -5798,7 +5177,6 @@ Row.prototype.deleteCells = function () {
 };
 
 Row.prototype.wipe = function () {
 };
 
 Row.prototype.wipe = function () {
-       this.detatchModules();
        this.deleteCells();
 
        while (this.element.firstChild) {
        this.deleteCells();
 
        while (this.element.firstChild) {
@@ -5837,10 +5215,6 @@ CellComponent.prototype.getOldValue = function () {
        return this._cell.getOldValue();
 };
 
        return this._cell.getOldValue();
 };
 
-CellComponent.prototype.getInitialValue = function () {
-       return this._cell.initialValue;
-};
-
 CellComponent.prototype.getElement = function () {
        return this._cell.getElement();
 };
 CellComponent.prototype.getElement = function () {
        return this._cell.getElement();
 };
@@ -5873,10 +5247,6 @@ CellComponent.prototype.restoreOldValue = function () {
        this._cell.setValueActual(this._cell.getOldValue());
 };
 
        this._cell.setValueActual(this._cell.getOldValue());
 };
 
-CellComponent.prototype.restoreInitialValue = function () {
-       this._cell.setValueActual(this._cell.initialValue);
-};
-
 CellComponent.prototype.edit = function (force) {
        return this._cell.edit(force);
 };
 CellComponent.prototype.edit = function (force) {
        return this._cell.edit(force);
 };
@@ -5904,7 +5274,7 @@ CellComponent.prototype.validate = function () {
 };
 
 CellComponent.prototype.clearValidation = function () {
 };
 
 CellComponent.prototype.clearValidation = function () {
-       if (this._cell.table.modExists("validate", true)) {
+       if (self.table.modExists("validate", true)) {
                this._cell.table.modules.validate.clearValidation(this._cell);
        }
 };
                this._cell.table.modules.validate.clearValidation(this._cell);
        }
 };
@@ -5932,7 +5302,6 @@ var Cell = function Cell(column, row) {
        this.row = row;
        this.element = null;
        this.value = null;
        this.row = row;
        this.element = null;
        this.value = null;
-       this.initialValue;
        this.oldValue = null;
        this.modules = {};
 
        this.oldValue = null;
        this.modules = {};
 
@@ -5942,8 +5311,6 @@ var Cell = function Cell(column, row) {
 
        this.component = null;
 
 
        this.component = null;
 
-       this.loaded = false; //track if the cell has been added to the DOM yet
-
        this.build();
 };
 
        this.build();
 };
 
@@ -5958,8 +5325,6 @@ Cell.prototype.build = function () {
        this._configureCell();
 
        this.setValueActual(this.column.getFieldValue(this.row.data));
        this._configureCell();
 
        this.setValueActual(this.column.getFieldValue(this.row.data));
-
-       this.initialValue = this.value;
 };
 
 Cell.prototype.generateElement = function () {
 };
 
 Cell.prototype.generateElement = function () {
@@ -6341,11 +5706,6 @@ Cell.prototype._generateTooltip = function () {
 
 //////////////////// Getters ////////////////////
 Cell.prototype.getElement = function () {
 
 //////////////////// Getters ////////////////////
 Cell.prototype.getElement = function () {
-       if (!this.loaded) {
-               this.loaded = true;
-               this.layoutElement();
-       }
-
        return this.element;
 };
 
        return this.element;
 };
 
@@ -6375,17 +5735,11 @@ Cell.prototype.setValue = function (value, mutate) {
                        this.column.cellEvents.cellEdited.call(this.table, component);
                }
 
                        this.column.cellEvents.cellEdited.call(this.table, component);
                }
 
-               if (this.table.options.groupUpdateOnCellEdit && this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.groupRows.reassignRowToGroup(this.row);
-               }
-
                this.cellRendered();
 
                this.table.options.cellEdited.call(this.table, component);
 
                this.cellRendered();
 
                this.table.options.cellEdited.call(this.table, component);
 
-               if (this.table.options.dataChanged) {
-                       this.table.options.dataChanged.call(this.table, this.table.rowManager.getData());
-               }
+               this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
        }
 };
 
        }
 };
 
@@ -6440,21 +5794,16 @@ Cell.prototype.setValueActual = function (value) {
                this.table.modules.reactiveData.unblock();
        }
 
                this.table.modules.reactiveData.unblock();
        }
 
-       if (this.loaded) {
-               this.layoutElement();
-       }
-};
-
-Cell.prototype.layoutElement = function () {
        this._generateContents();
        this._generateTooltip();
 
        //set resizable handles
        this._generateContents();
        this._generateTooltip();
 
        //set resizable handles
-       if (this.table.options.resizableColumns && this.table.modExists("resizeColumns") && this.row.type === "row") {
+       if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
                this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
        }
 
                this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
        }
 
-       if ((this.column.definition.contextMenu || this.column.definition.clickMenu) && this.table.modExists("menu")) {
+       //set column menu
+       if (this.column.definition.contextMenu && this.table.modExists("menu")) {
                this.table.modules.menu.initializeCell(this);
        }
 
                this.table.modules.menu.initializeCell(this);
        }
 
@@ -6503,7 +5852,7 @@ Cell.prototype.getHeight = function () {
 };
 
 Cell.prototype.show = function () {
 };
 
 Cell.prototype.show = function () {
-       this.element.style.display = this.column.vertAlign ? "inline-flex" : "";
+       this.element.style.display = "";
 };
 
 Cell.prototype.hide = function () {
 };
 
 Cell.prototype.hide = function () {
@@ -6539,7 +5888,7 @@ Cell.prototype.validate = function () {
 };
 
 Cell.prototype.delete = function () {
 };
 
 Cell.prototype.delete = function () {
-       if (!this.table.rowManager.redrawBlock && this.element.parentNode) {
+       if (!this.table.rowManager.redrawBlock) {
                this.element.parentNode.removeChild(this.element);
        }
 
                this.element.parentNode.removeChild(this.element);
        }
 
@@ -6551,10 +5900,6 @@ Cell.prototype.delete = function () {
                this.table.modules.edit.clearEdited(this);
        }
 
                this.table.modules.edit.clearEdited(this);
        }
 
-       if (this.table.options.history) {
-               this.table.modules.history.clearComponentHistory(this);
-       }
-
        this.element = false;
        this.column.deleteCell(this);
        this.row.deleteCell(this);
        this.element = false;
        this.column.deleteCell(this);
        this.row.deleteCell(this);
@@ -6763,20 +6108,15 @@ var Tabulator = function Tabulator(element, options) {
        this.columnManager = null; // hold Column Manager
        this.rowManager = null; //hold Row Manager
        this.footerManager = null; //holder Footer Manager
        this.columnManager = null; // hold Column Manager
        this.rowManager = null; //hold Row Manager
        this.footerManager = null; //holder Footer Manager
-       this.vdomHoz = null; //holder horizontal virtual dom
-
-
        this.browser = ""; //hold current browser type
        this.browserSlow = false; //handle reduced functionality for slower browsers
        this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
        this.browser = ""; //hold current browser type
        this.browserSlow = false; //handle reduced functionality for slower browsers
        this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
-       this.rtl = false; //check if the table is in RTL mode
 
        this.modules = {}; //hold all modules bound to this table
 
 
        this.modules = {}; //hold all modules bound to this table
 
-       if (this.initializeElement(element)) {
-               this.initializeOptions(options || {});
-               this._create();
-       }
+       this.initializeElement(element);
+       this.initializeOptions(options || {});
+       this._create();
 
        Tabulator.prototype.comms.register(this); //register table for inderdevice communication
 };
 
        Tabulator.prototype.comms.register(this); //register table for inderdevice communication
 };
@@ -6802,14 +6142,12 @@ Tabulator.prototype.defaultOptions = {
        columns: [], //store for colum header info
 
        cellHozAlign: "", //horizontal align columns
        columns: [], //store for colum header info
 
        cellHozAlign: "", //horizontal align columns
-       cellVertAlign: "", //vertical align columns
-       headerHozAlign: "", //horizontal header alignment
+       cellVertAlign: "", //certical align columns
 
 
        data: [], //default starting data
 
        autoColumns: false, //build columns from data row structure
 
 
        data: [], //default starting data
 
        autoColumns: false, //build columns from data row structure
-       autoColumnsDefinitions: false,
 
        reactiveData: false, //enable data reactivity
 
 
        reactiveData: false, //enable data reactivity
 
@@ -6829,14 +6167,11 @@ Tabulator.prototype.defaultOptions = {
 
        headerSort: true, //set default global header sort
        headerSortTristate: false, //set default tristate header sorting
 
        headerSort: true, //set default global header sort
        headerSortTristate: false, //set default tristate header sorting
-       headerSortElement: "<div class='tabulator-arrow'></div>", //header sort element
 
        footerElement: false, //hold footer element
 
        index: "id", //filed for row index
 
 
        footerElement: false, //hold footer element
 
        index: "id", //filed for row index
 
-       textDirection: "auto",
-
        keybindings: [], //array for keybindings
 
        tabEndNewRow: false, //create new row when tab to end of table
        keybindings: [], //array for keybindings
 
        tabEndNewRow: false, //create new row when tab to end of table
@@ -6864,8 +6199,6 @@ Tabulator.prototype.defaultOptions = {
        downloadRowRange: "active", //restrict download to active rows only
 
        dataTree: false, //enable data tree
        downloadRowRange: "active", //restrict download to active rows only
 
        dataTree: false, //enable data tree
-       dataTreeFilter: true, //filter child rows
-       dataTreeSort: true, //sort child rows
        dataTreeElementColumn: false,
        dataTreeBranchElement: true, //show data tree branch element
        dataTreeChildIndent: 9, //data tree child indent in px
        dataTreeElementColumn: false,
        dataTreeBranchElement: true, //show data tree branch element
        dataTreeChildIndent: 9, //data tree child indent in px
@@ -6910,7 +6243,6 @@ Tabulator.prototype.defaultOptions = {
 
        virtualDom: true, //enable DOM virtualization
        virtualDomBuffer: 0, // set virtual DOM buffer size
 
        virtualDom: true, //enable DOM virtualization
        virtualDomBuffer: 0, // set virtual DOM buffer size
-       virtualDomHoz: false, //enable horizontal DOM virtualization
 
        persistentLayout: false, //DEPRICATED - REMOVE in 5.0
        persistentSort: false, //DEPRICATED - REMOVE in 5.0
 
        persistentLayout: false, //DEPRICATED - REMOVE in 5.0
        persistentSort: false, //DEPRICATED - REMOVE in 5.0
@@ -6955,7 +6287,6 @@ Tabulator.prototype.defaultOptions = {
        groupBy: false, //enable table grouping and set field to group by
        groupStartOpen: true, //starting state of group
        groupValues: false,
        groupBy: false, //enable table grouping and set field to group by
        groupStartOpen: true, //starting state of group
        groupValues: false,
-       groupUpdateOnCellEdit: false,
 
        groupHeader: false, //header generation function
        groupHeaderPrint: null,
 
        groupHeader: false, //header generation function
        groupHeaderPrint: null,
@@ -7016,7 +6347,6 @@ Tabulator.prototype.defaultOptions = {
        rowMouseOut: false,
        rowMouseMove: false,
        rowContextMenu: false,
        rowMouseOut: false,
        rowMouseMove: false,
        rowContextMenu: false,
-       rowClickMenu: false,
        rowAdded: function rowAdded() {},
        rowDeleted: function rowDeleted() {},
        rowMoved: function rowMoved() {},
        rowAdded: function rowAdded() {},
        rowDeleted: function rowDeleted() {},
        rowMoved: function rowMoved() {},
@@ -7056,8 +6386,7 @@ Tabulator.prototype.defaultOptions = {
        //data callbacks
        dataLoading: function dataLoading() {},
        dataLoaded: function dataLoaded() {},
        //data callbacks
        dataLoading: function dataLoading() {},
        dataLoaded: function dataLoaded() {},
-       dataEdited: false, //DEPRECATED
-       dataChanged: false,
+       dataEdited: function dataEdited() {},
 
        //ajax callbacks
        ajaxRequesting: function ajaxRequesting() {},
 
        //ajax callbacks
        ajaxRequesting: function ajaxRequesting() {},
@@ -7082,7 +6411,6 @@ Tabulator.prototype.defaultOptions = {
        groupDblClick: false,
        groupContext: false,
        groupContextMenu: false,
        groupDblClick: false,
        groupContext: false,
        groupContextMenu: false,
-       groupClickMenu: false,
        groupTap: false,
        groupDblTap: false,
        groupTapHold: false,
        groupTap: false,
        groupDblTap: false,
        groupTapHold: false,
@@ -7125,9 +6453,9 @@ Tabulator.prototype.initializeOptions = function (options) {
                        this.options[key] = options[key];
                } else {
                        if (Array.isArray(this.defaultOptions[key])) {
                        this.options[key] = options[key];
                } else {
                        if (Array.isArray(this.defaultOptions[key])) {
-                               this.options[key] = Object.assign([], this.defaultOptions[key]);
+                               this.options[key] = [];
                        } else if (_typeof(this.defaultOptions[key]) === "object" && this.defaultOptions[key] !== null) {
                        } else if (_typeof(this.defaultOptions[key]) === "object" && this.defaultOptions[key] !== null) {
-                               this.options[key] = Object.assign({}, this.defaultOptions[key]);
+                               this.options[key] = {};
                        } else {
                                this.options[key] = this.defaultOptions[key];
                        }
                        } else {
                                this.options[key] = this.defaultOptions[key];
                        }
@@ -7155,28 +6483,6 @@ Tabulator.prototype.initializeElement = function (element) {
        }
 };
 
        }
 };
 
-Tabulator.prototype.rtlCheck = function () {
-       var style = window.getComputedStyle(this.element);
-
-       switch (this.options.textDirection) {
-               case "auto":
-                       if (style.direction !== "rtl") {
-                               break;
-                       };
-
-               case "rtl":
-                       this.element.classList.add("tabulator-rtl");
-                       this.rtl = true;
-                       break;
-
-               case "ltr":
-                       this.element.classList.add("tabulator-ltr");
-
-               default:
-                       this.rtl = false;
-       }
-};
-
 //convert depricated functionality to new functions
 Tabulator.prototype._mapDepricatedFunctionality = function () {
 
 //convert depricated functionality to new functions
 Tabulator.prototype._mapDepricatedFunctionality = function () {
 
@@ -7187,11 +6493,6 @@ Tabulator.prototype._mapDepricatedFunctionality = function () {
                }
        }
 
                }
        }
 
-       if (this.options.dataEdited) {
-               console.warn("DEPRECATION WARNING - dataEdited option has been deprecated, please use the dataChanged option instead");
-               this.options.dataChanged = this.options.dataEdited;
-       }
-
        if (this.options.downloadDataFormatter) {
                console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated");
        }
        if (this.options.downloadDataFormatter) {
                console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated");
        }
@@ -7272,8 +6573,6 @@ Tabulator.prototype._create = function () {
 
        this.bindModules();
 
 
        this.bindModules();
 
-       this.rtlCheck();
-
        if (this.element.tagName === "TABLE") {
                if (this.modExists("htmlTableImport", true)) {
                        this.modules.htmlTableImport.parseTable();
        if (this.element.tagName === "TABLE") {
                if (this.modExists("htmlTableImport", true)) {
                        this.modules.htmlTableImport.parseTable();
@@ -7287,10 +6586,6 @@ Tabulator.prototype._create = function () {
        this.columnManager.setRowManager(this.rowManager);
        this.rowManager.setColumnManager(this.columnManager);
 
        this.columnManager.setRowManager(this.rowManager);
        this.rowManager.setColumnManager(this.columnManager);
 
-       if (this.options.virtualDomHoz) {
-               this.vdomHoz = new VDomHoz(this);
-       }
-
        this._buildElement();
 
        this._loadInitialData();
        this._buildElement();
 
        this._loadInitialData();
@@ -7307,7 +6602,7 @@ Tabulator.prototype._clearObjectPointers = function () {
 
 //build tabulator element
 Tabulator.prototype._buildElement = function () {
 
 //build tabulator element
 Tabulator.prototype._buildElement = function () {
-       var _this24 = this;
+       var _this17 = this;
 
        var element = this.element,
            mod = this.modules,
 
        var element = this.element,
            mod = this.modules,
@@ -7349,9 +6644,6 @@ Tabulator.prototype._buildElement = function () {
        }
 
        //set localization
        }
 
        //set localization
-
-       mod.localize.initialize();
-
        if (options.headerFilterPlaceholder !== false) {
                mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
        }
        if (options.headerFilterPlaceholder !== false) {
                mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
        }
@@ -7449,7 +6741,7 @@ Tabulator.prototype._buildElement = function () {
        if (options.initialHeaderFilter && this.modExists("filter", true)) {
                options.initialHeaderFilter.forEach(function (item) {
 
        if (options.initialHeaderFilter && this.modExists("filter", true)) {
                options.initialHeaderFilter.forEach(function (item) {
 
-                       var column = _this24.columnManager.findColumn(item.field);
+                       var column = _this17.columnManager.findColumn(item.field);
 
                        if (column) {
                                mod.filter.setHeaderFilterValue(column, item.value);
 
                        if (column) {
                                mod.filter.setHeaderFilterValue(column, item.value);
@@ -7609,7 +6901,7 @@ Tabulator.prototype.restoreRedraw = function () {
 
 //local data from local file
 Tabulator.prototype.setDataFromLocalFile = function (extensions) {
 
 //local data from local file
 Tabulator.prototype.setDataFromLocalFile = function (extensions) {
-       var _this25 = this;
+       var _this18 = this;
 
        return new Promise(function (resolve, reject) {
                var input = document.createElement("input");
 
        return new Promise(function (resolve, reject) {
                var input = document.createElement("input");
@@ -7633,7 +6925,7 @@ Tabulator.prototype.setDataFromLocalFile = function (extensions) {
                                        return;
                                }
 
                                        return;
                                }
 
-                               _this25.setData(data).then(function (data) {
+                               _this18._setData(data).then(function (data) {
                                        resolve(data);
                                }).catch(function (err) {
                                        resolve(err);
                                        resolve(data);
                                }).catch(function (err) {
                                        resolve(err);
@@ -7788,14 +7080,14 @@ Tabulator.prototype.replaceData = function (data, params, config) {
 
 //update table data
 Tabulator.prototype.updateData = function (data) {
 
 //update table data
 Tabulator.prototype.updateData = function (data) {
-       var _this26 = this;
+       var _this19 = this;
 
        var self = this;
        var responses = 0;
 
        return new Promise(function (resolve, reject) {
 
        var self = this;
        var responses = 0;
 
        return new Promise(function (resolve, reject) {
-               if (_this26.modExists("ajax")) {
-                       _this26.modules.ajax.blockActiveRequest();
+               if (_this19.modExists("ajax")) {
+                       _this19.modules.ajax.blockActiveRequest();
                }
 
                if (typeof data === "string") {
                }
 
                if (typeof data === "string") {
@@ -7826,11 +7118,11 @@ Tabulator.prototype.updateData = function (data) {
 };
 
 Tabulator.prototype.addData = function (data, pos, index) {
 };
 
 Tabulator.prototype.addData = function (data, pos, index) {
-       var _this27 = this;
+       var _this20 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               if (_this27.modExists("ajax")) {
-                       _this27.modules.ajax.blockActiveRequest();
+               if (_this20.modExists("ajax")) {
+                       _this20.modules.ajax.blockActiveRequest();
                }
 
                if (typeof data === "string") {
                }
 
                if (typeof data === "string") {
@@ -7838,7 +7130,7 @@ Tabulator.prototype.addData = function (data, pos, index) {
                }
 
                if (data) {
                }
 
                if (data) {
-                       _this27.rowManager.addRows(data, pos, index).then(function (rows) {
+                       _this20.rowManager.addRows(data, pos, index).then(function (rows) {
                                var output = [];
 
                                rows.forEach(function (row) {
                                var output = [];
 
                                rows.forEach(function (row) {
@@ -7856,15 +7148,15 @@ Tabulator.prototype.addData = function (data, pos, index) {
 
 //update table data
 Tabulator.prototype.updateOrAddData = function (data) {
 
 //update table data
 Tabulator.prototype.updateOrAddData = function (data) {
-       var _this28 = this;
+       var _this21 = this;
 
        var self = this,
            rows = [],
            responses = 0;
 
        return new Promise(function (resolve, reject) {
 
        var self = this,
            rows = [],
            responses = 0;
 
        return new Promise(function (resolve, reject) {
-               if (_this28.modExists("ajax")) {
-                       _this28.modules.ajax.blockActiveRequest();
+               if (_this21.modExists("ajax")) {
+                       _this21.modules.ajax.blockActiveRequest();
                }
 
                if (typeof data === "string") {
                }
 
                if (typeof data === "string") {
@@ -7930,10 +7222,10 @@ Tabulator.prototype.getRowFromPosition = function (position, active) {
 
 //delete row from table
 Tabulator.prototype.deleteRow = function (index) {
 
 //delete row from table
 Tabulator.prototype.deleteRow = function (index) {
-       var _this29 = this;
+       var _this22 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               var self = _this29,
+               var self = _this22,
                    count = 0,
                    successCount = 0,
                    foundRows = [];
                    count = 0,
                    successCount = 0,
                    foundRows = [];
@@ -7955,7 +7247,7 @@ Tabulator.prototype.deleteRow = function (index) {
 
                //find matching rows
                index.forEach(function (item) {
 
                //find matching rows
                index.forEach(function (item) {
-                       var row = _this29.rowManager.findRow(item, true);
+                       var row = _this22.rowManager.findRow(item, true);
 
                        if (row) {
                                foundRows.push(row);
 
                        if (row) {
                                foundRows.push(row);
@@ -7968,7 +7260,7 @@ Tabulator.prototype.deleteRow = function (index) {
 
                //sort rows into correct order to ensure smooth delete from table
                foundRows.sort(function (a, b) {
 
                //sort rows into correct order to ensure smooth delete from table
                foundRows.sort(function (a, b) {
-                       return _this29.rowManager.rows.indexOf(a) > _this29.rowManager.rows.indexOf(b) ? 1 : -1;
+                       return _this22.rowManager.rows.indexOf(a) > _this22.rowManager.rows.indexOf(b) ? 1 : -1;
                });
 
                foundRows.forEach(function (row) {
                });
 
                foundRows.forEach(function (row) {
@@ -7985,17 +7277,17 @@ Tabulator.prototype.deleteRow = function (index) {
 
 //add row to table
 Tabulator.prototype.addRow = function (data, pos, index) {
 
 //add row to table
 Tabulator.prototype.addRow = function (data, pos, index) {
-       var _this30 = this;
+       var _this23 = this;
 
        return new Promise(function (resolve, reject) {
                if (typeof data === "string") {
                        data = JSON.parse(data);
                }
 
 
        return new Promise(function (resolve, reject) {
                if (typeof data === "string") {
                        data = JSON.parse(data);
                }
 
-               _this30.rowManager.addRows(data, pos, index).then(function (rows) {
+               _this23.rowManager.addRows(data, pos, index).then(function (rows) {
                        //recalc column calculations if present
                        //recalc column calculations if present
-                       if (_this30.modExists("columnCalcs")) {
-                               _this30.modules.columnCalcs.recalc(_this30.rowManager.activeRows);
+                       if (_this23.modExists("columnCalcs")) {
+                               _this23.modules.columnCalcs.recalc(_this23.rowManager.activeRows);
                        }
 
                        resolve(rows[0].getComponent());
                        }
 
                        resolve(rows[0].getComponent());
@@ -8005,10 +7297,10 @@ Tabulator.prototype.addRow = function (data, pos, index) {
 
 //update a row if it exitsts otherwise create it
 Tabulator.prototype.updateOrAddRow = function (index, data) {
 
 //update a row if it exitsts otherwise create it
 Tabulator.prototype.updateOrAddRow = function (index, data) {
-       var _this31 = this;
+       var _this24 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               var row = _this31.rowManager.findRow(index);
+               var row = _this24.rowManager.findRow(index);
 
                if (typeof data === "string") {
                        data = JSON.parse(data);
 
                if (typeof data === "string") {
                        data = JSON.parse(data);
@@ -8017,8 +7309,8 @@ Tabulator.prototype.updateOrAddRow = function (index, data) {
                if (row) {
                        row.updateData(data).then(function () {
                                //recalc column calculations if present
                if (row) {
                        row.updateData(data).then(function () {
                                //recalc column calculations if present
-                               if (_this31.modExists("columnCalcs")) {
-                                       _this31.modules.columnCalcs.recalc(_this31.rowManager.activeRows);
+                               if (_this24.modExists("columnCalcs")) {
+                                       _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
                                }
 
                                resolve(row.getComponent());
                                }
 
                                resolve(row.getComponent());
@@ -8026,10 +7318,10 @@ Tabulator.prototype.updateOrAddRow = function (index, data) {
                                reject(err);
                        });
                } else {
                                reject(err);
                        });
                } else {
-                       row = _this31.rowManager.addRows(data).then(function (rows) {
+                       row = _this24.rowManager.addRows(data).then(function (rows) {
                                //recalc column calculations if present
                                //recalc column calculations if present
-                               if (_this31.modExists("columnCalcs")) {
-                                       _this31.modules.columnCalcs.recalc(_this31.rowManager.activeRows);
+                               if (_this24.modExists("columnCalcs")) {
+                                       _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
                                }
 
                                resolve(rows[0].getComponent());
                                }
 
                                resolve(rows[0].getComponent());
@@ -8042,10 +7334,10 @@ Tabulator.prototype.updateOrAddRow = function (index, data) {
 
 //update row data
 Tabulator.prototype.updateRow = function (index, data) {
 
 //update row data
 Tabulator.prototype.updateRow = function (index, data) {
-       var _this32 = this;
+       var _this25 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               var row = _this32.rowManager.findRow(index);
+               var row = _this25.rowManager.findRow(index);
 
                if (typeof data === "string") {
                        data = JSON.parse(data);
 
                if (typeof data === "string") {
                        data = JSON.parse(data);
@@ -8066,13 +7358,13 @@ Tabulator.prototype.updateRow = function (index, data) {
 
 //scroll to row in DOM
 Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
 
 //scroll to row in DOM
 Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
-       var _this33 = this;
+       var _this26 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               var row = _this33.rowManager.findRow(index);
+               var row = _this26.rowManager.findRow(index);
 
                if (row) {
 
                if (row) {
-                       _this33.rowManager.scrollToRow(row, position, ifVisible).then(function () {
+                       _this26.rowManager.scrollToRow(row, position, ifVisible).then(function () {
                                resolve();
                        }).catch(function (err) {
                                reject(err);
                                resolve();
                        }).catch(function (err) {
                                reject(err);
@@ -8208,12 +7500,12 @@ Tabulator.prototype.toggleColumn = function (field) {
 };
 
 Tabulator.prototype.addColumn = function (definition, before, field) {
 };
 
 Tabulator.prototype.addColumn = function (definition, before, field) {
-       var _this34 = this;
+       var _this27 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               var column = _this34.columnManager.findColumn(field);
+               var column = _this27.columnManager.findColumn(field);
 
 
-               _this34.columnManager.addColumn(definition, before, column).then(function (column) {
+               _this27.columnManager.addColumn(definition, before, column).then(function (column) {
                        resolve(column.getComponent());
                }).catch(function (err) {
                        reject(err);
                        resolve(column.getComponent());
                }).catch(function (err) {
                        reject(err);
@@ -8222,10 +7514,10 @@ Tabulator.prototype.addColumn = function (definition, before, field) {
 };
 
 Tabulator.prototype.deleteColumn = function (field) {
 };
 
 Tabulator.prototype.deleteColumn = function (field) {
-       var _this35 = this;
+       var _this28 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               var column = _this35.columnManager.findColumn(field);
+               var column = _this28.columnManager.findColumn(field);
 
                if (column) {
                        column.delete().then(function () {
 
                if (column) {
                        column.delete().then(function () {
@@ -8241,10 +7533,10 @@ Tabulator.prototype.deleteColumn = function (field) {
 };
 
 Tabulator.prototype.updateColumnDefinition = function (field, definition) {
 };
 
 Tabulator.prototype.updateColumnDefinition = function (field, definition) {
-       var _this36 = this;
+       var _this29 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               var column = _this36.columnManager.findColumn(field);
+               var column = _this29.columnManager.findColumn(field);
 
                if (column) {
                        column.updateDefinition(definition).then(function (col) {
 
                if (column) {
                        column.updateDefinition(definition).then(function (col) {
@@ -8276,13 +7568,13 @@ Tabulator.prototype.moveColumn = function (from, to, after) {
 
 //scroll to column in DOM
 Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
 
 //scroll to column in DOM
 Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
-       var _this37 = this;
+       var _this30 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               var column = _this37.columnManager.findColumn(field);
+               var column = _this30.columnManager.findColumn(field);
 
                if (column) {
 
                if (column) {
-                       _this37.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
+                       _this30.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
                                resolve();
                        }).catch(function (err) {
                                reject(err);
                                resolve();
                        }).catch(function (err) {
                                reject(err);
@@ -8486,7 +7778,7 @@ Tabulator.prototype.getInvalidCells = function () {
 };
 
 Tabulator.prototype.clearCellValidation = function (cells) {
 };
 
 Tabulator.prototype.clearCellValidation = function (cells) {
-       var _this38 = this;
+       var _this31 = this;
 
        if (this.modExists("validate", true)) {
 
 
        if (this.modExists("validate", true)) {
 
@@ -8499,7 +7791,7 @@ Tabulator.prototype.clearCellValidation = function (cells) {
                }
 
                cells.forEach(function (cell) {
                }
 
                cells.forEach(function (cell) {
-                       _this38.modules.validate.clearValidation(cell._getSelf());
+                       _this31.modules.validate.clearValidation(cell._getSelf());
                });
        }
 };
                });
        }
 };
@@ -8540,14 +7832,14 @@ Tabulator.prototype.setPage = function (page) {
 };
 
 Tabulator.prototype.setPageToRow = function (row) {
 };
 
 Tabulator.prototype.setPageToRow = function (row) {
-       var _this39 = this;
+       var _this32 = this;
 
        return new Promise(function (resolve, reject) {
 
        return new Promise(function (resolve, reject) {
-               if (_this39.options.pagination && _this39.modExists("page")) {
-                       row = _this39.rowManager.findRow(row);
+               if (_this32.options.pagination && _this32.modExists("page")) {
+                       row = _this32.rowManager.findRow(row);
 
                        if (row) {
 
                        if (row) {
-                               _this39.modules.page.setPageToRow(row).then(function () {
+                               _this32.modules.page.setPageToRow(row).then(function () {
                                        resolve();
                                }).catch(function () {
                                        reject();
                                        resolve();
                                }).catch(function () {
                                        reject();
@@ -8624,20 +7916,6 @@ Tabulator.prototype.setGroupBy = function (groups) {
        }
 };
 
        }
 };
 
-Tabulator.prototype.setGroupValues = function (groupValues) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupValues = groupValues;
-               this.modules.groupRows.initialize();
-               this.rowManager.refreshActiveData("display");
-
-               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                       this.modules.persistence.save("group");
-               }
-       } else {
-               return false;
-       }
-};
-
 Tabulator.prototype.setGroupStartOpen = function (values) {
        if (this.modExists("groupRows", true)) {
                this.options.groupStartOpen = values;
 Tabulator.prototype.setGroupStartOpen = function (values) {
        if (this.modExists("groupRows", true)) {
                this.options.groupStartOpen = values;
@@ -8696,7 +7974,7 @@ Tabulator.prototype.getEditedCells = function () {
 };
 
 Tabulator.prototype.clearCellEdited = function (cells) {
 };
 
 Tabulator.prototype.clearCellEdited = function (cells) {
-       var _this40 = this;
+       var _this33 = this;
 
        if (this.modExists("edit", true)) {
 
 
        if (this.modExists("edit", true)) {
 
@@ -8709,7 +7987,7 @@ Tabulator.prototype.clearCellEdited = function (cells) {
                }
 
                cells.forEach(function (cell) {
                }
 
                cells.forEach(function (cell) {
-                       _this40.modules.edit.clearEdited(cell._getSelf());
+                       _this33.modules.edit.clearEdited(cell._getSelf());
                });
        }
 };
                });
        }
 };
@@ -8942,7 +8220,7 @@ Tabulator.prototype.helpers = {
        },
 
        deepClone: function deepClone(obj) {
        },
 
        deepClone: function deepClone(obj) {
-               var clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);
+               var clone = Array.isArray(obj) ? [] : {};
 
                for (var i in obj) {
                        if (obj[i] != null && _typeof(obj[i]) === "object") {
 
                for (var i in obj) {
                        if (obj[i] != null && _typeof(obj[i]) === "object") {
@@ -8951,6 +8229,8 @@ Tabulator.prototype.helpers = {
                                } else {
                                        clone[i] = this.deepClone(obj[i]);
                                }
                                } else {
                                        clone[i] = this.deepClone(obj[i]);
                                }
+                       } else {
+                               clone[i] = obj[i];
                        }
                }
                return clone;
                        }
                }
                return clone;
@@ -9060,16 +8340,10 @@ Layout.prototype.modes = {
 
        "fitData": function fitData(columns) {
 
 
        "fitData": function fitData(columns) {
 
-               if (this.table.options.virtualDomHoz) {
-
-                       this.table.vdomHoz.fitDataLayoutOverride();
-               } else {
-
-                       columns.forEach(function (column) {
+               columns.forEach(function (column) {
 
 
-                               column.reinitializeWidth();
-                       });
-               }
+                       column.reinitializeWidth();
+               });
 
                if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
 
 
                if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
 
@@ -9110,7 +8384,7 @@ Layout.prototype.modes = {
        //resize columns to fit data the contain and stretch last column to fill table
 
        "fitDataStretch": function fitDataStretch(columns) {
        //resize columns to fit data the contain and stretch last column to fill table
 
        "fitDataStretch": function fitDataStretch(columns) {
-               var _this41 = this;
+               var _this34 = this;
 
                var colsWidth = 0,
                    tableWidth = this.table.rowManager.element.clientWidth,
 
                var colsWidth = 0,
                    tableWidth = this.table.rowManager.element.clientWidth,
@@ -9124,7 +8398,7 @@ Layout.prototype.modes = {
                                column.reinitializeWidth();
                        }
 
                                column.reinitializeWidth();
                        }
 
-                       if (_this41.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
+                       if (_this34.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
 
                                lastCol = column;
                        }
 
                                lastCol = column;
                        }
@@ -9392,21 +8666,16 @@ var Localize = function Localize(table) {
        this.locale = "default"; //current locale
        this.lang = false; //current language
        this.bindings = {}; //update events to call when locale is changed
        this.locale = "default"; //current locale
        this.lang = false; //current language
        this.bindings = {}; //update events to call when locale is changed
-       this.langList = {};
-};
-
-Localize.prototype.initialize = function () {
-       this.langList = Tabulator.prototype.helpers.deepClone(this.langs);
 };
 
 //set header placehoder
 Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
 };
 
 //set header placehoder
 Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
-       this.langList.default.headerFilters.default = placeholder;
+       this.langs.default.headerFilters.default = placeholder;
 };
 
 //set header filter placeholder by column
 Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
 };
 
 //set header filter placeholder by column
 Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
-       this.langList.default.headerFilters.columns[column] = placeholder;
+       this.langs.default.headerFilters.columns[column] = placeholder;
 
        if (this.lang && !this.lang.headerFilters.columns[column]) {
                this.lang.headerFilters.columns[column] = placeholder;
 
        if (this.lang && !this.lang.headerFilters.columns[column]) {
                this.lang.headerFilters.columns[column] = placeholder;
@@ -9415,10 +8684,10 @@ Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placehol
 
 //setup a lang description object
 Localize.prototype.installLang = function (locale, lang) {
 
 //setup a lang description object
 Localize.prototype.installLang = function (locale, lang) {
-       if (this.langList[locale]) {
-               this._setLangProp(this.langList[locale], lang);
+       if (this.langs[locale]) {
+               this._setLangProp(this.langs[locale], lang);
        } else {
        } else {
-               this.langList[locale] = lang;
+               this.langs[locale] = lang;
        }
 };
 
        }
 };
 
@@ -9441,6 +8710,7 @@ Localize.prototype.setLocale = function (desiredLocale) {
        //fill in any matching languge values
        function traverseLang(trans, path) {
                for (var prop in trans) {
        //fill in any matching languge values
        function traverseLang(trans, path) {
                for (var prop in trans) {
+
                        if (_typeof(trans[prop]) == "object") {
                                if (!path[prop]) {
                                        path[prop] = {};
                        if (_typeof(trans[prop]) == "object") {
                                if (!path[prop]) {
                                        path[prop] = {};
@@ -9461,10 +8731,10 @@ Localize.prototype.setLocale = function (desiredLocale) {
        if (desiredLocale) {
 
                //if locale is not set, check for matching top level locale else use default
        if (desiredLocale) {
 
                //if locale is not set, check for matching top level locale else use default
-               if (!self.langList[desiredLocale]) {
+               if (!self.langs[desiredLocale]) {
                        var prefix = desiredLocale.split("-")[0];
 
                        var prefix = desiredLocale.split("-")[0];
 
-                       if (self.langList[prefix]) {
+                       if (self.langs[prefix]) {
                                console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
                                desiredLocale = prefix;
                        } else {
                                console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
                                desiredLocale = prefix;
                        } else {
@@ -9477,10 +8747,10 @@ Localize.prototype.setLocale = function (desiredLocale) {
        self.locale = desiredLocale;
 
        //load default lang template
        self.locale = desiredLocale;
 
        //load default lang template
-       self.lang = Tabulator.prototype.helpers.deepClone(self.langList.default || {});
+       self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
 
        if (desiredLocale != "default") {
 
        if (desiredLocale != "default") {
-               traverseLang(self.langList[desiredLocale], self.lang);
+               traverseLang(self.langs[desiredLocale], self.lang);
        }
 
        self.table.options.localized.call(self.table, self.locale, self.lang);
        }
 
        self.table.options.localized.call(self.table, self.locale, self.lang);
@@ -9495,7 +8765,7 @@ Localize.prototype.getLocale = function (locale) {
 
 //get lang object for given local or current if none provided
 Localize.prototype.getLang = function (locale) {
 
 //get lang object for given local or current if none provided
 Localize.prototype.getLang = function (locale) {
-       return locale ? this.langList[locale] : this.lang;
+       return locale ? this.langs[locale] : this.lang;
 };
 
 //get text for current locale
 };
 
 //get text for current locale
diff --git a/admin/js/vendors/tabulator/js/tabulator_core.min.js b/admin/js/vendors/tabulator/js/tabulator_core.min.js
new file mode 100644 (file)
index 0000000..92522ab
--- /dev/null
@@ -0,0 +1,6 @@
+/* Tabulator v4.7.0 (c) Oliver Folkerd */
+"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return l;n++}}}),String.prototype.includes||(String.prototype.includes=function(t,e){if(t instanceof RegExp)throw TypeError("first argument must not be a RegExp");return void 0===e&&(e=0),-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),i=o.length>>>0;if(0===i)return!1;for(var n=0|e,l=Math.max(n>=0?n:i-Math.abs(n),0);l<i;){if(function(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}(o[l],t))return!0;l++}return!1}}),"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(t,e){if(null===t||void 0===t)throw new TypeError("Cannot convert undefined or null to object");for(var o=Object(t),i=1;i<arguments.length;i++){var n=arguments[i];if(null!==n&&void 0!==n)for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(o[l]=n[l])}return o},writable:!0,configurable:!0});var ColumnManager=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};ColumnManager.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},ColumnManager.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},ColumnManager.prototype.initialize=function(){},ColumnManager.prototype.setRowManager=function(t){this.rowManager=t},ColumnManager.prototype.getElement=function(){return this.element},ColumnManager.prototype.getHeadersElement=function(){return this.headersElement},ColumnManager.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},ColumnManager.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var l={field:n,title:n},s=e[n];switch(void 0===s?"undefined":_typeof(s)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(s)?"array":"string";break;default:o=isNaN(s)||""===s?s.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}l.sorter=o,i.push(l)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},ColumnManager.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},ColumnManager.prototype._addColumn=function(t,e,o){var i=new Column(t,this),n=i.getElement(),l=o?this.findColumnIndex(o):o;if(o&&l>-1){var s=this.columns.indexOf(o.getTopColumn()),a=o.getElement();e?(this.columns.splice(s,0,i),a.parentNode.insertBefore(n,a)):(this.columns.splice(s+1,0,i),a.parentNode.insertBefore(n,a.nextSibling))}else e?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement())),i.columnRendered();return i},ColumnManager.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},ColumnManager.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},ColumnManager.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},ColumnManager.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnHeaderVertAlign,e)}),t.rowManager.adjustTableSize()},ColumnManager.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof Column)return t;if(t instanceof ColumnComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},ColumnManager.prototype.getColumnByField=function(t){return this.columnsByField[t]},ColumnManager.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},ColumnManager.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},ColumnManager.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},ColumnManager.prototype.getColumns=function(){return this.columns},ColumnManager.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},ColumnManager.prototype.getRealColumns=function(){return this.columnsByIndex},ColumnManager.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},ColumnManager.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},ColumnManager.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},ColumnManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},ColumnManager.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},ColumnManager.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.moveColumnActual=function(t,e,o){t.parent.isGroup?this._moveColumnInArray(t.parent.columns,t,e,o):this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},ColumnManager.prototype._moveColumnInArray=function(t,e,o,i,n){var l,s=t.indexOf(e);s>-1&&(t.splice(s,1),l=t.indexOf(o),l>-1?i&&(l+=1):l=s,t.splice(l,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(s,1)[0];t.cells.splice(l,0,e)}}))},ColumnManager.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,l=0,s=0,a=t.getElement();return new Promise(function(r,u){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":s=-i.element.clientWidth/2;break;case"right":s=a.clientWidth-i.headersElement.clientWidth}if(!o&&(l=a.offsetLeft)>0&&l+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+s,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),r()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},ColumnManager.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},ColumnManager.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,l,s;i.visible&&(n=i.definition.width||0,l=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),s="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=s>l?s:l)}),o},ColumnManager.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i._addColumn(t,e,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&s.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),n(s)})},ColumnManager.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},ColumnManager.prototype.redraw=function(t){t&&(Tabulator.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var ColumnComponent=function(t){this._column=t,this.type="ColumnComponent"};ColumnComponent.prototype.getElement=function(){return this._column.getElement()},ColumnComponent.prototype.getDefinition=function(){return this._column.getDefinition()},ColumnComponent.prototype.getField=function(){return this._column.getField()},ColumnComponent.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._column.visible},ColumnComponent.prototype.isVisible=function(){return this._column.visible},ColumnComponent.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},ColumnComponent.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},ColumnComponent.prototype.toggle=function(){this._column.visible?this.hide():this.show()},ColumnComponent.prototype.delete=function(){return this._column.delete()},ColumnComponent.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getParentColumn=function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()},ColumnComponent.prototype._getSelf=function(){return this._column},ColumnComponent.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},ColumnComponent.prototype.getTable=function(){return this._column.table},ColumnComponent.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},ColumnComponent.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},ColumnComponent.prototype.getHeaderFilterValue=function(){if(this._column.table.modExists("filter",!0))return this._column.table.modules.filter.getHeaderFilterValue(this._column)},ColumnComponent.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},ColumnComponent.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},ColumnComponent.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.updateDefinition=function(t){return this._column.updateDefinition(t)},ColumnComponent.prototype.getWidth=function(){return this._column.getWidth()},ColumnComponent.prototype.setWidth=function(t){return!0===t?this._column.reinitializeWidth(!0):this._column.setWidth(t)},ColumnComponent.prototype.validate=function(){return this._column.validate()};var Column=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};Column.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},Column.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},Column.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},Column.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},Column.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},Column.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},Column.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},Column.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign")),void 0!==this.definition.downloadTitle&&(this.definition.titleDownload=this.definition.downloadTitle,console.warn("downloadTitle definition property is deprecated, you should now use titleDownload"))},Column.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},Column.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.table.modExists("persistence")&&t.table.modules.persistence.config.columns&&t.table.modules.persistence.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},Column.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},Column.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),(e.headerContextMenu||e.headerMenu)&&o.modExists("menu")&&o.modules.menu.initializeColumnHeader(t),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.hozAlign?t.table.options.cellHozAlign:t.definition.hozAlign,t.vertAlign=void 0===t.definition.vertAlign?t.table.options.cellVertAlign:t.definition.vertAlign},Column.prototype._buildColumnHeaderContent=function(){var t=(this.definition,this.table,document.createElement("div"));return t.classList.add("tabulator-col-content"),this.titleElement=this._buildColumnHeaderTitle(),t.appendChild(this.titleElement),t},Column.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},Column.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,l,s,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),s=function(t){a.titleFormatterRendered=t},l={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,l,n,s),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(t.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},Column.prototype._buildGroupHeader=function(){var t=this;if(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass){this.definition.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}(this.definition.headerContextMenu||this.definition.headerMenu)&&this.table.modExists("menu")&&this.table.modules.menu.initializeColumnHeader(this),this.element.appendChild(this.groupElement)},Column.prototype._getFlatData=function(t){return t[this.field]},Column.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,l=0;l<n&&(o=o[i[l]],e=o,o);l++);return e},Column.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},Column.prototype._setNestedData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,l=0;l<n;l++)if(l==n-1)o[i[l]]=e;else{if(!o[i[l]]){if(void 0===e)break;o[i[l]]={}}o=o[i[l]]}},Column.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},Column.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},Column.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},Column.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},Column.prototype.getElement=function(){return this.element},Column.prototype.getGroupElement=function(){return this.groupElement},Column.prototype.getField=function(){return this.field},Column.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},Column.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},Column.prototype.getColumns=function(){return this.columns},Column.prototype.getCells=function(){return this.cells},Column.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},Column.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},Column.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},Column.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},Column.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},Column.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},Column.prototype.getWidth=function(){var t=0;return this.isGroup?this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}):t=this.width,t},Column.prototype.getHeight=function(){return this.element.offsetHeight},Column.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},Column.prototype.delete=function(){var t=this;return new Promise(function(e,o){t.isGroup&&t.columns.forEach(function(t){t.delete()}),t.table.modExists("edit")&&t.table.modules.edit.currentCell.column===t&&t.table.modules.edit.cancelEdit();for(var i=t.cells.length,n=0;n<i;n++)t.cells[0].delete();t.element.parentNode.removeChild(t.element),t.table.columnManager.deregisterColumn(t),e()})},Column.prototype.columnRendered=function(){
+this.titleFormatterRendered&&this.titleFormatterRendered()},Column.prototype.validate=function(){var t=[];return this.cells.forEach(function(e){e.validate()||t.push(e.getComponent())}),!t.length||t},Column.prototype.generateCell=function(t){var e=this,o=new Cell(e,t);return this.cells.push(o),o},Column.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},Column.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},Column.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},Column.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},Column.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},Column.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},Column.prototype.updateDefinition=function(t){var e=this;return new Promise(function(o,i){var n;e.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),i("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(n=Object.assign({},e.getDefinition()),n=Object.assign(n,t),e.table.columnManager.addColumn(n,!1,e).then(function(t){n.field==e.field&&(e.field=!1),e.delete().then(function(){o(t.getComponent())}).catch(function(t){i(t)})}).catch(function(t){i(t)}))})},Column.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Column.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams","titlePrint","titleClipboard","titleHtmlOutput","titleDownload"],Column.prototype.getComponent=function(){return this.component||(this.component=new ColumnComponent(this)),this.component};var RowManager=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};RowManager.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},RowManager.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},RowManager.prototype.getElement=function(){return this.element},RowManager.prototype.getTableElement=function(){return this.tableElement},RowManager.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},RowManager.prototype.setColumnManager=function(t){this.columnManager=t},RowManager.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e),t.table.options.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e),t.table.options.scrollVertical(e)):t.scrollTop=e})},RowManager.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof Row)return t;if(t instanceof RowComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},RowManager.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},RowManager.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},RowManager.prototype.scrollToRow=function(t,e,o){var i,n=this,l=this.getDisplayRows().indexOf(t),s=t.getElement(),a=0;return new Promise(function(t,r){if(l>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=Tabulator.prototype.helpers.elOffset(s).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-l)>Math.abs(n.vDomBottom-l)?"bottom":"top"}if(!o&&Tabulator.prototype.helpers.elVisible(s)&&(a=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-s.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(l,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(s.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-s.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-s.offsetTop)+s.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+s.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),r("Scroll Error - Row not visible")})},RowManager.prototype.setData=function(t,e,o){var i=this,n=this;return new Promise(function(l,s){e&&i.getDisplayRows().length?n.table.options.pagination?n._setDataActual(t,!0):i.reRenderInPosition(function(){n._setDataActual(t)}):(i.table.options.autoColumns&&o&&i.table.columnManager.generateColumnsFromRowData(t),i.resetScroll(),i._setDataActual(t)),l()})},RowManager.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new Row(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},RowManager.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},RowManager.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},RowManager.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},RowManager.prototype.addRows=function(t,e,o){var i=this,n=this,l=0,s=[];return new Promise(function(a,r){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),l=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var l=n.addRow(t,e,o,!0);s.push(l)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.regenerateRowNumbers(),a(s)})},RowManager.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},RowManager.prototype.addRowActual=function(t,e,o,i){var n,l,s=t instanceof Row?t:new Row(t||{},this),a=this.findAddRowPos(e),r=-1;if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(l=this.getDisplayRows(),a?l.length?o=l[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],a=!1):l.length&&(o=l[l.length-1],a=!(l.length<this.table.modules.page.getPageSize()))),void 0!==o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(s);var u=s.getGroup().rows;u.length>1&&(!o||o&&-1==u.indexOf(o)?a?u[0]!==s&&(o=u[0],this._moveRowInArray(s.getGroup().rows,s,o,!a)):u[u.length-1]!==s&&(o=u[u.length-1],this._moveRowInArray(s.getGroup().rows,s,o,!a)):this._moveRowInArray(s.getGroup().rows,s,o,!a))}return o&&(r=this.rows.indexOf(o)),o&&r>-1?(n=this.activeRows.indexOf(o),this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(a?e:e+1,0,s)}),n>-1&&this.activeRows.splice(a?n:n+1,0,s),this.rows.splice(a?r:r+1,0,s)):a?(this.displayRowIterator(function(t){t.unshift(s)}),this.activeRows.unshift(s),this.rows.unshift(s)):(this.displayRowIterator(function(t){t.push(s)}),this.activeRows.push(s),this.rows.push(s)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,s.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),s},RowManager.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{posFrom:this.getRowPosition(t),posTo:this.getRowPosition(e),to:e,after:o}),this.moveRowActual(t,e,o),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,t.getComponent())},RowManager.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){!o&&e instanceof Group&&(e=this.table.rowManager.prevDisplayRow(t)||e);var n=e.getGroup(),l=t.getGroup();n===l?this._moveRowInArray(n.rows,t,e,o):(l&&l.removeRow(t),n.insertRow(t,e,o))}},RowManager.prototype._moveRowInArray=function(t,e,o,i){var n,l,s,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),l=t.indexOf(o),l>-1?i?t.splice(l+1,0,e):t.splice(l,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){s=n<l?n:l,a=l>n?l:n+1;for(var r=s;r<=a;r++)t[r]&&this.styleRow(t[r],r)}},RowManager.prototype.clearData=function(){this.setData([])},RowManager.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},RowManager.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},RowManager.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof Row&&"row"==i.type?i:this.nextDisplayRow(i,e)},RowManager.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!e||!i||i instanceof Row&&"row"==i.type?i:this.prevDisplayRow(i,e)},RowManager.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},RowManager.prototype.getData=function(t,e){var o=[];return this.getRows(t).forEach(function(t){"row"==t.type&&o.push(t.getData(e||"data"))}),o},RowManager.prototype.getComponents=function(t){var e=[];return this.getRows(t).forEach(function(t){e.push(t.getComponent())}),e},RowManager.prototype.getDataCount=function(t){return this.getRows(t).length},RowManager.prototype._genRemoteRequest=function(){var t=this,e=this.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=this.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[this.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var l=this.table.modules.filter.getFilters(!0,!0);i[this.table.modules.page.paginationDataSentNames.filters]=l}this.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t._setDataActual(e,!0)}).catch(function(t){})},RowManager.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},RowManager.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},RowManager.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},RowManager.prototype.refreshActiveData=function(t,e,o){var i,n=this,l=this.table,s=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||s.indexOf(t)<s.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:t,skipStage:e,renderInPosition:o}));switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),l.options.selectable&&!l.options.selectablePersistence&&l.modExists("selectRow")&&l.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:l.modExists("filter")?n.setActiveRows(l.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:l.modExists("sort")&&l.modules.sort.sort(this.activeRows),this.regenerateRowNumbers();case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&l.modules.frozenRows.isFrozen()&&(l.modules.frozenRows.getDisplayIndex()||l.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:l.options.groupBy&&l.modExists("groupRows")&&(l.modules.groupRows.getDisplayIndex()||l.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:l.options.dataTree&&l.modExists("dataTree")&&(l.modules.dataTree.getDisplayIndex()||l.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&l.modules.dataTree.setDisplayIndex(i)),l.options.pagination&&l.modExists("page")&&!o&&"local"==l.modules.page.getMode()&&l.modules.page.reset();case"page":e?e=!1:l.options.pagination&&l.modExists("page")&&(l.modules.page.getDisplayIndex()||l.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.page.getDisplayIndex(),"local"==l.modules.page.getMode()&&l.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(l.modules.page.getRows(this.getDisplayRows(i-1)),i))&&l.modules.page.setDisplayIndex(i))}Tabulator.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),l.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),l.modExists("columnCalcs")&&l.modules.columnCalcs.recalc(this.activeRows)},RowManager.prototype.regenerateRowNumbers=function(){var t=this;this.rowNumColumn&&this.activeRows.forEach(function(e){var o=e.getCell(t.rowNumColumn);o&&o._generateContents()})},RowManager.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},RowManager.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},RowManager.prototype.getNextDisplayIndex=function(){return this.displayRows.length},RowManager.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},RowManager.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},RowManager.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,l=0,s=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(s[a])if(i){if(!(o-s[a].getElement().offsetTop>=0))break;l=a}else if(e-s[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-s[a].getElement().offsetTop>=0))break;l=a}}else n=this.vDomTop,l=this.vDomBottom;return s.slice(n,l+1)},RowManager.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},RowManager.prototype.getRows=function(t){var e;switch(t){case"active":e=this.activeRows;break;case"display":e=this.table.rowManager.getDisplayRows();break;case"visible":e=this.getVisibleRows(!0);break;default:e=this.rows}return e},RowManager.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode())if(this.redrawBlock)t?t():this.redrawBlockRederInPosition=!0;else{for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,l=this.getDisplayRows(),s=this.vDomTop;s<=this.vDomBottom;s++)if(l[s]){var a=e-l[s].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=s}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},RowManager.prototype.setRenderMode=function(){this.table.options.virtualDom?(this.renderMode="virtual",this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):this.renderMode="classic"},RowManager.prototype.getRenderMode=function(){return this.renderMode},RowManager.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px"),this.table.options.renderComplete.call(this.table)},RowManager.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},RowManager.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},RowManager.prototype.renderEmptyScroll=function(){this.table.options.placeholder?this.tableElement.style.display="none":(this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden")},RowManager.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.display="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},RowManager.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},RowManager.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,l=i.element,s=0,a=0,r=0,u=0,c=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var d=(i.displayRowsCount-t+1)*i.vDomRowHeight;d<i.height&&(t-=Math.ceil((i.height-d)/i.vDomRowHeight))<0&&(t=0),s=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=s}else i._clearVirtualDom();if(i.displayRowsCount&&Tabulator.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||u<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var p=i.vDomBottom+1,m=h[p],f=0;i.styleRow(m,p),n.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),f=m.getHeight(),u<s?r+=f:a+=f,f>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*f),"group"!==m.type&&(c=!1),i.vDomBottom++,u++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-r,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-r,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+r)/u),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=r+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+r+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,l.scrollTop=this.scrollTop,n.style.minWidth=c?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},RowManager.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(-o):this.vDomScrollPosBottom=this.scrollTop)):(e>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(e):this.vDomScrollPosTop=this.scrollTop),o>=0&&this._addBottomRow(o))},RowManager.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.insertBefore(l.getElement(),o.firstChild),l.initialized&&l.heightInitialized||(this.vDomTopNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomTopPad-=s,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=s,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},RowManager.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},RowManager.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.appendChild(l.getElement()),l.initialized&&l.heightInitialized||(this.vDomBottomNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomBottomPad-=s,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=s,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},RowManager.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},RowManager.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},RowManager.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},RowManager.prototype.adjustTableSize=function(){var t,e=this.element.clientHeight;if("virtual"===this.renderMode){var o=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.fixedHeight?(this.element.style.minHeight="calc(100% - "+o+"px)",this.element.style.height="calc(100% - "+o+"px)",this.element.style.maxHeight="calc(100% - "+o+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-o+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||e==this.element.clientHeight||((t=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!t)&&this.redraw()}},RowManager.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},RowManager.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},RowManager.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},
+RowManager.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},RowManager.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var RowComponent=function(t){this._row=t};RowComponent.prototype.getData=function(t){return this._row.getData(t)},RowComponent.prototype.getElement=function(){return this._row.getElement()},RowComponent.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},RowComponent.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},RowComponent.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},RowComponent.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},RowComponent.prototype.delete=function(){return this._row.delete()},RowComponent.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},RowComponent.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},RowComponent.prototype.move=function(t,e){this._row.moveToRow(t,e)},RowComponent.prototype.update=function(t){return this._row.updateData(t)},RowComponent.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},RowComponent.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},RowComponent.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},RowComponent.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},RowComponent.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},RowComponent.prototype._getSelf=function(){return this._row},RowComponent.prototype.validate=function(){return this._row.validate()},RowComponent.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},RowComponent.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},RowComponent.prototype.isFrozen=function(){if(this._row.table.modExists("frozenRows",!0)){return this._row.table.modules.frozenRows.rows.indexOf(this._row)>-1}return!1},RowComponent.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},RowComponent.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},RowComponent.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},RowComponent.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},RowComponent.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},RowComponent.prototype.addTreeChild=function(t,e,o){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.addTreeChildRow(this._row,t,e,o)},RowComponent.prototype.reformat=function(){return this._row.reinitialize()},RowComponent.prototype.getGroup=function(){return this._row.getGroup().getComponent()},RowComponent.prototype.getTable=function(){return this._row.table},RowComponent.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},RowComponent.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var Row=function(t,e){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=e.table,this.parent=e,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.component=null,this.setData(t),this.generateElement()};Row.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},Row.prototype.getElement=function(){return this.element},Row.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),i.table.options.rowContextMenu&&this.table.modExists("menu")&&i.table.modules.menu.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},Row.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},Row.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},Row.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},Row.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},Row.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},Row.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},Row.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},Row.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},Row.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},Row.prototype.getHeight=function(){return this.outerHeight},Row.prototype.getWidth=function(){return this.element.offsetWidth},Row.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Row.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},Row.prototype.updateData=function(t){var e,o=this,i=Tabulator.prototype.helpers.elVisible(this.element),n={};return new Promise(function(l,s){"string"==typeof t&&(t=JSON.parse(t)),o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.block(),o.table.modExists("mutator")?(n=Object.assign(n,o.data),n=Object.assign(n,t),e=o.table.modules.mutator.transformRow(n,"data",t)):e=t;for(var a in e)o.data[a]=e[a];o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.unblock();for(var a in t){o.table.columnManager.getColumnsByFieldRoot(a).forEach(function(t){var n=o.getCell(t.getField());if(n){var l=t.getFieldValue(e);n.getValue()!=l&&(n.setValueProcessData(l),i&&n.cellRendered())}})}i?(o.normalizeHeight(!0),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(o.initialized=!1,o.height=0,o.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.redrawNeeded(t)&&(o.table.modules.dataTree.initializeRow(o),o.table.modules.dataTree.layoutRow(o),o.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(o.table,o.getComponent()),l()})},Row.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},Row.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},Row.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},Row.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},Row.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},Row.prototype.getCells=function(){return this.cells},Row.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},Row.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},Row.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},Row.prototype.validate=function(){var t=[];return this.cells.forEach(function(e){e.validate()||t.push(e.getComponent())}),!t.length||t},Row.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},Row.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.modExists("edit")&&this.table.modules.edit.currentCell.row===this&&this.table.modules.edit.cancelEdit(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.modules.dataTree.rowDelete(this),this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},Row.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},Row.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.getGroup=function(){return this.modules.group||!1},Row.prototype.getComponent=function(){return this.component||(this.component=new RowComponent(this)),this.component};var CellComponent=function(t){this._cell=t};CellComponent.prototype.getValue=function(){return this._cell.getValue()},CellComponent.prototype.getOldValue=function(){return this._cell.getOldValue()},CellComponent.prototype.getElement=function(){return this._cell.getElement()},CellComponent.prototype.getRow=function(){return this._cell.row.getComponent()},CellComponent.prototype.getData=function(){return this._cell.row.getData()},CellComponent.prototype.getField=function(){return this._cell.column.getField()},CellComponent.prototype.getColumn=function(){return this._cell.column.getComponent()},CellComponent.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},CellComponent.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},CellComponent.prototype.edit=function(t){return this._cell.edit(t)},CellComponent.prototype.cancelEdit=function(){this._cell.cancelEdit()},CellComponent.prototype.isEdited=function(){return!!this._cell.modules.edit&&this._cell.modules.edit.edited},CellComponent.prototype.clearEdited=function(){self.table.modExists("edit",!0)&&this._cell.table.modules.edit.clearEdited(this._cell)},CellComponent.prototype.isValid=function(){return!this._cell.modules.validate||!this._cell.modules.validate.invalid},CellComponent.prototype.validate=function(){return this._cell.validate()},CellComponent.prototype.clearValidation=function(){self.table.modExists("validate",!0)&&this._cell.table.modules.validate.clearValidation(this._cell)},CellComponent.prototype.nav=function(){return this._cell.nav()},CellComponent.prototype.checkHeight=function(){this._cell.checkHeight()},CellComponent.prototype.getTable=function(){return this._cell.table},CellComponent.prototype._getSelf=function(){return this._cell};var Cell=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.build()};Cell.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},Cell.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},Cell.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField(),n={top:"flex-start",bottom:"flex-end",middle:"center"},l={left:"flex-start",right:"flex-end",center:"center"};if(o.style.textAlign=t.column.hozAlign,t.column.vertAlign&&(o.style.display="inline-flex",o.style.alignItems=n[t.column.vertAlign]||"",t.column.hozAlign&&(o.style.justifyContent=l[t.column.hozAlign]||"")),i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},Cell.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){if(!e.table.modExists("edit")||e.table.modules.edit.currentCell!==e){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},Cell.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},Cell.prototype._bindTouchEvents=function(t){var e,o,i,n=this,l=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,l.addEventListener("touchstart",function(t){i=!0},{passive:!0}),l.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,l.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,l.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var l=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,l),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,l)},1e3)},{passive:!0}),l.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},Cell.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}},Cell.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},Cell.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},Cell.prototype.getElement=function(){return this.element},Cell.prototype.getValue=function(){return this.value},Cell.prototype.getOldValue=function(){return this.oldValue},Cell.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.cellRendered(),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},Cell.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},Cell.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.column.definition.contextMenu&&this.table.modExists("menu")&&this.table.modules.menu.initializeCell(this),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},Cell.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},Cell.prototype.clearWidth=function(){this.width="",this.element.style.width=""},Cell.prototype.getWidth=function(){return this.width||this.element.offsetWidth},Cell.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},Cell.prototype.checkHeight=function(){this.row.reinitializeHeight()},Cell.prototype.clearHeight=function(){this.element.style.height="",this.height=null},Cell.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},Cell.prototype.getHeight=function(){return this.height||this.element.offsetHeight},Cell.prototype.show=function(){this.element.style.display=""},Cell.prototype.hide=function(){this.element.style.display="none"},Cell.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},Cell.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},Cell.prototype.validate=function(){if(this.column.modules.validate&&this.table.modExists("validate",!0)){return!0===this.table.modules.validate.validate(this.column.modules.validate,this,this.getValue())}return!0},Cell.prototype.delete=function(){this.table.rowManager.redrawBlock||this.element.parentNode.removeChild(this.element),this.modules.validate&&this.modules.validate.invalid&&this.table.modules.validate.clearValidation(this),this.modules.edit&&this.modules.edit.edited&&this.table.modules.edit.clearEdited(this),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},Cell.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},Cell.prototype.getIndex=function(){this.row.getCellIndex(this)},Cell.prototype.getComponent=function(){return this.component||(this.component=new CellComponent(this)),this.component};var FooterManager=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};FooterManager.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},FooterManager.prototype._initialize=function(t){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},FooterManager.prototype.getElement=function(){return this.element},FooterManager.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},FooterManager.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},FooterManager.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},FooterManager.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},FooterManager.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},FooterManager.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var Tabulator=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};Tabulator.prototype.defaultOptions={height:!1,minHeight:!1,maxHeight:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],cellHozAlign:"",cellVertAlign:"",data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopyConfig:!1,clipboardCopyFormatter:!1,clipboardCopyRowRange:"active",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:{},downloadRowRange:"active",dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},dataTreeChildColumnCalcs:!1,dataTreeSelectPropagate:!1,printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printStyled:!0,printVisibleRows:!0,printRowRange:"visible",printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterLiveFilterDelay:300,headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,groupHeaderPrint:null,
+groupHeaderClipboard:null,groupHeaderHtmlOutput:null,groupHeaderDownload:null,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsConnectedElements:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},movableRowsElementDrop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowContextMenu:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupContextMenu:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationMode:"blocking",validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},Tabulator.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])&&null!==this.defaultOptions[e]?this.options[e]={}:this.options[e]=this.defaultOptions[e]},Tabulator.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},Tabulator.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),this.options.downloadDataFormatter&&console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated"),void 0!==this.options.clipboardCopyHeader&&(this.options.columnHeaders=this.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),!0!==this.options.printVisibleRows&&(console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option"),this.options.persistence.printRowRange="active"),!0!==this.options.printCopyStyle&&(console.warn("printCopyStyle option is deprecated, you should now use the printStyled option"),this.options.persistence.printStyled=this.options.printCopyStyle),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},Tabulator.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},Tabulator.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new ColumnManager(this),this.rowManager=new RowManager(this),this.footerManager=new FooterManager(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},Tabulator.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},Tabulator.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",e.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",e.style.maxHeight=i.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var l=document.createElement("div");l.classList.add("tabulator-placeholder");var s=document.createElement("span");s.innerHTML=i.placeholder,l.appendChild(s),i.placeholder=l}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var r=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(r=o.persistence.load("filter"))&&i.initialFilter&&(r=i.initialFilter):i.initialFilter&&(r=i.initialFilter),o.filter.setFilter(r)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},Tabulator.prototype._loadInitialData=function(){var t=this;if(t.options.pagination&&t.modExists("page"))if(t.modules.page.reset(!0,!0),"local"==t.options.pagination){if(t.options.data.length)t.rowManager.setData(t.options.data,!1,!0);else{if((t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax"))return void t.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)});t.rowManager.setData(t.options.data,!1,!0)}t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)}else t.options.ajaxURL?t.modules.page.setPage(t.options.paginationInitialPage).then(function(){}).catch(function(){}):t.rowManager.setData([],!1,!0);else t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data,!1,!0)},Tabulator.prototype.destroy=function(){var t=this.element;for(Tabulator.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},Tabulator.prototype._detectBrowser=function(){var t=navigator.userAgent||navigator.vendor||window.opera;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))},Tabulator.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},Tabulator.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},Tabulator.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var l,s=n.files[0],a=new FileReader;a.readAsText(s),a.onload=function(t){try{l=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(l).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},Tabulator.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!1,!0)},Tabulator.prototype._setData=function(t,e,o,i,n){var l=this;return"string"!=typeof t?t?l.rowManager.setData(t,i,n):l.modExists("ajax")&&(l.modules.ajax.getUrl||l.options.ajaxURLGenerator)?"remote"==l.options.pagination&&l.modExists("page",!0)?(l.modules.page.reset(!0,!0),l.modules.page.setPage(1)):l.modules.ajax.loadData(i,n):l.rowManager.setData([],i,n):0==t.indexOf("{")||0==t.indexOf("[")?l.rowManager.setData(JSON.parse(t),i,n):l.modExists("ajax",!0)?(e&&l.modules.ajax.setParams(e),o&&l.modules.ajax.setConfig(o),l.modules.ajax.setUrl(t),"remote"==l.options.pagination&&l.modExists("page",!0)?(l.modules.page.reset(!0,!0),l.modules.page.setPage(1)):l.modules.ajax.loadData(i,n)):void 0},Tabulator.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},Tabulator.prototype.getData=function(t){return!0===t&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getData(t)},Tabulator.prototype.getDataCount=function(t){return!0===t&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getDataCount(t)},Tabulator.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},Tabulator.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},Tabulator.prototype.getHtml=function(t,e,o){if(this.modExists("export",!0))return this.modules.export.getHtml(t,e,o)},Tabulator.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},Tabulator.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},Tabulator.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},Tabulator.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,l){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,l){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(l,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||l(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||l(i)})}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){function n(){++s==t.length&&a&&(l.rowManager.reRenderInPosition(),o())}var l=e,s=0,a=0,r=[];Array.isArray(t)||(t=[t]),t.forEach(function(t){var o=e.rowManager.findRow(t,!0);o?r.push(o):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"),n())}),r.sort(function(t,o){return e.rowManager.rows.indexOf(t)>e.rowManager.rows.indexOf(o)?1:-1}),r.forEach(function(t){t.delete().then(function(){a++,n()}).catch(function(t){n(),i(t)})})})},Tabulator.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,l){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},Tabulator.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(l.getComponent())}).catch(function(t){n(t)}):l=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},Tabulator.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){i(l.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},Tabulator.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.rowManager.findRow(t);s?i.rowManager.scrollToRow(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching row found:",t),l("Scroll Error - No matching row found"))})},Tabulator.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},Tabulator.prototype.getRows=function(t){return!0===t&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getComponents(t)},Tabulator.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},Tabulator.prototype.copyToClipboard=function(t){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t)},Tabulator.prototype.setColumns=function(t){this.columnManager.setColumns(t)},Tabulator.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},Tabulator.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},Tabulator.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},Tabulator.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},Tabulator.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},Tabulator.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},Tabulator.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.columnManager.findColumn(o);i.columnManager.addColumn(t,e,s).then(function(t){n(t.getComponent())}).catch(function(t){l(t)})})},Tabulator.prototype.deleteColumn=function(t){var e=this;return new Promise(function(o,i){var n=e.columnManager.findColumn(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Column Delete Error - No matching column found:",t),i())})},Tabulator.prototype.updateColumnDefinition=function(t,e){var o=this;return new Promise(function(i,n){var l=o.columnManager.findColumn(t);l?l.updateDefinition(e).then(function(t){i(t)}).catch(function(t){n(t)}):(console.warn("Column Update Error - No matching column found:",t),n())})},Tabulator.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},Tabulator.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.columnManager.findColumn(t);s?i.columnManager.scrollToColumn(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching column found:",t),l("Scroll Error - No matching column found"))})},Tabulator.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},Tabulator.prototype.getLocale=function(){return this.modules.localize.getLocale()},Tabulator.prototype.getLang=function(t){return this.modules.localize.getLang(t)},Tabulator.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},Tabulator.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},Tabulator.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},Tabulator.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},Tabulator.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},Tabulator.prototype.setFilter=function(t,e,o,i){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o,i),this.rowManager.filterRefresh())},Tabulator.prototype.addFilter=function(t,e,o,i){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o,i),this.rowManager.filterRefresh())},Tabulator.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},Tabulator.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},Tabulator.prototype.getHeaderFilterValue=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(e)return this.modules.filter.getHeaderFilterValue(e);console.warn("Column Filter Error - No matching column found:",t)}},Tabulator.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},Tabulator.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},Tabulator.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},Tabulator.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},Tabulator.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&(!0===t&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),t="active"),this.modules.selectRow.selectRows(t))},Tabulator.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},Tabulator.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},Tabulator.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},Tabulator.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},Tabulator.prototype.getInvalidCells=function(){if(this.modExists("validate",!0))return this.modules.validate.getInvalidCells()},Tabulator.prototype.clearCellValidation=function(t){var e=this;this.modExists("validate",!0)&&(t||(t=this.modules.validate.getInvalidCells()),Array.isArray(t)||(t=[t]),t.forEach(function(t){e.modules.validate.clearValidation(t._getSelf())}))},Tabulator.prototype.validate=function(t){var e=[];return this.rowManager.rows.forEach(function(t){var o=t.validate();!0!==o&&(e=e.concat(o))}),!e.length||e},Tabulator.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},Tabulator.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},Tabulator.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},Tabulator.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},Tabulator.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},Tabulator.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},Tabulator.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},Tabulator.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},Tabulator.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},Tabulator.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},Tabulator.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},Tabulator.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},Tabulator.prototype.getEditedCells=function(){if(this.modExists("edit",!0))return this.modules.edit.getEditedCells()},Tabulator.prototype.clearCellEdited=function(t){var e=this;this.modExists("edit",!0)&&(t||(t=this.modules.edit.getEditedCells()),Array.isArray(t)||(t=[t]),t.forEach(function(t){e.modules.edit.clearEdited(t._getSelf())}))},Tabulator.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},Tabulator.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},Tabulator.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},Tabulator.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},Tabulator.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},Tabulator.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},Tabulator.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},Tabulator.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},Tabulator.prototype.undo=function(){
+return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},Tabulator.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},Tabulator.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},Tabulator.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},Tabulator.prototype.download=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i)},Tabulator.prototype.downloadToTab=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i,!0)},Tabulator.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},Tabulator.prototype.moduleBindings={},Tabulator.prototype.extendModule=function(t,e,o){if(Tabulator.prototype.moduleBindings[t]){var i=Tabulator.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},Tabulator.prototype.registerModule=function(t,e){Tabulator.prototype.moduleBindings[t]=e},Tabulator.prototype.bindModules=function(){this.modules={};for(var t in Tabulator.prototype.moduleBindings)this.modules[t]=new Tabulator.prototype.moduleBindings[t](this)},Tabulator.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},Tabulator.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},Tabulator.prototype.comms={tables:[],register:function(t){Tabulator.prototype.comms.tables.push(t)},deregister:function(t){var e=Tabulator.prototype.comms.tables.indexOf(t);e>-1&&Tabulator.prototype.comms.tables.splice(e,1)},lookupTable:function(t,e){var o,i,n=[];if("string"==typeof t){if(o=document.querySelectorAll(t),o.length)for(var l=0;l<o.length;l++)(i=Tabulator.prototype.comms.matchElement(o[l]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof Tabulator?(i=Tabulator.prototype.comms.matchElement(t))&&n.push(i):Array.isArray(t)?t.forEach(function(t){n=n.concat(Tabulator.prototype.comms.lookupTable(t))}):e||console.warn("Table Connection Error - Invalid Selector",t);return n},matchElement:function(t){return Tabulator.prototype.comms.tables.find(function(e){return t instanceof Tabulator?e===t:e.element===t})}},Tabulator.prototype.findTable=function(t){var e=Tabulator.prototype.comms.lookupTable(t,!0);return!(Array.isArray(e)&&!e.length)&&e};var Layout=function(t){this.table=t,this.mode=null};Layout.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},Layout.prototype.getMode=function(){return this.mode},Layout.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},Layout.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataTable:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(t){var e=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,l=!1;t.forEach(function(t,i){t.widthFixed||t.reinitializeWidth(),(e.table.options.responsiveLayout?t.modules.responsive.visible:t.visible)&&(l=t),t.visible&&(o+=t.getWidth())}),l?(n=i-o+l.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(l.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?l.setWidth(n):l.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,l){function s(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var r=[],u=0,c=0,h=0,d=0,p=0,m=[];return t.forEach(function(t,e){var o=l?a(t):s(t);t.column.minWidth>=o?r.push(t):(m.push(t),p+=l?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),r.length?(r.forEach(function(t){u+=l?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),c=i-u,h=p?Math.floor(c/p):c,d=c-h*p,d+=o(m,c,h,l)):(d=p?i-Math.floor(i/p)*p:i,m.forEach(function(t){t.width=l?a(t):s(t)})),d}var i=this,n=i.table.element.clientWidth,l=0,s=0,a=0,r=0,u=[],c=[],h=0,d=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),l+=n>i?n:i,t.definition.widthShrink&&(c.push({column:t,width:n>i?n:i}),h+=t.definition.widthShrink)):(u.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),s=n-l,r=Math.floor(s/a);var p=o(u,s,r,!1);u.length&&p>0&&(u[u.length-1].width+=+p),u.forEach(function(t){s-=t.width}),d=Math.abs(p)+s,d>0&&h&&(p=o(c,d,Math.floor(d/h),!0)),c.length&&(c[c.length-1].width-=p),u.forEach(function(t){t.column.setWidth(t.width)}),c.forEach(function(t){t.column.setWidth(t.width)})}},Tabulator.prototype.registerModule("layout",Layout);var Localize=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};Localize.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},Localize.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},Localize.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},Localize.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},Localize.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}o.locale=t,o.lang=Tabulator.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},Localize.prototype.getLocale=function(t){return self.locale},Localize.prototype.getLang=function(t){return t?this.langs[t]:this.lang},Localize.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},Localize.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},Localize.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},Localize.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},Localize.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}},Tabulator.prototype.registerModule("localize",Localize);var Comms=function(t){this.table=t};Comms.prototype.getConnections=function(t){var e,o=this,i=[];return e=Tabulator.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},Comms.prototype.send=function(t,e,o,i){var n=this,l=this.getConnections(t);l.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!l.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},Comms.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},Tabulator.prototype.registerModule("comms",Comms);
\ No newline at end of file
diff --git a/admin/lib/composer.json b/admin/lib/composer.json
new file mode 100644 (file)
index 0000000..c4a3f1d
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "require":{
+    "mustache/mustache":"2.13.0",
+    "phpmailer/phpmailer":"~6.1"
+  }
+}
\ No newline at end of file
diff --git a/admin/lib/composer.lock b/admin/lib/composer.lock
new file mode 100644 (file)
index 0000000..653ae87
--- /dev/null
@@ -0,0 +1,134 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "4df00bed21ac245a6cfa5bc94e8dcb54",
+    "packages": [
+        {
+            "name": "mustache/mustache",
+            "version": "v2.13.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/bobthecow/mustache.php.git",
+                "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/e95c5a008c23d3151d59ea72484d4f72049ab7f4",
+                "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.2.4"
+            },
+            "require-dev": {
+                "friendsofphp/php-cs-fixer": "~1.11",
+                "phpunit/phpunit": "~3.7|~4.0|~5.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Mustache": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Justin Hileman",
+                    "email": "justin@justinhileman.info",
+                    "homepage": "http://justinhileman.com"
+                }
+            ],
+            "description": "A Mustache implementation in PHP.",
+            "homepage": "https://github.com/bobthecow/mustache.php",
+            "keywords": [
+                "mustache",
+                "templating"
+            ],
+            "time": "2019-11-23T21:40:31+00:00"
+        },
+        {
+            "name": "phpmailer/phpmailer",
+            "version": "v6.1.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHPMailer/PHPMailer.git",
+                "reference": "917ab212fa00dc6eacbb26e8bc387ebe40993bc1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/917ab212fa00dc6eacbb26e8bc387ebe40993bc1",
+                "reference": "917ab212fa00dc6eacbb26e8bc387ebe40993bc1",
+                "shasum": ""
+            },
+            "require": {
+                "ext-ctype": "*",
+                "ext-filter": "*",
+                "ext-hash": "*",
+                "php": ">=5.5.0"
+            },
+            "require-dev": {
+                "doctrine/annotations": "^1.2",
+                "friendsofphp/php-cs-fixer": "^2.2",
+                "phpunit/phpunit": "^4.8 || ^5.7"
+            },
+            "suggest": {
+                "ext-mbstring": "Needed to send email in multibyte encoding charset",
+                "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
+                "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
+                "psr/log": "For optional PSR-3 debug logging",
+                "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
+                "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "PHPMailer\\PHPMailer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-2.1-only"
+            ],
+            "authors": [
+                {
+                    "name": "Marcus Bointon",
+                    "email": "phpmailer@synchromedia.co.uk"
+                },
+                {
+                    "name": "Jim Jagielski",
+                    "email": "jimjag@gmail.com"
+                },
+                {
+                    "name": "Andy Prevost",
+                    "email": "codeworxtech@users.sourceforge.net"
+                },
+                {
+                    "name": "Brent R. Matzelle"
+                }
+            ],
+            "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
+            "funding": [
+                {
+                    "url": "https://github.com/synchro",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-09T14:55:58+00:00"
+        }
+    ],
+    "packages-dev": [],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": [],
+    "platform-dev": [],
+    "plugin-api-version": "1.1.0"
+}
diff --git a/admin/lib/config.php b/admin/lib/config.php
new file mode 100644 (file)
index 0000000..6149f7a
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+  $cfg = array(
+    "basepath" => "/dks_lu_admin/",
+    "cookie" => "dks_lu",
+    "templatepath" => "tmpl/",
+    "db"=> array(
+      "type" => "pgsql",
+      "host" => "sql12.your-server.de",
+      "dbname" => "dkslu2_db",
+      "user" =>  "dkslu2_user",
+      "password" => "wehH6EvQmFHKpyWf",
+    ),
+    "appversion" => "1",
+    "minify" => "",
+    "sitename" => "dks.lu",
+    "sitetemplatepath" => $_SERVER["DOCUMENT_ROOT"].'/dks_lu'
+  );
+
+  // function getparams(){
+  //   $get_arr = array();
+  //   if ($_SERVER['QUERY_STRING'] != ""){
+  //   $xar = explode("&", $_SERVER['QUERY_STRING']);
+  //   #print_r($xar);
+  //   if (count($xar) > 0){
+  //     foreach ($xar as $tmp_arr_param) {
+  //       $split_param = explode("=", $tmp_arr_param);
+  //       if ($split_param[1]){
+  //         $get_arr[$split_param[0]] = urldecode($split_param[1]);
+  //       }
+  //     }
+  //   }
+  //   }
+  //   return $get_arr; 
+  // }
+?>
\ No newline at end of file
diff --git a/admin/lib/database.php b/admin/lib/database.php
new file mode 100644 (file)
index 0000000..5373a0b
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+class database {
+  private $conn;
+  private $dbconf;
+  private $debug = 1;
+  public function __construct($pdbconf){
+    $this->dbconf = $pdbconf;
+    try {
+      //'mysql:host=<localhost>;dbname=<database>', $user, password
+      //'sqlite:/opt/databases/mydb.sq3
+      //pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass
+      $this->conn = new PDO($this->dbconf["type"].':host='.$this->dbconf["host"].';port=5432;dbname='.$this->dbconf["dbname"],$this->dbconf["user"],$this->dbconf["password"]);
+    } catch(PDOException $e){
+      error_log("Connection error:".$e->getMessage());
+      // fwrite(STDERR, "Connectio Error: ".$e->getMessage()."\n");
+    }
+  }
+  
+  public function securetext($text){
+    return str_replace("'","''",$text);
+  }
+  public function value($text){
+    if (($text == "") || ($text == null)){
+      return 'null';
+    }
+    return "'".$text."'";
+  }
+
+  public function query($sql){
+    try {
+      if ($this->debug ==1 ){
+        error_log("QUERY: ".$sql);
+      }
+      // fwrite(STDERR, "QUERY: ".$sql."\n");
+      if ($this->conn){
+        $sth = $this->conn->prepare($sql);
+                         $sth->execute();
+        $result = $sth->fetch(PDO::FETCH_ASSOC);
+        
+        return $result;
+      }
+    } catch(PDOException $e){
+      error_log("QUERY ERROR: ".$sql." ".$e->getMessage());
+    }
+    return null;
+  }
+
+  public function queryarray($sql){
+    $result = null;
+    try {
+      if ($this->conn){
+                         $sth = $this->link->prepare($sql);
+                         $sth->execute();
+        $result = $sth->fetchAll(PDO::FETCH_ASSOC);
+        return $result;
+      }
+    } catch (PDOException $e){
+      error_log("QUERYARRAY ERROR: ".$sql);
+    }
+               return $result;
+  }
+
+  public function exec($sql){
+    try {
+      if ($this->conn){
+        return $this->conn->exec($sql);
+      }
+    } catch (PDOException $e){
+      error_log("EXEC ERROR: ".$sql);
+    }
+               return -1;
+  }
+
+  public function newuuid(){
+    $nid = $this->query("SELECT uuid_in(md5(random()::text || clock_timestamp()::text)::cstring) as id");
+    return $nid["id"];
+  }
+
+  public function __destruct(){
+    $this->conn = null;
+  }
+}
+?>
\ No newline at end of file
diff --git a/admin/lib/session.php b/admin/lib/session.php
new file mode 100644 (file)
index 0000000..a3a4926
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+class session {
+  private $session;
+  private $dbh;
+  public function __construct($dblink){
+    $this->dbh = $dblink;
+  }
+
+  public function getSession($sid){
+    if (($sid !== null) && ($sid != "")){
+      $this->session = $this->dbh->query("select u.id as id_user, u.username, u.id_usergroup  as usergroup, s.id as id_session , s.sessiondata from sessions s join users u on (s.id_user=u.id) where s.id='".$sid."' and s.remote_addr='".$_SERVER["REMOTE_ADDR"]."';");
+    }
+    return $this->session;
+  }
+  
+  public function checkLogin($username,$password){
+    $encpwd = hash('sha256', trim($password));
+
+    //echo "select id,username,usergroup from public.users where username='".$username."' and password='".$encpwd."';\n";
+    $auth = $this->dbh->query("select id,username,id_usergroup as usergroup from public.users where username='".$username."' and userpassword='".$encpwd."';");
+    //error_log(print_r($auth));
+    
+    if ($auth){
+      $nuuid = $this->dbh->newuuid();
+      $this->dbh->exec("INSERT INTO public.sessions (id,id_user,remote_addr,user_agent) VALUES ('".$nuuid."','".$auth['id']."','".$_SERVER["REMOTE_ADDR"]."','".$_SERVER["HTTP_USER_AGENT"]."');");
+      return $this->getSession($nuuid);
+    }
+    return null;
+  }
+
+  public function __destruct(){
+    $this->conn = null;
+  }
+}
+?>
\ No newline at end of file
diff --git a/admin/lib/vendor/autoload.php b/admin/lib/vendor/autoload.php
new file mode 100644 (file)
index 0000000..2286229
--- /dev/null
@@ -0,0 +1,7 @@
+<?php
+
+// autoload.php @generated by Composer
+
+require_once __DIR__ . '/composer/autoload_real.php';
+
+return ComposerAutoloaderInit885fbe19dab1b37aa91c383b45da3786::getLoader();
diff --git a/admin/lib/vendor/composer/ClassLoader.php b/admin/lib/vendor/composer/ClassLoader.php
new file mode 100644 (file)
index 0000000..03b9bb9
--- /dev/null
@@ -0,0 +1,445 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ *     $loader = new \Composer\Autoload\ClassLoader();
+ *
+ *     // register classes with namespaces
+ *     $loader->add('Symfony\Component', __DIR__.'/component');
+ *     $loader->add('Symfony',           __DIR__.'/framework');
+ *
+ *     // activate the autoloader
+ *     $loader->register();
+ *
+ *     // to enable searching the include path (eg. for PEAR packages)
+ *     $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ * @see    http://www.php-fig.org/psr/psr-0/
+ * @see    http://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+    // PSR-4
+    private $prefixLengthsPsr4 = array();
+    private $prefixDirsPsr4 = array();
+    private $fallbackDirsPsr4 = array();
+
+    // PSR-0
+    private $prefixesPsr0 = array();
+    private $fallbackDirsPsr0 = array();
+
+    private $useIncludePath = false;
+    private $classMap = array();
+    private $classMapAuthoritative = false;
+    private $missingClasses = array();
+    private $apcuPrefix;
+
+    public function getPrefixes()
+    {
+        if (!empty($this->prefixesPsr0)) {
+            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
+        }
+
+        return array();
+    }
+
+    public function getPrefixesPsr4()
+    {
+        return $this->prefixDirsPsr4;
+    }
+
+    public function getFallbackDirs()
+    {
+        return $this->fallbackDirsPsr0;
+    }
+
+    public function getFallbackDirsPsr4()
+    {
+        return $this->fallbackDirsPsr4;
+    }
+
+    public function getClassMap()
+    {
+        return $this->classMap;
+    }
+
+    /**
+     * @param array $classMap Class to filename map
+     */
+    public function addClassMap(array $classMap)
+    {
+        if ($this->classMap) {
+            $this->classMap = array_merge($this->classMap, $classMap);
+        } else {
+            $this->classMap = $classMap;
+        }
+    }
+
+    /**
+     * Registers a set of PSR-0 directories for a given prefix, either
+     * appending or prepending to the ones previously set for this prefix.
+     *
+     * @param string       $prefix  The prefix
+     * @param array|string $paths   The PSR-0 root directories
+     * @param bool         $prepend Whether to prepend the directories
+     */
+    public function add($prefix, $paths, $prepend = false)
+    {
+        if (!$prefix) {
+            if ($prepend) {
+                $this->fallbackDirsPsr0 = array_merge(
+                    (array) $paths,
+                    $this->fallbackDirsPsr0
+                );
+            } else {
+                $this->fallbackDirsPsr0 = array_merge(
+                    $this->fallbackDirsPsr0,
+                    (array) $paths
+                );
+            }
+
+            return;
+        }
+
+        $first = $prefix[0];
+        if (!isset($this->prefixesPsr0[$first][$prefix])) {
+            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+
+            return;
+        }
+        if ($prepend) {
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                (array) $paths,
+                $this->prefixesPsr0[$first][$prefix]
+            );
+        } else {
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                $this->prefixesPsr0[$first][$prefix],
+                (array) $paths
+            );
+        }
+    }
+
+    /**
+     * Registers a set of PSR-4 directories for a given namespace, either
+     * appending or prepending to the ones previously set for this namespace.
+     *
+     * @param string       $prefix  The prefix/namespace, with trailing '\\'
+     * @param array|string $paths   The PSR-4 base directories
+     * @param bool         $prepend Whether to prepend the directories
+     *
+     * @throws \InvalidArgumentException
+     */
+    public function addPsr4($prefix, $paths, $prepend = false)
+    {
+        if (!$prefix) {
+            // Register directories for the root namespace.
+            if ($prepend) {
+                $this->fallbackDirsPsr4 = array_merge(
+                    (array) $paths,
+                    $this->fallbackDirsPsr4
+                );
+            } else {
+                $this->fallbackDirsPsr4 = array_merge(
+                    $this->fallbackDirsPsr4,
+                    (array) $paths
+                );
+            }
+        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+            // Register directories for a new namespace.
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+        } elseif ($prepend) {
+            // Prepend directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
+                (array) $paths,
+                $this->prefixDirsPsr4[$prefix]
+            );
+        } else {
+            // Append directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
+                $this->prefixDirsPsr4[$prefix],
+                (array) $paths
+            );
+        }
+    }
+
+    /**
+     * Registers a set of PSR-0 directories for a given prefix,
+     * replacing any others previously set for this prefix.
+     *
+     * @param string       $prefix The prefix
+     * @param array|string $paths  The PSR-0 base directories
+     */
+    public function set($prefix, $paths)
+    {
+        if (!$prefix) {
+            $this->fallbackDirsPsr0 = (array) $paths;
+        } else {
+            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+        }
+    }
+
+    /**
+     * Registers a set of PSR-4 directories for a given namespace,
+     * replacing any others previously set for this namespace.
+     *
+     * @param string       $prefix The prefix/namespace, with trailing '\\'
+     * @param array|string $paths  The PSR-4 base directories
+     *
+     * @throws \InvalidArgumentException
+     */
+    public function setPsr4($prefix, $paths)
+    {
+        if (!$prefix) {
+            $this->fallbackDirsPsr4 = (array) $paths;
+        } else {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+        }
+    }
+
+    /**
+     * Turns on searching the include path for class files.
+     *
+     * @param bool $useIncludePath
+     */
+    public function setUseIncludePath($useIncludePath)
+    {
+        $this->useIncludePath = $useIncludePath;
+    }
+
+    /**
+     * Can be used to check if the autoloader uses the include path to check
+     * for classes.
+     *
+     * @return bool
+     */
+    public function getUseIncludePath()
+    {
+        return $this->useIncludePath;
+    }
+
+    /**
+     * Turns off searching the prefix and fallback directories for classes
+     * that have not been registered with the class map.
+     *
+     * @param bool $classMapAuthoritative
+     */
+    public function setClassMapAuthoritative($classMapAuthoritative)
+    {
+        $this->classMapAuthoritative = $classMapAuthoritative;
+    }
+
+    /**
+     * Should class lookup fail if not found in the current class map?
+     *
+     * @return bool
+     */
+    public function isClassMapAuthoritative()
+    {
+        return $this->classMapAuthoritative;
+    }
+
+    /**
+     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+     *
+     * @param string|null $apcuPrefix
+     */
+    public function setApcuPrefix($apcuPrefix)
+    {
+        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+    }
+
+    /**
+     * The APCu prefix in use, or null if APCu caching is not enabled.
+     *
+     * @return string|null
+     */
+    public function getApcuPrefix()
+    {
+        return $this->apcuPrefix;
+    }
+
+    /**
+     * Registers this instance as an autoloader.
+     *
+     * @param bool $prepend Whether to prepend the autoloader or not
+     */
+    public function register($prepend = false)
+    {
+        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+    }
+
+    /**
+     * Unregisters this instance as an autoloader.
+     */
+    public function unregister()
+    {
+        spl_autoload_unregister(array($this, 'loadClass'));
+    }
+
+    /**
+     * Loads the given class or interface.
+     *
+     * @param  string    $class The name of the class
+     * @return bool|null True if loaded, null otherwise
+     */
+    public function loadClass($class)
+    {
+        if ($file = $this->findFile($class)) {
+            includeFile($file);
+
+            return true;
+        }
+    }
+
+    /**
+     * Finds the path to the file where the class is defined.
+     *
+     * @param string $class The name of the class
+     *
+     * @return string|false The path if found, false otherwise
+     */
+    public function findFile($class)
+    {
+        // class map lookup
+        if (isset($this->classMap[$class])) {
+            return $this->classMap[$class];
+        }
+        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+            return false;
+        }
+        if (null !== $this->apcuPrefix) {
+            $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+            if ($hit) {
+                return $file;
+            }
+        }
+
+        $file = $this->findFileWithExtension($class, '.php');
+
+        // Search for Hack files if we are running on HHVM
+        if (false === $file && defined('HHVM_VERSION')) {
+            $file = $this->findFileWithExtension($class, '.hh');
+        }
+
+        if (null !== $this->apcuPrefix) {
+            apcu_add($this->apcuPrefix.$class, $file);
+        }
+
+        if (false === $file) {
+            // Remember that this class does not exist.
+            $this->missingClasses[$class] = true;
+        }
+
+        return $file;
+    }
+
+    private function findFileWithExtension($class, $ext)
+    {
+        // PSR-4 lookup
+        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+        $first = $class[0];
+        if (isset($this->prefixLengthsPsr4[$first])) {
+            $subPath = $class;
+            while (false !== $lastPos = strrpos($subPath, '\\')) {
+                $subPath = substr($subPath, 0, $lastPos);
+                $search = $subPath . '\\';
+                if (isset($this->prefixDirsPsr4[$search])) {
+                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
+                        if (file_exists($file = $dir . $pathEnd)) {
+                            return $file;
+                        }
+                    }
+                }
+            }
+        }
+
+        // PSR-4 fallback dirs
+        foreach ($this->fallbackDirsPsr4 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+                return $file;
+            }
+        }
+
+        // PSR-0 lookup
+        if (false !== $pos = strrpos($class, '\\')) {
+            // namespaced class name
+            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+        } else {
+            // PEAR-like class name
+            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+        }
+
+        if (isset($this->prefixesPsr0[$first])) {
+            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+                if (0 === strpos($class, $prefix)) {
+                    foreach ($dirs as $dir) {
+                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                            return $file;
+                        }
+                    }
+                }
+            }
+        }
+
+        // PSR-0 fallback dirs
+        foreach ($this->fallbackDirsPsr0 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                return $file;
+            }
+        }
+
+        // PSR-0 include paths.
+        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+            return $file;
+        }
+
+        return false;
+    }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+    include $file;
+}
diff --git a/admin/lib/vendor/composer/LICENSE b/admin/lib/vendor/composer/LICENSE
new file mode 100644 (file)
index 0000000..f27399a
--- /dev/null
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/admin/lib/vendor/composer/autoload_classmap.php b/admin/lib/vendor/composer/autoload_classmap.php
new file mode 100644 (file)
index 0000000..7a91153
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_classmap.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+);
diff --git a/admin/lib/vendor/composer/autoload_namespaces.php b/admin/lib/vendor/composer/autoload_namespaces.php
new file mode 100644 (file)
index 0000000..3e8eb85
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_namespaces.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+    'Mustache' => array($vendorDir . '/mustache/mustache/src'),
+);
diff --git a/admin/lib/vendor/composer/autoload_psr4.php b/admin/lib/vendor/composer/autoload_psr4.php
new file mode 100644 (file)
index 0000000..0706da6
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_psr4.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+    'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'),
+);
diff --git a/admin/lib/vendor/composer/autoload_real.php b/admin/lib/vendor/composer/autoload_real.php
new file mode 100644 (file)
index 0000000..c620f26
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+// autoload_real.php @generated by Composer
+
+class ComposerAutoloaderInit885fbe19dab1b37aa91c383b45da3786
+{
+    private static $loader;
+
+    public static function loadClassLoader($class)
+    {
+        if ('Composer\Autoload\ClassLoader' === $class) {
+            require __DIR__ . '/ClassLoader.php';
+        }
+    }
+
+    /**
+     * @return \Composer\Autoload\ClassLoader
+     */
+    public static function getLoader()
+    {
+        if (null !== self::$loader) {
+            return self::$loader;
+        }
+
+        spl_autoload_register(array('ComposerAutoloaderInit885fbe19dab1b37aa91c383b45da3786', 'loadClassLoader'), true, true);
+        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
+        spl_autoload_unregister(array('ComposerAutoloaderInit885fbe19dab1b37aa91c383b45da3786', 'loadClassLoader'));
+
+        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
+        if ($useStaticLoader) {
+            require_once __DIR__ . '/autoload_static.php';
+
+            call_user_func(\Composer\Autoload\ComposerStaticInit885fbe19dab1b37aa91c383b45da3786::getInitializer($loader));
+        } else {
+            $map = require __DIR__ . '/autoload_namespaces.php';
+            foreach ($map as $namespace => $path) {
+                $loader->set($namespace, $path);
+            }
+
+            $map = require __DIR__ . '/autoload_psr4.php';
+            foreach ($map as $namespace => $path) {
+                $loader->setPsr4($namespace, $path);
+            }
+
+            $classMap = require __DIR__ . '/autoload_classmap.php';
+            if ($classMap) {
+                $loader->addClassMap($classMap);
+            }
+        }
+
+        $loader->register(true);
+
+        return $loader;
+    }
+}
diff --git a/admin/lib/vendor/composer/autoload_static.php b/admin/lib/vendor/composer/autoload_static.php
new file mode 100644 (file)
index 0000000..c41aefa
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+// autoload_static.php @generated by Composer
+
+namespace Composer\Autoload;
+
+class ComposerStaticInit885fbe19dab1b37aa91c383b45da3786
+{
+    public static $prefixLengthsPsr4 = array (
+        'P' => 
+        array (
+            'PHPMailer\\PHPMailer\\' => 20,
+        ),
+    );
+
+    public static $prefixDirsPsr4 = array (
+        'PHPMailer\\PHPMailer\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/phpmailer/phpmailer/src',
+        ),
+    );
+
+    public static $prefixesPsr0 = array (
+        'M' => 
+        array (
+            'Mustache' => 
+            array (
+                0 => __DIR__ . '/..' . '/mustache/mustache/src',
+            ),
+        ),
+    );
+
+    public static function getInitializer(ClassLoader $loader)
+    {
+        return \Closure::bind(function () use ($loader) {
+            $loader->prefixLengthsPsr4 = ComposerStaticInit885fbe19dab1b37aa91c383b45da3786::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticInit885fbe19dab1b37aa91c383b45da3786::$prefixDirsPsr4;
+            $loader->prefixesPsr0 = ComposerStaticInit885fbe19dab1b37aa91c383b45da3786::$prefixesPsr0;
+
+        }, null, ClassLoader::class);
+    }
+}
diff --git a/admin/lib/vendor/composer/installed.json b/admin/lib/vendor/composer/installed.json
new file mode 100644 (file)
index 0000000..e2dfae8
--- /dev/null
@@ -0,0 +1,121 @@
+[
+    {
+        "name": "mustache/mustache",
+        "version": "v2.13.0",
+        "version_normalized": "2.13.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/bobthecow/mustache.php.git",
+            "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/e95c5a008c23d3151d59ea72484d4f72049ab7f4",
+            "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.2.4"
+        },
+        "require-dev": {
+            "friendsofphp/php-cs-fixer": "~1.11",
+            "phpunit/phpunit": "~3.7|~4.0|~5.0"
+        },
+        "time": "2019-11-23T21:40:31+00:00",
+        "type": "library",
+        "installation-source": "dist",
+        "autoload": {
+            "psr-0": {
+                "Mustache": "src/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "Justin Hileman",
+                "email": "justin@justinhileman.info",
+                "homepage": "http://justinhileman.com"
+            }
+        ],
+        "description": "A Mustache implementation in PHP.",
+        "homepage": "https://github.com/bobthecow/mustache.php",
+        "keywords": [
+            "mustache",
+            "templating"
+        ]
+    },
+    {
+        "name": "phpmailer/phpmailer",
+        "version": "v6.1.8",
+        "version_normalized": "6.1.8.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/PHPMailer/PHPMailer.git",
+            "reference": "917ab212fa00dc6eacbb26e8bc387ebe40993bc1"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/917ab212fa00dc6eacbb26e8bc387ebe40993bc1",
+            "reference": "917ab212fa00dc6eacbb26e8bc387ebe40993bc1",
+            "shasum": ""
+        },
+        "require": {
+            "ext-ctype": "*",
+            "ext-filter": "*",
+            "ext-hash": "*",
+            "php": ">=5.5.0"
+        },
+        "require-dev": {
+            "doctrine/annotations": "^1.2",
+            "friendsofphp/php-cs-fixer": "^2.2",
+            "phpunit/phpunit": "^4.8 || ^5.7"
+        },
+        "suggest": {
+            "ext-mbstring": "Needed to send email in multibyte encoding charset",
+            "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
+            "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
+            "psr/log": "For optional PSR-3 debug logging",
+            "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
+            "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
+        },
+        "time": "2020-10-09T14:55:58+00:00",
+        "type": "library",
+        "installation-source": "dist",
+        "autoload": {
+            "psr-4": {
+                "PHPMailer\\PHPMailer\\": "src/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "LGPL-2.1-only"
+        ],
+        "authors": [
+            {
+                "name": "Marcus Bointon",
+                "email": "phpmailer@synchromedia.co.uk"
+            },
+            {
+                "name": "Jim Jagielski",
+                "email": "jimjag@gmail.com"
+            },
+            {
+                "name": "Andy Prevost",
+                "email": "codeworxtech@users.sourceforge.net"
+            },
+            {
+                "name": "Brent R. Matzelle"
+            }
+        ],
+        "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
+        "funding": [
+            {
+                "url": "https://github.com/synchro",
+                "type": "github"
+            }
+        ]
+    }
+]
diff --git a/admin/lib/vendor/mustache/mustache/.gitignore b/admin/lib/vendor/mustache/mustache/.gitignore
new file mode 100644 (file)
index 0000000..3861f00
--- /dev/null
@@ -0,0 +1,4 @@
+.php_cs.cache
+composer.lock
+mustache.php
+vendor
diff --git a/admin/lib/vendor/mustache/mustache/.gitmodules b/admin/lib/vendor/mustache/mustache/.gitmodules
new file mode 100644 (file)
index 0000000..042ea4d
--- /dev/null
@@ -0,0 +1,6 @@
+[submodule "vendor/spec"]
+       path = vendor/spec
+       url = https://github.com/mustache/spec.git
+[submodule "vendor/yaml"]
+       path = vendor/yaml
+       url = https://github.com/fabpot/yaml.git
diff --git a/admin/lib/vendor/mustache/mustache/.php_cs b/admin/lib/vendor/mustache/mustache/.php_cs
new file mode 100644 (file)
index 0000000..d924712
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+use Symfony\CS\Config\Config;
+use Symfony\CS\FixerInterface;
+
+$config = Config::create()
+    // use symfony level and extra fixers:
+    ->level(Symfony\CS\FixerInterface::SYMFONY_LEVEL)
+    ->fixers(array(
+        '-concat_without_spaces',
+        '-pre_increment',
+        '-unalign_double_arrow',
+        '-unalign_equals',
+        'align_double_arrow',
+        'concat_with_spaces',
+        'ordered_use',
+        'strict',
+    ))
+    ->setUsingLinter(false);
+
+$finder = $config->getFinder()
+    ->in('bin')
+    ->in('src')
+    ->in('test');
+
+return $config;
diff --git a/admin/lib/vendor/mustache/mustache/.styleci.yml b/admin/lib/vendor/mustache/mustache/.styleci.yml
new file mode 100644 (file)
index 0000000..1aebcc3
--- /dev/null
@@ -0,0 +1,13 @@
+preset: symfony
+
+enabled:
+  - align_double_arrow
+  - concat_with_spaces
+  - ordered_use
+  - strict
+
+disabled:
+  - concat_without_spaces
+  - pre_increment
+  - unalign_double_arrow
+  - unalign_equals
diff --git a/admin/lib/vendor/mustache/mustache/.travis.yml b/admin/lib/vendor/mustache/mustache/.travis.yml
new file mode 100644 (file)
index 0000000..d88c6f0
--- /dev/null
@@ -0,0 +1,31 @@
+language: php
+
+sudo: false
+
+matrix:
+  include:
+    - php: 5.2
+      dist: precise
+    - php: 5.3
+      dist: precise
+    - php: 5.4
+      dist: trusty
+    - php: 5.5
+      dist: trusty
+    - php: 5.6
+    - php: 7.0
+    - php: 7.1
+    - php: 7.2
+    - php: 7.3
+    - php: 7.4snapshot
+    - php: hhvm
+      dist: trusty
+  allow_failures:
+    - php: hhvm
+    - php: 7.4snapshot
+
+script:
+  - '[[ "$TRAVIS_PHP_VERSION" = 5.2* ]] && phpunit || vendor/bin/phpunit --verbose'
+
+install:
+  - '[[ "$TRAVIS_PHP_VERSION" = 5.2* ]] || composer install'
diff --git a/admin/lib/vendor/mustache/mustache/CONTRIBUTING.md b/admin/lib/vendor/mustache/mustache/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..c0b323d
--- /dev/null
@@ -0,0 +1,35 @@
+# Contributions welcome!
+
+
+### Here's a quick guide:
+
+ 1. [Fork the repo on GitHub](https://github.com/bobthecow/mustache.php).
+
+ 2. Update submodules: `git submodule update --init`
+
+ 3. Run the test suite. We only take pull requests with passing tests, and it's great to know that you have a clean slate. Make sure you have PHPUnit 3.5+, then run `phpunit` from the project directory.
+
+ 4. Add tests for your change. Only refactoring and documentation changes require no new tests. If you are adding functionality or fixing a bug, add a test!
+
+ 5. Make the tests pass.
+
+ 6. Push your fork to GitHub and submit a pull request against the `dev` branch.
+
+
+### You can do some things to increase the chance that your pull request is accepted the first time:
+
+ * Submit one pull request per fix or feature.
+ * To help with that, do all your work in a feature branch (e.g. `feature/my-alsome-feature`).
+ * Follow the conventions you see used in the project.
+ * Use `phpcs --standard=PSR2` to check your changes against the coding standard.
+ * Write tests that fail without your code, and pass with it.
+ * Don't bump version numbers. Those will be updated — per [semver](http://semver.org) — once your change is merged into `master`.
+ * Update any documentation: docblocks, README, examples, etc.
+ * ... Don't update the wiki until your change is merged and released, but make a note in your pull request so we don't forget.
+
+
+### Mustache.php follows the PSR-* coding standards:
+
+ * [PSR-0: Class and file naming conventions](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md)
+ * [PSR-1: Basic coding standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md)
+ * [PSR-2: Coding style guide](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
diff --git a/admin/lib/vendor/mustache/mustache/LICENSE b/admin/lib/vendor/mustache/mustache/LICENSE
new file mode 100644 (file)
index 0000000..e0aecc9
--- /dev/null
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2010-2015 Justin Hileman
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/admin/lib/vendor/mustache/mustache/README.md b/admin/lib/vendor/mustache/mustache/README.md
new file mode 100644 (file)
index 0000000..a596ace
--- /dev/null
@@ -0,0 +1,72 @@
+Mustache.php
+============
+
+A [Mustache](http://mustache.github.com/) implementation in PHP.
+
+[![Package version](http://img.shields.io/packagist/v/mustache/mustache.svg?style=flat-square)](https://packagist.org/packages/mustache/mustache)
+[![Build status](http://img.shields.io/travis/bobthecow/mustache.php/dev.svg?style=flat-square)](http://travis-ci.org/bobthecow/mustache.php)
+[![StyleCI](https://styleci.io/repos/569670/shield)](https://styleci.io/repos/569670)
+[![Monthly downloads](http://img.shields.io/packagist/dm/mustache/mustache.svg?style=flat-square)](https://packagist.org/packages/mustache/mustache)
+
+
+Usage
+-----
+
+A quick example:
+
+```php
+<?php
+$m = new Mustache_Engine;
+echo $m->render('Hello {{planet}}', array('planet' => 'World!')); // "Hello World!"
+```
+
+
+And a more in-depth example -- this is the canonical Mustache template:
+
+```html+jinja
+Hello {{name}}
+You have just won {{value}} dollars!
+{{#in_ca}}
+Well, {{taxed_value}} dollars, after taxes.
+{{/in_ca}}
+```
+
+
+Create a view "context" object -- which could also be an associative array, but those don't do functions quite as well:
+
+```php
+<?php
+class Chris {
+    public $name  = "Chris";
+    public $value = 10000;
+
+    public function taxed_value() {
+        return $this->value - ($this->value * 0.4);
+    }
+
+    public $in_ca = true;
+}
+```
+
+
+And render it:
+
+```php
+<?php
+$m = new Mustache_Engine;
+$chris = new Chris;
+echo $m->render($template, $chris);
+```
+
+
+And That's Not All!
+-------------------
+
+Read [the Mustache.php documentation](https://github.com/bobthecow/mustache.php/wiki/Home) for more information.
+
+
+See Also
+--------
+
+ * [Readme for the Ruby Mustache implementation](http://github.com/defunkt/mustache/blob/master/README.md).
+ * [mustache(5)](http://mustache.github.com/mustache.5.html) man page.
diff --git a/admin/lib/vendor/mustache/mustache/bin/build_bootstrap.php b/admin/lib/vendor/mustache/mustache/bin/build_bootstrap.php
new file mode 100644 (file)
index 0000000..cc23b2b
--- /dev/null
@@ -0,0 +1,178 @@
+#!/usr/bin/env php
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2015 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * A shell script to create a single-file class cache of the entire Mustache
+ * library.
+ *
+ *     $ bin/build_bootstrap.php
+ *
+ * ... will create a `mustache.php` bootstrap file in the project directory,
+ * containing all Mustache library classes. This file can then be included in
+ * your project, rather than requiring the Mustache Autoloader.
+ */
+$baseDir = realpath(dirname(__FILE__) . '/..');
+
+require $baseDir . '/src/Mustache/Autoloader.php';
+Mustache_Autoloader::register();
+
+// delete the old file
+$file = $baseDir . '/mustache.php';
+if (file_exists($file)) {
+    unlink($file);
+}
+
+// and load the new one
+SymfonyClassCollectionLoader::load(array(
+    'Mustache_Engine',
+    'Mustache_Cache',
+    'Mustache_Cache_AbstractCache',
+    'Mustache_Cache_FilesystemCache',
+    'Mustache_Cache_NoopCache',
+    'Mustache_Compiler',
+    'Mustache_Context',
+    'Mustache_Exception',
+    'Mustache_Exception_InvalidArgumentException',
+    'Mustache_Exception_LogicException',
+    'Mustache_Exception_RuntimeException',
+    'Mustache_Exception_SyntaxException',
+    'Mustache_Exception_UnknownFilterException',
+    'Mustache_Exception_UnknownHelperException',
+    'Mustache_Exception_UnknownTemplateException',
+    'Mustache_HelperCollection',
+    'Mustache_LambdaHelper',
+    'Mustache_Loader',
+    'Mustache_Loader_ArrayLoader',
+    'Mustache_Loader_CascadingLoader',
+    'Mustache_Loader_FilesystemLoader',
+    'Mustache_Loader_InlineLoader',
+    'Mustache_Loader_MutableLoader',
+    'Mustache_Loader_StringLoader',
+    'Mustache_Logger',
+    'Mustache_Logger_AbstractLogger',
+    'Mustache_Logger_StreamLogger',
+    'Mustache_Parser',
+    'Mustache_Template',
+    'Mustache_Tokenizer',
+), dirname($file), basename($file, '.php'));
+
+/**
+ * SymfonyClassCollectionLoader.
+ *
+ * Based heavily on the Symfony ClassCollectionLoader component, with all
+ * the unnecessary bits removed.
+ *
+ * @license http://www.opensource.org/licenses/MIT
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class SymfonyClassCollectionLoader
+{
+    private static $loaded;
+
+    const HEADER = <<<'EOS'
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-%d Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+EOS;
+
+    /**
+     * Loads a list of classes and caches them in one big file.
+     *
+     * @param array  $classes   An array of classes to load
+     * @param string $cacheDir  A cache directory
+     * @param string $name      The cache name prefix
+     * @param string $extension File extension of the resulting file
+     *
+     * @throws InvalidArgumentException When class can't be loaded
+     */
+    public static function load(array $classes, $cacheDir, $name, $extension = '.php')
+    {
+        // each $name can only be loaded once per PHP process
+        if (isset(self::$loaded[$name])) {
+            return;
+        }
+
+        self::$loaded[$name] = true;
+
+        $content = '';
+        foreach ($classes as $class) {
+            if (!class_exists($class) && !interface_exists($class) && (!function_exists('trait_exists') || !trait_exists($class))) {
+                throw new InvalidArgumentException(sprintf('Unable to load class "%s"', $class));
+            }
+
+            $r = new ReflectionClass($class);
+            $content .= preg_replace(array('/^\s*<\?php/', '/\?>\s*$/'), '', file_get_contents($r->getFileName()));
+        }
+
+        $cache  = $cacheDir . '/' . $name . $extension;
+        $header = sprintf(self::HEADER, strftime('%Y'));
+        self::writeCacheFile($cache, $header . substr(self::stripComments('<?php ' . $content), 5));
+    }
+
+    /**
+     * Writes a cache file.
+     *
+     * @param string $file    Filename
+     * @param string $content Temporary file content
+     *
+     * @throws RuntimeException when a cache file cannot be written
+     */
+    private static function writeCacheFile($file, $content)
+    {
+        $tmpFile = tempnam(dirname($file), basename($file));
+        if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $file)) {
+            chmod($file, 0666 & ~umask());
+
+            return;
+        }
+
+        throw new RuntimeException(sprintf('Failed to write cache file "%s".', $file));
+    }
+
+    /**
+     * Removes comments from a PHP source string.
+     *
+     * We don't use the PHP php_strip_whitespace() function
+     * as we want the content to be readable and well-formatted.
+     *
+     * @param string $source A PHP string
+     *
+     * @return string The PHP string with the comments removed
+     */
+    private static function stripComments($source)
+    {
+        if (!function_exists('token_get_all')) {
+            return $source;
+        }
+
+        $output = '';
+        foreach (token_get_all($source) as $token) {
+            if (is_string($token)) {
+                $output .= $token;
+            } elseif (!in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) {
+                $output .= $token[1];
+            }
+        }
+
+        // replace multiple new lines with a single newline
+        $output = preg_replace(array('/\s+$/Sm', '/\n+/S'), "\n", $output);
+
+        return $output;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/composer.json b/admin/lib/vendor/mustache/mustache/composer.json
new file mode 100644 (file)
index 0000000..d0514f3
--- /dev/null
@@ -0,0 +1,25 @@
+{
+    "name": "mustache/mustache",
+    "description": "A Mustache implementation in PHP.",
+    "keywords": ["templating", "mustache"],
+    "homepage": "https://github.com/bobthecow/mustache.php",
+    "type": "library",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Justin Hileman",
+            "email": "justin@justinhileman.info",
+            "homepage": "http://justinhileman.com"
+        }
+    ],
+    "require": {
+        "php": ">=5.2.4"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "~3.7|~4.0|~5.0",
+        "friendsofphp/php-cs-fixer": "~1.11"
+    },
+    "autoload": {
+        "psr-0": { "Mustache": "src/" }
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/phpunit.xml.dist b/admin/lib/vendor/mustache/mustache/phpunit.xml.dist
new file mode 100644 (file)
index 0000000..3c620b6
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit backupGlobals="false" colors="true" bootstrap="./test/bootstrap.php">
+       <testsuite name="Mustache">
+               <directory suffix="Test.php">./test</directory>
+               <exclude>./test/Mustache/Test/FiveThree</exclude>
+       </testsuite>
+
+       <testsuite name="Mustache FiveThree">
+               <directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">./test/Mustache/Test/FiveThree</directory>
+       </testsuite>
+
+       <filter>
+               <whitelist>
+                       <directory suffix=".php">./src/Mustache</directory>
+               </whitelist>
+       </filter>
+</phpunit>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Autoloader.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Autoloader.php
new file mode 100644 (file)
index 0000000..e8ea3f4
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache class autoloader.
+ */
+class Mustache_Autoloader
+{
+    private $baseDir;
+
+    /**
+     * An array where the key is the baseDir and the key is an instance of this
+     * class.
+     *
+     * @var array
+     */
+    private static $instances;
+
+    /**
+     * Autoloader constructor.
+     *
+     * @param string $baseDir Mustache library base directory (default: dirname(__FILE__).'/..')
+     */
+    public function __construct($baseDir = null)
+    {
+        if ($baseDir === null) {
+            $baseDir = dirname(__FILE__) . '/..';
+        }
+
+        // realpath doesn't always work, for example, with stream URIs
+        $realDir = realpath($baseDir);
+        if (is_dir($realDir)) {
+            $this->baseDir = $realDir;
+        } else {
+            $this->baseDir = $baseDir;
+        }
+    }
+
+    /**
+     * Register a new instance as an SPL autoloader.
+     *
+     * @param string $baseDir Mustache library base directory (default: dirname(__FILE__).'/..')
+     *
+     * @return Mustache_Autoloader Registered Autoloader instance
+     */
+    public static function register($baseDir = null)
+    {
+        $key = $baseDir ? $baseDir : 0;
+
+        if (!isset(self::$instances[$key])) {
+            self::$instances[$key] = new self($baseDir);
+        }
+
+        $loader = self::$instances[$key];
+        spl_autoload_register(array($loader, 'autoload'));
+
+        return $loader;
+    }
+
+    /**
+     * Autoload Mustache classes.
+     *
+     * @param string $class
+     */
+    public function autoload($class)
+    {
+        if ($class[0] === '\\') {
+            $class = substr($class, 1);
+        }
+
+        if (strpos($class, 'Mustache') !== 0) {
+            return;
+        }
+
+        $file = sprintf('%s/%s.php', $this->baseDir, str_replace('_', '/', $class));
+        if (is_file($file)) {
+            require $file;
+        }
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Cache.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Cache.php
new file mode 100644 (file)
index 0000000..3b5b3f1
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Cache interface.
+ *
+ * Interface for caching and loading Mustache_Template classes
+ * generated by the Mustache_Compiler.
+ */
+interface Mustache_Cache
+{
+    /**
+     * Load a compiled Mustache_Template class from cache.
+     *
+     * @param string $key
+     *
+     * @return bool indicates successfully class load
+     */
+    public function load($key);
+
+    /**
+     * Cache and load a compiled Mustache_Template class.
+     *
+     * @param string $key
+     * @param string $value
+     */
+    public function cache($key, $value);
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Cache/AbstractCache.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Cache/AbstractCache.php
new file mode 100644 (file)
index 0000000..365eafa
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Abstract Mustache Cache class.
+ *
+ * Provides logging support to child implementations.
+ *
+ * @abstract
+ */
+abstract class Mustache_Cache_AbstractCache implements Mustache_Cache
+{
+    private $logger = null;
+
+    /**
+     * Get the current logger instance.
+     *
+     * @return Mustache_Logger|Psr\Log\LoggerInterface
+     */
+    public function getLogger()
+    {
+        return $this->logger;
+    }
+
+    /**
+     * Set a logger instance.
+     *
+     * @param Mustache_Logger|Psr\Log\LoggerInterface $logger
+     */
+    public function setLogger($logger = null)
+    {
+        if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) {
+            throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.');
+        }
+
+        $this->logger = $logger;
+    }
+
+    /**
+     * Add a log record if logging is enabled.
+     *
+     * @param int    $level   The logging level
+     * @param string $message The log message
+     * @param array  $context The log context
+     */
+    protected function log($level, $message, array $context = array())
+    {
+        if (isset($this->logger)) {
+            $this->logger->log($level, $message, $context);
+        }
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.php
new file mode 100644 (file)
index 0000000..3e742b7
--- /dev/null
@@ -0,0 +1,161 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Cache filesystem implementation.
+ *
+ * A FilesystemCache instance caches Mustache Template classes from the filesystem by name:
+ *
+ *     $cache = new Mustache_Cache_FilesystemCache(dirname(__FILE__).'/cache');
+ *     $cache->cache($className, $compiledSource);
+ *
+ * The FilesystemCache benefits from any opcode caching that may be setup in your environment. So do that, k?
+ */
+class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache
+{
+    private $baseDir;
+    private $fileMode;
+
+    /**
+     * Filesystem cache constructor.
+     *
+     * @param string $baseDir  Directory for compiled templates
+     * @param int    $fileMode Override default permissions for cache files. Defaults to using the system-defined umask
+     */
+    public function __construct($baseDir, $fileMode = null)
+    {
+        $this->baseDir = $baseDir;
+        $this->fileMode = $fileMode;
+    }
+
+    /**
+     * Load the class from cache using `require_once`.
+     *
+     * @param string $key
+     *
+     * @return bool
+     */
+    public function load($key)
+    {
+        $fileName = $this->getCacheFilename($key);
+        if (!is_file($fileName)) {
+            return false;
+        }
+
+        require_once $fileName;
+
+        return true;
+    }
+
+    /**
+     * Cache and load the compiled class.
+     *
+     * @param string $key
+     * @param string $value
+     */
+    public function cache($key, $value)
+    {
+        $fileName = $this->getCacheFilename($key);
+
+        $this->log(
+            Mustache_Logger::DEBUG,
+            'Writing to template cache: "{fileName}"',
+            array('fileName' => $fileName)
+        );
+
+        $this->writeFile($fileName, $value);
+        $this->load($key);
+    }
+
+    /**
+     * Build the cache filename.
+     * Subclasses should override for custom cache directory structures.
+     *
+     * @param string $name
+     *
+     * @return string
+     */
+    protected function getCacheFilename($name)
+    {
+        return sprintf('%s/%s.php', $this->baseDir, $name);
+    }
+
+    /**
+     * Create cache directory.
+     *
+     * @throws Mustache_Exception_RuntimeException If unable to create directory
+     *
+     * @param string $fileName
+     *
+     * @return string
+     */
+    private function buildDirectoryForFilename($fileName)
+    {
+        $dirName = dirname($fileName);
+        if (!is_dir($dirName)) {
+            $this->log(
+                Mustache_Logger::INFO,
+                'Creating Mustache template cache directory: "{dirName}"',
+                array('dirName' => $dirName)
+            );
+
+            @mkdir($dirName, 0777, true);
+            // @codeCoverageIgnoreStart
+            if (!is_dir($dirName)) {
+                throw new Mustache_Exception_RuntimeException(sprintf('Failed to create cache directory "%s".', $dirName));
+            }
+            // @codeCoverageIgnoreEnd
+        }
+
+        return $dirName;
+    }
+
+    /**
+     * Write cache file.
+     *
+     * @throws Mustache_Exception_RuntimeException If unable to write file
+     *
+     * @param string $fileName
+     * @param string $value
+     */
+    private function writeFile($fileName, $value)
+    {
+        $dirName = $this->buildDirectoryForFilename($fileName);
+
+        $this->log(
+            Mustache_Logger::DEBUG,
+            'Caching compiled template to "{fileName}"',
+            array('fileName' => $fileName)
+        );
+
+        $tempFile = tempnam($dirName, basename($fileName));
+        if (false !== @file_put_contents($tempFile, $value)) {
+            if (@rename($tempFile, $fileName)) {
+                $mode = isset($this->fileMode) ? $this->fileMode : (0666 & ~umask());
+                @chmod($fileName, $mode);
+
+                return;
+            }
+
+            // @codeCoverageIgnoreStart
+            $this->log(
+                Mustache_Logger::ERROR,
+                'Unable to rename Mustache temp cache file: "{tempName}" -> "{fileName}"',
+                array('tempName' => $tempFile, 'fileName' => $fileName)
+            );
+            // @codeCoverageIgnoreEnd
+        }
+
+        // @codeCoverageIgnoreStart
+        throw new Mustache_Exception_RuntimeException(sprintf('Failed to write cache file "%s".', $fileName));
+        // @codeCoverageIgnoreEnd
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Cache/NoopCache.php
new file mode 100644 (file)
index 0000000..ed9eec9
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Cache in-memory implementation.
+ *
+ * The in-memory cache is used for uncached lambda section templates. It's also useful during development, but is not
+ * recommended for production use.
+ */
+class Mustache_Cache_NoopCache extends Mustache_Cache_AbstractCache
+{
+    /**
+     * Loads nothing. Move along.
+     *
+     * @param string $key
+     *
+     * @return bool
+     */
+    public function load($key)
+    {
+        return false;
+    }
+
+    /**
+     * Loads the compiled Mustache Template class without caching.
+     *
+     * @param string $key
+     * @param string $value
+     */
+    public function cache($key, $value)
+    {
+        $this->log(
+            Mustache_Logger::WARNING,
+            'Template cache disabled, evaluating "{className}" class at runtime',
+            array('className' => $key)
+        );
+        eval('?>' . $value);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Compiler.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Compiler.php
new file mode 100644 (file)
index 0000000..610369e
--- /dev/null
@@ -0,0 +1,692 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Compiler class.
+ *
+ * This class is responsible for turning a Mustache token parse tree into normal PHP source code.
+ */
+class Mustache_Compiler
+{
+    private $pragmas;
+    private $defaultPragmas = array();
+    private $sections;
+    private $blocks;
+    private $source;
+    private $indentNextLine;
+    private $customEscape;
+    private $entityFlags;
+    private $charset;
+    private $strictCallables;
+
+    /**
+     * Compile a Mustache token parse tree into PHP source code.
+     *
+     * @param string $source          Mustache Template source code
+     * @param string $tree            Parse tree of Mustache tokens
+     * @param string $name            Mustache Template class name
+     * @param bool   $customEscape    (default: false)
+     * @param string $charset         (default: 'UTF-8')
+     * @param bool   $strictCallables (default: false)
+     * @param int    $entityFlags     (default: ENT_COMPAT)
+     *
+     * @return string Generated PHP source code
+     */
+    public function compile($source, array $tree, $name, $customEscape = false, $charset = 'UTF-8', $strictCallables = false, $entityFlags = ENT_COMPAT)
+    {
+        $this->pragmas         = $this->defaultPragmas;
+        $this->sections        = array();
+        $this->blocks          = array();
+        $this->source          = $source;
+        $this->indentNextLine  = true;
+        $this->customEscape    = $customEscape;
+        $this->entityFlags     = $entityFlags;
+        $this->charset         = $charset;
+        $this->strictCallables = $strictCallables;
+
+        return $this->writeCode($tree, $name);
+    }
+
+    /**
+     * Enable pragmas across all templates, regardless of the presence of pragma
+     * tags in the individual templates.
+     *
+     * @internal Users should set global pragmas in Mustache_Engine, not here :)
+     *
+     * @param string[] $pragmas
+     */
+    public function setPragmas(array $pragmas)
+    {
+        $this->pragmas = array();
+        foreach ($pragmas as $pragma) {
+            $this->pragmas[$pragma] = true;
+        }
+        $this->defaultPragmas = $this->pragmas;
+    }
+
+    /**
+     * Helper function for walking the Mustache token parse tree.
+     *
+     * @throws Mustache_Exception_SyntaxException upon encountering unknown token types
+     *
+     * @param array $tree  Parse tree of Mustache tokens
+     * @param int   $level (default: 0)
+     *
+     * @return string Generated PHP source code
+     */
+    private function walk(array $tree, $level = 0)
+    {
+        $code = '';
+        $level++;
+        foreach ($tree as $node) {
+            switch ($node[Mustache_Tokenizer::TYPE]) {
+                case Mustache_Tokenizer::T_PRAGMA:
+                    $this->pragmas[$node[Mustache_Tokenizer::NAME]] = true;
+                    break;
+
+                case Mustache_Tokenizer::T_SECTION:
+                    $code .= $this->section(
+                        $node[Mustache_Tokenizer::NODES],
+                        $node[Mustache_Tokenizer::NAME],
+                        isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(),
+                        $node[Mustache_Tokenizer::INDEX],
+                        $node[Mustache_Tokenizer::END],
+                        $node[Mustache_Tokenizer::OTAG],
+                        $node[Mustache_Tokenizer::CTAG],
+                        $level
+                    );
+                    break;
+
+                case Mustache_Tokenizer::T_INVERTED:
+                    $code .= $this->invertedSection(
+                        $node[Mustache_Tokenizer::NODES],
+                        $node[Mustache_Tokenizer::NAME],
+                        isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(),
+                        $level
+                    );
+                    break;
+
+                case Mustache_Tokenizer::T_PARTIAL:
+                    $code .= $this->partial(
+                        $node[Mustache_Tokenizer::NAME],
+                        isset($node[Mustache_Tokenizer::INDENT]) ? $node[Mustache_Tokenizer::INDENT] : '',
+                        $level
+                    );
+                    break;
+
+                case Mustache_Tokenizer::T_PARENT:
+                    $code .= $this->parent(
+                        $node[Mustache_Tokenizer::NAME],
+                        isset($node[Mustache_Tokenizer::INDENT]) ? $node[Mustache_Tokenizer::INDENT] : '',
+                        $node[Mustache_Tokenizer::NODES],
+                        $level
+                    );
+                    break;
+
+                case Mustache_Tokenizer::T_BLOCK_ARG:
+                    $code .= $this->blockArg(
+                        $node[Mustache_Tokenizer::NODES],
+                        $node[Mustache_Tokenizer::NAME],
+                        $node[Mustache_Tokenizer::INDEX],
+                        $node[Mustache_Tokenizer::END],
+                        $node[Mustache_Tokenizer::OTAG],
+                        $node[Mustache_Tokenizer::CTAG],
+                        $level
+                    );
+                    break;
+
+                case Mustache_Tokenizer::T_BLOCK_VAR:
+                    $code .= $this->blockVar(
+                        $node[Mustache_Tokenizer::NODES],
+                        $node[Mustache_Tokenizer::NAME],
+                        $node[Mustache_Tokenizer::INDEX],
+                        $node[Mustache_Tokenizer::END],
+                        $node[Mustache_Tokenizer::OTAG],
+                        $node[Mustache_Tokenizer::CTAG],
+                        $level
+                    );
+                    break;
+
+                case Mustache_Tokenizer::T_COMMENT:
+                    break;
+
+                case Mustache_Tokenizer::T_ESCAPED:
+                case Mustache_Tokenizer::T_UNESCAPED:
+                case Mustache_Tokenizer::T_UNESCAPED_2:
+                    $code .= $this->variable(
+                        $node[Mustache_Tokenizer::NAME],
+                        isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(),
+                        $node[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_ESCAPED,
+                        $level
+                    );
+                    break;
+
+                case Mustache_Tokenizer::T_TEXT:
+                    $code .= $this->text($node[Mustache_Tokenizer::VALUE], $level);
+                    break;
+
+                default:
+                    throw new Mustache_Exception_SyntaxException(sprintf('Unknown token type: %s', $node[Mustache_Tokenizer::TYPE]), $node);
+            }
+        }
+
+        return $code;
+    }
+
+    const KLASS = '<?php
+
+        class %s extends Mustache_Template
+        {
+            private $lambdaHelper;%s
+
+            public function renderInternal(Mustache_Context $context, $indent = \'\')
+            {
+                $this->lambdaHelper = new Mustache_LambdaHelper($this->mustache, $context);
+                $buffer = \'\';
+        %s
+
+                return $buffer;
+            }
+        %s
+        %s
+        }';
+
+    const KLASS_NO_LAMBDAS = '<?php
+
+        class %s extends Mustache_Template
+        {%s
+            public function renderInternal(Mustache_Context $context, $indent = \'\')
+            {
+                $buffer = \'\';
+        %s
+
+                return $buffer;
+            }
+        }';
+
+    const STRICT_CALLABLE = 'protected $strictCallables = true;';
+
+    /**
+     * Generate Mustache Template class PHP source.
+     *
+     * @param array  $tree Parse tree of Mustache tokens
+     * @param string $name Mustache Template class name
+     *
+     * @return string Generated PHP source code
+     */
+    private function writeCode($tree, $name)
+    {
+        $code     = $this->walk($tree);
+        $sections = implode("\n", $this->sections);
+        $blocks   = implode("\n", $this->blocks);
+        $klass    = empty($this->sections) && empty($this->blocks) ? self::KLASS_NO_LAMBDAS : self::KLASS;
+
+        $callable = $this->strictCallables ? $this->prepare(self::STRICT_CALLABLE) : '';
+
+        return sprintf($this->prepare($klass, 0, false, true), $name, $callable, $code, $sections, $blocks);
+    }
+
+    const BLOCK_VAR = '
+        $blockFunction = $context->findInBlock(%s);
+        if (is_callable($blockFunction)) {
+            $buffer .= call_user_func($blockFunction, $context);
+        %s}
+    ';
+
+    const BLOCK_VAR_ELSE = '} else {%s';
+
+    /**
+     * Generate Mustache Template inheritance block variable PHP source.
+     *
+     * @param array  $nodes Array of child tokens
+     * @param string $id    Section name
+     * @param int    $start Section start offset
+     * @param int    $end   Section end offset
+     * @param string $otag  Current Mustache opening tag
+     * @param string $ctag  Current Mustache closing tag
+     * @param int    $level
+     *
+     * @return string Generated PHP source code
+     */
+    private function blockVar($nodes, $id, $start, $end, $otag, $ctag, $level)
+    {
+        $id = var_export($id, true);
+
+        $else = $this->walk($nodes, $level);
+        if ($else !== '') {
+            $else = sprintf($this->prepare(self::BLOCK_VAR_ELSE, $level + 1, false, true), $else);
+        }
+
+        return sprintf($this->prepare(self::BLOCK_VAR, $level), $id, $else);
+    }
+
+    const BLOCK_ARG = '%s => array($this, \'block%s\'),';
+
+    /**
+     * Generate Mustache Template inheritance block argument PHP source.
+     *
+     * @param array  $nodes Array of child tokens
+     * @param string $id    Section name
+     * @param int    $start Section start offset
+     * @param int    $end   Section end offset
+     * @param string $otag  Current Mustache opening tag
+     * @param string $ctag  Current Mustache closing tag
+     * @param int    $level
+     *
+     * @return string Generated PHP source code
+     */
+    private function blockArg($nodes, $id, $start, $end, $otag, $ctag, $level)
+    {
+        $key = $this->block($nodes);
+        $keystr = var_export($key, true);
+        $id = var_export($id, true);
+
+        return sprintf($this->prepare(self::BLOCK_ARG, $level), $id, $key);
+    }
+
+    const BLOCK_FUNCTION = '
+        public function block%s($context)
+        {
+            $indent = $buffer = \'\';%s
+
+            return $buffer;
+        }
+    ';
+
+    /**
+     * Generate Mustache Template inheritance block function PHP source.
+     *
+     * @param array $nodes Array of child tokens
+     *
+     * @return string key of new block function
+     */
+    private function block($nodes)
+    {
+        $code = $this->walk($nodes, 0);
+        $key = ucfirst(md5($code));
+
+        if (!isset($this->blocks[$key])) {
+            $this->blocks[$key] = sprintf($this->prepare(self::BLOCK_FUNCTION, 0), $key, $code);
+        }
+
+        return $key;
+    }
+
+    const SECTION_CALL = '
+        // %s section
+        $value = $context->%s(%s);%s
+        $buffer .= $this->section%s($context, $indent, $value);
+    ';
+
+    const SECTION = '
+        private function section%s(Mustache_Context $context, $indent, $value)
+        {
+            $buffer = \'\';
+
+            if (%s) {
+                $source = %s;
+                $result = call_user_func($value, $source, %s);
+                if (strpos($result, \'{{\') === false) {
+                    $buffer .= $result;
+                } else {
+                    $buffer .= $this->mustache
+                        ->loadLambda((string) $result%s)
+                        ->renderInternal($context);
+                }
+            } elseif (!empty($value)) {
+                $values = $this->isIterable($value) ? $value : array($value);
+                foreach ($values as $value) {
+                    $context->push($value);
+                    %s
+                    $context->pop();
+                }
+            }
+
+            return $buffer;
+        }
+    ';
+
+    /**
+     * Generate Mustache Template section PHP source.
+     *
+     * @param array    $nodes   Array of child tokens
+     * @param string   $id      Section name
+     * @param string[] $filters Array of filters
+     * @param int      $start   Section start offset
+     * @param int      $end     Section end offset
+     * @param string   $otag    Current Mustache opening tag
+     * @param string   $ctag    Current Mustache closing tag
+     * @param int      $level
+     *
+     * @return string Generated section PHP source code
+     */
+    private function section($nodes, $id, $filters, $start, $end, $otag, $ctag, $level)
+    {
+        $source   = var_export(substr($this->source, $start, $end - $start), true);
+        $callable = $this->getCallable();
+
+        if ($otag !== '{{' || $ctag !== '}}') {
+            $delimTag = var_export(sprintf('{{= %s %s =}}', $otag, $ctag), true);
+            $helper = sprintf('$this->lambdaHelper->withDelimiters(%s)', $delimTag);
+            $delims = ', ' . $delimTag;
+        } else {
+            $helper = '$this->lambdaHelper';
+            $delims = '';
+        }
+
+        $key = ucfirst(md5($delims . "\n" . $source));
+
+        if (!isset($this->sections[$key])) {
+            $this->sections[$key] = sprintf($this->prepare(self::SECTION), $key, $callable, $source, $helper, $delims, $this->walk($nodes, 2));
+        }
+
+        $method  = $this->getFindMethod($id);
+        $id      = var_export($id, true);
+        $filters = $this->getFilters($filters, $level);
+
+        return sprintf($this->prepare(self::SECTION_CALL, $level), $id, $method, $id, $filters, $key);
+    }
+
+    const INVERTED_SECTION = '
+        // %s inverted section
+        $value = $context->%s(%s);%s
+        if (empty($value)) {
+            %s
+        }
+    ';
+
+    /**
+     * Generate Mustache Template inverted section PHP source.
+     *
+     * @param array    $nodes   Array of child tokens
+     * @param string   $id      Section name
+     * @param string[] $filters Array of filters
+     * @param int      $level
+     *
+     * @return string Generated inverted section PHP source code
+     */
+    private function invertedSection($nodes, $id, $filters, $level)
+    {
+        $method  = $this->getFindMethod($id);
+        $id      = var_export($id, true);
+        $filters = $this->getFilters($filters, $level);
+
+        return sprintf($this->prepare(self::INVERTED_SECTION, $level), $id, $method, $id, $filters, $this->walk($nodes, $level));
+    }
+
+    const PARTIAL_INDENT = ', $indent . %s';
+    const PARTIAL = '
+        if ($partial = $this->mustache->loadPartial(%s)) {
+            $buffer .= $partial->renderInternal($context%s);
+        }
+    ';
+
+    /**
+     * Generate Mustache Template partial call PHP source.
+     *
+     * @param string $id     Partial name
+     * @param string $indent Whitespace indent to apply to partial
+     * @param int    $level
+     *
+     * @return string Generated partial call PHP source code
+     */
+    private function partial($id, $indent, $level)
+    {
+        if ($indent !== '') {
+            $indentParam = sprintf(self::PARTIAL_INDENT, var_export($indent, true));
+        } else {
+            $indentParam = '';
+        }
+
+        return sprintf(
+            $this->prepare(self::PARTIAL, $level),
+            var_export($id, true),
+            $indentParam
+        );
+    }
+
+    const PARENT = '
+        if ($parent = $this->mustache->loadPartial(%s)) {
+            $context->pushBlockContext(array(%s
+            ));
+            $buffer .= $parent->renderInternal($context, $indent);
+            $context->popBlockContext();
+        }
+    ';
+
+    const PARENT_NO_CONTEXT = '
+        if ($parent = $this->mustache->loadPartial(%s)) {
+            $buffer .= $parent->renderInternal($context, $indent);
+        }
+    ';
+
+    /**
+     * Generate Mustache Template inheritance parent call PHP source.
+     *
+     * @param string $id       Parent tag name
+     * @param string $indent   Whitespace indent to apply to parent
+     * @param array  $children Child nodes
+     * @param int    $level
+     *
+     * @return string Generated PHP source code
+     */
+    private function parent($id, $indent, array $children, $level)
+    {
+        $realChildren = array_filter($children, array(__CLASS__, 'onlyBlockArgs'));
+
+        if (empty($realChildren)) {
+            return sprintf($this->prepare(self::PARENT_NO_CONTEXT, $level), var_export($id, true));
+        }
+
+        return sprintf(
+            $this->prepare(self::PARENT, $level),
+            var_export($id, true),
+            $this->walk($realChildren, $level + 1)
+        );
+    }
+
+    /**
+     * Helper method for filtering out non-block-arg tokens.
+     *
+     * @param array $node
+     *
+     * @return bool True if $node is a block arg token
+     */
+    private static function onlyBlockArgs(array $node)
+    {
+        return $node[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_BLOCK_ARG;
+    }
+
+    const VARIABLE = '
+        $value = $this->resolveValue($context->%s(%s), $context);%s
+        $buffer .= %s%s;
+    ';
+
+    /**
+     * Generate Mustache Template variable interpolation PHP source.
+     *
+     * @param string   $id      Variable name
+     * @param string[] $filters Array of filters
+     * @param bool     $escape  Escape the variable value for output?
+     * @param int      $level
+     *
+     * @return string Generated variable interpolation PHP source
+     */
+    private function variable($id, $filters, $escape, $level)
+    {
+        $method  = $this->getFindMethod($id);
+        $id      = ($method !== 'last') ? var_export($id, true) : '';
+        $filters = $this->getFilters($filters, $level);
+        $value   = $escape ? $this->getEscape() : '$value';
+
+        return sprintf($this->prepare(self::VARIABLE, $level), $method, $id, $filters, $this->flushIndent(), $value);
+    }
+
+    const FILTER = '
+        $filter = $context->%s(%s);
+        if (!(%s)) {
+            throw new Mustache_Exception_UnknownFilterException(%s);
+        }
+        $value = call_user_func($filter, $value);%s
+    ';
+
+    /**
+     * Generate Mustache Template variable filtering PHP source.
+     *
+     * @param string[] $filters Array of filters
+     * @param int      $level
+     *
+     * @return string Generated filter PHP source
+     */
+    private function getFilters(array $filters, $level)
+    {
+        if (empty($filters)) {
+            return '';
+        }
+
+        $name     = array_shift($filters);
+        $method   = $this->getFindMethod($name);
+        $filter   = ($method !== 'last') ? var_export($name, true) : '';
+        $callable = $this->getCallable('$filter');
+        $msg      = var_export($name, true);
+
+        return sprintf($this->prepare(self::FILTER, $level), $method, $filter, $callable, $msg, $this->getFilters($filters, $level));
+    }
+
+    const LINE = '$buffer .= "\n";';
+    const TEXT = '$buffer .= %s%s;';
+
+    /**
+     * Generate Mustache Template output Buffer call PHP source.
+     *
+     * @param string $text
+     * @param int    $level
+     *
+     * @return string Generated output Buffer call PHP source
+     */
+    private function text($text, $level)
+    {
+        $indentNextLine = (substr($text, -1) === "\n");
+        $code = sprintf($this->prepare(self::TEXT, $level), $this->flushIndent(), var_export($text, true));
+        $this->indentNextLine = $indentNextLine;
+
+        return $code;
+    }
+
+    /**
+     * Prepare PHP source code snippet for output.
+     *
+     * @param string $text
+     * @param int    $bonus          Additional indent level (default: 0)
+     * @param bool   $prependNewline Prepend a newline to the snippet? (default: true)
+     * @param bool   $appendNewline  Append a newline to the snippet? (default: false)
+     *
+     * @return string PHP source code snippet
+     */
+    private function prepare($text, $bonus = 0, $prependNewline = true, $appendNewline = false)
+    {
+        $text = ($prependNewline ? "\n" : '') . trim($text);
+        if ($prependNewline) {
+            $bonus++;
+        }
+        if ($appendNewline) {
+            $text .= "\n";
+        }
+
+        return preg_replace("/\n( {8})?/", "\n" . str_repeat(' ', $bonus * 4), $text);
+    }
+
+    const DEFAULT_ESCAPE = 'htmlspecialchars(%s, %s, %s)';
+    const CUSTOM_ESCAPE  = 'call_user_func($this->mustache->getEscape(), %s)';
+
+    /**
+     * Get the current escaper.
+     *
+     * @param string $value (default: '$value')
+     *
+     * @return string Either a custom callback, or an inline call to `htmlspecialchars`
+     */
+    private function getEscape($value = '$value')
+    {
+        if ($this->customEscape) {
+            return sprintf(self::CUSTOM_ESCAPE, $value);
+        }
+
+        return sprintf(self::DEFAULT_ESCAPE, $value, var_export($this->entityFlags, true), var_export($this->charset, true));
+    }
+
+    /**
+     * Select the appropriate Context `find` method for a given $id.
+     *
+     * The return value will be one of `find`, `findDot`, `findAnchoredDot` or `last`.
+     *
+     * @see Mustache_Context::find
+     * @see Mustache_Context::findDot
+     * @see Mustache_Context::last
+     *
+     * @param string $id Variable name
+     *
+     * @return string `find` method name
+     */
+    private function getFindMethod($id)
+    {
+        if ($id === '.') {
+            return 'last';
+        }
+
+        if (isset($this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) && $this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) {
+            if (substr($id, 0, 1) === '.') {
+                return 'findAnchoredDot';
+            }
+        }
+
+        if (strpos($id, '.') === false) {
+            return 'find';
+        }
+
+        return 'findDot';
+    }
+
+    const IS_CALLABLE        = '!is_string(%s) && is_callable(%s)';
+    const STRICT_IS_CALLABLE = 'is_object(%s) && is_callable(%s)';
+
+    /**
+     * Helper function to compile strict vs lax "is callable" logic.
+     *
+     * @param string $variable (default: '$value')
+     *
+     * @return string "is callable" logic
+     */
+    private function getCallable($variable = '$value')
+    {
+        $tpl = $this->strictCallables ? self::STRICT_IS_CALLABLE : self::IS_CALLABLE;
+
+        return sprintf($tpl, $variable, $variable);
+    }
+
+    const LINE_INDENT = '$indent . ';
+
+    /**
+     * Get the current $indent prefix to write to the buffer.
+     *
+     * @return string "$indent . " or ""
+     */
+    private function flushIndent()
+    {
+        if (!$this->indentNextLine) {
+            return '';
+        }
+
+        $this->indentNextLine = false;
+
+        return self::LINE_INDENT;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Context.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Context.php
new file mode 100644 (file)
index 0000000..69c02e0
--- /dev/null
@@ -0,0 +1,242 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Template rendering Context.
+ */
+class Mustache_Context
+{
+    private $stack      = array();
+    private $blockStack = array();
+
+    /**
+     * Mustache rendering Context constructor.
+     *
+     * @param mixed $context Default rendering context (default: null)
+     */
+    public function __construct($context = null)
+    {
+        if ($context !== null) {
+            $this->stack = array($context);
+        }
+    }
+
+    /**
+     * Push a new Context frame onto the stack.
+     *
+     * @param mixed $value Object or array to use for context
+     */
+    public function push($value)
+    {
+        array_push($this->stack, $value);
+    }
+
+    /**
+     * Push a new Context frame onto the block context stack.
+     *
+     * @param mixed $value Object or array to use for block context
+     */
+    public function pushBlockContext($value)
+    {
+        array_push($this->blockStack, $value);
+    }
+
+    /**
+     * Pop the last Context frame from the stack.
+     *
+     * @return mixed Last Context frame (object or array)
+     */
+    public function pop()
+    {
+        return array_pop($this->stack);
+    }
+
+    /**
+     * Pop the last block Context frame from the stack.
+     *
+     * @return mixed Last block Context frame (object or array)
+     */
+    public function popBlockContext()
+    {
+        return array_pop($this->blockStack);
+    }
+
+    /**
+     * Get the last Context frame.
+     *
+     * @return mixed Last Context frame (object or array)
+     */
+    public function last()
+    {
+        return end($this->stack);
+    }
+
+    /**
+     * Find a variable in the Context stack.
+     *
+     * Starting with the last Context frame (the context of the innermost section), and working back to the top-level
+     * rendering context, look for a variable with the given name:
+     *
+     *  * If the Context frame is an associative array which contains the key $id, returns the value of that element.
+     *  * If the Context frame is an object, this will check first for a public method, then a public property named
+     *    $id. Failing both of these, it will try `__isset` and `__get` magic methods.
+     *  * If a value named $id is not found in any Context frame, returns an empty string.
+     *
+     * @param string $id Variable name
+     *
+     * @return mixed Variable value, or '' if not found
+     */
+    public function find($id)
+    {
+        return $this->findVariableInStack($id, $this->stack);
+    }
+
+    /**
+     * Find a 'dot notation' variable in the Context stack.
+     *
+     * Note that dot notation traversal bubbles through scope differently than the regular find method. After finding
+     * the initial chunk of the dotted name, each subsequent chunk is searched for only within the value of the previous
+     * result. For example, given the following context stack:
+     *
+     *     $data = array(
+     *         'name' => 'Fred',
+     *         'child' => array(
+     *             'name' => 'Bob'
+     *         ),
+     *     );
+     *
+     * ... and the Mustache following template:
+     *
+     *     {{ child.name }}
+     *
+     * ... the `name` value is only searched for within the `child` value of the global Context, not within parent
+     * Context frames.
+     *
+     * @param string $id Dotted variable selector
+     *
+     * @return mixed Variable value, or '' if not found
+     */
+    public function findDot($id)
+    {
+        $chunks = explode('.', $id);
+        $first  = array_shift($chunks);
+        $value  = $this->findVariableInStack($first, $this->stack);
+
+        foreach ($chunks as $chunk) {
+            if ($value === '') {
+                return $value;
+            }
+
+            $value = $this->findVariableInStack($chunk, array($value));
+        }
+
+        return $value;
+    }
+
+    /**
+     * Find an 'anchored dot notation' variable in the Context stack.
+     *
+     * This is the same as findDot(), except it looks in the top of the context
+     * stack for the first value, rather than searching the whole context stack
+     * and starting from there.
+     *
+     * @see Mustache_Context::findDot
+     *
+     * @throws Mustache_Exception_InvalidArgumentException if given an invalid anchored dot $id
+     *
+     * @param string $id Dotted variable selector
+     *
+     * @return mixed Variable value, or '' if not found
+     */
+    public function findAnchoredDot($id)
+    {
+        $chunks = explode('.', $id);
+        $first  = array_shift($chunks);
+        if ($first !== '') {
+            throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected id for findAnchoredDot: %s', $id));
+        }
+
+        $value  = $this->last();
+
+        foreach ($chunks as $chunk) {
+            if ($value === '') {
+                return $value;
+            }
+
+            $value = $this->findVariableInStack($chunk, array($value));
+        }
+
+        return $value;
+    }
+
+    /**
+     * Find an argument in the block context stack.
+     *
+     * @param string $id
+     *
+     * @return mixed Variable value, or '' if not found
+     */
+    public function findInBlock($id)
+    {
+        foreach ($this->blockStack as $context) {
+            if (array_key_exists($id, $context)) {
+                return $context[$id];
+            }
+        }
+
+        return '';
+    }
+
+    /**
+     * Helper function to find a variable in the Context stack.
+     *
+     * @see Mustache_Context::find
+     *
+     * @param string $id    Variable name
+     * @param array  $stack Context stack
+     *
+     * @return mixed Variable value, or '' if not found
+     */
+    private function findVariableInStack($id, array $stack)
+    {
+        for ($i = count($stack) - 1; $i >= 0; $i--) {
+            $frame = &$stack[$i];
+
+            switch (gettype($frame)) {
+                case 'object':
+                    if (!($frame instanceof Closure)) {
+                        // Note that is_callable() *will not work here*
+                        // See https://github.com/bobthecow/mustache.php/wiki/Magic-Methods
+                        if (method_exists($frame, $id)) {
+                            return $frame->$id();
+                        }
+
+                        if (isset($frame->$id)) {
+                            return $frame->$id;
+                        }
+
+                        if ($frame instanceof ArrayAccess && isset($frame[$id])) {
+                            return $frame[$id];
+                        }
+                    }
+                    break;
+
+                case 'array':
+                    if (array_key_exists($id, $frame)) {
+                        return $frame[$id];
+                    }
+                    break;
+            }
+        }
+
+        return '';
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Engine.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Engine.php
new file mode 100644 (file)
index 0000000..fe99799
--- /dev/null
@@ -0,0 +1,829 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * A Mustache implementation in PHP.
+ *
+ * {@link http://defunkt.github.com/mustache}
+ *
+ * Mustache is a framework-agnostic logic-less templating language. It enforces separation of view
+ * logic from template files. In fact, it is not even possible to embed logic in the template.
+ *
+ * This is very, very rad.
+ *
+ * @author Justin Hileman {@link http://justinhileman.com}
+ */
+class Mustache_Engine
+{
+    const VERSION        = '2.13.0';
+    const SPEC_VERSION   = '1.1.2';
+
+    const PRAGMA_FILTERS      = 'FILTERS';
+    const PRAGMA_BLOCKS       = 'BLOCKS';
+    const PRAGMA_ANCHORED_DOT = 'ANCHORED-DOT';
+
+    // Known pragmas
+    private static $knownPragmas = array(
+        self::PRAGMA_FILTERS      => true,
+        self::PRAGMA_BLOCKS       => true,
+        self::PRAGMA_ANCHORED_DOT => true,
+    );
+
+    // Template cache
+    private $templates = array();
+
+    // Environment
+    private $templateClassPrefix = '__Mustache_';
+    private $cache;
+    private $lambdaCache;
+    private $cacheLambdaTemplates = false;
+    private $loader;
+    private $partialsLoader;
+    private $helpers;
+    private $escape;
+    private $entityFlags = ENT_COMPAT;
+    private $charset = 'UTF-8';
+    private $logger;
+    private $strictCallables = false;
+    private $pragmas = array();
+    private $delimiters;
+
+    // Services
+    private $tokenizer;
+    private $parser;
+    private $compiler;
+
+    /**
+     * Mustache class constructor.
+     *
+     * Passing an $options array allows overriding certain Mustache options during instantiation:
+     *
+     *     $options = array(
+     *         // The class prefix for compiled templates. Defaults to '__Mustache_'.
+     *         'template_class_prefix' => '__MyTemplates_',
+     *
+     *         // A Mustache cache instance or a cache directory string for compiled templates.
+     *         // Mustache will not cache templates unless this is set.
+     *         'cache' => dirname(__FILE__).'/tmp/cache/mustache',
+     *
+     *         // Override default permissions for cache files. Defaults to using the system-defined umask. It is
+     *         // *strongly* recommended that you configure your umask properly rather than overriding permissions here.
+     *         'cache_file_mode' => 0666,
+     *
+     *         // Optionally, enable caching for lambda section templates. This is generally not recommended, as lambda
+     *         // sections are often too dynamic to benefit from caching.
+     *         'cache_lambda_templates' => true,
+     *
+     *         // Customize the tag delimiters used by this engine instance. Note that overriding here changes the
+     *         // delimiters used to parse all templates and partials loaded by this instance. To override just for a
+     *         // single template, use an inline "change delimiters" tag at the start of the template file:
+     *         //
+     *         //     {{=<% %>=}}
+     *         //
+     *         'delimiters' => '<% %>',
+     *
+     *         // A Mustache template loader instance. Uses a StringLoader if not specified.
+     *         'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'),
+     *
+     *         // A Mustache loader instance for partials.
+     *         'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials'),
+     *
+     *         // An array of Mustache partials. Useful for quick-and-dirty string template loading, but not as
+     *         // efficient or lazy as a Filesystem (or database) loader.
+     *         'partials' => array('foo' => file_get_contents(dirname(__FILE__).'/views/partials/foo.mustache')),
+     *
+     *         // An array of 'helpers'. Helpers can be global variables or objects, closures (e.g. for higher order
+     *         // sections), or any other valid Mustache context value. They will be prepended to the context stack,
+     *         // so they will be available in any template loaded by this Mustache instance.
+     *         'helpers' => array('i18n' => function ($text) {
+     *             // do something translatey here...
+     *         }),
+     *
+     *         // An 'escape' callback, responsible for escaping double-mustache variables.
+     *         'escape' => function ($value) {
+     *             return htmlspecialchars($buffer, ENT_COMPAT, 'UTF-8');
+     *         },
+     *
+     *         // Type argument for `htmlspecialchars`.  Defaults to ENT_COMPAT.  You may prefer ENT_QUOTES.
+     *         'entity_flags' => ENT_QUOTES,
+     *
+     *         // Character set for `htmlspecialchars`. Defaults to 'UTF-8'. Use 'UTF-8'.
+     *         'charset' => 'ISO-8859-1',
+     *
+     *         // A Mustache Logger instance. No logging will occur unless this is set. Using a PSR-3 compatible
+     *         // logging library -- such as Monolog -- is highly recommended. A simple stream logger implementation is
+     *         // available as well:
+     *         'logger' => new Mustache_Logger_StreamLogger('php://stderr'),
+     *
+     *         // Only treat Closure instances and invokable classes as callable. If true, values like
+     *         // `array('ClassName', 'methodName')` and `array($classInstance, 'methodName')`, which are traditionally
+     *         // "callable" in PHP, are not called to resolve variables for interpolation or section contexts. This
+     *         // helps protect against arbitrary code execution when user input is passed directly into the template.
+     *         // This currently defaults to false, but will default to true in v3.0.
+     *         'strict_callables' => true,
+     *
+     *         // Enable pragmas across all templates, regardless of the presence of pragma tags in the individual
+     *         // templates.
+     *         'pragmas' => [Mustache_Engine::PRAGMA_FILTERS],
+     *     );
+     *
+     * @throws Mustache_Exception_InvalidArgumentException If `escape` option is not callable
+     *
+     * @param array $options (default: array())
+     */
+    public function __construct(array $options = array())
+    {
+        if (isset($options['template_class_prefix'])) {
+            if ((string) $options['template_class_prefix'] === '') {
+                throw new Mustache_Exception_InvalidArgumentException('Mustache Constructor "template_class_prefix" must not be empty');
+            }
+
+            $this->templateClassPrefix = $options['template_class_prefix'];
+        }
+
+        if (isset($options['cache'])) {
+            $cache = $options['cache'];
+
+            if (is_string($cache)) {
+                $mode  = isset($options['cache_file_mode']) ? $options['cache_file_mode'] : null;
+                $cache = new Mustache_Cache_FilesystemCache($cache, $mode);
+            }
+
+            $this->setCache($cache);
+        }
+
+        if (isset($options['cache_lambda_templates'])) {
+            $this->cacheLambdaTemplates = (bool) $options['cache_lambda_templates'];
+        }
+
+        if (isset($options['loader'])) {
+            $this->setLoader($options['loader']);
+        }
+
+        if (isset($options['partials_loader'])) {
+            $this->setPartialsLoader($options['partials_loader']);
+        }
+
+        if (isset($options['partials'])) {
+            $this->setPartials($options['partials']);
+        }
+
+        if (isset($options['helpers'])) {
+            $this->setHelpers($options['helpers']);
+        }
+
+        if (isset($options['escape'])) {
+            if (!is_callable($options['escape'])) {
+                throw new Mustache_Exception_InvalidArgumentException('Mustache Constructor "escape" option must be callable');
+            }
+
+            $this->escape = $options['escape'];
+        }
+
+        if (isset($options['entity_flags'])) {
+            $this->entityFlags = $options['entity_flags'];
+        }
+
+        if (isset($options['charset'])) {
+            $this->charset = $options['charset'];
+        }
+
+        if (isset($options['logger'])) {
+            $this->setLogger($options['logger']);
+        }
+
+        if (isset($options['strict_callables'])) {
+            $this->strictCallables = $options['strict_callables'];
+        }
+
+        if (isset($options['delimiters'])) {
+            $this->delimiters = $options['delimiters'];
+        }
+
+        if (isset($options['pragmas'])) {
+            foreach ($options['pragmas'] as $pragma) {
+                if (!isset(self::$knownPragmas[$pragma])) {
+                    throw new Mustache_Exception_InvalidArgumentException(sprintf('Unknown pragma: "%s".', $pragma));
+                }
+                $this->pragmas[$pragma] = true;
+            }
+        }
+    }
+
+    /**
+     * Shortcut 'render' invocation.
+     *
+     * Equivalent to calling `$mustache->loadTemplate($template)->render($context);`
+     *
+     * @see Mustache_Engine::loadTemplate
+     * @see Mustache_Template::render
+     *
+     * @param string $template
+     * @param mixed  $context  (default: array())
+     *
+     * @return string Rendered template
+     */
+    public function render($template, $context = array())
+    {
+        return $this->loadTemplate($template)->render($context);
+    }
+
+    /**
+     * Get the current Mustache escape callback.
+     *
+     * @return callable|null
+     */
+    public function getEscape()
+    {
+        return $this->escape;
+    }
+
+    /**
+     * Get the current Mustache entitity type to escape.
+     *
+     * @return int
+     */
+    public function getEntityFlags()
+    {
+        return $this->entityFlags;
+    }
+
+    /**
+     * Get the current Mustache character set.
+     *
+     * @return string
+     */
+    public function getCharset()
+    {
+        return $this->charset;
+    }
+
+    /**
+     * Get the current globally enabled pragmas.
+     *
+     * @return array
+     */
+    public function getPragmas()
+    {
+        return array_keys($this->pragmas);
+    }
+
+    /**
+     * Set the Mustache template Loader instance.
+     *
+     * @param Mustache_Loader $loader
+     */
+    public function setLoader(Mustache_Loader $loader)
+    {
+        $this->loader = $loader;
+    }
+
+    /**
+     * Get the current Mustache template Loader instance.
+     *
+     * If no Loader instance has been explicitly specified, this method will instantiate and return
+     * a StringLoader instance.
+     *
+     * @return Mustache_Loader
+     */
+    public function getLoader()
+    {
+        if (!isset($this->loader)) {
+            $this->loader = new Mustache_Loader_StringLoader();
+        }
+
+        return $this->loader;
+    }
+
+    /**
+     * Set the Mustache partials Loader instance.
+     *
+     * @param Mustache_Loader $partialsLoader
+     */
+    public function setPartialsLoader(Mustache_Loader $partialsLoader)
+    {
+        $this->partialsLoader = $partialsLoader;
+    }
+
+    /**
+     * Get the current Mustache partials Loader instance.
+     *
+     * If no Loader instance has been explicitly specified, this method will instantiate and return
+     * an ArrayLoader instance.
+     *
+     * @return Mustache_Loader
+     */
+    public function getPartialsLoader()
+    {
+        if (!isset($this->partialsLoader)) {
+            $this->partialsLoader = new Mustache_Loader_ArrayLoader();
+        }
+
+        return $this->partialsLoader;
+    }
+
+    /**
+     * Set partials for the current partials Loader instance.
+     *
+     * @throws Mustache_Exception_RuntimeException If the current Loader instance is immutable
+     *
+     * @param array $partials (default: array())
+     */
+    public function setPartials(array $partials = array())
+    {
+        if (!isset($this->partialsLoader)) {
+            $this->partialsLoader = new Mustache_Loader_ArrayLoader();
+        }
+
+        if (!$this->partialsLoader instanceof Mustache_Loader_MutableLoader) {
+            throw new Mustache_Exception_RuntimeException('Unable to set partials on an immutable Mustache Loader instance');
+        }
+
+        $this->partialsLoader->setTemplates($partials);
+    }
+
+    /**
+     * Set an array of Mustache helpers.
+     *
+     * An array of 'helpers'. Helpers can be global variables or objects, closures (e.g. for higher order sections), or
+     * any other valid Mustache context value. They will be prepended to the context stack, so they will be available in
+     * any template loaded by this Mustache instance.
+     *
+     * @throws Mustache_Exception_InvalidArgumentException if $helpers is not an array or Traversable
+     *
+     * @param array|Traversable $helpers
+     */
+    public function setHelpers($helpers)
+    {
+        if (!is_array($helpers) && !$helpers instanceof Traversable) {
+            throw new Mustache_Exception_InvalidArgumentException('setHelpers expects an array of helpers');
+        }
+
+        $this->getHelpers()->clear();
+
+        foreach ($helpers as $name => $helper) {
+            $this->addHelper($name, $helper);
+        }
+    }
+
+    /**
+     * Get the current set of Mustache helpers.
+     *
+     * @see Mustache_Engine::setHelpers
+     *
+     * @return Mustache_HelperCollection
+     */
+    public function getHelpers()
+    {
+        if (!isset($this->helpers)) {
+            $this->helpers = new Mustache_HelperCollection();
+        }
+
+        return $this->helpers;
+    }
+
+    /**
+     * Add a new Mustache helper.
+     *
+     * @see Mustache_Engine::setHelpers
+     *
+     * @param string $name
+     * @param mixed  $helper
+     */
+    public function addHelper($name, $helper)
+    {
+        $this->getHelpers()->add($name, $helper);
+    }
+
+    /**
+     * Get a Mustache helper by name.
+     *
+     * @see Mustache_Engine::setHelpers
+     *
+     * @param string $name
+     *
+     * @return mixed Helper
+     */
+    public function getHelper($name)
+    {
+        return $this->getHelpers()->get($name);
+    }
+
+    /**
+     * Check whether this Mustache instance has a helper.
+     *
+     * @see Mustache_Engine::setHelpers
+     *
+     * @param string $name
+     *
+     * @return bool True if the helper is present
+     */
+    public function hasHelper($name)
+    {
+        return $this->getHelpers()->has($name);
+    }
+
+    /**
+     * Remove a helper by name.
+     *
+     * @see Mustache_Engine::setHelpers
+     *
+     * @param string $name
+     */
+    public function removeHelper($name)
+    {
+        $this->getHelpers()->remove($name);
+    }
+
+    /**
+     * Set the Mustache Logger instance.
+     *
+     * @throws Mustache_Exception_InvalidArgumentException If logger is not an instance of Mustache_Logger or Psr\Log\LoggerInterface
+     *
+     * @param Mustache_Logger|Psr\Log\LoggerInterface $logger
+     */
+    public function setLogger($logger = null)
+    {
+        if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) {
+            throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.');
+        }
+
+        if ($this->getCache()->getLogger() === null) {
+            $this->getCache()->setLogger($logger);
+        }
+
+        $this->logger = $logger;
+    }
+
+    /**
+     * Get the current Mustache Logger instance.
+     *
+     * @return Mustache_Logger|Psr\Log\LoggerInterface
+     */
+    public function getLogger()
+    {
+        return $this->logger;
+    }
+
+    /**
+     * Set the Mustache Tokenizer instance.
+     *
+     * @param Mustache_Tokenizer $tokenizer
+     */
+    public function setTokenizer(Mustache_Tokenizer $tokenizer)
+    {
+        $this->tokenizer = $tokenizer;
+    }
+
+    /**
+     * Get the current Mustache Tokenizer instance.
+     *
+     * If no Tokenizer instance has been explicitly specified, this method will instantiate and return a new one.
+     *
+     * @return Mustache_Tokenizer
+     */
+    public function getTokenizer()
+    {
+        if (!isset($this->tokenizer)) {
+            $this->tokenizer = new Mustache_Tokenizer();
+        }
+
+        return $this->tokenizer;
+    }
+
+    /**
+     * Set the Mustache Parser instance.
+     *
+     * @param Mustache_Parser $parser
+     */
+    public function setParser(Mustache_Parser $parser)
+    {
+        $this->parser = $parser;
+    }
+
+    /**
+     * Get the current Mustache Parser instance.
+     *
+     * If no Parser instance has been explicitly specified, this method will instantiate and return a new one.
+     *
+     * @return Mustache_Parser
+     */
+    public function getParser()
+    {
+        if (!isset($this->parser)) {
+            $this->parser = new Mustache_Parser();
+        }
+
+        return $this->parser;
+    }
+
+    /**
+     * Set the Mustache Compiler instance.
+     *
+     * @param Mustache_Compiler $compiler
+     */
+    public function setCompiler(Mustache_Compiler $compiler)
+    {
+        $this->compiler = $compiler;
+    }
+
+    /**
+     * Get the current Mustache Compiler instance.
+     *
+     * If no Compiler instance has been explicitly specified, this method will instantiate and return a new one.
+     *
+     * @return Mustache_Compiler
+     */
+    public function getCompiler()
+    {
+        if (!isset($this->compiler)) {
+            $this->compiler = new Mustache_Compiler();
+        }
+
+        return $this->compiler;
+    }
+
+    /**
+     * Set the Mustache Cache instance.
+     *
+     * @param Mustache_Cache $cache
+     */
+    public function setCache(Mustache_Cache $cache)
+    {
+        if (isset($this->logger) && $cache->getLogger() === null) {
+            $cache->setLogger($this->getLogger());
+        }
+
+        $this->cache = $cache;
+    }
+
+    /**
+     * Get the current Mustache Cache instance.
+     *
+     * If no Cache instance has been explicitly specified, this method will instantiate and return a new one.
+     *
+     * @return Mustache_Cache
+     */
+    public function getCache()
+    {
+        if (!isset($this->cache)) {
+            $this->setCache(new Mustache_Cache_NoopCache());
+        }
+
+        return $this->cache;
+    }
+
+    /**
+     * Get the current Lambda Cache instance.
+     *
+     * If 'cache_lambda_templates' is enabled, this is the default cache instance. Otherwise, it is a NoopCache.
+     *
+     * @see Mustache_Engine::getCache
+     *
+     * @return Mustache_Cache
+     */
+    protected function getLambdaCache()
+    {
+        if ($this->cacheLambdaTemplates) {
+            return $this->getCache();
+        }
+
+        if (!isset($this->lambdaCache)) {
+            $this->lambdaCache = new Mustache_Cache_NoopCache();
+        }
+
+        return $this->lambdaCache;
+    }
+
+    /**
+     * Helper method to generate a Mustache template class.
+     *
+     * This method must be updated any time options are added which make it so
+     * the same template could be parsed and compiled multiple different ways.
+     *
+     * @param string|Mustache_Source $source
+     *
+     * @return string Mustache Template class name
+     */
+    public function getTemplateClassName($source)
+    {
+        // For the most part, adding a new option here should do the trick.
+        //
+        // Pick a value here which is unique for each possible way the template
+        // could be compiled... but not necessarily unique per option value. See
+        // escape below, which only needs to differentiate between 'custom' and
+        // 'default' escapes.
+        //
+        // Keep this list in alphabetical order :)
+        $chunks = array(
+            'charset'         => $this->charset,
+            'delimiters'      => $this->delimiters ? $this->delimiters : '{{ }}',
+            'entityFlags'     => $this->entityFlags,
+            'escape'          => isset($this->escape) ? 'custom' : 'default',
+            'key'             => ($source instanceof Mustache_Source) ? $source->getKey() : 'source',
+            'pragmas'         => $this->getPragmas(),
+            'strictCallables' => $this->strictCallables,
+            'version'         => self::VERSION,
+        );
+
+        $key = json_encode($chunks);
+
+        // Template Source instances have already provided their own source key. For strings, just include the whole
+        // source string in the md5 hash.
+        if (!$source instanceof Mustache_Source) {
+            $key .= "\n" . $source;
+        }
+
+        return $this->templateClassPrefix . md5($key);
+    }
+
+    /**
+     * Load a Mustache Template by name.
+     *
+     * @param string $name
+     *
+     * @return Mustache_Template
+     */
+    public function loadTemplate($name)
+    {
+        return $this->loadSource($this->getLoader()->load($name));
+    }
+
+    /**
+     * Load a Mustache partial Template by name.
+     *
+     * This is a helper method used internally by Template instances for loading partial templates. You can most likely
+     * ignore it completely.
+     *
+     * @param string $name
+     *
+     * @return Mustache_Template
+     */
+    public function loadPartial($name)
+    {
+        try {
+            if (isset($this->partialsLoader)) {
+                $loader = $this->partialsLoader;
+            } elseif (isset($this->loader) && !$this->loader instanceof Mustache_Loader_StringLoader) {
+                $loader = $this->loader;
+            } else {
+                throw new Mustache_Exception_UnknownTemplateException($name);
+            }
+
+            return $this->loadSource($loader->load($name));
+        } catch (Mustache_Exception_UnknownTemplateException $e) {
+            // If the named partial cannot be found, log then return null.
+            $this->log(
+                Mustache_Logger::WARNING,
+                'Partial not found: "{name}"',
+                array('name' => $e->getTemplateName())
+            );
+        }
+    }
+
+    /**
+     * Load a Mustache lambda Template by source.
+     *
+     * This is a helper method used by Template instances to generate subtemplates for Lambda sections. You can most
+     * likely ignore it completely.
+     *
+     * @param string $source
+     * @param string $delims (default: null)
+     *
+     * @return Mustache_Template
+     */
+    public function loadLambda($source, $delims = null)
+    {
+        if ($delims !== null) {
+            $source = $delims . "\n" . $source;
+        }
+
+        return $this->loadSource($source, $this->getLambdaCache());
+    }
+
+    /**
+     * Instantiate and return a Mustache Template instance by source.
+     *
+     * Optionally provide a Mustache_Cache instance. This is used internally by Mustache_Engine::loadLambda to respect
+     * the 'cache_lambda_templates' configuration option.
+     *
+     * @see Mustache_Engine::loadTemplate
+     * @see Mustache_Engine::loadPartial
+     * @see Mustache_Engine::loadLambda
+     *
+     * @param string|Mustache_Source $source
+     * @param Mustache_Cache         $cache  (default: null)
+     *
+     * @return Mustache_Template
+     */
+    private function loadSource($source, Mustache_Cache $cache = null)
+    {
+        $className = $this->getTemplateClassName($source);
+
+        if (!isset($this->templates[$className])) {
+            if ($cache === null) {
+                $cache = $this->getCache();
+            }
+
+            if (!class_exists($className, false)) {
+                if (!$cache->load($className)) {
+                    $compiled = $this->compile($source);
+                    $cache->cache($className, $compiled);
+                }
+            }
+
+            $this->log(
+                Mustache_Logger::DEBUG,
+                'Instantiating template: "{className}"',
+                array('className' => $className)
+            );
+
+            $this->templates[$className] = new $className($this);
+        }
+
+        return $this->templates[$className];
+    }
+
+    /**
+     * Helper method to tokenize a Mustache template.
+     *
+     * @see Mustache_Tokenizer::scan
+     *
+     * @param string $source
+     *
+     * @return array Tokens
+     */
+    private function tokenize($source)
+    {
+        return $this->getTokenizer()->scan($source, $this->delimiters);
+    }
+
+    /**
+     * Helper method to parse a Mustache template.
+     *
+     * @see Mustache_Parser::parse
+     *
+     * @param string $source
+     *
+     * @return array Token tree
+     */
+    private function parse($source)
+    {
+        $parser = $this->getParser();
+        $parser->setPragmas($this->getPragmas());
+
+        return $parser->parse($this->tokenize($source));
+    }
+
+    /**
+     * Helper method to compile a Mustache template.
+     *
+     * @see Mustache_Compiler::compile
+     *
+     * @param string|Mustache_Source $source
+     *
+     * @return string generated Mustache template class code
+     */
+    private function compile($source)
+    {
+        $name = $this->getTemplateClassName($source);
+
+        $this->log(
+            Mustache_Logger::INFO,
+            'Compiling template to "{className}" class',
+            array('className' => $name)
+        );
+
+        if ($source instanceof Mustache_Source) {
+            $source = $source->getSource();
+        }
+        $tree = $this->parse($source);
+
+        $compiler = $this->getCompiler();
+        $compiler->setPragmas($this->getPragmas());
+
+        return $compiler->compile($source, $tree, $name, isset($this->escape), $this->charset, $this->strictCallables, $this->entityFlags);
+    }
+
+    /**
+     * Add a log record if logging is enabled.
+     *
+     * @param int    $level   The logging level
+     * @param string $message The log message
+     * @param array  $context The log context
+     */
+    private function log($level, $message, array $context = array())
+    {
+        if (isset($this->logger)) {
+            $this->logger->log($level, $message, $context);
+        }
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Exception.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Exception.php
new file mode 100644 (file)
index 0000000..d4001a9
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * A Mustache Exception interface.
+ */
+interface Mustache_Exception
+{
+    // This space intentionally left blank.
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php
new file mode 100644 (file)
index 0000000..becf2ed
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Invalid argument exception.
+ */
+class Mustache_Exception_InvalidArgumentException extends InvalidArgumentException implements Mustache_Exception
+{
+    // This space intentionally left blank.
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/LogicException.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/LogicException.php
new file mode 100644 (file)
index 0000000..b2424d6
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Logic exception.
+ */
+class Mustache_Exception_LogicException extends LogicException implements Mustache_Exception
+{
+    // This space intentionally left blank.
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/RuntimeException.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/RuntimeException.php
new file mode 100644 (file)
index 0000000..b6369f4
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Runtime exception.
+ */
+class Mustache_Exception_RuntimeException extends RuntimeException implements Mustache_Exception
+{
+    // This space intentionally left blank.
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/SyntaxException.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/SyntaxException.php
new file mode 100644 (file)
index 0000000..b1879a3
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache syntax exception.
+ */
+class Mustache_Exception_SyntaxException extends LogicException implements Mustache_Exception
+{
+    protected $token;
+
+    /**
+     * @param string    $msg
+     * @param array     $token
+     * @param Exception $previous
+     */
+    public function __construct($msg, array $token, Exception $previous = null)
+    {
+        $this->token = $token;
+        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+            parent::__construct($msg, 0, $previous);
+        } else {
+            parent::__construct($msg); // @codeCoverageIgnore
+        }
+    }
+
+    /**
+     * @return array
+     */
+    public function getToken()
+    {
+        return $this->token;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.php
new file mode 100644 (file)
index 0000000..0651c17
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Unknown filter exception.
+ */
+class Mustache_Exception_UnknownFilterException extends UnexpectedValueException implements Mustache_Exception
+{
+    protected $filterName;
+
+    /**
+     * @param string    $filterName
+     * @param Exception $previous
+     */
+    public function __construct($filterName, Exception $previous = null)
+    {
+        $this->filterName = $filterName;
+        $message = sprintf('Unknown filter: %s', $filterName);
+        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+            parent::__construct($message, 0, $previous);
+        } else {
+            parent::__construct($message); // @codeCoverageIgnore
+        }
+    }
+
+    public function getFilterName()
+    {
+        return $this->filterName;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.php
new file mode 100644 (file)
index 0000000..193be78
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Unknown helper exception.
+ */
+class Mustache_Exception_UnknownHelperException extends InvalidArgumentException implements Mustache_Exception
+{
+    protected $helperName;
+
+    /**
+     * @param string    $helperName
+     * @param Exception $previous
+     */
+    public function __construct($helperName, Exception $previous = null)
+    {
+        $this->helperName = $helperName;
+        $message = sprintf('Unknown helper: %s', $helperName);
+        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+            parent::__construct($message, 0, $previous);
+        } else {
+            parent::__construct($message); // @codeCoverageIgnore
+        }
+    }
+
+    public function getHelperName()
+    {
+        return $this->helperName;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.php
new file mode 100644 (file)
index 0000000..32a778a
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Unknown template exception.
+ */
+class Mustache_Exception_UnknownTemplateException extends InvalidArgumentException implements Mustache_Exception
+{
+    protected $templateName;
+
+    /**
+     * @param string    $templateName
+     * @param Exception $previous
+     */
+    public function __construct($templateName, Exception $previous = null)
+    {
+        $this->templateName = $templateName;
+        $message = sprintf('Unknown template: %s', $templateName);
+        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+            parent::__construct($message, 0, $previous);
+        } else {
+            parent::__construct($message); // @codeCoverageIgnore
+        }
+    }
+
+    public function getTemplateName()
+    {
+        return $this->templateName;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/HelperCollection.php b/admin/lib/vendor/mustache/mustache/src/Mustache/HelperCollection.php
new file mode 100644 (file)
index 0000000..5d8f73c
--- /dev/null
@@ -0,0 +1,172 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * A collection of helpers for a Mustache instance.
+ */
+class Mustache_HelperCollection
+{
+    private $helpers = array();
+
+    /**
+     * Helper Collection constructor.
+     *
+     * Optionally accepts an array (or Traversable) of `$name => $helper` pairs.
+     *
+     * @throws Mustache_Exception_InvalidArgumentException if the $helpers argument isn't an array or Traversable
+     *
+     * @param array|Traversable $helpers (default: null)
+     */
+    public function __construct($helpers = null)
+    {
+        if ($helpers === null) {
+            return;
+        }
+
+        if (!is_array($helpers) && !$helpers instanceof Traversable) {
+            throw new Mustache_Exception_InvalidArgumentException('HelperCollection constructor expects an array of helpers');
+        }
+
+        foreach ($helpers as $name => $helper) {
+            $this->add($name, $helper);
+        }
+    }
+
+    /**
+     * Magic mutator.
+     *
+     * @see Mustache_HelperCollection::add
+     *
+     * @param string $name
+     * @param mixed  $helper
+     */
+    public function __set($name, $helper)
+    {
+        $this->add($name, $helper);
+    }
+
+    /**
+     * Add a helper to this collection.
+     *
+     * @param string $name
+     * @param mixed  $helper
+     */
+    public function add($name, $helper)
+    {
+        $this->helpers[$name] = $helper;
+    }
+
+    /**
+     * Magic accessor.
+     *
+     * @see Mustache_HelperCollection::get
+     *
+     * @param string $name
+     *
+     * @return mixed Helper
+     */
+    public function __get($name)
+    {
+        return $this->get($name);
+    }
+
+    /**
+     * Get a helper by name.
+     *
+     * @throws Mustache_Exception_UnknownHelperException If helper does not exist
+     *
+     * @param string $name
+     *
+     * @return mixed Helper
+     */
+    public function get($name)
+    {
+        if (!$this->has($name)) {
+            throw new Mustache_Exception_UnknownHelperException($name);
+        }
+
+        return $this->helpers[$name];
+    }
+
+    /**
+     * Magic isset().
+     *
+     * @see Mustache_HelperCollection::has
+     *
+     * @param string $name
+     *
+     * @return bool True if helper is present
+     */
+    public function __isset($name)
+    {
+        return $this->has($name);
+    }
+
+    /**
+     * Check whether a given helper is present in the collection.
+     *
+     * @param string $name
+     *
+     * @return bool True if helper is present
+     */
+    public function has($name)
+    {
+        return array_key_exists($name, $this->helpers);
+    }
+
+    /**
+     * Magic unset().
+     *
+     * @see Mustache_HelperCollection::remove
+     *
+     * @param string $name
+     */
+    public function __unset($name)
+    {
+        $this->remove($name);
+    }
+
+    /**
+     * Check whether a given helper is present in the collection.
+     *
+     * @throws Mustache_Exception_UnknownHelperException if the requested helper is not present
+     *
+     * @param string $name
+     */
+    public function remove($name)
+    {
+        if (!$this->has($name)) {
+            throw new Mustache_Exception_UnknownHelperException($name);
+        }
+
+        unset($this->helpers[$name]);
+    }
+
+    /**
+     * Clear the helper collection.
+     *
+     * Removes all helpers from this collection
+     */
+    public function clear()
+    {
+        $this->helpers = array();
+    }
+
+    /**
+     * Check whether the helper collection is empty.
+     *
+     * @return bool True if the collection is empty
+     */
+    public function isEmpty()
+    {
+        return empty($this->helpers);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/LambdaHelper.php b/admin/lib/vendor/mustache/mustache/src/Mustache/LambdaHelper.php
new file mode 100644 (file)
index 0000000..e93dbfa
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Lambda Helper.
+ *
+ * Passed as the second argument to section lambdas (higher order sections),
+ * giving them access to a `render` method for rendering a string with the
+ * current context.
+ */
+class Mustache_LambdaHelper
+{
+    private $mustache;
+    private $context;
+    private $delims;
+
+    /**
+     * Mustache Lambda Helper constructor.
+     *
+     * @param Mustache_Engine  $mustache Mustache engine instance
+     * @param Mustache_Context $context  Rendering context
+     * @param string           $delims   Optional custom delimiters, in the format `{{= <% %> =}}`. (default: null)
+     */
+    public function __construct(Mustache_Engine $mustache, Mustache_Context $context, $delims = null)
+    {
+        $this->mustache = $mustache;
+        $this->context  = $context;
+        $this->delims   = $delims;
+    }
+
+    /**
+     * Render a string as a Mustache template with the current rendering context.
+     *
+     * @param string $string
+     *
+     * @return string Rendered template
+     */
+    public function render($string)
+    {
+        return $this->mustache
+            ->loadLambda((string) $string, $this->delims)
+            ->renderInternal($this->context);
+    }
+
+    /**
+     * Render a string as a Mustache template with the current rendering context.
+     *
+     * @param string $string
+     *
+     * @return string Rendered template
+     */
+    public function __invoke($string)
+    {
+        return $this->render($string);
+    }
+
+    /**
+     * Get a Lambda Helper with custom delimiters.
+     *
+     * @param string $delims Custom delimiters, in the format `{{= <% %> =}}`
+     *
+     * @return Mustache_LambdaHelper
+     */
+    public function withDelimiters($delims)
+    {
+        return new self($this->mustache, $this->context, $delims);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Loader.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Loader.php
new file mode 100644 (file)
index 0000000..23adba1
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Template Loader interface.
+ */
+interface Mustache_Loader
+{
+    /**
+     * Load a Template by name.
+     *
+     * @throws Mustache_Exception_UnknownTemplateException If a template file is not found
+     *
+     * @param string $name
+     *
+     * @return string|Mustache_Source Mustache Template source
+     */
+    public function load($name);
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/ArrayLoader.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/ArrayLoader.php
new file mode 100644 (file)
index 0000000..4276493
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Template array Loader implementation.
+ *
+ * An ArrayLoader instance loads Mustache Template source by name from an initial array:
+ *
+ *     $loader = new ArrayLoader(
+ *         'foo' => '{{ bar }}',
+ *         'baz' => 'Hey {{ qux }}!'
+ *     );
+ *
+ *     $tpl = $loader->load('foo'); // '{{ bar }}'
+ *
+ * The ArrayLoader is used internally as a partials loader by Mustache_Engine instance when an array of partials
+ * is set. It can also be used as a quick-and-dirty Template loader.
+ */
+class Mustache_Loader_ArrayLoader implements Mustache_Loader, Mustache_Loader_MutableLoader
+{
+    private $templates;
+
+    /**
+     * ArrayLoader constructor.
+     *
+     * @param array $templates Associative array of Template source (default: array())
+     */
+    public function __construct(array $templates = array())
+    {
+        $this->templates = $templates;
+    }
+
+    /**
+     * Load a Template.
+     *
+     * @throws Mustache_Exception_UnknownTemplateException If a template file is not found
+     *
+     * @param string $name
+     *
+     * @return string Mustache Template source
+     */
+    public function load($name)
+    {
+        if (!isset($this->templates[$name])) {
+            throw new Mustache_Exception_UnknownTemplateException($name);
+        }
+
+        return $this->templates[$name];
+    }
+
+    /**
+     * Set an associative array of Template sources for this loader.
+     *
+     * @param array $templates
+     */
+    public function setTemplates(array $templates)
+    {
+        $this->templates = $templates;
+    }
+
+    /**
+     * Set a Template source by name.
+     *
+     * @param string $name
+     * @param string $template Mustache Template source
+     */
+    public function setTemplate($name, $template)
+    {
+        $this->templates[$name] = $template;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.php
new file mode 100644 (file)
index 0000000..3fb6353
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * A Mustache Template cascading loader implementation, which delegates to other
+ * Loader instances.
+ */
+class Mustache_Loader_CascadingLoader implements Mustache_Loader
+{
+    private $loaders;
+
+    /**
+     * Construct a CascadingLoader with an array of loaders.
+     *
+     *     $loader = new Mustache_Loader_CascadingLoader(array(
+     *         new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__),
+     *         new Mustache_Loader_FilesystemLoader(__DIR__.'/templates')
+     *     ));
+     *
+     * @param Mustache_Loader[] $loaders
+     */
+    public function __construct(array $loaders = array())
+    {
+        $this->loaders = array();
+        foreach ($loaders as $loader) {
+            $this->addLoader($loader);
+        }
+    }
+
+    /**
+     * Add a Loader instance.
+     *
+     * @param Mustache_Loader $loader
+     */
+    public function addLoader(Mustache_Loader $loader)
+    {
+        $this->loaders[] = $loader;
+    }
+
+    /**
+     * Load a Template by name.
+     *
+     * @throws Mustache_Exception_UnknownTemplateException If a template file is not found
+     *
+     * @param string $name
+     *
+     * @return string Mustache Template source
+     */
+    public function load($name)
+    {
+        foreach ($this->loaders as $loader) {
+            try {
+                return $loader->load($name);
+            } catch (Mustache_Exception_UnknownTemplateException $e) {
+                // do nothing, check the next loader.
+            }
+        }
+
+        throw new Mustache_Exception_UnknownTemplateException($name);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.php
new file mode 100644 (file)
index 0000000..e366df7
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Template filesystem Loader implementation.
+ *
+ * A FilesystemLoader instance loads Mustache Template source from the filesystem by name:
+ *
+ *     $loader = new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views');
+ *     $tpl = $loader->load('foo'); // equivalent to `file_get_contents(dirname(__FILE__).'/views/foo.mustache');
+ *
+ * This is probably the most useful Mustache Loader implementation. It can be used for partials and normal Templates:
+ *
+ *     $m = new Mustache(array(
+ *          'loader'          => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'),
+ *          'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials'),
+ *     ));
+ */
+class Mustache_Loader_FilesystemLoader implements Mustache_Loader
+{
+    private $baseDir;
+    private $extension = '.mustache';
+    private $templates = array();
+
+    /**
+     * Mustache filesystem Loader constructor.
+     *
+     * Passing an $options array allows overriding certain Loader options during instantiation:
+     *
+     *     $options = array(
+     *         // The filename extension used for Mustache templates. Defaults to '.mustache'
+     *         'extension' => '.ms',
+     *     );
+     *
+     * @throws Mustache_Exception_RuntimeException if $baseDir does not exist
+     *
+     * @param string $baseDir Base directory containing Mustache template files
+     * @param array  $options Array of Loader options (default: array())
+     */
+    public function __construct($baseDir, array $options = array())
+    {
+        $this->baseDir = $baseDir;
+
+        if (strpos($this->baseDir, '://') === false) {
+            $this->baseDir = realpath($this->baseDir);
+        }
+
+        if ($this->shouldCheckPath() && !is_dir($this->baseDir)) {
+            throw new Mustache_Exception_RuntimeException(sprintf('FilesystemLoader baseDir must be a directory: %s', $baseDir));
+        }
+
+        if (array_key_exists('extension', $options)) {
+            if (empty($options['extension'])) {
+                $this->extension = '';
+            } else {
+                $this->extension = '.' . ltrim($options['extension'], '.');
+            }
+        }
+    }
+
+    /**
+     * Load a Template by name.
+     *
+     *     $loader = new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views');
+     *     $loader->load('admin/dashboard'); // loads "./views/admin/dashboard.mustache";
+     *
+     * @param string $name
+     *
+     * @return string Mustache Template source
+     */
+    public function load($name)
+    {
+        if (!isset($this->templates[$name])) {
+            $this->templates[$name] = $this->loadFile($name);
+        }
+
+        return $this->templates[$name];
+    }
+
+    /**
+     * Helper function for loading a Mustache file by name.
+     *
+     * @throws Mustache_Exception_UnknownTemplateException If a template file is not found
+     *
+     * @param string $name
+     *
+     * @return string Mustache Template source
+     */
+    protected function loadFile($name)
+    {
+        $fileName = $this->getFileName($name);
+
+        if ($this->shouldCheckPath() && !file_exists($fileName)) {
+            throw new Mustache_Exception_UnknownTemplateException($name);
+        }
+
+        return file_get_contents($fileName);
+    }
+
+    /**
+     * Helper function for getting a Mustache template file name.
+     *
+     * @param string $name
+     *
+     * @return string Template file name
+     */
+    protected function getFileName($name)
+    {
+        $fileName = $this->baseDir . '/' . $name;
+        if (substr($fileName, 0 - strlen($this->extension)) !== $this->extension) {
+            $fileName .= $this->extension;
+        }
+
+        return $fileName;
+    }
+
+    /**
+     * Only check if baseDir is a directory and requested templates are files if
+     * baseDir is using the filesystem stream wrapper.
+     *
+     * @return bool Whether to check `is_dir` and `file_exists`
+     */
+    protected function shouldCheckPath()
+    {
+        return strpos($this->baseDir, '://') === false || strpos($this->baseDir, 'file://') === 0;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.php
new file mode 100644 (file)
index 0000000..ae297fe
--- /dev/null
@@ -0,0 +1,123 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * A Mustache Template loader for inline templates.
+ *
+ * With the InlineLoader, templates can be defined at the end of any PHP source
+ * file:
+ *
+ *     $loader  = new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__);
+ *     $hello   = $loader->load('hello');
+ *     $goodbye = $loader->load('goodbye');
+ *
+ *     __halt_compiler();
+ *
+ *     @@ hello
+ *     Hello, {{ planet }}!
+ *
+ *     @@ goodbye
+ *     Goodbye, cruel {{ planet }}
+ *
+ * Templates are deliniated by lines containing only `@@ name`.
+ *
+ * The InlineLoader is well-suited to micro-frameworks such as Silex:
+ *
+ *     $app->register(new MustacheServiceProvider, array(
+ *         'mustache.loader' => new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__)
+ *     ));
+ *
+ *     $app->get('/{name}', function ($name) use ($app) {
+ *         return $app['mustache']->render('hello', compact('name'));
+ *     })
+ *     ->value('name', 'world');
+ *
+ *     // ...
+ *
+ *     __halt_compiler();
+ *
+ *     @@ hello
+ *     Hello, {{ name }}!
+ */
+class Mustache_Loader_InlineLoader implements Mustache_Loader
+{
+    protected $fileName;
+    protected $offset;
+    protected $templates;
+
+    /**
+     * The InlineLoader requires a filename and offset to process templates.
+     *
+     * The magic constants `__FILE__` and `__COMPILER_HALT_OFFSET__` are usually
+     * perfectly suited to the job:
+     *
+     *     $loader = new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__);
+     *
+     * Note that this only works if the loader is instantiated inside the same
+     * file as the inline templates. If the templates are located in another
+     * file, it would be necessary to manually specify the filename and offset.
+     *
+     * @param string $fileName The file to parse for inline templates
+     * @param int    $offset   A string offset for the start of the templates.
+     *                         This usually coincides with the `__halt_compiler`
+     *                         call, and the `__COMPILER_HALT_OFFSET__`
+     */
+    public function __construct($fileName, $offset)
+    {
+        if (!is_file($fileName)) {
+            throw new Mustache_Exception_InvalidArgumentException('InlineLoader expects a valid filename.');
+        }
+
+        if (!is_int($offset) || $offset < 0) {
+            throw new Mustache_Exception_InvalidArgumentException('InlineLoader expects a valid file offset.');
+        }
+
+        $this->fileName = $fileName;
+        $this->offset   = $offset;
+    }
+
+    /**
+     * Load a Template by name.
+     *
+     * @throws Mustache_Exception_UnknownTemplateException If a template file is not found
+     *
+     * @param string $name
+     *
+     * @return string Mustache Template source
+     */
+    public function load($name)
+    {
+        $this->loadTemplates();
+
+        if (!array_key_exists($name, $this->templates)) {
+            throw new Mustache_Exception_UnknownTemplateException($name);
+        }
+
+        return $this->templates[$name];
+    }
+
+    /**
+     * Parse and load templates from the end of a source file.
+     */
+    protected function loadTemplates()
+    {
+        if ($this->templates === null) {
+            $this->templates = array();
+            $data = file_get_contents($this->fileName, false, null, $this->offset);
+            foreach (preg_split("/^@@(?= [\w\d\.]+$)/m", $data, -1) as $chunk) {
+                if (trim($chunk)) {
+                    list($name, $content)         = explode("\n", $chunk, 2);
+                    $this->templates[trim($name)] = trim($content);
+                }
+            }
+        }
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php
new file mode 100644 (file)
index 0000000..57fe5be
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Template mutable Loader interface.
+ */
+interface Mustache_Loader_MutableLoader
+{
+    /**
+     * Set an associative array of Template sources for this loader.
+     *
+     * @param array $templates
+     */
+    public function setTemplates(array $templates);
+
+    /**
+     * Set a Template source by name.
+     *
+     * @param string $name
+     * @param string $template Mustache Template source
+     */
+    public function setTemplate($name, $template);
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/ProductionFilesystemLoader.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/ProductionFilesystemLoader.php
new file mode 100644 (file)
index 0000000..e735332
--- /dev/null
@@ -0,0 +1,86 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Template production filesystem Loader implementation.
+ *
+ * A production-ready FilesystemLoader, which doesn't require reading a file if it already exists in the template cache.
+ *
+ * {@inheritdoc}
+ */
+class Mustache_Loader_ProductionFilesystemLoader extends Mustache_Loader_FilesystemLoader
+{
+    private $statProps;
+
+    /**
+     * Mustache production filesystem Loader constructor.
+     *
+     * Passing an $options array allows overriding certain Loader options during instantiation:
+     *
+     *     $options = array(
+     *         // The filename extension used for Mustache templates. Defaults to '.mustache'
+     *         'extension' => '.ms',
+     *         'stat_props' => array('size', 'mtime'),
+     *     );
+     *
+     * Specifying 'stat_props' overrides the stat properties used to invalidate the template cache. By default, this
+     * uses 'mtime' and 'size', but this can be set to any of the properties supported by stat():
+     *
+     *     http://php.net/manual/en/function.stat.php
+     *
+     * You can also disable filesystem stat entirely:
+     *
+     *     $options = array('stat_props' => null);
+     *
+     * But with great power comes great responsibility. Namely, if you disable stat-based cache invalidation,
+     * YOU MUST CLEAR THE TEMPLATE CACHE YOURSELF when your templates change. Make it part of your build or deploy
+     * process so you don't forget!
+     *
+     * @throws Mustache_Exception_RuntimeException if $baseDir does not exist.
+     *
+     * @param string $baseDir Base directory containing Mustache template files.
+     * @param array  $options Array of Loader options (default: array())
+     */
+    public function __construct($baseDir, array $options = array())
+    {
+        parent::__construct($baseDir, $options);
+
+        if (array_key_exists('stat_props', $options)) {
+            if (empty($options['stat_props'])) {
+                $this->statProps = array();
+            } else {
+                $this->statProps = $options['stat_props'];
+            }
+        } else {
+            $this->statProps = array('size', 'mtime');
+        }
+    }
+
+    /**
+     * Helper function for loading a Mustache file by name.
+     *
+     * @throws Mustache_Exception_UnknownTemplateException If a template file is not found.
+     *
+     * @param string $name
+     *
+     * @return Mustache_Source Mustache Template source
+     */
+    protected function loadFile($name)
+    {
+        $fileName = $this->getFileName($name);
+
+        if (!file_exists($fileName)) {
+            throw new Mustache_Exception_UnknownTemplateException($name);
+        }
+
+        return new Mustache_Source_FilesystemSource($fileName, $this->statProps);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/StringLoader.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Loader/StringLoader.php
new file mode 100644 (file)
index 0000000..7012c03
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Template string Loader implementation.
+ *
+ * A StringLoader instance is essentially a noop. It simply passes the 'name' argument straight through:
+ *
+ *     $loader = new StringLoader;
+ *     $tpl = $loader->load('{{ foo }}'); // '{{ foo }}'
+ *
+ * This is the default Template Loader instance used by Mustache:
+ *
+ *     $m = new Mustache;
+ *     $tpl = $m->loadTemplate('{{ foo }}');
+ *     echo $tpl->render(array('foo' => 'bar')); // "bar"
+ */
+class Mustache_Loader_StringLoader implements Mustache_Loader
+{
+    /**
+     * Load a Template by source.
+     *
+     * @param string $name Mustache Template source
+     *
+     * @return string Mustache Template source
+     */
+    public function load($name)
+    {
+        return $name;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Logger.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Logger.php
new file mode 100644 (file)
index 0000000..cb4037a
--- /dev/null
@@ -0,0 +1,126 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Describes a Mustache logger instance.
+ *
+ * This is identical to the Psr\Log\LoggerInterface.
+ *
+ * The message MUST be a string or object implementing __toString().
+ *
+ * The message MAY contain placeholders in the form: {foo} where foo
+ * will be replaced by the context data in key "foo".
+ *
+ * The context array can contain arbitrary data, the only assumption that
+ * can be made by implementors is that if an Exception instance is given
+ * to produce a stack trace, it MUST be in a key named "exception".
+ *
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
+ * for the full interface specification.
+ */
+interface Mustache_Logger
+{
+    /**
+     * Psr\Log compatible log levels.
+     */
+    const EMERGENCY = 'emergency';
+    const ALERT     = 'alert';
+    const CRITICAL  = 'critical';
+    const ERROR     = 'error';
+    const WARNING   = 'warning';
+    const NOTICE    = 'notice';
+    const INFO      = 'info';
+    const DEBUG     = 'debug';
+
+    /**
+     * System is unusable.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function emergency($message, array $context = array());
+
+    /**
+     * Action must be taken immediately.
+     *
+     * Example: Entire website down, database unavailable, etc. This should
+     * trigger the SMS alerts and wake you up.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function alert($message, array $context = array());
+
+    /**
+     * Critical conditions.
+     *
+     * Example: Application component unavailable, unexpected exception.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function critical($message, array $context = array());
+
+    /**
+     * Runtime errors that do not require immediate action but should typically
+     * be logged and monitored.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function error($message, array $context = array());
+
+    /**
+     * Exceptional occurrences that are not errors.
+     *
+     * Example: Use of deprecated APIs, poor use of an API, undesirable things
+     * that are not necessarily wrong.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function warning($message, array $context = array());
+
+    /**
+     * Normal but significant events.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function notice($message, array $context = array());
+
+    /**
+     * Interesting events.
+     *
+     * Example: User logs in, SQL logs.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function info($message, array $context = array());
+
+    /**
+     * Detailed debug information.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function debug($message, array $context = array());
+
+    /**
+     * Logs with an arbitrary level.
+     *
+     * @param mixed  $level
+     * @param string $message
+     * @param array  $context
+     */
+    public function log($level, $message, array $context = array());
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Logger/AbstractLogger.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Logger/AbstractLogger.php
new file mode 100644 (file)
index 0000000..a169f9c
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * This is a simple Logger implementation that other Loggers can inherit from.
+ *
+ * This is identical to the Psr\Log\AbstractLogger.
+ *
+ * It simply delegates all log-level-specific methods to the `log` method to
+ * reduce boilerplate code that a simple Logger that does the same thing with
+ * messages regardless of the error level has to implement.
+ */
+abstract class Mustache_Logger_AbstractLogger implements Mustache_Logger
+{
+    /**
+     * System is unusable.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function emergency($message, array $context = array())
+    {
+        $this->log(Mustache_Logger::EMERGENCY, $message, $context);
+    }
+
+    /**
+     * Action must be taken immediately.
+     *
+     * Example: Entire website down, database unavailable, etc. This should
+     * trigger the SMS alerts and wake you up.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function alert($message, array $context = array())
+    {
+        $this->log(Mustache_Logger::ALERT, $message, $context);
+    }
+
+    /**
+     * Critical conditions.
+     *
+     * Example: Application component unavailable, unexpected exception.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function critical($message, array $context = array())
+    {
+        $this->log(Mustache_Logger::CRITICAL, $message, $context);
+    }
+
+    /**
+     * Runtime errors that do not require immediate action but should typically
+     * be logged and monitored.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function error($message, array $context = array())
+    {
+        $this->log(Mustache_Logger::ERROR, $message, $context);
+    }
+
+    /**
+     * Exceptional occurrences that are not errors.
+     *
+     * Example: Use of deprecated APIs, poor use of an API, undesirable things
+     * that are not necessarily wrong.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function warning($message, array $context = array())
+    {
+        $this->log(Mustache_Logger::WARNING, $message, $context);
+    }
+
+    /**
+     * Normal but significant events.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function notice($message, array $context = array())
+    {
+        $this->log(Mustache_Logger::NOTICE, $message, $context);
+    }
+
+    /**
+     * Interesting events.
+     *
+     * Example: User logs in, SQL logs.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function info($message, array $context = array())
+    {
+        $this->log(Mustache_Logger::INFO, $message, $context);
+    }
+
+    /**
+     * Detailed debug information.
+     *
+     * @param string $message
+     * @param array  $context
+     */
+    public function debug($message, array $context = array())
+    {
+        $this->log(Mustache_Logger::DEBUG, $message, $context);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php
new file mode 100644 (file)
index 0000000..402a148
--- /dev/null
@@ -0,0 +1,194 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * A Mustache Stream Logger.
+ *
+ * The Stream Logger wraps a file resource instance (such as a stream) or a
+ * stream URL. All log messages over the threshold level will be appended to
+ * this stream.
+ *
+ * Hint: Try `php://stderr` for your stream URL.
+ */
+class Mustache_Logger_StreamLogger extends Mustache_Logger_AbstractLogger
+{
+    protected static $levels = array(
+        self::DEBUG     => 100,
+        self::INFO      => 200,
+        self::NOTICE    => 250,
+        self::WARNING   => 300,
+        self::ERROR     => 400,
+        self::CRITICAL  => 500,
+        self::ALERT     => 550,
+        self::EMERGENCY => 600,
+    );
+
+    protected $level;
+    protected $stream = null;
+    protected $url    = null;
+
+    /**
+     * @throws InvalidArgumentException if the logging level is unknown
+     *
+     * @param resource|string $stream Resource instance or URL
+     * @param int             $level  The minimum logging level at which this handler will be triggered
+     */
+    public function __construct($stream, $level = Mustache_Logger::ERROR)
+    {
+        $this->setLevel($level);
+
+        if (is_resource($stream)) {
+            $this->stream = $stream;
+        } else {
+            $this->url = $stream;
+        }
+    }
+
+    /**
+     * Close stream resources.
+     */
+    public function __destruct()
+    {
+        if (is_resource($this->stream)) {
+            fclose($this->stream);
+        }
+    }
+
+    /**
+     * Set the minimum logging level.
+     *
+     * @throws Mustache_Exception_InvalidArgumentException if the logging level is unknown
+     *
+     * @param int $level The minimum logging level which will be written
+     */
+    public function setLevel($level)
+    {
+        if (!array_key_exists($level, self::$levels)) {
+            throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected logging level: %s', $level));
+        }
+
+        $this->level = $level;
+    }
+
+    /**
+     * Get the current minimum logging level.
+     *
+     * @return int
+     */
+    public function getLevel()
+    {
+        return $this->level;
+    }
+
+    /**
+     * Logs with an arbitrary level.
+     *
+     * @throws Mustache_Exception_InvalidArgumentException if the logging level is unknown
+     *
+     * @param mixed  $level
+     * @param string $message
+     * @param array  $context
+     */
+    public function log($level, $message, array $context = array())
+    {
+        if (!array_key_exists($level, self::$levels)) {
+            throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected logging level: %s', $level));
+        }
+
+        if (self::$levels[$level] >= self::$levels[$this->level]) {
+            $this->writeLog($level, $message, $context);
+        }
+    }
+
+    /**
+     * Write a record to the log.
+     *
+     * @throws Mustache_Exception_LogicException   If neither a stream resource nor url is present
+     * @throws Mustache_Exception_RuntimeException If the stream url cannot be opened
+     *
+     * @param int    $level   The logging level
+     * @param string $message The log message
+     * @param array  $context The log context
+     */
+    protected function writeLog($level, $message, array $context = array())
+    {
+        if (!is_resource($this->stream)) {
+            if (!isset($this->url)) {
+                throw new Mustache_Exception_LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().');
+            }
+
+            $this->stream = fopen($this->url, 'a');
+            if (!is_resource($this->stream)) {
+                // @codeCoverageIgnoreStart
+                throw new Mustache_Exception_RuntimeException(sprintf('The stream or file "%s" could not be opened.', $this->url));
+                // @codeCoverageIgnoreEnd
+            }
+        }
+
+        fwrite($this->stream, self::formatLine($level, $message, $context));
+    }
+
+    /**
+     * Gets the name of the logging level.
+     *
+     * @throws InvalidArgumentException if the logging level is unknown
+     *
+     * @param int $level
+     *
+     * @return string
+     */
+    protected static function getLevelName($level)
+    {
+        return strtoupper($level);
+    }
+
+    /**
+     * Format a log line for output.
+     *
+     * @param int    $level   The logging level
+     * @param string $message The log message
+     * @param array  $context The log context
+     *
+     * @return string
+     */
+    protected static function formatLine($level, $message, array $context = array())
+    {
+        return sprintf(
+            "%s: %s\n",
+            self::getLevelName($level),
+            self::interpolateMessage($message, $context)
+        );
+    }
+
+    /**
+     * Interpolate context values into the message placeholders.
+     *
+     * @param string $message
+     * @param array  $context
+     *
+     * @return string
+     */
+    protected static function interpolateMessage($message, array $context = array())
+    {
+        if (strpos($message, '{') === false) {
+            return $message;
+        }
+
+        // build a replacement array with braces around the context keys
+        $replace = array();
+        foreach ($context as $key => $val) {
+            $replace['{' . $key . '}'] = $val;
+        }
+
+        // interpolate replacement values into the the message and return
+        return strtr($message, $replace);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Parser.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Parser.php
new file mode 100644 (file)
index 0000000..0ec4192
--- /dev/null
@@ -0,0 +1,317 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Parser class.
+ *
+ * This class is responsible for turning a set of Mustache tokens into a parse tree.
+ */
+class Mustache_Parser
+{
+    private $lineNum;
+    private $lineTokens;
+    private $pragmas;
+    private $defaultPragmas = array();
+
+    private $pragmaFilters;
+    private $pragmaBlocks;
+
+    /**
+     * Process an array of Mustache tokens and convert them into a parse tree.
+     *
+     * @param array $tokens Set of Mustache tokens
+     *
+     * @return array Mustache token parse tree
+     */
+    public function parse(array $tokens = array())
+    {
+        $this->lineNum    = -1;
+        $this->lineTokens = 0;
+        $this->pragmas    = $this->defaultPragmas;
+
+        $this->pragmaFilters = isset($this->pragmas[Mustache_Engine::PRAGMA_FILTERS]);
+        $this->pragmaBlocks  = isset($this->pragmas[Mustache_Engine::PRAGMA_BLOCKS]);
+
+        return $this->buildTree($tokens);
+    }
+
+    /**
+     * Enable pragmas across all templates, regardless of the presence of pragma
+     * tags in the individual templates.
+     *
+     * @internal Users should set global pragmas in Mustache_Engine, not here :)
+     *
+     * @param string[] $pragmas
+     */
+    public function setPragmas(array $pragmas)
+    {
+        $this->pragmas = array();
+        foreach ($pragmas as $pragma) {
+            $this->enablePragma($pragma);
+        }
+        $this->defaultPragmas = $this->pragmas;
+    }
+
+    /**
+     * Helper method for recursively building a parse tree.
+     *
+     * @throws Mustache_Exception_SyntaxException when nesting errors or mismatched section tags are encountered
+     *
+     * @param array &$tokens Set of Mustache tokens
+     * @param array $parent  Parent token (default: null)
+     *
+     * @return array Mustache Token parse tree
+     */
+    private function buildTree(array &$tokens, array $parent = null)
+    {
+        $nodes = array();
+
+        while (!empty($tokens)) {
+            $token = array_shift($tokens);
+
+            if ($token[Mustache_Tokenizer::LINE] === $this->lineNum) {
+                $this->lineTokens++;
+            } else {
+                $this->lineNum    = $token[Mustache_Tokenizer::LINE];
+                $this->lineTokens = 0;
+            }
+
+            if ($this->pragmaFilters && isset($token[Mustache_Tokenizer::NAME])) {
+                list($name, $filters) = $this->getNameAndFilters($token[Mustache_Tokenizer::NAME]);
+                if (!empty($filters)) {
+                    $token[Mustache_Tokenizer::NAME]    = $name;
+                    $token[Mustache_Tokenizer::FILTERS] = $filters;
+                }
+            }
+
+            switch ($token[Mustache_Tokenizer::TYPE]) {
+                case Mustache_Tokenizer::T_DELIM_CHANGE:
+                    $this->checkIfTokenIsAllowedInParent($parent, $token);
+                    $this->clearStandaloneLines($nodes, $tokens);
+                    break;
+
+                case Mustache_Tokenizer::T_SECTION:
+                case Mustache_Tokenizer::T_INVERTED:
+                    $this->checkIfTokenIsAllowedInParent($parent, $token);
+                    $this->clearStandaloneLines($nodes, $tokens);
+                    $nodes[] = $this->buildTree($tokens, $token);
+                    break;
+
+                case Mustache_Tokenizer::T_END_SECTION:
+                    if (!isset($parent)) {
+                        $msg = sprintf(
+                            'Unexpected closing tag: /%s on line %d',
+                            $token[Mustache_Tokenizer::NAME],
+                            $token[Mustache_Tokenizer::LINE]
+                        );
+                        throw new Mustache_Exception_SyntaxException($msg, $token);
+                    }
+
+                    if ($token[Mustache_Tokenizer::NAME] !== $parent[Mustache_Tokenizer::NAME]) {
+                        $msg = sprintf(
+                            'Nesting error: %s (on line %d) vs. %s (on line %d)',
+                            $parent[Mustache_Tokenizer::NAME],
+                            $parent[Mustache_Tokenizer::LINE],
+                            $token[Mustache_Tokenizer::NAME],
+                            $token[Mustache_Tokenizer::LINE]
+                        );
+                        throw new Mustache_Exception_SyntaxException($msg, $token);
+                    }
+
+                    $this->clearStandaloneLines($nodes, $tokens);
+                    $parent[Mustache_Tokenizer::END]   = $token[Mustache_Tokenizer::INDEX];
+                    $parent[Mustache_Tokenizer::NODES] = $nodes;
+
+                    return $parent;
+
+                case Mustache_Tokenizer::T_PARTIAL:
+                    $this->checkIfTokenIsAllowedInParent($parent, $token);
+                    //store the whitespace prefix for laters!
+                    if ($indent = $this->clearStandaloneLines($nodes, $tokens)) {
+                        $token[Mustache_Tokenizer::INDENT] = $indent[Mustache_Tokenizer::VALUE];
+                    }
+                    $nodes[] = $token;
+                    break;
+
+                case Mustache_Tokenizer::T_PARENT:
+                    $this->checkIfTokenIsAllowedInParent($parent, $token);
+                    $nodes[] = $this->buildTree($tokens, $token);
+                    break;
+
+                case Mustache_Tokenizer::T_BLOCK_VAR:
+                    if ($this->pragmaBlocks) {
+                        // BLOCKS pragma is enabled, let's do this!
+                        if (isset($parent) && $parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) {
+                            $token[Mustache_Tokenizer::TYPE] = Mustache_Tokenizer::T_BLOCK_ARG;
+                        }
+                        $this->clearStandaloneLines($nodes, $tokens);
+                        $nodes[] = $this->buildTree($tokens, $token);
+                    } else {
+                        // pretend this was just a normal "escaped" token...
+                        $token[Mustache_Tokenizer::TYPE] = Mustache_Tokenizer::T_ESCAPED;
+                        // TODO: figure out how to figure out if there was a space after this dollar:
+                        $token[Mustache_Tokenizer::NAME] = '$' . $token[Mustache_Tokenizer::NAME];
+                        $nodes[] = $token;
+                    }
+                    break;
+
+                case Mustache_Tokenizer::T_PRAGMA:
+                    $this->enablePragma($token[Mustache_Tokenizer::NAME]);
+                    // no break
+
+                case Mustache_Tokenizer::T_COMMENT:
+                    $this->clearStandaloneLines($nodes, $tokens);
+                    $nodes[] = $token;
+                    break;
+
+                default:
+                    $nodes[] = $token;
+                    break;
+            }
+        }
+
+        if (isset($parent)) {
+            $msg = sprintf(
+                'Missing closing tag: %s opened on line %d',
+                $parent[Mustache_Tokenizer::NAME],
+                $parent[Mustache_Tokenizer::LINE]
+            );
+            throw new Mustache_Exception_SyntaxException($msg, $parent);
+        }
+
+        return $nodes;
+    }
+
+    /**
+     * Clear standalone line tokens.
+     *
+     * Returns a whitespace token for indenting partials, if applicable.
+     *
+     * @param array $nodes  Parsed nodes
+     * @param array $tokens Tokens to be parsed
+     *
+     * @return array|null Resulting indent token, if any
+     */
+    private function clearStandaloneLines(array &$nodes, array &$tokens)
+    {
+        if ($this->lineTokens > 1) {
+            // this is the third or later node on this line, so it can't be standalone
+            return;
+        }
+
+        $prev = null;
+        if ($this->lineTokens === 1) {
+            // this is the second node on this line, so it can't be standalone
+            // unless the previous node is whitespace.
+            if ($prev = end($nodes)) {
+                if (!$this->tokenIsWhitespace($prev)) {
+                    return;
+                }
+            }
+        }
+
+        if ($next = reset($tokens)) {
+            // If we're on a new line, bail.
+            if ($next[Mustache_Tokenizer::LINE] !== $this->lineNum) {
+                return;
+            }
+
+            // If the next token isn't whitespace, bail.
+            if (!$this->tokenIsWhitespace($next)) {
+                return;
+            }
+
+            if (count($tokens) !== 1) {
+                // Unless it's the last token in the template, the next token
+                // must end in newline for this to be standalone.
+                if (substr($next[Mustache_Tokenizer::VALUE], -1) !== "\n") {
+                    return;
+                }
+            }
+
+            // Discard the whitespace suffix
+            array_shift($tokens);
+        }
+
+        if ($prev) {
+            // Return the whitespace prefix, if any
+            return array_pop($nodes);
+        }
+    }
+
+    /**
+     * Check whether token is a whitespace token.
+     *
+     * True if token type is T_TEXT and value is all whitespace characters.
+     *
+     * @param array $token
+     *
+     * @return bool True if token is a whitespace token
+     */
+    private function tokenIsWhitespace(array $token)
+    {
+        if ($token[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_TEXT) {
+            return preg_match('/^\s*$/', $token[Mustache_Tokenizer::VALUE]);
+        }
+
+        return false;
+    }
+
+    /**
+     * Check whether a token is allowed inside a parent tag.
+     *
+     * @throws Mustache_Exception_SyntaxException if an invalid token is found inside a parent tag
+     *
+     * @param array|null $parent
+     * @param array      $token
+     */
+    private function checkIfTokenIsAllowedInParent($parent, array $token)
+    {
+        if (isset($parent) && $parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) {
+            throw new Mustache_Exception_SyntaxException('Illegal content in < parent tag', $token);
+        }
+    }
+
+    /**
+     * Split a tag name into name and filters.
+     *
+     * @param string $name
+     *
+     * @return array [Tag name, Array of filters]
+     */
+    private function getNameAndFilters($name)
+    {
+        $filters = array_map('trim', explode('|', $name));
+        $name    = array_shift($filters);
+
+        return array($name, $filters);
+    }
+
+    /**
+     * Enable a pragma.
+     *
+     * @param string $name
+     */
+    private function enablePragma($name)
+    {
+        $this->pragmas[$name] = true;
+
+        switch ($name) {
+            case Mustache_Engine::PRAGMA_BLOCKS:
+                $this->pragmaBlocks = true;
+                break;
+
+            case Mustache_Engine::PRAGMA_FILTERS:
+                $this->pragmaFilters = true;
+                break;
+        }
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Source.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Source.php
new file mode 100644 (file)
index 0000000..278c2cb
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache template Source interface.
+ */
+interface Mustache_Source
+{
+    /**
+     * Get the Source key (used to generate the compiled class name).
+     *
+     * This must return a distinct key for each template source. For example, an
+     * MD5 hash of the template contents would probably do the trick. The
+     * ProductionFilesystemLoader uses mtime and file path. If your production
+     * source directory is under version control, you could use the current Git
+     * rev and the file path...
+     *
+     * @throws RuntimeException when a source file cannot be read
+     *
+     * @return string
+     */
+    public function getKey();
+
+    /**
+     * Get the template Source.
+     *
+     * @throws RuntimeException when a source file cannot be read
+     *
+     * @return string
+     */
+    public function getSource();
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Source/FilesystemSource.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Source/FilesystemSource.php
new file mode 100644 (file)
index 0000000..1284ac7
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache template Filesystem Source.
+ *
+ * This template Source uses stat() to generate the Source key, so that using
+ * pre-compiled templates doesn't require hitting the disk to read the source.
+ * It is more suitable for production use, and is used by default in the
+ * ProductionFilesystemLoader.
+ */
+class Mustache_Source_FilesystemSource implements Mustache_Source
+{
+    private $fileName;
+    private $statProps;
+    private $stat;
+
+    /**
+     * Filesystem Source constructor.
+     *
+     * @param string $fileName
+     * @param array  $statProps
+     */
+    public function __construct($fileName, array $statProps)
+    {
+        $this->fileName = $fileName;
+        $this->statProps = $statProps;
+    }
+
+    /**
+     * Get the Source key (used to generate the compiled class name).
+     *
+     * @throws RuntimeException when a source file cannot be read
+     *
+     * @return string
+     */
+    public function getKey()
+    {
+        $chunks = array(
+            'fileName' => $this->fileName,
+        );
+
+        if (!empty($this->statProps)) {
+            if (!isset($this->stat)) {
+                $this->stat = @stat($this->fileName);
+            }
+
+            if ($this->stat === false) {
+                throw new RuntimeException(sprintf('Failed to read source file "%s".', $this->fileName));
+            }
+
+            foreach ($this->statProps as $prop) {
+                $chunks[$prop] = $this->stat[$prop];
+            }
+        }
+
+        return json_encode($chunks);
+    }
+
+    /**
+     * Get the template Source.
+     *
+     * @return string
+     */
+    public function getSource()
+    {
+        return file_get_contents($this->fileName);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Template.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Template.php
new file mode 100644 (file)
index 0000000..4de8239
--- /dev/null
@@ -0,0 +1,180 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Abstract Mustache Template class.
+ *
+ * @abstract
+ */
+abstract class Mustache_Template
+{
+    /**
+     * @var Mustache_Engine
+     */
+    protected $mustache;
+
+    /**
+     * @var bool
+     */
+    protected $strictCallables = false;
+
+    /**
+     * Mustache Template constructor.
+     *
+     * @param Mustache_Engine $mustache
+     */
+    public function __construct(Mustache_Engine $mustache)
+    {
+        $this->mustache = $mustache;
+    }
+
+    /**
+     * Mustache Template instances can be treated as a function and rendered by simply calling them.
+     *
+     *     $m = new Mustache_Engine;
+     *     $tpl = $m->loadTemplate('Hello, {{ name }}!');
+     *     echo $tpl(array('name' => 'World')); // "Hello, World!"
+     *
+     * @see Mustache_Template::render
+     *
+     * @param mixed $context Array or object rendering context (default: array())
+     *
+     * @return string Rendered template
+     */
+    public function __invoke($context = array())
+    {
+        return $this->render($context);
+    }
+
+    /**
+     * Render this template given the rendering context.
+     *
+     * @param mixed $context Array or object rendering context (default: array())
+     *
+     * @return string Rendered template
+     */
+    public function render($context = array())
+    {
+        return $this->renderInternal(
+            $this->prepareContextStack($context)
+        );
+    }
+
+    /**
+     * Internal rendering method implemented by Mustache Template concrete subclasses.
+     *
+     * This is where the magic happens :)
+     *
+     * NOTE: This method is not part of the Mustache.php public API.
+     *
+     * @param Mustache_Context $context
+     * @param string           $indent  (default: '')
+     *
+     * @return string Rendered template
+     */
+    abstract public function renderInternal(Mustache_Context $context, $indent = '');
+
+    /**
+     * Tests whether a value should be iterated over (e.g. in a section context).
+     *
+     * In most languages there are two distinct array types: list and hash (or whatever you want to call them). Lists
+     * should be iterated, hashes should be treated as objects. Mustache follows this paradigm for Ruby, Javascript,
+     * Java, Python, etc.
+     *
+     * PHP, however, treats lists and hashes as one primitive type: array. So Mustache.php needs a way to distinguish
+     * between between a list of things (numeric, normalized array) and a set of variables to be used as section context
+     * (associative array). In other words, this will be iterated over:
+     *
+     *     $items = array(
+     *         array('name' => 'foo'),
+     *         array('name' => 'bar'),
+     *         array('name' => 'baz'),
+     *     );
+     *
+     * ... but this will be used as a section context block:
+     *
+     *     $items = array(
+     *         1        => array('name' => 'foo'),
+     *         'banana' => array('name' => 'bar'),
+     *         42       => array('name' => 'baz'),
+     *     );
+     *
+     * @param mixed $value
+     *
+     * @return bool True if the value is 'iterable'
+     */
+    protected function isIterable($value)
+    {
+        switch (gettype($value)) {
+            case 'object':
+                return $value instanceof Traversable;
+
+            case 'array':
+                $i = 0;
+                foreach ($value as $k => $v) {
+                    if ($k !== $i++) {
+                        return false;
+                    }
+                }
+
+                return true;
+
+            default:
+                return false;
+        }
+    }
+
+    /**
+     * Helper method to prepare the Context stack.
+     *
+     * Adds the Mustache HelperCollection to the stack's top context frame if helpers are present.
+     *
+     * @param mixed $context Optional first context frame (default: null)
+     *
+     * @return Mustache_Context
+     */
+    protected function prepareContextStack($context = null)
+    {
+        $stack = new Mustache_Context();
+
+        $helpers = $this->mustache->getHelpers();
+        if (!$helpers->isEmpty()) {
+            $stack->push($helpers);
+        }
+
+        if (!empty($context)) {
+            $stack->push($context);
+        }
+
+        return $stack;
+    }
+
+    /**
+     * Resolve a context value.
+     *
+     * Invoke the value if it is callable, otherwise return the value.
+     *
+     * @param mixed            $value
+     * @param Mustache_Context $context
+     *
+     * @return string
+     */
+    protected function resolveValue($value, Mustache_Context $context)
+    {
+        if (($this->strictCallables ? is_object($value) : !is_string($value)) && is_callable($value)) {
+            return $this->mustache
+                ->loadLambda((string) call_user_func($value))
+                ->renderInternal($context);
+        }
+
+        return $value;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/src/Mustache/Tokenizer.php b/admin/lib/vendor/mustache/mustache/src/Mustache/Tokenizer.php
new file mode 100644 (file)
index 0000000..6dbe0cd
--- /dev/null
@@ -0,0 +1,342 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Mustache Tokenizer class.
+ *
+ * This class is responsible for turning raw template source into a set of Mustache tokens.
+ */
+class Mustache_Tokenizer
+{
+    // Finite state machine states
+    const IN_TEXT     = 0;
+    const IN_TAG_TYPE = 1;
+    const IN_TAG      = 2;
+
+    // Token types
+    const T_SECTION      = '#';
+    const T_INVERTED     = '^';
+    const T_END_SECTION  = '/';
+    const T_COMMENT      = '!';
+    const T_PARTIAL      = '>';
+    const T_PARENT       = '<';
+    const T_DELIM_CHANGE = '=';
+    const T_ESCAPED      = '_v';
+    const T_UNESCAPED    = '{';
+    const T_UNESCAPED_2  = '&';
+    const T_TEXT         = '_t';
+    const T_PRAGMA       = '%';
+    const T_BLOCK_VAR    = '$';
+    const T_BLOCK_ARG    = '$arg';
+
+    // Valid token types
+    private static $tagTypes = array(
+        self::T_SECTION      => true,
+        self::T_INVERTED     => true,
+        self::T_END_SECTION  => true,
+        self::T_COMMENT      => true,
+        self::T_PARTIAL      => true,
+        self::T_PARENT       => true,
+        self::T_DELIM_CHANGE => true,
+        self::T_ESCAPED      => true,
+        self::T_UNESCAPED    => true,
+        self::T_UNESCAPED_2  => true,
+        self::T_PRAGMA       => true,
+        self::T_BLOCK_VAR    => true,
+    );
+
+    // Token properties
+    const TYPE    = 'type';
+    const NAME    = 'name';
+    const OTAG    = 'otag';
+    const CTAG    = 'ctag';
+    const LINE    = 'line';
+    const INDEX   = 'index';
+    const END     = 'end';
+    const INDENT  = 'indent';
+    const NODES   = 'nodes';
+    const VALUE   = 'value';
+    const FILTERS = 'filters';
+
+    private $state;
+    private $tagType;
+    private $buffer;
+    private $tokens;
+    private $seenTag;
+    private $line;
+
+    private $otag;
+    private $otagChar;
+    private $otagLen;
+
+    private $ctag;
+    private $ctagChar;
+    private $ctagLen;
+
+    /**
+     * Scan and tokenize template source.
+     *
+     * @throws Mustache_Exception_SyntaxException when mismatched section tags are encountered
+     * @throws Mustache_Exception_InvalidArgumentException when $delimiters string is invalid
+     *
+     * @param string $text       Mustache template source to tokenize
+     * @param string $delimiters Optionally, pass initial opening and closing delimiters (default: null)
+     *
+     * @return array Set of Mustache tokens
+     */
+    public function scan($text, $delimiters = null)
+    {
+        // Setting mbstring.func_overload makes things *really* slow.
+        // Let's do everyone a favor and scan this string as ASCII instead.
+        //
+        // @codeCoverageIgnoreStart
+        $encoding = null;
+        if (function_exists('mb_internal_encoding') && ini_get('mbstring.func_overload') & 2) {
+            $encoding = mb_internal_encoding();
+            mb_internal_encoding('ASCII');
+        }
+        // @codeCoverageIgnoreEnd
+
+        $this->reset();
+
+        if ($delimiters = trim($delimiters)) {
+            $this->setDelimiters($delimiters);
+        }
+
+        $len = strlen($text);
+        for ($i = 0; $i < $len; $i++) {
+            switch ($this->state) {
+                case self::IN_TEXT:
+                    $char = $text[$i];
+                    // Test whether it's time to change tags.
+                    if ($char === $this->otagChar && substr($text, $i, $this->otagLen) === $this->otag) {
+                        $i--;
+                        $this->flushBuffer();
+                        $this->state = self::IN_TAG_TYPE;
+                    } else {
+                        $this->buffer .= $char;
+                        if ($char === "\n") {
+                            $this->flushBuffer();
+                            $this->line++;
+                        }
+                    }
+                    break;
+
+                case self::IN_TAG_TYPE:
+                    $i += $this->otagLen - 1;
+                    $char = $text[$i + 1];
+                    if (isset(self::$tagTypes[$char])) {
+                        $tag = $char;
+                        $this->tagType = $tag;
+                    } else {
+                        $tag = null;
+                        $this->tagType = self::T_ESCAPED;
+                    }
+
+                    if ($this->tagType === self::T_DELIM_CHANGE) {
+                        $i = $this->changeDelimiters($text, $i);
+                        $this->state = self::IN_TEXT;
+                    } elseif ($this->tagType === self::T_PRAGMA) {
+                        $i = $this->addPragma($text, $i);
+                        $this->state = self::IN_TEXT;
+                    } else {
+                        if ($tag !== null) {
+                            $i++;
+                        }
+                        $this->state = self::IN_TAG;
+                    }
+                    $this->seenTag = $i;
+                    break;
+
+                default:
+                    $char = $text[$i];
+                    // Test whether it's time to change tags.
+                    if ($char === $this->ctagChar && substr($text, $i, $this->ctagLen) === $this->ctag) {
+                        $token = array(
+                            self::TYPE  => $this->tagType,
+                            self::NAME  => trim($this->buffer),
+                            self::OTAG  => $this->otag,
+                            self::CTAG  => $this->ctag,
+                            self::LINE  => $this->line,
+                            self::INDEX => ($this->tagType === self::T_END_SECTION) ? $this->seenTag - $this->otagLen : $i + $this->ctagLen,
+                        );
+
+                        if ($this->tagType === self::T_UNESCAPED) {
+                            // Clean up `{{{ tripleStache }}}` style tokens.
+                            if ($this->ctag === '}}') {
+                                if (($i + 2 < $len) && $text[$i + 2] === '}') {
+                                    $i++;
+                                } else {
+                                    $msg = sprintf(
+                                        'Mismatched tag delimiters: %s on line %d',
+                                        $token[self::NAME],
+                                        $token[self::LINE]
+                                    );
+
+                                    throw new Mustache_Exception_SyntaxException($msg, $token);
+                                }
+                            } else {
+                                $lastName = $token[self::NAME];
+                                if (substr($lastName, -1) === '}') {
+                                    $token[self::NAME] = trim(substr($lastName, 0, -1));
+                                } else {
+                                    $msg = sprintf(
+                                        'Mismatched tag delimiters: %s on line %d',
+                                        $token[self::NAME],
+                                        $token[self::LINE]
+                                    );
+
+                                    throw new Mustache_Exception_SyntaxException($msg, $token);
+                                }
+                            }
+                        }
+
+                        $this->buffer = '';
+                        $i += $this->ctagLen - 1;
+                        $this->state = self::IN_TEXT;
+                        $this->tokens[] = $token;
+                    } else {
+                        $this->buffer .= $char;
+                    }
+                    break;
+            }
+        }
+
+        $this->flushBuffer();
+
+        // Restore the user's encoding...
+        // @codeCoverageIgnoreStart
+        if ($encoding) {
+            mb_internal_encoding($encoding);
+        }
+        // @codeCoverageIgnoreEnd
+
+        return $this->tokens;
+    }
+
+    /**
+     * Helper function to reset tokenizer internal state.
+     */
+    private function reset()
+    {
+        $this->state    = self::IN_TEXT;
+        $this->tagType  = null;
+        $this->buffer   = '';
+        $this->tokens   = array();
+        $this->seenTag  = false;
+        $this->line     = 0;
+
+        $this->otag     = '{{';
+        $this->otagChar = '{';
+        $this->otagLen  = 2;
+
+        $this->ctag     = '}}';
+        $this->ctagChar = '}';
+        $this->ctagLen  = 2;
+    }
+
+    /**
+     * Flush the current buffer to a token.
+     */
+    private function flushBuffer()
+    {
+        if (strlen($this->buffer) > 0) {
+            $this->tokens[] = array(
+                self::TYPE  => self::T_TEXT,
+                self::LINE  => $this->line,
+                self::VALUE => $this->buffer,
+            );
+            $this->buffer   = '';
+        }
+    }
+
+    /**
+     * Change the current Mustache delimiters. Set new `otag` and `ctag` values.
+     *
+     * @throws Mustache_Exception_SyntaxException when delimiter string is invalid
+     *
+     * @param string $text  Mustache template source
+     * @param int    $index Current tokenizer index
+     *
+     * @return int New index value
+     */
+    private function changeDelimiters($text, $index)
+    {
+        $startIndex = strpos($text, '=', $index) + 1;
+        $close      = '=' . $this->ctag;
+        $closeIndex = strpos($text, $close, $index);
+
+        $token = array(
+            self::TYPE => self::T_DELIM_CHANGE,
+            self::LINE => $this->line,
+        );
+
+        try {
+            $this->setDelimiters(trim(substr($text, $startIndex, $closeIndex - $startIndex)));
+        } catch (Mustache_Exception_InvalidArgumentException $e) {
+            throw new Mustache_Exception_SyntaxException($e->getMessage(), $token);
+        }
+
+        $this->tokens[] = $token;
+
+        return $closeIndex + strlen($close) - 1;
+    }
+
+    /**
+     * Set the current Mustache `otag` and `ctag` delimiters.
+     *
+     * @throws Mustache_Exception_InvalidArgumentException when delimiter string is invalid
+     *
+     * @param string $delimiters
+     */
+    private function setDelimiters($delimiters)
+    {
+        if (!preg_match('/^\s*(\S+)\s+(\S+)\s*$/', $delimiters, $matches)) {
+            throw new Mustache_Exception_InvalidArgumentException(sprintf('Invalid delimiters: %s', $delimiters));
+        }
+
+        list($_, $otag, $ctag) = $matches;
+
+        $this->otag     = $otag;
+        $this->otagChar = $otag[0];
+        $this->otagLen  = strlen($otag);
+
+        $this->ctag     = $ctag;
+        $this->ctagChar = $ctag[0];
+        $this->ctagLen  = strlen($ctag);
+    }
+
+    /**
+     * Add pragma token.
+     *
+     * Pragmas are hoisted to the front of the template, so all pragma tokens
+     * will appear at the front of the token list.
+     *
+     * @param string $text
+     * @param int    $index
+     *
+     * @return int New index value
+     */
+    private function addPragma($text, $index)
+    {
+        $end    = strpos($text, $this->ctag, $index);
+        $pragma = trim(substr($text, $index + 2, $end - $index - 2));
+
+        // Pragmas are hoisted to the front of the template.
+        array_unshift($this->tokens, array(
+            self::TYPE => self::T_PRAGMA,
+            self::NAME => $pragma,
+            self::LINE => 0,
+        ));
+
+        return $end + $this->ctagLen - 1;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/AutoloaderTest.php
new file mode 100644 (file)
index 0000000..c72effe
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_AutoloaderTest extends PHPUnit_Framework_TestCase
+{
+    public function testRegister()
+    {
+        $loader = Mustache_Autoloader::register();
+        $this->assertTrue(spl_autoload_unregister(array($loader, 'autoload')));
+    }
+
+    public function testAutoloader()
+    {
+        $loader = new Mustache_Autoloader(dirname(__FILE__) . '/../../fixtures/autoloader');
+
+        $this->assertNull($loader->autoload('NonMustacheClass'));
+        $this->assertFalse(class_exists('NonMustacheClass'));
+
+        $loader->autoload('Mustache_Foo');
+        $this->assertTrue(class_exists('Mustache_Foo'));
+
+        $loader->autoload('\Mustache_Bar');
+        $this->assertTrue(class_exists('Mustache_Bar'));
+    }
+
+    /**
+     * Test that the autoloader won't register multiple times.
+     */
+    public function testRegisterMultiple()
+    {
+        $numLoaders = count(spl_autoload_functions());
+
+        Mustache_Autoloader::register();
+        Mustache_Autoloader::register();
+
+        $expectedNumLoaders = $numLoaders + 1;
+
+        $this->assertCount($expectedNumLoaders, spl_autoload_functions());
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Cache/AbstractCacheTest.php
new file mode 100644 (file)
index 0000000..ac47e64
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Mustache_Test_Cache_AbstractCacheTest extends PHPUnit_Framework_TestCase
+{
+    public function testGetSetLogger()
+    {
+        $cache  = new CacheStub();
+        $logger = new Mustache_Logger_StreamLogger('php://stdout');
+        $cache->setLogger($logger);
+        $this->assertSame($logger, $cache->getLogger());
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testSetLoggerThrowsExceptions()
+    {
+        $cache  = new CacheStub();
+        $logger = new StdClass();
+        $cache->setLogger($logger);
+    }
+}
+
+class CacheStub extends Mustache_Cache_AbstractCache
+{
+    public function load($key)
+    {
+        // nada
+    }
+
+    public function cache($key, $value)
+    {
+        // nada
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Cache/FilesystemCacheTest.php
new file mode 100644 (file)
index 0000000..6bcc483
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group functional
+ */
+class Mustache_Test_Cache_FilesystemCacheTest extends Mustache_Test_FunctionalTestCase
+{
+    public function testCacheGetNone()
+    {
+        $key = 'some key';
+        $cache = new Mustache_Cache_FilesystemCache(self::$tempDir);
+        $loaded = $cache->load($key);
+
+        $this->assertFalse($loaded);
+    }
+
+    public function testCachePut()
+    {
+        $key = 'some key';
+        $value = '<?php /* some value */';
+        $cache = new Mustache_Cache_FilesystemCache(self::$tempDir);
+        $cache->cache($key, $value);
+        $loaded = $cache->load($key);
+
+        $this->assertTrue($loaded);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/CompilerTest.php
new file mode 100644 (file)
index 0000000..6fd1986
--- /dev/null
@@ -0,0 +1,154 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_CompilerTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider getCompileValues
+     */
+    public function testCompile($source, array $tree, $name, $customEscaper, $entityFlags, $charset, $expected)
+    {
+        $compiler = new Mustache_Compiler();
+
+        $compiled = $compiler->compile($source, $tree, $name, $customEscaper, $charset, false, $entityFlags);
+        foreach ($expected as $contains) {
+            $this->assertContains($contains, $compiled);
+        }
+    }
+
+    public function getCompileValues()
+    {
+        return array(
+            array('', array(), 'Banana', false, ENT_COMPAT, 'ISO-8859-1', array(
+                "\nclass Banana extends Mustache_Template",
+                'return $buffer;',
+            )),
+
+            array('', array($this->createTextToken('TEXT')), 'Monkey', false, ENT_COMPAT, 'UTF-8', array(
+                "\nclass Monkey extends Mustache_Template",
+                '$buffer .= $indent . \'TEXT\';',
+                'return $buffer;',
+            )),
+
+            array(
+                '',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME => 'name',
+                    ),
+                ),
+                'Monkey',
+                true,
+                ENT_COMPAT,
+                'ISO-8859-1',
+                array(
+                    "\nclass Monkey extends Mustache_Template",
+                    '$value = $this->resolveValue($context->find(\'name\'), $context);',
+                    '$buffer .= $indent . call_user_func($this->mustache->getEscape(), $value);',
+                    'return $buffer;',
+                ),
+            ),
+
+            array(
+                '',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME => 'name',
+                    ),
+                ),
+                'Monkey',
+                false,
+                ENT_COMPAT,
+                'ISO-8859-1',
+                array(
+                    "\nclass Monkey extends Mustache_Template",
+                    '$value = $this->resolveValue($context->find(\'name\'), $context);',
+                    '$buffer .= $indent . htmlspecialchars($value, ' . ENT_COMPAT . ', \'ISO-8859-1\');',
+                    'return $buffer;',
+                ),
+            ),
+
+            array(
+                '',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME => 'name',
+                    ),
+                ),
+                'Monkey',
+                false,
+                ENT_QUOTES,
+                'ISO-8859-1',
+                array(
+                    "\nclass Monkey extends Mustache_Template",
+                    '$value = $this->resolveValue($context->find(\'name\'), $context);',
+                    '$buffer .= $indent . htmlspecialchars($value, ' . ENT_QUOTES . ', \'ISO-8859-1\');',
+                    'return $buffer;',
+                ),
+            ),
+
+            array(
+                '',
+                array(
+                    $this->createTextToken("foo\n"),
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME => 'name',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME => '.',
+                    ),
+                    $this->createTextToken("'bar'"),
+                ),
+                'Monkey',
+                false,
+                ENT_COMPAT,
+                'UTF-8',
+                array(
+                    "\nclass Monkey extends Mustache_Template",
+                    "\$buffer .= \$indent . 'foo\n';",
+                    '$value = $this->resolveValue($context->find(\'name\'), $context);',
+                    '$buffer .= htmlspecialchars($value, ' . ENT_COMPAT . ', \'UTF-8\');',
+                    '$value = $this->resolveValue($context->last(), $context);',
+                    '$buffer .= \'\\\'bar\\\'\';',
+                    'return $buffer;',
+                ),
+            ),
+        );
+    }
+
+    /**
+     * @expectedException Mustache_Exception_SyntaxException
+     */
+    public function testCompilerThrowsSyntaxException()
+    {
+        $compiler = new Mustache_Compiler();
+        $compiler->compile('', array(array(Mustache_Tokenizer::TYPE => 'invalid')), 'SomeClass');
+    }
+
+    /**
+     * @param string $value
+     */
+    private function createTextToken($value)
+    {
+        return array(
+            Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+            Mustache_Tokenizer::VALUE => $value,
+        );
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/ContextTest.php
new file mode 100644 (file)
index 0000000..447ea16
--- /dev/null
@@ -0,0 +1,282 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_ContextTest extends PHPUnit_Framework_TestCase
+{
+    public function testConstructor()
+    {
+        $one = new Mustache_Context();
+        $this->assertSame('', $one->find('foo'));
+        $this->assertSame('', $one->find('bar'));
+
+        $two = new Mustache_Context(array(
+            'foo' => 'FOO',
+            'bar' => '<BAR>',
+        ));
+        $this->assertEquals('FOO', $two->find('foo'));
+        $this->assertEquals('<BAR>', $two->find('bar'));
+
+        $obj = new StdClass();
+        $obj->name = 'NAME';
+        $three = new Mustache_Context($obj);
+        $this->assertSame($obj, $three->last());
+        $this->assertEquals('NAME', $three->find('name'));
+    }
+
+    public function testPushPopAndLast()
+    {
+        $context = new Mustache_Context();
+        $this->assertFalse($context->last());
+
+        $dummy = new Mustache_Test_TestDummy();
+        $context->push($dummy);
+        $this->assertSame($dummy, $context->last());
+        $this->assertSame($dummy, $context->pop());
+        $this->assertFalse($context->last());
+
+        $obj = new StdClass();
+        $context->push($dummy);
+        $this->assertSame($dummy, $context->last());
+        $context->push($obj);
+        $this->assertSame($obj, $context->last());
+        $this->assertSame($obj, $context->pop());
+        $this->assertSame($dummy, $context->pop());
+        $this->assertFalse($context->last());
+    }
+
+    public function testFind()
+    {
+        $context = new Mustache_Context();
+
+        $dummy = new Mustache_Test_TestDummy();
+
+        $obj = new StdClass();
+        $obj->name = 'obj';
+
+        $arr = array(
+            'a' => array('b' => array('c' => 'see')),
+            'b' => 'bee',
+        );
+
+        $string = 'some arbitrary string';
+
+        $context->push($dummy);
+        $this->assertEquals('dummy', $context->find('name'));
+
+        $context->push($obj);
+        $this->assertEquals('obj', $context->find('name'));
+
+        $context->pop();
+        $this->assertEquals('dummy', $context->find('name'));
+
+        $dummy->name = 'dummyer';
+        $this->assertEquals('dummyer', $context->find('name'));
+
+        $context->push($arr);
+        $this->assertEquals('bee', $context->find('b'));
+        $this->assertEquals('see', $context->findDot('a.b.c'));
+
+        $dummy->name = 'dummy';
+
+        $context->push($string);
+        $this->assertSame($string, $context->last());
+        $this->assertEquals('dummy', $context->find('name'));
+        $this->assertEquals('see', $context->findDot('a.b.c'));
+        $this->assertEquals('<foo>', $context->find('foo'));
+        $this->assertEquals('<bar>', $context->findDot('bar'));
+    }
+
+    public function testArrayAccessFind()
+    {
+        $access = new Mustache_Test_TestArrayAccess(array(
+            'a' => array('b' => array('c' => 'see')),
+            'b' => 'bee',
+        ));
+
+        $context = new Mustache_Context($access);
+        $this->assertEquals('bee', $context->find('b'));
+        $this->assertEquals('see', $context->findDot('a.b.c'));
+        $this->assertEquals(null, $context->findDot('a.b.c.d'));
+    }
+
+    public function testAccessorPriority()
+    {
+        $context = new Mustache_Context(new Mustache_Test_AllTheThings());
+
+        $this->assertEquals('win', $context->find('foo'), 'method beats property');
+        $this->assertEquals('win', $context->find('bar'), 'property beats ArrayAccess');
+        $this->assertEquals('win', $context->find('baz'), 'ArrayAccess stands alone');
+        $this->assertEquals('win', $context->find('qux'), 'ArrayAccess beats private property');
+    }
+
+    public function testAnchoredDotNotation()
+    {
+        $context = new Mustache_Context();
+
+        $a = array(
+            'name'   => 'a',
+            'number' => 1,
+        );
+
+        $b = array(
+            'number' => 2,
+            'child'  => array(
+                'name' => 'baby bee',
+            ),
+        );
+
+        $c = array(
+            'name' => 'cee',
+        );
+
+        $context->push($a);
+        $this->assertEquals('a', $context->find('name'));
+        $this->assertEquals('', $context->findDot('.name'));
+        $this->assertEquals('a', $context->findAnchoredDot('.name'));
+        $this->assertEquals(1, $context->find('number'));
+        $this->assertEquals('', $context->findDot('.number'));
+        $this->assertEquals(1, $context->findAnchoredDot('.number'));
+
+        $context->push($b);
+        $this->assertEquals('a', $context->find('name'));
+        $this->assertEquals(2, $context->find('number'));
+        $this->assertEquals('', $context->findDot('.name'));
+        $this->assertEquals('', $context->findDot('.number'));
+        $this->assertEquals('', $context->findAnchoredDot('.name'));
+        $this->assertEquals(2, $context->findAnchoredDot('.number'));
+        $this->assertEquals('baby bee', $context->findDot('child.name'));
+        $this->assertEquals('', $context->findDot('.child.name'));
+        $this->assertEquals('baby bee', $context->findAnchoredDot('.child.name'));
+
+        $context->push($c);
+        $this->assertEquals('cee', $context->find('name'));
+        $this->assertEquals('', $context->findDot('.name'));
+        $this->assertEquals('cee', $context->findAnchoredDot('.name'));
+        $this->assertEquals(2, $context->find('number'));
+        $this->assertEquals('', $context->findDot('.number'));
+        $this->assertEquals('', $context->findAnchoredDot('.number'));
+        $this->assertEquals('baby bee', $context->findDot('child.name'));
+        $this->assertEquals('', $context->findDot('.child.name'));
+        $this->assertEquals('', $context->findAnchoredDot('.child.name'));
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testAnchoredDotNotationThrowsExceptions()
+    {
+        $context = new Mustache_Context();
+        $context->push(array('a' => 1));
+        $context->findAnchoredDot('a');
+    }
+}
+
+class Mustache_Test_TestDummy
+{
+    public $name = 'dummy';
+
+    public function __invoke()
+    {
+        // nothing
+    }
+
+    public static function foo()
+    {
+        return '<foo>';
+    }
+
+    public function bar()
+    {
+        return '<bar>';
+    }
+}
+
+class Mustache_Test_TestArrayAccess implements ArrayAccess
+{
+    private $container = array();
+
+    public function __construct($array)
+    {
+        foreach ($array as $key => $value) {
+            $this->container[$key] = $value;
+        }
+    }
+
+    public function offsetSet($offset, $value)
+    {
+        if (is_null($offset)) {
+            $this->container[] = $value;
+        } else {
+            $this->container[$offset] = $value;
+        }
+    }
+
+    public function offsetExists($offset)
+    {
+        return isset($this->container[$offset]);
+    }
+
+    public function offsetUnset($offset)
+    {
+        unset($this->container[$offset]);
+    }
+
+    public function offsetGet($offset)
+    {
+        return isset($this->container[$offset]) ? $this->container[$offset] : null;
+    }
+}
+
+class Mustache_Test_AllTheThings implements ArrayAccess
+{
+    public $foo  = 'fail';
+    public $bar  = 'win';
+    private $qux = 'fail';
+
+    public function foo()
+    {
+        return 'win';
+    }
+
+    public function offsetExists($offset)
+    {
+        return true;
+    }
+
+    public function offsetGet($offset)
+    {
+        switch ($offset) {
+            case 'foo':
+            case 'bar':
+                return 'fail';
+
+            case 'baz':
+            case 'qux':
+                return 'win';
+
+            default:
+                return 'lolwhut';
+        }
+    }
+
+    public function offsetSet($offset, $value)
+    {
+        // nada
+    }
+
+    public function offsetUnset($offset)
+    {
+        // nada
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/EngineTest.php
new file mode 100644 (file)
index 0000000..3e4d193
--- /dev/null
@@ -0,0 +1,397 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_EngineTest extends Mustache_Test_FunctionalTestCase
+{
+    public function testConstructor()
+    {
+        $logger         = new Mustache_Logger_StreamLogger(tmpfile());
+        $loader         = new Mustache_Loader_StringLoader();
+        $partialsLoader = new Mustache_Loader_ArrayLoader();
+        $mustache       = new Mustache_Engine(array(
+            'template_class_prefix' => '__whot__',
+            'cache'                 => self::$tempDir,
+            'cache_file_mode'       => 777,
+            'logger'                => $logger,
+            'loader'                => $loader,
+            'partials_loader'       => $partialsLoader,
+            'partials'              => array(
+                'foo' => '{{ foo }}',
+            ),
+            'helpers' => array(
+                'foo' => array($this, 'getFoo'),
+                'bar' => 'BAR',
+            ),
+            'escape'       => 'strtoupper',
+            'entity_flags' => ENT_QUOTES,
+            'charset'      => 'ISO-8859-1',
+            'pragmas'      => array(Mustache_Engine::PRAGMA_FILTERS),
+        ));
+
+        $this->assertSame($logger, $mustache->getLogger());
+        $this->assertSame($loader, $mustache->getLoader());
+        $this->assertSame($partialsLoader, $mustache->getPartialsLoader());
+        $this->assertEquals('{{ foo }}', $partialsLoader->load('foo'));
+        $this->assertContains('__whot__', $mustache->getTemplateClassName('{{ foo }}'));
+        $this->assertEquals('strtoupper', $mustache->getEscape());
+        $this->assertEquals(ENT_QUOTES, $mustache->getEntityFlags());
+        $this->assertEquals('ISO-8859-1', $mustache->getCharset());
+        $this->assertTrue($mustache->hasHelper('foo'));
+        $this->assertTrue($mustache->hasHelper('bar'));
+        $this->assertFalse($mustache->hasHelper('baz'));
+        $this->assertInstanceOf('Mustache_Cache_FilesystemCache', $mustache->getCache());
+        $this->assertEquals(array(Mustache_Engine::PRAGMA_FILTERS), $mustache->getPragmas());
+    }
+
+    public static function getFoo()
+    {
+        return 'foo';
+    }
+
+    public function testRender()
+    {
+        $source = '{{ foo }}';
+        $data   = array('bar' => 'baz');
+        $output = 'TEH OUTPUT';
+
+        $template = $this->getMockBuilder('Mustache_Template')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $mustache = new MustacheStub();
+        $mustache->template = $template;
+
+        $template->expects($this->once())
+            ->method('render')
+            ->with($data)
+            ->will($this->returnValue($output));
+
+        $this->assertEquals($output, $mustache->render($source, $data));
+        $this->assertEquals($source, $mustache->source);
+    }
+
+    public function testSettingServices()
+    {
+        $logger    = new Mustache_Logger_StreamLogger(tmpfile());
+        $loader    = new Mustache_Loader_StringLoader();
+        $tokenizer = new Mustache_Tokenizer();
+        $parser    = new Mustache_Parser();
+        $compiler  = new Mustache_Compiler();
+        $mustache  = new Mustache_Engine();
+        $cache     = new Mustache_Cache_FilesystemCache(self::$tempDir);
+
+        $this->assertNotSame($logger, $mustache->getLogger());
+        $mustache->setLogger($logger);
+        $this->assertSame($logger, $mustache->getLogger());
+
+        $this->assertNotSame($loader, $mustache->getLoader());
+        $mustache->setLoader($loader);
+        $this->assertSame($loader, $mustache->getLoader());
+
+        $this->assertNotSame($loader, $mustache->getPartialsLoader());
+        $mustache->setPartialsLoader($loader);
+        $this->assertSame($loader, $mustache->getPartialsLoader());
+
+        $this->assertNotSame($tokenizer, $mustache->getTokenizer());
+        $mustache->setTokenizer($tokenizer);
+        $this->assertSame($tokenizer, $mustache->getTokenizer());
+
+        $this->assertNotSame($parser, $mustache->getParser());
+        $mustache->setParser($parser);
+        $this->assertSame($parser, $mustache->getParser());
+
+        $this->assertNotSame($compiler, $mustache->getCompiler());
+        $mustache->setCompiler($compiler);
+        $this->assertSame($compiler, $mustache->getCompiler());
+
+        $this->assertNotSame($cache, $mustache->getCache());
+        $mustache->setCache($cache);
+        $this->assertSame($cache, $mustache->getCache());
+    }
+
+    /**
+     * @group functional
+     */
+    public function testCache()
+    {
+        $mustache = new Mustache_Engine(array(
+            'template_class_prefix' => '__whot__',
+            'cache'                 => self::$tempDir,
+        ));
+
+        $source    = '{{ foo }}';
+        $template  = $mustache->loadTemplate($source);
+        $className = $mustache->getTemplateClassName($source);
+
+        $this->assertInstanceOf($className, $template);
+    }
+
+    public function testLambdaCache()
+    {
+        $mustache = new MustacheStub(array(
+            'cache'                  => self::$tempDir,
+            'cache_lambda_templates' => true,
+        ));
+
+        $this->assertNotInstanceOf('Mustache_Cache_NoopCache', $mustache->getProtectedLambdaCache());
+        $this->assertSame($mustache->getCache(), $mustache->getProtectedLambdaCache());
+    }
+
+    public function testWithoutLambdaCache()
+    {
+        $mustache = new MustacheStub(array(
+            'cache' => self::$tempDir,
+        ));
+
+        $this->assertInstanceOf('Mustache_Cache_NoopCache', $mustache->getProtectedLambdaCache());
+        $this->assertNotSame($mustache->getCache(), $mustache->getProtectedLambdaCache());
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testEmptyTemplatePrefixThrowsException()
+    {
+        new Mustache_Engine(array(
+            'template_class_prefix' => '',
+        ));
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     * @dataProvider getBadEscapers
+     */
+    public function testNonCallableEscapeThrowsException($escape)
+    {
+        new Mustache_Engine(array('escape' => $escape));
+    }
+
+    public function getBadEscapers()
+    {
+        return array(
+            array('nothing'),
+            array('foo', 'bar'),
+        );
+    }
+
+    /**
+     * @expectedException Mustache_Exception_RuntimeException
+     */
+    public function testImmutablePartialsLoadersThrowException()
+    {
+        $mustache = new Mustache_Engine(array(
+            'partials_loader' => new Mustache_Loader_StringLoader(),
+        ));
+
+        $mustache->setPartials(array('foo' => '{{ foo }}'));
+    }
+
+    public function testMissingPartialsTreatedAsEmptyString()
+    {
+        $mustache = new Mustache_Engine(array(
+            'partials_loader' => new Mustache_Loader_ArrayLoader(array(
+                'foo' => 'FOO',
+                'baz' => 'BAZ',
+            )),
+        ));
+
+        $this->assertEquals('FOOBAZ', $mustache->render('{{>foo}}{{>bar}}{{>baz}}', array()));
+    }
+
+    public function testHelpers()
+    {
+        $foo = array($this, 'getFoo');
+        $bar = 'BAR';
+        $mustache = new Mustache_Engine(array('helpers' => array(
+            'foo' => $foo,
+            'bar' => $bar,
+        )));
+
+        $helpers = $mustache->getHelpers();
+        $this->assertTrue($mustache->hasHelper('foo'));
+        $this->assertTrue($mustache->hasHelper('bar'));
+        $this->assertTrue($helpers->has('foo'));
+        $this->assertTrue($helpers->has('bar'));
+        $this->assertSame($foo, $mustache->getHelper('foo'));
+        $this->assertSame($bar, $mustache->getHelper('bar'));
+
+        $mustache->removeHelper('bar');
+        $this->assertFalse($mustache->hasHelper('bar'));
+        $mustache->addHelper('bar', $bar);
+        $this->assertSame($bar, $mustache->getHelper('bar'));
+
+        $baz = array($this, 'wrapWithUnderscores');
+        $this->assertFalse($mustache->hasHelper('baz'));
+        $this->assertFalse($helpers->has('baz'));
+
+        $mustache->addHelper('baz', $baz);
+        $this->assertTrue($mustache->hasHelper('baz'));
+        $this->assertTrue($helpers->has('baz'));
+
+        // ... and a functional test
+        $tpl = $mustache->loadTemplate('{{foo}} - {{bar}} - {{#baz}}qux{{/baz}}');
+        $this->assertEquals('foo - BAR - __qux__', $tpl->render());
+        $this->assertEquals('foo - BAR - __qux__', $tpl->render(array('qux' => "won't mess things up")));
+    }
+
+    public static function wrapWithUnderscores($text)
+    {
+        return '__' . $text . '__';
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testSetHelpersThrowsExceptions()
+    {
+        $mustache = new Mustache_Engine();
+        $mustache->setHelpers('monkeymonkeymonkey');
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testSetLoggerThrowsExceptions()
+    {
+        $mustache = new Mustache_Engine();
+        $mustache->setLogger(new StdClass());
+    }
+
+    public function testLoadPartialCascading()
+    {
+        $loader = new Mustache_Loader_ArrayLoader(array(
+            'foo' => 'FOO',
+        ));
+
+        $mustache = new Mustache_Engine(array('loader' => $loader));
+
+        $tpl = $mustache->loadTemplate('foo');
+
+        $this->assertSame($tpl, $mustache->loadPartial('foo'));
+
+        $mustache->setPartials(array(
+            'foo' => 'f00',
+        ));
+
+        // setting partials overrides the default template loading fallback.
+        $this->assertNotSame($tpl, $mustache->loadPartial('foo'));
+
+        // but it didn't overwrite the original template loader templates.
+        $this->assertSame($tpl, $mustache->loadTemplate('foo'));
+    }
+
+    public function testPartialLoadFailLogging()
+    {
+        $name     = tempnam(sys_get_temp_dir(), 'mustache-test');
+        $mustache = new Mustache_Engine(array(
+            'logger'   => new Mustache_Logger_StreamLogger($name, Mustache_Logger::WARNING),
+            'partials' => array(
+                'foo' => 'FOO',
+                'bar' => 'BAR',
+            ),
+        ));
+
+        $result = $mustache->render('{{> foo }}{{> bar }}{{> baz }}', array());
+        $this->assertEquals('FOOBAR', $result);
+
+        $this->assertContains('WARNING: Partial not found: "baz"', file_get_contents($name));
+    }
+
+    public function testCacheWarningLogging()
+    {
+        list($name, $mustache) = $this->getLoggedMustache(Mustache_Logger::WARNING);
+        $mustache->render('{{ foo }}', array('foo' => 'FOO'));
+        $this->assertContains('WARNING: Template cache disabled, evaluating', file_get_contents($name));
+    }
+
+    public function testLoggingIsNotTooAnnoying()
+    {
+        list($name, $mustache) = $this->getLoggedMustache();
+        $mustache->render('{{ foo }}{{> bar }}', array('foo' => 'FOO'));
+        $this->assertEmpty(file_get_contents($name));
+    }
+
+    public function testVerboseLoggingIsVerbose()
+    {
+        list($name, $mustache) = $this->getLoggedMustache(Mustache_Logger::DEBUG);
+        $mustache->render('{{ foo }}{{> bar }}', array('foo' => 'FOO'));
+        $log = file_get_contents($name);
+        $this->assertContains('DEBUG: Instantiating template: ', $log);
+        $this->assertContains('WARNING: Partial not found: "bar"', $log);
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testUnknownPragmaThrowsException()
+    {
+        new Mustache_Engine(array(
+            'pragmas' => array('UNKNOWN'),
+        ));
+    }
+
+    public function testCompileFromMustacheSourceInstance()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../fixtures/templates');
+        $mustache = new Mustache_Engine(array(
+            'loader' => new Mustache_Loader_ProductionFilesystemLoader($baseDir),
+        ));
+        $this->assertEquals('one contents', $mustache->render('one'));
+    }
+
+    private function getLoggedMustache($level = Mustache_Logger::ERROR)
+    {
+        $name     = tempnam(sys_get_temp_dir(), 'mustache-test');
+        $mustache = new Mustache_Engine(array(
+            'logger' => new Mustache_Logger_StreamLogger($name, $level),
+        ));
+
+        return array($name, $mustache);
+    }
+
+    public function testCustomDelimiters()
+    {
+        $mustache = new Mustache_Engine(array(
+            'delimiters' => '[[ ]]',
+            'partials'   => array(
+                'one' => '[[> two ]]',
+                'two' => '[[ a ]]',
+            ),
+        ));
+
+        $tpl = $mustache->loadTemplate('[[# a ]][[ b ]][[/a ]]');
+        $this->assertEquals('c', $tpl->render(array('a' => true, 'b' => 'c')));
+
+        $tpl = $mustache->loadTemplate('[[> one ]]');
+        $this->assertEquals('b', $tpl->render(array('a' => 'b')));
+    }
+}
+
+class MustacheStub extends Mustache_Engine
+{
+    public $source;
+    public $template;
+
+    public function loadTemplate($source)
+    {
+        $this->source = $source;
+
+        return $this->template;
+    }
+
+    public function getProtectedLambdaCache()
+    {
+        return $this->getLambdaCache();
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/SyntaxExceptionTest.php
new file mode 100644 (file)
index 0000000..074dafc
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Mustache_Test_Exception_SyntaxExceptionTest extends PHPUnit_Framework_TestCase
+{
+    public function testInstance()
+    {
+        $e = new Mustache_Exception_SyntaxException('whot', array('is' => 'this'));
+        $this->assertTrue($e instanceof LogicException);
+        $this->assertTrue($e instanceof Mustache_Exception);
+    }
+
+    public function testGetToken()
+    {
+        $token = array(Mustache_Tokenizer::TYPE => 'whatever');
+        $e = new Mustache_Exception_SyntaxException('ignore this', $token);
+        $this->assertEquals($token, $e->getToken());
+    }
+
+    public function testPrevious()
+    {
+        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+            $this->markTestSkipped('Exception chaining requires at least PHP 5.3');
+        }
+
+        $previous = new Exception();
+        $e = new Mustache_Exception_SyntaxException('foo', array(), $previous);
+
+        $this->assertSame($previous, $e->getPrevious());
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownFilterExceptionTest.php
new file mode 100644 (file)
index 0000000..6dbe25e
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Mustache_Test_Exception_UnknownFilterExceptionTest extends PHPUnit_Framework_TestCase
+{
+    public function testInstance()
+    {
+        $e = new Mustache_Exception_UnknownFilterException('bacon');
+        $this->assertTrue($e instanceof UnexpectedValueException);
+        $this->assertTrue($e instanceof Mustache_Exception);
+    }
+
+    public function testMessage()
+    {
+        $e = new Mustache_Exception_UnknownFilterException('sausage');
+        $this->assertEquals('Unknown filter: sausage', $e->getMessage());
+    }
+
+    public function testGetFilterName()
+    {
+        $e = new Mustache_Exception_UnknownFilterException('eggs');
+        $this->assertEquals('eggs', $e->getFilterName());
+    }
+
+    public function testPrevious()
+    {
+        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+            $this->markTestSkipped('Exception chaining requires at least PHP 5.3');
+        }
+
+        $previous = new Exception();
+        $e = new Mustache_Exception_UnknownFilterException('foo', $previous);
+
+        $this->assertSame($previous, $e->getPrevious());
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownHelperExceptionTest.php
new file mode 100644 (file)
index 0000000..5b1ccbb
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Mustache_Test_Exception_UnknownHelperExceptionTest extends PHPUnit_Framework_TestCase
+{
+    public function testInstance()
+    {
+        $e = new Mustache_Exception_UnknownHelperException('alpha');
+        $this->assertTrue($e instanceof InvalidArgumentException);
+        $this->assertTrue($e instanceof Mustache_Exception);
+    }
+
+    public function testMessage()
+    {
+        $e = new Mustache_Exception_UnknownHelperException('beta');
+        $this->assertEquals('Unknown helper: beta', $e->getMessage());
+    }
+
+    public function testGetHelperName()
+    {
+        $e = new Mustache_Exception_UnknownHelperException('gamma');
+        $this->assertEquals('gamma', $e->getHelperName());
+    }
+
+    public function testPrevious()
+    {
+        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+            $this->markTestSkipped('Exception chaining requires at least PHP 5.3');
+        }
+
+        $previous = new Exception();
+        $e = new Mustache_Exception_UnknownHelperException('foo', $previous);
+        $this->assertSame($previous, $e->getPrevious());
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Exception/UnknownTemplateExceptionTest.php
new file mode 100644 (file)
index 0000000..b993bfa
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Mustache_Test_Exception_UnknownTemplateExceptionTest extends PHPUnit_Framework_TestCase
+{
+    public function testInstance()
+    {
+        $e = new Mustache_Exception_UnknownTemplateException('mario');
+        $this->assertTrue($e instanceof InvalidArgumentException);
+        $this->assertTrue($e instanceof Mustache_Exception);
+    }
+
+    public function testMessage()
+    {
+        $e = new Mustache_Exception_UnknownTemplateException('luigi');
+        $this->assertEquals('Unknown template: luigi', $e->getMessage());
+    }
+
+    public function testGetTemplateName()
+    {
+        $e = new Mustache_Exception_UnknownTemplateException('yoshi');
+        $this->assertEquals('yoshi', $e->getTemplateName());
+    }
+
+    public function testPrevious()
+    {
+        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+            $this->markTestSkipped('Exception chaining requires at least PHP 5.3');
+        }
+
+        $previous = new Exception();
+        $e = new Mustache_Exception_UnknownTemplateException('foo', $previous);
+        $this->assertSame($previous, $e->getPrevious());
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/ClosureQuirksTest.php
new file mode 100644 (file)
index 0000000..cc575a9
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group lambdas
+ * @group functional
+ */
+class Mustache_Test_FiveThree_Functional_ClosureQuirksTest extends PHPUnit_Framework_TestCase
+{
+    private $mustache;
+
+    public function setUp()
+    {
+        $this->mustache = new Mustache_Engine();
+    }
+
+    public function testClosuresDontLikeItWhenYouTouchTheirProperties()
+    {
+        $tpl = $this->mustache->loadTemplate('{{ foo.bar }}');
+        $this->assertEquals('', $tpl->render(array('foo' => function () {
+            return 'FOO';
+        })));
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/EngineTest.php
new file mode 100644 (file)
index 0000000..406473e
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group pragmas
+ * @group functional
+ */
+class Mustache_Test_FiveThree_Functional_EngineTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider pragmaData
+     */
+    public function testPragmasConstructorOption($pragmas, $helpers, $data, $tpl, $expect)
+    {
+        $mustache = new Mustache_Engine(array(
+            'pragmas' => $pragmas,
+            'helpers' => $helpers,
+        ));
+
+        $this->assertEquals($expect, $mustache->render($tpl, $data));
+    }
+
+    public function pragmaData()
+    {
+        $helpers = array(
+            'longdate' => function (\DateTime $value) {
+                return $value->format('Y-m-d h:m:s');
+            },
+        );
+
+        $data = array(
+            'date' => new DateTime('1/1/2000', new DateTimeZone('UTC')),
+        );
+
+        $tpl = '{{ date | longdate }}';
+
+        return array(
+            array(array(Mustache_Engine::PRAGMA_FILTERS), $helpers, $data, $tpl, '2000-01-01 12:01:00'),
+            array(array(),                                $helpers, $data, $tpl, ''),
+        );
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/FiltersTest.php
new file mode 100644 (file)
index 0000000..16dec60
--- /dev/null
@@ -0,0 +1,187 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group filters
+ * @group functional
+ */
+class Mustache_Test_FiveThree_Functional_FiltersTest extends PHPUnit_Framework_TestCase
+{
+    private $mustache;
+
+    public function setUp()
+    {
+        $this->mustache = new Mustache_Engine();
+    }
+
+    /**
+     * @dataProvider singleFilterData
+     */
+    public function testSingleFilter($tpl, $helpers, $data, $expect)
+    {
+        $this->mustache->setHelpers($helpers);
+        $this->assertEquals($expect, $this->mustache->render($tpl, $data));
+    }
+
+    public function singleFilterData()
+    {
+        $helpers = array(
+            'longdate' => function (\DateTime $value) {
+                return $value->format('Y-m-d h:m:s');
+            },
+            'echo' => function ($value) {
+                return array($value, $value, $value);
+            },
+        );
+
+        return array(
+            array(
+                '{{% FILTERS }}{{ date | longdate }}',
+                $helpers,
+                (object) array('date' => new DateTime('1/1/2000', new DateTimeZone('UTC'))),
+                '2000-01-01 12:01:00',
+            ),
+
+            array(
+                '{{% FILTERS }}{{# word | echo }}{{ . }}!{{/ word | echo }}',
+                $helpers,
+                array('word' => 'bacon'),
+                'bacon!bacon!bacon!',
+            ),
+        );
+    }
+
+    public function testChainedFilters()
+    {
+        $tpl = $this->mustache->loadTemplate('{{% FILTERS }}{{ date | longdate | withbrackets }}');
+
+        $this->mustache->addHelper('longdate', function (\DateTime $value) {
+            return $value->format('Y-m-d h:m:s');
+        });
+
+        $this->mustache->addHelper('withbrackets', function ($value) {
+            return sprintf('[[%s]]', $value);
+        });
+
+        $foo = new \StdClass();
+        $foo->date = new DateTime('1/1/2000', new DateTimeZone('UTC'));
+
+        $this->assertEquals('[[2000-01-01 12:01:00]]', $tpl->render($foo));
+    }
+
+    const CHAINED_SECTION_FILTERS_TPL = <<<'EOS'
+{{% FILTERS }}
+{{# word | echo | with_index }}
+{{ key }}: {{ value }}
+{{/ word | echo | with_index }}
+EOS;
+
+    public function testChainedSectionFilters()
+    {
+        $tpl = $this->mustache->loadTemplate(self::CHAINED_SECTION_FILTERS_TPL);
+
+        $this->mustache->addHelper('echo', function ($value) {
+            return array($value, $value, $value);
+        });
+
+        $this->mustache->addHelper('with_index', function ($value) {
+            return array_map(function ($k, $v) {
+                return array(
+                    'key'   => $k,
+                    'value' => $v,
+                );
+            }, array_keys($value), $value);
+        });
+
+        $this->assertEquals("0: bacon\n1: bacon\n2: bacon\n", $tpl->render(array('word' => 'bacon')));
+    }
+
+    /**
+     * @dataProvider interpolateFirstData
+     */
+    public function testInterpolateFirst($tpl, $data, $expect)
+    {
+        $this->assertEquals($expect, $this->mustache->render($tpl, $data));
+    }
+
+    public function interpolateFirstData()
+    {
+        $data = array(
+            'foo' => 'FOO',
+            'bar' => function ($value) {
+                return ($value === 'FOO') ? 'win!' : 'fail :(';
+            },
+        );
+
+        return array(
+            array('{{% FILTERS }}{{ foo | bar }}',                         $data, 'win!'),
+            array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}', $data, 'win!'),
+        );
+    }
+
+    /**
+     * @expectedException Mustache_Exception_UnknownFilterException
+     * @dataProvider brokenPipeData
+     */
+    public function testThrowsExceptionForBrokenPipes($tpl, $data)
+    {
+        $this->mustache->render($tpl, $data);
+    }
+
+    public function brokenPipeData()
+    {
+        return array(
+            array('{{% FILTERS }}{{ foo | bar }}',       array()),
+            array('{{% FILTERS }}{{ foo | bar }}',       array('foo' => 'FOO')),
+            array('{{% FILTERS }}{{ foo | bar }}',       array('foo' => 'FOO', 'bar' => 'BAR')),
+            array('{{% FILTERS }}{{ foo | bar }}',       array('foo' => 'FOO', 'bar' => array(1, 2))),
+            array('{{% FILTERS }}{{ foo | bar | baz }}', array('foo' => 'FOO', 'bar' => function () {
+                return 'BAR';
+            })),
+            array('{{% FILTERS }}{{ foo | bar | baz }}', array('foo' => 'FOO', 'baz' => function () {
+                return 'BAZ';
+            })),
+            array('{{% FILTERS }}{{ foo | bar | baz }}', array('bar' => function () {
+                return 'BAR';
+            })),
+            array('{{% FILTERS }}{{ foo | bar | baz }}', array('baz' => function () {
+                return 'BAZ';
+            })),
+            array('{{% FILTERS }}{{ foo | bar.baz }}',   array('foo' => 'FOO', 'bar' => function () {
+                return 'BAR';
+            }, 'baz' => function () {
+                return 'BAZ';
+            })),
+
+            array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}',             array()),
+            array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}',             array('foo' => 'FOO')),
+            array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}',             array('foo' => 'FOO', 'bar' => 'BAR')),
+            array('{{% FILTERS }}{{# foo | bar }}{{ . }}{{/ foo | bar }}',             array('foo' => 'FOO', 'bar' => array(1, 2))),
+            array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('foo' => 'FOO', 'bar' => function () {
+                return 'BAR';
+            })),
+            array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('foo' => 'FOO', 'baz' => function () {
+                return 'BAZ';
+            })),
+            array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('bar' => function () {
+                return 'BAR';
+            })),
+            array('{{% FILTERS }}{{# foo | bar | baz }}{{ . }}{{/ foo | bar | baz }}', array('baz' => function () {
+                return 'BAZ';
+            })),
+            array('{{% FILTERS }}{{# foo | bar.baz }}{{ . }}{{/ foo | bar.baz }}',     array('foo' => 'FOO', 'bar' => function () {
+                return 'BAR';
+            }, 'baz' => function () {
+                return 'BAZ';
+            })),
+        );
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/HigherOrderSectionsTest.php
new file mode 100644 (file)
index 0000000..eb05150
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group lambdas
+ * @group functional
+ */
+class Mustache_Test_FiveThree_Functional_HigherOrderSectionsTest extends PHPUnit_Framework_TestCase
+{
+    private $mustache;
+
+    public function setUp()
+    {
+        $this->mustache = new Mustache_Engine();
+    }
+
+    public function testAnonymousFunctionSectionCallback()
+    {
+        $tpl = $this->mustache->loadTemplate('{{#wrapper}}{{name}}{{/wrapper}}');
+
+        $foo = new Mustache_Test_FiveThree_Functional_Foo();
+        $foo->name = 'Mario';
+        $foo->wrapper = function ($text) {
+            return sprintf('<div class="anonymous">%s</div>', $text);
+        };
+
+        $this->assertEquals(sprintf('<div class="anonymous">%s</div>', $foo->name), $tpl->render($foo));
+    }
+
+    public function testSectionCallback()
+    {
+        $one = $this->mustache->loadTemplate('{{name}}');
+        $two = $this->mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}');
+
+        $foo = new Mustache_Test_FiveThree_Functional_Foo();
+        $foo->name = 'Luigi';
+
+        $this->assertEquals($foo->name, $one->render($foo));
+        $this->assertEquals(sprintf('<em>%s</em>', $foo->name), $two->render($foo));
+    }
+
+    public function testViewArrayAnonymousSectionCallback()
+    {
+        $tpl = $this->mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}');
+
+        $data = array(
+            'name' => 'Bob',
+            'wrap' => function ($text) {
+                return sprintf('[[%s]]', $text);
+            },
+        );
+
+        $this->assertEquals(sprintf('[[%s]]', $data['name']), $tpl->render($data));
+    }
+}
+
+class Mustache_Test_FiveThree_Functional_Foo
+{
+    public $name  = 'Justin';
+    public $lorem = 'Lorem ipsum dolor sit amet,';
+    public $wrap;
+
+    public function __construct()
+    {
+        $this->wrap = function ($text) {
+            return sprintf('<em>%s</em>', $text);
+        };
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php
new file mode 100644 (file)
index 0000000..6fc5d40
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group lambdas
+ * @group functional
+ */
+class Mustache_Test_FiveThree_Functional_LambdaHelperTest extends PHPUnit_Framework_TestCase
+{
+    private $mustache;
+
+    public function setUp()
+    {
+        $this->mustache = new Mustache_Engine();
+    }
+
+    public function testSectionLambdaHelper()
+    {
+        $one = $this->mustache->loadTemplate('{{name}}');
+        $two = $this->mustache->loadTemplate('{{#lambda}}{{name}}{{/lambda}}');
+
+        $foo = new StdClass();
+        $foo->name = 'Mario';
+        $foo->lambda = function ($text, $mustache) {
+            return strtoupper($mustache->render($text));
+        };
+
+        $this->assertEquals('Mario', $one->render($foo));
+        $this->assertEquals('MARIO', $two->render($foo));
+    }
+
+    public function testSectionLambdaHelperRespectsDelimiterChanges()
+    {
+        $tpl = $this->mustache->loadTemplate("{{=<% %>=}}\n<%# bang %><% value %><%/ bang %>");
+
+        $data = new StdClass();
+        $data->value = 'hello world';
+        $data->bang = function ($text, $mustache) {
+            return $mustache->render($text) . '!';
+        };
+
+        $this->assertEquals('hello world!', $tpl->render($data));
+    }
+
+    public function testLambdaHelperIsInvokable()
+    {
+        $one = $this->mustache->loadTemplate('{{name}}');
+        $two = $this->mustache->loadTemplate('{{#lambda}}{{name}}{{/lambda}}');
+
+        $foo = new StdClass();
+        $foo->name = 'Mario';
+        $foo->lambda = function ($text, $render) {
+            return strtoupper($render($text));
+        };
+
+        $this->assertEquals('Mario', $one->render($foo));
+        $this->assertEquals('MARIO', $two->render($foo));
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/MustacheSpecTest.php
new file mode 100644 (file)
index 0000000..af3f982
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * A PHPUnit test case wrapping the Mustache Spec.
+ *
+ * @group mustache-spec
+ * @group functional
+ */
+class Mustache_Test_FiveThree_Functional_MustacheSpecTest extends Mustache_Test_SpecTestCase
+{
+    /**
+     * For some reason data providers can't mark tests skipped, so this test exists
+     * simply to provide a 'skipped' test if the `spec` submodule isn't initialized.
+     */
+    public function testSpecInitialized()
+    {
+        if (!file_exists(dirname(__FILE__) . '/../../../../../vendor/spec/specs/')) {
+            $this->markTestSkipped('Mustache spec submodule not initialized: run "git submodule update --init"');
+        }
+    }
+
+    /**
+     * @group lambdas
+     * @dataProvider loadLambdasSpec
+     */
+    public function testLambdasSpec($desc, $source, $partials, $data, $expected)
+    {
+        $template = self::loadTemplate($source, $partials);
+        $this->assertEquals($expected, $template($this->prepareLambdasSpec($data)), $desc);
+    }
+
+    public function loadLambdasSpec()
+    {
+        return $this->loadSpec('~lambdas');
+    }
+
+    /**
+     * Extract and lambdafy any 'lambda' values found in the $data array.
+     */
+    private function prepareLambdasSpec($data)
+    {
+        foreach ($data as $key => $val) {
+            if ($key === 'lambda') {
+                if (!isset($val['php'])) {
+                    $this->markTestSkipped(sprintf('PHP lambda test not implemented for this test.'));
+                }
+
+                $func = $val['php'];
+                $data[$key] = function ($text = null) use ($func) {
+                    return eval($func);
+                };
+            } elseif (is_array($val)) {
+                $data[$key] = $this->prepareLambdasSpec($val);
+            }
+        }
+
+        return $data;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/PartialLambdaIndentTest.php
new file mode 100644 (file)
index 0000000..1f9af7c
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group lambdas
+ * @group functional
+ */
+class Mustache_Test_FiveThree_Functional_PartialLambdaIndentTest extends PHPUnit_Framework_TestCase
+{
+    public function testLambdasInsidePartialsAreIndentedProperly()
+    {
+        $src = <<<'EOS'
+<fieldset>
+  {{> input }}
+</fieldset>
+
+EOS;
+        $partial = <<<'EOS'
+<input placeholder="{{# _t }}Enter your name{{/ _t }}">
+
+EOS;
+
+        $expected = <<<'EOS'
+<fieldset>
+  <input placeholder="ENTER YOUR NAME">
+</fieldset>
+
+EOS;
+
+        $m = new Mustache_Engine(array(
+            'partials' => array('input' => $partial),
+        ));
+
+        $tpl = $m->loadTemplate($src);
+
+        $data = new Mustache_Test_FiveThree_Functional_ClassWithLambda();
+        $this->assertEquals($expected, $tpl->render($data));
+    }
+
+    public function testLambdaInterpolationsInsidePartialsAreIndentedProperly()
+    {
+        $src = <<<'EOS'
+<fieldset>
+  {{> input }}
+</fieldset>
+
+EOS;
+        $partial = <<<'EOS'
+<input placeholder="{{ placeholder }}">
+
+EOS;
+
+        $expected = <<<'EOS'
+<fieldset>
+  <input placeholder="Enter your name">
+</fieldset>
+
+EOS;
+
+        $m = new Mustache_Engine(array(
+            'partials' => array('input' => $partial),
+        ));
+
+        $tpl = $m->loadTemplate($src);
+
+        $data = new Mustache_Test_FiveThree_Functional_ClassWithLambda();
+        $this->assertEquals($expected, $tpl->render($data));
+    }
+}
+
+class Mustache_Test_FiveThree_Functional_ClassWithLambda
+{
+    public function _t()
+    {
+        return function ($val) {
+            return strtoupper($val);
+        };
+    }
+
+    public function placeholder()
+    {
+        return function () {
+            return 'Enter your name';
+        };
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FiveThree/Functional/StrictCallablesTest.php
new file mode 100644 (file)
index 0000000..2c01169
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group lambdas
+ * @group functional
+ */
+class Mustache_Test_FiveThree_Functional_StrictCallablesTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider callables
+     */
+    public function testStrictCallables($strict, $name, $section, $expected)
+    {
+        $mustache = new Mustache_Engine(array('strict_callables' => $strict));
+        $tpl      = $mustache->loadTemplate('{{# section }}{{ name }}{{/ section }}');
+
+        $data = new StdClass();
+        $data->name    = $name;
+        $data->section = $section;
+
+        $this->assertEquals($expected, $tpl->render($data));
+    }
+
+    public function callables()
+    {
+        $lambda = function ($tpl, $mustache) {
+            return strtoupper($mustache->render($tpl));
+        };
+
+        return array(
+            // Interpolation lambdas
+            array(
+                false,
+                array($this, 'instanceName'),
+                $lambda,
+                'YOSHI',
+            ),
+            array(
+                false,
+                array(__CLASS__, 'staticName'),
+                $lambda,
+                'YOSHI',
+            ),
+            array(
+                false,
+                function () {
+                    return 'Yoshi';
+                },
+                $lambda,
+                'YOSHI',
+            ),
+
+            // Section lambdas
+            array(
+                false,
+                'Yoshi',
+                array($this, 'instanceCallable'),
+                'YOSHI',
+            ),
+            array(
+                false,
+                'Yoshi',
+                array(__CLASS__, 'staticCallable'),
+                'YOSHI',
+            ),
+            array(
+                false,
+                'Yoshi',
+                $lambda,
+                'YOSHI',
+            ),
+
+            // Strict interpolation lambdas
+            array(
+                true,
+                function () {
+                    return 'Yoshi';
+                },
+                $lambda,
+                'YOSHI',
+            ),
+
+            // Strict section lambdas
+            array(
+                true,
+                'Yoshi',
+                array($this, 'instanceCallable'),
+                'YoshiYoshi',
+            ),
+            array(
+                true,
+                'Yoshi',
+                array(__CLASS__, 'staticCallable'),
+                'YoshiYoshi',
+            ),
+            array(
+                true,
+                'Yoshi',
+                function ($tpl, $mustache) {
+                    return strtoupper($mustache->render($tpl));
+                },
+                'YOSHI',
+            ),
+        );
+    }
+
+    public function instanceCallable($tpl, $mustache)
+    {
+        return strtoupper($mustache->render($tpl));
+    }
+
+    public static function staticCallable($tpl, $mustache)
+    {
+        return strtoupper($mustache->render($tpl));
+    }
+
+    public function instanceName()
+    {
+        return 'Yoshi';
+    }
+
+    public static function staticName()
+    {
+        return 'Yoshi';
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/CallTest.php
new file mode 100644 (file)
index 0000000..681ec1b
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group magic_methods
+ * @group functional
+ */
+class Mustache_Test_Functional_CallTest extends PHPUnit_Framework_TestCase
+{
+    public function testCallEatsContext()
+    {
+        $m = new Mustache_Engine();
+        $tpl = $m->loadTemplate('{{# foo }}{{ label }}: {{ name }}{{/ foo }}');
+
+        $foo = new Mustache_Test_Functional_ClassWithCall();
+        $foo->name = 'Bob';
+
+        $data = array('label' => 'name', 'foo' => $foo);
+
+        $this->assertEquals('name: Bob', $tpl->render($data));
+    }
+}
+
+class Mustache_Test_Functional_ClassWithCall
+{
+    public $name;
+
+    public function __call($method, $args)
+    {
+        return 'unknown value';
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/ExamplesTest.php
new file mode 100644 (file)
index 0000000..ac883ea
--- /dev/null
@@ -0,0 +1,142 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group examples
+ * @group functional
+ */
+class Mustache_Test_Functional_ExamplesTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * Test everything in the `examples` directory.
+     *
+     * @dataProvider getExamples
+     *
+     * @param string $context
+     * @param string $source
+     * @param array  $partials
+     * @param string $expected
+     */
+    public function testExamples($context, $source, $partials, $expected)
+    {
+        $mustache = new Mustache_Engine(array(
+            'partials' => $partials,
+        ));
+        $this->assertEquals($expected, $mustache->loadTemplate($source)->render($context));
+    }
+
+    /**
+     * Data provider for testExamples method.
+     *
+     * Loads examples from the test fixtures directory.
+     *
+     * This examples directory should contain any number of subdirectories, each of which contains
+     * three files: one Mustache class (.php), one Mustache template (.mustache), and one output file
+     * (.txt). Optionally, the directory may contain a folder full of partials.
+     *
+     * @return array
+     */
+    public function getExamples()
+    {
+        $path     = realpath(dirname(__FILE__) . '/../../../fixtures/examples');
+        $examples = array();
+
+        $handle   = opendir($path);
+        while (($file = readdir($handle)) !== false) {
+            if ($file === '.' || $file === '..') {
+                continue;
+            }
+
+            $fullpath = $path . '/' . $file;
+            if (is_dir($fullpath)) {
+                $examples[$file] = $this->loadExample($fullpath);
+            }
+        }
+        closedir($handle);
+
+        return $examples;
+    }
+
+    /**
+     * Helper method to load an example given the full path.
+     *
+     * @param string $path
+     *
+     * @return array arguments for testExamples
+     */
+    private function loadExample($path)
+    {
+        $context  = null;
+        $source   = null;
+        $partials = array();
+        $expected = null;
+
+        $handle = opendir($path);
+        while (($file = readdir($handle)) !== false) {
+            $fullpath = $path . '/' . $file;
+            $info = pathinfo($fullpath);
+
+            if (is_dir($fullpath) && $info['basename'] === 'partials') {
+                // load partials
+                $partials = $this->loadPartials($fullpath);
+            } elseif (is_file($fullpath)) {
+                // load other files
+                switch ($info['extension']) {
+                    case 'php':
+                        require_once $fullpath;
+                        $className = $info['filename'];
+                        $context   = new $className();
+                        break;
+
+                    case 'mustache':
+                        $source   = file_get_contents($fullpath);
+                        break;
+
+                    case 'txt':
+                        $expected = file_get_contents($fullpath);
+                        break;
+                }
+            }
+        }
+        closedir($handle);
+
+        return array($context, $source, $partials, $expected);
+    }
+
+    /**
+     * Helper method to load partials given an example directory.
+     *
+     * @param string $path
+     *
+     * @return array $partials
+     */
+    private function loadPartials($path)
+    {
+        $partials = array();
+
+        $handle = opendir($path);
+        while (($file = readdir($handle)) !== false) {
+            if ($file === '.' || $file === '..') {
+                continue;
+            }
+
+            $fullpath = $path . '/' . $file;
+            $info = pathinfo($fullpath);
+
+            if ($info['extension'] === 'mustache') {
+                $partials[$info['filename']] = file_get_contents($fullpath);
+            }
+        }
+        closedir($handle);
+
+        return $partials;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/HigherOrderSectionsTest.php
new file mode 100644 (file)
index 0000000..14774cd
--- /dev/null
@@ -0,0 +1,177 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group lambdas
+ * @group functional
+ */
+class Mustache_Test_Functional_HigherOrderSectionsTest extends Mustache_Test_FunctionalTestCase
+{
+    private $mustache;
+
+    public function setUp()
+    {
+        $this->mustache = new Mustache_Engine();
+    }
+
+    /**
+     * @dataProvider sectionCallbackData
+     */
+    public function testSectionCallback($data, $tpl, $expect)
+    {
+        $this->assertEquals($expect, $this->mustache->render($tpl, $data));
+    }
+
+    public function sectionCallbackData()
+    {
+        $foo = new Mustache_Test_Functional_Foo();
+        $foo->doublewrap = array($foo, 'wrapWithBoth');
+
+        $bar = new Mustache_Test_Functional_Foo();
+        $bar->trimmer = array(get_class($bar), 'staticTrim');
+
+        return array(
+            array($foo, '{{#doublewrap}}{{name}}{{/doublewrap}}', sprintf('<strong><em>%s</em></strong>', $foo->name)),
+            array($bar, '{{#trimmer}}   {{name}}   {{/trimmer}}', $bar->name),
+        );
+    }
+
+    public function testViewArraySectionCallback()
+    {
+        $tpl = $this->mustache->loadTemplate('{{#trim}}    {{name}}    {{/trim}}');
+
+        $foo = new Mustache_Test_Functional_Foo();
+
+        $data = array(
+            'name' => 'Bob',
+            'trim' => array(get_class($foo), 'staticTrim'),
+        );
+
+        $this->assertEquals($data['name'], $tpl->render($data));
+    }
+
+    public function testMonsters()
+    {
+        $tpl = $this->mustache->loadTemplate('{{#title}}{{title}} {{/title}}{{name}}');
+
+        $frank = new Mustache_Test_Functional_Monster();
+        $frank->title = 'Dr.';
+        $frank->name  = 'Frankenstein';
+        $this->assertEquals('Dr. Frankenstein', $tpl->render($frank));
+
+        $dracula = new Mustache_Test_Functional_Monster();
+        $dracula->title = 'Count';
+        $dracula->name  = 'Dracula';
+        $this->assertEquals('Count Dracula', $tpl->render($dracula));
+    }
+
+    public function testPassthroughOptimization()
+    {
+        $mustache = $this->getMock('Mustache_Engine', array('loadLambda'));
+        $mustache->expects($this->never())
+            ->method('loadLambda');
+
+        $tpl = $mustache->loadTemplate('{{#wrap}}NAME{{/wrap}}');
+
+        $foo = new Mustache_Test_Functional_Foo();
+        $foo->wrap = array($foo, 'wrapWithEm');
+
+        $this->assertEquals('<em>NAME</em>', $tpl->render($foo));
+    }
+
+    public function testWithoutPassthroughOptimization()
+    {
+        $mustache = $this->getMock('Mustache_Engine', array('loadLambda'));
+        $mustache->expects($this->once())
+            ->method('loadLambda')
+            ->will($this->returnValue($mustache->loadTemplate('<em>{{ name }}</em>')));
+
+        $tpl = $mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}');
+
+        $foo = new Mustache_Test_Functional_Foo();
+        $foo->wrap = array($foo, 'wrapWithEm');
+
+        $this->assertEquals('<em>' . $foo->name . '</em>', $tpl->render($foo));
+    }
+
+    /**
+     * @dataProvider cacheLambdaTemplatesData
+     */
+    public function testCacheLambdaTemplatesOptionWorks($dirName, $tplPrefix, $enable, $expect)
+    {
+        $cacheDir = $this->setUpCacheDir($dirName);
+        $mustache = new Mustache_Engine(array(
+            'template_class_prefix'  => $tplPrefix,
+            'cache'                  => $cacheDir,
+            'cache_lambda_templates' => $enable,
+        ));
+
+        $tpl = $mustache->loadTemplate('{{#wrap}}{{name}}{{/wrap}}');
+        $foo = new Mustache_Test_Functional_Foo();
+        $foo->wrap = array($foo, 'wrapWithEm');
+        $this->assertEquals('<em>' . $foo->name . '</em>', $tpl->render($foo));
+        $this->assertCount($expect, glob($cacheDir . '/*.php'));
+    }
+
+    public function cacheLambdaTemplatesData()
+    {
+        return array(
+            array('test_enabling_lambda_cache',  '_TestEnablingLambdaCache_',  true,  2),
+            array('test_disabling_lambda_cache', '_TestDisablingLambdaCache_', false, 1),
+        );
+    }
+
+    protected function setUpCacheDir($name)
+    {
+        $cacheDir = self::$tempDir . '/' . $name;
+        if (file_exists($cacheDir)) {
+            self::rmdir($cacheDir);
+        }
+        mkdir($cacheDir, 0777, true);
+
+        return $cacheDir;
+    }
+}
+
+class Mustache_Test_Functional_Foo
+{
+    public $name = 'Justin';
+    public $lorem = 'Lorem ipsum dolor sit amet,';
+
+    public function wrapWithEm($text)
+    {
+        return sprintf('<em>%s</em>', $text);
+    }
+
+    /**
+     * @param string $text
+     */
+    public function wrapWithStrong($text)
+    {
+        return sprintf('<strong>%s</strong>', $text);
+    }
+
+    public function wrapWithBoth($text)
+    {
+        return self::wrapWithStrong(self::wrapWithEm($text));
+    }
+
+    public static function staticTrim($text)
+    {
+        return trim($text);
+    }
+}
+
+class Mustache_Test_Functional_Monster
+{
+    public $title;
+    public $name;
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/InheritanceTest.php
new file mode 100644 (file)
index 0000000..6243704
--- /dev/null
@@ -0,0 +1,543 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group inheritance
+ * @group functional
+ */
+class Mustache_Test_Functional_InheritanceTest extends PHPUnit_Framework_TestCase
+{
+    private $mustache;
+
+    public function setUp()
+    {
+        $this->mustache = new Mustache_Engine(array(
+            'pragmas' => array(Mustache_Engine::PRAGMA_BLOCKS),
+        ));
+    }
+
+    public function getIllegalInheritanceExamples()
+    {
+        return array(
+            array(
+                array(
+                    'foo' => '{{$baz}}default content{{/baz}}',
+                ),
+                array(
+                    'bar' => 'set by user',
+                ),
+                '{{< foo }}{{# bar }}{{$ baz }}{{/ baz }}{{/ bar }}{{/ foo }}',
+            ),
+            array(
+                array(
+                    'foo' => '{{$baz}}default content{{/baz}}',
+                ),
+                array(
+                ),
+                '{{<foo}}{{^bar}}{{$baz}}set by template{{/baz}}{{/bar}}{{/foo}}',
+            ),
+            array(
+                array(
+                    'foo' => '{{$baz}}default content{{/baz}}',
+                    'qux' => 'I am a partial',
+                ),
+                array(
+                ),
+                '{{<foo}}{{>qux}}{{$baz}}set by template{{/baz}}{{/foo}}',
+            ),
+            array(
+                array(
+                    'foo' => '{{$baz}}default content{{/baz}}',
+                ),
+                array(),
+                '{{<foo}}{{=<% %>=}}<%={{ }}=%>{{/foo}}',
+            ),
+        );
+    }
+
+    public function getLegalInheritanceExamples()
+    {
+        return array(
+            array(
+                array(
+                    'foo' => '{{$baz}}default content{{/baz}}',
+                ),
+                array(
+                    'bar' => 'set by user',
+                ),
+                '{{<foo}}{{bar}}{{$baz}}override{{/baz}}{{/foo}}',
+                'override',
+            ),
+            array(
+                array(
+                    'foo' => '{{$baz}}default content{{/baz}}',
+                ),
+                array(
+                ),
+                '{{<foo}}{{! ignore me }}{{$baz}}set by template{{/baz}}{{/foo}}',
+                'set by template',
+            ),
+            array(
+                array(
+                    'foo' => '{{$baz}}defualt content{{/baz}}',
+                ),
+                array(),
+                '{{<foo}}set by template{{$baz}}also set by template{{/baz}}{{/foo}}',
+                'also set by template',
+            ),
+            array(
+                array(
+                    'foo' => '{{$a}}FAIL!{{/a}}',
+                    'bar' => 'WIN!!',
+                ),
+                array(),
+                '{{<foo}}{{$a}}{{<bar}}FAIL{{/bar}}{{/a}}{{/foo}}',
+                'WIN!!',
+            ),
+        );
+    }
+
+    public function testDefaultContent()
+    {
+        $tpl = $this->mustache->loadTemplate('{{$title}}Default title{{/title}}');
+
+        $data = array();
+
+        $this->assertEquals('Default title', $tpl->render($data));
+    }
+
+    public function testDefaultContentRendersVariables()
+    {
+        $tpl = $this->mustache->loadTemplate('{{$foo}}default {{bar}} content{{/foo}}');
+
+        $data = array(
+            'bar' => 'baz',
+        );
+
+        $this->assertEquals('default baz content', $tpl->render($data));
+    }
+
+    public function testDefaultContentRendersTripleMustacheVariables()
+    {
+        $tpl = $this->mustache->loadTemplate('{{$foo}}default {{{bar}}} content{{/foo}}');
+
+        $data = array(
+            'bar' => '<baz>',
+        );
+
+        $this->assertEquals('default <baz> content', $tpl->render($data));
+    }
+
+    public function testDefaultContentRendersSections()
+    {
+        $tpl = $this->mustache->loadTemplate(
+            '{{$foo}}default {{#bar}}{{baz}}{{/bar}} content{{/foo}}'
+        );
+
+        $data = array(
+            'bar' => array('baz' => 'qux'),
+        );
+
+        $this->assertEquals('default qux content', $tpl->render($data));
+    }
+
+    public function testDefaultContentRendersNegativeSections()
+    {
+        $tpl = $this->mustache->loadTemplate(
+            '{{$foo}}default {{^bar}}{{baz}}{{/bar}} content{{/foo}}'
+        );
+
+        $data = array(
+            'foo' => array('bar' => 'qux'),
+            'baz' => 'three',
+        );
+
+        $this->assertEquals('default three content', $tpl->render($data));
+    }
+
+    public function testMustacheInjectionInDefaultContent()
+    {
+        $tpl = $this->mustache->loadTemplate(
+            '{{$foo}}default {{#bar}}{{baz}}{{/bar}} content{{/foo}}'
+        );
+
+        $data = array(
+            'bar' => array('baz' => '{{qux}}'),
+        );
+
+        $this->assertEquals('default {{qux}} content', $tpl->render($data));
+    }
+
+    public function testDefaultContentRenderedInsideIncludedTemplates()
+    {
+        $partials = array(
+            'include' => '{{$foo}}default content{{/foo}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<include}}{{/include}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('default content', $tpl->render($data));
+    }
+
+    public function testOverriddenContent()
+    {
+        $partials = array(
+            'super' => '...{{$title}}Default title{{/title}}...',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<super}}{{$title}}sub template title{{/title}}{{/super}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('...sub template title...', $tpl->render($data));
+    }
+
+    public function testOverriddenPartial()
+    {
+        $partials = array(
+            'partial' => '|{{$stuff}}...{{/stuff}}{{$default}} default{{/default}}|',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            'test {{<partial}}{{$stuff}}override1{{/stuff}}{{/partial}} {{<partial}}{{$stuff}}override2{{/stuff}}{{/partial}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('test |override1 default| |override2 default|', $tpl->render($data));
+    }
+
+    public function testBlocksDoNotLeakBetweenPartials()
+    {
+        $partials = array(
+            'partial' => '|{{$a}}A{{/a}} {{$b}}B{{/b}}|',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            'test {{<partial}}{{$a}}C{{/a}}{{/partial}} {{<partial}}{{$b}}D{{/b}}{{/partial}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('test |C B| |A D|', $tpl->render($data));
+    }
+
+    public function testDataDoesNotOverrideBlock()
+    {
+        $partials = array(
+            'include' => '{{$var}}var in include{{/var}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<include}}{{$var}}var in template{{/var}}{{/include}}'
+        );
+
+        $data = array(
+            'var' => 'var in data',
+        );
+
+        $this->assertEquals('var in template', $tpl->render($data));
+    }
+
+    public function testDataDoesNotOverrideDefaultBlockValue()
+    {
+        $partials = array(
+            'include' => '{{$var}}var in include{{/var}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<include}}{{/include}}'
+        );
+
+        $data = array(
+            'var' => 'var in data',
+        );
+
+        $this->assertEquals('var in include', $tpl->render($data));
+    }
+
+    public function testOverridePartialWithNewlines()
+    {
+        $partials = array(
+            'partial' => '{{$ballmer}}peaking{{/ballmer}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            "{{<partial}}{{\$ballmer}}\npeaked\n\n:(\n{{/ballmer}}{{/partial}}"
+        );
+
+        $data = array();
+
+        $this->assertEquals("peaked\n\n:(\n", $tpl->render($data));
+    }
+
+    public function testInheritIndentationWhenOverridingAPartial()
+    {
+        $partials = array(
+            'partial' => 'stop:
+                    {{$nineties}}collaborate and listen{{/nineties}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<partial}}{{$nineties}}hammer time{{/nineties}}{{/partial}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals(
+            'stop:
+                    hammer time',
+            $tpl->render($data)
+        );
+    }
+
+    public function testInheritSpacingWhenOverridingAPartial()
+    {
+        $partials = array(
+            'parent' => 'collaborate_and{{$id}}{{/id}}',
+            'child'  => '{{<parent}}{{$id}}_listen{{/id}}{{/parent}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            'stop:
+              {{>child}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals(
+            'stop:
+              collaborate_and_listen',
+            $tpl->render($data)
+        );
+    }
+
+    public function testOverrideOneSubstitutionButNotTheOther()
+    {
+        $partials = array(
+            'partial' => '{{$stuff}}default one{{/stuff}}, {{$stuff2}}default two{{/stuff2}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<partial}}{{$stuff2}}override two{{/stuff2}}{{/partial}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('default one, override two', $tpl->render($data));
+    }
+
+    public function testSuperTemplatesWithNoParameters()
+    {
+        $partials = array(
+            'include' => '{{$foo}}default content{{/foo}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{>include}}|{{<include}}{{/include}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('default content|default content', $tpl->render($data));
+    }
+
+    public function testRecursionInInheritedTemplates()
+    {
+        $partials = array(
+            'include'  => '{{$foo}}default content{{/foo}} {{$bar}}{{<include2}}{{/include2}}{{/bar}}',
+            'include2' => '{{$foo}}include2 default content{{/foo}} {{<include}}{{$bar}}don\'t recurse{{/bar}}{{/include}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<include}}{{$foo}}override{{/foo}}{{/include}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('override override override don\'t recurse', $tpl->render($data));
+    }
+
+    public function testTopLevelSubstitutionsTakePrecedenceInMultilevelInheritance()
+    {
+        $partials = array(
+            'parent'      => '{{<older}}{{$a}}p{{/a}}{{/older}}',
+            'older'       => '{{<grandParent}}{{$a}}o{{/a}}{{/grandParent}}',
+            'grandParent' => '{{$a}}g{{/a}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<parent}}{{$a}}c{{/a}}{{/parent}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('c', $tpl->render($data));
+    }
+
+    public function testMultiLevelInheritanceNoSubChild()
+    {
+        $partials = array(
+            'parent'      => '{{<older}}{{$a}}p{{/a}}{{/older}}',
+            'older'       => '{{<grandParent}}{{$a}}o{{/a}}{{/grandParent}}',
+            'grandParent' => '{{$a}}g{{/a}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<parent}}{{/parent}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('p', $tpl->render($data));
+    }
+
+    public function testIgnoreTextInsideSuperTemplatesButParseArgs()
+    {
+        $partials = array(
+            'include' => '{{$foo}}default content{{/foo}}',
+         );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<include}} asdfasd {{$foo}}hmm{{/foo}} asdfasdfasdf {{/include}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('hmm', $tpl->render($data));
+    }
+
+    public function testIgnoreTextInsideSuperTemplates()
+    {
+        $partials = array(
+            'include' => '{{$foo}}default content{{/foo}}',
+         );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<include}} asdfasd asdfasdfasdf {{/include}}'
+        );
+
+        $data = array();
+
+        $this->assertEquals('default content', $tpl->render($data));
+    }
+
+    public function testInheritanceWithLazyEvaluation()
+    {
+        $partials = array(
+            'parent' => '{{#items}}{{$value}}ignored{{/value}}{{/items}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<parent}}{{$value}}<{{ . }}>{{/value}}{{/parent}}'
+        );
+
+        $data = array('items' => array(1, 2, 3));
+
+        $this->assertEquals('<1><2><3>', $tpl->render($data));
+    }
+
+    public function testInheritanceWithLazyEvaluationWhitespaceIgnored()
+    {
+        $partials = array(
+            'parent' => '{{#items}}{{$value}}\n\nignored\n\n{{/value}}{{/items}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<parent}}\n\n\n{{$value}}<{{ . }}>{{/value}}\n\n{{/parent}}'
+        );
+
+        $data = array('items' => array(1, 2, 3));
+
+        $this->assertEquals('<1><2><3>', $tpl->render($data));
+    }
+
+    public function testInheritanceWithLazyEvaluationAndSections()
+    {
+        $partials = array(
+            'parent' => '{{#items}}{{$value}}\n\nignored {{.}} {{#more}} there is more {{/more}}\n\n{{/value}}{{/items}}',
+        );
+
+        $this->mustache->setPartials($partials);
+
+        $tpl = $this->mustache->loadTemplate(
+            '{{<parent}}\n\n\n{{$value}}<{{ . }}>{{#more}} there is less {{/more}}{{/value}}\n\n{{/parent}}'
+        );
+
+        $data = array('items' => array(1, 2, 3), 'more' => 'stuff');
+
+        $this->assertEquals('<1> there is less <2> there is less <3> there is less ', $tpl->render($data));
+    }
+
+    /**
+     * @dataProvider getIllegalInheritanceExamples
+     * @expectedException Mustache_Exception_SyntaxException
+     * @expectedExceptionMessage Illegal content in < parent tag
+     */
+    public function testIllegalInheritanceExamples($partials, $data, $template)
+    {
+        $this->mustache->setPartials($partials);
+        $tpl = $this->mustache->loadTemplate($template);
+        $tpl->render($data);
+    }
+
+    /**
+     * @dataProvider getLegalInheritanceExamples
+     */
+    public function testLegalInheritanceExamples($partials, $data, $template, $expect)
+    {
+        $this->mustache->setPartials($partials);
+        $tpl = $this->mustache->loadTemplate($template);
+        $this->assertSame($expect, $tpl->render($data));
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheInjectionTest.php
new file mode 100644 (file)
index 0000000..7a9d6ac
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group mustache_injection
+ * @group functional
+ */
+class Mustache_Test_Functional_MustacheInjectionTest extends PHPUnit_Framework_TestCase
+{
+    private $mustache;
+
+    public function setUp()
+    {
+        $this->mustache = new Mustache_Engine();
+    }
+
+    /**
+     * @dataProvider injectionData
+     */
+    public function testInjection($tpl, $data, $partials, $expect)
+    {
+        $this->mustache->setPartials($partials);
+        $this->assertEquals($expect, $this->mustache->render($tpl, $data));
+    }
+
+    public function injectionData()
+    {
+        $interpolationData = array(
+            'a' => '{{ b }}',
+            'b' => 'FAIL',
+        );
+
+        $sectionData = array(
+            'a' => true,
+            'b' => '{{ c }}',
+            'c' => 'FAIL',
+        );
+
+        $lambdaInterpolationData = array(
+            'a' => array($this, 'lambdaInterpolationCallback'),
+            'b' => '{{ c }}',
+            'c' => 'FAIL',
+        );
+
+        $lambdaSectionData = array(
+            'a' => array($this, 'lambdaSectionCallback'),
+            'b' => '{{ c }}',
+            'c' => 'FAIL',
+        );
+
+        return array(
+            array('{{ a }}',   $interpolationData, array(), '{{ b }}'),
+            array('{{{ a }}}', $interpolationData, array(), '{{ b }}'),
+
+            array('{{# a }}{{ b }}{{/ a }}',   $sectionData, array(), '{{ c }}'),
+            array('{{# a }}{{{ b }}}{{/ a }}', $sectionData, array(), '{{ c }}'),
+
+            array('{{> partial }}', $interpolationData, array('partial' => '{{ a }}'),   '{{ b }}'),
+            array('{{> partial }}', $interpolationData, array('partial' => '{{{ a }}}'), '{{ b }}'),
+
+            array('{{ a }}',           $lambdaInterpolationData, array(), '{{ c }}'),
+            array('{{# a }}b{{/ a }}', $lambdaSectionData,       array(), '{{ c }}'),
+        );
+    }
+
+    public static function lambdaInterpolationCallback()
+    {
+        return '{{ b }}';
+    }
+
+    public static function lambdaSectionCallback($text)
+    {
+        return '{{ ' . $text . ' }}';
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/MustacheSpecTest.php
new file mode 100644 (file)
index 0000000..6cde602
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * A PHPUnit test case wrapping the Mustache Spec.
+ *
+ * @group mustache-spec
+ * @group functional
+ */
+class Mustache_Test_Functional_MustacheSpecTest extends Mustache_Test_SpecTestCase
+{
+    /**
+     * For some reason data providers can't mark tests skipped, so this test exists
+     * simply to provide a 'skipped' test if the `spec` submodule isn't initialized.
+     */
+    public function testSpecInitialized()
+    {
+        if (!file_exists(dirname(__FILE__) . '/../../../../vendor/spec/specs/')) {
+            $this->markTestSkipped('Mustache spec submodule not initialized: run "git submodule update --init"');
+        }
+    }
+
+    /**
+     * @group comments
+     * @dataProvider loadCommentSpec
+     */
+    public function testCommentSpec($desc, $source, $partials, $data, $expected)
+    {
+        $template = self::loadTemplate($source, $partials);
+        $this->assertEquals($expected, $template->render($data), $desc);
+    }
+
+    public function loadCommentSpec()
+    {
+        return $this->loadSpec('comments');
+    }
+
+    /**
+     * @group delimiters
+     * @dataProvider loadDelimitersSpec
+     */
+    public function testDelimitersSpec($desc, $source, $partials, $data, $expected)
+    {
+        $template = self::loadTemplate($source, $partials);
+        $this->assertEquals($expected, $template->render($data), $desc);
+    }
+
+    public function loadDelimitersSpec()
+    {
+        return $this->loadSpec('delimiters');
+    }
+
+    /**
+     * @group interpolation
+     * @dataProvider loadInterpolationSpec
+     */
+    public function testInterpolationSpec($desc, $source, $partials, $data, $expected)
+    {
+        $template = self::loadTemplate($source, $partials);
+        $this->assertEquals($expected, $template->render($data), $desc);
+    }
+
+    public function loadInterpolationSpec()
+    {
+        return $this->loadSpec('interpolation');
+    }
+
+    /**
+     * @group inverted
+     * @group inverted-sections
+     * @dataProvider loadInvertedSpec
+     */
+    public function testInvertedSpec($desc, $source, $partials, $data, $expected)
+    {
+        $template = self::loadTemplate($source, $partials);
+        $this->assertEquals($expected, $template->render($data), $desc);
+    }
+
+    public function loadInvertedSpec()
+    {
+        return $this->loadSpec('inverted');
+    }
+
+    /**
+     * @group partials
+     * @dataProvider loadPartialsSpec
+     */
+    public function testPartialsSpec($desc, $source, $partials, $data, $expected)
+    {
+        $template = self::loadTemplate($source, $partials);
+        $this->assertEquals($expected, $template->render($data), $desc);
+    }
+
+    public function loadPartialsSpec()
+    {
+        return $this->loadSpec('partials');
+    }
+
+    /**
+     * @group sections
+     * @dataProvider loadSectionsSpec
+     */
+    public function testSectionsSpec($desc, $source, $partials, $data, $expected)
+    {
+        $template = self::loadTemplate($source, $partials);
+        $this->assertEquals($expected, $template->render($data), $desc);
+    }
+
+    public function loadSectionsSpec()
+    {
+        return $this->loadSpec('sections');
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/NestedPartialIndentTest.php
new file mode 100644 (file)
index 0000000..90af4d9
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group functional
+ * @group partials
+ */
+class Mustache_Test_Functional_NestedPartialIndentTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider partialsAndStuff
+     */
+    public function testNestedPartialsAreIndentedProperly($src, array $partials, $expected)
+    {
+        $m = new Mustache_Engine(array(
+            'partials' => $partials,
+        ));
+        $tpl = $m->loadTemplate($src);
+        $this->assertEquals($expected, $tpl->render());
+    }
+
+    public function partialsAndStuff()
+    {
+        $partials = array(
+            'a' => ' {{> b }}',
+            'b' => ' {{> d }}',
+            'c' => ' {{> d }}{{> d }}',
+            'd' => 'D!',
+        );
+
+        return array(
+            array(' {{> a }}', $partials, '   D!'),
+            array(' {{> b }}', $partials, '  D!'),
+            array(' {{> c }}', $partials, '  D!D!'),
+        );
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Functional/ObjectSectionTest.php
new file mode 100644 (file)
index 0000000..3cf01e1
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group sections
+ * @group functional
+ */
+class Mustache_Test_Functional_ObjectSectionTest extends PHPUnit_Framework_TestCase
+{
+    private $mustache;
+
+    public function setUp()
+    {
+        $this->mustache = new Mustache_Engine();
+    }
+
+    public function testBasicObject()
+    {
+        $tpl = $this->mustache->loadTemplate('{{#foo}}{{name}}{{/foo}}');
+        $this->assertEquals('Foo', $tpl->render(new Mustache_Test_Functional_Alpha()));
+    }
+
+    /**
+     * @group magic_methods
+     */
+    public function testObjectWithGet()
+    {
+        $tpl = $this->mustache->loadTemplate('{{#foo}}{{name}}{{/foo}}');
+        $this->assertEquals('Foo', $tpl->render(new Mustache_Test_Functional_Beta()));
+    }
+
+    /**
+     * @group magic_methods
+     */
+    public function testSectionObjectWithGet()
+    {
+        $tpl = $this->mustache->loadTemplate('{{#bar}}{{#foo}}{{name}}{{/foo}}{{/bar}}');
+        $this->assertEquals('Foo', $tpl->render(new Mustache_Test_Functional_Gamma()));
+    }
+
+    public function testSectionObjectWithFunction()
+    {
+        $tpl = $this->mustache->loadTemplate('{{#foo}}{{name}}{{/foo}}');
+        $alpha = new Mustache_Test_Functional_Alpha();
+        $alpha->foo = new Mustache_Test_Functional_Delta();
+        $this->assertEquals('Foo', $tpl->render($alpha));
+    }
+}
+
+class Mustache_Test_Functional_Alpha
+{
+    public $foo;
+
+    public function __construct()
+    {
+        $this->foo = new StdClass();
+        $this->foo->name = 'Foo';
+        $this->foo->number = 1;
+    }
+}
+
+class Mustache_Test_Functional_Beta
+{
+    protected $_data = array();
+
+    public function __construct()
+    {
+        $this->_data['foo'] = new StdClass();
+        $this->_data['foo']->name = 'Foo';
+        $this->_data['foo']->number = 1;
+    }
+
+    public function __isset($name)
+    {
+        return array_key_exists($name, $this->_data);
+    }
+
+    public function __get($name)
+    {
+        return $this->_data[$name];
+    }
+}
+
+class Mustache_Test_Functional_Gamma
+{
+    public $bar;
+
+    public function __construct()
+    {
+        $this->bar = new Mustache_Test_Functional_Beta();
+    }
+}
+
+class Mustache_Test_Functional_Delta
+{
+    protected $_name = 'Foo';
+
+    public function name()
+    {
+        return $this->_name;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/FunctionalTestCase.php
new file mode 100644 (file)
index 0000000..213b045
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+abstract class Mustache_Test_FunctionalTestCase extends PHPUnit_Framework_TestCase
+{
+    protected static $tempDir;
+
+    public static function setUpBeforeClass()
+    {
+        self::$tempDir = sys_get_temp_dir() . '/mustache_test';
+        if (file_exists(self::$tempDir)) {
+            self::rmdir(self::$tempDir);
+        }
+    }
+
+    /**
+     * @param string $path
+     */
+    protected static function rmdir($path)
+    {
+        $path = rtrim($path, '/') . '/';
+        $handle = opendir($path);
+        while (($file = readdir($handle)) !== false) {
+            if ($file === '.' || $file === '..') {
+                continue;
+            }
+
+            $fullpath = $path . $file;
+            if (is_dir($fullpath)) {
+                self::rmdir($fullpath);
+            } else {
+                unlink($fullpath);
+            }
+        }
+
+        closedir($handle);
+        rmdir($path);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/HelperCollectionTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/HelperCollectionTest.php
new file mode 100644 (file)
index 0000000..12dfb5c
--- /dev/null
@@ -0,0 +1,163 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Mustache_Test_HelperCollectionTest extends PHPUnit_Framework_TestCase
+{
+    public function testConstructor()
+    {
+        $foo = array($this, 'getFoo');
+        $bar = 'BAR';
+
+        $helpers = new Mustache_HelperCollection(array(
+            'foo' => $foo,
+            'bar' => $bar,
+        ));
+
+        $this->assertSame($foo, $helpers->get('foo'));
+        $this->assertSame($bar, $helpers->get('bar'));
+    }
+
+    public static function getFoo()
+    {
+        echo 'foo';
+    }
+
+    public function testAccessorsAndMutators()
+    {
+        $foo = array($this, 'getFoo');
+        $bar = 'BAR';
+
+        $helpers = new Mustache_HelperCollection();
+        $this->assertTrue($helpers->isEmpty());
+        $this->assertFalse($helpers->has('foo'));
+        $this->assertFalse($helpers->has('bar'));
+
+        $helpers->add('foo', $foo);
+        $this->assertFalse($helpers->isEmpty());
+        $this->assertTrue($helpers->has('foo'));
+        $this->assertFalse($helpers->has('bar'));
+
+        $helpers->add('bar', $bar);
+        $this->assertFalse($helpers->isEmpty());
+        $this->assertTrue($helpers->has('foo'));
+        $this->assertTrue($helpers->has('bar'));
+
+        $helpers->remove('foo');
+        $this->assertFalse($helpers->isEmpty());
+        $this->assertFalse($helpers->has('foo'));
+        $this->assertTrue($helpers->has('bar'));
+    }
+
+    public function testMagicMethods()
+    {
+        $foo = array($this, 'getFoo');
+        $bar = 'BAR';
+
+        $helpers = new Mustache_HelperCollection();
+        $this->assertTrue($helpers->isEmpty());
+        $this->assertFalse($helpers->has('foo'));
+        $this->assertFalse($helpers->has('bar'));
+        $this->assertFalse(isset($helpers->foo));
+        $this->assertFalse(isset($helpers->bar));
+
+        $helpers->foo = $foo;
+        $this->assertFalse($helpers->isEmpty());
+        $this->assertTrue($helpers->has('foo'));
+        $this->assertFalse($helpers->has('bar'));
+        $this->assertTrue(isset($helpers->foo));
+        $this->assertFalse(isset($helpers->bar));
+
+        $helpers->bar = $bar;
+        $this->assertFalse($helpers->isEmpty());
+        $this->assertTrue($helpers->has('foo'));
+        $this->assertTrue($helpers->has('bar'));
+        $this->assertTrue(isset($helpers->foo));
+        $this->assertTrue(isset($helpers->bar));
+
+        unset($helpers->foo);
+        $this->assertFalse($helpers->isEmpty());
+        $this->assertFalse($helpers->has('foo'));
+        $this->assertTrue($helpers->has('bar'));
+        $this->assertFalse(isset($helpers->foo));
+        $this->assertTrue(isset($helpers->bar));
+    }
+
+    /**
+     * @dataProvider getInvalidHelperArguments
+     */
+    public function testHelperCollectionIsntAfraidToThrowExceptions($helpers = array(), $actions = array(), $exception = null)
+    {
+        if ($exception) {
+            $this->setExpectedException($exception);
+        }
+
+        $helpers = new Mustache_HelperCollection($helpers);
+
+        foreach ($actions as $method => $args) {
+            call_user_func_array(array($helpers, $method), $args);
+        }
+    }
+
+    public function getInvalidHelperArguments()
+    {
+        return array(
+            array(
+                'not helpers',
+                array(),
+                'InvalidArgumentException',
+            ),
+            array(
+                array(),
+                array('get' => array('foo')),
+                'InvalidArgumentException',
+            ),
+            array(
+                array('foo' => 'FOO'),
+                array('get' => array('foo')),
+                null,
+            ),
+            array(
+                array('foo' => 'FOO'),
+                array('get' => array('bar')),
+                'InvalidArgumentException',
+            ),
+            array(
+                array('foo' => 'FOO'),
+                array(
+                    'add' => array('bar', 'BAR'),
+                    'get' => array('bar'),
+                ),
+                null,
+            ),
+            array(
+                array('foo' => 'FOO'),
+                array(
+                    'get'    => array('foo'),
+                    'remove' => array('foo'),
+                ),
+                null,
+            ),
+            array(
+                array('foo' => 'FOO'),
+                array(
+                    'remove' => array('foo'),
+                    'get'    => array('foo'),
+                ),
+                'InvalidArgumentException',
+            ),
+            array(
+                array(),
+                array('remove' => array('foo')),
+                'InvalidArgumentException',
+            ),
+        );
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/ArrayLoaderTest.php
new file mode 100644 (file)
index 0000000..1f30987
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_Loader_ArrayLoaderTest extends PHPUnit_Framework_TestCase
+{
+    public function testConstructor()
+    {
+        $loader = new Mustache_Loader_ArrayLoader(array(
+            'foo' => 'bar',
+        ));
+
+        $this->assertEquals('bar', $loader->load('foo'));
+    }
+
+    public function testSetAndLoadTemplates()
+    {
+        $loader = new Mustache_Loader_ArrayLoader(array(
+            'foo' => 'bar',
+        ));
+        $this->assertEquals('bar', $loader->load('foo'));
+
+        $loader->setTemplate('baz', 'qux');
+        $this->assertEquals('qux', $loader->load('baz'));
+
+        $loader->setTemplates(array(
+            'foo' => 'FOO',
+            'baz' => 'BAZ',
+        ));
+        $this->assertEquals('FOO', $loader->load('foo'));
+        $this->assertEquals('BAZ', $loader->load('baz'));
+    }
+
+    /**
+     * @expectedException Mustache_Exception_UnknownTemplateException
+     */
+    public function testMissingTemplatesThrowExceptions()
+    {
+        $loader = new Mustache_Loader_ArrayLoader();
+        $loader->load('not_a_real_template');
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/CascadingLoaderTest.php
new file mode 100644 (file)
index 0000000..ecf80d6
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_Loader_CascadingLoaderTest extends PHPUnit_Framework_TestCase
+{
+    public function testLoadTemplates()
+    {
+        $loader = new Mustache_Loader_CascadingLoader(array(
+            new Mustache_Loader_ArrayLoader(array('foo' => '{{ foo }}')),
+            new Mustache_Loader_ArrayLoader(array('bar' => '{{#bar}}BAR{{/bar}}')),
+        ));
+
+        $this->assertEquals('{{ foo }}', $loader->load('foo'));
+        $this->assertEquals('{{#bar}}BAR{{/bar}}', $loader->load('bar'));
+    }
+
+    /**
+     * @expectedException Mustache_Exception_UnknownTemplateException
+     */
+    public function testMissingTemplatesThrowExceptions()
+    {
+        $loader = new Mustache_Loader_CascadingLoader(array(
+            new Mustache_Loader_ArrayLoader(array('foo' => '{{ foo }}')),
+            new Mustache_Loader_ArrayLoader(array('bar' => '{{#bar}}BAR{{/bar}}')),
+        ));
+
+        $loader->load('not_a_real_template');
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/FilesystemLoaderTest.php
new file mode 100644 (file)
index 0000000..8c06e76
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_Loader_FilesystemLoaderTest extends PHPUnit_Framework_TestCase
+{
+    public function testConstructor()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+        $loader = new Mustache_Loader_FilesystemLoader($baseDir, array('extension' => '.ms'));
+        $this->assertEquals('alpha contents', $loader->load('alpha'));
+        $this->assertEquals('beta contents', $loader->load('beta.ms'));
+    }
+
+    public function testTrailingSlashes()
+    {
+        $baseDir = dirname(__FILE__) . '/../../../fixtures/templates/';
+        $loader = new Mustache_Loader_FilesystemLoader($baseDir);
+        $this->assertEquals('one contents', $loader->load('one'));
+    }
+
+    public function testConstructorWithProtocol()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+
+        $loader = new Mustache_Loader_FilesystemLoader('test://' . $baseDir, array('extension' => '.ms'));
+        $this->assertEquals('alpha contents', $loader->load('alpha'));
+        $this->assertEquals('beta contents', $loader->load('beta.ms'));
+    }
+
+    public function testLoadTemplates()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+        $loader = new Mustache_Loader_FilesystemLoader($baseDir);
+        $this->assertEquals('one contents', $loader->load('one'));
+        $this->assertEquals('two contents', $loader->load('two.mustache'));
+    }
+
+    public function testEmptyExtensionString()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+
+        $loader = new Mustache_Loader_FilesystemLoader($baseDir, array('extension' => ''));
+        $this->assertEquals('one contents', $loader->load('one.mustache'));
+        $this->assertEquals('alpha contents', $loader->load('alpha.ms'));
+
+        $loader = new Mustache_Loader_FilesystemLoader($baseDir, array('extension' => null));
+        $this->assertEquals('two contents', $loader->load('two.mustache'));
+        $this->assertEquals('beta contents', $loader->load('beta.ms'));
+    }
+
+    /**
+     * @expectedException Mustache_Exception_RuntimeException
+     */
+    public function testMissingBaseDirThrowsException()
+    {
+        new Mustache_Loader_FilesystemLoader(dirname(__FILE__) . '/not_a_directory');
+    }
+
+    /**
+     * @expectedException Mustache_Exception_UnknownTemplateException
+     */
+    public function testMissingTemplateThrowsException()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+        $loader = new Mustache_Loader_FilesystemLoader($baseDir);
+
+        $loader->load('fake');
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/InlineLoaderTest.php
new file mode 100644 (file)
index 0000000..24f2e0b
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_Loader_InlineLoaderTest extends PHPUnit_Framework_TestCase
+{
+    public function testLoadTemplates()
+    {
+        $loader = new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__);
+        $this->assertEquals('{{ foo }}', $loader->load('foo'));
+        $this->assertEquals('{{#bar}}BAR{{/bar}}', $loader->load('bar'));
+    }
+
+    /**
+     * @expectedException Mustache_Exception_UnknownTemplateException
+     */
+    public function testMissingTemplatesThrowExceptions()
+    {
+        $loader = new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__);
+        $loader->load('not_a_real_template');
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testInvalidOffsetThrowsException()
+    {
+        new Mustache_Loader_InlineLoader(__FILE__, 'notanumber');
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testInvalidFileThrowsException()
+    {
+        new Mustache_Loader_InlineLoader('notarealfile', __COMPILER_HALT_OFFSET__);
+    }
+}
+
+__halt_compiler();
+
+@@ foo
+{{ foo }}
+
+@@ bar
+{{#bar}}BAR{{/bar}}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/ProductionFilesystemLoaderTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/ProductionFilesystemLoaderTest.php
new file mode 100644 (file)
index 0000000..0c7c7e3
--- /dev/null
@@ -0,0 +1,103 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_Loader_ProductionFilesystemLoaderTest extends PHPUnit_Framework_TestCase
+{
+    public function testConstructor()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+        $loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('extension' => '.ms'));
+        $this->assertInstanceOf('Mustache_Source', $loader->load('alpha'));
+        $this->assertEquals('alpha contents', $loader->load('alpha')->getSource());
+        $this->assertInstanceOf('Mustache_Source', $loader->load('beta.ms'));
+        $this->assertEquals('beta contents', $loader->load('beta.ms')->getSource());
+    }
+
+    public function testTrailingSlashes()
+    {
+        $baseDir = dirname(__FILE__) . '/../../../fixtures/templates/';
+        $loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir);
+        $this->assertEquals('one contents', $loader->load('one')->getSource());
+    }
+
+    public function testConstructorWithProtocol()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+
+        $loader = new Mustache_Loader_ProductionFilesystemLoader('file://' . $baseDir, array('extension' => '.ms'));
+        $this->assertEquals('alpha contents', $loader->load('alpha')->getSource());
+        $this->assertEquals('beta contents', $loader->load('beta.ms')->getSource());
+    }
+
+    public function testLoadTemplates()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+        $loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir);
+        $this->assertEquals('one contents', $loader->load('one')->getSource());
+        $this->assertEquals('two contents', $loader->load('two.mustache')->getSource());
+    }
+
+    public function testEmptyExtensionString()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+
+        $loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('extension' => ''));
+        $this->assertEquals('one contents', $loader->load('one.mustache')->getSource());
+        $this->assertEquals('alpha contents', $loader->load('alpha.ms')->getSource());
+
+        $loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('extension' => null));
+        $this->assertEquals('two contents', $loader->load('two.mustache')->getSource());
+        $this->assertEquals('beta contents', $loader->load('beta.ms')->getSource());
+    }
+
+    /**
+     * @expectedException Mustache_Exception_RuntimeException
+     */
+    public function testMissingBaseDirThrowsException()
+    {
+        new Mustache_Loader_ProductionFilesystemLoader(dirname(__FILE__) . '/not_a_directory');
+    }
+
+    /**
+     * @expectedException Mustache_Exception_UnknownTemplateException
+     */
+    public function testMissingTemplateThrowsException()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+        $loader = new Mustache_Loader_ProductionFilesystemLoader($baseDir);
+
+        $loader->load('fake');
+    }
+
+    public function testLoadWithDifferentStatProps()
+    {
+        $baseDir = realpath(dirname(__FILE__) . '/../../../fixtures/templates');
+        $noStatLoader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('stat_props' => null));
+        $mtimeLoader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('stat_props' => array('mtime')));
+        $sizeLoader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('stat_props' => array('size')));
+        $bothLoader = new Mustache_Loader_ProductionFilesystemLoader($baseDir, array('stat_props' => array('mtime', 'size')));
+
+        $noStatKey = $noStatLoader->load('one.mustache')->getKey();
+        $mtimeKey = $mtimeLoader->load('one.mustache')->getKey();
+        $sizeKey = $sizeLoader->load('one.mustache')->getKey();
+        $bothKey = $bothLoader->load('one.mustache')->getKey();
+
+        $this->assertNotEquals($noStatKey, $mtimeKey);
+        $this->assertNotEquals($noStatKey, $sizeKey);
+        $this->assertNotEquals($noStatKey, $bothKey);
+        $this->assertNotEquals($mtimeKey, $sizeKey);
+        $this->assertNotEquals($mtimeKey, $bothKey);
+        $this->assertNotEquals($sizeKey, $bothKey);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Loader/StringLoaderTest.php
new file mode 100644 (file)
index 0000000..5896f00
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_Loader_StringLoaderTest extends PHPUnit_Framework_TestCase
+{
+    public function testLoadTemplates()
+    {
+        $loader = new Mustache_Loader_StringLoader();
+
+        $this->assertEquals('foo', $loader->load('foo'));
+        $this->assertEquals('{{ bar }}', $loader->load('{{ bar }}'));
+        $this->assertEquals("\n{{! comment }}\n", $loader->load("\n{{! comment }}\n"));
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Logger/AbstractLoggerTest.php
new file mode 100644 (file)
index 0000000..19dc27c
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_Logger_AbstractLoggerTest extends PHPUnit_Framework_TestCase
+{
+    public function testEverything()
+    {
+        $logger = new Mustache_Test_Logger_TestLogger();
+
+        $logger->emergency('emergency message');
+        $logger->alert('alert message');
+        $logger->critical('critical message');
+        $logger->error('error message');
+        $logger->warning('warning message');
+        $logger->notice('notice message');
+        $logger->info('info message');
+        $logger->debug('debug message');
+
+        $expected = array(
+            array(Mustache_Logger::EMERGENCY, 'emergency message', array()),
+            array(Mustache_Logger::ALERT, 'alert message', array()),
+            array(Mustache_Logger::CRITICAL, 'critical message', array()),
+            array(Mustache_Logger::ERROR, 'error message', array()),
+            array(Mustache_Logger::WARNING, 'warning message', array()),
+            array(Mustache_Logger::NOTICE, 'notice message', array()),
+            array(Mustache_Logger::INFO, 'info message', array()),
+            array(Mustache_Logger::DEBUG, 'debug message', array()),
+        );
+
+        $this->assertEquals($expected, $logger->log);
+    }
+}
+
+class Mustache_Test_Logger_TestLogger extends Mustache_Logger_AbstractLogger
+{
+    public $log = array();
+
+    /**
+     * Logs with an arbitrary level.
+     *
+     * @param mixed  $level
+     * @param string $message
+     * @param array  $context
+     */
+    public function log($level, $message, array $context = array())
+    {
+        $this->log[] = array($level, $message, $context);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Logger/StreamLoggerTest.php
new file mode 100644 (file)
index 0000000..fc1a06f
--- /dev/null
@@ -0,0 +1,209 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_Logger_StreamLoggerTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider acceptsStreamData
+     */
+    public function testAcceptsStream($name, $stream)
+    {
+        $logger = new Mustache_Logger_StreamLogger($stream);
+        $logger->log(Mustache_Logger::CRITICAL, 'message');
+
+        $this->assertEquals("CRITICAL: message\n", file_get_contents($name));
+    }
+
+    public function acceptsStreamData()
+    {
+        $one = tempnam(sys_get_temp_dir(), 'mustache-test');
+        $two = tempnam(sys_get_temp_dir(), 'mustache-test');
+
+        return array(
+            array($one, $one),
+            array($two, fopen($two, 'a')),
+        );
+    }
+
+    /**
+     * @expectedException Mustache_Exception_LogicException
+     */
+    public function testPrematurelyClosedStreamThrowsException()
+    {
+        $stream = tmpfile();
+        $logger = new Mustache_Logger_StreamLogger($stream);
+        fclose($stream);
+
+        $logger->log(Mustache_Logger::CRITICAL, 'message');
+    }
+
+    /**
+     * @dataProvider getLevels
+     */
+    public function testLoggingThresholds($logLevel, $level, $shouldLog)
+    {
+        $stream = tmpfile();
+        $logger = new Mustache_Logger_StreamLogger($stream, $logLevel);
+        $logger->log($level, 'logged');
+
+        rewind($stream);
+        $result = fread($stream, 1024);
+
+        if ($shouldLog) {
+            $this->assertContains('logged', $result);
+        } else {
+            $this->assertEmpty($result);
+        }
+    }
+
+    public function getLevels()
+    {
+        // $logLevel, $level, $shouldLog
+        return array(
+            // identities
+            array(Mustache_Logger::EMERGENCY, Mustache_Logger::EMERGENCY, true),
+            array(Mustache_Logger::ALERT,     Mustache_Logger::ALERT,     true),
+            array(Mustache_Logger::CRITICAL,  Mustache_Logger::CRITICAL,  true),
+            array(Mustache_Logger::ERROR,     Mustache_Logger::ERROR,     true),
+            array(Mustache_Logger::WARNING,   Mustache_Logger::WARNING,   true),
+            array(Mustache_Logger::NOTICE,    Mustache_Logger::NOTICE,    true),
+            array(Mustache_Logger::INFO,      Mustache_Logger::INFO,      true),
+            array(Mustache_Logger::DEBUG,     Mustache_Logger::DEBUG,     true),
+
+            // one above
+            array(Mustache_Logger::ALERT,     Mustache_Logger::EMERGENCY, true),
+            array(Mustache_Logger::CRITICAL,  Mustache_Logger::ALERT,     true),
+            array(Mustache_Logger::ERROR,     Mustache_Logger::CRITICAL,  true),
+            array(Mustache_Logger::WARNING,   Mustache_Logger::ERROR,     true),
+            array(Mustache_Logger::NOTICE,    Mustache_Logger::WARNING,   true),
+            array(Mustache_Logger::INFO,      Mustache_Logger::NOTICE,    true),
+            array(Mustache_Logger::DEBUG,     Mustache_Logger::INFO,      true),
+
+            // one below
+            array(Mustache_Logger::EMERGENCY, Mustache_Logger::ALERT,     false),
+            array(Mustache_Logger::ALERT,     Mustache_Logger::CRITICAL,  false),
+            array(Mustache_Logger::CRITICAL,  Mustache_Logger::ERROR,     false),
+            array(Mustache_Logger::ERROR,     Mustache_Logger::WARNING,   false),
+            array(Mustache_Logger::WARNING,   Mustache_Logger::NOTICE,    false),
+            array(Mustache_Logger::NOTICE,    Mustache_Logger::INFO,      false),
+            array(Mustache_Logger::INFO,      Mustache_Logger::DEBUG,     false),
+        );
+    }
+
+    /**
+     * @dataProvider getLogMessages
+     */
+    public function testLogging($level, $message, $context, $expected)
+    {
+        $stream = tmpfile();
+        $logger = new Mustache_Logger_StreamLogger($stream, Mustache_Logger::DEBUG);
+        $logger->log($level, $message, $context);
+
+        rewind($stream);
+        $result = fread($stream, 1024);
+
+        $this->assertEquals($expected, $result);
+    }
+
+    public function getLogMessages()
+    {
+        // $level, $message, $context, $expected
+        return array(
+            array(Mustache_Logger::DEBUG,     'debug message',     array(),  "DEBUG: debug message\n"),
+            array(Mustache_Logger::INFO,      'info message',      array(),  "INFO: info message\n"),
+            array(Mustache_Logger::NOTICE,    'notice message',    array(),  "NOTICE: notice message\n"),
+            array(Mustache_Logger::WARNING,   'warning message',   array(),  "WARNING: warning message\n"),
+            array(Mustache_Logger::ERROR,     'error message',     array(),  "ERROR: error message\n"),
+            array(Mustache_Logger::CRITICAL,  'critical message',  array(),  "CRITICAL: critical message\n"),
+            array(Mustache_Logger::ALERT,     'alert message',     array(),  "ALERT: alert message\n"),
+            array(Mustache_Logger::EMERGENCY, 'emergency message', array(),  "EMERGENCY: emergency message\n"),
+
+            // with context
+            array(
+                Mustache_Logger::ERROR,
+                'error message',
+                array('name' => 'foo', 'number' => 42),
+                "ERROR: error message\n",
+            ),
+
+            // with interpolation
+            array(
+                Mustache_Logger::ERROR,
+                'error {name}-{number}',
+                array('name' => 'foo', 'number' => 42),
+                "ERROR: error foo-42\n",
+            ),
+
+            // with iterpolation false positive
+            array(
+                Mustache_Logger::ERROR,
+                'error {nothing}',
+                array('name' => 'foo', 'number' => 42),
+                "ERROR: error {nothing}\n",
+            ),
+
+            // with interpolation injection
+            array(
+                Mustache_Logger::ERROR,
+                '{foo}',
+                array('foo' => '{bar}', 'bar' => 'FAIL'),
+                "ERROR: {bar}\n",
+            ),
+        );
+    }
+
+    public function testChangeLoggingLevels()
+    {
+        $stream = tmpfile();
+        $logger = new Mustache_Logger_StreamLogger($stream);
+
+        $logger->setLevel(Mustache_Logger::ERROR);
+        $this->assertEquals(Mustache_Logger::ERROR, $logger->getLevel());
+
+        $logger->log(Mustache_Logger::WARNING, 'ignore this');
+
+        $logger->setLevel(Mustache_Logger::INFO);
+        $this->assertEquals(Mustache_Logger::INFO, $logger->getLevel());
+
+        $logger->log(Mustache_Logger::WARNING, 'log this');
+
+        $logger->setLevel(Mustache_Logger::CRITICAL);
+        $this->assertEquals(Mustache_Logger::CRITICAL, $logger->getLevel());
+
+        $logger->log(Mustache_Logger::ERROR, 'ignore this');
+
+        rewind($stream);
+        $result = fread($stream, 1024);
+
+        $this->assertEquals("WARNING: log this\n", $result);
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testThrowsInvalidArgumentExceptionWhenSettingUnknownLevels()
+    {
+        $logger = new Mustache_Logger_StreamLogger(tmpfile());
+        $logger->setLevel('bacon');
+    }
+
+    /**
+     * @expectedException Mustache_Exception_InvalidArgumentException
+     */
+    public function testThrowsInvalidArgumentExceptionWhenLoggingUnknownLevels()
+    {
+        $logger = new Mustache_Logger_StreamLogger(tmpfile());
+        $logger->log('bacon', 'CODE BACON ERROR!');
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/ParserTest.php
new file mode 100644 (file)
index 0000000..d8458f7
--- /dev/null
@@ -0,0 +1,425 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_ParserTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider getTokenSets
+     */
+    public function testParse($tokens, $expected)
+    {
+        $parser = new Mustache_Parser();
+        $this->assertEquals($expected, $parser->parse($tokens));
+    }
+
+    public function getTokenSets()
+    {
+        return array(
+            array(
+                array(),
+                array(),
+            ),
+
+            array(
+                array(array(
+                    Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                    Mustache_Tokenizer::LINE  => 0,
+                    Mustache_Tokenizer::VALUE => 'text',
+                )),
+                array(array(
+                    Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                    Mustache_Tokenizer::LINE  => 0,
+                    Mustache_Tokenizer::VALUE => 'text',
+                )),
+            ),
+
+            array(
+                array(array(
+                    Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                    Mustache_Tokenizer::LINE => 0,
+                    Mustache_Tokenizer::NAME => 'name',
+                )),
+                array(array(
+                    Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                    Mustache_Tokenizer::LINE => 0,
+                    Mustache_Tokenizer::NAME => 'name',
+                )),
+            ),
+
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'foo',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_INVERTED,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 123,
+                        Mustache_Tokenizer::NAME  => 'parent',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::NAME  => 'name',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 456,
+                        Mustache_Tokenizer::NAME  => 'parent',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'bar',
+                    ),
+                ),
+
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'foo',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_INVERTED,
+                        Mustache_Tokenizer::NAME  => 'parent',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 123,
+                        Mustache_Tokenizer::END   => 456,
+                        Mustache_Tokenizer::NODES => array(
+                            array(
+                                Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                                Mustache_Tokenizer::LINE => 0,
+                                Mustache_Tokenizer::NAME => 'name',
+                            ),
+                        ),
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'bar',
+                    ),
+                ),
+            ),
+
+            // This *would* be an invalid inheritance parse tree, but that pragma
+            // isn't enabled so it'll thunk it back into an "escaped" token:
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR,
+                        Mustache_Tokenizer::NAME => 'foo',
+                        Mustache_Tokenizer::OTAG => '{{',
+                        Mustache_Tokenizer::CTAG => '}}',
+                        Mustache_Tokenizer::LINE => 0,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'bar',
+                    ),
+                ),
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME => '$foo',
+                        Mustache_Tokenizer::OTAG => '{{',
+                        Mustache_Tokenizer::CTAG => '}}',
+                        Mustache_Tokenizer::LINE => 0,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'bar',
+                    ),
+                ),
+            ),
+
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => '  ',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_DELIM_CHANGE,
+                        Mustache_Tokenizer::LINE => 0,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => "  \n",
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME => 'foo',
+                        Mustache_Tokenizer::OTAG => '[[',
+                        Mustache_Tokenizer::CTAG => ']]',
+                        Mustache_Tokenizer::LINE => 1,
+                    ),
+                ),
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME => 'foo',
+                        Mustache_Tokenizer::OTAG => '[[',
+                        Mustache_Tokenizer::CTAG => ']]',
+                        Mustache_Tokenizer::LINE => 1,
+                    ),
+                ),
+            ),
+
+        );
+    }
+
+    /**
+     * @dataProvider getInheritanceTokenSets
+     */
+    public function testParseWithInheritance($tokens, $expected)
+    {
+        $parser = new Mustache_Parser();
+        $parser->setPragmas(array(Mustache_Engine::PRAGMA_BLOCKS));
+        $this->assertEquals($expected, $parser->parse($tokens));
+    }
+
+    public function getInheritanceTokenSets()
+    {
+        return array(
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_PARENT,
+                        Mustache_Tokenizer::NAME  => 'foo',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 8,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_BLOCK_VAR,
+                        Mustache_Tokenizer::NAME  => 'bar',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 16,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'baz',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'bar',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 19,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'foo',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 27,
+                    ),
+                ),
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_PARENT,
+                        Mustache_Tokenizer::NAME  => 'foo',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 8,
+                        Mustache_Tokenizer::END   => 27,
+                        Mustache_Tokenizer::NODES => array(
+                            array(
+                                Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_BLOCK_ARG,
+                                Mustache_Tokenizer::NAME  => 'bar',
+                                Mustache_Tokenizer::OTAG  => '{{',
+                                Mustache_Tokenizer::CTAG  => '}}',
+                                Mustache_Tokenizer::LINE  => 0,
+                                Mustache_Tokenizer::INDEX => 16,
+                                Mustache_Tokenizer::END   => 19,
+                                Mustache_Tokenizer::NODES => array(
+                                    array(
+                                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                                        Mustache_Tokenizer::LINE  => 0,
+                                        Mustache_Tokenizer::VALUE => 'baz',
+                                    ),
+                                ),
+                            ),
+                        ),
+                    ),
+                ),
+            ),
+
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR,
+                        Mustache_Tokenizer::NAME => 'foo',
+                        Mustache_Tokenizer::OTAG => '{{',
+                        Mustache_Tokenizer::CTAG => '}}',
+                        Mustache_Tokenizer::LINE => 0,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'bar',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'foo',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 11,
+                    ),
+                ),
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_BLOCK_VAR,
+                        Mustache_Tokenizer::NAME  => 'foo',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::END   => 11,
+                        Mustache_Tokenizer::NODES => array(
+                            array(
+                                Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                                Mustache_Tokenizer::LINE  => 0,
+                                Mustache_Tokenizer::VALUE => 'bar',
+                            ),
+                        ),
+                    ),
+                ),
+            ),
+        );
+    }
+
+    /**
+     * @dataProvider getBadParseTrees
+     * @expectedException Mustache_Exception_SyntaxException
+     */
+    public function testParserThrowsExceptions($tokens)
+    {
+        $parser = new Mustache_Parser();
+        $parser->parse($tokens);
+    }
+
+    public function getBadParseTrees()
+    {
+        return array(
+            // no close
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_SECTION,
+                        Mustache_Tokenizer::NAME  => 'parent',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 123,
+                    ),
+                ),
+            ),
+
+            // no close inverted
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_INVERTED,
+                        Mustache_Tokenizer::NAME  => 'parent',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 123,
+                    ),
+                ),
+            ),
+
+            // no opening inverted
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'parent',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 123,
+                    ),
+                ),
+            ),
+
+            // weird nesting
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_SECTION,
+                        Mustache_Tokenizer::NAME  => 'parent',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 123,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_SECTION,
+                        Mustache_Tokenizer::NAME  => 'child',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 123,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'parent',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 123,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'child',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 123,
+                    ),
+                ),
+            ),
+
+            // This *would* be a valid inheritance parse tree, but that pragma
+            // isn't enabled here so it's going to fail :)
+            array(
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_BLOCK_VAR,
+                        Mustache_Tokenizer::NAME => 'foo',
+                        Mustache_Tokenizer::OTAG => '{{',
+                        Mustache_Tokenizer::CTAG => '}}',
+                        Mustache_Tokenizer::LINE => 0,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'bar',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'foo',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 11,
+                    ),
+                ),
+            ),
+        );
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Source/FilesystemSourceTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/Source/FilesystemSourceTest.php
new file mode 100644 (file)
index 0000000..a636ffe
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_Source_FilesystemSourceTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @expectedException RuntimeException
+     */
+    public function testMissingTemplateThrowsException()
+    {
+        $source = new Mustache_Source_FilesystemSource(dirname(__FILE__) . '/not_a_file.mustache', array('mtime'));
+        $source->getKey();
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/SpecTestCase.php
new file mode 100644 (file)
index 0000000..db188de
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+abstract class Mustache_Test_SpecTestCase extends PHPUnit_Framework_TestCase
+{
+    protected static $mustache;
+
+    public static function setUpBeforeClass()
+    {
+        self::$mustache = new Mustache_Engine();
+    }
+
+    protected static function loadTemplate($source, $partials)
+    {
+        self::$mustache->setPartials($partials);
+
+        return self::$mustache->loadTemplate($source);
+    }
+
+    /**
+     * Data provider for the mustache spec test.
+     *
+     * Loads YAML files from the spec and converts them to PHPisms.
+     *
+     * @param string $name
+     *
+     * @return array
+     */
+    protected function loadSpec($name)
+    {
+        $filename = dirname(__FILE__) . '/../../../vendor/spec/specs/' . $name . '.yml';
+        if (!file_exists($filename)) {
+            return array();
+        }
+
+        $data = array();
+        $yaml = new sfYamlParser();
+        $file = file_get_contents($filename);
+
+        // @hack: pre-process the 'lambdas' spec so the Symfony YAML parser doesn't complain.
+        if ($name === '~lambdas') {
+            $file = str_replace(" !code\n", "\n", $file);
+        }
+
+        $spec = $yaml->parse($file);
+
+        foreach ($spec['tests'] as $test) {
+            $data[] = array(
+                $test['name'] . ': ' . $test['desc'],
+                $test['template'],
+                isset($test['partials']) ? $test['partials'] : array(),
+                $test['data'],
+                $test['expected'],
+            );
+        }
+
+        return $data;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/TemplateTest.php
new file mode 100644 (file)
index 0000000..60065aa
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_TemplateTest extends PHPUnit_Framework_TestCase
+{
+    public function testConstructor()
+    {
+        $mustache = new Mustache_Engine();
+        $template = new Mustache_Test_TemplateStub($mustache);
+        $this->assertSame($mustache, $template->getMustache());
+    }
+
+    public function testRendering()
+    {
+        $rendered = '<< wheee >>';
+        $mustache = new Mustache_Engine();
+        $template = new Mustache_Test_TemplateStub($mustache);
+        $template->rendered = $rendered;
+        $context  = new Mustache_Context();
+
+        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+            $this->assertEquals($rendered, $template());
+        }
+
+        $this->assertEquals($rendered, $template->render());
+        $this->assertEquals($rendered, $template->renderInternal($context));
+        $this->assertEquals($rendered, $template->render(array('foo' => 'bar')));
+    }
+}
+
+class Mustache_Test_TemplateStub extends Mustache_Template
+{
+    public $rendered;
+
+    public function getMustache()
+    {
+        return $this->mustache;
+    }
+
+    public function renderInternal(Mustache_Context $context, $indent = '', $escape = false)
+    {
+        return $this->rendered;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php b/admin/lib/vendor/mustache/mustache/test/Mustache/Test/TokenizerTest.php
new file mode 100644 (file)
index 0000000..38f16dc
--- /dev/null
@@ -0,0 +1,306 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @group unit
+ */
+class Mustache_Test_TokenizerTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider getTokens
+     */
+    public function testScan($text, $delimiters, $expected)
+    {
+        $tokenizer = new Mustache_Tokenizer();
+        $this->assertSame($expected, $tokenizer->scan($text, $delimiters));
+    }
+
+    /**
+     * @expectedException Mustache_Exception_SyntaxException
+     */
+    public function testUnevenBracesThrowExceptions()
+    {
+        $tokenizer = new Mustache_Tokenizer();
+
+        $text = '{{{ name }}';
+        $tokenizer->scan($text, null);
+    }
+
+    /**
+     * @expectedException Mustache_Exception_SyntaxException
+     */
+    public function testUnevenBracesWithCustomDelimiterThrowExceptions()
+    {
+        $tokenizer = new Mustache_Tokenizer();
+
+        $text = '<%{ name %>';
+        $tokenizer->scan($text, '<% %>');
+    }
+
+    public function getTokens()
+    {
+        return array(
+            array(
+                'text',
+                null,
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'text',
+                    ),
+                ),
+            ),
+
+            array(
+                'text',
+                '<<< >>>',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'text',
+                    ),
+                ),
+            ),
+
+            array(
+                '{{ name }}',
+                null,
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME  => 'name',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 10,
+                    ),
+                ),
+            ),
+
+            array(
+                '{{ name }}',
+                '<<< >>>',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => '{{ name }}',
+                    ),
+                ),
+            ),
+
+            array(
+                '<<< name >>>',
+                '<<< >>>',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME  => 'name',
+                        Mustache_Tokenizer::OTAG  => '<<<',
+                        Mustache_Tokenizer::CTAG  => '>>>',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 12,
+                    ),
+                ),
+            ),
+
+            array(
+                "{{{ a }}}\n{{# b }}  \n{{= | | =}}| c ||/ b |\n|{ d }|",
+                null,
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_UNESCAPED,
+                        Mustache_Tokenizer::NAME  => 'a',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 8,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => "\n",
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_SECTION,
+                        Mustache_Tokenizer::NAME  => 'b',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 1,
+                        Mustache_Tokenizer::INDEX => 18,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 1,
+                        Mustache_Tokenizer::VALUE => "  \n",
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_DELIM_CHANGE,
+                        Mustache_Tokenizer::LINE  => 2,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME  => 'c',
+                        Mustache_Tokenizer::OTAG  => '|',
+                        Mustache_Tokenizer::CTAG  => '|',
+                        Mustache_Tokenizer::LINE  => 2,
+                        Mustache_Tokenizer::INDEX => 37,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'b',
+                        Mustache_Tokenizer::OTAG  => '|',
+                        Mustache_Tokenizer::CTAG  => '|',
+                        Mustache_Tokenizer::LINE  => 2,
+                        Mustache_Tokenizer::INDEX => 37,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 2,
+                        Mustache_Tokenizer::VALUE => "\n",
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_UNESCAPED,
+                        Mustache_Tokenizer::NAME  => 'd',
+                        Mustache_Tokenizer::OTAG  => '|',
+                        Mustache_Tokenizer::CTAG  => '|',
+                        Mustache_Tokenizer::LINE  => 3,
+                        Mustache_Tokenizer::INDEX => 51,
+                    ),
+
+                ),
+            ),
+
+            // See https://github.com/bobthecow/mustache.php/issues/183
+            array(
+                '{{# a }}0{{/ a }}',
+                null,
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_SECTION,
+                        Mustache_Tokenizer::NAME  => 'a',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 8,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => '0',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'a',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 9,
+                    ),
+                ),
+            ),
+
+            // custom delimiters don't swallow the next character, even if it is a }, }}}, or the same delimiter
+            array(
+                '<% a %>} <% b %>%> <% c %>}}}',
+                '<% %>',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME  => 'a',
+                        Mustache_Tokenizer::OTAG  => '<%',
+                        Mustache_Tokenizer::CTAG  => '%>',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 7,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => '} ',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME  => 'b',
+                        Mustache_Tokenizer::OTAG  => '<%',
+                        Mustache_Tokenizer::CTAG  => '%>',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 16,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => '%> ',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_ESCAPED,
+                        Mustache_Tokenizer::NAME  => 'c',
+                        Mustache_Tokenizer::OTAG  => '<%',
+                        Mustache_Tokenizer::CTAG  => '%>',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 26,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => '}}}',
+                    ),
+                ),
+            ),
+
+            // unescaped custom delimiters are properly parsed
+            array(
+                '<%{ a }%>',
+                '<% %>',
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_UNESCAPED,
+                        Mustache_Tokenizer::NAME  => 'a',
+                        Mustache_Tokenizer::OTAG  => '<%',
+                        Mustache_Tokenizer::CTAG  => '%>',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 9,
+                    ),
+                ),
+            ),
+
+            // Ensure that $arg token is not picked up during tokenization
+            array(
+                '{{$arg}}default{{/arg}}',
+                null,
+                array(
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_BLOCK_VAR,
+                        Mustache_Tokenizer::NAME  => 'arg',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 8,
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_TEXT,
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::VALUE => 'default',
+                    ),
+                    array(
+                        Mustache_Tokenizer::TYPE  => Mustache_Tokenizer::T_END_SECTION,
+                        Mustache_Tokenizer::NAME  => 'arg',
+                        Mustache_Tokenizer::OTAG  => '{{',
+                        Mustache_Tokenizer::CTAG  => '}}',
+                        Mustache_Tokenizer::LINE  => 0,
+                        Mustache_Tokenizer::INDEX => 15,
+                    ),
+                ),
+            ),
+        );
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/bootstrap.php b/admin/lib/vendor/mustache/mustache/test/bootstrap.php
new file mode 100644 (file)
index 0000000..b3d0a19
--- /dev/null
@@ -0,0 +1,91 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+require dirname(__FILE__) . '/../src/Mustache/Autoloader.php';
+Mustache_Autoloader::register();
+Mustache_Autoloader::register(dirname(__FILE__) . '/../test');
+
+require dirname(__FILE__) . '/../vendor/yaml/lib/sfYamlParser.php';
+
+/**
+ * Minimal stream wrapper to test protocol-based access to templates.
+ */
+class TestStream
+{
+    private $filehandle;
+
+    /**
+     * Always returns false.
+     *
+     * @param string $path
+     * @param int    $flags
+     *
+     * @return array
+     */
+    public function url_stat($path, $flags)
+    {
+        return false;
+    }
+
+    /**
+     * Open the file.
+     *
+     * @param string $path
+     * @param string $mode
+     *
+     * @return bool
+     */
+    public function stream_open($path, $mode)
+    {
+        $path = preg_replace('-^test://-', '', $path);
+        $this->filehandle = fopen($path, $mode);
+
+        return $this->filehandle !== false;
+    }
+
+    /**
+     * @return array
+     */
+    public function stream_stat()
+    {
+        return array();
+    }
+
+    /**
+     * @param int $count
+     *
+     * @return string
+     */
+    public function stream_read($count)
+    {
+        return fgets($this->filehandle, $count);
+    }
+
+    /**
+     * @return bool
+     */
+    public function stream_eof()
+    {
+        return feof($this->filehandle);
+    }
+
+    /**
+     * @return bool
+     */
+    public function stream_close()
+    {
+        return fclose($this->filehandle);
+    }
+}
+
+if (!stream_wrapper_register('test', 'TestStream')) {
+    die('Failed to register protocol');
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php b/admin/lib/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Bar.php
new file mode 100644 (file)
index 0000000..35c2668
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Mustache_Bar
+{
+    // nada
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Foo.php b/admin/lib/vendor/mustache/mustache/test/fixtures/autoloader/Mustache/Foo.php
new file mode 100644 (file)
index 0000000..45837ee
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Mustache_Foo
+{
+    // nada
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/autoloader/NonMustacheClass.php b/admin/lib/vendor/mustache/mustache/test/fixtures/autoloader/NonMustacheClass.php
new file mode 100644 (file)
index 0000000..be6153b
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class NonMustacheClass
+{
+    // noop
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/AnchoredDotNotation.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/AnchoredDotNotation.php
new file mode 100644 (file)
index 0000000..c075f65
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class AnchoredDotNotation
+{
+    public $genres = array(
+        array(
+            'name'      => 'Punk',
+            'subgenres' => array(
+                array(
+                    'name'      => 'Hardcore',
+                    'subgenres' => array(
+                        array(
+                            'name'      => 'First wave of black metal',
+                            'subgenres' => array(
+                                array('name' => 'Norwegian black metal'),
+                                array(
+                                    'name'      => 'Death metal',
+                                    'subgenres' => array(
+                                        array(
+                                            'name'      => 'Swedish death metal',
+                                            'subgenres' => array(
+                                                array('name' => 'New wave of American metal'),
+                                            ),
+                                        ),
+                                    ),
+                                ),
+                            ),
+                        ),
+                        array(
+                            'name'      => 'Thrash metal',
+                            'subgenres' => array(
+                                array('name' => 'Grindcore'),
+                                array(
+                                    'name'      => 'Metalcore',
+                                    'subgenres' => array(
+                                        array('name' => 'Nu metal'),
+                                    ),
+                                ),
+                            ),
+                        ),
+                    ),
+                ),
+            ),
+        ),
+    );
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/anchored_dot_notation.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/anchored_dot_notation.mustache
new file mode 100644 (file)
index 0000000..9494fb1
--- /dev/null
@@ -0,0 +1,4 @@
+{{% ANCHORED-DOT }}
+{{# genres }}
+{{> genre }}
+{{/ genres }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/anchored_dot_notation.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/anchored_dot_notation.txt
new file mode 100644 (file)
index 0000000..fa56efc
--- /dev/null
@@ -0,0 +1,11 @@
+ - Punk
+    - Hardcore
+       - First wave of black metal
+          - Norwegian black metal
+          - Death metal
+             - Swedish death metal
+                - New wave of American metal
+       - Thrash metal
+          - Grindcore
+          - Metalcore
+             - Nu metal
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/partials/genre.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/anchored_dot_notation/partials/genre.mustache
new file mode 100644 (file)
index 0000000..f51c503
--- /dev/null
@@ -0,0 +1,5 @@
+{{% ANCHORED-DOT }}
+ - {{ name }}
+{{# .subgenres }}
+   {{> genre }}
+{{/ .subgenres }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/Blocks.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/Blocks.php
new file mode 100644 (file)
index 0000000..6362aca
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Blocks
+{
+    public $items = array(1, 2, 3);
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.mustache
new file mode 100644 (file)
index 0000000..a9fff39
--- /dev/null
@@ -0,0 +1,4 @@
+{{% BLOCKS }}
+{{< parent }}
+{{$ value }}[{{ . }}]{{/ value }}
+{{/ parent }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/blocks.txt
new file mode 100644 (file)
index 0000000..2749019
--- /dev/null
@@ -0,0 +1,3 @@
+[1]
+[2]
+[3]
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/partials/parent.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/blocks/partials/parent.mustache
new file mode 100644 (file)
index 0000000..cbb30f0
--- /dev/null
@@ -0,0 +1,4 @@
+{{% BLOCKS }}
+{{# items }}
+{{$ value }}ignored{{/ value }}
+{{/ items }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/child_context/ChildContext.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/child_context/ChildContext.php
new file mode 100644 (file)
index 0000000..d898e5b
--- /dev/null
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class ChildContext
+{
+    public $parent = array(
+        'child' => 'child works',
+    );
+
+    public $grandparent = array(
+        'parent' => array(
+            'child' => 'grandchild works',
+        ),
+    );
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.mustache
new file mode 100644 (file)
index 0000000..e1f2ebc
--- /dev/null
@@ -0,0 +1,2 @@
+<h1>{{#parent}}{{child}}{{/parent}}</h1>
+<h2>{{#grandparent}}{{#parent}}{{child}}{{/parent}}{{/grandparent}}</h2>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/child_context/child_context.txt
new file mode 100644 (file)
index 0000000..cfb76bf
--- /dev/null
@@ -0,0 +1,2 @@
+<h1>child works</h1>
+<h2>grandchild works</h2>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/comments/Comments.php
new file mode 100644 (file)
index 0000000..88fe821
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Comments
+{
+    public function title()
+    {
+        return 'A Comedy of Errors';
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/comments/comments.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/comments/comments.mustache
new file mode 100644 (file)
index 0000000..846e449
--- /dev/null
@@ -0,0 +1 @@
+<h1>{{title}}{{! just something interesting... #or ^not... }}</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/comments/comments.txt
new file mode 100644 (file)
index 0000000..9f40e77
--- /dev/null
@@ -0,0 +1 @@
+<h1>A Comedy of Errors</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/complex/complex.mustache
new file mode 100644 (file)
index 0000000..807c201
--- /dev/null
@@ -0,0 +1,16 @@
+<h1>{{header}}</h1>
+{{#notEmpty}}
+<ul>
+{{#item}}
+{{#current}}
+    <li><strong>{{name}}</strong></li>
+{{/current}}
+{{^current}}
+    <li><a href="{{url}}">{{name}}</a></li>
+{{/current}}
+{{/item}}
+</ul>
+{{/notEmpty}}
+{{#isEmpty}}
+<p>The list is empty.</p>
+{{/isEmpty}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/complex/complex.php
new file mode 100644 (file)
index 0000000..7c69615
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Complex
+{
+    public $header = 'Colors';
+
+    public $item = array(
+        array('name' => 'red', 'current' => true, 'url' => '#Red'),
+        array('name' => 'green', 'current' => false, 'url' => '#Green'),
+        array('name' => 'blue', 'current' => false, 'url' => '#Blue'),
+    );
+
+    public function notEmpty()
+    {
+        return !($this->isEmpty());
+    }
+
+    public function isEmpty()
+    {
+        return count($this->item) === 0;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/complex/complex.txt
new file mode 100644 (file)
index 0000000..facee6d
--- /dev/null
@@ -0,0 +1,6 @@
+<h1>Colors</h1>
+<ul>
+    <li><strong>red</strong></li>
+    <li><a href="#Green">green</a></li>
+    <li><a href="#Blue">blue</a></li>
+</ul>
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/delimiters/Delimiters.php
new file mode 100644 (file)
index 0000000..235a088
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Delimiters
+{
+    public $start = 'It worked the first time.';
+
+    public function middle()
+    {
+        return array(
+            array('item' => 'And it worked the second time.'),
+            array('item' => 'As well as the third.'),
+        );
+    }
+
+    public $final = 'Then, surprisingly, it worked the final time.';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.mustache
new file mode 100644 (file)
index 0000000..e9b0332
--- /dev/null
@@ -0,0 +1,8 @@
+{{=<% %>=}}
+* <% start %>
+<%=| |=%>
+|# middle |
+* | item |
+|/ middle |
+|={{ }}=|
+* {{ final }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/delimiters/delimiters.txt
new file mode 100644 (file)
index 0000000..e6b2d7a
--- /dev/null
@@ -0,0 +1,4 @@
+* It worked the first time.
+* And it worked the second time.
+* As well as the third.
+* Then, surprisingly, it worked the final time.
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/dot_notation/DotNotation.php
new file mode 100644 (file)
index 0000000..eadbf61
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class DotNotation
+{
+    public $person = array(
+        'name'     => array('first' => 'Chris', 'last' => 'Firescythe'),
+        'age'      => 24,
+        'hometown' => array(
+            'city'  => 'Cincinnati',
+            'state' => 'OH',
+        ),
+    );
+
+    public $normal = 'Normal';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.mustache
new file mode 100644 (file)
index 0000000..0566867
--- /dev/null
@@ -0,0 +1,4 @@
+* {{person.name.first}} {{person.name.last}}
+* {{person.age}}
+* {{person.hometown.city}}, {{person.hometown.state}}
+* {{normal}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/dot_notation/dot_notation.txt
new file mode 100644 (file)
index 0000000..f8cf1fa
--- /dev/null
@@ -0,0 +1,4 @@
+* Chris Firescythe
+* 24
+* Cincinnati, OH
+* Normal
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/double_section/DoubleSection.php
new file mode 100644 (file)
index 0000000..1b3f6b6
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class DoubleSection
+{
+    public function t()
+    {
+        return true;
+    }
+
+    public $two = 'second';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.mustache
new file mode 100644 (file)
index 0000000..c831645
--- /dev/null
@@ -0,0 +1,7 @@
+{{#t}}
+* first
+{{/t}}
+* {{two}}
+{{#t}}
+* third
+{{/t}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/double_section/double_section.txt
new file mode 100644 (file)
index 0000000..5433688
--- /dev/null
@@ -0,0 +1,3 @@
+* first
+* second
+* third
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/escaped/Escaped.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/escaped/Escaped.php
new file mode 100644 (file)
index 0000000..f2510c6
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Escaped
+{
+    public $title = '"Bear" > "Shark"';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.mustache
new file mode 100644 (file)
index 0000000..8be4ccb
--- /dev/null
@@ -0,0 +1 @@
+<h1>{{title}}</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/escaped/escaped.txt
new file mode 100644 (file)
index 0000000..6ba3657
--- /dev/null
@@ -0,0 +1 @@
+<h1>&quot;Bear&quot; &gt; &quot;Shark&quot;</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/filters/Filters.php
new file mode 100644 (file)
index 0000000..eb6e3b7
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Filters
+{
+    public $states = array(
+        'al' => 'Alabama',
+        'ak' => 'Alaska',
+        'az' => 'Arizona',
+        'ar' => 'Arkansas',
+        'ca' => 'California',
+        'co' => 'Colorado',
+        'ct' => 'Connecticut',
+        'de' => 'Delaware',
+        'fl' => 'Florida',
+        'ga' => 'Georgia',
+        'hi' => 'Hawaii',
+        'id' => 'Idaho',
+        'il' => 'Illinois',
+        'in' => 'Indiana',
+        'ia' => 'Iowa',
+        'ks' => 'Kansas',
+        'ky' => 'Kentucky',
+        'la' => 'Louisiana',
+        'me' => 'Maine',
+        'md' => 'Maryland',
+        'ma' => 'Massachusetts',
+        'mi' => 'Michigan',
+        'mn' => 'Minnesota',
+        'ms' => 'Mississippi',
+        'mo' => 'Missouri',
+        'mt' => 'Montana',
+        'ne' => 'Nebraska',
+        'nv' => 'Nevada',
+        'nh' => 'New Hampshire',
+        'nj' => 'New Jersey',
+        'nm' => 'New Mexico',
+        'ny' => 'New York',
+        'nc' => 'North Carolina',
+        'nd' => 'North Dakota',
+        'oh' => 'Ohio',
+        'ok' => 'Oklahoma',
+        'or' => 'Oregon',
+        'pa' => 'Pennsylvania',
+        'ri' => 'Rhode Island',
+        'sc' => 'South Carolina',
+        'sd' => 'South Dakota',
+        'tn' => 'Tennessee',
+        'tx' => 'Texas',
+        'ut' => 'Utah',
+        'vt' => 'Vermont',
+        'va' => 'Virginia',
+        'wa' => 'Washington',
+        'wv' => 'West Virginia',
+        'wi' => 'Wisconsin',
+        'wy' => 'Wyoming',
+    );
+
+    // The next few functions are ugly, because they have to work in PHP 5.2...
+    // for everyone who doesn't have to support 5.2, please, for the love, make
+    // your ViewModel return closures rather than `array($this, '...')`
+    //
+    // :)
+
+    public function upcase()
+    {
+        return array($this, '_upcase');
+    }
+
+    public function _upcase($val)
+    {
+        return strtoupper($val);
+    }
+
+    public function eachPair()
+    {
+        return array($this, '_eachPair');
+    }
+
+    public function _eachPair($val)
+    {
+        $ret = array();
+        foreach ($val as $key => $value) {
+            array_push($ret, compact('key', 'value'));
+        }
+
+        return $ret;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/filters/filters.mustache
new file mode 100644 (file)
index 0000000..50f1465
--- /dev/null
@@ -0,0 +1,4 @@
+{{%FILTERS}}
+{{# states | eachPair }}
+{{ key | upcase }}: {{ value }}
+{{/ states }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/filters/filters.txt
new file mode 100644 (file)
index 0000000..67466fd
--- /dev/null
@@ -0,0 +1,50 @@
+AL: Alabama
+AK: Alaska
+AZ: Arizona
+AR: Arkansas
+CA: California
+CO: Colorado
+CT: Connecticut
+DE: Delaware
+FL: Florida
+GA: Georgia
+HI: Hawaii
+ID: Idaho
+IL: Illinois
+IN: Indiana
+IA: Iowa
+KS: Kansas
+KY: Kentucky
+LA: Louisiana
+ME: Maine
+MD: Maryland
+MA: Massachusetts
+MI: Michigan
+MN: Minnesota
+MS: Mississippi
+MO: Missouri
+MT: Montana
+NE: Nebraska
+NV: Nevada
+NH: New Hampshire
+NJ: New Jersey
+NM: New Mexico
+NY: New York
+NC: North Carolina
+ND: North Dakota
+OH: Ohio
+OK: Oklahoma
+OR: Oregon
+PA: Pennsylvania
+RI: Rhode Island
+SC: South Carolina
+SD: South Dakota
+TN: Tennessee
+TX: Texas
+UT: Utah
+VT: Vermont
+VA: Virginia
+WA: Washington
+WV: West Virginia
+WI: Wisconsin
+WY: Wyoming
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/GrandParentContext.php
new file mode 100644 (file)
index 0000000..2ee0e42
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class GrandParentContext
+{
+    public $grand_parent_id = 'grand_parent1';
+    public $parent_contexts = array();
+
+    public function __construct()
+    {
+        $this->parent_contexts[] = array('parent_id' => 'parent1', 'child_contexts' => array(
+            array('child_id' => 'parent1-child1'),
+            array('child_id' => 'parent1-child2'),
+        ));
+
+        $parent2 = new stdClass();
+        $parent2->parent_id = 'parent2';
+        $parent2->child_contexts = array(
+            array('child_id' => 'parent2-child1'),
+            array('child_id' => 'parent2-child2'),
+        );
+
+        $this->parent_contexts[] = $parent2;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.mustache
new file mode 100644 (file)
index 0000000..6d03ddf
--- /dev/null
@@ -0,0 +1,7 @@
+{{grand_parent_id}}
+{{#parent_contexts}}
+  {{parent_id}} ({{grand_parent_id}})
+  {{#child_contexts}}
+    {{child_id}} ({{parent_id}} << {{grand_parent_id}})
+  {{/child_contexts}}
+{{/parent_contexts}}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/grand_parent_context/grand_parent_context.txt
new file mode 100644 (file)
index 0000000..2687f84
--- /dev/null
@@ -0,0 +1,7 @@
+grand_parent1
+  parent1 (grand_parent1)
+    parent1-child1 (parent1 << grand_parent1)
+    parent1-child2 (parent1 << grand_parent1)
+  parent2 (grand_parent1)
+    parent2-child1 (parent2 << grand_parent1)
+    parent2-child2 (parent2 << grand_parent1)
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/i18n/I18n.php
new file mode 100644 (file)
index 0000000..c36bf70
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class I18n
+{
+    // Variable to be interpolated
+    public $name = 'Bob';
+
+    // Add a {{#__}} lambda for i18n
+    public $__ = array(__CLASS__, '__trans');
+
+    // A *very* small i18n dictionary :)
+    private static $dictionary = array(
+        'Hello.'                 => 'Hola.',
+        'My name is {{ name }}.' => 'Me llamo {{ name }}.',
+    );
+
+    public static function __trans($text)
+    {
+        return isset(self::$dictionary[$text]) ? self::$dictionary[$text] : $text;
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.mustache
new file mode 100644 (file)
index 0000000..eef169b
--- /dev/null
@@ -0,0 +1 @@
+{{#__}}Hello.{{/__}} {{#__}}My name is {{ name }}.{{/__}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/i18n/i18n.txt
new file mode 100644 (file)
index 0000000..650a71a
--- /dev/null
@@ -0,0 +1 @@
+Hola. Me llamo Bob.
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/ImplicitIterator.php
new file mode 100644 (file)
index 0000000..074f8f4
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class ImplicitIterator
+{
+    public $data = array('Donkey Kong', 'Luigi', 'Mario', 'Peach', 'Yoshi');
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.mustache
new file mode 100644 (file)
index 0000000..b8d58ff
--- /dev/null
@@ -0,0 +1,3 @@
+{{#data}}
+* {{.}}
+{{/data}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/implicit_iterator/implicit_iterator.txt
new file mode 100644 (file)
index 0000000..bd7e945
--- /dev/null
@@ -0,0 +1,5 @@
+* Donkey Kong
+* Luigi
+* Mario
+* Peach
+* Yoshi
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/InvertedDoubleSection.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/InvertedDoubleSection.php
new file mode 100644 (file)
index 0000000..32bc6cf
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class InvertedDoubleSection
+{
+    public $t = false;
+    public $two = 'second';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.mustache
new file mode 100644 (file)
index 0000000..acc3ae0
--- /dev/null
@@ -0,0 +1,7 @@
+{{^t}}
+* first
+{{/t}}
+* {{two}}
+{{^t}}
+* third
+{{/t}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_double_section/inverted_double_section.txt
new file mode 100644 (file)
index 0000000..5433688
--- /dev/null
@@ -0,0 +1,3 @@
+* first
+* second
+* third
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_section/InvertedSection.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_section/InvertedSection.php
new file mode 100644 (file)
index 0000000..5defa9e
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class InvertedSection
+{
+    public $repo = array();
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.mustache
new file mode 100644 (file)
index 0000000..431073d
--- /dev/null
@@ -0,0 +1,6 @@
+{{#repo}}
+    <b>{{name}}</b>
+{{/repo}}
+{{^repo}}
+    No repos :(
+{{/repo}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/inverted_section/inverted_section.txt
new file mode 100644 (file)
index 0000000..6ba5a99
--- /dev/null
@@ -0,0 +1 @@
+    No repos :(
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/NestedPartials.php
new file mode 100644 (file)
index 0000000..a2a2bb1
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class NestedPartials
+{
+    public $val = 'FOURTH!';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.mustache
new file mode 100644 (file)
index 0000000..7b80dc3
--- /dev/null
@@ -0,0 +1,3 @@
+<first>
+  {{> second }}
+</first>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/nested_partials.txt
new file mode 100644 (file)
index 0000000..62776f9
--- /dev/null
@@ -0,0 +1,7 @@
+<first>
+  <second>
+    <third>
+      FOURTH!
+    </third>
+  </second>
+</first>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/fourth.mustache
new file mode 100644 (file)
index 0000000..727676f
--- /dev/null
@@ -0,0 +1 @@
+{{ val }}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/second.mustache
new file mode 100644 (file)
index 0000000..83f33cf
--- /dev/null
@@ -0,0 +1,3 @@
+<second>
+  {{> third }}
+</second>
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/nested_partials/partials/third.mustache
new file mode 100644 (file)
index 0000000..f33301a
--- /dev/null
@@ -0,0 +1,3 @@
+<third>
+  {{> fourth }}
+</third>
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/Partials.php
new file mode 100644 (file)
index 0000000..e91dc68
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Partials
+{
+    public $page = array(
+        'title'    => 'Page Title',
+        'subtitle' => 'Page Subtitle',
+        'content'  => 'Lorem ipsum dolor sit amet.',
+    );
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/partials.mustache
new file mode 100644 (file)
index 0000000..54cf1c5
--- /dev/null
@@ -0,0 +1,7 @@
+<div>
+    {{> header }}
+
+    <div>
+        {{ page.content }}
+    </div>
+</div>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/partials.txt
new file mode 100644 (file)
index 0000000..f8e45ce
--- /dev/null
@@ -0,0 +1,8 @@
+<div>
+    <h1>Page Title</h1>
+    <h2>Page Subtitle</h2>
+
+    <div>
+        Lorem ipsum dolor sit amet.
+    </div>
+</div>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/partials/partials/header.mustache
new file mode 100644 (file)
index 0000000..88d567b
--- /dev/null
@@ -0,0 +1,4 @@
+{{# page }}
+<h1>{{ title }}</h1>
+<h2>{{ subtitle }}</h2>
+{{/ page }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/RecursivePartials.php
new file mode 100644 (file)
index 0000000..15b6973
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class RecursivePartials
+{
+    public $name  = 'George';
+    public $child = array(
+        'name'  => 'Dan',
+        'child' => array(
+            'name'  => 'Justin',
+            'child' => false,
+        ),
+    );
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/partials/child.mustache
new file mode 100644 (file)
index 0000000..1282941
--- /dev/null
@@ -0,0 +1 @@
+ > {{ name }}{{#child}}{{>child}}{{/child}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.mustache
new file mode 100644 (file)
index 0000000..0bc5d03
--- /dev/null
@@ -0,0 +1 @@
+{{name}}{{#child}}{{>child}}{{/child}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/recursive_partials/recursive_partials.txt
new file mode 100644 (file)
index 0000000..681cdef
--- /dev/null
@@ -0,0 +1 @@
+George > Dan > Justin
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/SectionIteratorObjects.php
new file mode 100644 (file)
index 0000000..0dc793c
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class SectionIteratorObjects
+{
+    public $start = 'It worked the first time.';
+
+    protected $_data = array(
+        array('item' => 'And it worked the second time.'),
+        array('item' => 'As well as the third.'),
+    );
+
+    public function middle()
+    {
+        return new ArrayIterator($this->_data);
+    }
+
+    public $final = 'Then, surprisingly, it worked the final time.';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.mustache
new file mode 100644 (file)
index 0000000..44dfce4
--- /dev/null
@@ -0,0 +1,5 @@
+* {{ start }}
+{{# middle }}
+* {{ item }}
+{{/ middle }}
+* {{ final }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_iterator_objects/section_iterator_objects.txt
new file mode 100644 (file)
index 0000000..e6b2d7a
--- /dev/null
@@ -0,0 +1,4 @@
+* It worked the first time.
+* And it worked the second time.
+* As well as the third.
+* Then, surprisingly, it worked the final time.
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/SectionMagicObjects.php
new file mode 100644 (file)
index 0000000..0fcb3b4
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class SectionMagicObjects
+{
+    public $start = 'It worked the first time.';
+
+    public function middle()
+    {
+        return new MagicObject();
+    }
+
+    public $final = 'Then, surprisingly, it worked the final time.';
+}
+
+class MagicObject
+{
+    protected $_data = array(
+        'foo' => 'And it worked the second time.',
+        'bar' => 'As well as the third.',
+    );
+
+    public function __get($key)
+    {
+        return isset($this->_data[$key]) ? $this->_data[$key] : null;
+    }
+
+    public function __isset($key)
+    {
+        return isset($this->_data[$key]);
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.mustache
new file mode 100644 (file)
index 0000000..9119608
--- /dev/null
@@ -0,0 +1,6 @@
+* {{ start }}
+{{# middle }}
+* {{ foo }}
+* {{ bar }}
+{{/ middle }}
+* {{ final }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_magic_objects/section_magic_objects.txt
new file mode 100644 (file)
index 0000000..e6b2d7a
--- /dev/null
@@ -0,0 +1,4 @@
+* It worked the first time.
+* And it worked the second time.
+* As well as the third.
+* Then, surprisingly, it worked the final time.
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_objects/SectionObjects.php
new file mode 100644 (file)
index 0000000..913c3eb
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class SectionObjects
+{
+    public $start = 'It worked the first time.';
+
+    public function middle()
+    {
+        return new SectionObject();
+    }
+
+    public $final = 'Then, surprisingly, it worked the final time.';
+}
+
+class SectionObject
+{
+    public $foo = 'And it worked the second time.';
+    public $bar = 'As well as the third.';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.mustache
new file mode 100644 (file)
index 0000000..9119608
--- /dev/null
@@ -0,0 +1,6 @@
+* {{ start }}
+{{# middle }}
+* {{ foo }}
+* {{ bar }}
+{{/ middle }}
+* {{ final }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/section_objects/section_objects.txt
new file mode 100644 (file)
index 0000000..e6b2d7a
--- /dev/null
@@ -0,0 +1,4 @@
+* It worked the first time.
+* And it worked the second time.
+* As well as the third.
+* Then, surprisingly, it worked the final time.
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections/Sections.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections/Sections.php
new file mode 100644 (file)
index 0000000..cf918c1
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Sections
+{
+    public $start = 'It worked the first time.';
+
+    public function middle()
+    {
+        return array(
+            array('item' => 'And it worked the second time.'),
+            array('item' => 'As well as the third.'),
+        );
+    }
+
+    public $final = 'Then, surprisingly, it worked the final time.';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections/sections.mustache
new file mode 100644 (file)
index 0000000..44dfce4
--- /dev/null
@@ -0,0 +1,5 @@
+* {{ start }}
+{{# middle }}
+* {{ item }}
+{{/ middle }}
+* {{ final }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections/sections.txt
new file mode 100644 (file)
index 0000000..e6b2d7a
--- /dev/null
@@ -0,0 +1,4 @@
+* It worked the first time.
+* And it worked the second time.
+* As well as the third.
+* Then, surprisingly, it worked the final time.
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections_nested/SectionsNested.php
new file mode 100644 (file)
index 0000000..43657c3
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class SectionsNested
+{
+    public $name = 'Little Mac';
+
+    public function enemies()
+    {
+        return array(
+            array(
+                'name'    => 'Von Kaiser',
+                'enemies' => array(
+                    array('name' => 'Super Macho Man'),
+                    array('name' => 'Piston Honda'),
+                    array('name' => 'Mr. Sandman'),
+                ),
+            ),
+            array(
+                'name'    => 'Mike Tyson',
+                'enemies' => array(
+                    array('name' => 'Soda Popinski'),
+                    array('name' => 'King Hippo'),
+                    array('name' => 'Great Tiger'),
+                    array('name' => 'Glass Joe'),
+                ),
+            ),
+            array(
+                'name'    => 'Don Flamenco',
+                'enemies' => array(
+                    array('name' => 'Bald Bull'),
+                ),
+            ),
+        );
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.mustache
new file mode 100644 (file)
index 0000000..9f8007d
--- /dev/null
@@ -0,0 +1,7 @@
+Enemies of {{ name }}:
+{{# enemies }}
+{{ name }} ... who also has enemies:
+{{# enemies }}
+--> {{ name }}
+{{/ enemies }}
+{{/ enemies }}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/sections_nested/sections_nested.txt
new file mode 100644 (file)
index 0000000..72c44d0
--- /dev/null
@@ -0,0 +1,12 @@
+Enemies of Little Mac:
+Von Kaiser ... who also has enemies:
+--> Super Macho Man
+--> Piston Honda
+--> Mr. Sandman
+Mike Tyson ... who also has enemies:
+--> Soda Popinski
+--> King Hippo
+--> Great Tiger
+--> Glass Joe
+Don Flamenco ... who also has enemies:
+--> Bald Bull
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/simple/Simple.php
new file mode 100644 (file)
index 0000000..a5492e8
--- /dev/null
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Simple
+{
+    public $name = 'Chris';
+    public $value = 10000;
+
+    public function taxed_value()
+    {
+        return $this->value - ($this->value * 0.4);
+    }
+
+    public $in_ca = true;
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/simple/simple.mustache
new file mode 100644 (file)
index 0000000..03df206
--- /dev/null
@@ -0,0 +1,5 @@
+Hello {{name}}
+You have just won ${{value}}!
+{{#in_ca}}
+Well, ${{ taxed_value }}, after taxes.
+{{/in_ca}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/simple/simple.txt
new file mode 100644 (file)
index 0000000..5d75d65
--- /dev/null
@@ -0,0 +1,3 @@
+Hello Chris
+You have just won $10000!
+Well, $6000, after taxes.
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/unescaped/Unescaped.php
new file mode 100644 (file)
index 0000000..ea85f88
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Unescaped
+{
+    public $title = 'Bear > Shark';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.mustache
new file mode 100644 (file)
index 0000000..9982708
--- /dev/null
@@ -0,0 +1 @@
+<h1>{{{title}}}</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/unescaped/unescaped.txt
new file mode 100644 (file)
index 0000000..01fa404
--- /dev/null
@@ -0,0 +1 @@
+<h1>Bear > Shark</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8/UTF8.php
new file mode 100644 (file)
index 0000000..c53fec9
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class UTF8
+{
+    public $test = '中文又来啦';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.mustache
new file mode 100644 (file)
index 0000000..6954d47
--- /dev/null
@@ -0,0 +1 @@
+<h1>中文 {{test}}</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8/utf8.txt
new file mode 100644 (file)
index 0000000..bf17971
--- /dev/null
@@ -0,0 +1 @@
+<h1>中文 中文又来啦</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/UTF8Unescaped.php
new file mode 100644 (file)
index 0000000..67f9366
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class UTF8Unescaped
+{
+    public $test = '中文又来啦';
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.mustache
new file mode 100644 (file)
index 0000000..fd7fe4b
--- /dev/null
@@ -0,0 +1 @@
+<h1>中文 {{{test}}}</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/utf8_unescaped/utf8_unescaped.txt
new file mode 100644 (file)
index 0000000..bf17971
--- /dev/null
@@ -0,0 +1 @@
+<h1>中文 中文又来啦</h1>
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/Whitespace.php
new file mode 100644 (file)
index 0000000..57a3267
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of Mustache.php.
+ *
+ * (c) 2010-2017 Justin Hileman
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Whitespace test for tag names.
+ *
+ * Per http://github.com/janl/mustache.js/issues/issue/34/#comment_244396
+ * tags should strip leading and trailing whitespace in key names.
+ *
+ * `{{> tag }}` and `{{> tag}}` and `{{>tag}}` should all be equivalent.
+ */
+class Whitespace
+{
+    public $foo = 'alpha';
+
+    public $bar = 'beta';
+
+    public function baz()
+    {
+        return 'gamma';
+    }
+
+    public function qux()
+    {
+        return array(
+            array('key with space' => 'A'),
+            array('key with space' => 'B'),
+            array('key with space' => 'C'),
+            array('key with space' => 'D'),
+            array('key with space' => 'E'),
+            array('key with space' => 'F'),
+            array('key with space' => 'G'),
+        );
+    }
+}
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/partials/alphabet.mustache
new file mode 100644 (file)
index 0000000..d281c41
--- /dev/null
@@ -0,0 +1 @@
+ * {{.}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.mustache
new file mode 100644 (file)
index 0000000..0b3ba00
--- /dev/null
@@ -0,0 +1,10 @@
+{{^ inverted section test }}
+These are some things:
+{{/inverted section test       }}
+* {{  foo  }}
+* {{ bar}}
+* {{    baz    }}
+{{#  qux                }}
+* {{ key with space }}
+{{/ qux                }}
+{{#qux}}.{{/qux}}
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt b/admin/lib/vendor/mustache/mustache/test/fixtures/examples/whitespace/whitespace.txt
new file mode 100644 (file)
index 0000000..5226c69
--- /dev/null
@@ -0,0 +1,12 @@
+These are some things:
+* alpha
+* beta
+* gamma
+* A
+* B
+* C
+* D
+* E
+* F
+* G
+.......
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/templates/alpha.ms b/admin/lib/vendor/mustache/mustache/test/fixtures/templates/alpha.ms
new file mode 100644 (file)
index 0000000..3845830
--- /dev/null
@@ -0,0 +1 @@
+alpha contents
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/templates/beta.ms b/admin/lib/vendor/mustache/mustache/test/fixtures/templates/beta.ms
new file mode 100644 (file)
index 0000000..a083dfe
--- /dev/null
@@ -0,0 +1 @@
+beta contents
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/templates/one.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/templates/one.mustache
new file mode 100644 (file)
index 0000000..f83ad09
--- /dev/null
@@ -0,0 +1 @@
+one contents
\ No newline at end of file
diff --git a/admin/lib/vendor/mustache/mustache/test/fixtures/templates/two.mustache b/admin/lib/vendor/mustache/mustache/test/fixtures/templates/two.mustache
new file mode 100644 (file)
index 0000000..dacc40e
--- /dev/null
@@ -0,0 +1 @@
+two contents
\ No newline at end of file
diff --git a/admin/lib/vendor/phpmailer/phpmailer/COMMITMENT b/admin/lib/vendor/phpmailer/phpmailer/COMMITMENT
new file mode 100644 (file)
index 0000000..a687e0d
--- /dev/null
@@ -0,0 +1,46 @@
+GPL Cooperation Commitment
+Version 1.0
+
+Before filing or continuing to prosecute any legal proceeding or claim
+(other than a Defensive Action) arising from termination of a Covered
+License, we commit to extend to the person or entity ('you') accused
+of violating the Covered License the following provisions regarding
+cure and reinstatement, taken from GPL version 3. As used here, the
+term 'this License' refers to the specific Covered License being
+enforced.
+
+    However, if you cease all violation of this License, then your
+    license from a particular copyright holder is reinstated (a)
+    provisionally, unless and until the copyright holder explicitly
+    and finally terminates your license, and (b) permanently, if the
+    copyright holder fails to notify you of the violation by some
+    reasonable means prior to 60 days after the cessation.
+
+    Moreover, your license from a particular copyright holder is
+    reinstated permanently if the copyright holder notifies you of the
+    violation by some reasonable means, this is the first time you
+    have received notice of violation of this License (for any work)
+    from that copyright holder, and you cure the violation prior to 30
+    days after your receipt of the notice.
+
+We intend this Commitment to be irrevocable, and binding and
+enforceable against us and assignees of or successors to our
+copyrights.
+
+Definitions
+
+'Covered License' means the GNU General Public License, version 2
+(GPLv2), the GNU Lesser General Public License, version 2.1
+(LGPLv2.1), or the GNU Library General Public License, version 2
+(LGPLv2), all as published by the Free Software Foundation.
+
+'Defensive Action' means a legal proceeding or claim that We bring
+against you in response to a prior proceeding or claim initiated by
+you or your affiliate.
+
+'We' means each contributor to this repository as of the date of
+inclusion of this file, including subsidiaries of a corporate
+contributor.
+
+This work is available under a Creative Commons Attribution-ShareAlike
+4.0 International license (https://creativecommons.org/licenses/by-sa/4.0/).
@@ -1,5 +1,5 @@
-      GNU LESSER GENERAL PUBLIC LICENSE
-           Version 2.1, February 1999
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
 
  Copyright (C) 1991, 1999 Free Software Foundation, Inc.
  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
  Copyright (C) 1991, 1999 Free Software Foundation, Inc.
  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
@@ -10,7 +10,7 @@
  as the successor of the GNU Library Public License, version 2, hence
  the version number 2.1.]
 
  as the successor of the GNU Library Public License, version 2, hence
  the version number 2.1.]
 
-          Preamble
+                            Preamble
 
   The licenses for most software are designed to take away your
 freedom to share and change it.  By contrast, the GNU General Public
 
   The licenses for most software are designed to take away your
 freedom to share and change it.  By contrast, the GNU General Public
@@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know
 that what they have is not the original version, so that the original
 author's reputation will not be affected by problems that might be
 introduced by others.
 that what they have is not the original version, so that the original
 author's reputation will not be affected by problems that might be
 introduced by others.
-
+\f
   Finally, software patents pose a constant threat to the existence of
 any free program.  We wish to make sure that a company cannot
 effectively restrict the users of a free program by obtaining a
   Finally, software patents pose a constant threat to the existence of
 any free program.  We wish to make sure that a company cannot
 effectively restrict the users of a free program by obtaining a
@@ -111,8 +111,8 @@ modification follow.  Pay close attention to the difference between a
 "work based on the library" and a "work that uses the library".  The
 former contains code derived from the library, whereas the latter must
 be combined with the library in order to run.
 "work based on the library" and a "work that uses the library".  The
 former contains code derived from the library, whereas the latter must
 be combined with the library in order to run.
-
-      GNU LESSER GENERAL PUBLIC LICENSE
+\f
+                  GNU LESSER GENERAL PUBLIC LICENSE
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
   0. This License Agreement applies to any software library or other
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
   0. This License Agreement applies to any software library or other
@@ -146,7 +146,7 @@ such a program is covered only if its contents constitute a work based
 on the Library (independent of the use of the Library in a tool for
 writing it).  Whether that is true depends on what the Library does
 and what the program that uses the Library does.
 on the Library (independent of the use of the Library in a tool for
 writing it).  Whether that is true depends on what the Library does
 and what the program that uses the Library does.
-  
+
   1. You may copy and distribute verbatim copies of the Library's
 complete source code as you receive it, in any medium, provided that
 you conspicuously and appropriately publish on each copy an
   1. You may copy and distribute verbatim copies of the Library's
 complete source code as you receive it, in any medium, provided that
 you conspicuously and appropriately publish on each copy an
@@ -158,7 +158,7 @@ Library.
   You may charge a fee for the physical act of transferring a copy,
 and you may at your option offer warranty protection in exchange for a
 fee.
   You may charge a fee for the physical act of transferring a copy,
 and you may at your option offer warranty protection in exchange for a
 fee.
-
+\f
   2. You may modify your copy or copies of the Library or any portion
 of it, thus forming a work based on the Library, and copy and
 distribute such modifications or work under the terms of Section 1
   2. You may modify your copy or copies of the Library or any portion
 of it, thus forming a work based on the Library, and copy and
 distribute such modifications or work under the terms of Section 1
@@ -216,7 +216,7 @@ instead of to this License.  (If a newer version than version 2 of the
 ordinary GNU General Public License has appeared, then you can specify
 that version instead if you wish.)  Do not make any other change in
 these notices.
 ordinary GNU General Public License has appeared, then you can specify
 that version instead if you wish.)  Do not make any other change in
 these notices.
-
+\f
   Once this change is made in a given copy, it is irreversible for
 that copy, so the ordinary GNU General Public License applies to all
 subsequent copies and derivative works made from that copy.
   Once this change is made in a given copy, it is irreversible for
 that copy, so the ordinary GNU General Public License applies to all
 subsequent copies and derivative works made from that copy.
@@ -267,7 +267,7 @@ Library will still fall under Section 6.)
 distribute the object code for the work under the terms of Section 6.
 Any executables containing that work also fall under Section 6,
 whether or not they are linked directly with the Library itself.
 distribute the object code for the work under the terms of Section 6.
 Any executables containing that work also fall under Section 6,
 whether or not they are linked directly with the Library itself.
-
+\f
   6. As an exception to the Sections above, you may also combine or
 link a "work that uses the Library" with the Library to produce a
 work containing portions of the Library, and distribute that work
   6. As an exception to the Sections above, you may also combine or
 link a "work that uses the Library" with the Library to produce a
 work containing portions of the Library, and distribute that work
@@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
 accompany the operating system.  Such a contradiction means you cannot
 use both them and the Library together in an executable that you
 distribute.
 accompany the operating system.  Such a contradiction means you cannot
 use both them and the Library together in an executable that you
 distribute.
-
+\f
   7. You may place library facilities that are a work based on the
 Library side-by-side in a single library together with other library
 facilities not covered by this License, and distribute such a combined
   7. You may place library facilities that are a work based on the
 Library side-by-side in a single library together with other library
 facilities not covered by this License, and distribute such a combined
@@ -370,7 +370,7 @@ subject to these terms and conditions.  You may not impose any further
 restrictions on the recipients' exercise of the rights granted herein.
 You are not responsible for enforcing compliance by third parties with
 this License.
 restrictions on the recipients' exercise of the rights granted herein.
 You are not responsible for enforcing compliance by third parties with
 this License.
-
+\f
   11. If, as a consequence of a court judgment or allegation of patent
 infringement or for any other reason (not limited to patent issues),
 conditions are imposed on you (whether by court order, agreement or
   11. If, as a consequence of a court judgment or allegation of patent
 infringement or for any other reason (not limited to patent issues),
 conditions are imposed on you (whether by court order, agreement or
@@ -422,7 +422,7 @@ conditions either of that version or of any later version published by
 the Free Software Foundation.  If the Library does not specify a
 license version number, you may choose any version ever published by
 the Free Software Foundation.
 the Free Software Foundation.  If the Library does not specify a
 license version number, you may choose any version ever published by
 the Free Software Foundation.
-
+\f
   14. If you wish to incorporate parts of the Library into other free
 programs whose distribution conditions are incompatible with these,
 write to the author to ask for permission.  For software which is
   14. If you wish to incorporate parts of the Library into other free
 programs whose distribution conditions are incompatible with these,
 write to the author to ask for permission.  For software which is
@@ -432,7 +432,7 @@ decision will be guided by the two goals of preserving the free status
 of all derivatives of our free software and of promoting the sharing
 and reuse of software generally.
 
 of all derivatives of our free software and of promoting the sharing
 and reuse of software generally.
 
-          NO WARRANTY
+                            NO WARRANTY
 
   15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
 WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
 
   15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
 WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
@@ -455,8 +455,8 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 DAMAGES.
 
 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 DAMAGES.
 
-         END OF TERMS AND CONDITIONS
-
+                     END OF TERMS AND CONDITIONS
+\f
            How to Apply These Terms to Your New Libraries
 
   If you develop a new library, and you want it to be of the greatest
            How to Apply These Terms to Your New Libraries
 
   If you develop a new library, and you want it to be of the greatest
@@ -499,6 +499,4 @@ necessary.  Here is a sample; alter the names:
   <signature of Ty Coon>, 1 April 1990
   Ty Coon, President of Vice
 
   <signature of Ty Coon>, 1 April 1990
   Ty Coon, President of Vice
 
-That's all there is to it!
-
-
+That's all there is to it!
\ No newline at end of file
diff --git a/admin/lib/vendor/phpmailer/phpmailer/README.md b/admin/lib/vendor/phpmailer/phpmailer/README.md
new file mode 100644 (file)
index 0000000..c287e30
--- /dev/null
@@ -0,0 +1,221 @@
+![PHPMailer](https://raw.github.com/PHPMailer/PHPMailer/master/examples/images/phpmailer.png)
+
+# PHPMailer - A full-featured email creation and transfer class for PHP
+
+Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](https://travis-ci.org/PHPMailer/PHPMailer)
+[![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/badges/quality-score.png?s=3758e21d279becdf847a557a56a3ed16dfec9d5d)](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/)
+[![Code Coverage](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/badges/coverage.png?s=3fe6ca5fe8cd2cdf96285756e42932f7ca256962)](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/)
+
+[![Latest Stable Version](https://poser.pugx.org/phpmailer/phpmailer/v/stable.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![Total Downloads](https://poser.pugx.org/phpmailer/phpmailer/downloads)](https://packagist.org/packages/phpmailer/phpmailer) [![Latest Unstable Version](https://poser.pugx.org/phpmailer/phpmailer/v/unstable.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![License](https://poser.pugx.org/phpmailer/phpmailer/license.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![API Docs](https://github.com/phpmailer/phpmailer/workflows/Docs/badge.svg)](http://phpmailer.github.io/PHPMailer/)
+
+## Class Features
+- Probably the world's most popular code for sending email from PHP!
+- Used by many open-source projects: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more
+- Integrated SMTP support - send without a local mail server
+- Send emails with multiple To, CC, BCC and Reply-to addresses
+- Multipart/alternative emails for mail clients that do not read HTML email
+- Add attachments, including inline
+- Support for UTF-8 content and 8bit, base64, binary, and quoted-printable encodings
+- SMTP authentication with LOGIN, PLAIN, CRAM-MD5, and XOAUTH2 mechanisms over SSL and SMTP+STARTTLS transports
+- Validates email addresses automatically
+- Protect against header injection attacks
+- Error messages in over 50 languages!
+- DKIM and S/MIME signing support
+- Compatible with PHP 5.5 and later
+- Namespaced to prevent name clashes
+- Much more!
+
+## Why you might need it
+Many PHP developers need to send email from their code. The only PHP function that supports this is [`mail()`](https://www.php.net/manual/en/function.mail.php). However, it does not provide any assistance for making use of popular features such as encryption, authentication, HTML messages, and attachments.
+
+Formatting email correctly is surprisingly difficult. There are myriad overlapping RFCs, requiring tight adherence to horribly complicated formatting and encoding rules – the vast majority of code that you'll find online that uses the `mail()` function directly is just plain wrong!
+*Please* don't be tempted to do it yourself – if you don't use PHPMailer, there are many other excellent libraries that you should look at before rolling your own. Try [SwiftMailer](https://swiftmailer.symfony.com/), [Zend/Mail](https://zendframework.github.io/zend-mail/), [ZetaComponents](https://github.com/zetacomponents/Mail) etc.
+
+The PHP `mail()` function usually sends via a local mail server, typically fronted by a `sendmail` binary on Linux, BSD, and macOS platforms, however, Windows usually doesn't include a local mail server; PHPMailer's integrated SMTP implementation allows email sending on Windows platforms without a local mail server.
+
+## License
+This software is distributed under the [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html) license, along with the [GPL Cooperation Commitment](https://gplcc.github.io/gplcc/). Please read LICENSE for information on the software availability and distribution.
+
+## Installation & loading
+PHPMailer is available on [Packagist](https://packagist.org/packages/phpmailer/phpmailer) (using semantic versioning), and installation via [Composer](https://getcomposer.org) is the recommended way to install PHPMailer. Just add this line to your `composer.json` file:
+
+```json
+"phpmailer/phpmailer": "~6.1"
+```
+
+or run
+
+```sh
+composer require phpmailer/phpmailer
+```
+
+Note that the `vendor` folder and the `vendor/autoload.php` script are generated by Composer; they are not part of PHPMailer.
+
+If you want to use the Gmail XOAUTH2 authentication class, you will also need to add a dependency on the `league/oauth2-client` package in your `composer.json`.
+
+Alternatively, if you're not using Composer, copy the contents of the PHPMailer folder into one of the `include_path` directories specified in your PHP configuration and load each class file manually:
+
+```php
+<?php
+use PHPMailer\PHPMailer\PHPMailer;
+use PHPMailer\PHPMailer\Exception;
+
+require 'path/to/PHPMailer/src/Exception.php';
+require 'path/to/PHPMailer/src/PHPMailer.php';
+require 'path/to/PHPMailer/src/SMTP.php';
+```
+
+If you're not using the `SMTP` class explicitly (you're probably not), you don't need a `use` line for the SMTP class.
+
+If you don't speak git or just want a tarball, click the 'zip' button on the right of the project page in GitHub, though note that docs and examples are not included in the tarball.
+
+## Legacy versions
+PHPMailer 5.2 (which is compatible with PHP 5.0 - 7.0) is no longer being supported, even for security updates. You will find the latest version of 5.2 in the [5.2-stable branch](https://github.com/PHPMailer/PHPMailer/tree/5.2-stable). If you're using PHP 5.5 or later (which you should be), switch to the 6.x releases.
+
+### Upgrading from 5.2
+The biggest changes are that source files are now in the `src/` folder, and PHPMailer now declares the namespace `PHPMailer\PHPMailer`. This has several important effects – [read the upgrade guide](https://github.com/PHPMailer/PHPMailer/tree/master/UPGRADING.md) for more details.
+
+### Minimal installation
+While installing the entire package manually or with Composer is simple, convenient, and reliable, you may want to include only vital files in your project. At the very least you will need [src/PHPMailer.php](https://github.com/PHPMailer/PHPMailer/tree/master/src/PHPMailer.php). If you're using SMTP, you'll need [src/SMTP.php](https://github.com/PHPMailer/PHPMailer/tree/master/src/SMTP.php), and if you're using POP-before SMTP, you'll need [src/POP3.php](https://github.com/PHPMailer/PHPMailer/tree/master/src/POP3.php). You can skip the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder if you're not showing errors to users and can make do with English-only errors. If you're using XOAUTH2 you will need [src/OAuth.php](https://github.com/PHPMailer/PHPMailer/tree/master/src/OAuth.php) as well as the Composer dependencies for the services you wish to authenticate with. Really, it's much easier to use Composer!
+
+## A Simple Example
+
+```php
+<?php
+// Import PHPMailer classes into the global namespace
+// These must be at the top of your script, not inside a function
+use PHPMailer\PHPMailer\PHPMailer;
+use PHPMailer\PHPMailer\SMTP;
+use PHPMailer\PHPMailer\Exception;
+
+// Load Composer's autoloader
+require 'vendor/autoload.php';
+
+// Instantiation and passing `true` enables exceptions
+$mail = new PHPMailer(true);
+
+try {
+    //Server settings
+    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      // Enable verbose debug output
+    $mail->isSMTP();                                            // Send using SMTP
+    $mail->Host       = 'smtp1.example.com';                    // Set the SMTP server to send through
+    $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
+    $mail->Username   = 'user@example.com';                     // SMTP username
+    $mail->Password   = 'secret';                               // SMTP password
+    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
+    $mail->Port       = 587;                                    // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
+
+    //Recipients
+    $mail->setFrom('from@example.com', 'Mailer');
+    $mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
+    $mail->addAddress('ellen@example.com');               // Name is optional
+    $mail->addReplyTo('info@example.com', 'Information');
+    $mail->addCC('cc@example.com');
+    $mail->addBCC('bcc@example.com');
+
+    // Attachments
+    $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
+    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
+
+    // Content
+    $mail->isHTML(true);                                  // Set email format to HTML
+    $mail->Subject = 'Here is the subject';
+    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
+    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
+
+    $mail->send();
+    echo 'Message has been sent';
+} catch (Exception $e) {
+    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
+}
+```
+
+You'll find plenty more to play with in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder.
+
+If you are re-using the instance (e.g. when sending to a mailing list), you may need to clear the recipient list to avoid sending duplicate messages. See [the mailing list example](https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps) for further guidance.
+
+That's it. You should now be ready to use PHPMailer!
+
+## Localization
+PHPMailer defaults to English, but in the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder you'll find many translations for PHPMailer error messages that you may encounter. Their filenames contain [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the translations, for example `fr` for French. To specify a language, you need to tell PHPMailer which one to use, like this:
+
+```php
+// To load the French version
+$mail->setLanguage('fr', '/optional/path/to/language/directory/');
+```
+
+We welcome corrections and new languages - if you're looking for corrections to do, run the [PHPMailerLangTest.php](https://github.com/PHPMailer/PHPMailer/tree/master/test/PHPMailerLangTest.php) script in the tests folder and it will show any missing translations.
+
+## Documentation
+Start reading at the [GitHub wiki](https://github.com/PHPMailer/PHPMailer/wiki). If you're having trouble, this should be the first place you look as it's the most frequently updated.
+
+Examples of how to use PHPMailer for common scenarios can be found in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder. If you're looking for a good starting point, we recommend you start with [the Gmail example](https://github.com/PHPMailer/PHPMailer/tree/master/examples/gmail.phps).
+
+Note that in order to reduce PHPMailer's deployed code footprint, the examples are no longer included if you load PHPMailer via Composer or via [GitHub's zip file download](https://github.com/PHPMailer/PHPMailer/archive/master.zip), so you'll need to either clone the git repository or use the above links to get to the examples directly.
+
+Complete generated API documentation is [available online](http://phpmailer.github.io/PHPMailer/).
+
+You can generate complete API-level documentation by running `phpdoc` in the top-level folder, and documentation will appear in the `docs` folder, though you'll need to have [PHPDocumentor](http://www.phpdoc.org) installed. You may find [the unit tests](https://github.com/PHPMailer/PHPMailer/blob/master/test/PHPMailerTest.php) a good source of how to do various operations such as encryption.
+
+If the documentation doesn't cover what you need, search the [many questions on Stack Overflow](http://stackoverflow.com/questions/tagged/phpmailer), and before you ask a question about "SMTP Error: Could not connect to SMTP host.", [read the troubleshooting guide](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting).
+
+## Tests
+There is a PHPUnit test script in the [test](https://github.com/PHPMailer/PHPMailer/tree/master/test/) folder. PHPMailer uses PHPUnit 4.8 - we would use 5.x but we need to run on PHP 5.5.
+
+Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](https://travis-ci.org/PHPMailer/PHPMailer)
+
+If this isn't passing, is there something you can do to help?
+
+## Security
+Please disclose any vulnerabilities found responsibly - report any security problems found to the maintainers privately.
+
+PHPMailer versions prior to 5.2.22 (released January 9th 2017) have a local file disclosure vulnerability, [CVE-2017-5223](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-5223). If content passed into `msgHTML()` is sourced from unfiltered user input, relative paths can map to absolute local file paths and added as attachments. Also note that `addAttachment` (just like `file_get_contents`, `passthru`, `unlink`, etc) should not be passed user-sourced params either! Reported by Yongxiang Li of Asiasecurity.
+
+PHPMailer versions prior to 5.2.20 (released December 28th 2016) are vulnerable to [CVE-2016-10045](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10045) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html), and patched by Paul Buonopane (@Zenexer).
+
+PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a critical remote code execution vulnerability, responsibly reported by [Dawid Golunski](http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html).
+
+See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) for more detail on security issues.
+
+## Contributing
+Please submit bug reports, suggestions and pull requests to the [GitHub issue tracker](https://github.com/PHPMailer/PHPMailer/issues).
+
+We're particularly interested in fixing edge-cases, expanding test coverage and updating translations.
+
+If you found a mistake in the docs, or want to add something, go ahead and amend the wiki - anyone can edit it.
+
+If you have git clones from prior to the move to the PHPMailer GitHub organisation, you'll need to update any remote URLs referencing the old GitHub location with a command like this from within your clone:
+
+```sh
+git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git
+```
+
+Please *don't* use the SourceForge or Google Code projects any more; they are obsolete and no longer maintained.
+
+## Sponsorship
+Development time and resources for PHPMailer are provided by [Smartmessages.net](https://info.smartmessages.net/), a powerful email marketing system.
+
+<a href="https://info.smartmessages.net/"><img src="https://www.smartmessages.net/img/smartmessages-logo.svg" width="250" height="28" alt="Smartmessages email marketing"></a>
+
+Other contributions are gladly received, whether in beer 🍺, T-shirts 👕, Amazon wishlist raids, or cold, hard cash 💰. If you'd like to donate to say "thank you" to maintainers or contributors, please contact them through individual profile pages via [the contributors page](https://github.com/PHPMailer/PHPMailer/graphs/contributors).
+
+## Changelog
+See [changelog](changelog.md).
+
+## History
+- PHPMailer was originally written in 2001 by Brent R. Matzelle as a [SourceForge project](http://sourceforge.net/projects/phpmailer/).
+- Marcus Bointon (coolbru on SF) and Andy Prevost (codeworxtech) took over the project in 2004.
+- Became an Apache incubator project on Google Code in 2010, managed by Jim Jagielski.
+- Marcus created his fork on [GitHub](https://github.com/Synchro/PHPMailer) in 2008.
+- Jim and Marcus decide to join forces and use GitHub as the canonical and official repo for PHPMailer in 2013.
+- PHPMailer moves to the [PHPMailer organisation](https://github.com/PHPMailer) on GitHub in 2013.
+
+### What's changed since moving from SourceForge?
+- Official successor to the SourceForge and Google Code projects.
+- Test suite.
+- Continuous integration with Travis-CI.
+- Composer support.
+- Public development.
+- Additional languages and language strings.
+- CRAM-MD5 authentication support.
+- Preserves full repo history of authors, commits and branches from the original SourceForge project.
diff --git a/admin/lib/vendor/phpmailer/phpmailer/SECURITY.md b/admin/lib/vendor/phpmailer/phpmailer/SECURITY.md
new file mode 100644 (file)
index 0000000..fc3e61c
--- /dev/null
@@ -0,0 +1,30 @@
+# Security notices relating to PHPMailer
+
+Please disclose any vulnerabilities found responsibly - report any security problems found to the maintainers privately.
+
+PHPMailer versions 6.1.5 and earlier contain an output escaping bug that occurs in `Content-Type` and `Content-Disposition` when filenames passed into `addAttachment` and other methods that accept attachment names contain double quote characters, in contravention of RFC822 3.4.1. No specific vulnerability has been found relating to this, but it could allow file attachments to bypass attachment filters that are based on matching filename extensions. Recorded as [CVE-2020-13625](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-13625). Reported by Elar Lang of Clarified Security.
+
+PHPMailer versions prior to 6.0.6 and 5.2.27 are vulnerable to an object injection attack by passing `phar://` paths into `addAttachment()` and other functions that may receive unfiltered local paths, possibly leading to RCE. Recorded as [CVE-2018-19296](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2018-19296). See [this article](https://knasmueller.net/5-answers-about-php-phar-exploitation) for more info on this type of vulnerability. Mitigated by blocking the use of paths containing URL-protocol style prefixes such as `phar://`. Reported by Sehun Oh of cyberone.kr.
+
+PHPMailer versions prior to 5.2.24 (released July 26th 2017) have an XSS vulnerability in one of the code examples, [CVE-2017-11503](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-11503). The `code_generator.phps` example did not filter user input prior to output. This file is distributed with a `.phps` extension, so it it not normally executable unless it is explicitly renamed, and the file is not included when PHPMailer is loaded through composer, so it is safe by default. There was also an undisclosed potential XSS vulnerability in the default exception handler (unused by default). Patches for both issues kindly provided by Patrick Monnerat of the Fedora Project.
+
+PHPMailer versions prior to 5.2.22 (released January 9th 2017) have a local file disclosure vulnerability, [CVE-2017-5223](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-5223). If content passed into `msgHTML()` is sourced from unfiltered user input, relative paths can map to absolute local file paths and added as attachments. Also note that `addAttachment` (just like `file_get_contents`, `passthru`, `unlink`, etc) should not be passed user-sourced params either! Reported by Yongxiang Li of Asiasecurity.
+
+PHPMailer versions prior to 5.2.20 (released December 28th 2016) are vulnerable to [CVE-2016-10045](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10045) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html), and patched by Paul Buonopane (@Zenexer).
+
+PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html).
+
+PHPMailer versions prior to 5.2.14 (released November 2015) are vulnerable to [CVE-2015-8476](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8476) an SMTP CRLF injection bug permitting arbitrary message sending.
+
+PHPMailer versions prior to 5.2.10 (released May 2015) are vulnerable to [CVE-2008-5619](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2008-5619), a remote code execution vulnerability in the bundled html2text library. This file was removed in 5.2.10, so if you are using a version prior to that and make use of the html2text function, it's vitally important that you upgrade and remove this file.
+
+PHPMailer versions prior to 2.0.7 and 2.2.1 are vulnerable to [CVE-2012-0796](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-0796), an email header injection attack.
+
+Joomla 1.6.0 uses PHPMailer in an unsafe way, allowing it to reveal local file paths, reported in [CVE-2011-3747](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-3747).
+
+PHPMailer didn't sanitise the `$lang_path` parameter in `SetLanguage`. This wasn't a problem in itself, but some apps (PHPClassifieds, ATutor) also failed to sanitise user-provided parameters passed to it, permitting semi-arbitrary local file inclusion, reported in [CVE-2010-4914](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-4914), [CVE-2007-2021](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-2021) and [CVE-2006-5734](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2006-5734).
+
+PHPMailer 1.7.2 and earlier contained a possible DDoS vulnerability reported in [CVE-2005-1807](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-1807).
+
+PHPMailer 1.7 and earlier (June 2003) have a possible vulnerability in the `SendmailSend` method where shell commands may not be sanitised. Reported in [CVE-2007-3215](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-3215).
+
diff --git a/admin/lib/vendor/phpmailer/phpmailer/VERSION b/admin/lib/vendor/phpmailer/phpmailer/VERSION
new file mode 100644 (file)
index 0000000..aeee9f7
--- /dev/null
@@ -0,0 +1 @@
+6.1.8
\ No newline at end of file
diff --git a/admin/lib/vendor/phpmailer/phpmailer/composer.json b/admin/lib/vendor/phpmailer/phpmailer/composer.json
new file mode 100644 (file)
index 0000000..95a8991
--- /dev/null
@@ -0,0 +1,58 @@
+{
+    "name": "phpmailer/phpmailer",
+    "type": "library",
+    "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
+    "authors": [
+        {
+            "name": "Marcus Bointon",
+            "email": "phpmailer@synchromedia.co.uk"
+        },
+        {
+            "name": "Jim Jagielski",
+            "email": "jimjag@gmail.com"
+        },
+        {
+            "name": "Andy Prevost",
+            "email": "codeworxtech@users.sourceforge.net"
+        },
+        {
+            "name": "Brent R. Matzelle"
+        }
+    ],
+    "funding": [
+        {
+            "url": "https://github.com/synchro",
+            "type": "github"
+        }
+    ],
+    "require": {
+        "php": ">=5.5.0",
+        "ext-ctype": "*",
+        "ext-filter": "*",
+        "ext-hash": "*"
+    },
+    "require-dev": {
+        "friendsofphp/php-cs-fixer": "^2.2",
+        "phpunit/phpunit": "^4.8 || ^5.7",
+        "doctrine/annotations": "^1.2"
+    },
+    "suggest": {
+        "psr/log": "For optional PSR-3 debug logging",
+        "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
+        "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
+        "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
+        "ext-mbstring": "Needed to send email in multibyte encoding charset",
+        "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
+    },
+    "autoload": {
+        "psr-4": {
+            "PHPMailer\\PHPMailer\\": "src/"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "PHPMailer\\Test\\": "test/"
+        }
+    },
+    "license": "LGPL-2.1-only"
+}
diff --git a/admin/lib/vendor/phpmailer/phpmailer/get_oauth_token.php b/admin/lib/vendor/phpmailer/phpmailer/get_oauth_token.php
new file mode 100644 (file)
index 0000000..8335883
--- /dev/null
@@ -0,0 +1,144 @@
+<?php
+/**
+ * PHPMailer - PHP email creation and transport class.
+ * PHP Version 5.5
+ * @package PHPMailer
+ * @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
+ * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
+ * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author Brent R. Matzelle (original founder)
+ * @copyright 2012 - 2020 Marcus Bointon
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ * @note This program is distributed in the hope that it will be useful - WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.
+ */
+/**
+ * Get an OAuth2 token from an OAuth2 provider.
+ * * Install this script on your server so that it's accessible
+ * as [https/http]://<yourdomain>/<folder>/get_oauth_token.php
+ * e.g.: http://localhost/phpmailer/get_oauth_token.php
+ * * Ensure dependencies are installed with 'composer install'
+ * * Set up an app in your Google/Yahoo/Microsoft account
+ * * Set the script address as the app's redirect URL
+ * If no refresh token is obtained when running this file,
+ * revoke access to your app and run the script again.
+ */
+
+namespace PHPMailer\PHPMailer;
+
+/**
+ * Aliases for League Provider Classes
+ * Make sure you have added these to your composer.json and run `composer install`
+ * Plenty to choose from here:
+ * @see http://oauth2-client.thephpleague.com/providers/thirdparty/
+ */
+// @see https://github.com/thephpleague/oauth2-google
+use League\OAuth2\Client\Provider\Google;
+// @see https://packagist.org/packages/hayageek/oauth2-yahoo
+use Hayageek\OAuth2\Client\Provider\Yahoo;
+// @see https://github.com/stevenmaguire/oauth2-microsoft
+use Stevenmaguire\OAuth2\Client\Provider\Microsoft;
+
+if (!isset($_GET['code']) && !isset($_GET['provider'])) {
+?>
+<html>
+<body>Select Provider:<br/>
+<a href='?provider=Google'>Google</a><br/>
+<a href='?provider=Yahoo'>Yahoo</a><br/>
+<a href='?provider=Microsoft'>Microsoft/Outlook/Hotmail/Live/Office365</a><br/>
+</body>
+</html>
+<?php
+exit;
+}
+
+require 'vendor/autoload.php';
+
+session_start();
+
+$providerName = '';
+
+if (array_key_exists('provider', $_GET)) {
+    $providerName = $_GET['provider'];
+    $_SESSION['provider'] = $providerName;
+} elseif (array_key_exists('provider', $_SESSION)) {
+    $providerName = $_SESSION['provider'];
+}
+if (!in_array($providerName, ['Google', 'Microsoft', 'Yahoo'])) {
+    exit('Only Google, Microsoft and Yahoo OAuth2 providers are currently supported in this script.');
+}
+
+//These details are obtained by setting up an app in the Google developer console,
+//or whichever provider you're using.
+$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
+$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
+
+//If this automatic URL doesn't work, set it yourself manually to the URL of this script
+$redirectUri = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
+//$redirectUri = 'http://localhost/PHPMailer/redirect';
+
+$params = [
+    'clientId' => $clientId,
+    'clientSecret' => $clientSecret,
+    'redirectUri' => $redirectUri,
+    'accessType' => 'offline'
+];
+
+$options = [];
+$provider = null;
+
+switch ($providerName) {
+    case 'Google':
+        $provider = new Google($params);
+        $options = [
+            'scope' => [
+                'https://mail.google.com/'
+            ]
+        ];
+        break;
+    case 'Yahoo':
+        $provider = new Yahoo($params);
+        break;
+    case 'Microsoft':
+        $provider = new Microsoft($params);
+        $options = [
+            'scope' => [
+                'wl.imap',
+                'wl.offline_access'
+            ]
+        ];
+        break;
+}
+
+if (null === $provider) {
+    exit('Provider missing');
+}
+
+if (!isset($_GET['code'])) {
+    // If we don't have an authorization code then get one
+    $authUrl = $provider->getAuthorizationUrl($options);
+    $_SESSION['oauth2state'] = $provider->getState();
+    header('Location: ' . $authUrl);
+    exit;
+// Check given state against previously stored one to mitigate CSRF attack
+} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
+    unset($_SESSION['oauth2state']);
+    unset($_SESSION['provider']);
+    exit('Invalid state');
+} else {
+    unset($_SESSION['provider']);
+    // Try to get an access token (using the authorization code grant)
+    $token = $provider->getAccessToken(
+        'authorization_code',
+        [
+            'code' => $_GET['code']
+        ]
+    );
+    // Use this to interact with an API on the users behalf
+    // Use this to get a new access token if the old one expires
+    echo 'Refresh Token: ', $token->getRefreshToken();
+}
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php
new file mode 100644 (file)
index 0000000..3c42d78
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Afrikaans PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP-fout: kon nie geverifieer word nie.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP-fout: kon nie aan SMTP-verbind nie.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP-fout: data nie aanvaar nie.';
+$PHPMAILER_LANG['empty_message']        = 'Boodskapliggaam leeg.';
+$PHPMAILER_LANG['encoding']             = 'Onbekende kodering: ';
+$PHPMAILER_LANG['execute']              = 'Kon nie uitvoer nie: ';
+$PHPMAILER_LANG['file_access']          = 'Kon nie lêer oopmaak nie: ';
+$PHPMAILER_LANG['file_open']            = 'Lêerfout: Kon nie lêer oopmaak nie: ';
+$PHPMAILER_LANG['from_failed']          = 'Die volgende Van adres misluk: ';
+$PHPMAILER_LANG['instantiate']          = 'Kon nie posfunksie instansieer nie.';
+$PHPMAILER_LANG['invalid_address']      = 'Ongeldige adres: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer word nie ondersteun nie.';
+$PHPMAILER_LANG['provide_address']      = 'U moet ten minste een ontvanger e-pos adres verskaf.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP-fout: Die volgende ontvangers het misluk: ';
+$PHPMAILER_LANG['signing']              = 'Ondertekening Fout: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP-verbinding () misluk.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP-bediener fout: ';
+$PHPMAILER_LANG['variable_set']         = 'Kan nie veranderlike instel of herstel nie: ';
+$PHPMAILER_LANG['extension_missing']    = 'Uitbreiding ontbreek: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php
new file mode 100644 (file)
index 0000000..865d0b7
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Arabic PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author bahjat al mostafa <bahjat983@hotmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'خطأ SMTP : لا يمكن تأكيد الهوية.';
+$PHPMAILER_LANG['connect_host']         = 'خطأ SMTP: لا يمكن الاتصال بالخادم SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'خطأ SMTP: لم يتم قبول المعلومات .';
+$PHPMAILER_LANG['empty_message']        = 'نص الرسالة فارغ';
+$PHPMAILER_LANG['encoding']             = 'ترميز غير معروف: ';
+$PHPMAILER_LANG['execute']              = 'لا يمكن تنفيذ : ';
+$PHPMAILER_LANG['file_access']          = 'لا يمكن الوصول للملف: ';
+$PHPMAILER_LANG['file_open']            = 'خطأ في الملف: لا يمكن فتحه: ';
+$PHPMAILER_LANG['from_failed']          = 'خطأ على مستوى عنوان المرسل : ';
+$PHPMAILER_LANG['instantiate']          = 'لا يمكن توفير خدمة البريد.';
+$PHPMAILER_LANG['invalid_address']      = 'الإرسال غير ممكن لأن عنوان البريد الإلكتروني غير صالح: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' برنامج الإرسال غير مدعوم.';
+$PHPMAILER_LANG['provide_address']      = 'يجب توفير عنوان البريد الإلكتروني لمستلم واحد على الأقل.';
+$PHPMAILER_LANG['recipients_failed']    = 'خطأ SMTP: الأخطاء التالية ' .
+                                          'فشل في الارسال لكل من : ';
+$PHPMAILER_LANG['signing']              = 'خطأ في التوقيع: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() غير ممكن.';
+$PHPMAILER_LANG['smtp_error']           = 'خطأ على مستوى الخادم SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'لا يمكن تعيين أو إعادة تعيين متغير: ';
+$PHPMAILER_LANG['extension_missing']    = 'الإضافة غير موجودة: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php
new file mode 100644 (file)
index 0000000..3749d83
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Azerbaijani PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author @mirjalal
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP xətası: Giriş uğursuz oldu.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP xətası: SMTP serverinə qoşulma uğursuz oldu.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP xətası: Verilənlər qəbul edilməyib.';
+$PHPMAILER_LANG['empty_message']        = 'Boş mesaj göndərilə bilməz.';
+$PHPMAILER_LANG['encoding']             = 'Qeyri-müəyyən kodlaşdırma: ';
+$PHPMAILER_LANG['execute']              = 'Əmr yerinə yetirilmədi: ';
+$PHPMAILER_LANG['file_access']          = 'Fayla giriş yoxdur: ';
+$PHPMAILER_LANG['file_open']            = 'Fayl xətası: Fayl açıla bilmədi: ';
+$PHPMAILER_LANG['from_failed']          = 'Göstərilən poçtlara göndərmə uğursuz oldu: ';
+$PHPMAILER_LANG['instantiate']          = 'Mail funksiyası işə salına bilmədi.';
+$PHPMAILER_LANG['invalid_address']      = 'Düzgün olmayan e-mail adresi: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' - e-mail kitabxanası dəstəklənmir.';
+$PHPMAILER_LANG['provide_address']      = 'Ən azı bir e-mail adresi daxil edilməlidir.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP xətası: Aşağıdakı ünvanlar üzrə alıcılara göndərmə uğursuzdur: ';
+$PHPMAILER_LANG['signing']              = 'İmzalama xətası: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP serverinə qoşulma uğursuz oldu.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP serveri xətası: ';
+$PHPMAILER_LANG['variable_set']         = 'Dəyişənin quraşdırılması uğursuz oldu: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php
new file mode 100644 (file)
index 0000000..576c4bb
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Bosnian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Ermin Islamagić <ermin@islamagic.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Greška: Neuspjela prijava.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Greška: Nije moguće spojiti se sa SMTP serverom.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Greška: Podatci nisu prihvaćeni.';
+$PHPMAILER_LANG['empty_message']        = 'Sadržaj poruke je prazan.';
+$PHPMAILER_LANG['encoding']             = 'Nepoznata kriptografija: ';
+$PHPMAILER_LANG['execute']              = 'Nije moguće izvršiti naredbu: ';
+$PHPMAILER_LANG['file_access']          = 'Nije moguće pristupiti datoteci: ';
+$PHPMAILER_LANG['file_open']            = 'Nije moguće otvoriti datoteku: ';
+$PHPMAILER_LANG['from_failed']          = 'SMTP Greška: Slanje sa navedenih e-mail adresa nije uspjelo: ';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Greška: Slanje na navedene e-mail adrese nije uspjelo: ';
+$PHPMAILER_LANG['instantiate']          = 'Ne mogu pokrenuti mail funkcionalnost.';
+$PHPMAILER_LANG['invalid_address']      = 'E-mail nije poslan. Neispravna e-mail adresa: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.';
+$PHPMAILER_LANG['provide_address']      = 'Definišite barem jednu adresu primaoca.';
+$PHPMAILER_LANG['signing']              = 'Greška prilikom prijave: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Spajanje na SMTP server nije uspjelo.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP greška: ';
+$PHPMAILER_LANG['variable_set']         = 'Nije moguće postaviti varijablu ili je vratiti nazad: ';
+$PHPMAILER_LANG['extension_missing']    = 'Nedostaje ekstenzija: ';
\ No newline at end of file
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php
new file mode 100644 (file)
index 0000000..e2f98f0
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Belarusian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Aleksander Maksymiuk <info@setpro.pl>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Памылка SMTP: памылка ідэнтыфікацыі.';
+$PHPMAILER_LANG['connect_host']         = 'Памылка SMTP: нельга ўстанавіць сувязь з SMTP-серверам.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Памылка SMTP: звесткі непрынятыя.';
+$PHPMAILER_LANG['empty_message']        = 'Пустое паведамленне.';
+$PHPMAILER_LANG['encoding']             = 'Невядомая кадыроўка тэксту: ';
+$PHPMAILER_LANG['execute']              = 'Нельга выканаць каманду: ';
+$PHPMAILER_LANG['file_access']          = 'Няма доступу да файла: ';
+$PHPMAILER_LANG['file_open']            = 'Нельга адкрыць файл: ';
+$PHPMAILER_LANG['from_failed']          = 'Няправільны адрас адпраўніка: ';
+$PHPMAILER_LANG['instantiate']          = 'Нельга прымяніць функцыю mail().';
+$PHPMAILER_LANG['invalid_address']      = 'Нельга даслаць паведамленне, няправільны email атрымальніка: ';
+$PHPMAILER_LANG['provide_address']      = 'Запоўніце, калі ласка, правільны email атрымальніка.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' - паштовы сервер не падтрымліваецца.';
+$PHPMAILER_LANG['recipients_failed']    = 'Памылка SMTP: няправільныя атрымальнікі: ';
+$PHPMAILER_LANG['signing']              = 'Памылка подпісу паведамлення: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Памылка сувязі з SMTP-серверам.';
+$PHPMAILER_LANG['smtp_error']           = 'Памылка SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Нельга ўстанавіць або перамяніць значэнне пераменнай: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php
new file mode 100644 (file)
index 0000000..b22941f
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Bulgarian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Mikhail Kyosev <mialygk@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP грешка: Не може да се удостовери пред сървъра.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP грешка: Не може да се свърже с SMTP хоста.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP грешка: данните не са приети.';
+$PHPMAILER_LANG['empty_message']        = 'Съдържанието на съобщението е празно';
+$PHPMAILER_LANG['encoding']             = 'Неизвестно кодиране: ';
+$PHPMAILER_LANG['execute']              = 'Не може да се изпълни: ';
+$PHPMAILER_LANG['file_access']          = 'Няма достъп до файл: ';
+$PHPMAILER_LANG['file_open']            = 'Файлова грешка: Не може да се отвори файл: ';
+$PHPMAILER_LANG['from_failed']          = 'Следните адреси за подател са невалидни: ';
+$PHPMAILER_LANG['instantiate']          = 'Не може да се инстанцира функцията mail.';
+$PHPMAILER_LANG['invalid_address']      = 'Невалиден адрес: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' - пощенски сървър не се поддържа.';
+$PHPMAILER_LANG['provide_address']      = 'Трябва да предоставите поне един email адрес за получател.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP грешка: Следните адреси за Получател са невалидни: ';
+$PHPMAILER_LANG['signing']              = 'Грешка при подписване: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP провален connect().';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP сървърна грешка: ';
+$PHPMAILER_LANG['variable_set']         = 'Не може да се установи или възстанови променлива: ';
+$PHPMAILER_LANG['extension_missing']    = 'Липсва разширение: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php
new file mode 100644 (file)
index 0000000..4117596
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Catalan PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Ivan <web AT microstudi DOT com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Error SMTP: No s’ha pogut autenticar.';
+$PHPMAILER_LANG['connect_host']         = 'Error SMTP: No es pot connectar al servidor SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Error SMTP: Dades no acceptades.';
+$PHPMAILER_LANG['empty_message']        = 'El cos del missatge està buit.';
+$PHPMAILER_LANG['encoding']             = 'Codificació desconeguda: ';
+$PHPMAILER_LANG['execute']              = 'No es pot executar: ';
+$PHPMAILER_LANG['file_access']          = 'No es pot accedir a l’arxiu: ';
+$PHPMAILER_LANG['file_open']            = 'Error d’Arxiu: No es pot obrir l’arxiu: ';
+$PHPMAILER_LANG['from_failed']          = 'La(s) següent(s) adreces de remitent han fallat: ';
+$PHPMAILER_LANG['instantiate']          = 'No s’ha pogut crear una instància de la funció Mail.';
+$PHPMAILER_LANG['invalid_address']      = 'Adreça d’email invalida: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no està suportat';
+$PHPMAILER_LANG['provide_address']      = 'S’ha de proveir almenys una adreça d’email com a destinatari.';
+$PHPMAILER_LANG['recipients_failed']    = 'Error SMTP: Els següents destinataris han fallat: ';
+$PHPMAILER_LANG['signing']              = 'Error al signar: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Ha fallat el SMTP Connect().';
+$PHPMAILER_LANG['smtp_error']           = 'Error del servidor SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'No s’ha pogut establir o restablir la variable: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ch.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ch.php
new file mode 100644 (file)
index 0000000..4fda6b8
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Chinese PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author LiuXin <http://www.80x86.cn/blog/>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP 错误:身份验证失败。';
+$PHPMAILER_LANG['connect_host']         = 'SMTP 错误: 不能连接SMTP主机。';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP 错误: 数据不可接受。';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = '未知编码:';
+$PHPMAILER_LANG['execute']              = '不能执行: ';
+$PHPMAILER_LANG['file_access']          = '不能访问文件:';
+$PHPMAILER_LANG['file_open']            = '文件错误:不能打开文件:';
+$PHPMAILER_LANG['from_failed']          = '下面的发送地址邮件发送失败了: ';
+$PHPMAILER_LANG['instantiate']          = '不能实现mail方法。';
+//$PHPMAILER_LANG['invalid_address']      = 'Invalid address: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' 您所选择的发送邮件的方法并不支持。';
+$PHPMAILER_LANG['provide_address']      = '您必须提供至少一个 收信人的email地址。';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP 错误: 下面的 收件人失败了: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php
new file mode 100644 (file)
index 0000000..1160cf0
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Czech PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Chyba SMTP: Autentizace selhala.';
+$PHPMAILER_LANG['connect_host']         = 'Chyba SMTP: Nelze navázat spojení se SMTP serverem.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Chyba SMTP: Data nebyla přijata.';
+$PHPMAILER_LANG['empty_message']        = 'Prázdné tělo zprávy';
+$PHPMAILER_LANG['encoding']             = 'Neznámé kódování: ';
+$PHPMAILER_LANG['execute']              = 'Nelze provést: ';
+$PHPMAILER_LANG['file_access']          = 'Nelze získat přístup k souboru: ';
+$PHPMAILER_LANG['file_open']            = 'Chyba souboru: Nelze otevřít soubor pro čtení: ';
+$PHPMAILER_LANG['from_failed']          = 'Následující adresa odesílatele je nesprávná: ';
+$PHPMAILER_LANG['instantiate']          = 'Nelze vytvořit instanci emailové funkce.';
+$PHPMAILER_LANG['invalid_address']      = 'Neplatná adresa: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer není podporován.';
+$PHPMAILER_LANG['provide_address']      = 'Musíte zadat alespoň jednu emailovou adresu příjemce.';
+$PHPMAILER_LANG['recipients_failed']    = 'Chyba SMTP: Následující adresy příjemců nejsou správně: ';
+$PHPMAILER_LANG['signing']              = 'Chyba přihlašování: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() selhal.';
+$PHPMAILER_LANG['smtp_error']           = 'Chyba SMTP serveru: ';
+$PHPMAILER_LANG['variable_set']         = 'Nelze nastavit nebo změnit proměnnou: ';
+$PHPMAILER_LANG['extension_missing']    = 'Chybí rozšíření: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php
new file mode 100644 (file)
index 0000000..5febb51
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Danish PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author John Sebastian <jms@iwb.dk>
+ * Rewrite and extension of the work by Mikael Stokkebro <info@stokkebro.dk> 
+ *  
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP fejl: Login mislykkedes.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP fejl: Forbindelse til SMTP serveren kunne ikke oprettes.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP fejl: Data blev ikke accepteret.';
+$PHPMAILER_LANG['empty_message']        = 'Meddelelsen er uden indhold';
+$PHPMAILER_LANG['encoding']             = 'Ukendt encode-format: ';
+$PHPMAILER_LANG['execute']              = 'Kunne ikke afvikle: ';
+$PHPMAILER_LANG['file_access']          = 'Kunne ikke tilgå filen: ';
+$PHPMAILER_LANG['file_open']            = 'Fil fejl: Kunne ikke åbne filen: ';
+$PHPMAILER_LANG['from_failed']          = 'Følgende afsenderadresse er forkert: ';
+$PHPMAILER_LANG['instantiate']          = 'Email funktionen kunne ikke initialiseres.';
+$PHPMAILER_LANG['invalid_address']      = 'Udgyldig adresse: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.';
+$PHPMAILER_LANG['provide_address']      = 'Indtast mindst en modtagers email adresse.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP fejl: Følgende modtagere er forkerte: ';
+$PHPMAILER_LANG['signing']              = 'Signeringsfejl: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() fejlede.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP server fejl: ';
+$PHPMAILER_LANG['variable_set']         = 'Kunne ikke definere eller nulstille variablen: ';
+$PHPMAILER_LANG['extension_missing']    = 'Udvidelse mangler: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php
new file mode 100644 (file)
index 0000000..b36c6cb
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * German PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP-Fehler: Authentifizierung fehlgeschlagen.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP-Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP-Fehler: Daten werden nicht akzeptiert.';
+$PHPMAILER_LANG['empty_message']        = 'E-Mail-Inhalt ist leer.';
+$PHPMAILER_LANG['encoding']             = 'Unbekannte Kodierung: ';
+$PHPMAILER_LANG['execute']              = 'Konnte folgenden Befehl nicht ausführen: ';
+$PHPMAILER_LANG['file_access']          = 'Zugriff auf folgende Datei fehlgeschlagen: ';
+$PHPMAILER_LANG['file_open']            = 'Dateifehler: Konnte folgende Datei nicht öffnen: ';
+$PHPMAILER_LANG['from_failed']          = 'Die folgende Absenderadresse ist nicht korrekt: ';
+$PHPMAILER_LANG['instantiate']          = 'Mail-Funktion konnte nicht initialisiert werden.';
+$PHPMAILER_LANG['invalid_address']      = 'Die Adresse ist ungültig: ';
+$PHPMAILER_LANG['invalid_hostentry']    = 'Ungültiger Hosteintrag: ';
+$PHPMAILER_LANG['invalid_host']         = 'Ungültiger Host: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
+$PHPMAILER_LANG['provide_address']      = 'Bitte geben Sie mindestens eine Empfängeradresse an.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: ';
+$PHPMAILER_LANG['signing']              = 'Fehler beim Signieren: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Verbindung zum SMTP-Server fehlgeschlagen.';
+$PHPMAILER_LANG['smtp_error']           = 'Fehler vom SMTP-Server: ';
+$PHPMAILER_LANG['variable_set']         = 'Kann Variable nicht setzen oder zurücksetzen: ';
+$PHPMAILER_LANG['extension_missing']    = 'Fehlende Erweiterung: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php
new file mode 100644 (file)
index 0000000..7109641
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Greek PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Σφάλμα: Αδυναμία πιστοποίησης (authentication).';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Σφάλμα: Αδυναμία σύνδεσης στον SMTP-Host.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Σφάλμα: Τα δεδομένα δεν έγιναν αποδεκτά.';
+$PHPMAILER_LANG['empty_message']        = 'Το E-Mail δεν έχει περιεχόμενο .';
+$PHPMAILER_LANG['encoding']             = 'Αγνωστο Encoding-Format: ';
+$PHPMAILER_LANG['execute']              = 'Αδυναμία εκτέλεσης ακόλουθης εντολής: ';
+$PHPMAILER_LANG['file_access']          = 'Αδυναμία προσπέλασης του αρχείου: ';
+$PHPMAILER_LANG['file_open']            = 'Σφάλμα Αρχείου: Δεν είναι δυνατό το άνοιγμα του ακόλουθου αρχείου: ';
+$PHPMAILER_LANG['from_failed']          = 'Η παρακάτω διεύθυνση αποστολέα δεν είναι σωστή: ';
+$PHPMAILER_LANG['instantiate']          = 'Αδυναμία εκκίνησης Mail function.';
+$PHPMAILER_LANG['invalid_address']      = 'Το μήνυμα δεν εστάλη, η διεύθυνση δεν είναι έγκυρη: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer δεν υποστηρίζεται.';
+$PHPMAILER_LANG['provide_address']      = 'Παρακαλούμε δώστε τουλάχιστον μια e-mail διεύθυνση παραλήπτη.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Σφάλμα: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: ';
+$PHPMAILER_LANG['signing']              = 'Σφάλμα υπογραφής: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Αποτυχία σύνδεσης στον SMTP Server.';
+$PHPMAILER_LANG['smtp_error']           = 'Σφάλμα από τον SMTP Server: ';
+$PHPMAILER_LANG['variable_set']         = 'Αδυναμία ορισμού ή αρχικοποίησης μεταβλητής: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php
new file mode 100644 (file)
index 0000000..5ca6cb7
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Esperanto PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Eraro de servilo SMTP : aŭtentigo malsukcesis.';
+$PHPMAILER_LANG['connect_host']         = 'Eraro de servilo SMTP : konektado al servilo malsukcesis.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Eraro de servilo SMTP : neĝustaj datumoj.';
+$PHPMAILER_LANG['empty_message']        = 'Teksto de mesaĝo mankas.';
+$PHPMAILER_LANG['encoding']             = 'Nekonata kodoprezento: ';
+$PHPMAILER_LANG['execute']              = 'Lanĉi rulumadon ne eblis: ';
+$PHPMAILER_LANG['file_access']          = 'Aliro al dosiero ne sukcesis: ';
+$PHPMAILER_LANG['file_open']            = 'Eraro de dosiero: malfermo neeblas: ';
+$PHPMAILER_LANG['from_failed']          = 'Jena adreso de sendinto malsukcesis: ';
+$PHPMAILER_LANG['instantiate']          = 'Genero de retmesaĝa funkcio neeblis.';
+$PHPMAILER_LANG['invalid_address']      = 'Retadreso ne validas: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mesaĝilo ne subtenata.';
+$PHPMAILER_LANG['provide_address']      = 'Vi devas tajpi almenaŭ unu recevontan retadreson.';
+$PHPMAILER_LANG['recipients_failed']    = 'Eraro de servilo SMTP : la jenaj poŝtrecivuloj kaŭzis eraron: ';
+$PHPMAILER_LANG['signing']              = 'Eraro de subskribo: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP konektado malsukcesis.';
+$PHPMAILER_LANG['smtp_error']           = 'Eraro de servilo SMTP : ';
+$PHPMAILER_LANG['variable_set']         = 'Variablo ne pravalorizeblas aŭ ne repravalorizeblas: ';
+$PHPMAILER_LANG['extension_missing']    = 'Mankas etendo: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php
new file mode 100644 (file)
index 0000000..f2c4e83
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Spanish PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Matt Sturdy <matt.sturdy@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Error SMTP: Imposible autentificar.';
+$PHPMAILER_LANG['connect_host']         = 'Error SMTP: Imposible conectar al servidor SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Error SMTP: Datos no aceptados.';
+$PHPMAILER_LANG['empty_message']        = 'El cuerpo del mensaje está vacío.';
+$PHPMAILER_LANG['encoding']             = 'Codificación desconocida: ';
+$PHPMAILER_LANG['execute']              = 'Imposible ejecutar: ';
+$PHPMAILER_LANG['file_access']          = 'Imposible acceder al archivo: ';
+$PHPMAILER_LANG['file_open']            = 'Error de Archivo: Imposible abrir el archivo: ';
+$PHPMAILER_LANG['from_failed']          = 'La(s) siguiente(s) direcciones de remitente fallaron: ';
+$PHPMAILER_LANG['instantiate']          = 'Imposible crear una instancia de la función Mail.';
+$PHPMAILER_LANG['invalid_address']      = 'Imposible enviar: dirección de email inválido: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.';
+$PHPMAILER_LANG['provide_address']      = 'Debe proporcionar al menos una dirección de email de destino.';
+$PHPMAILER_LANG['recipients_failed']    = 'Error SMTP: Los siguientes destinos fallaron: ';
+$PHPMAILER_LANG['signing']              = 'Error al firmar: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() falló.';
+$PHPMAILER_LANG['smtp_error']           = 'Error del servidor SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'No se pudo configurar la variable: ';
+$PHPMAILER_LANG['extension_missing']    = 'Extensión faltante: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php
new file mode 100644 (file)
index 0000000..7e06da1
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Estonian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Indrek Päri
+ * @author Elan Ruusamäe <glen@delfi.ee>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Viga: Autoriseerimise viga.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Viga: Ei õnnestunud luua ühendust SMTP serveriga.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Viga: Vigased andmed.';
+$PHPMAILER_LANG['empty_message']        = 'Tühi kirja sisu';
+$PHPMAILER_LANG["encoding"]             = 'Tundmatu kodeering: ';
+$PHPMAILER_LANG['execute']              = 'Tegevus ebaõnnestus: ';
+$PHPMAILER_LANG['file_access']          = 'Pole piisavalt õiguseid järgneva faili avamiseks: ';
+$PHPMAILER_LANG['file_open']            = 'Faili Viga: Faili avamine ebaõnnestus: ';
+$PHPMAILER_LANG['from_failed']          = 'Järgnev saatja e-posti aadress on vigane: ';
+$PHPMAILER_LANG['instantiate']          = 'mail funktiooni käivitamine ebaõnnestus.';
+$PHPMAILER_LANG['invalid_address']      = 'Saatmine peatatud, e-posti address vigane: ';
+$PHPMAILER_LANG['provide_address']      = 'Te peate määrama vähemalt ühe saaja e-posti aadressi.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' maileri tugi puudub.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Viga: Järgnevate saajate e-posti aadressid on vigased: ';
+$PHPMAILER_LANG["signing"]              = 'Viga allkirjastamisel: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() ebaõnnestus.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP serveri viga: ';
+$PHPMAILER_LANG['variable_set']         = 'Ei õnnestunud määrata või lähtestada muutujat: ';
+$PHPMAILER_LANG['extension_missing']    = 'Nõutud laiendus on puudu: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php
new file mode 100644 (file)
index 0000000..8aa0ad2
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Persian/Farsi PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Ali Jazayeri <jaza.ali@gmail.com>
+ * @author Mohammad Hossein Mojtahedi <mhm5000@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'خطای SMTP: احراز هویت با شکست مواجه شد.';
+$PHPMAILER_LANG['connect_host']         = 'خطای SMTP: اتصال به سرور SMTP برقرار نشد.';
+$PHPMAILER_LANG['data_not_accepted']    = 'خطای SMTP: داده‌ها نا‌درست هستند.';
+$PHPMAILER_LANG['empty_message']        = 'بخش متن پیام خالی است.';
+$PHPMAILER_LANG['encoding']             = 'کد‌گذاری نا‌شناخته: ';
+$PHPMAILER_LANG['execute']              = 'امکان اجرا وجود ندارد: ';
+$PHPMAILER_LANG['file_access']          = 'امکان دسترسی به فایل وجود ندارد: ';
+$PHPMAILER_LANG['file_open']            = 'خطای File: امکان بازکردن فایل وجود ندارد: ';
+$PHPMAILER_LANG['from_failed']          = 'آدرس فرستنده اشتباه است: ';
+$PHPMAILER_LANG['instantiate']          = 'امکان معرفی تابع ایمیل وجود ندارد.';
+$PHPMAILER_LANG['invalid_address']      = 'آدرس ایمیل معتبر نیست: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer پشتیبانی نمی‌شود.';
+$PHPMAILER_LANG['provide_address']      = 'باید حداقل یک آدرس گیرنده وارد کنید.';
+$PHPMAILER_LANG['recipients_failed']    = 'خطای SMTP: ارسال به آدرس گیرنده با خطا مواجه شد: ';
+$PHPMAILER_LANG['signing']              = 'خطا در امضا: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'خطا در اتصال به SMTP.';
+$PHPMAILER_LANG['smtp_error']           = 'خطا در SMTP Server: ';
+$PHPMAILER_LANG['variable_set']         = 'امکان ارسال یا ارسال مجدد متغیر‌ها وجود ندارد: ';
+$PHPMAILER_LANG['extension_missing']    = 'افزونه موجود نیست: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php
new file mode 100644 (file)
index 0000000..ec4e752
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Finnish PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Jyry Kuukanen
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP-virhe: käyttäjätunnistus epäonnistui.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP-virhe: yhteys palvelimeen ei onnistu.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP-virhe: data on virheellinen.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Tuntematon koodaustyyppi: ';
+$PHPMAILER_LANG['execute']              = 'Suoritus epäonnistui: ';
+$PHPMAILER_LANG['file_access']          = 'Seuraavaan tiedostoon ei ole oikeuksia: ';
+$PHPMAILER_LANG['file_open']            = 'Tiedostovirhe: Ei voida avata tiedostoa: ';
+$PHPMAILER_LANG['from_failed']          = 'Seuraava lähettäjän osoite on virheellinen: ';
+$PHPMAILER_LANG['instantiate']          = 'mail-funktion luonti epäonnistui.';
+//$PHPMAILER_LANG['invalid_address']      = 'Invalid address: ';
+$PHPMAILER_LANG['mailer_not_supported'] = 'postivälitintyyppiä ei tueta.';
+$PHPMAILER_LANG['provide_address']      = 'Aseta vähintään yksi vastaanottajan sähk&ouml;postiosoite.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP-virhe: seuraava vastaanottaja osoite on virheellinen.';
+$PHPMAILER_LANG['encoding']             = 'Tuntematon koodaustyyppi: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php
new file mode 100644 (file)
index 0000000..68cdef1
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Faroese PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Dávur Sørensen <http://www.profo-webdesign.dk>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP feilur: Kundi ikki góðkenna.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP feilur: Kundi ikki knýta samband við SMTP vert.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP feilur: Data ikki góðkent.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Ókend encoding: ';
+$PHPMAILER_LANG['execute']              = 'Kundi ikki útføra: ';
+$PHPMAILER_LANG['file_access']          = 'Kundi ikki tilganga fílu: ';
+$PHPMAILER_LANG['file_open']            = 'Fílu feilur: Kundi ikki opna fílu: ';
+$PHPMAILER_LANG['from_failed']          = 'fylgjandi Frá/From adressa miseydnaðist: ';
+$PHPMAILER_LANG['instantiate']          = 'Kuni ikki instantiera mail funktión.';
+//$PHPMAILER_LANG['invalid_address']      = 'Invalid address: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' er ikki supporterað.';
+$PHPMAILER_LANG['provide_address']      = 'Tú skal uppgeva minst móttakara-emailadressu(r).';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Feilur: Fylgjandi móttakarar miseydnaðust: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php
new file mode 100644 (file)
index 0000000..af68c92
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+/**
+ * French PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * Some French punctuation requires a thin non-breaking space (U+202F) character before it,
+ * for example before a colon or exclamation mark.
+ * There is one of these characters between these quotes: " "
+ * @see http://unicode.org/udhr/n/notes_fra.html
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Erreur SMTP : échec de l\'authentification.';
+$PHPMAILER_LANG['connect_host']         = 'Erreur SMTP : impossible de se connecter au serveur SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Erreur SMTP : données incorrectes.';
+$PHPMAILER_LANG['empty_message']        = 'Corps du message vide.';
+$PHPMAILER_LANG['encoding']             = 'Encodage inconnu : ';
+$PHPMAILER_LANG['execute']              = 'Impossible de lancer l\'exécution : ';
+$PHPMAILER_LANG['file_access']          = 'Impossible d\'accéder au fichier : ';
+$PHPMAILER_LANG['file_open']            = 'Ouverture du fichier impossible : ';
+$PHPMAILER_LANG['from_failed']          = 'L\'adresse d\'expéditeur suivante a échoué : ';
+$PHPMAILER_LANG['instantiate']          = 'Impossible d\'instancier la fonction mail.';
+$PHPMAILER_LANG['invalid_address']      = 'L\'adresse courriel n\'est pas valide : ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' client de messagerie non supporté.';
+$PHPMAILER_LANG['provide_address']      = 'Vous devez fournir au moins une adresse de destinataire.';
+$PHPMAILER_LANG['recipients_failed']    = 'Erreur SMTP : les destinataires suivants sont en erreur : ';
+$PHPMAILER_LANG['signing']              = 'Erreur de signature : ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Échec de la connexion SMTP.';
+$PHPMAILER_LANG['smtp_error']           = 'Erreur du serveur SMTP : ';
+$PHPMAILER_LANG['variable_set']         = 'Impossible d\'initialiser ou de réinitialiser une variable : ';
+$PHPMAILER_LANG['extension_missing']    = 'Extension manquante : ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php
new file mode 100644 (file)
index 0000000..9b4ce4d
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Galician PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author by Donato Rouco <donatorouco@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Erro SMTP: Non puido ser autentificado.';
+$PHPMAILER_LANG['connect_host']         = 'Erro SMTP: Non puido conectar co servidor SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Erro SMTP: Datos non aceptados.';
+$PHPMAILER_LANG['empty_message']        = 'Corpo da mensaxe vacía';
+$PHPMAILER_LANG['encoding']             = 'Codificación descoñecida: ';
+$PHPMAILER_LANG['execute']              = 'Non puido ser executado: ';
+$PHPMAILER_LANG['file_access']          = 'Nob puido acceder ó arquivo: ';
+$PHPMAILER_LANG['file_open']            = 'Erro de Arquivo: No puido abrir o arquivo: ';
+$PHPMAILER_LANG['from_failed']          = 'A(s) seguinte(s) dirección(s) de remitente(s) deron erro: ';
+$PHPMAILER_LANG['instantiate']          = 'Non puido crear unha instancia da función Mail.';
+$PHPMAILER_LANG['invalid_address']      = 'Non puido envia-lo correo: dirección de email inválida: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer non está soportado.';
+$PHPMAILER_LANG['provide_address']      = 'Debe engadir polo menos unha dirección de email coma destino.';
+$PHPMAILER_LANG['recipients_failed']    = 'Erro SMTP: Os seguintes destinos fallaron: ';
+$PHPMAILER_LANG['signing']              = 'Erro ó firmar: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() fallou.';
+$PHPMAILER_LANG['smtp_error']           = 'Erro do servidor SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Non puidemos axustar ou reaxustar a variábel: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php
new file mode 100644 (file)
index 0000000..70eb717
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Hebrew PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Ronny Sherer <ronny@hoojima.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'שגיאת SMTP: פעולת האימות נכשלה.';
+$PHPMAILER_LANG['connect_host']         = 'שגיאת SMTP: לא הצלחתי להתחבר לשרת SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'שגיאת SMTP: מידע לא התקבל.';
+$PHPMAILER_LANG['empty_message']        = 'גוף ההודעה ריק';
+$PHPMAILER_LANG['invalid_address']      = 'כתובת שגויה: ';
+$PHPMAILER_LANG['encoding']             = 'קידוד לא מוכר: ';
+$PHPMAILER_LANG['execute']              = 'לא הצלחתי להפעיל את: ';
+$PHPMAILER_LANG['file_access']          = 'לא ניתן לגשת לקובץ: ';
+$PHPMAILER_LANG['file_open']            = 'שגיאת קובץ: לא ניתן לגשת לקובץ: ';
+$PHPMAILER_LANG['from_failed']          = 'כתובות הנמענים הבאות נכשלו: ';
+$PHPMAILER_LANG['instantiate']          = 'לא הצלחתי להפעיל את פונקציית המייל.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' אינה נתמכת.';
+$PHPMAILER_LANG['provide_address']      = 'חובה לספק לפחות כתובת אחת של מקבל המייל.';
+$PHPMAILER_LANG['recipients_failed']    = 'שגיאת SMTP: הנמענים הבאים נכשלו: ';
+$PHPMAILER_LANG['signing']              = 'שגיאת חתימה: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+$PHPMAILER_LANG['smtp_error']           = 'שגיאת שרת SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'לא ניתן לקבוע או לשנות את המשתנה: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php
new file mode 100644 (file)
index 0000000..607a5ee
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Hindi PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Yash Karanke <mr.karanke@gmail.com>
+ */
+$PHPMAILER_LANG['authenticate']         = 'SMTP त्रुटि: प्रामाणिकता की जांच नहीं हो सका। ';
+$PHPMAILER_LANG['connect_host']         = 'SMTP त्रुटि: SMTP सर्वर से कनेक्ट नहीं हो सका। ';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP त्रुटि: डेटा स्वीकार नहीं किया जाता है। ';
+$PHPMAILER_LANG['empty_message']        = 'संदेश खाली है। ';
+$PHPMAILER_LANG['encoding']             = 'अज्ञात एन्कोडिंग प्रकार। ';
+$PHPMAILER_LANG['execute']              = 'आदेश को निष्पादित करने में विफल। ';
+$PHPMAILER_LANG['file_access']          = 'फ़ाइल उपलब्ध नहीं है। ';
+$PHPMAILER_LANG['file_open']            = 'फ़ाइल त्रुटि: फाइल को खोला नहीं जा सका। ';
+$PHPMAILER_LANG['from_failed']          = 'प्रेषक का पता गलत है। ';
+$PHPMAILER_LANG['instantiate']          = 'मेल फ़ंक्शन कॉल नहीं कर सकता है।';
+$PHPMAILER_LANG['invalid_address']      = 'पता गलत है। ';
+$PHPMAILER_LANG['mailer_not_supported'] = 'मेल सर्वर के साथ काम नहीं करता है। ';
+$PHPMAILER_LANG['provide_address']      = 'आपको कम से कम एक प्राप्तकर्ता का ई-मेल पता प्रदान करना होगा।';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP त्रुटि: निम्न प्राप्तकर्ताओं को पते भेजने में विफल। ';
+$PHPMAILER_LANG['signing']              = 'साइनअप त्रुटि:। ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP का connect () फ़ंक्शन विफल हुआ। ';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP सर्वर त्रुटि। ';
+$PHPMAILER_LANG['variable_set']         = 'चर को बना या संशोधित नहीं किया जा सकता। ';
+$PHPMAILER_LANG['extension_missing']    = 'एक्सटेन्षन गायब है: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php
new file mode 100644 (file)
index 0000000..3822920
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Croatian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Hrvoj3e <hrvoj3e@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Greška: Neuspjela autentikacija.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Greška: Ne mogu se spojiti na SMTP poslužitelj.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Greška: Podatci nisu prihvaćeni.';
+$PHPMAILER_LANG['empty_message']        = 'Sadržaj poruke je prazan.';
+$PHPMAILER_LANG['encoding']             = 'Nepoznati encoding: ';
+$PHPMAILER_LANG['execute']              = 'Nije moguće izvršiti naredbu: ';
+$PHPMAILER_LANG['file_access']          = 'Nije moguće pristupiti datoteci: ';
+$PHPMAILER_LANG['file_open']            = 'Nije moguće otvoriti datoteku: ';
+$PHPMAILER_LANG['from_failed']          = 'SMTP Greška: Slanje s navedenih e-mail adresa nije uspjelo: ';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Greška: Slanje na navedenih e-mail adresa nije uspjelo: ';
+$PHPMAILER_LANG['instantiate']          = 'Ne mogu pokrenuti mail funkcionalnost.';
+$PHPMAILER_LANG['invalid_address']      = 'E-mail nije poslan. Neispravna e-mail adresa: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.';
+$PHPMAILER_LANG['provide_address']      = 'Definirajte barem jednu adresu primatelja.';
+$PHPMAILER_LANG['signing']              = 'Greška prilikom prijave: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Spajanje na SMTP poslužitelj nije uspjelo.';
+$PHPMAILER_LANG['smtp_error']           = 'Greška SMTP poslužitelja: ';
+$PHPMAILER_LANG['variable_set']         = 'Ne mogu postaviti varijablu niti ju vratiti nazad: ';
+$PHPMAILER_LANG['extension_missing']    = 'Nedostaje proširenje: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php
new file mode 100644 (file)
index 0000000..196cddc
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Hungarian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author @dominicus-75
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP hiba: az azonosítás sikertelen.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP hiba: nem lehet kapcsolódni az SMTP-szerverhez.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP hiba: adatok visszautasítva.';
+$PHPMAILER_LANG['empty_message']        = 'Üres az üzenettörzs.';
+$PHPMAILER_LANG['encoding']             = 'Ismeretlen kódolás: ';
+$PHPMAILER_LANG['execute']              = 'Nem lehet végrehajtani: ';
+$PHPMAILER_LANG['file_access']          = 'A következő fájl nem elérhető: ';
+$PHPMAILER_LANG['file_open']            = 'Fájl hiba: a következő fájlt nem lehet megnyitni: ';
+$PHPMAILER_LANG['from_failed']          = 'A feladóként megadott következő cím hibás: ';
+$PHPMAILER_LANG['instantiate']          = 'A PHP mail() függvényt nem sikerült végrehajtani.';
+$PHPMAILER_LANG['invalid_address']      = 'Érvénytelen cím: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' a mailer-osztály nem támogatott.';
+$PHPMAILER_LANG['provide_address']      = 'Legalább egy címzettet fel kell tüntetni.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP hiba: a címzettként megadott következő címek hibásak: ';
+$PHPMAILER_LANG['signing']              = 'Hibás aláírás: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Hiba az SMTP-kapcsolatban.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP-szerver hiba: ';
+$PHPMAILER_LANG['variable_set']         = 'A következő változók beállítása nem sikerült: ';
+$PHPMAILER_LANG['extension_missing']    = 'Bővítmény hiányzik: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php
new file mode 100644 (file)
index 0000000..ff2a969
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Armenian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Hrayr Grigoryan <hrayr@bits.am>
+ */
+$PHPMAILER_LANG['authenticate']         = 'SMTP -ի սխալ: չհաջողվեց ստուգել իսկությունը.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP -ի սխալ: չհաջողվեց կապ հաստատել SMTP սերվերի հետ.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP -ի սխալ: տվյալները ընդունված չեն.';
+$PHPMAILER_LANG['empty_message']        = 'Հաղորդագրությունը դատարկ է';
+$PHPMAILER_LANG['encoding']             = 'Կոդավորման անհայտ տեսակ: ';
+$PHPMAILER_LANG['execute']              = 'Չհաջողվեց իրականացնել հրամանը: ';
+$PHPMAILER_LANG['file_access']          = 'Ֆայլը հասանելի չէ: ';
+$PHPMAILER_LANG['file_open']            = 'Ֆայլի սխալ: ֆայլը չհաջողվեց բացել: ';
+$PHPMAILER_LANG['from_failed']          = 'Ուղարկողի հետևյալ հասցեն սխալ է: ';
+$PHPMAILER_LANG['instantiate']          = 'Հնարավոր չէ կանչել mail ֆունկցիան.';
+$PHPMAILER_LANG['invalid_address']      = 'Հասցեն սխալ է: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' փոստային սերվերի հետ չի աշխատում.';
+$PHPMAILER_LANG['provide_address']      = 'Անհրաժեշտ է տրամադրել գոնե մեկ ստացողի e-mail հասցե.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP -ի սխալ: չի հաջողվել ուղարկել հետևյալ ստացողների հասցեներին: ';
+$PHPMAILER_LANG['signing']              = 'Ստորագրման սխալ: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP -ի connect() ֆունկցիան չի հաջողվել';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP սերվերի սխալ: ';
+$PHPMAILER_LANG['variable_set']         = 'Չի հաջողվում ստեղծել կամ վերափոխել փոփոխականը: ';
+$PHPMAILER_LANG['extension_missing']    = 'Հավելվածը բացակայում է: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php
new file mode 100644 (file)
index 0000000..1353bab
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Indonesian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Cecep Prawiro <cecep.prawiro@gmail.com>
+ * @author @januridp
+ * @author Ian Mustafa <mail@ianmustafa.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Kesalahan SMTP: Tidak dapat mengotentikasi.';
+$PHPMAILER_LANG['connect_host']         = 'Kesalahan SMTP: Tidak dapat terhubung ke host SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Kesalahan SMTP: Data tidak diterima.';
+$PHPMAILER_LANG['empty_message']        = 'Isi pesan kosong';
+$PHPMAILER_LANG['encoding']             = 'Pengkodean karakter tidak dikenali: ';
+$PHPMAILER_LANG['execute']              = 'Tidak dapat menjalankan proses: ';
+$PHPMAILER_LANG['file_access']          = 'Tidak dapat mengakses berkas: ';
+$PHPMAILER_LANG['file_open']            = 'Kesalahan Berkas: Berkas tidak dapat dibuka: ';
+$PHPMAILER_LANG['from_failed']          = 'Alamat pengirim berikut mengakibatkan kesalahan: ';
+$PHPMAILER_LANG['instantiate']          = 'Tidak dapat menginisialisasi fungsi surel.';
+$PHPMAILER_LANG['invalid_address']      = 'Gagal terkirim, alamat surel tidak sesuai: ';
+$PHPMAILER_LANG['invalid_hostentry']    = 'Gagal terkirim, entri host tidak sesuai: ';
+$PHPMAILER_LANG['invalid_host']         = 'Gagal terkirim, host tidak sesuai: ';
+$PHPMAILER_LANG['provide_address']      = 'Harus tersedia minimal satu alamat tujuan';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tidak didukung';
+$PHPMAILER_LANG['recipients_failed']    = 'Kesalahan SMTP: Alamat tujuan berikut menyebabkan kesalahan: ';
+$PHPMAILER_LANG['signing']              = 'Kesalahan dalam penandatangan SSL: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() gagal.';
+$PHPMAILER_LANG['smtp_error']           = 'Kesalahan pada pelayan SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Tidak dapat mengatur atau mengatur ulang variabel: ';
+$PHPMAILER_LANG['extension_missing']    = 'Ekstensi PHP tidak tersedia: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php
new file mode 100644 (file)
index 0000000..e67b6f7
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Italian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Ilias Bartolini <brain79@inwind.it>
+ * @author Stefano Sabatini <sabas88@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Error: Impossibile autenticarsi.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Error: Impossibile connettersi all\'host SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Error: Dati non accettati dal server.';
+$PHPMAILER_LANG['empty_message']        = 'Il corpo del messaggio è vuoto';
+$PHPMAILER_LANG['encoding']             = 'Codifica dei caratteri sconosciuta: ';
+$PHPMAILER_LANG['execute']              = 'Impossibile eseguire l\'operazione: ';
+$PHPMAILER_LANG['file_access']          = 'Impossibile accedere al file: ';
+$PHPMAILER_LANG['file_open']            = 'File Error: Impossibile aprire il file: ';
+$PHPMAILER_LANG['from_failed']          = 'I seguenti indirizzi mittenti hanno generato errore: ';
+$PHPMAILER_LANG['instantiate']          = 'Impossibile istanziare la funzione mail';
+$PHPMAILER_LANG['invalid_address']      = 'Impossibile inviare, l\'indirizzo email non è valido: ';
+$PHPMAILER_LANG['provide_address']      = 'Deve essere fornito almeno un indirizzo ricevente';
+$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Error: I seguenti indirizzi destinatari hanno generato un errore: ';
+$PHPMAILER_LANG['signing']              = 'Errore nella firma: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() fallita.';
+$PHPMAILER_LANG['smtp_error']           = 'Errore del server SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Impossibile impostare o resettare la variabile: ';
+$PHPMAILER_LANG['extension_missing']    = 'Estensione mancante: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php
new file mode 100644 (file)
index 0000000..2d77872
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Japanese PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Mitsuhiro Yoshida <http://mitstek.com/>
+ * @author Yoshi Sakai <http://bluemooninc.jp/>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTPエラー: 認証できませんでした。';
+$PHPMAILER_LANG['connect_host']         = 'SMTPエラー: SMTPホストに接続できませんでした。';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTPエラー: データが受け付けられませんでした。';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = '不明なエンコーディング: ';
+$PHPMAILER_LANG['execute']              = '実行できませんでした: ';
+$PHPMAILER_LANG['file_access']          = 'ファイルにアクセスできません: ';
+$PHPMAILER_LANG['file_open']            = 'ファイルエラー: ファイルを開けません: ';
+$PHPMAILER_LANG['from_failed']          = 'Fromアドレスを登録する際にエラーが発生しました: ';
+$PHPMAILER_LANG['instantiate']          = 'メール関数が正常に動作しませんでした。';
+//$PHPMAILER_LANG['invalid_address']      = 'Invalid address: ';
+$PHPMAILER_LANG['provide_address']      = '少なくとも1つメールアドレスを 指定する必要があります。';
+$PHPMAILER_LANG['mailer_not_supported'] = ' メーラーがサポートされていません。';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTPエラー: 次の受信者アドレスに 間違いがあります: ';
+//$PHPMAILER_LANG['signing']              = 'Signing Error: ';
+//$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() failed.';
+//$PHPMAILER_LANG['smtp_error']           = 'SMTP server error: ';
+//$PHPMAILER_LANG['variable_set']         = 'Cannot set or reset variable: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php
new file mode 100644 (file)
index 0000000..dd1af8a
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Georgian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Avtandil Kikabidze aka LONGMAN <akalongman@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP შეცდომა: ავტორიზაცია შეუძლებელია.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP შეცდომა: SMTP სერვერთან დაკავშირება შეუძლებელია.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP შეცდომა: მონაცემები არ იქნა მიღებული.';
+$PHPMAILER_LANG['encoding']             = 'კოდირების უცნობი ტიპი: ';
+$PHPMAILER_LANG['execute']              = 'შეუძლებელია შემდეგი ბრძანების შესრულება: ';
+$PHPMAILER_LANG['file_access']          = 'შეუძლებელია წვდომა ფაილთან: ';
+$PHPMAILER_LANG['file_open']            = 'ფაილური სისტემის შეცდომა: არ იხსნება ფაილი: ';
+$PHPMAILER_LANG['from_failed']          = 'გამგზავნის არასწორი მისამართი: ';
+$PHPMAILER_LANG['instantiate']          = 'mail ფუნქციის გაშვება ვერ ხერხდება.';
+$PHPMAILER_LANG['provide_address']      = 'გთხოვთ მიუთითოთ ერთი ადრესატის e-mail მისამართი მაინც.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' - საფოსტო სერვერის მხარდაჭერა არ არის.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP შეცდომა: შემდეგ მისამართებზე გაგზავნა ვერ მოხერხდა: ';
+$PHPMAILER_LANG['empty_message']        = 'შეტყობინება ცარიელია';
+$PHPMAILER_LANG['invalid_address']      = 'არ გაიგზავნა, e-mail მისამართის არასწორი ფორმატი: ';
+$PHPMAILER_LANG['signing']              = 'ხელმოწერის შეცდომა: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'შეცდომა SMTP სერვერთან დაკავშირებისას';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP სერვერის შეცდომა: ';
+$PHPMAILER_LANG['variable_set']         = 'შეუძლებელია შემდეგი ცვლადის შექმნა ან შეცვლა: ';
+$PHPMAILER_LANG['extension_missing']    = 'ბიბლიოთეკა არ არსებობს: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php
new file mode 100644 (file)
index 0000000..9599fa6
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Korean PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author ChalkPE <amato0617@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP 오류: 인증할 수 없습니다.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP 오류: SMTP 호스트에 접속할 수 없습니다.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP 오류: 데이터가 받아들여지지 않았습니다.';
+$PHPMAILER_LANG['empty_message']        = '메세지 내용이 없습니다';
+$PHPMAILER_LANG['encoding']             = '알 수 없는 인코딩: ';
+$PHPMAILER_LANG['execute']              = '실행 불가: ';
+$PHPMAILER_LANG['file_access']          = '파일 접근 불가: ';
+$PHPMAILER_LANG['file_open']            = '파일 오류: 파일을 열 수 없습니다: ';
+$PHPMAILER_LANG['from_failed']          = '다음 From 주소에서 오류가 발생했습니다: ';
+$PHPMAILER_LANG['instantiate']          = 'mail 함수를 인스턴스화할 수 없습니다';
+$PHPMAILER_LANG['invalid_address']      = '잘못된 주소: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' 메일러는 지원되지 않습니다.';
+$PHPMAILER_LANG['provide_address']      = '적어도 한 개 이상의 수신자 메일 주소를 제공해야 합니다.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP 오류: 다음 수신자에서 오류가 발생했습니다: ';
+$PHPMAILER_LANG['signing']              = '서명 오류: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP 연결을 실패하였습니다.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP 서버 오류: ';
+$PHPMAILER_LANG['variable_set']         = '변수 설정 및 초기화 불가: ';
+$PHPMAILER_LANG['extension_missing']    = '확장자 없음: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php
new file mode 100644 (file)
index 0000000..1253a4f
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Lithuanian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Dainius Kaupaitis <dk@sum.lt>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP klaida: autentifikacija nepavyko.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP klaida: nepavyksta prisijungti prie SMTP stoties.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP klaida: duomenys nepriimti.';
+$PHPMAILER_LANG['empty_message']        = 'Laiško turinys tuščias';
+$PHPMAILER_LANG['encoding']             = 'Neatpažinta koduotė: ';
+$PHPMAILER_LANG['execute']              = 'Nepavyko įvykdyti komandos: ';
+$PHPMAILER_LANG['file_access']          = 'Byla nepasiekiama: ';
+$PHPMAILER_LANG['file_open']            = 'Bylos klaida: Nepavyksta atidaryti: ';
+$PHPMAILER_LANG['from_failed']          = 'Neteisingas siuntėjo adresas: ';
+$PHPMAILER_LANG['instantiate']          = 'Nepavyko paleisti mail funkcijos.';
+$PHPMAILER_LANG['invalid_address']      = 'Neteisingas adresas: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' pašto stotis nepalaikoma.';
+$PHPMAILER_LANG['provide_address']      = 'Nurodykite bent vieną gavėjo adresą.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP klaida: nepavyko išsiųsti šiems gavėjams: ';
+$PHPMAILER_LANG['signing']              = 'Prisijungimo klaida: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP susijungimo klaida';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP stoties klaida: ';
+$PHPMAILER_LANG['variable_set']         = 'Nepavyko priskirti reikšmės kintamajam: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php
new file mode 100644 (file)
index 0000000..39bf9a1
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Latvian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Eduards M. <e@npd.lv>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP kļūda: Autorizācija neizdevās.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Kļūda: Nevar izveidot savienojumu ar SMTP serveri.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Kļūda: Nepieņem informāciju.';
+$PHPMAILER_LANG['empty_message']        = 'Ziņojuma teksts ir tukšs';
+$PHPMAILER_LANG['encoding']             = 'Neatpazīts kodējums: ';
+$PHPMAILER_LANG['execute']              = 'Neizdevās izpildīt komandu: ';
+$PHPMAILER_LANG['file_access']          = 'Fails nav pieejams: ';
+$PHPMAILER_LANG['file_open']            = 'Faila kļūda: Nevar atvērt failu: ';
+$PHPMAILER_LANG['from_failed']          = 'Nepareiza sūtītāja adrese: ';
+$PHPMAILER_LANG['instantiate']          = 'Nevar palaist sūtīšanas funkciju.';
+$PHPMAILER_LANG['invalid_address']      = 'Nepareiza adrese: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' sūtītājs netiek atbalstīts.';
+$PHPMAILER_LANG['provide_address']      = 'Lūdzu, norādiet vismaz vienu adresātu.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP kļūda: neizdevās nosūtīt šādiem saņēmējiem: ';
+$PHPMAILER_LANG['signing']              = 'Autorizācijas kļūda: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP savienojuma kļūda';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP servera kļūda: ';
+$PHPMAILER_LANG['variable_set']         = 'Nevar piešķirt mainīgā vērtību: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php
new file mode 100644 (file)
index 0000000..f4c7563
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Malagasy PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Hackinet <piyushjha8164@gmail.com>
+ */
+$PHPMAILER_LANG['authenticate']         = 'Hadisoana SMTP: Tsy nahomby ny fanamarinana.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Error: Tsy afaka mampifandray amin\'ny mpampiantrano SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP diso: tsy voarakitra ny angona.';
+$PHPMAILER_LANG['empty_message']        = 'Tsy misy ny votoaty mailaka.';
+$PHPMAILER_LANG['encoding']             = 'Tsy fantatra encoding: ';
+$PHPMAILER_LANG['execute']              = 'Tsy afaka manatanteraka ity baiko manaraka ity: ';
+$PHPMAILER_LANG['file_access']          = 'Tsy nahomby ny fidirana amin\'ity rakitra ity: ';
+$PHPMAILER_LANG['file_open']            = 'Hadisoana diso: Tsy afaka nanokatra ity file manaraka ity: ';
+$PHPMAILER_LANG['from_failed']          = 'Ny adiresy iraka manaraka dia diso: ';
+$PHPMAILER_LANG['instantiate']          = 'Tsy afaka nanomboka ny hetsika mail.';
+$PHPMAILER_LANG['invalid_address']      = 'Tsy mety ny adiresy: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tsy manohana.';
+$PHPMAILER_LANG['provide_address']      = 'Alefaso azafady iray adiresy iray farafahakeliny.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Error: Tsy mety ireo mpanaraka ireto: ';
+$PHPMAILER_LANG['signing']              = 'Error nandritra ny sonia:';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Tsy nahomby ny fifandraisana tamin\'ny server SMTP.';
+$PHPMAILER_LANG['smtp_error']           = 'Fahadisoana tamin\'ny server SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Tsy azo atao ny mametraka na mamerina ny variable: ';
+$PHPMAILER_LANG['extension_missing']    = 'Tsy hita ny ampahany: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php
new file mode 100644 (file)
index 0000000..f12a6ad
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Malaysian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Nawawi Jamili <nawawi@rutweb.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Ralat SMTP: Tidak dapat pengesahan.';
+$PHPMAILER_LANG['connect_host']         = 'Ralat SMTP: Tidak dapat menghubungi hos pelayan SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Ralat SMTP: Data tidak diterima oleh pelayan.';
+$PHPMAILER_LANG['empty_message']        = 'Tiada isi untuk mesej';
+$PHPMAILER_LANG['encoding']             = 'Pengekodan tidak diketahui: ';
+$PHPMAILER_LANG['execute']              = 'Tidak dapat melaksanakan: ';
+$PHPMAILER_LANG['file_access']          = 'Tidak dapat mengakses fail: ';
+$PHPMAILER_LANG['file_open']            = 'Ralat Fail: Tidak dapat membuka fail: ';
+$PHPMAILER_LANG['from_failed']          = 'Berikut merupakan ralat dari alamat e-mel: ';
+$PHPMAILER_LANG['instantiate']          = 'Tidak dapat memberi contoh fungsi e-mel.';
+$PHPMAILER_LANG['invalid_address']      = 'Alamat emel tidak sah: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' jenis penghantar emel tidak disokong.';
+$PHPMAILER_LANG['provide_address']      = 'Anda perlu menyediakan sekurang-kurangnya satu alamat e-mel penerima.';
+$PHPMAILER_LANG['recipients_failed']    = 'Ralat SMTP: Penerima e-mel berikut telah gagal: ';
+$PHPMAILER_LANG['signing']              = 'Ralat pada tanda tangan: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() telah gagal.';
+$PHPMAILER_LANG['smtp_error']           = 'Ralat pada pelayan SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Tidak boleh menetapkan atau menetapkan semula pembolehubah: ';
+$PHPMAILER_LANG['extension_missing']    = 'Sambungan hilang: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php
new file mode 100644 (file)
index 0000000..97403e7
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Norwegian Bokmål PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Feil: Kunne ikke autentisere.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Feil: Kunne ikke koble til SMTP tjener.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Feil: Datainnhold ikke akseptert.';
+$PHPMAILER_LANG['empty_message']        = 'Meldingsinnhold mangler';
+$PHPMAILER_LANG['encoding']             = 'Ukjent koding: ';
+$PHPMAILER_LANG['execute']              = 'Kunne ikke utføre: ';
+$PHPMAILER_LANG['file_access']          = 'Får ikke tilgang til filen: ';
+$PHPMAILER_LANG['file_open']            = 'Fil Feil: Kunne ikke åpne filen: ';
+$PHPMAILER_LANG['from_failed']          = 'Følgende Frå adresse feilet: ';
+$PHPMAILER_LANG['instantiate']          = 'Kunne ikke initialisere post funksjon.';
+$PHPMAILER_LANG['invalid_address']      = 'Ugyldig adresse: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' sender er ikke støttet.';
+$PHPMAILER_LANG['provide_address']      = 'Du må opppgi minst en mottakeradresse.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Feil: Følgende mottakeradresse feilet: ';
+$PHPMAILER_LANG['signing']              = 'Signering Feil: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP connect() feilet.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP server feil: ';
+$PHPMAILER_LANG['variable_set']         = 'Kan ikke skrive eller omskrive variabel: ';
+$PHPMAILER_LANG['extension_missing']    = 'Utvidelse mangler: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php
new file mode 100644 (file)
index 0000000..f4d0e7c
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Dutch PHPMailer language file: refer to PHPMailer.php for definitive list.
+ * @package PHPMailer
+ * @author Tuxion <team@tuxion.nl>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP-fout: authenticatie mislukt.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP-fout: kon niet verbinden met SMTP-host.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP-fout: data niet geaccepteerd.';
+$PHPMAILER_LANG['empty_message']        = 'Berichttekst is leeg';
+$PHPMAILER_LANG['encoding']             = 'Onbekende codering: ';
+$PHPMAILER_LANG['execute']              = 'Kon niet uitvoeren: ';
+$PHPMAILER_LANG['file_access']          = 'Kreeg geen toegang tot bestand: ';
+$PHPMAILER_LANG['file_open']            = 'Bestandsfout: kon bestand niet openen: ';
+$PHPMAILER_LANG['from_failed']          = 'Het volgende afzendersadres is mislukt: ';
+$PHPMAILER_LANG['instantiate']          = 'Kon mailfunctie niet initialiseren.';
+$PHPMAILER_LANG['invalid_address']      = 'Ongeldig adres: ';
+$PHPMAILER_LANG['invalid_hostentry']    = 'Ongeldige hostentry: ';
+$PHPMAILER_LANG['invalid_host']         = 'Ongeldige host: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wordt niet ondersteund.';
+$PHPMAILER_LANG['provide_address']      = 'Er moet minstens één ontvanger worden opgegeven.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP-fout: de volgende ontvangers zijn mislukt: ';
+$PHPMAILER_LANG['signing']              = 'Signeerfout: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Verbinding mislukt.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP-serverfout: ';
+$PHPMAILER_LANG['variable_set']         = 'Kan de volgende variabele niet instellen of resetten: ';
+$PHPMAILER_LANG['extension_missing']    = 'Extensie afwezig: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php
new file mode 100644 (file)
index 0000000..3da0dee
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Polish PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Błąd SMTP: Nie można przeprowadzić uwierzytelnienia.';
+$PHPMAILER_LANG['connect_host']         = 'Błąd SMTP: Nie można połączyć się z wybranym hostem.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Błąd SMTP: Dane nie zostały przyjęte.';
+$PHPMAILER_LANG['empty_message']        = 'Wiadomość jest pusta.';
+$PHPMAILER_LANG['encoding']             = 'Nieznany sposób kodowania znaków: ';
+$PHPMAILER_LANG['execute']              = 'Nie można uruchomić: ';
+$PHPMAILER_LANG['file_access']          = 'Brak dostępu do pliku: ';
+$PHPMAILER_LANG['file_open']            = 'Nie można otworzyć pliku: ';
+$PHPMAILER_LANG['from_failed']          = 'Następujący adres Nadawcy jest nieprawidłowy: ';
+$PHPMAILER_LANG['instantiate']          = 'Nie można wywołać funkcji mail(). Sprawdź konfigurację serwera.';
+$PHPMAILER_LANG['invalid_address']      = 'Nie można wysłać wiadomości, '.
+    'następujący adres Odbiorcy jest nieprawidłowy: ';
+$PHPMAILER_LANG['provide_address']      = 'Należy podać prawidłowy adres email Odbiorcy.';
+$PHPMAILER_LANG['mailer_not_supported'] = 'Wybrana metoda wysyłki wiadomości nie jest obsługiwana.';
+$PHPMAILER_LANG['recipients_failed']    = 'Błąd SMTP: Następujący odbiorcy są nieprawidłowi: ';
+$PHPMAILER_LANG['signing']              = 'Błąd podpisywania wiadomości: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() zakończone niepowodzeniem.';
+$PHPMAILER_LANG['smtp_error']           = 'Błąd SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Nie można ustawić lub zmodyfikować zmiennej: ';
+$PHPMAILER_LANG['extension_missing']    = 'Brakujące rozszerzenie: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php
new file mode 100644 (file)
index 0000000..f365d5d
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Portuguese (European) PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Jonadabe <jonadabe@hotmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Erro do SMTP: Não foi possível realizar a autenticação.';
+$PHPMAILER_LANG['connect_host']         = 'Erro do SMTP: Não foi possível realizar ligação com o servidor SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Erro do SMTP: Os dados foram rejeitados.';
+$PHPMAILER_LANG['empty_message']        = 'A mensagem no e-mail está vazia.';
+$PHPMAILER_LANG['encoding']             = 'Codificação desconhecida: ';
+$PHPMAILER_LANG['execute']              = 'Não foi possível executar: ';
+$PHPMAILER_LANG['file_access']          = 'Não foi possível aceder o ficheiro: ';
+$PHPMAILER_LANG['file_open']            = 'Abertura do ficheiro: Não foi possível abrir o ficheiro: ';
+$PHPMAILER_LANG['from_failed']          = 'Ocorreram falhas nos endereços dos seguintes remententes: ';
+$PHPMAILER_LANG['instantiate']          = 'Não foi possível iniciar uma instância da função mail.';
+$PHPMAILER_LANG['invalid_address']      = 'Não foi enviado nenhum e-mail para o endereço de e-mail inválido: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.';
+$PHPMAILER_LANG['provide_address']      = 'Tem de fornecer pelo menos um endereço como destinatário do e-mail.';
+$PHPMAILER_LANG['recipients_failed']    = 'Erro do SMTP: O endereço do seguinte destinatário falhou: ';
+$PHPMAILER_LANG['signing']              = 'Erro ao assinar: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() falhou.';
+$PHPMAILER_LANG['smtp_error']           = 'Erro de servidor SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Não foi possível definir ou redefinir a variável: ';
+$PHPMAILER_LANG['extension_missing']    = 'Extensão em falta: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php
new file mode 100644 (file)
index 0000000..62d692d
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Brazilian Portuguese PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Paulo Henrique Garcia <paulo@controllerweb.com.br>
+ * @author Lucas Guimarães <lucas@lucasguimaraes.com>
+ * @author Phelipe Alves <phelipealvesdesouza@gmail.com>
+ * @author Fabio Beneditto <fabiobeneditto@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Erro de SMTP: Não foi possível autenticar.';
+$PHPMAILER_LANG['connect_host']         = 'Erro de SMTP: Não foi possível conectar ao servidor SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Erro de SMTP: Dados rejeitados.';
+$PHPMAILER_LANG['empty_message']        = 'Mensagem vazia';
+$PHPMAILER_LANG['encoding']             = 'Codificação desconhecida: ';
+$PHPMAILER_LANG['execute']              = 'Não foi possível executar: ';
+$PHPMAILER_LANG['file_access']          = 'Não foi possível acessar o arquivo: ';
+$PHPMAILER_LANG['file_open']            = 'Erro de Arquivo: Não foi possível abrir o arquivo: ';
+$PHPMAILER_LANG['from_failed']          = 'Os seguintes remetentes falharam: ';
+$PHPMAILER_LANG['instantiate']          = 'Não foi possível instanciar a função mail.';
+$PHPMAILER_LANG['invalid_address']      = 'Endereço de e-mail inválido: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.';
+$PHPMAILER_LANG['provide_address']      = 'Você deve informar pelo menos um destinatário.';
+$PHPMAILER_LANG['recipients_failed']    = 'Erro de SMTP: Os seguintes destinatários falharam: ';
+$PHPMAILER_LANG['signing']              = 'Erro de Assinatura: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() falhou.';
+$PHPMAILER_LANG['smtp_error']           = 'Erro de servidor SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Não foi possível definir ou redefinir a variável: ';
+$PHPMAILER_LANG['extension_missing']    = 'Extensão não existe: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php
new file mode 100644 (file)
index 0000000..fa100ea
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Romanian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Alex Florea <alecz.fia@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Eroare SMTP: Autentificarea a eșuat.';
+$PHPMAILER_LANG['connect_host']         = 'Eroare SMTP: Conectarea la serverul SMTP a eșuat.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Eroare SMTP: Datele nu au fost acceptate.';
+$PHPMAILER_LANG['empty_message']        = 'Mesajul este gol.';
+$PHPMAILER_LANG['encoding']             = 'Encodare necunoscută: ';
+$PHPMAILER_LANG['execute']              = 'Nu se poate executa următoarea comandă:  ';
+$PHPMAILER_LANG['file_access']          = 'Nu se poate accesa următorul fișier: ';
+$PHPMAILER_LANG['file_open']            = 'Eroare fișier: Nu se poate deschide următorul fișier: ';
+$PHPMAILER_LANG['from_failed']          = 'Următoarele adrese From au dat eroare: ';
+$PHPMAILER_LANG['instantiate']          = 'Funcția mail nu a putut fi inițializată.';
+$PHPMAILER_LANG['invalid_address']      = 'Adresa de email nu este validă: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.';
+$PHPMAILER_LANG['provide_address']      = 'Trebuie să adăugați cel puțin o adresă de email.';
+$PHPMAILER_LANG['recipients_failed']    = 'Eroare SMTP: Următoarele adrese de email au eșuat: ';
+$PHPMAILER_LANG['signing']              = 'A aparut o problemă la semnarea emailului. ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Conectarea la serverul SMTP a eșuat.';
+$PHPMAILER_LANG['smtp_error']           = 'Eroare server SMTP: ';
+$PHPMAILER_LANG['variable_set']         = 'Nu se poate seta/reseta variabila. ';
+$PHPMAILER_LANG['extension_missing']    = 'Lipsește extensia: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php
new file mode 100644 (file)
index 0000000..720e9a1
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Russian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Alexey Chumakov <alex@chumakov.ru>
+ * @author Foster Snowhill <i18n@forstwoof.ru>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Ошибка SMTP: ошибка авторизации.';
+$PHPMAILER_LANG['connect_host']         = 'Ошибка SMTP: не удается подключиться к SMTP-серверу.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Ошибка SMTP: данные не приняты.';
+$PHPMAILER_LANG['encoding']             = 'Неизвестная кодировка: ';
+$PHPMAILER_LANG['execute']              = 'Невозможно выполнить команду: ';
+$PHPMAILER_LANG['file_access']          = 'Нет доступа к файлу: ';
+$PHPMAILER_LANG['file_open']            = 'Файловая ошибка: не удаётся открыть файл: ';
+$PHPMAILER_LANG['from_failed']          = 'Неверный адрес отправителя: ';
+$PHPMAILER_LANG['instantiate']          = 'Невозможно запустить функцию mail().';
+$PHPMAILER_LANG['provide_address']      = 'Пожалуйста, введите хотя бы один email-адрес получателя.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.';
+$PHPMAILER_LANG['recipients_failed']    = 'Ошибка SMTP: не удалась отправка таким адресатам: ';
+$PHPMAILER_LANG['empty_message']        = 'Пустое сообщение';
+$PHPMAILER_LANG['invalid_address']      = 'Не отправлено из-за неправильного формата email-адреса: ';
+$PHPMAILER_LANG['signing']              = 'Ошибка подписи: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Ошибка соединения с SMTP-сервером';
+$PHPMAILER_LANG['smtp_error']           = 'Ошибка SMTP-сервера: ';
+$PHPMAILER_LANG['variable_set']         = 'Невозможно установить или сбросить переменную: ';
+$PHPMAILER_LANG['extension_missing']    = 'Расширение отсутствует: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php
new file mode 100644 (file)
index 0000000..69cfb0f
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Slovak PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Michal Tinka <michaltinka@gmail.com>
+ * @author Peter Orlický <pcmanik91@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Error: Chyba autentifikácie.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Error: Nebolo možné nadviazať spojenie so SMTP serverom.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Error: Dáta neboli prijaté';
+$PHPMAILER_LANG['empty_message']        = 'Prázdne telo správy.';
+$PHPMAILER_LANG['encoding']             = 'Neznáme kódovanie: ';
+$PHPMAILER_LANG['execute']              = 'Nedá sa vykonať: ';
+$PHPMAILER_LANG['file_access']          = 'Súbor nebol nájdený: ';
+$PHPMAILER_LANG['file_open']            = 'File Error: Súbor sa otvoriť pre čítanie: ';
+$PHPMAILER_LANG['from_failed']          = 'Následujúca adresa From je nesprávna: ';
+$PHPMAILER_LANG['instantiate']          = 'Nedá sa vytvoriť inštancia emailovej funkcie.';
+$PHPMAILER_LANG['invalid_address']      = 'Neodoslané, emailová adresa je nesprávna: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' emailový klient nieje podporovaný.';
+$PHPMAILER_LANG['provide_address']      = 'Musíte zadať aspoň jednu emailovú adresu príjemcu.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Error: Adresy príjemcov niesu správne ';
+$PHPMAILER_LANG['signing']              = 'Chyba prihlasovania: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() zlyhalo.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP chyba serveru: ';
+$PHPMAILER_LANG['variable_set']         = 'Nemožno nastaviť alebo resetovať premennú: ';
+$PHPMAILER_LANG['extension_missing']    = 'Chýba rozšírenie: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php
new file mode 100644 (file)
index 0000000..1e3cb7f
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Slovene PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Klemen Tušar <techouse@gmail.com>
+ * @author Filip Š <projects@filips.si>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP napaka: Avtentikacija ni uspela.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP napaka: Vzpostavljanje povezave s SMTP gostiteljem ni uspelo.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP napaka: Strežnik zavrača podatke.';
+$PHPMAILER_LANG['empty_message']        = 'E-poštno sporočilo nima vsebine.';
+$PHPMAILER_LANG['encoding']             = 'Nepoznan tip kodiranja: ';
+$PHPMAILER_LANG['execute']              = 'Operacija ni uspela: ';
+$PHPMAILER_LANG['file_access']          = 'Nimam dostopa do datoteke: ';
+$PHPMAILER_LANG['file_open']            = 'Ne morem odpreti datoteke: ';
+$PHPMAILER_LANG['from_failed']          = 'Neveljaven e-naslov pošiljatelja: ';
+$PHPMAILER_LANG['instantiate']          = 'Ne morem inicializirati mail funkcije.';
+$PHPMAILER_LANG['invalid_address']      = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.';
+$PHPMAILER_LANG['provide_address']      = 'Prosim vnesite vsaj enega naslovnika.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP napaka: Sledeči naslovniki so neveljavni: ';
+$PHPMAILER_LANG['signing']              = 'Napaka pri podpisovanju: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Ne morem vzpostaviti povezave s SMTP strežnikom.';
+$PHPMAILER_LANG['smtp_error']           = 'Napaka SMTP strežnika: ';
+$PHPMAILER_LANG['variable_set']         = 'Ne morem nastaviti oz. ponastaviti spremenljivke: ';
+$PHPMAILER_LANG['extension_missing']    = 'Manjkajoča razširitev: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php
new file mode 100644 (file)
index 0000000..34c1e18
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Serbian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Александар Јевремовић <ajevremovic@gmail.com>
+ * @author Miloš Milanović <mmilanovic016@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP грешка: аутентификација није успела.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP грешка: повезивање са SMTP сервером није успело.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP грешка: подаци нису прихваћени.';
+$PHPMAILER_LANG['empty_message']        = 'Садржај поруке је празан.';
+$PHPMAILER_LANG['encoding']             = 'Непознато кодирање: ';
+$PHPMAILER_LANG['execute']              = 'Није могуће извршити наредбу: ';
+$PHPMAILER_LANG['file_access']          = 'Није могуће приступити датотеци: ';
+$PHPMAILER_LANG['file_open']            = 'Није могуће отворити датотеку: ';
+$PHPMAILER_LANG['from_failed']          = 'SMTP грешка: слање са следећих адреса није успело: ';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP грешка: слање на следеће адресе није успело: ';
+$PHPMAILER_LANG['instantiate']          = 'Није могуће покренути mail функцију.';
+$PHPMAILER_LANG['invalid_address']      = 'Порука није послата. Неисправна адреса: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' мејлер није подржан.';
+$PHPMAILER_LANG['provide_address']      = 'Дефинишите бар једну адресу примаоца.';
+$PHPMAILER_LANG['signing']              = 'Грешка приликом пријаве: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Повезивање са SMTP сервером није успело.';
+$PHPMAILER_LANG['smtp_error']           = 'Грешка SMTP сервера: ';
+$PHPMAILER_LANG['variable_set']         = 'Није могуће задати нити ресетовати променљиву: ';
+$PHPMAILER_LANG['extension_missing']    = 'Недостаје проширење: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php
new file mode 100644 (file)
index 0000000..c78237e
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Swedish PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Johan Linnér <johan@linner.biz>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP fel: Kunde inte autentisera.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP fel: Kunde inte ansluta till SMTP-server.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP fel: Data accepterades inte.';
+//$PHPMAILER_LANG['empty_message']        = 'Message body empty';
+$PHPMAILER_LANG['encoding']             = 'Okänt encode-format: ';
+$PHPMAILER_LANG['execute']              = 'Kunde inte köra: ';
+$PHPMAILER_LANG['file_access']          = 'Ingen åtkomst till fil: ';
+$PHPMAILER_LANG['file_open']            = 'Fil fel: Kunde inte öppna fil: ';
+$PHPMAILER_LANG['from_failed']          = 'Följande avsändaradress är felaktig: ';
+$PHPMAILER_LANG['instantiate']          = 'Kunde inte initiera e-postfunktion.';
+$PHPMAILER_LANG['invalid_address']      = 'Felaktig adress: ';
+$PHPMAILER_LANG['provide_address']      = 'Du måste ange minst en mottagares e-postadress.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP fel: Följande mottagare är felaktig: ';
+$PHPMAILER_LANG['signing']              = 'Signeringsfel: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP Connect() misslyckades.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP serverfel: ';
+$PHPMAILER_LANG['variable_set']         = 'Kunde inte definiera eller återställa variabel: ';
+$PHPMAILER_LANG['extension_missing']    = 'Tillägg ej tillgängligt: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php
new file mode 100644 (file)
index 0000000..cd91f75
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Tagalog PHPMailer language file: refer to English translation for definitive list
+ *
+ *   @package PHPMailer
+ *   @author Adriane Justine Tan <eidoriantan@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Error: Hindi mapatotohanan.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Error: Hindi makakonekta sa SMTP host.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Error: Ang datos ay hindi naitanggap.';
+$PHPMAILER_LANG['empty_message']        = 'Walang laman ang mensahe';
+$PHPMAILER_LANG['encoding']             = 'Hindi alam ang encoding: ';
+$PHPMAILER_LANG['execute']              = 'Hindi maisasagawa: ';
+$PHPMAILER_LANG['file_access']          = 'Hindi ma-access ang file: ';
+$PHPMAILER_LANG['file_open']            = 'File Error: Hindi mabuksan ang file: ';
+$PHPMAILER_LANG['from_failed']          = 'Ang sumusunod na address ay nabigo: ';
+$PHPMAILER_LANG['instantiate']          = 'Hindi maisimulan ang instance ng mail function.';
+$PHPMAILER_LANG['invalid_address']      = 'Hindi wasto ang address na naibigay: ';
+$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado.';
+$PHPMAILER_LANG['provide_address']      = 'Kailangan mong magbigay ng kahit isang email address na tatanggap.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Error: Ang mga sumusunod na tatanggap ay nabigo: ';
+$PHPMAILER_LANG['signing']              = 'Hindi ma-sign: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Ang SMTP connect() ay nabigo.';
+$PHPMAILER_LANG['smtp_error']           = 'Ang server ng SMTP ay nabigo: ';
+$PHPMAILER_LANG['variable_set']         = 'Hindi matatakda o ma-reset ang mga variables: ';
+$PHPMAILER_LANG['extension_missing']    = 'Nawawala ang extension: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php
new file mode 100644 (file)
index 0000000..cfe8eaa
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Turkish PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Elçin Özel
+ * @author Can Yılmaz
+ * @author Mehmet Benlioğlu
+ * @author @yasinaydin
+ * @author Ogün Karakuş
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP Hatası: Oturum açılamadı.';
+$PHPMAILER_LANG['connect_host']         = 'SMTP Hatası: SMTP sunucusuna bağlanılamadı.';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP Hatası: Veri kabul edilmedi.';
+$PHPMAILER_LANG['empty_message']        = 'Mesajın içeriği boş';
+$PHPMAILER_LANG['encoding']             = 'Bilinmeyen karakter kodlama: ';
+$PHPMAILER_LANG['execute']              = 'Çalıştırılamadı: ';
+$PHPMAILER_LANG['file_access']          = 'Dosyaya erişilemedi: ';
+$PHPMAILER_LANG['file_open']            = 'Dosya Hatası: Dosya açılamadı: ';
+$PHPMAILER_LANG['from_failed']          = 'Belirtilen adreslere gönderme başarısız: ';
+$PHPMAILER_LANG['instantiate']          = 'Örnek e-posta fonksiyonu oluşturulamadı.';
+$PHPMAILER_LANG['invalid_address']      = 'Geçersiz e-posta adresi: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' e-posta kütüphanesi desteklenmiyor.';
+$PHPMAILER_LANG['provide_address']      = 'En az bir alıcı e-posta adresi belirtmelisiniz.';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP Hatası: Belirtilen alıcılara ulaşılamadı: ';
+$PHPMAILER_LANG['signing']              = 'İmzalama hatası: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP connect() fonksiyonu başarısız.';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP sunucu hatası: ';
+$PHPMAILER_LANG['variable_set']         = 'Değişken ayarlanamadı ya da sıfırlanamadı: ';
+$PHPMAILER_LANG['extension_missing']    = 'Eklenti bulunamadı: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php
new file mode 100644 (file)
index 0000000..fcd77ad
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Ukrainian PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author Yuriy Rudyy <yrudyy@prs.net.ua>
+ * @fixed by Boris Yurchenko <boris@yurchenko.pp.ua>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Помилка SMTP: помилка авторизації.';
+$PHPMAILER_LANG['connect_host']         = 'Помилка SMTP: не вдається під\'єднатися до SMTP-серверу.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Помилка SMTP: дані не прийнято.';
+$PHPMAILER_LANG['encoding']             = 'Невідоме кодування: ';
+$PHPMAILER_LANG['execute']              = 'Неможливо виконати команду: ';
+$PHPMAILER_LANG['file_access']          = 'Немає доступу до файлу: ';
+$PHPMAILER_LANG['file_open']            = 'Помилка файлової системи: не вдається відкрити файл: ';
+$PHPMAILER_LANG['from_failed']          = 'Невірна адреса відправника: ';
+$PHPMAILER_LANG['instantiate']          = 'Неможливо запустити функцію mail().';
+$PHPMAILER_LANG['provide_address']      = 'Будь-ласка, введіть хоча б одну email-адресу отримувача.';
+$PHPMAILER_LANG['mailer_not_supported'] = ' - поштовий сервер не підтримується.';
+$PHPMAILER_LANG['recipients_failed']    = 'Помилка SMTP: не вдалося відправлення для таких отримувачів: ';
+$PHPMAILER_LANG['empty_message']        = 'Пусте повідомлення';
+$PHPMAILER_LANG['invalid_address']      = 'Не відправлено через невірний формат email-адреси: ';
+$PHPMAILER_LANG['signing']              = 'Помилка підпису: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Помилка з\'єднання з SMTP-сервером';
+$PHPMAILER_LANG['smtp_error']           = 'Помилка SMTP-сервера: ';
+$PHPMAILER_LANG['variable_set']         = 'Неможливо встановити або скинути змінну: ';
+$PHPMAILER_LANG['extension_missing']    = 'Розширення відсутнє: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php
new file mode 100644 (file)
index 0000000..c60dade
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Vietnamese (Tiếng Việt) PHPMailer language file: refer to English translation for definitive list.
+ * @package PHPMailer
+ * @author VINADES.,JSC <contact@vinades.vn>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'Lỗi SMTP: Không thể xác thực.';
+$PHPMAILER_LANG['connect_host']         = 'Lỗi SMTP: Không thể kết nối máy chủ SMTP.';
+$PHPMAILER_LANG['data_not_accepted']    = 'Lỗi SMTP: Dữ liệu không được chấp nhận.';
+$PHPMAILER_LANG['empty_message']        = 'Không có nội dung';
+$PHPMAILER_LANG['encoding']             = 'Mã hóa không xác định: ';
+$PHPMAILER_LANG['execute']              = 'Không thực hiện được: ';
+$PHPMAILER_LANG['file_access']          = 'Không thể truy cập tệp tin ';
+$PHPMAILER_LANG['file_open']            = 'Lỗi Tập tin: Không thể mở tệp tin: ';
+$PHPMAILER_LANG['from_failed']          = 'Lỗi địa chỉ gửi đi: ';
+$PHPMAILER_LANG['instantiate']          = 'Không dùng được các hàm gửi thư.';
+$PHPMAILER_LANG['invalid_address']      = 'Đại chỉ emai không đúng: ';
+$PHPMAILER_LANG['mailer_not_supported'] = ' trình gửi thư không được hỗ trợ.';
+$PHPMAILER_LANG['provide_address']      = 'Bạn phải cung cấp ít nhất một địa chỉ người nhận.';
+$PHPMAILER_LANG['recipients_failed']    = 'Lỗi SMTP: lỗi địa chỉ người nhận: ';
+$PHPMAILER_LANG['signing']              = 'Lỗi đăng nhập: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'Lỗi kết nối với SMTP';
+$PHPMAILER_LANG['smtp_error']           = 'Lỗi máy chủ smtp ';
+$PHPMAILER_LANG['variable_set']         = 'Không thể thiết lập hoặc thiết lập lại biến: ';
+//$PHPMAILER_LANG['extension_missing']    = 'Extension missing: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php
new file mode 100644 (file)
index 0000000..3e9e358
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Traditional Chinese PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author liqwei <liqwei@liqwei.com>
+ * @author Peter Dave Hello <@PeterDaveHello/>
+ * @author Jason Chiang <xcojad@gmail.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP 錯誤:登入失敗。';
+$PHPMAILER_LANG['connect_host']         = 'SMTP 錯誤:無法連線到 SMTP 主機。';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP 錯誤:無法接受的資料。';
+$PHPMAILER_LANG['empty_message']        = '郵件內容為空';
+$PHPMAILER_LANG['encoding']             = '未知編碼: ';
+$PHPMAILER_LANG['execute']              = '無法執行:';
+$PHPMAILER_LANG['file_access']          = '無法存取檔案:';
+$PHPMAILER_LANG['file_open']            = '檔案錯誤:無法開啟檔案:';
+$PHPMAILER_LANG['from_failed']          = '發送地址錯誤:';
+$PHPMAILER_LANG['instantiate']          = '未知函數呼叫。';
+$PHPMAILER_LANG['invalid_address']      = '因為電子郵件地址無效,無法傳送: ';
+$PHPMAILER_LANG['mailer_not_supported'] = '不支援的發信客戶端。';
+$PHPMAILER_LANG['provide_address']      = '必須提供至少一個收件人地址。';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP 錯誤:以下收件人地址錯誤:';
+$PHPMAILER_LANG['signing']              = '電子簽章錯誤: ';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP 連線失敗';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP 伺服器錯誤: ';
+$PHPMAILER_LANG['variable_set']         = '無法設定或重設變數: ';
+$PHPMAILER_LANG['extension_missing']    = '遺失模組 Extension: ';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php b/admin/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php
new file mode 100644 (file)
index 0000000..3753780
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Simplified Chinese PHPMailer language file: refer to English translation for definitive list
+ * @package PHPMailer
+ * @author liqwei <liqwei@liqwei.com>
+ * @author young <masxy@foxmail.com>
+ * @author Teddysun <i@teddysun.com>
+ */
+
+$PHPMAILER_LANG['authenticate']         = 'SMTP 错误:登录失败。';
+$PHPMAILER_LANG['connect_host']         = 'SMTP 错误:无法连接到 SMTP 主机。';
+$PHPMAILER_LANG['data_not_accepted']    = 'SMTP 错误:数据不被接受。';
+$PHPMAILER_LANG['empty_message']        = '邮件正文为空。';
+$PHPMAILER_LANG['encoding']             = '未知编码:';
+$PHPMAILER_LANG['execute']              = '无法执行:';
+$PHPMAILER_LANG['file_access']          = '无法访问文件:';
+$PHPMAILER_LANG['file_open']            = '文件错误:无法打开文件:';
+$PHPMAILER_LANG['from_failed']          = '发送地址错误:';
+$PHPMAILER_LANG['instantiate']          = '未知函数调用。';
+$PHPMAILER_LANG['invalid_address']      = '发送失败,电子邮箱地址是无效的:';
+$PHPMAILER_LANG['mailer_not_supported'] = '发信客户端不被支持。';
+$PHPMAILER_LANG['provide_address']      = '必须提供至少一个收件人地址。';
+$PHPMAILER_LANG['recipients_failed']    = 'SMTP 错误:收件人地址错误:';
+$PHPMAILER_LANG['signing']              = '登录失败:';
+$PHPMAILER_LANG['smtp_connect_failed']  = 'SMTP服务器连接失败。';
+$PHPMAILER_LANG['smtp_error']           = 'SMTP服务器出错:';
+$PHPMAILER_LANG['variable_set']         = '无法设置或重置变量:';
+$PHPMAILER_LANG['extension_missing']    = '丢失模块 Extension:';
diff --git a/admin/lib/vendor/phpmailer/phpmailer/src/Exception.php b/admin/lib/vendor/phpmailer/phpmailer/src/Exception.php
new file mode 100644 (file)
index 0000000..e7807fc
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+/**
+ * PHPMailer Exception class.
+ * PHP Version 5.5.
+ *
+ * @see       https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
+ *
+ * @author    Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
+ * @author    Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author    Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author    Brent R. Matzelle (original founder)
+ * @copyright 2012 - 2020 Marcus Bointon
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @license   http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ * @note      This program is distributed in the hope that it will be useful - WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+namespace PHPMailer\PHPMailer;
+
+/**
+ * PHPMailer exception handler.
+ *
+ * @author Marcus Bointon <phpmailer@synchromedia.co.uk>
+ */
+class Exception extends \Exception
+{
+    /**
+     * Prettify error message output.
+     *
+     * @return string
+     */
+    public function errorMessage()
+    {
+        return '<strong>' . htmlspecialchars($this->getMessage()) . "</strong><br />\n";
+    }
+}
diff --git a/admin/lib/vendor/phpmailer/phpmailer/src/OAuth.php b/admin/lib/vendor/phpmailer/phpmailer/src/OAuth.php
new file mode 100644 (file)
index 0000000..753aac9
--- /dev/null
@@ -0,0 +1,138 @@
+<?php
+/**
+ * PHPMailer - PHP email creation and transport class.
+ * PHP Version 5.5.
+ *
+ * @see       https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
+ *
+ * @author    Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
+ * @author    Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author    Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author    Brent R. Matzelle (original founder)
+ * @copyright 2012 - 2020 Marcus Bointon
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @license   http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ * @note      This program is distributed in the hope that it will be useful - WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+namespace PHPMailer\PHPMailer;
+
+use League\OAuth2\Client\Grant\RefreshToken;
+use League\OAuth2\Client\Provider\AbstractProvider;
+use League\OAuth2\Client\Token\AccessToken;
+
+/**
+ * OAuth - OAuth2 authentication wrapper class.
+ * Uses the oauth2-client package from the League of Extraordinary Packages.
+ *
+ * @see     http://oauth2-client.thephpleague.com
+ *
+ * @author  Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
+ */
+class OAuth
+{
+    /**
+     * An instance of the League OAuth Client Provider.
+     *
+     * @var AbstractProvider
+     */
+    protected $provider;
+
+    /**
+     * The current OAuth access token.
+     *
+     * @var AccessToken
+     */
+    protected $oauthToken;
+
+    /**
+     * The user's email address, usually used as the login ID
+     * and also the from address when sending email.
+     *
+     * @var string
+     */
+    protected $oauthUserEmail = '';
+
+    /**
+     * The client secret, generated in the app definition of the service you're connecting to.
+     *
+     * @var string
+     */
+    protected $oauthClientSecret = '';
+
+    /**
+     * The client ID, generated in the app definition of the service you're connecting to.
+     *
+     * @var string
+     */
+    protected $oauthClientId = '';
+
+    /**
+     * The refresh token, used to obtain new AccessTokens.
+     *
+     * @var string
+     */
+    protected $oauthRefreshToken = '';
+
+    /**
+     * OAuth constructor.
+     *
+     * @param array $options Associative array containing
+     *                       `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements
+     */
+    public function __construct($options)
+    {
+        $this->provider = $options['provider'];
+        $this->oauthUserEmail = $options['userName'];
+        $this->oauthClientSecret = $options['clientSecret'];
+        $this->oauthClientId = $options['clientId'];
+        $this->oauthRefreshToken = $options['refreshToken'];
+    }
+
+    /**
+     * Get a new RefreshToken.
+     *
+     * @return RefreshToken
+     */
+    protected function getGrant()
+    {
+        return new RefreshToken();
+    }
+
+    /**
+     * Get a new AccessToken.
+     *
+     * @return AccessToken
+     */
+    protected function getToken()
+    {
+        return $this->provider->getAccessToken(
+            $this->getGrant(),
+            ['refresh_token' => $this->oauthRefreshToken]
+        );
+    }
+
+    /**
+     * Generate a base64-encoded OAuth token.
+     *
+     * @return string
+     */
+    public function getOauth64()
+    {
+        // Get a new token if it's not available or has expired
+        if (null === $this->oauthToken || $this->oauthToken->hasExpired()) {
+            $this->oauthToken = $this->getToken();
+        }
+
+        return base64_encode(
+            'user=' .
+            $this->oauthUserEmail .
+            "\001auth=Bearer " .
+            $this->oauthToken .
+            "\001\001"
+        );
+    }
+}
diff --git a/admin/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php b/admin/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php
new file mode 100644 (file)
index 0000000..f9498b1
--- /dev/null
@@ -0,0 +1,4860 @@
+<?php
+/**
+ * PHPMailer - PHP email creation and transport class.
+ * PHP Version 5.5.
+ *
+ * @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
+ *
+ * @author    Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
+ * @author    Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author    Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author    Brent R. Matzelle (original founder)
+ * @copyright 2012 - 2020 Marcus Bointon
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @license   http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ * @note      This program is distributed in the hope that it will be useful - WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+namespace PHPMailer\PHPMailer;
+
+/**
+ * PHPMailer - PHP email creation and transport class.
+ *
+ * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
+ * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author Brent R. Matzelle (original founder)
+ */
+class PHPMailer
+{
+    const CHARSET_ASCII = 'us-ascii';
+    const CHARSET_ISO88591 = 'iso-8859-1';
+    const CHARSET_UTF8 = 'utf-8';
+
+    const CONTENT_TYPE_PLAINTEXT = 'text/plain';
+    const CONTENT_TYPE_TEXT_CALENDAR = 'text/calendar';
+    const CONTENT_TYPE_TEXT_HTML = 'text/html';
+    const CONTENT_TYPE_MULTIPART_ALTERNATIVE = 'multipart/alternative';
+    const CONTENT_TYPE_MULTIPART_MIXED = 'multipart/mixed';
+    const CONTENT_TYPE_MULTIPART_RELATED = 'multipart/related';
+
+    const ENCODING_7BIT = '7bit';
+    const ENCODING_8BIT = '8bit';
+    const ENCODING_BASE64 = 'base64';
+    const ENCODING_BINARY = 'binary';
+    const ENCODING_QUOTED_PRINTABLE = 'quoted-printable';
+
+    const ENCRYPTION_STARTTLS = 'tls';
+    const ENCRYPTION_SMTPS = 'ssl';
+
+    const ICAL_METHOD_REQUEST = 'REQUEST';
+    const ICAL_METHOD_PUBLISH = 'PUBLISH';
+    const ICAL_METHOD_REPLY = 'REPLY';
+    const ICAL_METHOD_ADD = 'ADD';
+    const ICAL_METHOD_CANCEL = 'CANCEL';
+    const ICAL_METHOD_REFRESH = 'REFRESH';
+    const ICAL_METHOD_COUNTER = 'COUNTER';
+    const ICAL_METHOD_DECLINECOUNTER = 'DECLINECOUNTER';
+
+    /**
+     * Email priority.
+     * Options: null (default), 1 = High, 3 = Normal, 5 = low.
+     * When null, the header is not set at all.
+     *
+     * @var int|null
+     */
+    public $Priority;
+
+    /**
+     * The character set of the message.
+     *
+     * @var string
+     */
+    public $CharSet = self::CHARSET_ISO88591;
+
+    /**
+     * The MIME Content-type of the message.
+     *
+     * @var string
+     */
+    public $ContentType = self::CONTENT_TYPE_PLAINTEXT;
+
+    /**
+     * The message encoding.
+     * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable".
+     *
+     * @var string
+     */
+    public $Encoding = self::ENCODING_8BIT;
+
+    /**
+     * Holds the most recent mailer error message.
+     *
+     * @var string
+     */
+    public $ErrorInfo = '';
+
+    /**
+     * The From email address for the message.
+     *
+     * @var string
+     */
+    public $From = 'root@localhost';
+
+    /**
+     * The From name of the message.
+     *
+     * @var string
+     */
+    public $FromName = 'Root User';
+
+    /**
+     * The envelope sender of the message.
+     * This will usually be turned into a Return-Path header by the receiver,
+     * and is the address that bounces will be sent to.
+     * If not empty, will be passed via `-f` to sendmail or as the 'MAIL FROM' value over SMTP.
+     *
+     * @var string
+     */
+    public $Sender = '';
+
+    /**
+     * The Subject of the message.
+     *
+     * @var string
+     */
+    public $Subject = '';
+
+    /**
+     * An HTML or plain text message body.
+     * If HTML then call isHTML(true).
+     *
+     * @var string
+     */
+    public $Body = '';
+
+    /**
+     * The plain-text message body.
+     * This body can be read by mail clients that do not have HTML email
+     * capability such as mutt & Eudora.
+     * Clients that can read HTML will view the normal Body.
+     *
+     * @var string
+     */
+    public $AltBody = '';
+
+    /**
+     * An iCal message part body.
+     * Only supported in simple alt or alt_inline message types
+     * To generate iCal event structures, use classes like EasyPeasyICS or iCalcreator.
+     *
+     * @see http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/
+     * @see http://kigkonsult.se/iCalcreator/
+     *
+     * @var string
+     */
+    public $Ical = '';
+
+    /**
+     * Value-array of "method" in Contenttype header "text/calendar"
+     *
+     * @var string[]
+     */
+    protected static $IcalMethods = [
+        self::ICAL_METHOD_REQUEST,
+        self::ICAL_METHOD_PUBLISH,
+        self::ICAL_METHOD_REPLY,
+        self::ICAL_METHOD_ADD,
+        self::ICAL_METHOD_CANCEL,
+        self::ICAL_METHOD_REFRESH,
+        self::ICAL_METHOD_COUNTER,
+        self::ICAL_METHOD_DECLINECOUNTER,
+    ];
+
+    /**
+     * The complete compiled MIME message body.
+     *
+     * @var string
+     */
+    protected $MIMEBody = '';
+
+    /**
+     * The complete compiled MIME message headers.
+     *
+     * @var string
+     */
+    protected $MIMEHeader = '';
+
+    /**
+     * Extra headers that createHeader() doesn't fold in.
+     *
+     * @var string
+     */
+    protected $mailHeader = '';
+
+    /**
+     * Word-wrap the message body to this number of chars.
+     * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance.
+     *
+     * @see static::STD_LINE_LENGTH
+     *
+     * @var int
+     */
+    public $WordWrap = 0;
+
+    /**
+     * Which method to use to send mail.
+     * Options: "mail", "sendmail", or "smtp".
+     *
+     * @var string
+     */
+    public $Mailer = 'mail';
+
+    /**
+     * The path to the sendmail program.
+     *
+     * @var string
+     */
+    public $Sendmail = '/usr/sbin/sendmail';
+
+    /**
+     * Whether mail() uses a fully sendmail-compatible MTA.
+     * One which supports sendmail's "-oi -f" options.
+     *
+     * @var bool
+     */
+    public $UseSendmailOptions = true;
+
+    /**
+     * The email address that a reading confirmation should be sent to, also known as read receipt.
+     *
+     * @var string
+     */
+    public $ConfirmReadingTo = '';
+
+    /**
+     * The hostname to use in the Message-ID header and as default HELO string.
+     * If empty, PHPMailer attempts to find one with, in order,
+     * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value
+     * 'localhost.localdomain'.
+     *
+     * @see PHPMailer::$Helo
+     *
+     * @var string
+     */
+    public $Hostname = '';
+
+    /**
+     * An ID to be used in the Message-ID header.
+     * If empty, a unique id will be generated.
+     * You can set your own, but it must be in the format "<id@domain>",
+     * as defined in RFC5322 section 3.6.4 or it will be ignored.
+     *
+     * @see https://tools.ietf.org/html/rfc5322#section-3.6.4
+     *
+     * @var string
+     */
+    public $MessageID = '';
+
+    /**
+     * The message Date to be used in the Date header.
+     * If empty, the current date will be added.
+     *
+     * @var string
+     */
+    public $MessageDate = '';
+
+    /**
+     * SMTP hosts.
+     * Either a single hostname or multiple semicolon-delimited hostnames.
+     * You can also specify a different port
+     * for each host by using this format: [hostname:port]
+     * (e.g. "smtp1.example.com:25;smtp2.example.com").
+     * You can also specify encryption type, for example:
+     * (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465").
+     * Hosts will be tried in order.
+     *
+     * @var string
+     */
+    public $Host = 'localhost';
+
+    /**
+     * The default SMTP server port.
+     *
+     * @var int
+     */
+    public $Port = 25;
+
+    /**
+     * The SMTP HELO/EHLO name used for the SMTP connection.
+     * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find
+     * one with the same method described above for $Hostname.
+     *
+     * @see PHPMailer::$Hostname
+     *
+     * @var string
+     */
+    public $Helo = '';
+
+    /**
+     * What kind of encryption to use on the SMTP connection.
+     * Options: '', static::ENCRYPTION_STARTTLS, or static::ENCRYPTION_SMTPS.
+     *
+     * @var string
+     */
+    public $SMTPSecure = '';
+
+    /**
+     * Whether to enable TLS encryption automatically if a server supports it,
+     * even if `SMTPSecure` is not set to 'tls'.
+     * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid.
+     *
+     * @var bool
+     */
+    public $SMTPAutoTLS = true;
+
+    /**
+     * Whether to use SMTP authentication.
+     * Uses the Username and Password properties.
+     *
+     * @see PHPMailer::$Username
+     * @see PHPMailer::$Password
+     *
+     * @var bool
+     */
+    public $SMTPAuth = false;
+
+    /**
+     * Options array passed to stream_context_create when connecting via SMTP.
+     *
+     * @var array
+     */
+    public $SMTPOptions = [];
+
+    /**
+     * SMTP username.
+     *
+     * @var string
+     */
+    public $Username = '';
+
+    /**
+     * SMTP password.
+     *
+     * @var string
+     */
+    public $Password = '';
+
+    /**
+     * SMTP auth type.
+     * Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2, attempted in that order if not specified.
+     *
+     * @var string
+     */
+    public $AuthType = '';
+
+    /**
+     * An instance of the PHPMailer OAuth class.
+     *
+     * @var OAuth
+     */
+    protected $oauth;
+
+    /**
+     * The SMTP server timeout in seconds.
+     * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2.
+     *
+     * @var int
+     */
+    public $Timeout = 300;
+
+    /**
+     * Comma separated list of DSN notifications
+     * 'NEVER' under no circumstances a DSN must be returned to the sender.
+     *         If you use NEVER all other notifications will be ignored.
+     * 'SUCCESS' will notify you when your mail has arrived at its destination.
+     * 'FAILURE' will arrive if an error occurred during delivery.
+     * 'DELAY'   will notify you if there is an unusual delay in delivery, but the actual
+     *           delivery's outcome (success or failure) is not yet decided.
+     *
+     * @see https://tools.ietf.org/html/rfc3461 See section 4.1 for more information about NOTIFY
+     */
+    public $dsn = '';
+
+    /**
+     * SMTP class debug output mode.
+     * Debug output level.
+     * Options:
+     * * SMTP::DEBUG_OFF: No output
+     * * SMTP::DEBUG_CLIENT: Client messages
+     * * SMTP::DEBUG_SERVER: Client and server messages
+     * * SMTP::DEBUG_CONNECTION: As SERVER plus connection status
+     * * SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed
+     *
+     * @see SMTP::$do_debug
+     *
+     * @var int
+     */
+    public $SMTPDebug = 0;
+
+    /**
+     * How to handle debug output.
+     * Options:
+     * * `echo` Output plain-text as-is, appropriate for CLI
+     * * `html` Output escaped, line breaks converted to `<br>`, appropriate for browser output
+     * * `error_log` Output to error log as configured in php.ini
+     * By default PHPMailer will use `echo` if run from a `cli` or `cli-server` SAPI, `html` otherwise.
+     * Alternatively, you can provide a callable expecting two params: a message string and the debug level:
+     *
+     * ```php
+     * $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";};
+     * ```
+     *
+     * Alternatively, you can pass in an instance of a PSR-3 compatible logger, though only `debug`
+     * level output is used:
+     *
+     * ```php
+     * $mail->Debugoutput = new myPsr3Logger;
+     * ```
+     *
+     * @see SMTP::$Debugoutput
+     *
+     * @var string|callable|\Psr\Log\LoggerInterface
+     */
+    public $Debugoutput = 'echo';
+
+    /**
+     * Whether to keep SMTP connection open after each message.
+     * If this is set to true then to close the connection
+     * requires an explicit call to smtpClose().
+     *
+     * @var bool
+     */
+    public $SMTPKeepAlive = false;
+
+    /**
+     * Whether to split multiple to addresses into multiple messages
+     * or send them all in one message.
+     * Only supported in `mail` and `sendmail` transports, not in SMTP.
+     *
+     * @var bool
+     *
+     * @deprecated 6.0.0 PHPMailer isn't a mailing list manager!
+     */
+    public $SingleTo = false;
+
+    /**
+     * Storage for addresses when SingleTo is enabled.
+     *
+     * @var array
+     */
+    protected $SingleToArray = [];
+
+    /**
+     * Whether to generate VERP addresses on send.
+     * Only applicable when sending via SMTP.
+     *
+     * @see https://en.wikipedia.org/wiki/Variable_envelope_return_path
+     * @see http://www.postfix.org/VERP_README.html Postfix VERP info
+     *
+     * @var bool
+     */
+    public $do_verp = false;
+
+    /**
+     * Whether to allow sending messages with an empty body.
+     *
+     * @var bool
+     */
+    public $AllowEmpty = false;
+
+    /**
+     * DKIM selector.
+     *
+     * @var string
+     */
+    public $DKIM_selector = '';
+
+    /**
+     * DKIM Identity.
+     * Usually the email address used as the source of the email.
+     *
+     * @var string
+     */
+    public $DKIM_identity = '';
+
+    /**
+     * DKIM passphrase.
+     * Used if your key is encrypted.
+     *
+     * @var string
+     */
+    public $DKIM_passphrase = '';
+
+    /**
+     * DKIM signing domain name.
+     *
+     * @example 'example.com'
+     *
+     * @var string
+     */
+    public $DKIM_domain = '';
+
+    /**
+     * DKIM Copy header field values for diagnostic use.
+     *
+     * @var bool
+     */
+    public $DKIM_copyHeaderFields = true;
+
+    /**
+     * DKIM Extra signing headers.
+     *
+     * @example ['List-Unsubscribe', 'List-Help']
+     *
+     * @var array
+     */
+    public $DKIM_extraHeaders = [];
+
+    /**
+     * DKIM private key file path.
+     *
+     * @var string
+     */
+    public $DKIM_private = '';
+
+    /**
+     * DKIM private key string.
+     *
+     * If set, takes precedence over `$DKIM_private`.
+     *
+     * @var string
+     */
+    public $DKIM_private_string = '';
+
+    /**
+     * Callback Action function name.
+     *
+     * The function that handles the result of the send email action.
+     * It is called out by send() for each email sent.
+     *
+     * Value can be any php callable: http://www.php.net/is_callable
+     *
+     * Parameters:
+     *   bool $result        result of the send action
+     *   array   $to            email addresses of the recipients
+     *   array   $cc            cc email addresses
+     *   array   $bcc           bcc email addresses
+     *   string  $subject       the subject
+     *   string  $body          the email body
+     *   string  $from          email address of sender
+     *   string  $extra         extra information of possible use
+     *                          "smtp_transaction_id' => last smtp transaction id
+     *
+     * @var string
+     */
+    public $action_function = '';
+
+    /**
+     * What to put in the X-Mailer header.
+     * Options: An empty string for PHPMailer default, whitespace/null for none, or a string to use.
+     *
+     * @var string|null
+     */
+    public $XMailer = '';
+
+    /**
+     * Which validator to use by default when validating email addresses.
+     * May be a callable to inject your own validator, but there are several built-in validators.
+     * The default validator uses PHP's FILTER_VALIDATE_EMAIL filter_var option.
+     *
+     * @see PHPMailer::validateAddress()
+     *
+     * @var string|callable
+     */
+    public static $validator = 'php';
+
+    /**
+     * An instance of the SMTP sender class.
+     *
+     * @var SMTP
+     */
+    protected $smtp;
+
+    /**
+     * The array of 'to' names and addresses.
+     *
+     * @var array
+     */
+    protected $to = [];
+
+    /**
+     * The array of 'cc' names and addresses.
+     *
+     * @var array
+     */
+    protected $cc = [];
+
+    /**
+     * The array of 'bcc' names and addresses.
+     *
+     * @var array
+     */
+    protected $bcc = [];
+
+    /**
+     * The array of reply-to names and addresses.
+     *
+     * @var array
+     */
+    protected $ReplyTo = [];
+
+    /**
+     * An array of all kinds of addresses.
+     * Includes all of $to, $cc, $bcc.
+     *
+     * @see PHPMailer::$to
+     * @see PHPMailer::$cc
+     * @see PHPMailer::$bcc
+     *
+     * @var array
+     */
+    protected $all_recipients = [];
+
+    /**
+     * An array of names and addresses queued for validation.
+     * In send(), valid and non duplicate entries are moved to $all_recipients
+     * and one of $to, $cc, or $bcc.
+     * This array is used only for addresses with IDN.
+     *
+     * @see PHPMailer::$to
+     * @see PHPMailer::$cc
+     * @see PHPMailer::$bcc
+     * @see PHPMailer::$all_recipients
+     *
+     * @var array
+     */
+    protected $RecipientsQueue = [];
+
+    /**
+     * An array of reply-to names and addresses queued for validation.
+     * In send(), valid and non duplicate entries are moved to $ReplyTo.
+     * This array is used only for addresses with IDN.
+     *
+     * @see PHPMailer::$ReplyTo
+     *
+     * @var array
+     */
+    protected $ReplyToQueue = [];
+
+    /**
+     * The array of attachments.
+     *
+     * @var array
+     */
+    protected $attachment = [];
+
+    /**
+     * The array of custom headers.
+     *
+     * @var array
+     */
+    protected $CustomHeader = [];
+
+    /**
+     * The most recent Message-ID (including angular brackets).
+     *
+     * @var string
+     */
+    protected $lastMessageID = '';
+
+    /**
+     * The message's MIME type.
+     *
+     * @var string
+     */
+    protected $message_type = '';
+
+    /**
+     * The array of MIME boundary strings.
+     *
+     * @var array
+     */
+    protected $boundary = [];
+
+    /**
+     * The array of available languages.
+     *
+     * @var array
+     */
+    protected $language = [];
+
+    /**
+     * The number of errors encountered.
+     *
+     * @var int
+     */
+    protected $error_count = 0;
+
+    /**
+     * The S/MIME certificate file path.
+     *
+     * @var string
+     */
+    protected $sign_cert_file = '';
+
+    /**
+     * The S/MIME key file path.
+     *
+     * @var string
+     */
+    protected $sign_key_file = '';
+
+    /**
+     * The optional S/MIME extra certificates ("CA Chain") file path.
+     *
+     * @var string
+     */
+    protected $sign_extracerts_file = '';
+
+    /**
+     * The S/MIME password for the key.
+     * Used only if the key is encrypted.
+     *
+     * @var string
+     */
+    protected $sign_key_pass = '';
+
+    /**
+     * Whether to throw exceptions for errors.
+     *
+     * @var bool
+     */
+    protected $exceptions = false;
+
+    /**
+     * Unique ID used for message ID and boundaries.
+     *
+     * @var string
+     */
+    protected $uniqueid = '';
+
+    /**
+     * The PHPMailer Version number.
+     *
+     * @var string
+     */
+    const VERSION = '6.1.8';
+
+    /**
+     * Error severity: message only, continue processing.
+     *
+     * @var int
+     */
+    const STOP_MESSAGE = 0;
+
+    /**
+     * Error severity: message, likely ok to continue processing.
+     *
+     * @var int
+     */
+    const STOP_CONTINUE = 1;
+
+    /**
+     * Error severity: message, plus full stop, critical error reached.
+     *
+     * @var int
+     */
+    const STOP_CRITICAL = 2;
+
+    /**
+     * The SMTP standard CRLF line break.
+     * If you want to change line break format, change static::$LE, not this.
+     */
+    const CRLF = "\r\n";
+
+    /**
+     * "Folding White Space" a white space string used for line folding.
+     */
+    const FWS = ' ';
+
+    /**
+     * SMTP RFC standard line ending; Carriage Return, Line Feed.
+     *
+     * @var string
+     */
+    protected static $LE = self::CRLF;
+
+    /**
+     * The maximum line length supported by mail().
+     *
+     * Background: mail() will sometimes corrupt messages
+     * with headers headers longer than 65 chars, see #818.
+     *
+     * @var int
+     */
+    const MAIL_MAX_LINE_LENGTH = 63;
+
+    /**
+     * The maximum line length allowed by RFC 2822 section 2.1.1.
+     *
+     * @var int
+     */
+    const MAX_LINE_LENGTH = 998;
+
+    /**
+     * The lower maximum line length allowed by RFC 2822 section 2.1.1.
+     * This length does NOT include the line break
+     * 76 means that lines will be 77 or 78 chars depending on whether
+     * the line break format is LF or CRLF; both are valid.
+     *
+     * @var int
+     */
+    const STD_LINE_LENGTH = 76;
+
+    /**
+     * Constructor.
+     *
+     * @param bool $exceptions Should we throw external exceptions?
+     */
+    public function __construct($exceptions = null)
+    {
+        if (null !== $exceptions) {
+            $this->exceptions = (bool) $exceptions;
+        }
+        //Pick an appropriate debug output format automatically
+        $this->Debugoutput = (strpos(PHP_SAPI, 'cli') !== false ? 'echo' : 'html');
+    }
+
+    /**
+     * Destructor.
+     */
+    public function __destruct()
+    {
+        //Close any open SMTP connection nicely
+        $this->smtpClose();
+    }
+
+    /**
+     * Call mail() in a safe_mode-aware fashion.
+     * Also, unless sendmail_path points to sendmail (or something that
+     * claims to be sendmail), don't pass params (not a perfect fix,
+     * but it will do).
+     *
+     * @param string      $to      To
+     * @param string      $subject Subject
+     * @param string      $body    Message Body
+     * @param string      $header  Additional Header(s)
+     * @param string|null $params  Params
+     *
+     * @return bool
+     */
+    private function mailPassthru($to, $subject, $body, $header, $params)
+    {
+        //Check overloading of mail function to avoid double-encoding
+        if (ini_get('mbstring.func_overload') & 1) {
+            $subject = $this->secureHeader($subject);
+        } else {
+            $subject = $this->encodeHeader($this->secureHeader($subject));
+        }
+        //Calling mail() with null params breaks
+        if (!$this->UseSendmailOptions || null === $params) {
+            $result = @mail($to, $subject, $body, $header);
+        } else {
+            $result = @mail($to, $subject, $body, $header, $params);
+        }
+
+        return $result;
+    }
+
+    /**
+     * Output debugging info via user-defined method.
+     * Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug).
+     *
+     * @see PHPMailer::$Debugoutput
+     * @see PHPMailer::$SMTPDebug
+     *
+     * @param string $str
+     */
+    protected function edebug($str)
+    {
+        if ($this->SMTPDebug <= 0) {
+            return;
+        }
+        //Is this a PSR-3 logger?
+        if ($this->Debugoutput instanceof \Psr\Log\LoggerInterface) {
+            $this->Debugoutput->debug($str);
+
+            return;
+        }
+        //Avoid clash with built-in function names
+        if (is_callable($this->Debugoutput) && !in_array($this->Debugoutput, ['error_log', 'html', 'echo'])) {
+            call_user_func($this->Debugoutput, $str, $this->SMTPDebug);
+
+            return;
+        }
+        switch ($this->Debugoutput) {
+            case 'error_log':
+                //Don't output, just log
+                /** @noinspection ForgottenDebugOutputInspection */
+                error_log($str);
+                break;
+            case 'html':
+                //Cleans up output a bit for a better looking, HTML-safe output
+                echo htmlentities(
+                    preg_replace('/[\r\n]+/', '', $str),
+                    ENT_QUOTES,
+                    'UTF-8'
+                ), "<br>\n";
+                break;
+            case 'echo':
+            default:
+                //Normalize line breaks
+                $str = preg_replace('/\r\n|\r/m', "\n", $str);
+                echo gmdate('Y-m-d H:i:s'),
+                "\t",
+                    //Trim trailing space
+                trim(
+                    //Indent for readability, except for trailing break
+                    str_replace(
+                        "\n",
+                        "\n                   \t                  ",
+                        trim($str)
+                    )
+                ),
+                "\n";
+        }
+    }
+
+    /**
+     * Sets message type to HTML or plain.
+     *
+     * @param bool $isHtml True for HTML mode
+     */
+    public function isHTML($isHtml = true)
+    {
+        if ($isHtml) {
+            $this->ContentType = static::CONTENT_TYPE_TEXT_HTML;
+        } else {
+            $this->ContentType = static::CONTENT_TYPE_PLAINTEXT;
+        }
+    }
+
+    /**
+     * Send messages using SMTP.
+     */
+    public function isSMTP()
+    {
+        $this->Mailer = 'smtp';
+    }
+
+    /**
+     * Send messages using PHP's mail() function.
+     */
+    public function isMail()
+    {
+        $this->Mailer = 'mail';
+    }
+
+    /**
+     * Send messages using $Sendmail.
+     */
+    public function isSendmail()
+    {
+        $ini_sendmail_path = ini_get('sendmail_path');
+
+        if (false === stripos($ini_sendmail_path, 'sendmail')) {
+            $this->Sendmail = '/usr/sbin/sendmail';
+        } else {
+            $this->Sendmail = $ini_sendmail_path;
+        }
+        $this->Mailer = 'sendmail';
+    }
+
+    /**
+     * Send messages using qmail.
+     */
+    public function isQmail()
+    {
+        $ini_sendmail_path = ini_get('sendmail_path');
+
+        if (false === stripos($ini_sendmail_path, 'qmail')) {
+            $this->Sendmail = '/var/qmail/bin/qmail-inject';
+        } else {
+            $this->Sendmail = $ini_sendmail_path;
+        }
+        $this->Mailer = 'qmail';
+    }
+
+    /**
+     * Add a "To" address.
+     *
+     * @param string $address The email address to send to
+     * @param string $name
+     *
+     * @throws Exception
+     *
+     * @return bool true on success, false if address already used or invalid in some way
+     */
+    public function addAddress($address, $name = '')
+    {
+        return $this->addOrEnqueueAnAddress('to', $address, $name);
+    }
+
+    /**
+     * Add a "CC" address.
+     *
+     * @param string $address The email address to send to
+     * @param string $name
+     *
+     * @throws Exception
+     *
+     * @return bool true on success, false if address already used or invalid in some way
+     */
+    public function addCC($address, $name = '')
+    {
+        return $this->addOrEnqueueAnAddress('cc', $address, $name);
+    }
+
+    /**
+     * Add a "BCC" address.
+     *
+     * @param string $address The email address to send to
+     * @param string $name
+     *
+     * @throws Exception
+     *
+     * @return bool true on success, false if address already used or invalid in some way
+     */
+    public function addBCC($address, $name = '')
+    {
+        return $this->addOrEnqueueAnAddress('bcc', $address, $name);
+    }
+
+    /**
+     * Add a "Reply-To" address.
+     *
+     * @param string $address The email address to reply to
+     * @param string $name
+     *
+     * @throws Exception
+     *
+     * @return bool true on success, false if address already used or invalid in some way
+     */
+    public function addReplyTo($address, $name = '')
+    {
+        return $this->addOrEnqueueAnAddress('Reply-To', $address, $name);
+    }
+
+    /**
+     * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer
+     * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still
+     * be modified after calling this function), addition of such addresses is delayed until send().
+     * Addresses that have been added already return false, but do not throw exceptions.
+     *
+     * @param string $kind    One of 'to', 'cc', 'bcc', or 'ReplyTo'
+     * @param string $address The email address to send, resp. to reply to
+     * @param string $name
+     *
+     * @throws Exception
+     *
+     * @return bool true on success, false if address already used or invalid in some way
+     */
+    protected function addOrEnqueueAnAddress($kind, $address, $name)
+    {
+        $address = trim($address);
+        $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
+        $pos = strrpos($address, '@');
+        if (false === $pos) {
+            // At-sign is missing.
+            $error_message = sprintf(
+                '%s (%s): %s',
+                $this->lang('invalid_address'),
+                $kind,
+                $address
+            );
+            $this->setError($error_message);
+            $this->edebug($error_message);
+            if ($this->exceptions) {
+                throw new Exception($error_message);
+            }
+
+            return false;
+        }
+        $params = [$kind, $address, $name];
+        // Enqueue addresses with IDN until we know the PHPMailer::$CharSet.
+        if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) {
+            if ('Reply-To' !== $kind) {
+                if (!array_key_exists($address, $this->RecipientsQueue)) {
+                    $this->RecipientsQueue[$address] = $params;
+
+                    return true;
+                }
+            } elseif (!array_key_exists($address, $this->ReplyToQueue)) {
+                $this->ReplyToQueue[$address] = $params;
+
+                return true;
+            }
+
+            return false;
+        }
+
+        // Immediately add standard addresses without IDN.
+        return call_user_func_array([$this, 'addAnAddress'], $params);
+    }
+
+    /**
+     * Add an address to one of the recipient arrays or to the ReplyTo array.
+     * Addresses that have been added already return false, but do not throw exceptions.
+     *
+     * @param string $kind    One of 'to', 'cc', 'bcc', or 'ReplyTo'
+     * @param string $address The email address to send, resp. to reply to
+     * @param string $name
+     *
+     * @throws Exception
+     *
+     * @return bool true on success, false if address already used or invalid in some way
+     */
+    protected function addAnAddress($kind, $address, $name = '')
+    {
+        if (!in_array($kind, ['to', 'cc', 'bcc', 'Reply-To'])) {
+            $error_message = sprintf(
+                '%s: %s',
+                $this->lang('Invalid recipient kind'),
+                $kind
+            );
+            $this->setError($error_message);
+            $this->edebug($error_message);
+            if ($this->exceptions) {
+                throw new Exception($error_message);
+            }
+
+            return false;
+        }
+        if (!static::validateAddress($address)) {
+            $error_message = sprintf(
+                '%s (%s): %s',
+                $this->lang('invalid_address'),
+                $kind,
+                $address
+            );
+            $this->setError($error_message);
+            $this->edebug($error_message);
+            if ($this->exceptions) {
+                throw new Exception($error_message);
+            }
+
+            return false;
+        }
+        if ('Reply-To' !== $kind) {
+            if (!array_key_exists(strtolower($address), $this->all_recipients)) {
+                $this->{$kind}[] = [$address, $name];
+                $this->all_recipients[strtolower($address)] = true;
+
+                return true;
+            }
+        } elseif (!array_key_exists(strtolower($address), $this->ReplyTo)) {
+            $this->ReplyTo[strtolower($address)] = [$address, $name];
+
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Parse and validate a string containing one or more RFC822-style comma-separated email addresses
+     * of the form "display name <address>" into an array of name/address pairs.
+     * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available.
+     * Note that quotes in the name part are removed.
+     *
+     * @see http://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation
+     *
+     * @param string $addrstr The address list string
+     * @param bool   $useimap Whether to use the IMAP extension to parse the list
+     *
+     * @return array
+     */
+    public static function parseAddresses($addrstr, $useimap = true)
+    {
+        $addresses = [];
+        if ($useimap && function_exists('imap_rfc822_parse_adrlist')) {
+            //Use this built-in parser if it's available
+            $list = imap_rfc822_parse_adrlist($addrstr, '');
+            foreach ($list as $address) {
+                if (('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress(
+                    $address->mailbox . '@' . $address->host
+                )) {
+                    $addresses[] = [
+                        'name' => (property_exists($address, 'personal') ? $address->personal : ''),
+                        'address' => $address->mailbox . '@' . $address->host,
+                    ];
+                }
+            }
+        } else {
+            //Use this simpler parser
+            $list = explode(',', $addrstr);
+            foreach ($list as $address) {
+                $address = trim($address);
+                //Is there a separate name part?
+                if (strpos($address, '<') === false) {
+                    //No separate name, just use the whole thing
+                    if (static::validateAddress($address)) {
+                        $addresses[] = [
+                            'name' => '',
+                            'address' => $address,
+                        ];
+                    }
+                } else {
+                    list($name, $email) = explode('<', $address);
+                    $email = trim(str_replace('>', '', $email));
+                    if (static::validateAddress($email)) {
+                        $addresses[] = [
+                            'name' => trim(str_replace(['"', "'"], '', $name)),
+                            'address' => $email,
+                        ];
+                    }
+                }
+            }
+        }
+
+        return $addresses;
+    }
+
+    /**
+     * Set the From and FromName properties.
+     *
+     * @param string $address
+     * @param string $name
+     * @param bool   $auto    Whether to also set the Sender address, defaults to true
+     *
+     * @throws Exception
+     *
+     * @return bool
+     */
+    public function setFrom($address, $name = '', $auto = true)
+    {
+        $address = trim($address);
+        $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
+        // Don't validate now addresses with IDN. Will be done in send().
+        $pos = strrpos($address, '@');
+        if ((false === $pos)
+            || ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported())
+            && !static::validateAddress($address))
+        ) {
+            $error_message = sprintf(
+                '%s (From): %s',
+                $this->lang('invalid_address'),
+                $address
+            );
+            $this->setError($error_message);
+            $this->edebug($error_message);
+            if ($this->exceptions) {
+                throw new Exception($error_message);
+            }
+
+            return false;
+        }
+        $this->From = $address;
+        $this->FromName = $name;
+        if ($auto && empty($this->Sender)) {
+            $this->Sender = $address;
+        }
+
+        return true;
+    }
+
+    /**
+     * Return the Message-ID header of the last email.
+     * Technically this is the value from the last time the headers were created,
+     * but it's also the message ID of the last sent message except in
+     * pathological cases.
+     *
+     * @return string
+     */
+    public function getLastMessageID()
+    {
+        return $this->lastMessageID;
+    }
+
+    /**
+     * Check that a string looks like an email address.
+     * Validation patterns supported:
+     * * `auto` Pick best pattern automatically;
+     * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0;
+     * * `pcre` Use old PCRE implementation;
+     * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL;
+     * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements.
+     * * `noregex` Don't use a regex: super fast, really dumb.
+     * Alternatively you may pass in a callable to inject your own validator, for example:
+     *
+     * ```php
+     * PHPMailer::validateAddress('user@example.com', function($address) {
+     *     return (strpos($address, '@') !== false);
+     * });
+     * ```
+     *
+     * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator.
+     *
+     * @param string          $address       The email address to check
+     * @param string|callable $patternselect Which pattern to use
+     *
+     * @return bool
+     */
+    public static function validateAddress($address, $patternselect = null)
+    {
+        if (null === $patternselect) {
+            $patternselect = static::$validator;
+        }
+        if (is_callable($patternselect)) {
+            return call_user_func($patternselect, $address);
+        }
+        //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321
+        if (strpos($address, "\n") !== false || strpos($address, "\r") !== false) {
+            return false;
+        }
+        switch ($patternselect) {
+            case 'pcre': //Kept for BC
+            case 'pcre8':
+                /*
+                 * A more complex and more permissive version of the RFC5322 regex on which FILTER_VALIDATE_EMAIL
+                 * is based.
+                 * In addition to the addresses allowed by filter_var, also permits:
+                 *  * dotless domains: `a@b`
+                 *  * comments: `1234 @ local(blah) .machine .example`
+                 *  * quoted elements: `'"test blah"@example.org'`
+                 *  * numeric TLDs: `a@b.123`
+                 *  * unbracketed IPv4 literals: `a@192.168.0.1`
+                 *  * IPv6 literals: 'first.last@[IPv6:a1::]'
+                 * Not all of these will necessarily work for sending!
+                 *
+                 * @see       http://squiloople.com/2009/12/20/email-address-validation/
+                 * @copyright 2009-2010 Michael Rushton
+                 * Feel free to use and redistribute this code. But please keep this copyright notice.
+                 */
+                return (bool) preg_match(
+                    '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' .
+                    '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' .
+                    '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' .
+                    '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' .
+                    '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' .
+                    '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' .
+                    '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' .
+                    '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' .
+                    '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD',
+                    $address
+                );
+            case 'html5':
+                /*
+                 * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements.
+                 *
+                 * @see https://html.spec.whatwg.org/#e-mail-state-(type=email)
+                 */
+                return (bool) preg_match(
+                    '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' .
+                    '[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD',
+                    $address
+                );
+            case 'php':
+            default:
+                return filter_var($address, FILTER_VALIDATE_EMAIL) !== false;
+        }
+    }
+
+    /**
+     * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the
+     * `intl` and `mbstring` PHP extensions.
+     *
+     * @return bool `true` if required functions for IDN support are present
+     */
+    public static function idnSupported()
+    {
+        return function_exists('idn_to_ascii') && function_exists('mb_convert_encoding');
+    }
+
+    /**
+     * Converts IDN in given email address to its ASCII form, also known as punycode, if possible.
+     * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet.
+     * This function silently returns unmodified address if:
+     * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form)
+     * - Conversion to punycode is impossible (e.g. required PHP functions are not available)
+     *   or fails for any reason (e.g. domain contains characters not allowed in an IDN).
+     *
+     * @see PHPMailer::$CharSet
+     *
+     * @param string $address The email address to convert
+     *
+     * @return string The encoded address in ASCII form
+     */
+    public function punyencodeAddress($address)
+    {
+        // Verify we have required functions, CharSet, and at-sign.
+        $pos = strrpos($address, '@');
+        if (!empty($this->CharSet) &&
+            false !== $pos &&
+            static::idnSupported()
+        ) {
+            $domain = substr($address, ++$pos);
+            // Verify CharSet string is a valid one, and domain properly encoded in this CharSet.
+            if ($this->has8bitChars($domain) && @mb_check_encoding($domain, $this->CharSet)) {
+                $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet);
+                //Ignore IDE complaints about this line - method signature changed in PHP 5.4
+                $errorcode = 0;
+                if (defined('INTL_IDNA_VARIANT_UTS46')) {
+                    $punycode = idn_to_ascii($domain, $errorcode, INTL_IDNA_VARIANT_UTS46);
+                } elseif (defined('INTL_IDNA_VARIANT_2003')) {
+                    $punycode = idn_to_ascii($domain, $errorcode, INTL_IDNA_VARIANT_2003);
+                } else {
+                    $punycode = idn_to_ascii($domain, $errorcode);
+                }
+                if (false !== $punycode) {
+                    return substr($address, 0, $pos) . $punycode;
+                }
+            }
+        }
+
+        return $address;
+    }
+
+    /**
+     * Create a message and send it.
+     * Uses the sending method specified by $Mailer.
+     *
+     * @throws Exception
+     *
+     * @return bool false on error - See the ErrorInfo property for details of the error
+     */
+    public function send()
+    {
+        try {
+            if (!$this->preSend()) {
+                return false;
+            }
+
+            return $this->postSend();
+        } catch (Exception $exc) {
+            $this->mailHeader = '';
+            $this->setError($exc->getMessage());
+            if ($this->exceptions) {
+                throw $exc;
+            }
+
+            return false;
+        }
+    }
+
+    /**
+     * Prepare a message for sending.
+     *
+     * @throws Exception
+     *
+     * @return bool
+     */
+    public function preSend()
+    {
+        if ('smtp' === $this->Mailer
+            || ('mail' === $this->Mailer && stripos(PHP_OS, 'WIN') === 0)
+        ) {
+            //SMTP mandates RFC-compliant line endings
+            //and it's also used with mail() on Windows
+            static::setLE(self::CRLF);
+        } else {
+            //Maintain backward compatibility with legacy Linux command line mailers
+            static::setLE(PHP_EOL);
+        }
+        //Check for buggy PHP versions that add a header with an incorrect line break
+        if ('mail' === $this->Mailer
+            && ((PHP_VERSION_ID >= 70000 && PHP_VERSION_ID < 70017)
+                || (PHP_VERSION_ID >= 70100 && PHP_VERSION_ID < 70103))
+            && ini_get('mail.add_x_header') === '1'
+            && stripos(PHP_OS, 'WIN') === 0
+        ) {
+            trigger_error(
+                'Your version of PHP is affected by a bug that may result in corrupted messages.' .
+                ' To fix it, switch to sending using SMTP, disable the mail.add_x_header option in' .
+                ' your php.ini, switch to MacOS or Linux, or upgrade your PHP to version 7.0.17+ or 7.1.3+.',
+                E_USER_WARNING
+            );
+        }
+
+        try {
+            $this->error_count = 0; // Reset errors
+            $this->mailHeader = '';
+
+            // Dequeue recipient and Reply-To addresses with IDN
+            foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) {
+                $params[1] = $this->punyencodeAddress($params[1]);
+                call_user_func_array([$this, 'addAnAddress'], $params);
+            }
+            if (count($this->to) + count($this->cc) + count($this->bcc) < 1) {
+                throw new Exception($this->lang('provide_address'), self::STOP_CRITICAL);
+            }
+
+            // Validate From, Sender, and ConfirmReadingTo addresses
+            foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) {
+                $this->$address_kind = trim($this->$address_kind);
+                if (empty($this->$address_kind)) {
+                    continue;
+                }
+                $this->$address_kind = $this->punyencodeAddress($this->$address_kind);
+                if (!static::validateAddress($this->$address_kind)) {
+                    $error_message = sprintf(
+                        '%s (%s): %s',
+                        $this->lang('invalid_address'),
+                        $address_kind,
+                        $this->$address_kind
+                    );
+                    $this->setError($error_message);
+                    $this->edebug($error_message);
+                    if ($this->exceptions) {
+                        throw new Exception($error_message);
+                    }
+
+                    return false;
+                }
+            }
+
+            // Set whether the message is multipart/alternative
+            if ($this->alternativeExists()) {
+                $this->ContentType = static::CONTENT_TYPE_MULTIPART_ALTERNATIVE;
+            }
+
+            $this->setMessageType();
+            // Refuse to send an empty message unless we are specifically allowing it
+            if (!$this->AllowEmpty && empty($this->Body)) {
+                throw new Exception($this->lang('empty_message'), self::STOP_CRITICAL);
+            }
+
+            //Trim subject consistently
+            $this->Subject = trim($this->Subject);
+            // Create body before headers in case body makes changes to headers (e.g. altering transfer encoding)
+            $this->MIMEHeader = '';
+            $this->MIMEBody = $this->createBody();
+            // createBody may have added some headers, so retain them
+            $tempheaders = $this->MIMEHeader;
+            $this->MIMEHeader = $this->createHeader();
+            $this->MIMEHeader .= $tempheaders;
+
+            // To capture the complete message when using mail(), create
+            // an extra header list which createHeader() doesn't fold in
+            if ('mail' === $this->Mailer) {
+                if (count($this->to) > 0) {
+                    $this->mailHeader .= $this->addrAppend('To', $this->to);
+                } else {
+                    $this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;');
+                }
+                $this->mailHeader .= $this->headerLine(
+                    'Subject',
+                    $this->encodeHeader($this->secureHeader($this->Subject))
+                );
+            }
+
+            // Sign with DKIM if enabled
+            if (!empty($this->DKIM_domain)
+                && !empty($this->DKIM_selector)
+                && (!empty($this->DKIM_private_string)
+                    || (!empty($this->DKIM_private)
+                        && static::isPermittedPath($this->DKIM_private)
+                        && file_exists($this->DKIM_private)
+                    )
+                )
+            ) {
+                $header_dkim = $this->DKIM_Add(
+                    $this->MIMEHeader . $this->mailHeader,
+                    $this->encodeHeader($this->secureHeader($this->Subject)),
+                    $this->MIMEBody
+                );
+                $this->MIMEHeader = static::stripTrailingWSP($this->MIMEHeader) . static::$LE .
+                    static::normalizeBreaks($header_dkim) . static::$LE;
+            }
+
+            return true;
+        } catch (Exception $exc) {
+            $this->setError($exc->getMessage());
+            if ($this->exceptions) {
+                throw $exc;
+            }
+
+            return false;
+        }
+    }
+
+    /**
+     * Actually send a message via the selected mechanism.
+     *
+     * @throws Exception
+     *
+     * @return bool
+     */
+    public function postSend()
+    {
+        try {
+            // Choose the mailer and send through it
+            switch ($this->Mailer) {
+                case 'sendmail':
+                case 'qmail':
+                    return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody);
+                case 'smtp':
+                    return $this->smtpSend($this->MIMEHeader, $this->MIMEBody);
+                case 'mail':
+                    return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
+                default:
+                    $sendMethod = $this->Mailer . 'Send';
+                    if (method_exists($this, $sendMethod)) {
+                        return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody);
+                    }
+
+                    return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
+            }
+        } catch (Exception $exc) {
+            if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true) {
+              $this->smtp->reset();
+            }
+            $this->setError($exc->getMessage());
+            $this->edebug($exc->getMessage());
+            if ($this->exceptions) {
+                throw $exc;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Send mail using the $Sendmail program.
+     *
+     * @see PHPMailer::$Sendmail
+     *
+     * @param string $header The message headers
+     * @param string $body   The message body
+     *
+     * @throws Exception
+     *
+     * @return bool
+     */
+    protected function sendmailSend($header, $body)
+    {
+        $header = static::stripTrailingWSP($header) . static::$LE . static::$LE;
+
+        // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.
+        if (!empty($this->Sender) && self::isShellSafe($this->Sender)) {
+            if ('qmail' === $this->Mailer) {
+                $sendmailFmt = '%s -f%s';
+            } else {
+                $sendmailFmt = '%s -oi -f%s -t';
+            }
+        } elseif ('qmail' === $this->Mailer) {
+            $sendmailFmt = '%s';
+        } else {
+            $sendmailFmt = '%s -oi -t';
+        }
+
+        $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender);
+
+        if ($this->SingleTo) {
+            foreach ($this->SingleToArray as $toAddr) {
+                $mail = @popen($sendmail, 'w');
+                if (!$mail) {
+                    throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+                }
+                fwrite($mail, 'To: ' . $toAddr . "\n");
+                fwrite($mail, $header);
+                fwrite($mail, $body);
+                $result = pclose($mail);
+                $this->doCallback(
+                    ($result === 0),
+                    [$toAddr],
+                    $this->cc,
+                    $this->bcc,
+                    $this->Subject,
+                    $body,
+                    $this->From,
+                    []
+                );
+                if (0 !== $result) {
+                    throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+                }
+            }
+        } else {
+            $mail = @popen($sendmail, 'w');
+            if (!$mail) {
+                throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+            }
+            fwrite($mail, $header);
+            fwrite($mail, $body);
+            $result = pclose($mail);
+            $this->doCallback(
+                ($result === 0),
+                $this->to,
+                $this->cc,
+                $this->bcc,
+                $this->Subject,
+                $body,
+                $this->From,
+                []
+            );
+            if (0 !== $result) {
+                throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters.
+     * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows.
+     *
+     * @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report
+     *
+     * @param string $string The string to be validated
+     *
+     * @return bool
+     */
+    protected static function isShellSafe($string)
+    {
+        // Future-proof
+        if (escapeshellcmd($string) !== $string
+            || !in_array(escapeshellarg($string), ["'$string'", "\"$string\""])
+        ) {
+            return false;
+        }
+
+        $length = strlen($string);
+
+        for ($i = 0; $i < $length; ++$i) {
+            $c = $string[$i];
+
+            // All other characters have a special meaning in at least one common shell, including = and +.
+            // Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here.
+            // Note that this does permit non-Latin alphanumeric characters based on the current locale.
+            if (!ctype_alnum($c) && strpos('@_-.', $c) === false) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Check whether a file path is of a permitted type.
+     * Used to reject URLs and phar files from functions that access local file paths,
+     * such as addAttachment.
+     *
+     * @param string $path A relative or absolute path to a file
+     *
+     * @return bool
+     */
+    protected static function isPermittedPath($path)
+    {
+        return !preg_match('#^[a-z]+://#i', $path);
+    }
+
+    /**
+     * Check whether a file path is safe, accessible, and readable.
+     *
+     * @param string $path A relative or absolute path to a file
+     *
+     * @return bool
+     */
+    protected static function fileIsAccessible($path)
+    {
+        $readable = file_exists($path);
+        //If not a UNC path (expected to start with \\), check read permission, see #2069
+        if (strpos($path, '\\\\') !== 0) {
+            $readable = $readable && is_readable($path);
+        }
+        return static::isPermittedPath($path) && $readable;
+    }
+
+    /**
+     * Send mail using the PHP mail() function.
+     *
+     * @see http://www.php.net/manual/en/book.mail.php
+     *
+     * @param string $header The message headers
+     * @param string $body   The message body
+     *
+     * @throws Exception
+     *
+     * @return bool
+     */
+    protected function mailSend($header, $body)
+    {
+        $header = static::stripTrailingWSP($header) . static::$LE . static::$LE;
+
+        $toArr = [];
+        foreach ($this->to as $toaddr) {
+            $toArr[] = $this->addrFormat($toaddr);
+        }
+        $to = implode(', ', $toArr);
+
+        $params = null;
+        //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver
+        //A space after `-f` is optional, but there is a long history of its presence
+        //causing problems, so we don't use one
+        //Exim docs: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html
+        //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html
+        //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html
+        //Example problem: https://www.drupal.org/node/1057954
+        // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.
+        if (!empty($this->Sender) && static::validateAddress($this->Sender) && self::isShellSafe($this->Sender)) {
+            $params = sprintf('-f%s', $this->Sender);
+        }
+        if (!empty($this->Sender) && static::validateAddress($this->Sender)) {
+            $old_from = ini_get('sendmail_from');
+            ini_set('sendmail_from', $this->Sender);
+        }
+        $result = false;
+        if ($this->SingleTo && count($toArr) > 1) {
+            foreach ($toArr as $toAddr) {
+                $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params);
+                $this->doCallback($result, [$toAddr], $this->cc, $this->bcc, $this->Subject, $body, $this->From, []);
+            }
+        } else {
+            $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params);
+            $this->doCallback($result, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From, []);
+        }
+        if (isset($old_from)) {
+            ini_set('sendmail_from', $old_from);
+        }
+        if (!$result) {
+            throw new Exception($this->lang('instantiate'), self::STOP_CRITICAL);
+        }
+
+        return true;
+    }
+
+    /**
+     * Get an instance to use for SMTP operations.
+     * Override this function to load your own SMTP implementation,
+     * or set one with setSMTPInstance.
+     *
+     * @return SMTP
+     */
+    public function getSMTPInstance()
+    {
+        if (!is_object($this->smtp)) {
+            $this->smtp = new SMTP();
+        }
+
+        return $this->smtp;
+    }
+
+    /**
+     * Provide an instance to use for SMTP operations.
+     *
+     * @return SMTP
+     */
+    public function setSMTPInstance(SMTP $smtp)
+    {
+        $this->smtp = $smtp;
+
+        return $this->smtp;
+    }
+
+    /**
+     * Send mail via SMTP.
+     * Returns false if there is a bad MAIL FROM, RCPT, or DATA input.
+     *
+     * @see PHPMailer::setSMTPInstance() to use a different class.
+     *
+     * @uses \PHPMailer\PHPMailer\SMTP
+     *
+     * @param string $header The message headers
+     * @param string $body   The message body
+     *
+     * @throws Exception
+     *
+     * @return bool
+     */
+    protected function smtpSend($header, $body)
+    {
+        $header = static::stripTrailingWSP($header) . static::$LE . static::$LE;
+        $bad_rcpt = [];
+        if (!$this->smtpConnect($this->SMTPOptions)) {
+            throw new Exception($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);
+        }
+        //Sender already validated in preSend()
+        if ('' === $this->Sender) {
+            $smtp_from = $this->From;
+        } else {
+            $smtp_from = $this->Sender;
+        }
+        if (!$this->smtp->mail($smtp_from)) {
+            $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));
+            throw new Exception($this->ErrorInfo, self::STOP_CRITICAL);
+        }
+
+        $callbacks = [];
+        // Attempt to send to all recipients
+        foreach ([$this->to, $this->cc, $this->bcc] as $togroup) {
+            foreach ($togroup as $to) {
+                if (!$this->smtp->recipient($to[0], $this->dsn)) {
+                    $error = $this->smtp->getError();
+                    $bad_rcpt[] = ['to' => $to[0], 'error' => $error['detail']];
+                    $isSent = false;
+                } else {
+                    $isSent = true;
+                }
+
+                $callbacks[] = ['issent'=>$isSent, 'to'=>$to[0]];
+            }
+        }
+
+        // Only send the DATA command if we have viable recipients
+        if ((count($this->all_recipients) > count($bad_rcpt)) && !$this->smtp->data($header . $body)) {
+            throw new Exception($this->lang('data_not_accepted'), self::STOP_CRITICAL);
+        }
+
+        $smtp_transaction_id = $this->smtp->getLastTransactionID();
+
+        if ($this->SMTPKeepAlive) {
+            $this->smtp->reset();
+        } else {
+            $this->smtp->quit();
+            $this->smtp->close();
+        }
+
+        foreach ($callbacks as $cb) {
+            $this->doCallback(
+                $cb['issent'],
+                [$cb['to']],
+                [],
+                [],
+                $this->Subject,
+                $body,
+                $this->From,
+                ['smtp_transaction_id' => $smtp_transaction_id]
+            );
+        }
+
+        //Create error message for any bad addresses
+        if (count($bad_rcpt) > 0) {
+            $errstr = '';
+            foreach ($bad_rcpt as $bad) {
+                $errstr .= $bad['to'] . ': ' . $bad['error'];
+            }
+            throw new Exception($this->lang('recipients_failed') . $errstr, self::STOP_CONTINUE);
+        }
+
+        return true;
+    }
+
+    /**
+     * Initiate a connection to an SMTP server.
+     * Returns false if the operation failed.
+     *
+     * @param array $options An array of options compatible with stream_context_create()
+     *
+     * @throws Exception
+     *
+     * @uses \PHPMailer\PHPMailer\SMTP
+     *
+     * @return bool
+     */
+    public function smtpConnect($options = null)
+    {
+        if (null === $this->smtp) {
+            $this->smtp = $this->getSMTPInstance();
+        }
+
+        //If no options are provided, use whatever is set in the instance
+        if (null === $options) {
+            $options = $this->SMTPOptions;
+        }
+
+        // Already connected?
+        if ($this->smtp->connected()) {
+            return true;
+        }
+
+        $this->smtp->setTimeout($this->Timeout);
+        $this->smtp->setDebugLevel($this->SMTPDebug);
+        $this->smtp->setDebugOutput($this->Debugoutput);
+        $this->smtp->setVerp($this->do_verp);
+        $hosts = explode(';', $this->Host);
+        $lastexception = null;
+
+        foreach ($hosts as $hostentry) {
+            $hostinfo = [];
+            if (!preg_match(
+                '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/',
+                trim($hostentry),
+                $hostinfo
+            )) {
+                $this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry));
+                // Not a valid host entry
+                continue;
+            }
+            // $hostinfo[1]: optional ssl or tls prefix
+            // $hostinfo[2]: the hostname
+            // $hostinfo[3]: optional port number
+            // The host string prefix can temporarily override the current setting for SMTPSecure
+            // If it's not specified, the default value is used
+
+            //Check the host name is a valid name or IP address before trying to use it
+            if (!static::isValidHost($hostinfo[2])) {
+                $this->edebug($this->lang('invalid_host') . ' ' . $hostinfo[2]);
+                continue;
+            }
+            $prefix = '';
+            $secure = $this->SMTPSecure;
+            $tls = (static::ENCRYPTION_STARTTLS === $this->SMTPSecure);
+            if ('ssl' === $hostinfo[1] || ('' === $hostinfo[1] && static::ENCRYPTION_SMTPS === $this->SMTPSecure)) {
+                $prefix = 'ssl://';
+                $tls = false; // Can't have SSL and TLS at the same time
+                $secure = static::ENCRYPTION_SMTPS;
+            } elseif ('tls' === $hostinfo[1]) {
+                $tls = true;
+                // tls doesn't use a prefix
+                $secure = static::ENCRYPTION_STARTTLS;
+            }
+            //Do we need the OpenSSL extension?
+            $sslext = defined('OPENSSL_ALGO_SHA256');
+            if (static::ENCRYPTION_STARTTLS === $secure || static::ENCRYPTION_SMTPS === $secure) {
+                //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled
+                if (!$sslext) {
+                    throw new Exception($this->lang('extension_missing') . 'openssl', self::STOP_CRITICAL);
+                }
+            }
+            $host = $hostinfo[2];
+            $port = $this->Port;
+            if (
+                array_key_exists(3, $hostinfo) &&
+                is_numeric($hostinfo[3]) &&
+                $hostinfo[3] > 0 &&
+                $hostinfo[3] < 65536
+            ) {
+                $port = (int) $hostinfo[3];
+            }
+            if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) {
+                try {
+                    if ($this->Helo) {
+                        $hello = $this->Helo;
+                    } else {
+                        $hello = $this->serverHostname();
+                    }
+                    $this->smtp->hello($hello);
+                    //Automatically enable TLS encryption if:
+                    // * it's not disabled
+                    // * we have openssl extension
+                    // * we are not already using SSL
+                    // * the server offers STARTTLS
+                    if ($this->SMTPAutoTLS && $sslext && 'ssl' !== $secure && $this->smtp->getServerExt('STARTTLS')) {
+                        $tls = true;
+                    }
+                    if ($tls) {
+                        if (!$this->smtp->startTLS()) {
+                            throw new Exception($this->lang('connect_host'));
+                        }
+                        // We must resend EHLO after TLS negotiation
+                        $this->smtp->hello($hello);
+                    }
+                    if ($this->SMTPAuth && !$this->smtp->authenticate(
+                        $this->Username,
+                        $this->Password,
+                        $this->AuthType,
+                        $this->oauth
+                    )) {
+                        throw new Exception($this->lang('authenticate'));
+                    }
+
+                    return true;
+                } catch (Exception $exc) {
+                    $lastexception = $exc;
+                    $this->edebug($exc->getMessage());
+                    // We must have connected, but then failed TLS or Auth, so close connection nicely
+                    $this->smtp->quit();
+                }
+            }
+        }
+        // If we get here, all connection attempts have failed, so close connection hard
+        $this->smtp->close();
+        // As we've caught all exceptions, just report whatever the last one was
+        if ($this->exceptions && null !== $lastexception) {
+            throw $lastexception;
+        }
+
+        return false;
+    }
+
+    /**
+     * Close the active SMTP session if one exists.
+     */
+    public function smtpClose()
+    {
+        if ((null !== $this->smtp) && $this->smtp->connected()) {
+            $this->smtp->quit();
+            $this->smtp->close();
+        }
+    }
+
+    /**
+     * Set the language for error messages.
+     * Returns false if it cannot load the language file.
+     * The default language is English.
+     *
+     * @param string $langcode  ISO 639-1 2-character language code (e.g. French is "fr")
+     * @param string $lang_path Path to the language file directory, with trailing separator (slash)
+     *
+     * @return bool
+     */
+    public function setLanguage($langcode = 'en', $lang_path = '')
+    {
+        // Backwards compatibility for renamed language codes
+        $renamed_langcodes = [
+            'br' => 'pt_br',
+            'cz' => 'cs',
+            'dk' => 'da',
+            'no' => 'nb',
+            'se' => 'sv',
+            'rs' => 'sr',
+            'tg' => 'tl',
+            'am' => 'hy',
+        ];
+
+        if (isset($renamed_langcodes[$langcode])) {
+            $langcode = $renamed_langcodes[$langcode];
+        }
+
+        // Define full set of translatable strings in English
+        $PHPMAILER_LANG = [
+            'authenticate' => 'SMTP Error: Could not authenticate.',
+            'connect_host' => 'SMTP Error: Could not connect to SMTP host.',
+            'data_not_accepted' => 'SMTP Error: data not accepted.',
+            'empty_message' => 'Message body empty',
+            'encoding' => 'Unknown encoding: ',
+            'execute' => 'Could not execute: ',
+            'file_access' => 'Could not access file: ',
+            'file_open' => 'File Error: Could not open file: ',
+            'from_failed' => 'The following From address failed: ',
+            'instantiate' => 'Could not instantiate mail function.',
+            'invalid_address' => 'Invalid address: ',
+            'invalid_hostentry' => 'Invalid hostentry: ',
+            'invalid_host' => 'Invalid host: ',
+            'mailer_not_supported' => ' mailer is not supported.',
+            'provide_address' => 'You must provide at least one recipient email address.',
+            'recipients_failed' => 'SMTP Error: The following recipients failed: ',
+            'signing' => 'Signing Error: ',
+            'smtp_connect_failed' => 'SMTP connect() failed.',
+            'smtp_error' => 'SMTP server error: ',
+            'variable_set' => 'Cannot set or reset variable: ',
+            'extension_missing' => 'Extension missing: ',
+        ];
+        if (empty($lang_path)) {
+            // Calculate an absolute path so it can work if CWD is not here
+            $lang_path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'language' . DIRECTORY_SEPARATOR;
+        }
+        //Validate $langcode
+        if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) {
+            $langcode = 'en';
+        }
+        $foundlang = true;
+        $lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php';
+        // There is no English translation file
+        if ('en' !== $langcode) {
+            // Make sure language file path is readable
+            if (!static::fileIsAccessible($lang_file)) {
+                $foundlang = false;
+            } else {
+                // Overwrite language-specific strings.
+                // This way we'll never have missing translation keys.
+                $foundlang = include $lang_file;
+            }
+        }
+        $this->language = $PHPMAILER_LANG;
+
+        return (bool) $foundlang; // Returns false if language not found
+    }
+
+    /**
+     * Get the array of strings for the current language.
+     *
+     * @return array
+     */
+    public function getTranslations()
+    {
+        return $this->language;
+    }
+
+    /**
+     * Create recipient headers.
+     *
+     * @param string $type
+     * @param array  $addr An array of recipients,
+     *                     where each recipient is a 2-element indexed array with element 0 containing an address
+     *                     and element 1 containing a name, like:
+     *                     [['joe@example.com', 'Joe User'], ['zoe@example.com', 'Zoe User']]
+     *
+     * @return string
+     */
+    public function addrAppend($type, $addr)
+    {
+        $addresses = [];
+        foreach ($addr as $address) {
+            $addresses[] = $this->addrFormat($address);
+        }
+
+        return $type . ': ' . implode(', ', $addresses) . static::$LE;
+    }
+
+    /**
+     * Format an address for use in a message header.
+     *
+     * @param array $addr A 2-element indexed array, element 0 containing an address, element 1 containing a name like
+     *                    ['joe@example.com', 'Joe User']
+     *
+     * @return string
+     */
+    public function addrFormat($addr)
+    {
+        if (empty($addr[1])) { // No name provided
+            return $this->secureHeader($addr[0]);
+        }
+
+        return $this->encodeHeader($this->secureHeader($addr[1]), 'phrase') .
+            ' <' . $this->secureHeader($addr[0]) . '>';
+    }
+
+    /**
+     * Word-wrap message.
+     * For use with mailers that do not automatically perform wrapping
+     * and for quoted-printable encoded messages.
+     * Original written by philippe.
+     *
+     * @param string $message The message to wrap
+     * @param int    $length  The line length to wrap to
+     * @param bool   $qp_mode Whether to run in Quoted-Printable mode
+     *
+     * @return string
+     */
+    public function wrapText($message, $length, $qp_mode = false)
+    {
+        if ($qp_mode) {
+            $soft_break = sprintf(' =%s', static::$LE);
+        } else {
+            $soft_break = static::$LE;
+        }
+        // If utf-8 encoding is used, we will need to make sure we don't
+        // split multibyte characters when we wrap
+        $is_utf8 = static::CHARSET_UTF8 === strtolower($this->CharSet);
+        $lelen = strlen(static::$LE);
+        $crlflen = strlen(static::$LE);
+
+        $message = static::normalizeBreaks($message);
+        //Remove a trailing line break
+        if (substr($message, -$lelen) === static::$LE) {
+            $message = substr($message, 0, -$lelen);
+        }
+
+        //Split message into lines
+        $lines = explode(static::$LE, $message);
+        //Message will be rebuilt in here
+        $message = '';
+        foreach ($lines as $line) {
+            $words = explode(' ', $line);
+            $buf = '';
+            $firstword = true;
+            foreach ($words as $word) {
+                if ($qp_mode && (strlen($word) > $length)) {
+                    $space_left = $length - strlen($buf) - $crlflen;
+                    if (!$firstword) {
+                        if ($space_left > 20) {
+                            $len = $space_left;
+                            if ($is_utf8) {
+                                $len = $this->utf8CharBoundary($word, $len);
+                            } elseif ('=' === substr($word, $len - 1, 1)) {
+                                --$len;
+                            } elseif ('=' === substr($word, $len - 2, 1)) {
+                                $len -= 2;
+                            }
+                            $part = substr($word, 0, $len);
+                            $word = substr($word, $len);
+                            $buf .= ' ' . $part;
+                            $message .= $buf . sprintf('=%s', static::$LE);
+                        } else {
+                            $message .= $buf . $soft_break;
+                        }
+                        $buf = '';
+                    }
+                    while ($word !== '') {
+                        if ($length <= 0) {
+                            break;
+                        }
+                        $len = $length;
+                        if ($is_utf8) {
+                            $len = $this->utf8CharBoundary($word, $len);
+                        } elseif ('=' === substr($word, $len - 1, 1)) {
+                            --$len;
+                        } elseif ('=' === substr($word, $len - 2, 1)) {
+                            $len -= 2;
+                        }
+                        $part = substr($word, 0, $len);
+                        $word = (string) substr($word, $len);
+
+                        if ($word !== '') {
+                            $message .= $part . sprintf('=%s', static::$LE);
+                        } else {
+                            $buf = $part;
+                        }
+                    }
+                } else {
+                    $buf_o = $buf;
+                    if (!$firstword) {
+                        $buf .= ' ';
+                    }
+                    $buf .= $word;
+
+                    if ('' !== $buf_o && strlen($buf) > $length) {
+                        $message .= $buf_o . $soft_break;
+                        $buf = $word;
+                    }
+                }
+                $firstword = false;
+            }
+            $message .= $buf . static::$LE;
+        }
+
+        return $message;
+    }
+
+    /**
+     * Find the last character boundary prior to $maxLength in a utf-8
+     * quoted-printable encoded string.
+     * Original written by Colin Brown.
+     *
+     * @param string $encodedText utf-8 QP text
+     * @param int    $maxLength   Find the last character boundary prior to this length
+     *
+     * @return int
+     */
+    public function utf8CharBoundary($encodedText, $maxLength)
+    {
+        $foundSplitPos = false;
+        $lookBack = 3;
+        while (!$foundSplitPos) {
+            $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);
+            $encodedCharPos = strpos($lastChunk, '=');
+            if (false !== $encodedCharPos) {
+                // Found start of encoded character byte within $lookBack block.
+                // Check the encoded byte value (the 2 chars after the '=')
+                $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);
+                $dec = hexdec($hex);
+                if ($dec < 128) {
+                    // Single byte character.
+                    // If the encoded char was found at pos 0, it will fit
+                    // otherwise reduce maxLength to start of the encoded char
+                    if ($encodedCharPos > 0) {
+                        $maxLength -= $lookBack - $encodedCharPos;
+                    }
+                    $foundSplitPos = true;
+                } elseif ($dec >= 192) {
+                    // First byte of a multi byte character
+                    // Reduce maxLength to split at start of character
+                    $maxLength -= $lookBack - $encodedCharPos;
+                    $foundSplitPos = true;
+                } elseif ($dec < 192) {
+                    // Middle byte of a multi byte character, look further back
+                    $lookBack += 3;
+                }
+            } else {
+                // No encoded character found
+                $foundSplitPos = true;
+            }
+        }
+
+        return $maxLength;
+    }
+
+    /**
+     * Apply word wrapping to the message body.
+     * Wraps the message body to the number of chars set in the WordWrap property.
+     * You should only do this to plain-text bodies as wrapping HTML tags may break them.
+     * This is called automatically by createBody(), so you don't need to call it yourself.
+     */
+    public function setWordWrap()
+    {
+        if ($this->WordWrap < 1) {
+            return;
+        }
+
+        switch ($this->message_type) {
+            case 'alt':
+            case 'alt_inline':
+            case 'alt_attach':
+            case 'alt_inline_attach':
+                $this->AltBody = $this->wrapText($this->AltBody, $this->WordWrap);
+                break;
+            default:
+                $this->Body = $this->wrapText($this->Body, $this->WordWrap);
+                break;
+        }
+    }
+
+    /**
+     * Assemble message headers.
+     *
+     * @return string The assembled headers
+     */
+    public function createHeader()
+    {
+        $result = '';
+
+        $result .= $this->headerLine('Date', '' === $this->MessageDate ? self::rfcDate() : $this->MessageDate);
+
+        // The To header is created automatically by mail(), so needs to be omitted here
+        if ('mail' !== $this->Mailer) {
+            if ($this->SingleTo) {
+                foreach ($this->to as $toaddr) {
+                    $this->SingleToArray[] = $this->addrFormat($toaddr);
+                }
+            } elseif (count($this->to) > 0) {
+                $result .= $this->addrAppend('To', $this->to);
+            } elseif (count($this->cc) === 0) {
+                $result .= $this->headerLine('To', 'undisclosed-recipients:;');
+            }
+        }
+        $result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]);
+
+        // sendmail and mail() extract Cc from the header before sending
+        if (count($this->cc) > 0) {
+            $result .= $this->addrAppend('Cc', $this->cc);
+        }
+
+        // sendmail and mail() extract Bcc from the header before sending
+        if ((
+                'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer
+            )
+            && count($this->bcc) > 0
+        ) {
+            $result .= $this->addrAppend('Bcc', $this->bcc);
+        }
+
+        if (count($this->ReplyTo) > 0) {
+            $result .= $this->addrAppend('Reply-To', $this->ReplyTo);
+        }
+
+        // mail() sets the subject itself
+        if ('mail' !== $this->Mailer) {
+            $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
+        }
+
+        // Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4
+        // https://tools.ietf.org/html/rfc5322#section-3.6.4
+        if ('' !== $this->MessageID && preg_match('/^<.*@.*>$/', $this->MessageID)) {
+            $this->lastMessageID = $this->MessageID;
+        } else {
+            $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname());
+        }
+        $result .= $this->headerLine('Message-ID', $this->lastMessageID);
+        if (null !== $this->Priority) {
+            $result .= $this->headerLine('X-Priority', $this->Priority);
+        }
+        if ('' === $this->XMailer) {
+            $result .= $this->headerLine(
+                'X-Mailer',
+                'PHPMailer ' . self::VERSION . ' (https://github.com/PHPMailer/PHPMailer)'
+            );
+        } else {
+            $myXmailer = trim($this->XMailer);
+            if ($myXmailer) {
+                $result .= $this->headerLine('X-Mailer', $myXmailer);
+            }
+        }
+
+        if ('' !== $this->ConfirmReadingTo) {
+            $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>');
+        }
+
+        // Add custom headers
+        foreach ($this->CustomHeader as $header) {
+            $result .= $this->headerLine(
+                trim($header[0]),
+                $this->encodeHeader(trim($header[1]))
+            );
+        }
+        if (!$this->sign_key_file) {
+            $result .= $this->headerLine('MIME-Version', '1.0');
+            $result .= $this->getMailMIME();
+        }
+
+        return $result;
+    }
+
+    /**
+     * Get the message MIME type headers.
+     *
+     * @return string
+     */
+    public function getMailMIME()
+    {
+        $result = '';
+        $ismultipart = true;
+        switch ($this->message_type) {
+            case 'inline':
+                $result .= $this->headerLine('Content-Type', static::CONTENT_TYPE_MULTIPART_RELATED . ';');
+                $result .= $this->textLine(' boundary="' . $this->boundary[1] . '"');
+                break;
+            case 'attach':
+            case 'inline_attach':
+            case 'alt_attach':
+            case 'alt_inline_attach':
+                $result .= $this->headerLine('Content-Type', static::CONTENT_TYPE_MULTIPART_MIXED . ';');
+                $result .= $this->textLine(' boundary="' . $this->boundary[1] . '"');
+                break;
+            case 'alt':
+            case 'alt_inline':
+                $result .= $this->headerLine('Content-Type', static::CONTENT_TYPE_MULTIPART_ALTERNATIVE . ';');
+                $result .= $this->textLine(' boundary="' . $this->boundary[1] . '"');
+                break;
+            default:
+                // Catches case 'plain': and case '':
+                $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet);
+                $ismultipart = false;
+                break;
+        }
+        // RFC1341 part 5 says 7bit is assumed if not specified
+        if (static::ENCODING_7BIT !== $this->Encoding) {
+            // RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE
+            if ($ismultipart) {
+                if (static::ENCODING_8BIT === $this->Encoding) {
+                    $result .= $this->headerLine('Content-Transfer-Encoding', static::ENCODING_8BIT);
+                }
+                // The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible
+            } else {
+                $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding);
+            }
+        }
+
+        if ('mail' !== $this->Mailer) {
+//            $result .= static::$LE;
+        }
+
+        return $result;
+    }
+
+    /**
+     * Returns the whole MIME message.
+     * Includes complete headers and body.
+     * Only valid post preSend().
+     *
+     * @see PHPMailer::preSend()
+     *
+     * @return string
+     */
+    public function getSentMIMEMessage()
+    {
+        return static::stripTrailingWSP($this->MIMEHeader . $this->mailHeader) .
+            static::$LE . static::$LE . $this->MIMEBody;
+    }
+
+    /**
+     * Create a unique ID to use for boundaries.
+     *
+     * @return string
+     */
+    protected function generateId()
+    {
+        $len = 32; //32 bytes = 256 bits
+        $bytes = '';
+        if (function_exists('random_bytes')) {
+            try {
+                $bytes = random_bytes($len);
+            } catch (\Exception $e) {
+                //Do nothing
+            }
+        } elseif (function_exists('openssl_random_pseudo_bytes')) {
+            /** @noinspection CryptographicallySecureRandomnessInspection */
+            $bytes = openssl_random_pseudo_bytes($len);
+        }
+        if ($bytes === '') {
+            //We failed to produce a proper random string, so make do.
+            //Use a hash to force the length to the same as the other methods
+            $bytes = hash('sha256', uniqid((string) mt_rand(), true), true);
+        }
+
+        //We don't care about messing up base64 format here, just want a random string
+        return str_replace(['=', '+', '/'], '', base64_encode(hash('sha256', $bytes, true)));
+    }
+
+    /**
+     * Assemble the message body.
+     * Returns an empty string on failure.
+     *
+     * @throws Exception
+     *
+     * @return string The assembled message body
+     */
+    public function createBody()
+    {
+        $body = '';
+        //Create unique IDs and preset boundaries
+        $this->uniqueid = $this->generateId();
+        $this->boundary[1] = 'b1_' . $this->uniqueid;
+        $this->boundary[2] = 'b2_' . $this->uniqueid;
+        $this->boundary[3] = 'b3_' . $this->uniqueid;
+
+        if ($this->sign_key_file) {
+            $body .= $this->getMailMIME() . static::$LE;
+        }
+
+        $this->setWordWrap();
+
+        $bodyEncoding = $this->Encoding;
+        $bodyCharSet = $this->CharSet;
+        //Can we do a 7-bit downgrade?
+        if (static::ENCODING_8BIT === $bodyEncoding && !$this->has8bitChars($this->Body)) {
+            $bodyEncoding = static::ENCODING_7BIT;
+            //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit
+            $bodyCharSet = static::CHARSET_ASCII;
+        }
+        //If lines are too long, and we're not already using an encoding that will shorten them,
+        //change to quoted-printable transfer encoding for the body part only
+        if (static::ENCODING_BASE64 !== $this->Encoding && static::hasLineLongerThanMax($this->Body)) {
+            $bodyEncoding = static::ENCODING_QUOTED_PRINTABLE;
+        }
+
+        $altBodyEncoding = $this->Encoding;
+        $altBodyCharSet = $this->CharSet;
+        //Can we do a 7-bit downgrade?
+        if (static::ENCODING_8BIT === $altBodyEncoding && !$this->has8bitChars($this->AltBody)) {
+            $altBodyEncoding = static::ENCODING_7BIT;
+            //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit
+            $altBodyCharSet = static::CHARSET_ASCII;
+        }
+        //If lines are too long, and we're not already using an encoding that will shorten them,
+        //change to quoted-printable transfer encoding for the alt body part only
+        if (static::ENCODING_BASE64 !== $altBodyEncoding && static::hasLineLongerThanMax($this->AltBody)) {
+            $altBodyEncoding = static::ENCODING_QUOTED_PRINTABLE;
+        }
+        //Use this as a preamble in all multipart message types
+        $mimepre = 'This is a multi-part message in MIME format.' . static::$LE . static::$LE;
+        switch ($this->message_type) {
+            case 'inline':
+                $body .= $mimepre;
+                $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding);
+                $body .= $this->encodeString($this->Body, $bodyEncoding);
+                $body .= static::$LE;
+                $body .= $this->attachAll('inline', $this->boundary[1]);
+                break;
+            case 'attach':
+                $body .= $mimepre;
+                $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding);
+                $body .= $this->encodeString($this->Body, $bodyEncoding);
+                $body .= static::$LE;
+                $body .= $this->attachAll('attachment', $this->boundary[1]);
+                break;
+            case 'inline_attach':
+                $body .= $mimepre;
+                $body .= $this->textLine('--' . $this->boundary[1]);
+                $body .= $this->headerLine('Content-Type', static::CONTENT_TYPE_MULTIPART_RELATED . ';');
+                $body .= $this->textLine(' boundary="' . $this->boundary[2] . '";');
+                $body .= $this->textLine(' type="' . static::CONTENT_TYPE_TEXT_HTML . '"');
+                $body .= static::$LE;
+                $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, '', $bodyEncoding);
+                $body .= $this->encodeString($this->Body, $bodyEncoding);
+                $body .= static::$LE;
+                $body .= $this->attachAll('inline', $this->boundary[2]);
+                $body .= static::$LE;
+                $body .= $this->attachAll('attachment', $this->boundary[1]);
+                break;
+            case 'alt':
+                $body .= $mimepre;
+                $body .= $this->getBoundary(
+                    $this->boundary[1],
+                    $altBodyCharSet,
+                    static::CONTENT_TYPE_PLAINTEXT,
+                    $altBodyEncoding
+                );
+                $body .= $this->encodeString($this->AltBody, $altBodyEncoding);
+                $body .= static::$LE;
+                $body .= $this->getBoundary(
+                    $this->boundary[1],
+                    $bodyCharSet,
+                    static::CONTENT_TYPE_TEXT_HTML,
+                    $bodyEncoding
+                );
+                $body .= $this->encodeString($this->Body, $bodyEncoding);
+                $body .= static::$LE;
+                if (!empty($this->Ical)) {
+                    $method = static::ICAL_METHOD_REQUEST;
+                    foreach (static::$IcalMethods as $imethod) {
+                        if (stripos($this->Ical, 'METHOD:' . $imethod) !== false) {
+                            $method = $imethod;
+                            break;
+                        }
+                    }
+                    $body .= $this->getBoundary(
+                        $this->boundary[1],
+                        '',
+                        static::CONTENT_TYPE_TEXT_CALENDAR . '; method=' . $method,
+                        ''
+                    );
+                    $body .= $this->encodeString($this->Ical, $this->Encoding);
+                    $body .= static::$LE;
+                }
+                $body .= $this->endBoundary($this->boundary[1]);
+                break;
+            case 'alt_inline':
+                $body .= $mimepre;
+                $body .= $this->getBoundary(
+                    $this->boundary[1],
+                    $altBodyCharSet,
+                    static::CONTENT_TYPE_PLAINTEXT,
+                    $altBodyEncoding
+                );
+                $body .= $this->encodeString($this->AltBody, $altBodyEncoding);
+                $body .= static::$LE;
+                $body .= $this->textLine('--' . $this->boundary[1]);
+                $body .= $this->headerLine('Content-Type', static::CONTENT_TYPE_MULTIPART_RELATED . ';');
+                $body .= $this->textLine(' boundary="' . $this->boundary[2] . '";');
+                $body .= $this->textLine(' type="' . static::CONTENT_TYPE_TEXT_HTML . '"');
+                $body .= static::$LE;
+                $body .= $this->getBoundary(
+                    $this->boundary[2],
+                    $bodyCharSet,
+                    static::CONTENT_TYPE_TEXT_HTML,
+                    $bodyEncoding
+                );
+                $body .= $this->encodeString($this->Body, $bodyEncoding);
+                $body .= static::$LE;
+                $body .= $this->attachAll('inline', $this->boundary[2]);
+                $body .= static::$LE;
+                $body .= $this->endBoundary($this->boundary[1]);
+                break;
+            case 'alt_attach':
+                $body .= $mimepre;
+                $body .= $this->textLine('--' . $this->boundary[1]);
+                $body .= $this->headerLine('Content-Type', static::CONTENT_TYPE_MULTIPART_ALTERNATIVE . ';');
+                $body .= $this->textLine(' boundary="' . $this->boundary[2] . '"');
+                $body .= static::$LE;
+                $body .= $this->getBoundary(
+                    $this->boundary[2],
+                    $altBodyCharSet,
+                    static::CONTENT_TYPE_PLAINTEXT,
+                    $altBodyEncoding
+                );
+                $body .= $this->encodeString($this->AltBody, $altBodyEncoding);
+                $body .= static::$LE;
+                $body .= $this->getBoundary(
+                    $this->boundary[2],
+                    $bodyCharSet,
+                    static::CONTENT_TYPE_TEXT_HTML,
+                    $bodyEncoding
+                );
+                $body .= $this->encodeString($this->Body, $bodyEncoding);
+                $body .= static::$LE;
+                if (!empty($this->Ical)) {
+                    $method = static::ICAL_METHOD_REQUEST;
+                    foreach (static::$IcalMethods as $imethod) {
+                        if (stripos($this->Ical, 'METHOD:' . $imethod) !== false) {
+                            $method = $imethod;
+                            break;
+                        }
+                    }
+                    $body .= $this->getBoundary(
+                        $this->boundary[2],
+                        '',
+                        static::CONTENT_TYPE_TEXT_CALENDAR . '; method=' . $method,
+                        ''
+                    );
+                    $body .= $this->encodeString($this->Ical, $this->Encoding);
+                }
+                $body .= $this->endBoundary($this->boundary[2]);
+                $body .= static::$LE;
+                $body .= $this->attachAll('attachment', $this->boundary[1]);
+                break;
+            case 'alt_inline_attach':
+                $body .= $mimepre;
+                $body .= $this->textLine('--' . $this->boundary[1]);
+                $body .= $this->headerLine('Content-Type', static::CONTENT_TYPE_MULTIPART_ALTERNATIVE . ';');
+                $body .= $this->textLine(' boundary="' . $this->boundary[2] . '"');
+                $body .= static::$LE;
+                $body .= $this->getBoundary(
+                    $this->boundary[2],
+                    $altBodyCharSet,
+                    static::CONTENT_TYPE_PLAINTEXT,
+                    $altBodyEncoding
+                );
+                $body .= $this->encodeString($this->AltBody, $altBodyEncoding);
+                $body .= static::$LE;
+                $body .= $this->textLine('--' . $this->boundary[2]);
+                $body .= $this->headerLine('Content-Type', static::CONTENT_TYPE_MULTIPART_RELATED . ';');
+                $body .= $this->textLine(' boundary="' . $this->boundary[3] . '";');
+                $body .= $this->textLine(' type="' . static::CONTENT_TYPE_TEXT_HTML . '"');
+                $body .= static::$LE;
+                $body .= $this->getBoundary(
+                    $this->boundary[3],
+                    $bodyCharSet,
+                    static::CONTENT_TYPE_TEXT_HTML,
+                    $bodyEncoding
+                );
+                $body .= $this->encodeString($this->Body, $bodyEncoding);
+                $body .= static::$LE;
+                $body .= $this->attachAll('inline', $this->boundary[3]);
+                $body .= static::$LE;
+                $body .= $this->endBoundary($this->boundary[2]);
+                $body .= static::$LE;
+                $body .= $this->attachAll('attachment', $this->boundary[1]);
+                break;
+            default:
+                // Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types
+                //Reset the `Encoding` property in case we changed it for line length reasons
+                $this->Encoding = $bodyEncoding;
+                $body .= $this->encodeString($this->Body, $this->Encoding);
+                break;
+        }
+
+        if ($this->isError()) {
+            $body = '';
+            if ($this->exceptions) {
+                throw new Exception($this->lang('empty_message'), self::STOP_CRITICAL);
+            }
+        } elseif ($this->sign_key_file) {
+            try {
+                if (!defined('PKCS7_TEXT')) {
+                    throw new Exception($this->lang('extension_missing') . 'openssl');
+                }
+
+                $file = tempnam(sys_get_temp_dir(), 'srcsign');
+                $signed = tempnam(sys_get_temp_dir(), 'mailsign');
+                file_put_contents($file, $body);
+
+                //Workaround for PHP bug https://bugs.php.net/bug.php?id=69197
+                if (empty($this->sign_extracerts_file)) {
+                    $sign = @openssl_pkcs7_sign(
+                        $file,
+                        $signed,
+                        'file://' . realpath($this->sign_cert_file),
+                        ['file://' . realpath($this->sign_key_file), $this->sign_key_pass],
+                        []
+                    );
+                } else {
+                    $sign = @openssl_pkcs7_sign(
+                        $file,
+                        $signed,
+                        'file://' . realpath($this->sign_cert_file),
+                        ['file://' . realpath($this->sign_key_file), $this->sign_key_pass],
+                        [],
+                        PKCS7_DETACHED,
+                        $this->sign_extracerts_file
+                    );
+                }
+
+                @unlink($file);
+                if ($sign) {
+                    $body = file_get_contents($signed);
+                    @unlink($signed);
+                    //The message returned by openssl contains both headers and body, so need to split them up
+                    $parts = explode("\n\n", $body, 2);
+                    $this->MIMEHeader .= $parts[0] . static::$LE . static::$LE;
+                    $body = $parts[1];
+                } else {
+                    @unlink($signed);
+                    throw new Exception($this->lang('signing') . openssl_error_string());
+                }
+            } catch (Exception $exc) {
+                $body = '';
+                if ($this->exceptions) {
+                    throw $exc;
+                }
+            }
+        }
+
+        return $body;
+    }
+
+    /**
+     * Return the start of a message boundary.
+     *
+     * @param string $boundary
+     * @param string $charSet
+     * @param string $contentType
+     * @param string $encoding
+     *
+     * @return string
+     */
+    protected function getBoundary($boundary, $charSet, $contentType, $encoding)
+    {
+        $result = '';
+        if ('' === $charSet) {
+            $charSet = $this->CharSet;
+        }
+        if ('' === $contentType) {
+            $contentType = $this->ContentType;
+        }
+        if ('' === $encoding) {
+            $encoding = $this->Encoding;
+        }
+        $result .= $this->textLine('--' . $boundary);
+        $result .= sprintf('Content-Type: %s; charset=%s', $contentType, $charSet);
+        $result .= static::$LE;
+        // RFC1341 part 5 says 7bit is assumed if not specified
+        if (static::ENCODING_7BIT !== $encoding) {
+            $result .= $this->headerLine('Content-Transfer-Encoding', $encoding);
+        }
+        $result .= static::$LE;
+
+        return $result;
+    }
+
+    /**
+     * Return the end of a message boundary.
+     *
+     * @param string $boundary
+     *
+     * @return string
+     */
+    protected function endBoundary($boundary)
+    {
+        return static::$LE . '--' . $boundary . '--' . static::$LE;
+    }
+
+    /**
+     * Set the message type.
+     * PHPMailer only supports some preset message types, not arbitrary MIME structures.
+     */
+    protected function setMessageType()
+    {
+        $type = [];
+        if ($this->alternativeExists()) {
+            $type[] = 'alt';
+        }
+        if ($this->inlineImageExists()) {
+            $type[] = 'inline';
+        }
+        if ($this->attachmentExists()) {
+            $type[] = 'attach';
+        }
+        $this->message_type = implode('_', $type);
+        if ('' === $this->message_type) {
+            //The 'plain' message_type refers to the message having a single body element, not that it is plain-text
+            $this->message_type = 'plain';
+        }
+    }
+
+    /**
+     * Format a header line.
+     *
+     * @param string     $name
+     * @param string|int $value
+     *
+     * @return string
+     */
+    public function headerLine($name, $value)
+    {
+        return $name . ': ' . $value . static::$LE;
+    }
+
+    /**
+     * Return a formatted mail line.
+     *
+     * @param string $value
+     *
+     * @return string
+     */
+    public function textLine($value)
+    {
+        return $value . static::$LE;
+    }
+
+    /**
+     * Add an attachment from a path on the filesystem.
+     * Never use a user-supplied path to a file!
+     * Returns false if the file could not be found or read.
+     * Explicitly *does not* support passing URLs; PHPMailer is not an HTTP client.
+     * If you need to do that, fetch the resource yourself and pass it in via a local file or string.
+     *
+     * @param string $path        Path to the attachment
+     * @param string $name        Overrides the attachment name
+     * @param string $encoding    File encoding (see $Encoding)
+     * @param string $type        MIME type, e.g. `image/jpeg`; determined automatically from $path if not specified
+     * @param string $disposition Disposition to use
+     *
+     * @throws Exception
+     *
+     * @return bool
+     */
+    public function addAttachment(
+        $path,
+        $name = '',
+        $encoding = self::ENCODING_BASE64,
+        $type = '',
+        $disposition = 'attachment'
+    ) {
+        try {
+            if (!static::fileIsAccessible($path)) {
+                throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE);
+            }
+
+            // If a MIME type is not specified, try to work it out from the file name
+            if ('' === $type) {
+                $type = static::filenameToType($path);
+            }
+
+            $filename = (string) static::mb_pathinfo($path, PATHINFO_BASENAME);
+            if ('' === $name) {
+                $name = $filename;
+            }
+            if (!$this->validateEncoding($encoding)) {
+                throw new Exception($this->lang('encoding') . $encoding);
+            }
+
+            $this->attachment[] = [
+                0 => $path,
+                1 => $filename,
+                2 => $name,
+                3 => $encoding,
+                4 => $type,
+                5 => false, // isStringAttachment
+                6 => $disposition,
+                7 => $name,
+            ];
+        } catch (Exception $exc) {
+            $this->setError($exc->getMessage());
+            $this->edebug($exc->getMessage());
+            if ($this->exceptions) {
+                throw $exc;
+            }
+
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Return the array of attachments.
+     *
+     * @return array
+     */
+    public function getAttachments()
+    {
+        return $this->attachment;
+    }
+
+    /**
+     * Attach all file, string, and binary attachments to the message.
+     * Returns an empty string on failure.
+     *
+     * @param string $disposition_type
+     * @param string $boundary
+     *
+     * @throws Exception
+     *
+     * @return string
+     */
+    protected function attachAll($disposition_type, $boundary)
+    {
+        // Return text of body
+        $mime = [];
+        $cidUniq = [];
+        $incl = [];
+
+        // Add all attachments
+        foreach ($this->attachment as $attachment) {
+            // Check if it is a valid disposition_filter
+            if ($attachment[6] === $disposition_type) {
+                // Check for string attachment
+                $string = '';
+                $path = '';
+                $bString = $attachment[5];
+                if ($bString) {
+                    $string = $attachment[0];
+                } else {
+                    $path = $attachment[0];
+                }
+
+                $inclhash = hash('sha256', serialize($attachment));
+                if (in_array($inclhash, $incl, true)) {
+                    continue;
+                }
+                $incl[] = $inclhash;
+                $name = $attachment[2];
+                $encoding = $attachment[3];
+                $type = $attachment[4];
+                $disposition = $attachment[6];
+                $cid = $attachment[7];
+                if ('inline' === $disposition && array_key_exists($cid, $cidUniq)) {
+                    continue;
+                }
+                $cidUniq[$cid] = true;
+
+                $mime[] = sprintf('--%s%s', $boundary, static::$LE);
+                //Only include a filename property if we have one
+                if (!empty($name)) {
+                    $mime[] = sprintf(
+                        'Content-Type: %s; name=%s%s',
+                        $type,
+                        static::quotedString($this->encodeHeader($this->secureHeader($name))),
+                        static::$LE
+                    );
+                } else {
+                    $mime[] = sprintf(
+                        'Content-Type: %s%s',
+                        $type,
+                        static::$LE
+                    );
+                }
+                // RFC1341 part 5 says 7bit is assumed if not specified
+                if (static::ENCODING_7BIT !== $encoding) {
+                    $mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, static::$LE);
+                }
+
+                //Only set Content-IDs on inline attachments
+                if ((string) $cid !== '' && $disposition === 'inline') {
+                    $mime[] = 'Content-ID: <' . $this->encodeHeader($this->secureHeader($cid)) . '>' . static::$LE;
+                }
+
+                // Allow for bypassing the Content-Disposition header
+                if (!empty($disposition)) {
+                    $encoded_name = $this->encodeHeader($this->secureHeader($name));
+                    if (!empty($encoded_name)) {
+                        $mime[] = sprintf(
+                            'Content-Disposition: %s; filename=%s%s',
+                            $disposition,
+                            static::quotedString($encoded_name),
+                            static::$LE . static::$LE
+                        );
+                    } else {
+                        $mime[] = sprintf(
+                            'Content-Disposition: %s%s',
+                            $disposition,
+                            static::$LE . static::$LE
+                        );
+                    }
+                } else {
+                    $mime[] = static::$LE;
+                }
+
+                // Encode as string attachment
+                if ($bString) {
+                    $mime[] = $this->encodeString($string, $encoding);
+                } else {
+                    $mime[] = $this->encodeFile($path, $encoding);
+                }
+                if ($this->isError()) {
+                    return '';
+                }
+                $mime[] = static::$LE;
+            }
+        }
+
+        $mime[] = sprintf('--%s--%s', $boundary, static::$LE);
+
+        return implode('', $mime);
+    }
+
+    /**
+     * Encode a file attachment in requested format.
+     * Returns an empty string on failure.
+     *
+     * @param string $path     The full path to the file
+     * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
+     *
+     * @return string
+     */
+    protected function encodeFile($path, $encoding = self::ENCODING_BASE64)
+    {
+        try {
+            if (!static::fileIsAccessible($path)) {
+                throw new Exception($this->lang('file_open') . $path, self::STOP_CONTINUE);
+            }
+            $file_buffer = file_get_contents($path);
+            if (false === $file_buffer) {
+                throw new Exception($this->lang('file_open') . $path, self::STOP_CONTINUE);
+            }
+            $file_buffer = $this->encodeString($file_buffer, $encoding);
+
+            return $file_buffer;
+        } catch (Exception $exc) {
+            $this->setError($exc->getMessage());
+            $this->edebug($exc->getMessage());
+            if ($this->exceptions) {
+                throw $exc;
+            }
+
+            return '';
+        }
+    }
+
+    /**
+     * Encode a string in requested format.
+     * Returns an empty string on failure.
+     *
+     * @param string $str      The text to encode
+     * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
+     *
+     * @throws Exception
+     *
+     * @return string
+     */
+    public function encodeString($str, $encoding = self::ENCODING_BASE64)
+    {
+        $encoded = '';
+        switch (strtolower($encoding)) {
+            case static::ENCODING_BASE64:
+                $encoded = chunk_split(
+                    base64_encode($str),
+                    static::STD_LINE_LENGTH,
+                    static::$LE
+                );
+                break;
+            case static::ENCODING_7BIT:
+            case static::ENCODING_8BIT:
+                $encoded = static::normalizeBreaks($str);
+                // Make sure it ends with a line break
+                if (substr($encoded, -(strlen(static::$LE))) !== static::$LE) {
+                    $encoded .= static::$LE;
+                }
+                break;
+            case static::ENCODING_BINARY:
+                $encoded = $str;
+                break;
+            case static::ENCODING_QUOTED_PRINTABLE:
+                $encoded = $this->encodeQP($str);
+                break;
+            default:
+                $this->setError($this->lang('encoding') . $encoding);
+                if ($this->exceptions) {
+                    throw new Exception($this->lang('encoding') . $encoding);
+                }
+                break;
+        }
+
+        return $encoded;
+    }
+
+    /**
+     * Encode a header value (not including its label) optimally.
+     * Picks shortest of Q, B, or none. Result includes folding if needed.
+     * See RFC822 definitions for phrase, comment and text positions.
+     *
+     * @param string $str      The header value to encode
+     * @param string $position What context the string will be used in
+     *
+     * @return string
+     */
+    public function encodeHeader($str, $position = 'text')
+    {
+        $matchcount = 0;
+        switch (strtolower($position)) {
+            case 'phrase':
+                if (!preg_match('/[\200-\377]/', $str)) {
+                    // Can't use addslashes as we don't know the value of magic_quotes_sybase
+                    $encoded = addcslashes($str, "\0..\37\177\\\"");
+                    if (($str === $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
+                        return $encoded;
+                    }
+
+                    return "\"$encoded\"";
+                }
+                $matchcount = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
+                break;
+            /* @noinspection PhpMissingBreakStatementInspection */
+            case 'comment':
+                $matchcount = preg_match_all('/[()"]/', $str, $matches);
+            //fallthrough
+            case 'text':
+            default:
+                $matchcount += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
+                break;
+        }
+
+        if ($this->has8bitChars($str)) {
+            $charset = $this->CharSet;
+        } else {
+            $charset = static::CHARSET_ASCII;
+        }
+
+        // Q/B encoding adds 8 chars and the charset ("` =?<charset>?[QB]?<content>?=`").
+        $overhead = 8 + strlen($charset);
+
+        if ('mail' === $this->Mailer) {
+            $maxlen = static::MAIL_MAX_LINE_LENGTH - $overhead;
+        } else {
+            $maxlen = static::MAX_LINE_LENGTH - $overhead;
+        }
+
+        // Select the encoding that produces the shortest output and/or prevents corruption.
+        if ($matchcount > strlen($str) / 3) {
+            // More than 1/3 of the content needs encoding, use B-encode.
+            $encoding = 'B';
+        } elseif ($matchcount > 0) {
+            // Less than 1/3 of the content needs encoding, use Q-encode.
+            $encoding = 'Q';
+        } elseif (strlen($str) > $maxlen) {
+            // No encoding needed, but value exceeds max line length, use Q-encode to prevent corruption.
+            $encoding = 'Q';
+        } else {
+            // No reformatting needed
+            $encoding = false;
+        }
+
+        switch ($encoding) {
+            case 'B':
+                if ($this->hasMultiBytes($str)) {
+                    // Use a custom function which correctly encodes and wraps long
+                    // multibyte strings without breaking lines within a character
+                    $encoded = $this->base64EncodeWrapMB($str, "\n");
+                } else {
+                    $encoded = base64_encode($str);
+                    $maxlen -= $maxlen % 4;
+                    $encoded = trim(chunk_split($encoded, $maxlen, "\n"));
+                }
+                $encoded = preg_replace('/^(.*)$/m', ' =?' . $charset . "?$encoding?\\1?=", $encoded);
+                break;
+            case 'Q':
+                $encoded = $this->encodeQ($str, $position);
+                $encoded = $this->wrapText($encoded, $maxlen, true);
+                $encoded = str_replace('=' . static::$LE, "\n", trim($encoded));
+                $encoded = preg_replace('/^(.*)$/m', ' =?' . $charset . "?$encoding?\\1?=", $encoded);
+                break;
+            default:
+                return $str;
+        }
+
+        return trim(static::normalizeBreaks($encoded));
+    }
+
+    /**
+     * Check if a string contains multi-byte characters.
+     *
+     * @param string $str multi-byte text to wrap encode
+     *
+     * @return bool
+     */
+    public function hasMultiBytes($str)
+    {
+        if (function_exists('mb_strlen')) {
+            return strlen($str) > mb_strlen($str, $this->CharSet);
+        }
+
+        // Assume no multibytes (we can't handle without mbstring functions anyway)
+        return false;
+    }
+
+    /**
+     * Does a string contain any 8-bit chars (in any charset)?
+     *
+     * @param string $text
+     *
+     * @return bool
+     */
+    public function has8bitChars($text)
+    {
+        return (bool) preg_match('/[\x80-\xFF]/', $text);
+    }
+
+    /**
+     * Encode and wrap long multibyte strings for mail headers
+     * without breaking lines within a character.
+     * Adapted from a function by paravoid.
+     *
+     * @see http://www.php.net/manual/en/function.mb-encode-mimeheader.php#60283
+     *
+     * @param string $str       multi-byte text to wrap encode
+     * @param string $linebreak string to use as linefeed/end-of-line
+     *
+     * @return string
+     */
+    public function base64EncodeWrapMB($str, $linebreak = null)
+    {
+        $start = '=?' . $this->CharSet . '?B?';
+        $end = '?=';
+        $encoded = '';
+        if (null === $linebreak) {
+            $linebreak = static::$LE;
+        }
+
+        $mb_length = mb_strlen($str, $this->CharSet);
+        // Each line must have length <= 75, including $start and $end
+        $length = 75 - strlen($start) - strlen($end);
+        // Average multi-byte ratio
+        $ratio = $mb_length / strlen($str);
+        // Base64 has a 4:3 ratio
+        $avgLength = floor($length * $ratio * .75);
+
+        $offset = 0;
+        for ($i = 0; $i < $mb_length; $i += $offset) {
+            $lookBack = 0;
+            do {
+                $offset = $avgLength - $lookBack;
+                $chunk = mb_substr($str, $i, $offset, $this->CharSet);
+                $chunk = base64_encode($chunk);
+                ++$lookBack;
+            } while (strlen($chunk) > $length);
+            $encoded .= $chunk . $linebreak;
+        }
+
+        // Chomp the last linefeed
+        return substr($encoded, 0, -strlen($linebreak));
+    }
+
+    /**
+     * Encode a string in quoted-printable format.
+     * According to RFC2045 section 6.7.
+     *
+     * @param string $string The text to encode
+     *
+     * @return string
+     */
+    public function encodeQP($string)
+    {
+        return static::normalizeBreaks(quoted_printable_encode($string));
+    }
+
+    /**
+     * Encode a string using Q encoding.
+     *
+     * @see http://tools.ietf.org/html/rfc2047#section-4.2
+     *
+     * @param string $str      the text to encode
+     * @param string $position Where the text is going to be used, see the RFC for what that means
+     *
+     * @return string
+     */
+    public function encodeQ($str, $position = 'text')
+    {
+        // There should not be any EOL in the string
+        $pattern = '';
+        $encoded = str_replace(["\r", "\n"], '', $str);
+        switch (strtolower($position)) {
+            case 'phrase':
+                // RFC 2047 section 5.3
+                $pattern = '^A-Za-z0-9!*+\/ -';
+                break;
+            /*
+             * RFC 2047 section 5.2.
+             * Build $pattern without including delimiters and []
+             */
+            /* @noinspection PhpMissingBreakStatementInspection */
+            case 'comment':
+                $pattern = '\(\)"';
+            /* Intentional fall through */
+            case 'text':
+            default:
+                // RFC 2047 section 5.1
+                // Replace every high ascii, control, =, ? and _ characters
+                $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern;
+                break;
+        }
+        $matches = [];
+        if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) {
+            // If the string contains an '=', make sure it's the first thing we replace
+            // so as to avoid double-encoding
+            $eqkey = array_search('=', $matches[0], true);
+            if (false !== $eqkey) {
+                unset($matches[0][$eqkey]);
+                array_unshift($matches[0], '=');
+            }
+            foreach (array_unique($matches[0]) as $char) {
+                $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded);
+            }
+        }
+        // Replace spaces with _ (more readable than =20)
+        // RFC 2047 section 4.2(2)
+        return str_replace(' ', '_', $encoded);
+    }
+
+    /**
+     * Add a string or binary attachment (non-filesystem).
+     * This method can be used to attach ascii or binary data,
+     * such as a BLOB record from a database.
+     *
+     * @param string $string      String attachment data
+     * @param string $filename    Name of the attachment
+     * @param string $encoding    File encoding (see $Encoding)
+     * @param string $type        File extension (MIME) type
+     * @param string $disposition Disposition to use
+     *
+     * @throws Exception
+     *
+     * @return bool True on successfully adding an attachment
+     */
+    public function addStringAttachment(
+        $string,
+        $filename,
+        $encoding = self::ENCODING_BASE64,
+        $type = '',
+        $disposition = 'attachment'
+    ) {
+        try {
+            // If a MIME type is not specified, try to work it out from the file name
+            if ('' === $type) {
+                $type = static::filenameToType($filename);
+            }
+
+            if (!$this->validateEncoding($encoding)) {
+                throw new Exception($this->lang('encoding') . $encoding);
+            }
+
+            // Append to $attachment array
+            $this->attachment[] = [
+                0 => $string,
+                1 => $filename,
+                2 => static::mb_pathinfo($filename, PATHINFO_BASENAME),
+                3 => $encoding,
+                4 => $type,
+                5 => true, // isStringAttachment
+                6 => $disposition,
+                7 => 0,
+            ];
+        } catch (Exception $exc) {
+            $this->setError($exc->getMessage());
+            $this->edebug($exc->getMessage());
+            if ($this->exceptions) {
+                throw $exc;
+            }
+
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Add an embedded (inline) attachment from a file.
+     * This can include images, sounds, and just about any other document type.
+     * These differ from 'regular' attachments in that they are intended to be
+     * displayed inline with the message, not just attached for download.
+     * This is used in HTML messages that embed the images
+     * the HTML refers to using the $cid value.
+     * Never use a user-supplied path to a file!
+     *
+     * @param string $path        Path to the attachment
+     * @param string $cid         Content ID of the attachment; Use this to reference
+     *                            the content when using an embedded image in HTML
+     * @param string $name        Overrides the attachment name
+     * @param string $encoding    File encoding (see $Encoding)
+     * @param string $type        File MIME type
+     * @param string $disposition Disposition to use
+     *
+     * @throws Exception
+     *
+     * @return bool True on successfully adding an attachment
+     */
+    public function addEmbeddedImage(
+        $path,
+        $cid,
+        $name = '',
+        $encoding = self::ENCODING_BASE64,
+        $type = '',
+        $disposition = 'inline'
+    ) {
+        try {
+            if (!static::fileIsAccessible($path)) {
+                throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE);
+            }
+
+            // If a MIME type is not specified, try to work it out from the file name
+            if ('' === $type) {
+                $type = static::filenameToType($path);
+            }
+
+            if (!$this->validateEncoding($encoding)) {
+                throw new Exception($this->lang('encoding') . $encoding);
+            }
+
+            $filename = (string) static::mb_pathinfo($path, PATHINFO_BASENAME);
+            if ('' === $name) {
+                $name = $filename;
+            }
+
+            // Append to $attachment array
+            $this->attachment[] = [
+                0 => $path,
+                1 => $filename,
+                2 => $name,
+                3 => $encoding,
+                4 => $type,
+                5 => false, // isStringAttachment
+                6 => $disposition,
+                7 => $cid,
+            ];
+        } catch (Exception $exc) {
+            $this->setError($exc->getMessage());
+            $this->edebug($exc->getMessage());
+            if ($this->exceptions) {
+                throw $exc;
+            }
+
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Add an embedded stringified attachment.
+     * This can include images, sounds, and just about any other document type.
+     * If your filename doesn't contain an extension, be sure to set the $type to an appropriate MIME type.
+     *
+     * @param string $string      The attachment binary data
+     * @param string $cid         Content ID of the attachment; Use this to reference
+     *                            the content when using an embedded image in HTML
+     * @param string $name        A filename for the attachment. If this contains an extension,
+     *                            PHPMailer will attempt to set a MIME type for the attachment.
+     *                            For example 'file.jpg' would get an 'image/jpeg' MIME type.
+     * @param string $encoding    File encoding (see $Encoding), defaults to 'base64'
+     * @param string $type        MIME type - will be used in preference to any automatically derived type
+     * @param string $disposition Disposition to use
+     *
+     * @throws Exception
+     *
+     * @return bool True on successfully adding an attachment
+     */
+    public function addStringEmbeddedImage(
+        $string,
+        $cid,
+        $name = '',
+        $encoding = self::ENCODING_BASE64,
+        $type = '',
+        $disposition = 'inline'
+    ) {
+        try {
+            // If a MIME type is not specified, try to work it out from the name
+            if ('' === $type && !empty($name)) {
+                $type = static::filenameToType($name);
+            }
+
+            if (!$this->validateEncoding($encoding)) {
+                throw new Exception($this->lang('encoding') . $encoding);
+            }
+
+            // Append to $attachment array
+            $this->attachment[] = [
+                0 => $string,
+                1 => $name,
+                2 => $name,
+                3 => $encoding,
+                4 => $type,
+                5 => true, // isStringAttachment
+                6 => $disposition,
+                7 => $cid,
+            ];
+        } catch (Exception $exc) {
+            $this->setError($exc->getMessage());
+            $this->edebug($exc->getMessage());
+            if ($this->exceptions) {
+                throw $exc;
+            }
+
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Validate encodings.
+     *
+     * @param string $encoding
+     *
+     * @return bool
+     */
+    protected function validateEncoding($encoding)
+    {
+        return in_array(
+            $encoding,
+            [
+                self::ENCODING_7BIT,
+                self::ENCODING_QUOTED_PRINTABLE,
+                self::ENCODING_BASE64,
+                self::ENCODING_8BIT,
+                self::ENCODING_BINARY,
+            ],
+            true
+        );
+    }
+
+    /**
+     * Check if an embedded attachment is present with this cid.
+     *
+     * @param string $cid
+     *
+     * @return bool
+     */
+    protected function cidExists($cid)
+    {
+        foreach ($this->attachment as $attachment) {
+            if ('inline' === $attachment[6] && $cid === $attachment[7]) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Check if an inline attachment is present.
+     *
+     * @return bool
+     */
+    public function inlineImageExists()
+    {
+        foreach ($this->attachment as $attachment) {
+            if ('inline' === $attachment[6]) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Check if an attachment (non-inline) is present.
+     *
+     * @return bool
+     */
+    public function attachmentExists()
+    {
+        foreach ($this->attachment as $attachment) {
+            if ('attachment' === $attachment[6]) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Check if this message has an alternative body set.
+     *
+     * @return bool
+     */
+    public function alternativeExists()
+    {
+        return !empty($this->AltBody);
+    }
+
+    /**
+     * Clear queued addresses of given kind.
+     *
+     * @param string $kind 'to', 'cc', or 'bcc'
+     */
+    public function clearQueuedAddresses($kind)
+    {
+        $this->RecipientsQueue = array_filter(
+            $this->RecipientsQueue,
+            static function ($params) use ($kind) {
+                return $params[0] !== $kind;
+            }
+        );
+    }
+
+    /**
+     * Clear all To recipients.
+     */
+    public function clearAddresses()
+    {
+        foreach ($this->to as $to) {
+            unset($this->all_recipients[strtolower($to[0])]);
+        }
+        $this->to = [];
+        $this->clearQueuedAddresses('to');
+    }
+
+    /**
+     * Clear all CC recipients.
+     */
+    public function clearCCs()
+    {
+        foreach ($this->cc as $cc) {
+            unset($this->all_recipients[strtolower($cc[0])]);
+        }
+        $this->cc = [];
+        $this->clearQueuedAddresses('cc');
+    }
+
+    /**
+     * Clear all BCC recipients.
+     */
+    public function clearBCCs()
+    {
+        foreach ($this->bcc as $bcc) {
+            unset($this->all_recipients[strtolower($bcc[0])]);
+        }
+        $this->bcc = [];
+        $this->clearQueuedAddresses('bcc');
+    }
+
+    /**
+     * Clear all ReplyTo recipients.
+     */
+    public function clearReplyTos()
+    {
+        $this->ReplyTo = [];
+        $this->ReplyToQueue = [];
+    }
+
+    /**
+     * Clear all recipient types.
+     */
+    public function clearAllRecipients()
+    {
+        $this->to = [];
+        $this->cc = [];
+        $this->bcc = [];
+        $this->all_recipients = [];
+        $this->RecipientsQueue = [];
+    }
+
+    /**
+     * Clear all filesystem, string, and binary attachments.
+     */
+    public function clearAttachments()
+    {
+        $this->attachment = [];
+    }
+
+    /**
+     * Clear all custom headers.
+     */
+    public function clearCustomHeaders()
+    {
+        $this->CustomHeader = [];
+    }
+
+    /**
+     * Add an error message to the error container.
+     *
+     * @param string $msg
+     */
+    protected function setError($msg)
+    {
+        ++$this->error_count;
+        if ('smtp' === $this->Mailer && null !== $this->smtp) {
+            $lasterror = $this->smtp->getError();
+            if (!empty($lasterror['error'])) {
+                $msg .= $this->lang('smtp_error') . $lasterror['error'];
+                if (!empty($lasterror['detail'])) {
+                    $msg .= ' Detail: ' . $lasterror['detail'];
+                }
+                if (!empty($lasterror['smtp_code'])) {
+                    $msg .= ' SMTP code: ' . $lasterror['smtp_code'];
+                }
+                if (!empty($lasterror['smtp_code_ex'])) {
+                    $msg .= ' Additional SMTP info: ' . $lasterror['smtp_code_ex'];
+                }
+            }
+        }
+        $this->ErrorInfo = $msg;
+    }
+
+    /**
+     * Return an RFC 822 formatted date.
+     *
+     * @return string
+     */
+    public static function rfcDate()
+    {
+        // Set the time zone to whatever the default is to avoid 500 errors
+        // Will default to UTC if it's not set properly in php.ini
+        date_default_timezone_set(@date_default_timezone_get());
+
+        return date('D, j M Y H:i:s O');
+    }
+
+    /**
+     * Get the server hostname.
+     * Returns 'localhost.localdomain' if unknown.
+     *
+     * @return string
+     */
+    protected function serverHostname()
+    {
+        $result = '';
+        if (!empty($this->Hostname)) {
+            $result = $this->Hostname;
+        } elseif (isset($_SERVER) && array_key_exists('SERVER_NAME', $_SERVER)) {
+            $result = $_SERVER['SERVER_NAME'];
+        } elseif (function_exists('gethostname') && gethostname() !== false) {
+            $result = gethostname();
+        } elseif (php_uname('n') !== false) {
+            $result = php_uname('n');
+        }
+        if (!static::isValidHost($result)) {
+            return 'localhost.localdomain';
+        }
+
+        return $result;
+    }
+
+    /**
+     * Validate whether a string contains a valid value to use as a hostname or IP address.
+     * IPv6 addresses must include [], e.g. `[::1]`, not just `::1`.
+     *
+     * @param string $host The host name or IP address to check
+     *
+     * @return bool
+     */
+    public static function isValidHost($host)
+    {
+        //Simple syntax limits
+        if (empty($host)
+            || !is_string($host)
+            || strlen($host) > 256
+            || !preg_match('/^([a-zA-Z\d.-]*|\[[a-fA-F\d:]+])$/', $host)
+        ) {
+            return false;
+        }
+        //Looks like a bracketed IPv6 address
+        if (strlen($host) > 2 && substr($host, 0, 1) === '[' && substr($host, -1, 1) === ']') {
+            return filter_var(substr($host, 1, -1), FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false;
+        }
+        //If removing all the dots results in a numeric string, it must be an IPv4 address.
+        //Need to check this first because otherwise things like `999.0.0.0` are considered valid host names
+        if (is_numeric(str_replace('.', '', $host))) {
+            //Is it a valid IPv4 address?
+            return filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false;
+        }
+        if (filter_var('http://' . $host, FILTER_VALIDATE_URL) !== false) {
+            //Is it a syntactically valid hostname?
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Get an error message in the current language.
+     *
+     * @param string $key
+     *
+     * @return string
+     */
+    protected function lang($key)
+    {
+        if (count($this->language) < 1) {
+            $this->setLanguage(); // set the default language
+        }
+
+        if (array_key_exists($key, $this->language)) {
+            if ('smtp_connect_failed' === $key) {
+                //Include a link to troubleshooting docs on SMTP connection failure
+                //this is by far the biggest cause of support questions
+                //but it's usually not PHPMailer's fault.
+                return $this->language[$key] . ' https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting';
+            }
+
+            return $this->language[$key];
+        }
+
+        //Return the key as a fallback
+        return $key;
+    }
+
+    /**
+     * Check if an error occurred.
+     *
+     * @return bool True if an error did occur
+     */
+    public function isError()
+    {
+        return $this->error_count > 0;
+    }
+
+    /**
+     * Add a custom header.
+     * $name value can be overloaded to contain
+     * both header name and value (name:value).
+     *
+     * @param string      $name  Custom header name
+     * @param string|null $value Header value
+     *
+     * @throws Exception
+     */
+    public function addCustomHeader($name, $value = null)
+    {
+        if (null === $value && strpos($name, ':') !== false) {
+            // Value passed in as name:value
+            list($name, $value) = explode(':', $name, 2);
+        }
+        $name = trim($name);
+        $value = trim($value);
+        //Ensure name is not empty, and that neither name nor value contain line breaks
+        if (empty($name) || strpbrk($name . $value, "\r\n") !== false) {
+            if ($this->exceptions) {
+                throw new Exception('Invalid header name or value');
+            }
+
+            return false;
+        }
+        $this->CustomHeader[] = [$name, $value];
+
+        return true;
+    }
+
+    /**
+     * Returns all custom headers.
+     *
+     * @return array
+     */
+    public function getCustomHeaders()
+    {
+        return $this->CustomHeader;
+    }
+
+    /**
+     * Create a message body from an HTML string.
+     * Automatically inlines images and creates a plain-text version by converting the HTML,
+     * overwriting any existing values in Body and AltBody.
+     * Do not source $message content from user input!
+     * $basedir is prepended when handling relative URLs, e.g. <img src="/images/a.png"> and must not be empty
+     * will look for an image file in $basedir/images/a.png and convert it to inline.
+     * If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email)
+     * Converts data-uri images into embedded attachments.
+     * If you don't want to apply these transformations to your HTML, just set Body and AltBody directly.
+     *
+     * @param string        $message  HTML message string
+     * @param string        $basedir  Absolute path to a base directory to prepend to relative paths to images
+     * @param bool|callable $advanced Whether to use the internal HTML to text converter
+     *                                or your own custom converter
+     * @return string The transformed message body
+     *
+     * @throws Exception
+     *
+     * @see PHPMailer::html2text()
+     */
+    public function msgHTML($message, $basedir = '', $advanced = false)
+    {
+        preg_match_all('/(?<!-)(src|background)=["\'](.*)["\']/Ui', $message, $images);
+        if (array_key_exists(2, $images)) {
+            if (strlen($basedir) > 1 && '/' !== substr($basedir, -1)) {
+                // Ensure $basedir has a trailing /
+                $basedir .= '/';
+            }
+            foreach ($images[2] as $imgindex => $url) {
+                // Convert data URIs into embedded images
+                //e.g. "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
+                $match = [];
+                if (preg_match('#^data:(image/(?:jpe?g|gif|png));?(base64)?,(.+)#', $url, $match)) {
+                    if (count($match) === 4 && static::ENCODING_BASE64 === $match[2]) {
+                        $data = base64_decode($match[3]);
+                    } elseif ('' === $match[2]) {
+                        $data = rawurldecode($match[3]);
+                    } else {
+                        //Not recognised so leave it alone
+                        continue;
+                    }
+                    //Hash the decoded data, not the URL, so that the same data-URI image used in multiple places
+                    //will only be embedded once, even if it used a different encoding
+                    $cid = substr(hash('sha256', $data), 0, 32) . '@phpmailer.0'; // RFC2392 S 2
+
+                    if (!$this->cidExists($cid)) {
+                        $this->addStringEmbeddedImage(
+                            $data,
+                            $cid,
+                            'embed' . $imgindex,
+                            static::ENCODING_BASE64,
+                            $match[1]
+                        );
+                    }
+                    $message = str_replace(
+                        $images[0][$imgindex],
+                        $images[1][$imgindex] . '="cid:' . $cid . '"',
+                        $message
+                    );
+                    continue;
+                }
+                if (// Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
+                    !empty($basedir)
+                    // Ignore URLs containing parent dir traversal (..)
+                    && (strpos($url, '..') === false)
+                    // Do not change urls that are already inline images
+                    && 0 !== strpos($url, 'cid:')
+                    // Do not change absolute URLs, including anonymous protocol
+                    && !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url)
+                ) {
+                    $filename = static::mb_pathinfo($url, PATHINFO_BASENAME);
+                    $directory = dirname($url);
+                    if ('.' === $directory) {
+                        $directory = '';
+                    }
+                    // RFC2392 S 2
+                    $cid = substr(hash('sha256', $url), 0, 32) . '@phpmailer.0';
+                    if (strlen($basedir) > 1 && '/' !== substr($basedir, -1)) {
+                        $basedir .= '/';
+                    }
+                    if (strlen($directory) > 1 && '/' !== substr($directory, -1)) {
+                        $directory .= '/';
+                    }
+                    if ($this->addEmbeddedImage(
+                        $basedir . $directory . $filename,
+                        $cid,
+                        $filename,
+                        static::ENCODING_BASE64,
+                        static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION))
+                    )
+                    ) {
+                        $message = preg_replace(
+                            '/' . $images[1][$imgindex] . '=["\']' . preg_quote($url, '/') . '["\']/Ui',
+                            $images[1][$imgindex] . '="cid:' . $cid . '"',
+                            $message
+                        );
+                    }
+                }
+            }
+        }
+        $this->isHTML();
+        // Convert all message body line breaks to LE, makes quoted-printable encoding work much better
+        $this->Body = static::normalizeBreaks($message);
+        $this->AltBody = static::normalizeBreaks($this->html2text($message, $advanced));
+        if (!$this->alternativeExists()) {
+            $this->AltBody = 'This is an HTML-only message. To view it, activate HTML in your email application.'
+                . static::$LE;
+        }
+
+        return $this->Body;
+    }
+
+    /**
+     * Convert an HTML string into plain text.
+     * This is used by msgHTML().
+     * Note - older versions of this function used a bundled advanced converter
+     * which was removed for license reasons in #232.
+     * Example usage:
+     *
+     * ```php
+     * // Use default conversion
+     * $plain = $mail->html2text($html);
+     * // Use your own custom converter
+     * $plain = $mail->html2text($html, function($html) {
+     *     $converter = new MyHtml2text($html);
+     *     return $converter->get_text();
+     * });
+     * ```
+     *
+     * @param string        $html     The HTML text to convert
+     * @param bool|callable $advanced Any boolean value to use the internal converter,
+     *                                or provide your own callable for custom conversion
+     *
+     * @return string
+     */
+    public function html2text($html, $advanced = false)
+    {
+        if (is_callable($advanced)) {
+            return call_user_func($advanced, $html);
+        }
+
+        return html_entity_decode(
+            trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/si', '', $html))),
+            ENT_QUOTES,
+            $this->CharSet
+        );
+    }
+
+    /**
+     * Get the MIME type for a file extension.
+     *
+     * @param string $ext File extension
+     *
+     * @return string MIME type of file
+     */
+    public static function _mime_types($ext = '')
+    {
+        $mimes = [
+            'xl' => 'application/excel',
+            'js' => 'application/javascript',
+            'hqx' => 'application/mac-binhex40',
+            'cpt' => 'application/mac-compactpro',
+            'bin' => 'application/macbinary',
+            'doc' => 'application/msword',
+            'word' => 'application/msword',
+            'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+            'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
+            'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
+            'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
+            'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
+            'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
+            'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+            'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
+            'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
+            'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
+            'class' => 'application/octet-stream',
+            'dll' => 'application/octet-stream',
+            'dms' => 'application/octet-stream',
+            'exe' => 'application/octet-stream',
+            'lha' => 'application/octet-stream',
+            'lzh' => 'application/octet-stream',
+            'psd' => 'application/octet-stream',
+            'sea' => 'application/octet-stream',
+            'so' => 'application/octet-stream',
+            'oda' => 'application/oda',
+            'pdf' => 'application/pdf',
+            'ai' => 'application/postscript',
+            'eps' => 'application/postscript',
+            'ps' => 'application/postscript',
+            'smi' => 'application/smil',
+            'smil' => 'application/smil',
+            'mif' => 'application/vnd.mif',
+            'xls' => 'application/vnd.ms-excel',
+            'ppt' => 'application/vnd.ms-powerpoint',
+            'wbxml' => 'application/vnd.wap.wbxml',
+            'wmlc' => 'application/vnd.wap.wmlc',
+            'dcr' => 'application/x-director',
+            'dir' => 'application/x-director',
+            'dxr' => 'application/x-director',
+            'dvi' => 'application/x-dvi',
+            'gtar' => 'application/x-gtar',
+            'php3' => 'application/x-httpd-php',
+            'php4' => 'application/x-httpd-php',
+            'php' => 'application/x-httpd-php',
+            'phtml' => 'application/x-httpd-php',
+            'phps' => 'application/x-httpd-php-source',
+            'swf' => 'application/x-shockwave-flash',
+            'sit' => 'application/x-stuffit',
+            'tar' => 'application/x-tar',
+            'tgz' => 'application/x-tar',
+            'xht' => 'application/xhtml+xml',
+            'xhtml' => 'application/xhtml+xml',
+            'zip' => 'application/zip',
+            'mid' => 'audio/midi',
+            'midi' => 'audio/midi',
+            'mp2' => 'audio/mpeg',
+            'mp3' => 'audio/mpeg',
+            'm4a' => 'audio/mp4',
+            'mpga' => 'audio/mpeg',
+            'aif' => 'audio/x-aiff',
+            'aifc' => 'audio/x-aiff',
+            'aiff' => 'audio/x-aiff',
+            'ram' => 'audio/x-pn-realaudio',
+            'rm' => 'audio/x-pn-realaudio',
+            'rpm' => 'audio/x-pn-realaudio-plugin',
+            'ra' => 'audio/x-realaudio',
+            'wav' => 'audio/x-wav',
+            'mka' => 'audio/x-matroska',
+            'bmp' => 'image/bmp',
+            'gif' => 'image/gif',
+            'jpeg' => 'image/jpeg',
+            'jpe' => 'image/jpeg',
+            'jpg' => 'image/jpeg',
+            'png' => 'image/png',
+            'tiff' => 'image/tiff',
+            'tif' => 'image/tiff',
+            'webp' => 'image/webp',
+            'avif' => 'image/avif',
+            'heif' => 'image/heif',
+            'heifs' => 'image/heif-sequence',
+            'heic' => 'image/heic',
+            'heics' => 'image/heic-sequence',
+            'eml' => 'message/rfc822',
+            'css' => 'text/css',
+            'html' => 'text/html',
+            'htm' => 'text/html',
+            'shtml' => 'text/html',
+            'log' => 'text/plain',
+            'text' => 'text/plain',
+            'txt' => 'text/plain',
+            'rtx' => 'text/richtext',
+            'rtf' => 'text/rtf',
+            'vcf' => 'text/vcard',
+            'vcard' => 'text/vcard',
+            'ics' => 'text/calendar',
+            'xml' => 'text/xml',
+            'xsl' => 'text/xml',
+            'wmv' => 'video/x-ms-wmv',
+            'mpeg' => 'video/mpeg',
+            'mpe' => 'video/mpeg',
+            'mpg' => 'video/mpeg',
+            'mp4' => 'video/mp4',
+            'm4v' => 'video/mp4',
+            'mov' => 'video/quicktime',
+            'qt' => 'video/quicktime',
+            'rv' => 'video/vnd.rn-realvideo',
+            'avi' => 'video/x-msvideo',
+            'movie' => 'video/x-sgi-movie',
+            'webm' => 'video/webm',
+            'mkv' => 'video/x-matroska',
+        ];
+        $ext = strtolower($ext);
+        if (array_key_exists($ext, $mimes)) {
+            return $mimes[$ext];
+        }
+
+        return 'application/octet-stream';
+    }
+
+    /**
+     * Map a file name to a MIME type.
+     * Defaults to 'application/octet-stream', i.e.. arbitrary binary data.
+     *
+     * @param string $filename A file name or full path, does not need to exist as a file
+     *
+     * @return string
+     */
+    public static function filenameToType($filename)
+    {
+        // In case the path is a URL, strip any query string before getting extension
+        $qpos = strpos($filename, '?');
+        if (false !== $qpos) {
+            $filename = substr($filename, 0, $qpos);
+        }
+        $ext = static::mb_pathinfo($filename, PATHINFO_EXTENSION);
+
+        return static::_mime_types($ext);
+    }
+
+    /**
+     * Multi-byte-safe pathinfo replacement.
+     * Drop-in replacement for pathinfo(), but multibyte- and cross-platform-safe.
+     *
+     * @see http://www.php.net/manual/en/function.pathinfo.php#107461
+     *
+     * @param string     $path    A filename or path, does not need to exist as a file
+     * @param int|string $options Either a PATHINFO_* constant,
+     *                            or a string name to return only the specified piece
+     *
+     * @return string|array
+     */
+    public static function mb_pathinfo($path, $options = null)
+    {
+        $ret = ['dirname' => '', 'basename' => '', 'extension' => '', 'filename' => ''];
+        $pathinfo = [];
+        if (preg_match('#^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^.\\\\/]+?)|))[\\\\/.]*$#m', $path, $pathinfo)) {
+            if (array_key_exists(1, $pathinfo)) {
+                $ret['dirname'] = $pathinfo[1];
+            }
+            if (array_key_exists(2, $pathinfo)) {
+                $ret['basename'] = $pathinfo[2];
+            }
+            if (array_key_exists(5, $pathinfo)) {
+                $ret['extension'] = $pathinfo[5];
+            }
+            if (array_key_exists(3, $pathinfo)) {
+                $ret['filename'] = $pathinfo[3];
+            }
+        }
+        switch ($options) {
+            case PATHINFO_DIRNAME:
+            case 'dirname':
+                return $ret['dirname'];
+            case PATHINFO_BASENAME:
+            case 'basename':
+                return $ret['basename'];
+            case PATHINFO_EXTENSION:
+            case 'extension':
+                return $ret['extension'];
+            case PATHINFO_FILENAME:
+            case 'filename':
+                return $ret['filename'];
+            default:
+                return $ret;
+        }
+    }
+
+    /**
+     * Set or reset instance properties.
+     * You should avoid this function - it's more verbose, less efficient, more error-prone and
+     * harder to debug than setting properties directly.
+     * Usage Example:
+     * `$mail->set('SMTPSecure', static::ENCRYPTION_STARTTLS);`
+     *   is the same as:
+     * `$mail->SMTPSecure = static::ENCRYPTION_STARTTLS;`.
+     *
+     * @param string $name  The property name to set
+     * @param mixed  $value The value to set the property to
+     *
+     * @return bool
+     */
+    public function set($name, $value = '')
+    {
+        if (property_exists($this, $name)) {
+            $this->$name = $value;
+
+            return true;
+        }
+        $this->setError($this->lang('variable_set') . $name);
+
+        return false;
+    }
+
+    /**
+     * Strip newlines to prevent header injection.
+     *
+     * @param string $str
+     *
+     * @return string
+     */
+    public function secureHeader($str)
+    {
+        return trim(str_replace(["\r", "\n"], '', $str));
+    }
+
+    /**
+     * Normalize line breaks in a string.
+     * Converts UNIX LF, Mac CR and Windows CRLF line breaks into a single line break format.
+     * Defaults to CRLF (for message bodies) and preserves consecutive breaks.
+     *
+     * @param string $text
+     * @param string $breaktype What kind of line break to use; defaults to static::$LE
+     *
+     * @return string
+     */
+    public static function normalizeBreaks($text, $breaktype = null)
+    {
+        if (null === $breaktype) {
+            $breaktype = static::$LE;
+        }
+        // Normalise to \n
+        $text = str_replace([self::CRLF, "\r"], "\n", $text);
+        // Now convert LE as needed
+        if ("\n" !== $breaktype) {
+            $text = str_replace("\n", $breaktype, $text);
+        }
+
+        return $text;
+    }
+
+    /**
+     * Remove trailing breaks from a string.
+     *
+     * @param string $text
+     *
+     * @return string The text to remove breaks from
+     */
+    public static function stripTrailingWSP($text)
+    {
+        return rtrim($text, " \r\n\t");
+    }
+
+    /**
+     * Return the current line break format string.
+     *
+     * @return string
+     */
+    public static function getLE()
+    {
+        return static::$LE;
+    }
+
+    /**
+     * Set the line break format string, e.g. "\r\n".
+     *
+     * @param string $le
+     */
+    protected static function setLE($le)
+    {
+        static::$LE = $le;
+    }
+
+    /**
+     * Set the public and private key files and password for S/MIME signing.
+     *
+     * @param string $cert_filename
+     * @param string $key_filename
+     * @param string $key_pass            Password for private key
+     * @param string $extracerts_filename Optional path to chain certificate
+     */
+    public function sign($cert_filename, $key_filename, $key_pass, $extracerts_filename = '')
+    {
+        $this->sign_cert_file = $cert_filename;
+        $this->sign_key_file = $key_filename;
+        $this->sign_key_pass = $key_pass;
+        $this->sign_extracerts_file = $extracerts_filename;
+    }
+
+    /**
+     * Quoted-Printable-encode a DKIM header.
+     *
+     * @param string $txt
+     *
+     * @return string
+     */
+    public function DKIM_QP($txt)
+    {
+        $line = '';
+        $len = strlen($txt);
+        for ($i = 0; $i < $len; ++$i) {
+            $ord = ord($txt[$i]);
+            if (((0x21 <= $ord) && ($ord <= 0x3A)) || $ord === 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E))) {
+                $line .= $txt[$i];
+            } else {
+                $line .= '=' . sprintf('%02X', $ord);
+            }
+        }
+
+        return $line;
+    }
+
+    /**
+     * Generate a DKIM signature.
+     *
+     * @param string $signHeader
+     *
+     * @throws Exception
+     *
+     * @return string The DKIM signature value
+     */
+    public function DKIM_Sign($signHeader)
+    {
+        if (!defined('PKCS7_TEXT')) {
+            if ($this->exceptions) {
+                throw new Exception($this->lang('extension_missing') . 'openssl');
+            }
+
+            return '';
+        }
+        $privKeyStr = !empty($this->DKIM_private_string) ?
+            $this->DKIM_private_string :
+            file_get_contents($this->DKIM_private);
+        if ('' !== $this->DKIM_passphrase) {
+            $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
+        } else {
+            $privKey = openssl_pkey_get_private($privKeyStr);
+        }
+        if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {
+            openssl_pkey_free($privKey);
+
+            return base64_encode($signature);
+        }
+        openssl_pkey_free($privKey);
+
+        return '';
+    }
+
+    /**
+     * Generate a DKIM canonicalization header.
+     * Uses the 'relaxed' algorithm from RFC6376 section 3.4.2.
+     * Canonicalized headers should *always* use CRLF, regardless of mailer setting.
+     *
+     * @see https://tools.ietf.org/html/rfc6376#section-3.4.2
+     *
+     * @param string $signHeader Header
+     *
+     * @return string
+     */
+    public function DKIM_HeaderC($signHeader)
+    {
+        //Normalize breaks to CRLF (regardless of the mailer)
+        $signHeader = static::normalizeBreaks($signHeader, self::CRLF);
+        //Unfold header lines
+        //Note PCRE \s is too broad a definition of whitespace; RFC5322 defines it as `[ \t]`
+        //@see https://tools.ietf.org/html/rfc5322#section-2.2
+        //That means this may break if you do something daft like put vertical tabs in your headers.
+        $signHeader = preg_replace('/\r\n[ \t]+/', ' ', $signHeader);
+        //Break headers out into an array
+        $lines = explode(self::CRLF, $signHeader);
+        foreach ($lines as $key => $line) {
+            //If the header is missing a :, skip it as it's invalid
+            //This is likely to happen because the explode() above will also split
+            //on the trailing LE, leaving an empty line
+            if (strpos($line, ':') === false) {
+                continue;
+            }
+            list($heading, $value) = explode(':', $line, 2);
+            //Lower-case header name
+            $heading = strtolower($heading);
+            //Collapse white space within the value, also convert WSP to space
+            $value = preg_replace('/[ \t]+/', ' ', $value);
+            //RFC6376 is slightly unclear here - it says to delete space at the *end* of each value
+            //But then says to delete space before and after the colon.
+            //Net result is the same as trimming both ends of the value.
+            //By elimination, the same applies to the field name
+            $lines[$key] = trim($heading, " \t") . ':' . trim($value, " \t");
+        }
+
+        return implode(self::CRLF, $lines);
+    }
+
+    /**
+     * Generate a DKIM canonicalization body.
+     * Uses the 'simple' algorithm from RFC6376 section 3.4.3.
+     * Canonicalized bodies should *always* use CRLF, regardless of mailer setting.
+     *
+     * @see https://tools.ietf.org/html/rfc6376#section-3.4.3
+     *
+     * @param string $body Message Body
+     *
+     * @return string
+     */
+    public function DKIM_BodyC($body)
+    {
+        if (empty($body)) {
+            return self::CRLF;
+        }
+        // Normalize line endings to CRLF
+        $body = static::normalizeBreaks($body, self::CRLF);
+
+        //Reduce multiple trailing line breaks to a single one
+        return static::stripTrailingWSP($body) . self::CRLF;
+    }
+
+    /**
+     * Create the DKIM header and body in a new message header.
+     *
+     * @param string $headers_line Header lines
+     * @param string $subject      Subject
+     * @param string $body         Body
+     *
+     * @throws Exception
+     *
+     * @return string
+     */
+    public function DKIM_Add($headers_line, $subject, $body)
+    {
+        $DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms
+        $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization methods of header & body
+        $DKIMquery = 'dns/txt'; // Query method
+        $DKIMtime = time();
+        //Always sign these headers without being asked
+        //Recommended list from https://tools.ietf.org/html/rfc6376#section-5.4.1
+        $autoSignHeaders = [
+            'from',
+            'to',
+            'cc',
+            'date',
+            'subject',
+            'reply-to',
+            'message-id',
+            'content-type',
+            'mime-version',
+            'x-mailer',
+        ];
+        if (stripos($headers_line, 'Subject') === false) {
+            $headers_line .= 'Subject: ' . $subject . static::$LE;
+        }
+        $headerLines = explode(static::$LE, $headers_line);
+        $currentHeaderLabel = '';
+        $currentHeaderValue = '';
+        $parsedHeaders = [];
+        $headerLineIndex = 0;
+        $headerLineCount = count($headerLines);
+        foreach ($headerLines as $headerLine) {
+            $matches = [];
+            if (preg_match('/^([^ \t]*?)(?::[ \t]*)(.*)$/', $headerLine, $matches)) {
+                if ($currentHeaderLabel !== '') {
+                    //We were previously in another header; This is the start of a new header, so save the previous one
+                    $parsedHeaders[] = ['label' => $currentHeaderLabel, 'value' => $currentHeaderValue];
+                }
+                $currentHeaderLabel = $matches[1];
+                $currentHeaderValue = $matches[2];
+            } elseif (preg_match('/^[ \t]+(.*)$/', $headerLine, $matches)) {
+                //This is a folded continuation of the current header, so unfold it
+                $currentHeaderValue .= ' ' . $matches[1];
+            }
+            ++$headerLineIndex;
+            if ($headerLineIndex >= $headerLineCount) {
+                //This was the last line, so finish off this header
+                $parsedHeaders[] = ['label' => $currentHeaderLabel, 'value' => $currentHeaderValue];
+            }
+        }
+        $copiedHeaders = [];
+        $headersToSignKeys = [];
+        $headersToSign = [];
+        foreach ($parsedHeaders as $header) {
+            //Is this header one that must be included in the DKIM signature?
+            if (in_array(strtolower($header['label']), $autoSignHeaders, true)) {
+                $headersToSignKeys[] = $header['label'];
+                $headersToSign[] = $header['label'] . ': ' . $header['value'];
+                if ($this->DKIM_copyHeaderFields) {
+                    $copiedHeaders[] = $header['label'] . ':' . //Note no space after this, as per RFC
+                        str_replace('|', '=7C', $this->DKIM_QP($header['value']));
+                }
+                continue;
+            }
+            //Is this an extra custom header we've been asked to sign?
+            if (in_array($header['label'], $this->DKIM_extraHeaders, true)) {
+                //Find its value in custom headers
+                foreach ($this->CustomHeader as $customHeader) {
+                    if ($customHeader[0] === $header['label']) {
+                        $headersToSignKeys[] = $header['label'];
+                        $headersToSign[] = $header['label'] . ': ' . $header['value'];
+                        if ($this->DKIM_copyHeaderFields) {
+                            $copiedHeaders[] = $header['label'] . ':' . //Note no space after this, as per RFC
+                                str_replace('|', '=7C', $this->DKIM_QP($header['value']));
+                        }
+                        //Skip straight to the next header
+                        continue 2;
+                    }
+                }
+            }
+        }
+        $copiedHeaderFields = '';
+        if ($this->DKIM_copyHeaderFields && count($copiedHeaders) > 0) {
+            //Assemble a DKIM 'z' tag
+            $copiedHeaderFields = ' z=';
+            $first = true;
+            foreach ($copiedHeaders as $copiedHeader) {
+                if (!$first) {
+                    $copiedHeaderFields .= static::$LE . ' |';
+                }
+                //Fold long values
+                if (strlen($copiedHeader) > self::STD_LINE_LENGTH - 3) {
+                    $copiedHeaderFields .= substr(
+                        chunk_split($copiedHeader, self::STD_LINE_LENGTH - 3, static::$LE . self::FWS),
+                        0,
+                        -strlen(static::$LE . self::FWS)
+                    );
+                } else {
+                    $copiedHeaderFields .= $copiedHeader;
+                }
+                $first = false;
+            }
+            $copiedHeaderFields .= ';' . static::$LE;
+        }
+        $headerKeys = ' h=' . implode(':', $headersToSignKeys) . ';' . static::$LE;
+        $headerValues = implode(static::$LE, $headersToSign);
+        $body = $this->DKIM_BodyC($body);
+        $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body
+        $ident = '';
+        if ('' !== $this->DKIM_identity) {
+            $ident = ' i=' . $this->DKIM_identity . ';' . static::$LE;
+        }
+        //The DKIM-Signature header is included in the signature *except for* the value of the `b` tag
+        //which is appended after calculating the signature
+        //https://tools.ietf.org/html/rfc6376#section-3.5
+        $dkimSignatureHeader = 'DKIM-Signature: v=1;' .
+            ' d=' . $this->DKIM_domain . ';' .
+            ' s=' . $this->DKIM_selector . ';' . static::$LE .
+            ' a=' . $DKIMsignatureType . ';' .
+            ' q=' . $DKIMquery . ';' .
+            ' t=' . $DKIMtime . ';' .
+            ' c=' . $DKIMcanonicalization . ';' . static::$LE .
+            $headerKeys .
+            $ident .
+            $copiedHeaderFields .
+            ' bh=' . $DKIMb64 . ';' . static::$LE .
+            ' b=';
+        //Canonicalize the set of headers
+        $canonicalizedHeaders = $this->DKIM_HeaderC(
+            $headerValues . static::$LE . $dkimSignatureHeader
+        );
+        $signature = $this->DKIM_Sign($canonicalizedHeaders);
+        $signature = trim(chunk_split($signature, self::STD_LINE_LENGTH - 3, static::$LE . self::FWS));
+
+        return static::normalizeBreaks($dkimSignatureHeader . $signature);
+    }
+
+    /**
+     * Detect if a string contains a line longer than the maximum line length
+     * allowed by RFC 2822 section 2.1.1.
+     *
+     * @param string $str
+     *
+     * @return bool
+     */
+    public static function hasLineLongerThanMax($str)
+    {
+        return (bool) preg_match('/^(.{' . (self::MAX_LINE_LENGTH + strlen(static::$LE)) . ',})/m', $str);
+    }
+
+    /**
+     * If a string contains any "special" characters, double-quote the name,
+     * and escape any double quotes with a backslash.
+     *
+     * @param string $str
+     *
+     * @return string
+     *
+     * @see RFC822 3.4.1
+     */
+    public static function quotedString($str)
+    {
+        if (preg_match('/[ ()<>@,;:"\/\[\]?=]/', $str)) {
+            //If the string contains any of these chars, it must be double-quoted
+            //and any double quotes must be escaped with a backslash
+            return '"' . str_replace('"', '\\"', $str) . '"';
+        }
+
+        //Return the string untouched, it doesn't need quoting
+        return $str;
+    }
+
+    /**
+     * Allows for public read access to 'to' property.
+     * Before the send() call, queued addresses (i.e. with IDN) are not yet included.
+     *
+     * @return array
+     */
+    public function getToAddresses()
+    {
+        return $this->to;
+    }
+
+    /**
+     * Allows for public read access to 'cc' property.
+     * Before the send() call, queued addresses (i.e. with IDN) are not yet included.
+     *
+     * @return array
+     */
+    public function getCcAddresses()
+    {
+        return $this->cc;
+    }
+
+    /**
+     * Allows for public read access to 'bcc' property.
+     * Before the send() call, queued addresses (i.e. with IDN) are not yet included.
+     *
+     * @return array
+     */
+    public function getBccAddresses()
+    {
+        return $this->bcc;
+    }
+
+    /**
+     * Allows for public read access to 'ReplyTo' property.
+     * Before the send() call, queued addresses (i.e. with IDN) are not yet included.
+     *
+     * @return array
+     */
+    public function getReplyToAddresses()
+    {
+        return $this->ReplyTo;
+    }
+
+    /**
+     * Allows for public read access to 'all_recipients' property.
+     * Before the send() call, queued addresses (i.e. with IDN) are not yet included.
+     *
+     * @return array
+     */
+    public function getAllRecipientAddresses()
+    {
+        return $this->all_recipients;
+    }
+
+    /**
+     * Perform a callback.
+     *
+     * @param bool   $isSent
+     * @param array  $to
+     * @param array  $cc
+     * @param array  $bcc
+     * @param string $subject
+     * @param string $body
+     * @param string $from
+     * @param array  $extra
+     */
+    protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from, $extra)
+    {
+        if (!empty($this->action_function) && is_callable($this->action_function)) {
+            call_user_func($this->action_function, $isSent, $to, $cc, $bcc, $subject, $body, $from, $extra);
+        }
+    }
+
+    /**
+     * Get the OAuth instance.
+     *
+     * @return OAuth
+     */
+    public function getOAuth()
+    {
+        return $this->oauth;
+    }
+
+    /**
+     * Set an OAuth instance.
+     */
+    public function setOAuth(OAuth $oauth)
+    {
+        $this->oauth = $oauth;
+    }
+}
diff --git a/admin/lib/vendor/phpmailer/phpmailer/src/POP3.php b/admin/lib/vendor/phpmailer/phpmailer/src/POP3.php
new file mode 100644 (file)
index 0000000..a6a4128
--- /dev/null
@@ -0,0 +1,421 @@
+<?php
+/**
+ * PHPMailer POP-Before-SMTP Authentication Class.
+ * PHP Version 5.5.
+ *
+ * @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
+ *
+ * @author    Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
+ * @author    Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author    Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author    Brent R. Matzelle (original founder)
+ * @copyright 2012 - 2020 Marcus Bointon
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @license   http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ * @note      This program is distributed in the hope that it will be useful - WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+namespace PHPMailer\PHPMailer;
+
+/**
+ * PHPMailer POP-Before-SMTP Authentication Class.
+ * Specifically for PHPMailer to use for RFC1939 POP-before-SMTP authentication.
+ * 1) This class does not support APOP authentication.
+ * 2) Opening and closing lots of POP3 connections can be quite slow. If you need
+ *   to send a batch of emails then just perform the authentication once at the start,
+ *   and then loop through your mail sending script. Providing this process doesn't
+ *   take longer than the verification period lasts on your POP3 server, you should be fine.
+ * 3) This is really ancient technology; you should only need to use it to talk to very old systems.
+ * 4) This POP3 class is deliberately lightweight and incomplete, implementing just
+ *   enough to do authentication.
+ *   If you want a more complete class there are other POP3 classes for PHP available.
+ *
+ * @author Richard Davey (original author) <rich@corephp.co.uk>
+ * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
+ * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ */
+class POP3
+{
+    /**
+     * The POP3 PHPMailer Version number.
+     *
+     * @var string
+     */
+    const VERSION = '6.1.8';
+
+    /**
+     * Default POP3 port number.
+     *
+     * @var int
+     */
+    const DEFAULT_PORT = 110;
+
+    /**
+     * Default timeout in seconds.
+     *
+     * @var int
+     */
+    const DEFAULT_TIMEOUT = 30;
+
+    /**
+     * Debug display level.
+     * Options: 0 = no, 1+ = yes.
+     *
+     * @var int
+     */
+    public $do_debug = 0;
+
+    /**
+     * POP3 mail server hostname.
+     *
+     * @var string
+     */
+    public $host;
+
+    /**
+     * POP3 port number.
+     *
+     * @var int
+     */
+    public $port;
+
+    /**
+     * POP3 Timeout Value in seconds.
+     *
+     * @var int
+     */
+    public $tval;
+
+    /**
+     * POP3 username.
+     *
+     * @var string
+     */
+    public $username;
+
+    /**
+     * POP3 password.
+     *
+     * @var string
+     */
+    public $password;
+
+    /**
+     * Resource handle for the POP3 connection socket.
+     *
+     * @var resource
+     */
+    protected $pop_conn;
+
+    /**
+     * Are we connected?
+     *
+     * @var bool
+     */
+    protected $connected = false;
+
+    /**
+     * Error container.
+     *
+     * @var array
+     */
+    protected $errors = [];
+
+    /**
+     * Line break constant.
+     */
+    const LE = "\r\n";
+
+    /**
+     * Simple static wrapper for all-in-one POP before SMTP.
+     *
+     * @param string   $host        The hostname to connect to
+     * @param int|bool $port        The port number to connect to
+     * @param int|bool $timeout     The timeout value
+     * @param string   $username
+     * @param string   $password
+     * @param int      $debug_level
+     *
+     * @return bool
+     */
+    public static function popBeforeSmtp(
+        $host,
+        $port = false,
+        $timeout = false,
+        $username = '',
+        $password = '',
+        $debug_level = 0
+    ) {
+        $pop = new self();
+
+        return $pop->authorise($host, $port, $timeout, $username, $password, $debug_level);
+    }
+
+    /**
+     * Authenticate with a POP3 server.
+     * A connect, login, disconnect sequence
+     * appropriate for POP-before SMTP authorisation.
+     *
+     * @param string   $host        The hostname to connect to
+     * @param int|bool $port        The port number to connect to
+     * @param int|bool $timeout     The timeout value
+     * @param string   $username
+     * @param string   $password
+     * @param int      $debug_level
+     *
+     * @return bool
+     */
+    public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0)
+    {
+        $this->host = $host;
+        // If no port value provided, use default
+        if (false === $port) {
+            $this->port = static::DEFAULT_PORT;
+        } else {
+            $this->port = (int) $port;
+        }
+        // If no timeout value provided, use default
+        if (false === $timeout) {
+            $this->tval = static::DEFAULT_TIMEOUT;
+        } else {
+            $this->tval = (int) $timeout;
+        }
+        $this->do_debug = $debug_level;
+        $this->username = $username;
+        $this->password = $password;
+        //  Reset the error log
+        $this->errors = [];
+        //  connect
+        $result = $this->connect($this->host, $this->port, $this->tval);
+        if ($result) {
+            $login_result = $this->login($this->username, $this->password);
+            if ($login_result) {
+                $this->disconnect();
+
+                return true;
+            }
+        }
+        // We need to disconnect regardless of whether the login succeeded
+        $this->disconnect();
+
+        return false;
+    }
+
+    /**
+     * Connect to a POP3 server.
+     *
+     * @param string   $host
+     * @param int|bool $port
+     * @param int      $tval
+     *
+     * @return bool
+     */
+    public function connect($host, $port = false, $tval = 30)
+    {
+        //  Are we already connected?
+        if ($this->connected) {
+            return true;
+        }
+
+        //On Windows this will raise a PHP Warning error if the hostname doesn't exist.
+        //Rather than suppress it with @fsockopen, capture it cleanly instead
+        set_error_handler([$this, 'catchWarning']);
+
+        if (false === $port) {
+            $port = static::DEFAULT_PORT;
+        }
+
+        //  connect to the POP3 server
+        $errno = 0;
+        $errstr = '';
+        $this->pop_conn = fsockopen(
+            $host, //  POP3 Host
+            $port, //  Port #
+            $errno, //  Error Number
+            $errstr, //  Error Message
+            $tval
+        ); //  Timeout (seconds)
+        //  Restore the error handler
+        restore_error_handler();
+
+        //  Did we connect?
+        if (false === $this->pop_conn) {
+            //  It would appear not...
+            $this->setError(
+                "Failed to connect to server $host on port $port. errno: $errno; errstr: $errstr"
+            );
+
+            return false;
+        }
+
+        //  Increase the stream time-out
+        stream_set_timeout($this->pop_conn, $tval, 0);
+
+        //  Get the POP3 server response
+        $pop3_response = $this->getResponse();
+        //  Check for the +OK
+        if ($this->checkResponse($pop3_response)) {
+            //  The connection is established and the POP3 server is talking
+            $this->connected = true;
+
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Log in to the POP3 server.
+     * Does not support APOP (RFC 2828, 4949).
+     *
+     * @param string $username
+     * @param string $password
+     *
+     * @return bool
+     */
+    public function login($username = '', $password = '')
+    {
+        if (!$this->connected) {
+            $this->setError('Not connected to POP3 server');
+        }
+        if (empty($username)) {
+            $username = $this->username;
+        }
+        if (empty($password)) {
+            $password = $this->password;
+        }
+
+        // Send the Username
+        $this->sendString("USER $username" . static::LE);
+        $pop3_response = $this->getResponse();
+        if ($this->checkResponse($pop3_response)) {
+            // Send the Password
+            $this->sendString("PASS $password" . static::LE);
+            $pop3_response = $this->getResponse();
+            if ($this->checkResponse($pop3_response)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Disconnect from the POP3 server.
+     */
+    public function disconnect()
+    {
+        $this->sendString('QUIT');
+        //The QUIT command may cause the daemon to exit, which will kill our connection
+        //So ignore errors here
+        try {
+            @fclose($this->pop_conn);
+        } catch (Exception $e) {
+            //Do nothing
+        }
+    }
+
+    /**
+     * Get a response from the POP3 server.
+     *
+     * @param int $size The maximum number of bytes to retrieve
+     *
+     * @return string
+     */
+    protected function getResponse($size = 128)
+    {
+        $response = fgets($this->pop_conn, $size);
+        if ($this->do_debug >= 1) {
+            echo 'Server -> Client: ', $response;
+        }
+
+        return $response;
+    }
+
+    /**
+     * Send raw data to the POP3 server.
+     *
+     * @param string $string
+     *
+     * @return int
+     */
+    protected function sendString($string)
+    {
+        if ($this->pop_conn) {
+            if ($this->do_debug >= 2) { //Show client messages when debug >= 2
+                echo 'Client -> Server: ', $string;
+            }
+
+            return fwrite($this->pop_conn, $string, strlen($string));
+        }
+
+        return 0;
+    }
+
+    /**
+     * Checks the POP3 server response.
+     * Looks for for +OK or -ERR.
+     *
+     * @param string $string
+     *
+     * @return bool
+     */
+    protected function checkResponse($string)
+    {
+        if (strpos($string, '+OK') !== 0) {
+            $this->setError("Server reported an error: $string");
+
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Add an error to the internal error store.
+     * Also display debug output if it's enabled.
+     *
+     * @param string $error
+     */
+    protected function setError($error)
+    {
+        $this->errors[] = $error;
+        if ($this->do_debug >= 1) {
+            echo '<pre>';
+            foreach ($this->errors as $e) {
+                print_r($e);
+            }
+            echo '</pre>';
+        }
+    }
+
+    /**
+     * Get an array of error messages, if any.
+     *
+     * @return array
+     */
+    public function getErrors()
+    {
+        return $this->errors;
+    }
+
+    /**
+     * POP3 connection error handler.
+     *
+     * @param int    $errno
+     * @param string $errstr
+     * @param string $errfile
+     * @param int    $errline
+     */
+    protected function catchWarning($errno, $errstr, $errfile, $errline)
+    {
+        $this->setError(
+            'Connecting to the POP3 server raised a PHP warning:' .
+            "errno: $errno errstr: $errstr; errfile: $errfile; errline: $errline"
+        );
+    }
+}
diff --git a/admin/lib/vendor/phpmailer/phpmailer/src/SMTP.php b/admin/lib/vendor/phpmailer/phpmailer/src/SMTP.php
new file mode 100644 (file)
index 0000000..9e43dce
--- /dev/null
@@ -0,0 +1,1426 @@
+<?php
+/**
+ * PHPMailer RFC821 SMTP email transport class.
+ * PHP Version 5.5.
+ *
+ * @see       https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
+ *
+ * @author    Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
+ * @author    Jim Jagielski (jimjag) <jimjag@gmail.com>
+ * @author    Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
+ * @author    Brent R. Matzelle (original founder)
+ * @copyright 2012 - 2020 Marcus Bointon
+ * @copyright 2010 - 2012 Jim Jagielski
+ * @copyright 2004 - 2009 Andy Prevost
+ * @license   http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ * @note      This program is distributed in the hope that it will be useful - WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+namespace PHPMailer\PHPMailer;
+
+/**
+ * PHPMailer RFC821 SMTP email transport class.
+ * Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server.
+ *
+ * @author Chris Ryan
+ * @author Marcus Bointon <phpmailer@synchromedia.co.uk>
+ */
+class SMTP
+{
+    /**
+     * The PHPMailer SMTP version number.
+     *
+     * @var string
+     */
+    const VERSION = '6.1.8';
+
+    /**
+     * SMTP line break constant.
+     *
+     * @var string
+     */
+    const LE = "\r\n";
+
+    /**
+     * The SMTP port to use if one is not specified.
+     *
+     * @var int
+     */
+    const DEFAULT_PORT = 25;
+
+    /**
+     * The maximum line length allowed by RFC 5321 section 4.5.3.1.6,
+     * *excluding* a trailing CRLF break.
+     *
+     * @see https://tools.ietf.org/html/rfc5321#section-4.5.3.1.6
+     *
+     * @var int
+     */
+    const MAX_LINE_LENGTH = 998;
+
+    /**
+     * The maximum line length allowed for replies in RFC 5321 section 4.5.3.1.5,
+     * *including* a trailing CRLF line break.
+     *
+     * @see https://tools.ietf.org/html/rfc5321#section-4.5.3.1.5
+     *
+     * @var int
+     */
+    const MAX_REPLY_LENGTH = 512;
+
+    /**
+     * Debug level for no output.
+     *
+     * @var int
+     */
+    const DEBUG_OFF = 0;
+
+    /**
+     * Debug level to show client -> server messages.
+     *
+     * @var int
+     */
+    const DEBUG_CLIENT = 1;
+
+    /**
+     * Debug level to show client -> server and server -> client messages.
+     *
+     * @var int
+     */
+    const DEBUG_SERVER = 2;
+
+    /**
+     * Debug level to show connection status, client -> server and server -> client messages.
+     *
+     * @var int
+     */
+    const DEBUG_CONNECTION = 3;
+
+    /**
+     * Debug level to show all messages.
+     *
+     * @var int
+     */
+    const DEBUG_LOWLEVEL = 4;
+
+    /**
+     * Debug output level.
+     * Options:
+     * * self::DEBUG_OFF (`0`) No debug output, default
+     * * self::DEBUG_CLIENT (`1`) Client commands
+     * * self::DEBUG_SERVER (`2`) Client commands and server responses
+     * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status
+     * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages.
+     *
+     * @var int
+     */
+    public $do_debug = self::DEBUG_OFF;
+
+    /**
+     * How to handle debug output.
+     * Options:
+     * * `echo` Output plain-text as-is, appropriate for CLI
+     * * `html` Output escaped, line breaks converted to `<br>`, appropriate for browser output
+     * * `error_log` Output to error log as configured in php.ini
+     * Alternatively, you can provide a callable expecting two params: a message string and the debug level:
+     *
+     * ```php
+     * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";};
+     * ```
+     *
+     * Alternatively, you can pass in an instance of a PSR-3 compatible logger, though only `debug`
+     * level output is used:
+     *
+     * ```php
+     * $mail->Debugoutput = new myPsr3Logger;
+     * ```
+     *
+     * @var string|callable|\Psr\Log\LoggerInterface
+     */
+    public $Debugoutput = 'echo';
+
+    /**
+     * Whether to use VERP.
+     *
+     * @see http://en.wikipedia.org/wiki/Variable_envelope_return_path
+     * @see http://www.postfix.org/VERP_README.html Info on VERP
+     *
+     * @var bool
+     */
+    public $do_verp = false;
+
+    /**
+     * The timeout value for connection, in seconds.
+     * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2.
+     * This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure.
+     *
+     * @see http://tools.ietf.org/html/rfc2821#section-4.5.3.2
+     *
+     * @var int
+     */
+    public $Timeout = 300;
+
+    /**
+     * How long to wait for commands to complete, in seconds.
+     * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2.
+     *
+     * @var int
+     */
+    public $Timelimit = 300;
+
+    /**
+     * Patterns to extract an SMTP transaction id from reply to a DATA command.
+     * The first capture group in each regex will be used as the ID.
+     * MS ESMTP returns the message ID, which may not be correct for internal tracking.
+     *
+     * @var string[]
+     */
+    protected $smtp_transaction_id_patterns = [
+        'exim' => '/[\d]{3} OK id=(.*)/',
+        'sendmail' => '/[\d]{3} 2.0.0 (.*) Message/',
+        'postfix' => '/[\d]{3} 2.0.0 Ok: queued as (.*)/',
+        'Microsoft_ESMTP' => '/[0-9]{3} 2.[\d].0 (.*)@(?:.*) Queued mail for delivery/',
+        'Amazon_SES' => '/[\d]{3} Ok (.*)/',
+        'SendGrid' => '/[\d]{3} Ok: queued as (.*)/',
+        'CampaignMonitor' => '/[\d]{3} 2.0.0 OK:([a-zA-Z\d]{48})/',
+    ];
+
+    /**
+     * The last transaction ID issued in response to a DATA command,
+     * if one was detected.
+     *
+     * @var string|bool|null
+     */
+    protected $last_smtp_transaction_id;
+
+    /**
+     * The socket for the server connection.
+     *
+     * @var ?resource
+     */
+    protected $smtp_conn;
+
+    /**
+     * Error information, if any, for the last SMTP command.
+     *
+     * @var array
+     */
+    protected $error = [
+        'error' => '',
+        'detail' => '',
+        'smtp_code' => '',
+        'smtp_code_ex' => '',
+    ];
+
+    /**
+     * The reply the server sent to us for HELO.
+     * If null, no HELO string has yet been received.
+     *
+     * @var string|null
+     */
+    protected $helo_rply;
+
+    /**
+     * The set of SMTP extensions sent in reply to EHLO command.
+     * Indexes of the array are extension names.
+     * Value at index 'HELO' or 'EHLO' (according to command that was sent)
+     * represents the server name. In case of HELO it is the only element of the array.
+     * Other values can be boolean TRUE or an array containing extension options.
+     * If null, no HELO/EHLO string has yet been received.
+     *
+     * @var array|null
+     */
+    protected $server_caps;
+
+    /**
+     * The most recent reply received from the server.
+     *
+     * @var string
+     */
+    protected $last_reply = '';
+
+    /**
+     * Output debugging info via a user-selected method.
+     *
+     * @param string $str   Debug string to output
+     * @param int    $level The debug level of this message; see DEBUG_* constants
+     *
+     * @see SMTP::$Debugoutput
+     * @see SMTP::$do_debug
+     */
+    protected function edebug($str, $level = 0)
+    {
+        if ($level > $this->do_debug) {
+            return;
+        }
+        //Is this a PSR-3 logger?
+        if ($this->Debugoutput instanceof \Psr\Log\LoggerInterface) {
+            $this->Debugoutput->debug($str);
+
+            return;
+        }
+        //Avoid clash with built-in function names
+        if (is_callable($this->Debugoutput) && !in_array($this->Debugoutput, ['error_log', 'html', 'echo'])) {
+            call_user_func($this->Debugoutput, $str, $level);
+
+            return;
+        }
+        switch ($this->Debugoutput) {
+            case 'error_log':
+                //Don't output, just log
+                error_log($str);
+                break;
+            case 'html':
+                //Cleans up output a bit for a better looking, HTML-safe output
+                echo gmdate('Y-m-d H:i:s'), ' ', htmlentities(
+                    preg_replace('/[\r\n]+/', '', $str),
+                    ENT_QUOTES,
+                    'UTF-8'
+                ), "<br>\n";
+                break;
+            case 'echo':
+            default:
+                //Normalize line breaks
+                $str = preg_replace('/\r\n|\r/m', "\n", $str);
+                echo gmdate('Y-m-d H:i:s'),
+                "\t",
+                    //Trim trailing space
+                trim(
+                    //Indent for readability, except for trailing break
+                    str_replace(
+                        "\n",
+                        "\n                   \t                  ",
+                        trim($str)
+                    )
+                ),
+                "\n";
+        }
+    }
+
+    /**
+     * Connect to an SMTP server.
+     *
+     * @param string $host    SMTP server IP or host name
+     * @param int    $port    The port number to connect to
+     * @param int    $timeout How long to wait for the connection to open
+     * @param array  $options An array of options for stream_context_create()
+     *
+     * @return bool
+     */
+    public function connect($host, $port = null, $timeout = 30, $options = [])
+    {
+        // Clear errors to avoid confusion
+        $this->setError('');
+        // Make sure we are __not__ connected
+        if ($this->connected()) {
+            // Already connected, generate error
+            $this->setError('Already connected to a server');
+
+            return false;
+        }
+        if (empty($port)) {
+            $port = self::DEFAULT_PORT;
+        }
+        // Connect to the SMTP server
+        $this->edebug(
+            "Connection: opening to $host:$port, timeout=$timeout, options=" .
+            (count($options) > 0 ? var_export($options, true) : 'array()'),
+            self::DEBUG_CONNECTION
+        );
+
+        $this->smtp_conn = $this->getSMTPConnection($host, $port, $timeout, $options);
+
+        if ($this->smtp_conn === false) {
+            //Error info already set inside `getSMTPConnection()`
+            return false;
+        }
+
+        $this->edebug('Connection: opened', self::DEBUG_CONNECTION);
+
+        // Get any announcement
+        $this->last_reply = $this->get_lines();
+        $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER);
+
+        return true;
+    }
+
+    /**
+     * Create connection to the SMTP server.
+     *
+     * @param string $host    SMTP server IP or host name
+     * @param int    $port    The port number to connect to
+     * @param int    $timeout How long to wait for the connection to open
+     * @param array  $options An array of options for stream_context_create()
+     *
+     * @return false|resource
+     */
+    protected function getSMTPConnection($host, $port = null, $timeout = 30, $options = [])
+    {
+        static $streamok;
+        //This is enabled by default since 5.0.0 but some providers disable it
+        //Check this once and cache the result
+        if (null === $streamok) {
+            $streamok = function_exists('stream_socket_client');
+        }
+
+        $errno = 0;
+        $errstr = '';
+        if ($streamok) {
+            $socket_context = stream_context_create($options);
+            set_error_handler([$this, 'errorHandler']);
+            $connection = stream_socket_client(
+                $host . ':' . $port,
+                $errno,
+                $errstr,
+                $timeout,
+                STREAM_CLIENT_CONNECT,
+                $socket_context
+            );
+            restore_error_handler();
+        } else {
+            //Fall back to fsockopen which should work in more places, but is missing some features
+            $this->edebug(
+                'Connection: stream_socket_client not available, falling back to fsockopen',
+                self::DEBUG_CONNECTION
+            );
+            set_error_handler([$this, 'errorHandler']);
+            $connection = fsockopen(
+                $host,
+                $port,
+                $errno,
+                $errstr,
+                $timeout
+            );
+            restore_error_handler();
+        }
+
+        // Verify we connected properly
+        if (!is_resource($connection)) {
+            $this->setError(
+                'Failed to connect to server',
+                '',
+                (string) $errno,
+                $errstr
+            );
+            $this->edebug(
+                'SMTP ERROR: ' . $this->error['error']
+                . ": $errstr ($errno)",
+                self::DEBUG_CLIENT
+            );
+
+            return false;
+        }
+
+        // SMTP server can take longer to respond, give longer timeout for first read
+        // Windows does not have support for this timeout function
+        if (strpos(PHP_OS, 'WIN') !== 0) {
+            $max = (int)ini_get('max_execution_time');
+            // Don't bother if unlimited, or if set_time_limit is disabled
+            if (0 !== $max && $timeout > $max && strpos(ini_get('disable_functions'), 'set_time_limit') === false) {
+                @set_time_limit($timeout);
+            }
+            stream_set_timeout($connection, $timeout, 0);
+        }
+
+        return $connection;
+    }
+
+    /**
+     * Initiate a TLS (encrypted) session.
+     *
+     * @return bool
+     */
+    public function startTLS()
+    {
+        if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
+            return false;
+        }
+
+        //Allow the best TLS version(s) we can
+        $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT;
+
+        //PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT
+        //so add them back in manually if we can
+        if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) {
+            $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
+            $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT;
+        }
+
+        // Begin encrypted connection
+        set_error_handler([$this, 'errorHandler']);
+        $crypto_ok = stream_socket_enable_crypto(
+            $this->smtp_conn,
+            true,
+            $crypto_method
+        );
+        restore_error_handler();
+
+        return (bool) $crypto_ok;
+    }
+
+    /**
+     * Perform SMTP authentication.
+     * Must be run after hello().
+     *
+     * @see    hello()
+     *
+     * @param string $username The user name
+     * @param string $password The password
+     * @param string $authtype The auth type (CRAM-MD5, PLAIN, LOGIN, XOAUTH2)
+     * @param OAuth  $OAuth    An optional OAuth instance for XOAUTH2 authentication
+     *
+     * @return bool True if successfully authenticated
+     */
+    public function authenticate(
+        $username,
+        $password,
+        $authtype = null,
+        $OAuth = null
+    ) {
+        if (!$this->server_caps) {
+            $this->setError('Authentication is not allowed before HELO/EHLO');
+
+            return false;
+        }
+
+        if (array_key_exists('EHLO', $this->server_caps)) {
+            // SMTP extensions are available; try to find a proper authentication method
+            if (!array_key_exists('AUTH', $this->server_caps)) {
+                $this->setError('Authentication is not allowed at this stage');
+                // 'at this stage' means that auth may be allowed after the stage changes
+                // e.g. after STARTTLS
+
+                return false;
+            }
+
+            $this->edebug('Auth method requested: ' . ($authtype ?: 'UNSPECIFIED'), self::DEBUG_LOWLEVEL);
+            $this->edebug(
+                'Auth methods available on the server: ' . implode(',', $this->server_caps['AUTH']),
+                self::DEBUG_LOWLEVEL
+            );
+
+            //If we have requested a specific auth type, check the server supports it before trying others
+            if (null !== $authtype && !in_array($authtype, $this->server_caps['AUTH'], true)) {
+                $this->edebug('Requested auth method not available: ' . $authtype, self::DEBUG_LOWLEVEL);
+                $authtype = null;
+            }
+
+            if (empty($authtype)) {
+                //If no auth mechanism is specified, attempt to use these, in this order
+                //Try CRAM-MD5 first as it's more secure than the others
+                foreach (['CRAM-MD5', 'LOGIN', 'PLAIN', 'XOAUTH2'] as $method) {
+                    if (in_array($method, $this->server_caps['AUTH'], true)) {
+                        $authtype = $method;
+                        break;
+                    }
+                }
+                if (empty($authtype)) {
+                    $this->setError('No supported authentication methods found');
+
+                    return false;
+                }
+                $this->edebug('Auth method selected: ' . $authtype, self::DEBUG_LOWLEVEL);
+            }
+
+            if (!in_array($authtype, $this->server_caps['AUTH'], true)) {
+                $this->setError("The requested authentication method \"$authtype\" is not supported by the server");
+
+                return false;
+            }
+        } elseif (empty($authtype)) {
+            $authtype = 'LOGIN';
+        }
+        switch ($authtype) {
+            case 'PLAIN':
+                // Start authentication
+                if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) {
+                    return false;
+                }
+                // Send encoded username and password
+                if (!$this->sendCommand(
+                    'User & Password',
+                    base64_encode("\0" . $username . "\0" . $password),
+                    235
+                )
+                ) {
+                    return false;
+                }
+                break;
+            case 'LOGIN':
+                // Start authentication
+                if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) {
+                    return false;
+                }
+                if (!$this->sendCommand('Username', base64_encode($username), 334)) {
+                    return false;
+                }
+                if (!$this->sendCommand('Password', base64_encode($password), 235)) {
+                    return false;
+                }
+                break;
+            case 'CRAM-MD5':
+                // Start authentication
+                if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) {
+                    return false;
+                }
+                // Get the challenge
+                $challenge = base64_decode(substr($this->last_reply, 4));
+
+                // Build the response
+                $response = $username . ' ' . $this->hmac($challenge, $password);
+
+                // send encoded credentials
+                return $this->sendCommand('Username', base64_encode($response), 235);
+            case 'XOAUTH2':
+                //The OAuth instance must be set up prior to requesting auth.
+                if (null === $OAuth) {
+                    return false;
+                }
+                $oauth = $OAuth->getOauth64();
+
+                // Start authentication
+                if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) {
+                    return false;
+                }
+                break;
+            default:
+                $this->setError("Authentication method \"$authtype\" is not supported");
+
+                return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Calculate an MD5 HMAC hash.
+     * Works like hash_hmac('md5', $data, $key)
+     * in case that function is not available.
+     *
+     * @param string $data The data to hash
+     * @param string $key  The key to hash with
+     *
+     * @return string
+     */
+    protected function hmac($data, $key)
+    {
+        if (function_exists('hash_hmac')) {
+            return hash_hmac('md5', $data, $key);
+        }
+
+        // The following borrowed from
+        // http://php.net/manual/en/function.mhash.php#27225
+
+        // RFC 2104 HMAC implementation for php.
+        // Creates an md5 HMAC.
+        // Eliminates the need to install mhash to compute a HMAC
+        // by Lance Rushing
+
+        $bytelen = 64; // byte length for md5
+        if (strlen($key) > $bytelen) {
+            $key = pack('H*', md5($key));
+        }
+        $key = str_pad($key, $bytelen, chr(0x00));
+        $ipad = str_pad('', $bytelen, chr(0x36));
+        $opad = str_pad('', $bytelen, chr(0x5c));
+        $k_ipad = $key ^ $ipad;
+        $k_opad = $key ^ $opad;
+
+        return md5($k_opad . pack('H*', md5($k_ipad . $data)));
+    }
+
+    /**
+     * Check connection state.
+     *
+     * @return bool True if connected
+     */
+    public function connected()
+    {
+        if (is_resource($this->smtp_conn)) {
+            $sock_status = stream_get_meta_data($this->smtp_conn);
+            if ($sock_status['eof']) {
+                // The socket is valid but we are not connected
+                $this->edebug(
+                    'SMTP NOTICE: EOF caught while checking if connected',
+                    self::DEBUG_CLIENT
+                );
+                $this->close();
+
+                return false;
+            }
+
+            return true; // everything looks good
+        }
+
+        return false;
+    }
+
+    /**
+     * Close the socket and clean up the state of the class.
+     * Don't use this function without first trying to use QUIT.
+     *
+     * @see quit()
+     */
+    public function close()
+    {
+        $this->setError('');
+        $this->server_caps = null;
+        $this->helo_rply = null;
+        if (is_resource($this->smtp_conn)) {
+            // close the connection and cleanup
+            fclose($this->smtp_conn);
+            $this->smtp_conn = null; //Makes for cleaner serialization
+            $this->edebug('Connection: closed', self::DEBUG_CONNECTION);
+        }
+    }
+
+    /**
+     * Send an SMTP DATA command.
+     * Issues a data command and sends the msg_data to the server,
+     * finializing the mail transaction. $msg_data is the message
+     * that is to be send with the headers. Each header needs to be
+     * on a single line followed by a <CRLF> with the message headers
+     * and the message body being separated by an additional <CRLF>.
+     * Implements RFC 821: DATA <CRLF>.
+     *
+     * @param string $msg_data Message data to send
+     *
+     * @return bool
+     */
+    public function data($msg_data)
+    {
+        //This will use the standard timelimit
+        if (!$this->sendCommand('DATA', 'DATA', 354)) {
+            return false;
+        }
+
+        /* The server is ready to accept data!
+         * According to rfc821 we should not send more than 1000 characters on a single line (including the LE)
+         * so we will break the data up into lines by \r and/or \n then if needed we will break each of those into
+         * smaller lines to fit within the limit.
+         * We will also look for lines that start with a '.' and prepend an additional '.'.
+         * NOTE: this does not count towards line-length limit.
+         */
+
+        // Normalize line breaks before exploding
+        $lines = explode("\n", str_replace(["\r\n", "\r"], "\n", $msg_data));
+
+        /* To distinguish between a complete RFC822 message and a plain message body, we check if the first field
+         * of the first line (':' separated) does not contain a space then it _should_ be a header and we will
+         * process all lines before a blank line as headers.
+         */
+
+        $field = substr($lines[0], 0, strpos($lines[0], ':'));
+        $in_headers = false;
+        if (!empty($field) && strpos($field, ' ') === false) {
+            $in_headers = true;
+        }
+
+        foreach ($lines as $line) {
+            $lines_out = [];
+            if ($in_headers && $line === '') {
+                $in_headers = false;
+            }
+            //Break this line up into several smaller lines if it's too long
+            //Micro-optimisation: isset($str[$len]) is faster than (strlen($str) > $len),
+            while (isset($line[self::MAX_LINE_LENGTH])) {
+                //Working backwards, try to find a space within the last MAX_LINE_LENGTH chars of the line to break on
+                //so as to avoid breaking in the middle of a word
+                $pos = strrpos(substr($line, 0, self::MAX_LINE_LENGTH), ' ');
+                //Deliberately matches both false and 0
+                if (!$pos) {
+                    //No nice break found, add a hard break
+                    $pos = self::MAX_LINE_LENGTH - 1;
+                    $lines_out[] = substr($line, 0, $pos);
+                    $line = substr($line, $pos);
+                } else {
+                    //Break at the found point
+                    $lines_out[] = substr($line, 0, $pos);
+                    //Move along by the amount we dealt with
+                    $line = substr($line, $pos + 1);
+                }
+                //If processing headers add a LWSP-char to the front of new line RFC822 section 3.1.1
+                if ($in_headers) {
+                    $line = "\t" . $line;
+                }
+            }
+            $lines_out[] = $line;
+
+            //Send the lines to the server
+            foreach ($lines_out as $line_out) {
+                //RFC2821 section 4.5.2
+                if (!empty($line_out) && $line_out[0] === '.') {
+                    $line_out = '.' . $line_out;
+                }
+                $this->client_send($line_out . static::LE, 'DATA');
+            }
+        }
+
+        //Message data has been sent, complete the command
+        //Increase timelimit for end of DATA command
+        $savetimelimit = $this->Timelimit;
+        $this->Timelimit *= 2;
+        $result = $this->sendCommand('DATA END', '.', 250);
+        $this->recordLastTransactionID();
+        //Restore timelimit
+        $this->Timelimit = $savetimelimit;
+
+        return $result;
+    }
+
+    /**
+     * Send an SMTP HELO or EHLO command.
+     * Used to identify the sending server to the receiving server.
+     * This makes sure that client and server are in a known state.
+     * Implements RFC 821: HELO <SP> <domain> <CRLF>
+     * and RFC 2821 EHLO.
+     *
+     * @param string $host The host name or IP to connect to
+     *
+     * @return bool
+     */
+    public function hello($host = '')
+    {
+        //Try extended hello first (RFC 2821)
+        return $this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host);
+    }
+
+    /**
+     * Send an SMTP HELO or EHLO command.
+     * Low-level implementation used by hello().
+     *
+     * @param string $hello The HELO string
+     * @param string $host  The hostname to say we are
+     *
+     * @return bool
+     *
+     * @see hello()
+     */
+    protected function sendHello($hello, $host)
+    {
+        $noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250);
+        $this->helo_rply = $this->last_reply;
+        if ($noerror) {
+            $this->parseHelloFields($hello);
+        } else {
+            $this->server_caps = null;
+        }
+
+        return $noerror;
+    }
+
+    /**
+     * Parse a reply to HELO/EHLO command to discover server extensions.
+     * In case of HELO, the only parameter that can be discovered is a server name.
+     *
+     * @param string $type `HELO` or `EHLO`
+     */
+    protected function parseHelloFields($type)
+    {
+        $this->server_caps = [];
+        $lines = explode("\n", $this->helo_rply);
+
+        foreach ($lines as $n => $s) {
+            //First 4 chars contain response code followed by - or space
+            $s = trim(substr($s, 4));
+            if (empty($s)) {
+                continue;
+            }
+            $fields = explode(' ', $s);
+            if (!empty($fields)) {
+                if (!$n) {
+                    $name = $type;
+                    $fields = $fields[0];
+                } else {
+                    $name = array_shift($fields);
+                    switch ($name) {
+                        case 'SIZE':
+                            $fields = ($fields ? $fields[0] : 0);
+                            break;
+                        case 'AUTH':
+                            if (!is_array($fields)) {
+                                $fields = [];
+                            }
+                            break;
+                        default:
+                            $fields = true;
+                    }
+                }
+                $this->server_caps[$name] = $fields;
+            }
+        }
+    }
+
+    /**
+     * Send an SMTP MAIL command.
+     * Starts a mail transaction from the email address specified in
+     * $from. Returns true if successful or false otherwise. If True
+     * the mail transaction is started and then one or more recipient
+     * commands may be called followed by a data command.
+     * Implements RFC 821: MAIL <SP> FROM:<reverse-path> <CRLF>.
+     *
+     * @param string $from Source address of this message
+     *
+     * @return bool
+     */
+    public function mail($from)
+    {
+        $useVerp = ($this->do_verp ? ' XVERP' : '');
+
+        return $this->sendCommand(
+            'MAIL FROM',
+            'MAIL FROM:<' . $from . '>' . $useVerp,
+            250
+        );
+    }
+
+    /**
+     * Send an SMTP QUIT command.
+     * Closes the socket if there is no error or the $close_on_error argument is true.
+     * Implements from RFC 821: QUIT <CRLF>.
+     *
+     * @param bool $close_on_error Should the connection close if an error occurs?
+     *
+     * @return bool
+     */
+    public function quit($close_on_error = true)
+    {
+        $noerror = $this->sendCommand('QUIT', 'QUIT', 221);
+        $err = $this->error; //Save any error
+        if ($noerror || $close_on_error) {
+            $this->close();
+            $this->error = $err; //Restore any error from the quit command
+        }
+
+        return $noerror;
+    }
+
+    /**
+     * Send an SMTP RCPT command.
+     * Sets the TO argument to $toaddr.
+     * Returns true if the recipient was accepted false if it was rejected.
+     * Implements from RFC 821: RCPT <SP> TO:<forward-path> <CRLF>.
+     *
+     * @param string $address The address the message is being sent to
+     * @param string $dsn     Comma separated list of DSN notifications. NEVER, SUCCESS, FAILURE
+     *                        or DELAY. If you specify NEVER all other notifications are ignored.
+     *
+     * @return bool
+     */
+    public function recipient($address, $dsn = '')
+    {
+        if (empty($dsn)) {
+            $rcpt = 'RCPT TO:<' . $address . '>';
+        } else {
+            $dsn = strtoupper($dsn);
+            $notify = [];
+
+            if (strpos($dsn, 'NEVER') !== false) {
+                $notify[] = 'NEVER';
+            } else {
+                foreach (['SUCCESS', 'FAILURE', 'DELAY'] as $value) {
+                    if (strpos($dsn, $value) !== false) {
+                        $notify[] = $value;
+                    }
+                }
+            }
+
+            $rcpt = 'RCPT TO:<' . $address . '> NOTIFY=' . implode(',', $notify);
+        }
+
+        return $this->sendCommand(
+            'RCPT TO',
+            $rcpt,
+            [250, 251]
+        );
+    }
+
+    /**
+     * Send an SMTP RSET command.
+     * Abort any transaction that is currently in progress.
+     * Implements RFC 821: RSET <CRLF>.
+     *
+     * @return bool True on success
+     */
+    public function reset()
+    {
+        return $this->sendCommand('RSET', 'RSET', 250);
+    }
+
+    /**
+     * Send a command to an SMTP server and check its return code.
+     *
+     * @param string    $command       The command name - not sent to the server
+     * @param string    $commandstring The actual command to send
+     * @param int|array $expect        One or more expected integer success codes
+     *
+     * @return bool True on success
+     */
+    protected function sendCommand($command, $commandstring, $expect)
+    {
+        if (!$this->connected()) {
+            $this->setError("Called $command without being connected");
+
+            return false;
+        }
+        //Reject line breaks in all commands
+        if ((strpos($commandstring, "\n") !== false) || (strpos($commandstring, "\r") !== false)) {
+            $this->setError("Command '$command' contained line breaks");
+
+            return false;
+        }
+        $this->client_send($commandstring . static::LE, $command);
+
+        $this->last_reply = $this->get_lines();
+        // Fetch SMTP code and possible error code explanation
+        $matches = [];
+        if (preg_match('/^([\d]{3})[ -](?:([\d]\\.[\d]\\.[\d]{1,2}) )?/', $this->last_reply, $matches)) {
+            $code = (int) $matches[1];
+            $code_ex = (count($matches) > 2 ? $matches[2] : null);
+            // Cut off error code from each response line
+            $detail = preg_replace(
+                "/{$code}[ -]" .
+                ($code_ex ? str_replace('.', '\\.', $code_ex) . ' ' : '') . '/m',
+                '',
+                $this->last_reply
+            );
+        } else {
+            // Fall back to simple parsing if regex fails
+            $code = (int) substr($this->last_reply, 0, 3);
+            $code_ex = null;
+            $detail = substr($this->last_reply, 4);
+        }
+
+        $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER);
+
+        if (!in_array($code, (array) $expect, true)) {
+            $this->setError(
+                "$command command failed",
+                $detail,
+                $code,
+                $code_ex
+            );
+            $this->edebug(
+                'SMTP ERROR: ' . $this->error['error'] . ': ' . $this->last_reply,
+                self::DEBUG_CLIENT
+            );
+
+            return false;
+        }
+
+        $this->setError('');
+
+        return true;
+    }
+
+    /**
+     * Send an SMTP SAML command.
+     * Starts a mail transaction from the email address specified in $from.
+     * Returns true if successful or false otherwise. If True
+     * the mail transaction is started and then one or more recipient
+     * commands may be called followed by a data command. This command
+     * will send the message to the users terminal if they are logged
+     * in and send them an email.
+     * Implements RFC 821: SAML <SP> FROM:<reverse-path> <CRLF>.
+     *
+     * @param string $from The address the message is from
+     *
+     * @return bool
+     */
+    public function sendAndMail($from)
+    {
+        return $this->sendCommand('SAML', "SAML FROM:$from", 250);
+    }
+
+    /**
+     * Send an SMTP VRFY command.
+     *
+     * @param string $name The name to verify
+     *
+     * @return bool
+     */
+    public function verify($name)
+    {
+        return $this->sendCommand('VRFY', "VRFY $name", [250, 251]);
+    }
+
+    /**
+     * Send an SMTP NOOP command.
+     * Used to keep keep-alives alive, doesn't actually do anything.
+     *
+     * @return bool
+     */
+    public function noop()
+    {
+        return $this->sendCommand('NOOP', 'NOOP', 250);
+    }
+
+    /**
+     * Send an SMTP TURN command.
+     * This is an optional command for SMTP that this class does not support.
+     * This method is here to make the RFC821 Definition complete for this class
+     * and _may_ be implemented in future.
+     * Implements from RFC 821: TURN <CRLF>.
+     *
+     * @return bool
+     */
+    public function turn()
+    {
+        $this->setError('The SMTP TURN command is not implemented');
+        $this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT);
+
+        return false;
+    }
+
+    /**
+     * Send raw data to the server.
+     *
+     * @param string $data    The data to send
+     * @param string $command Optionally, the command this is part of, used only for controlling debug output
+     *
+     * @return int|bool The number of bytes sent to the server or false on error
+     */
+    public function client_send($data, $command = '')
+    {
+        //If SMTP transcripts are left enabled, or debug output is posted online
+        //it can leak credentials, so hide credentials in all but lowest level
+        if (self::DEBUG_LOWLEVEL > $this->do_debug &&
+            in_array($command, ['User & Password', 'Username', 'Password'], true)) {
+            $this->edebug('CLIENT -> SERVER: [credentials hidden]', self::DEBUG_CLIENT);
+        } else {
+            $this->edebug('CLIENT -> SERVER: ' . $data, self::DEBUG_CLIENT);
+        }
+        set_error_handler([$this, 'errorHandler']);
+        $result = fwrite($this->smtp_conn, $data);
+        restore_error_handler();
+
+        return $result;
+    }
+
+    /**
+     * Get the latest error.
+     *
+     * @return array
+     */
+    public function getError()
+    {
+        return $this->error;
+    }
+
+    /**
+     * Get SMTP extensions available on the server.
+     *
+     * @return array|null
+     */
+    public function getServerExtList()
+    {
+        return $this->server_caps;
+    }
+
+    /**
+     * Get metadata about the SMTP server from its HELO/EHLO response.
+     * The method works in three ways, dependent on argument value and current state:
+     *   1. HELO/EHLO has not been sent - returns null and populates $this->error.
+     *   2. HELO has been sent -
+     *     $name == 'HELO': returns server name
+     *     $name == 'EHLO': returns boolean false
+     *     $name == any other string: returns null and populates $this->error
+     *   3. EHLO has been sent -
+     *     $name == 'HELO'|'EHLO': returns the server name
+     *     $name == any other string: if extension $name exists, returns True
+     *       or its options (e.g. AUTH mechanisms supported). Otherwise returns False.
+     *
+     * @param string $name Name of SMTP extension or 'HELO'|'EHLO'
+     *
+     * @return string|bool|null
+     */
+    public function getServerExt($name)
+    {
+        if (!$this->server_caps) {
+            $this->setError('No HELO/EHLO was sent');
+
+            return;
+        }
+
+        if (!array_key_exists($name, $this->server_caps)) {
+            if ('HELO' === $name) {
+                return $this->server_caps['EHLO'];
+            }
+            if ('EHLO' === $name || array_key_exists('EHLO', $this->server_caps)) {
+                return false;
+            }
+            $this->setError('HELO handshake was used; No information about server extensions available');
+
+            return;
+        }
+
+        return $this->server_caps[$name];
+    }
+
+    /**
+     * Get the last reply from the server.
+     *
+     * @return string
+     */
+    public function getLastReply()
+    {
+        return $this->last_reply;
+    }
+
+    /**
+     * Read the SMTP server's response.
+     * Either before eof or socket timeout occurs on the operation.
+     * With SMTP we can tell if we have more lines to read if the
+     * 4th character is '-' symbol. If it is a space then we don't
+     * need to read anything else.
+     *
+     * @return string
+     */
+    protected function get_lines()
+    {
+        // If the connection is bad, give up straight away
+        if (!is_resource($this->smtp_conn)) {
+            return '';
+        }
+        $data = '';
+        $endtime = 0;
+        stream_set_timeout($this->smtp_conn, $this->Timeout);
+        if ($this->Timelimit > 0) {
+            $endtime = time() + $this->Timelimit;
+        }
+        $selR = [$this->smtp_conn];
+        $selW = null;
+        while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
+            //Must pass vars in here as params are by reference
+            //solution for signals inspired by https://github.com/symfony/symfony/pull/6540
+            set_error_handler([$this, 'errorHandler']);
+            $n = stream_select($selR, $selW, $selW, $this->Timelimit);
+            restore_error_handler();
+
+            if ($n === false) {
+                $message = $this->getError()['detail'];
+
+                $this->edebug(
+                    'SMTP -> get_lines(): select failed (' . $message . ')',
+                    self::DEBUG_LOWLEVEL
+                );
+
+                //stream_select returns false when the `select` system call is interrupted by an incoming signal, try the select again
+                if (stripos($message, 'interrupted system call') !== false) {
+                    $this->edebug(
+                        'SMTP -> get_lines(): retrying stream_select',
+                        self::DEBUG_LOWLEVEL
+                    );
+                    $this->setError('');
+                    continue;
+                }
+
+                break;
+            }
+
+            if (!$n) {
+                $this->edebug(
+                    'SMTP -> get_lines(): select timed-out in (' . $this->Timelimit . ' sec)',
+                    self::DEBUG_LOWLEVEL
+                );
+                break;
+            }
+
+            //Deliberate noise suppression - errors are handled afterwards
+            $str = @fgets($this->smtp_conn, self::MAX_REPLY_LENGTH);
+            $this->edebug('SMTP INBOUND: "' . trim($str) . '"', self::DEBUG_LOWLEVEL);
+            $data .= $str;
+            // If response is only 3 chars (not valid, but RFC5321 S4.2 says it must be handled),
+            // or 4th character is a space or a line break char, we are done reading, break the loop.
+            // String array access is a significant micro-optimisation over strlen
+            if (!isset($str[3]) || $str[3] === ' ' || $str[3] === "\r" || $str[3] === "\n") {
+                break;
+            }
+            // Timed-out? Log and break
+            $info = stream_get_meta_data($this->smtp_conn);
+            if ($info['timed_out']) {
+                $this->edebug(
+                    'SMTP -> get_lines(): stream timed-out (' . $this->Timeout . ' sec)',
+                    self::DEBUG_LOWLEVEL
+                );
+                break;
+            }
+            // Now check if reads took too long
+            if ($endtime && time() > $endtime) {
+                $this->edebug(
+                    'SMTP -> get_lines(): timelimit reached (' .
+                    $this->Timelimit . ' sec)',
+                    self::DEBUG_LOWLEVEL
+                );
+                break;
+            }
+        }
+
+        return $data;
+    }
+
+    /**
+     * Enable or disable VERP address generation.
+     *
+     * @param bool $enabled
+     */
+    public function setVerp($enabled = false)
+    {
+        $this->do_verp = $enabled;
+    }
+
+    /**
+     * Get VERP address generation mode.
+     *
+     * @return bool
+     */
+    public function getVerp()
+    {
+        return $this->do_verp;
+    }
+
+    /**
+     * Set error messages and codes.
+     *
+     * @param string $message      The error message
+     * @param string $detail       Further detail on the error
+     * @param string $smtp_code    An associated SMTP error code
+     * @param string $smtp_code_ex Extended SMTP code
+     */
+    protected function setError($message, $detail = '', $smtp_code = '', $smtp_code_ex = '')
+    {
+        $this->error = [
+            'error' => $message,
+            'detail' => $detail,
+            'smtp_code' => $smtp_code,
+            'smtp_code_ex' => $smtp_code_ex,
+        ];
+    }
+
+    /**
+     * Set debug output method.
+     *
+     * @param string|callable $method The name of the mechanism to use for debugging output, or a callable to handle it
+     */
+    public function setDebugOutput($method = 'echo')
+    {
+        $this->Debugoutput = $method;
+    }
+
+    /**
+     * Get debug output method.
+     *
+     * @return string
+     */
+    public function getDebugOutput()
+    {
+        return $this->Debugoutput;
+    }
+
+    /**
+     * Set debug output level.
+     *
+     * @param int $level
+     */
+    public function setDebugLevel($level = 0)
+    {
+        $this->do_debug = $level;
+    }
+
+    /**
+     * Get debug output level.
+     *
+     * @return int
+     */
+    public function getDebugLevel()
+    {
+        return $this->do_debug;
+    }
+
+    /**
+     * Set SMTP timeout.
+     *
+     * @param int $timeout The timeout duration in seconds
+     */
+    public function setTimeout($timeout = 0)
+    {
+        $this->Timeout = $timeout;
+    }
+
+    /**
+     * Get SMTP timeout.
+     *
+     * @return int
+     */
+    public function getTimeout()
+    {
+        return $this->Timeout;
+    }
+
+    /**
+     * Reports an error number and string.
+     *
+     * @param int    $errno   The error number returned by PHP
+     * @param string $errmsg  The error message returned by PHP
+     * @param string $errfile The file the error occurred in
+     * @param int    $errline The line number the error occurred on
+     */
+    protected function errorHandler($errno, $errmsg, $errfile = '', $errline = 0)
+    {
+        $notice = 'Connection failed.';
+        $this->setError(
+            $notice,
+            $errmsg,
+            (string) $errno
+        );
+        $this->edebug(
+            "$notice Error #$errno: $errmsg [$errfile line $errline]",
+            self::DEBUG_CONNECTION
+        );
+    }
+
+    /**
+     * Extract and return the ID of the last SMTP transaction based on
+     * a list of patterns provided in SMTP::$smtp_transaction_id_patterns.
+     * Relies on the host providing the ID in response to a DATA command.
+     * If no reply has been received yet, it will return null.
+     * If no pattern was matched, it will return false.
+     *
+     * @return bool|string|null
+     */
+    protected function recordLastTransactionID()
+    {
+        $reply = $this->getLastReply();
+
+        if (empty($reply)) {
+            $this->last_smtp_transaction_id = null;
+        } else {
+            $this->last_smtp_transaction_id = false;
+            foreach ($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) {
+                $matches = [];
+                if (preg_match($smtp_transaction_id_pattern, $reply, $matches)) {
+                    $this->last_smtp_transaction_id = trim($matches[1]);
+                    break;
+                }
+            }
+        }
+
+        return $this->last_smtp_transaction_id;
+    }
+
+    /**
+     * Get the queue/transaction ID of the last SMTP transaction
+     * If no reply has been received yet, it will return null.
+     * If no pattern was matched, it will return false.
+     *
+     * @return bool|string|null
+     *
+     * @see recordLastTransactionID()
+     */
+    public function getLastTransactionID()
+    {
+        return $this->last_smtp_transaction_id;
+    }
+}
diff --git a/admin/lib/web/galleries.php b/admin/lib/web/galleries.php
new file mode 100644 (file)
index 0000000..cb77006
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+class gallery {
+  private $dbh;
+  public function __construct($dblink){
+    $this->dbh = $dblink;
+  }
+
+  public function getGalleries($parentid){
+
+  }
+
+  public function getGallery($id){
+
+  }
+
+  public function addgallery(){
+
+  }
+
+  public function duplicateGallery($id){
+
+  }
+
+  public function removeGallery($id){
+
+  }
+
+  public function updateGallery($id,$data){
+
+  }
+
+  public function newItem(){
+
+  }
+
+  public function setItemFile($id,$file){
+
+  }
+
+  public function removeItem($id){
+
+  }
+
+  public function duplicateItem($id){
+
+  }
+
+  public function updateItem($id,$data){
+
+  }
+
+  public function __destruct(){
+    $this->dbh = null;
+  }
+}
+?>
\ No newline at end of file
diff --git a/admin/lib/web/rendezvous.php b/admin/lib/web/rendezvous.php
new file mode 100644 (file)
index 0000000..86cb73b
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+class rendezvous {
+  private $dbh;
+  public function __construct($dblink){
+    $this->dbh = $dblink;
+  }
+
+
+  public function addWorkplan(){
+
+  }
+
+  public function updateWorkplan($id,$data){
+
+  }
+
+  public function removeWorkplan($id){
+
+  }
+
+  public function duplicateWorkplan($id){
+
+  }
+
+  public function updateWorkplanDay($id,$data){
+    
+  }
+
+
+
+  public function __destruct(){
+    $this->dbh = null;
+  }
+}
+
+?>
\ No newline at end of file
diff --git a/admin/lib/web/templates.php b/admin/lib/web/templates.php
new file mode 100644 (file)
index 0000000..7ed8c0c
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+class templates {
+  private $templatedir = "";
+  public function __construct($templatedir){
+    $this->templatedir = $templatedir;
+  }
+
+  public function __destruct(){
+  }
+
+  public function gettemplatefiles(){
+    return $this->getTemplateContents($this->templatedir);
+  }
+
+  public function getmediafiles(){
+    return $this->getMediaContents($this->templatedir);
+  }
+
+  
+
+  private function getMediaContents($dir, &$results = array()) {
+    $files = scandir($dir);
+    foreach ($files as $key => $value) {
+        $path = $dir . DIRECTORY_SEPARATOR . $value;
+        if (!is_dir($path)) {
+            $relpath = substr($path,strlen($this->templatedir)+ 1);
+            $cat = "";
+            if (substr($relpath,0,4) == "img/" ){ $cat = "Site";} 
+            elseif (substr($relpath,0,5) == "media/" ){ $cat = "Media";}
+            if ($cat != ""){
+              $results[] = array("category" => $cat,"filepath" => $relpath,"folder" => substr($relpath,0,strlen(dirname($relpath))),"filename" => basename($relpath));
+            }
+            
+        } else if ((substr($value,0,1) != "." ) && (substr($path,0,3) != 'lib')) {
+            $this->getMediaContents($path, $results);
+        }
+    }
+    return $results;
+  }
+
+  private function getTemplateContents($dir, &$results = array()) {
+    $files = scandir($dir);
+    foreach ($files as $key => $value) {
+        $path = $dir . DIRECTORY_SEPARATOR . $value;
+        if (!is_dir($path)) {
+            $relpath = substr($path,strlen($this->templatedir)+ 1);
+            $cat = "";
+            if (substr($relpath,0,4) == "css/" ){ $cat= "StyleSheet"; } 
+            elseif (substr($relpath,0,5) == "tmpl/" ){ $cat = "Template"; } 
+            elseif (substr($relpath,0,3) == "js/" ) { $cat = "JavaScript";} 
+            if ($cat != ""){
+              $results[] = array("category" => $cat,"filepath" => $relpath,"folder" => substr($relpath,0,strlen(dirname($relpath))),"filename" => basename($relpath));
+            }
+            
+        } else if ((substr($value,0,1) != "." ) && (substr($path,0,3) != 'lib')) {
+            $this->getTemplateContents($path, $results);
+            #$results[] = $path;
+        }
+    }
+    return $results;
+  }
+  
+} 
+?> 
\ No newline at end of file
diff --git a/admin/lib/web/webmenu.php b/admin/lib/web/webmenu.php
new file mode 100644 (file)
index 0000000..b8aa838
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+  class websites {
+    private $dbh = null;
+    public function __construct($dblink){
+      $this->dbh = $dblink;
+    }
+
+    public function getMenu($idparent){
+
+    }
+
+    public function addMenu(){
+
+    }
+
+    public function deleteMenu(){
+
+    }
+
+    public function updateMenu(){
+
+    }
+
+    public function duplicateMenu(){
+
+    }
+
+    public function addMenuItem(){
+
+    }
+
+    public function removeMenuItem($id){
+
+    }
+
+    public function updateMenuItem($id,$data){
+
+    }
+
+    public function duplicateMenuItem($id){
+
+    }
+
+    public function __destruct(){
+      $this->dbh = null;
+    }
+  }
+?>
\ No newline at end of file
diff --git a/admin/lib/web/websites.php b/admin/lib/web/websites.php
new file mode 100644 (file)
index 0000000..470e86b
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+  class websites {
+    private $dbh = null;
+    public function __construct($dblink){
+      $this->dbh = $dblink;
+    }
+
+    public function addWebsite($id){
+
+    }
+
+    public function updateWebsite($id,$data){
+
+    }
+
+    public function removeWebsite($id){
+
+    }
+
+    public function duplicateWebsite($id){
+
+    }
+
+
+    public function __destruct(){
+      $this->dbh = null;
+    }
+  }
+?>
\ No newline at end of file
diff --git a/admin/tmpl/.htaccess b/admin/tmpl/.htaccess
new file mode 100644 (file)
index 0000000..908fc52
--- /dev/null
@@ -0,0 +1,5 @@
+#RewriteEngine On
+#RewriteBase /
+#RewriteCond %{HTTP_COOKIE} !potlu= [NC]
+#RewriteRule .* "%{REQUEST_SCHEME}://%{HTTP_HOST}/backoffice/login.html" [L]
+Require all denied
\ No newline at end of file
diff --git a/admin/tmpl/index.html.mustache b/admin/tmpl/index.html.mustache
new file mode 100644 (file)
index 0000000..8c43185
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="fr">
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
+  <title>Website Admin</title>
+  <meta name="language" content="fr">
+    <meta name="robots" content="noindex,nofollow">
+    <!-- <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
+  <meta http-equiv="Pragma" content="no-cache" />
+  <meta http-equiv="Expires" content="0" /> -->
+<link rel="apple-touch-icon" sizes="57x57" href="img/favicon/apple-icon-57x57.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="60x60" href="img/favicon/apple-icon-60x60.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="72x72" href="img/favicon/apple-icon-72x72.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="76x76" href="img/favicon/apple-icon-76x76.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="114x114" href="img/favicon/apple-icon-114x114.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="120x120" href="img/favicon/apple-icon-120x120.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="144x144" href="img/favicon/apple-icon-144x144.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="152x152" href="img/favicon/apple-icon-152x152.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="180x180" href="img/favicon/apple-icon-180x180.png?v={{config.appversion}}">
+<link rel="icon" type="image/png" sizes="192x192"  href="img/favicon/android-icon-192x192.png?v={{config.appversion}}">
+<link rel="icon" type="image/png" sizes="32x32" href="img/favicon/favicon-32x32.png?v={{config.appversion}}">
+<link rel="icon" type="image/png" sizes="96x96" href="img/favicon/favicon-96x96.png?v={{config.appversion}}">
+<link rel="icon" type="image/png" sizes="16x16" href="img/favicon/favicon-16x16.png?v={{config.appversion}}">
+
+<link rel="stylesheet" href="css/icons{{minify}}.css?v={{config.appversion}}">
+<link rel="stylesheet" href="css/theme{{minify}}.css?v={{config.appversion}}">
+
+<link rel="stylesheet" href="js/vendors/tabulator/css/tabulator_site{{minify}}.css?v={{config.appversion}}">
+<link rel="stylesheet" href="js/vendors/slimselect/slimselect{{minify}}.css?v={{config.appversion}}">
+<link rel="stylesheet" href="js/vendors/flatpickr/flatpickr{{minify}}.css?v={{config.appversion}}">
+<link rel="stylesheet" href="js/vendors/flatpickr/themes/airbnb{{minify}}.css?v={{config.appversion}}">
+</head>
+<body>
+<div class="main">
+  {{ pagedata }}
+    </div> 
+  <script>
+    let schemata = "[% session.sessiondata.schemata %]"; 
+  </script>
+  <script type="text/javascript" src="js/vendors/tabulator/js/tabulator{{minify}}.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/vendors/moment/moment-with-locales{{minify}}.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/vendors/slimselect/slimselect.min.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/vendors/flatpickr/flatpickr{{minify}}.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/vendors/flatpickr/l10n/fr{{minify}}.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/vendors/flatpickr/plugins/weekSelect/weekSelect.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/request{{minify}}.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/app{{minify}}.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/timecalc{{minify}}.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/dataform{{minify}}.js?v={{config.appversion}}"></script>
+  <script type="text/javascript" src="js/report{{minify}}.js?v={{config.appversion}}"></script>
+  
+</body>
+
+</html>
\ No newline at end of file
diff --git a/admin/tmpl/login.html.mustache b/admin/tmpl/login.html.mustache
new file mode 100644 (file)
index 0000000..a0e1704
--- /dev/null
@@ -0,0 +1,66 @@
+
+
+<!DOCTYPE html>
+<html lang="fr">
+<head>
+
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
+  <title>OLD BELL - Site Admin</title>
+  <meta name="language" content="fr">
+    <meta name="robots" content="noindex,nofollow">
+    <link rel="apple-touch-icon" sizes="57x57" href="{{abspath}}img/favicon/apple-icon-57x57.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="60x60" href="{{abspath}}img/favicon/apple-icon-60x60.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="72x72" href="{{abspath}}img/favicon/apple-icon-72x72.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="76x76" href="{{abspath}}img/favicon/apple-icon-76x76.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="114x114" href="{{abspath}}img/favicon/apple-icon-114x114.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="120x120" href="{{abspath}}img/favicon/apple-icon-120x120.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="144x144" href="{{abspath}}img/favicon/apple-icon-144x144.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="152x152" href="{{abspath}}img/favicon/apple-icon-152x152.png?v={{config.appversion}}">
+<link rel="apple-touch-icon" sizes="180x180" href="{{abspath}}img/favicon/apple-icon-180x180.png?v={{config.appversion}}">
+<link rel="icon" type="image/png" sizes="192x192"  href="{{abspath}}img/favicon/android-icon-192x192.png?v={{config.appversion}}">
+<link rel="icon" type="image/png" sizes="32x32" href="{{abspath}}img/favicon/favicon-32x32.png?v={{config.appversion}}">
+<link rel="icon" type="image/png" sizes="96x96" href="{{abspath}}img/favicon/favicon-96x96.png?v={{config.appversion}}">
+<link rel="icon" type="image/png" sizes="16x16" href="{{abspath}}img/favicon/favicon-16x16.png?v={{config.appversion}}">
+<link rel="stylesheet" href="{{abspath}}css/theme{{ config.minify }}.css?v={{config.appversion}}">
+<style>
+body, html {height: 100%; background-color: #c6c6c6;}
+
+</style>
+</head>
+<body>
+  
+  <div class="display-container DKS bgimg" style="padding-top: 100px; ">
+
+    <div class="row" >
+    <div class="col l4 m2 hide-small">&nbsp;
+    </div>
+    <div class="col l4 m8 s12 border round">  
+    <div class="container center white padding">
+        <img src="{{abspath}}img/toplogo.png?v={{config.appversion}}" style="height: 60px;" alt="logo">
+    </div>
+    <div class="container white" id="pnllogin" >
+        {{pagedata}}
+    </div>
+    <div class="container padding-24">
+                  <a href="{{abspath}}login/forgotpassword.html" class="text-primary">Mot de passe oublié?</a>
+                </div>
+  </div>
+  <div class="col l4 m2  hide-small">&nbsp;
+  </div>
+  </div>
+  <noscript>
+  <div class="row">
+    <div class="col l4 m2 hide-small">&nbsp;
+    </div>
+    <div class="col l4 m8 s12 border round white"> 
+      <div class="container text-red large">Javascript doit être activé pour travailler avec POT!</div>
+    </div>
+    <div class="col l4 m2  hide-small">&nbsp;
+    </div>
+  </div>
+  </noscript>
+  </div>
+</body>
+
+</html>
diff --git a/admin/tmpl/pages/config/rendezvous.html.mustache b/admin/tmpl/pages/config/rendezvous.html.mustache
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/tmpl/pages/config/shop.html.mustache b/admin/tmpl/pages/config/shop.html.mustache
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/tmpl/pages/config/site.html.mustache b/admin/tmpl/pages/config/site.html.mustache
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/tmpl/pages/config/template.html.mustache b/admin/tmpl/pages/config/template.html.mustache
new file mode 100644 (file)
index 0000000..4c49fdb
--- /dev/null
@@ -0,0 +1,32 @@
+<div class="container bar toolbar">
+  <a class="bar-item toolbarbtn" href="home.html"><span class="icon-back" style="font-size: 17px;"></span>retour</a>
+  <div class="bar-item PageHeadTitle">Galleries</div>
+  <div class="hide-small">
+    <button class="bar-item toolbarbtn right" onclick="templates.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
+      <button class="bar-item toolbarbtn right" onclick="templates.edit();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
+      <button class="bar-item toolbarbtn right" onclick="templates.confirmremove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
+      <button class="bar-item toolbarbtn right" onclick="templates.duplicate()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button>
+  </div>
+  <div class="hide-large hide-medium">
+    <button class="bar-item toolbarbtn right" onclick="myapp.togglemenu('mobilemenu');"><span class="icon-menu xxlarge" style="font-size: 20px;"></span></button>
+  </div>
+  <div class="toolbar" id="mobilemenu" style="display: none;">
+    <div class="bar">
+      <button class="bar-item toolbarbtn" onclick="templates.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
+      <button class="bar-item toolbarbtn" onclick="templates.edit();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
+      <button class="bar-item toolbarbtn" onclick="templates.confirmremove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
+      <button class="bar-item toolbarbtn" onclick="templates.duplicate()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button>
+    </div>
+  </div>
+</div>
+<div class="dispay-container panel">
+  <div id="tbl_templates"></div>
+</div>
+<div class="dispay-container panel" style="display: none;">
+</div>
+<script type="text/javascript" src="js/modules/templates.js"></script>
+<script>
+  function initpage(){
+    templates.init();
+  }
+</script>
\ No newline at end of file
diff --git a/admin/tmpl/pages/config/users.html.mustache b/admin/tmpl/pages/config/users.html.mustache
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/tmpl/pages/error.html.mustache b/admin/tmpl/pages/error.html.mustache
new file mode 100644 (file)
index 0000000..31ab5ed
--- /dev/null
@@ -0,0 +1,2 @@
+<h2>Cette page  n'existe pas!</h2>
+<pre>{{config}}</pre>
\ No newline at end of file
diff --git a/admin/tmpl/pages/galleries.html.mustache b/admin/tmpl/pages/galleries.html.mustache
new file mode 100644 (file)
index 0000000..82cd1b3
--- /dev/null
@@ -0,0 +1,28 @@
+<div class="container bar toolbar">
+  <a class="bar-item toolbarbtn" href="home.html"><span class="icon-back" style="font-size: 17px;"></span>retour</a>
+  <div class="bar-item PageHeadTitle">Galleries</div>
+  <div class="hide-small">
+    <button class="bar-item toolbarbtn right" onclick="galleries.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
+      <button class="bar-item toolbarbtn right" onclick="galleries.editer();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
+      <button class="bar-item toolbarbtn right" onclick="galleries.confirmremove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
+      <button class="bar-item toolbarbtn right" onclick="galleries.duplicate()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button>
+  </div>
+  <div class="hide-large hide-medium">
+    <button class="bar-item toolbarbtn right" onclick="myapp.togglemenu('mobilemenu');"><span class="icon-menu xxlarge" style="font-size: 20px;"></span></button>
+  </div>
+  <div class="toolbar" id="mobilemenu" style="display: none;">
+    <div class="bar">
+      <button class="bar-item toolbarbtn" onclick="galleries.add();"><span class="icon-plus" style="font-size: 17px;"></span>ajouter</button>
+      <button class="bar-item toolbarbtn" onclick="galleries.editer();"><span class="icon-edit" style="font-size: 17px;"></span>édit.</button>
+      <button class="bar-item toolbarbtn" onclick="galleries.confirmremove();"><span class="icon-trash" style="font-size: 17px;"></span>suppr.</button>
+      <button class="bar-item toolbarbtn" onclick="galleries.duplicate()"><span class="icon-duplicate" style="font-size: 17px;"></span>dupl.</button>
+    </div>
+  </div>
+</div>
+<div id="tbl_galleries"></div>
+<script type="text/javascript" src="js/modules/galleries.js"></script>
+<script>
+  function initpage(){
+    galleries.init();
+  }
+</script>
\ No newline at end of file
diff --git a/admin/tmpl/pages/home.html.mustache b/admin/tmpl/pages/home.html.mustache
new file mode 100644 (file)
index 0000000..b249c75
--- /dev/null
@@ -0,0 +1,45 @@
+<div class="container bar toolbar">
+  <a class="bar-item toolbarbtn" onclick="index.viewpanel();"><img src="img/favicon/apple-icon-57x57.png" style="height: 40px;" style="border: 1px solid bloack; border-radius: 3px;"></a>
+  <div class="bar-item PageHeadTitle">{{ sitename }}</div>
+  <a class="bar-item toolbarbtn right" onclick="index.viewpanel();"><span class="icon-logout" style="font-size: 20px;"></span>Logout</a>
+</div>
+<div class="display-container" >
+  <div class="container">
+    <div class="card" style="margin-top: 10px;">
+      <header class="container moduletoolbar">
+        <h3>Contenu</h3>
+      </header>
+      <div class="bar">
+        <a class="bar-item bodybtn" href="galleries.html"><span class="icon-cube" style="font-size: 24px;"></span>Galleries</a> 
+        <a class="bar-item bodybtn" href="websites.html"><span class="icon-cube" style="font-size: 24px;"></span>Pages</button> 
+        <a class="bar-item bodybtn" href="rendezvous.html"><span class="icon-cube" style="font-size: 24px;"></span>Rendez-Vous</a>
+        <a class="bar-item bodybtn" href="shop.html"><span class="icon-cube" style="font-size: 24px;"></span>Shop</a>
+        <a class="bar-item bodybtn" href="orders.html"><span class="icon-cube" style="font-size: 24px;"></span>Commandes</a>
+        <a class="bar-item bodybtn" href="popup.html"><span class="icon-cube" style="font-size: 24px;"></span>Popup</a>
+      </div>
+    </div>
+  </div>
+  <div class="container">
+    <div class="card" style="margin-top: 10px;">
+      <header class="container moduletoolbar">
+        <h3>Configuration</h3>
+      </header>
+      <div class="bar">
+        <a class="bar-item bodybtn" href="config/rendezvous.html"><span class="icon-bill" style="font-size: 24px;"></span>Rendez-Vous</a>
+        <a class="bar-item bodybtn" href="config/media.html"><span class="icon-bill" style="font-size: 24px;"></span>Media</a>
+        <a class="bar-item bodybtn" href="config/template.html"><span class="icon-bill" style="font-size: 24px;"></span>Template</a>
+        <a class="bar-item bodybtn" href="config/menu.html"><span class="icon-bill" style="font-size: 24px;"></span>Bars de Navigations</a> 
+        <a class="bar-item bodybtn" href="config/files.html"><span class="icon-contacts" style="font-size: 24px;"></span>Pages Web</button> 
+        <a class="bar-item bodybtn" href="config/site.html"><span class="icon-product" style="font-size: 24px;"></span>Site</a>
+        <a class="bar-item bodybtn" href="config/shop.html"><span class="icon-product" style="font-size: 24px;"></span>Shop</a>
+        <a class="bar-item bodybtn" href="config/users.html"><span class="icon-product" style="font-size: 24px;"></span>Utilisateurs</a>
+      </div>
+    </div>
+  </div>
+</div>
+<script type="text/javascript" src="js/modules/home.js"></script>
+<script>
+  function initpage(){
+    galleries.init();
+  }
+</script>
\ No newline at end of file
diff --git a/admin/tmpl/pages/login/forgotpassword.html.mustache b/admin/tmpl/pages/login/forgotpassword.html.mustache
new file mode 100644 (file)
index 0000000..3205836
--- /dev/null
@@ -0,0 +1,20 @@
+<div class="container">
+        <h4>Mot de passe oublié?</h4>
+              <h6 >Demander un nouveau mot de passe</h6>
+        </div>     
+              <form  method="POST">
+                <div class="container">
+                    <label for="email" class="label">E-mail</label>
+            
+                    <input type="text" class="input border" id="email" name="email"  required>
+                    
+                </div>
+                
+                <div class="container padding-16">
+                  <button type="submit" name="btnforgotpassword" class="button theme" >Envoyer</button>
+                </div>
+                <div class="container padding-24">
+                  <a href="{{abspath}}login.html" class="text-primary">se Connecter</a>
+                </div>
+                
+              </form>
\ No newline at end of file
diff --git a/admin/tmpl/pages/login/login.html.mustache b/admin/tmpl/pages/login/login.html.mustache
new file mode 100644 (file)
index 0000000..3ab8836
--- /dev/null
@@ -0,0 +1,23 @@
+<div class="container">
+            <h4>Accès Client</h4>
+        </div>
+        <form name="frmlogin"  method="POST" id="frmlogin">
+          <div class="container">
+              <label for="username" class="label">Login</label>
+              <input class="input border" type="text" id="login" name="login">
+          </div>
+          <div class="container">
+            <label for="password" class="label">Mot de passe</label>
+              <input class="input border" type="password" id="password" name="password">
+          </div>
+          <div class="container padding-16">
+              <button type="submit" name="btnlogin" class="theme-dark button" >Connecter</button>
+          </div>
+          <!--<div class="container padding-16">
+             <a href="[% abspath %]forgotpassword.html">mot de passe oublié?</a>
+          </div>-->
+
+          <div class="container padding-16">
+
+          </div>
+        </form>
\ No newline at end of file
diff --git a/admin/tmpl/pages/login/message.html.mustache b/admin/tmpl/pages/login/message.html.mustache
new file mode 100644 (file)
index 0000000..e9d05ec
--- /dev/null
@@ -0,0 +1,7 @@
+<div class="panel [% messagetype %]">[% message %]</div>  
+<div class="container">
+  <a href="login.html" class="text-primary">Se connecter</a>
+</div>
+<div class="container">
+  <!--<a href="forgotpassword.html" class="text-primary">Mot de passe oublié?</a>-->
+</div>
\ No newline at end of file
diff --git a/admin/tmpl/pages/orders.html.mustache b/admin/tmpl/pages/orders.html.mustache
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/tmpl/pages/rendezvous.html.mustache b/admin/tmpl/pages/rendezvous.html.mustache
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/tmpl/pages/shop.html.mustache b/admin/tmpl/pages/shop.html.mustache
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/tmpl/pages/websites.html.mustache b/admin/tmpl/pages/websites.html.mustache
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/admin/upload.php b/admin/upload.php
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/dev/appicons.json b/dev/appicons.json
new file mode 100644 (file)
index 0000000..31497e4
--- /dev/null
@@ -0,0 +1 @@
+{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M256 80.171v153.6h768v-153.6h-768zM0 233.771h153.6v-153.6h-153.6v153.6zM256 592.171h768v-153.6h-768v153.6zM0 592.171h153.6v-153.6h-153.6v153.6zM256 950.571h768v-153.6h-768v153.6zM0 950.571h153.6v-153.6h-153.6v153.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a3_list"]},"attrs":[{}],"properties":{"order":60,"id":143,"name":"list","prevSize":32,"code":59648},"setIdx":0,"setId":1,"iconIdx":3},{"icon":{"paths":["M0 446.251h1024v216.661h-1024v-216.661z","M0 807.381h1023.659v216.619h-1023.659v-216.619z","M0 85.163h1024v216.661h-1024v-216.661z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a5_menu"]},"attrs":[{},{},{}],"properties":{"order":38,"id":141,"name":"menu","prevSize":32,"code":59649},"setIdx":0,"setId":1,"iconIdx":5},{"icon":{"paths":["M1024 1023.915l-1024 0.085v-428.672l153.6-0.171v275.243l718.421 0.768v-275.84l151.979-0.085z","M411.989 279.509v-279.509h192.512v279.509h211.456l-303.957 385.067-303.915-385.067z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a7_import"]},"attrs":[{},{}],"properties":{"order":65,"id":139,"name":"mport","prevSize":32,"code":59650},"setIdx":0,"setId":1,"iconIdx":7},{"icon":{"paths":["M1024 1023.915l-1024 0.085v-428.672l153.6-0.171v275.243l718.421 0.768v-275.84l151.979-0.085z","M411.989 385.067v279.509h192.512v-279.509h211.456l-303.957-385.067-303.915 385.067z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a9_export"]},"attrs":[{},{}],"properties":{"order":68,"id":137,"name":"export","prevSize":32,"code":59651},"setIdx":0,"setId":1,"iconIdx":9},{"icon":{"paths":["M896.896 395.648h-271.317v-271.275h-225.365v271.275h-271.317v225.408h271.317v271.275h225.365v-271.275h271.317z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a15_smallAdd"]},"attrs":[{}],"properties":{"order":19,"id":131,"name":"add","prevSize":32,"code":59652},"setIdx":0,"setId":1,"iconIdx":15},{"icon":{"paths":["M979.499 89.045h-267.179c0-27.051 5.205-89.045-51.925-89.045h-252.032c-56.789 0-52.139 61.995-52.139 89.045h-267.093c-29.355 0-44.501 61.995-44.501 89.003h979.371c0-26.965-15.147-89.003-44.501-89.003zM133.632 222.592l-2.347 745.387c0 30.933 27.179 56.021 60.715 56.021h683.989c33.579 0 60.757-25.088 60.757-55.979l-1.792-745.387h-801.323zM311.723 934.827h-89.045v-623.189h89.045v623.189zM489.771 934.827h-89.045v-623.189h89.003v623.189zM667.819 934.827h-89.045v-623.189h89.045v623.189zM845.909 934.827h-89.003v-623.189h89.003v623.189z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a25_trash"]},"attrs":[{}],"properties":{"order":17,"id":121,"name":"trash","prevSize":32,"code":59653},"setIdx":0,"setId":1,"iconIdx":25},{"icon":{"paths":["M704.768 157.141l-191.872 191.872-191.829-191.829-159.317 159.317 191.829 191.872-191.872 191.829 159.36 159.36 191.872-191.829 191.829 191.829 159.36-159.36-191.787-191.787 191.829-191.872z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a31_smallX"]},"attrs":[{}],"properties":{"order":20,"id":115,"name":"close","prevSize":32,"code":59654},"setIdx":0,"setId":1,"iconIdx":31},{"icon":{"paths":["M725.077 1024l-517.717-512.043 517.717-511.957 135.083 133.547-382.677 378.411 382.677 378.453-135.083 133.589z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a33_leftChevron"]},"attrs":[{}],"properties":{"order":21,"id":113,"name":"back","prevSize":32,"code":59655},"setIdx":0,"setId":1,"iconIdx":33},{"icon":{"paths":["M342.4 1024l-135.040-133.589 382.635-378.453-382.635-378.411 135.040-133.547 517.717 512-517.717 512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a35_rightChevron"]},"attrs":[{}],"properties":{"order":22,"id":111,"name":"next","prevSize":32,"code":59656},"setIdx":0,"setId":1,"iconIdx":35},{"icon":{"paths":["M593.323 356.821h430.677v296.661h-430.677v325.76l-593.323-468.309 593.323-468.267z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a37_leftArrow"]},"attrs":[{}],"properties":{"order":64,"id":109,"name":"back2","prevSize":32,"code":59657},"setIdx":0,"setId":1,"iconIdx":37},{"icon":{"paths":["M430.677 356.821h-430.677v296.661h430.677v325.76l593.323-468.309-593.323-468.267z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a39_rightArrow"]},"attrs":[{}],"properties":{"order":63,"id":107,"name":"next2","prevSize":32,"code":59658},"setIdx":0,"setId":1,"iconIdx":39},{"icon":{"paths":["M512 0c-282.325 0-512 229.675-512 512s229.675 512 512 512c282.325 0 512-229.675 512-512s-229.675-512-512-512zM825.216 860.544c2.219-4.437 2.347-7.509-0.469-8.704-21.973-9.515-43.605-18.688-65.109-28.032-21.461-9.429-42.325-18.603-62.507-27.477-20.267-8.917-38.315-16.768-54.101-23.68v-86.571c0-4.011 1.195-10.197 3.712-18.944 2.432-8.619 5.205-17.536 8.107-27.008 3.413-10.795 7.125-22.4 11.136-34.645 8.832-16.512 16.043-34.603 22.571-53.675 1.835 1.152 3.755 2.133 5.803 2.517 19.285 3.328 33.835-33.408 38.016-78.208 4.011-43.989 8.491-57.771-20.907-60.032 0-2.048 0.427-4.096 0.427-6.101 0-50.389-5.205-92.928-15.957-127.701-10.539-34.688-11.051-59.733-29.483-81.237-18.475-21.461-54.101-40.192-78.507-49.92-24.576-9.6-50.475-14.336-78.080-14.336-28.203 0-54.699 12.459-79.189 22.315-24.448 9.941-63.744 20.224-81.963 41.941-18.261 21.76-14.507 47.787-25.131 82.347-10.325 33.749-12.715 83.584-12.715 132.523-0.555 0-0.896 0-1.323 0-30.933 1.92-26.155 15.531-22.059 60.245 4.181 44.8 18.688 81.493 37.973 78.123 1.92-0.384 3.669-1.237 5.376-2.304 6.741 20.139 14.251 39.125 23.552 56.32 3.797 11.307 7.339 22.059 10.325 31.787 2.475 8.363 4.821 16.64 6.997 24.747 2.176 8.277 3.883 14.251 4.779 18.176v84.437c-15.275 6.912-32.939 14.805-53.291 23.765-20.224 8.832-41.685 18.091-64.427 28.032-22.571 9.899-45.483 19.712-68.395 29.611-1.024 0.469-1.621 1.237-2.176 2.005-89.472-85.461-145.536-205.611-145.536-338.859 0-258.773 210.56-469.333 469.333-469.333s469.333 210.56 469.333 469.333c0 138.368-60.544 262.528-156.117 348.544z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a44_contactOutline"]},"attrs":[{}],"properties":{"order":25,"id":102,"name":"user","prevSize":32,"code":59659},"setIdx":0,"setId":1,"iconIdx":44},{"icon":{"paths":["M512 0c-282.325 0-512 229.675-512 512s229.675 512 512 512c282.325 0 512-229.717 512-512s-229.675-512-512-512zM512 42.667c258.773 0 469.333 210.56 469.333 469.333 0 70.869-16.256 137.856-44.501 198.187-5.973-2.645-12.032-5.291-17.792-7.851-10.496-4.565-19.84-8.661-28.075-12.331v-44.971c0-2.091 0.683-5.333 1.92-9.813s2.645-9.173 4.267-14.123c1.749-5.547 3.669-11.563 5.76-17.963 4.565-8.576 8.32-18.048 11.733-27.861 0.896 0.64 2.005 1.067 2.987 1.28 10.069 1.664 17.579-17.323 19.755-40.619 2.091-22.912 4.48-30.037-10.837-31.189 0-1.109 0.171-2.133 0.171-3.243 0-26.112-2.645-48.256-8.235-66.347-5.504-18.091-5.76-31.104-15.317-42.197-9.685-11.179-28.16-20.864-40.832-25.899-12.757-4.992-26.155-7.509-40.576-7.509-14.677 0-28.501 6.4-41.173 11.605-12.672 5.163-33.067 10.496-42.496 21.803-9.6 11.307-7.68 24.789-13.099 42.752-5.419 17.621-6.656 43.52-6.656 68.907-0.256 0-0.427 0-0.683 0-6.4 0.427-9.771 1.877-11.52 4.821 2.731 4.736 1.579 13.312 0.256 27.605 2.176 22.699 9.685 41.173 19.499 39.509 0.896-0.213 1.92-0.64 2.731-1.195 3.499 10.411 7.424 20.437 12.245 29.312 2.091 5.931 3.84 11.477 5.419 16.469 1.237 4.437 2.517 8.661 3.669 12.971 1.152 4.267 2.005 7.339 2.517 9.429v43.904c-8.021 3.541-17.152 7.637-27.733 12.288-10.496 4.565-21.589 9.472-33.493 14.592-5.589 2.475-11.179 4.907-16.768 7.253 3.584 1.579 7.083 3.157 11.093 4.864 11.819 5.248 23.936 10.581 36.48 16.043 12.587 5.504 25.259 10.88 38.101 16.427 12.843 5.504 25.088 10.581 36.651 15.403 11.52 4.693 21.845 8.96 31.104 12.8 9.259 3.755 16.683 6.571 22.485 8.533 5.76 2.091 12.928 10.411 19.371 19.499-4.907 5.803-10.155 11.307-15.317 16.853-0.171-0.171-0.213-0.384-0.384-0.555-8.021-9.515-18.517-16.512-31.403-21.12-6.187-2.133-14.165-5.248-24.064-9.216-9.899-4.096-20.992-8.661-33.323-13.696-12.331-5.12-25.429-10.539-39.083-16.427-13.739-5.973-27.349-11.691-40.661-17.536-13.483-5.931-26.496-11.605-39.168-17.152-12.587-5.589-23.936-10.496-33.749-14.848v-54.144c0-2.475 0.683-6.357 2.347-11.861 1.493-5.333 3.243-10.965 5.077-16.896 2.091-6.741 4.437-13.952 6.912-21.717 5.504-10.24 9.984-21.589 14.080-33.493 1.152 0.768 2.347 1.28 3.669 1.579 12.075 2.048 21.163-20.864 23.68-48.896 2.603-27.52 5.419-36.139-13.013-37.547 0-1.323 0.256-2.56 0.256-3.883 0-31.403-3.243-58.069-9.899-79.787-6.571-21.717-6.912-37.376-18.517-50.731-11.563-13.44-33.835-25.173-49.067-31.189-15.317-6.016-31.573-9.003-48.811-9.003-17.621 0-34.219 7.765-49.451 13.909-15.317 6.229-39.936 12.672-51.285 26.283-11.52 13.568-9.173 29.781-15.787 51.413-6.528 21.077-8.021 52.309-8.021 82.816-0.299 0-0.512 0-0.768 0-19.371 1.237-16.384 9.728-13.781 37.717 2.56 27.947 11.648 50.944 23.68 48.853 1.195-0.213 2.304-0.811 3.371-1.408 4.181 12.544 8.917 24.448 14.677 35.2 2.517 7.040 4.608 13.739 6.485 19.84 1.536 5.291 2.987 10.411 4.437 15.531 1.323 5.12 2.475 8.875 2.987 11.349v52.736c-9.6 4.352-20.608 9.301-33.365 14.848-12.629 5.547-26.027 11.349-40.235 17.579-14.123 6.229-28.416 12.331-42.752 18.517-14.379 6.187-27.989 12.032-41.003 17.323-12.928 5.419-24.619 10.155-35.072 14.336-10.539 4.224-19.029 7.424-25.557 9.557-12.672 4.608-22.912 11.605-30.976 21.12-4.651 5.376-8.576 10.923-12.075 16.512-7.381-7.211-14.336-14.848-21.291-22.528 7.595-7.936 15.317-14.805 20.309-16.683 6.059-1.92 14.037-4.864 23.808-8.832 9.771-3.883 20.779-8.363 32.896-13.312 12.117-4.992 24.875-10.453 38.272-16.299 13.44-5.717 26.795-11.52 40.021-17.323 13.312-5.76 25.771-11.179 37.675-16.427 1.493-0.64 2.731-1.195 4.267-1.877-5.376-2.304-10.795-4.651-16.171-6.955-11.179-4.907-22.016-9.643-32.555-14.208-10.496-4.693-19.84-8.789-28.075-12.331v-45.013c0-2.048 0.64-5.291 1.963-9.813 1.237-4.437 2.645-9.173 4.267-14.123 1.749-5.547 3.712-11.605 5.717-17.92 4.608-8.576 8.363-18.133 11.733-27.904 0.981 0.64 1.963 1.109 3.029 1.237 10.069 1.707 17.579-17.365 19.712-40.619 2.133-22.869 4.48-29.995-10.795-31.189 0-1.067 0.213-2.091 0.213-3.157 0-26.112-2.773-48.341-8.277-66.389-5.547-18.091-5.76-31.061-15.317-42.197-9.643-11.264-28.16-20.949-40.875-26.027-12.715-4.992-26.197-7.467-40.576-7.467-14.635 0-28.416 6.4-41.131 11.563s-33.152 10.496-42.539 21.845c-9.515 11.307-7.637 24.789-13.141 42.795-5.376 17.536-6.571 43.477-6.613 68.907-0.171 0-0.427-0.043-0.64 0-16.085 0.981-13.611 8.021-11.477 31.275s9.685 42.325 19.712 40.576c0.981-0.128 1.877-0.64 2.773-1.152 3.499 10.453 7.424 20.395 12.203 29.312 2.048 5.845 3.883 11.435 5.419 16.469 1.237 4.437 2.475 8.704 3.627 12.928 1.109 4.309 1.963 7.424 2.475 9.472v43.861c-7.936 3.627-17.109 7.723-27.691 12.331-7.851 3.413-16.469 7.211-25.045 10.965-31.744-63.232-50.048-134.315-50.048-209.707 0-258.816 210.56-469.333 469.333-469.333z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a46_contactsOutline"]},"attrs":[{}],"properties":{"order":26,"id":100,"name":"usergroup","prevSize":32,"code":59660},"setIdx":0,"setId":1,"iconIdx":46},{"icon":{"paths":["M551.509 862.848l110.677 102.997 264.149-268.416-110.592-102.997-264.235 268.416zM1008.811 548.693l-41.984-39.083c-19.669-18.261-50.517-17.493-69.163 1.536l-52.736 54.059 112.853 105.003 52.736-53.931c18.603-19.072 17.877-49.323-1.707-67.584zM496.555 1024l138.325-29.952-108.331-100.779-29.995 130.731z","M755.883 581.12l-137.344-57.259 0.171-0.128v-70.827c0-3.285 0.981-8.405 3.072-15.616 2.005-7.083 4.267-14.507 6.656-22.272 2.816-8.875 5.931-18.432 9.173-28.587 7.253-13.568 13.269-28.544 18.603-44.203 1.579 0.939 3.157 1.749 4.821 2.005 15.829 2.731 27.819-27.52 31.232-64.427 3.328-36.309 7.083-47.616-17.152-49.536 0-1.707 0.341-3.285 0.341-5.035 0-41.515-4.352-76.629-13.099-105.301-8.832-28.672-9.173-49.28-24.405-66.944-15.232-17.707-44.587-33.152-64.811-41.131-20.139-7.893-41.515-11.861-64.256-11.861-23.253 0-45.141 10.24-65.28 18.389-20.181 8.235-52.608 16.725-67.627 34.645-15.061 17.877-11.947 39.339-20.693 67.84-8.576 27.861-10.496 68.992-10.496 109.312-0.384 0-0.683 0-1.024 0-25.557 1.621-21.589 12.757-18.219 49.707 3.456 36.864 15.36 67.157 31.275 64.341 1.579-0.256 3.072-1.024 4.48-1.877 5.504 16.555 11.733 32.341 19.371 46.464 3.243 9.344 6.101 18.176 8.576 26.197 2.005 6.955 3.925 13.739 5.803 20.437 1.749 6.827 3.157 11.733 3.925 14.976v69.589c-12.587 5.717-27.179 12.16-43.947 19.541-16.683 7.339-34.347 14.976-53.163 23.211-18.603 8.107-37.461 16.256-56.363 24.363-18.944 8.235-36.949 15.872-54.101 22.997-17.067 6.997-32.512 13.355-46.336 18.816-13.824 5.589-25.003 9.771-33.621 12.501-16.683 6.187-30.251 15.403-40.832 27.861-10.581 12.373-18.987 25.045-25.045 38.101-7.339 15.104-12.8 31.019-16.469 47.616v77.525h478.507l248.277-251.435z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a47_account"]},"attrs":[{},{}],"properties":{"order":49,"id":99,"name":"edituser","prevSize":32,"code":59661},"setIdx":0,"setId":1,"iconIdx":47},{"icon":{"paths":["M1004.032 673.835h-23.979c-10.965 0-22.699-8.661-25.941-19.157l-13.781-33.493c-5.12-9.6-3.029-23.979 4.693-31.659l17.024-17.067c7.851-7.765 7.851-20.48 0-28.245l-28.288-28.331c-7.808-7.765-20.48-7.765-28.331 0l-17.024 16.981c-7.723 7.851-22.101 9.899-31.744 4.736l-33.451-13.824c-10.411-3.243-19.115-14.933-19.115-25.899v-23.979c0-11.008-8.96-20.011-19.968-20.011h-40.021c-10.965 0-20.011 9.003-20.011 20.011v23.979c0 11.008-8.619 22.656-19.029 25.899l-33.536 13.824c-9.771 5.163-23.979 3.072-31.829-4.736l-17.024-16.981c-7.765-7.765-20.437-7.765-28.288 0l-28.203 28.331c-7.893 7.723-7.893 20.48 0 28.245l16.896 17.067c7.851 7.68 9.984 22.101 4.736 31.659l-13.739 33.579c-3.285 10.581-14.976 19.072-25.941 19.072h-23.979c-11.008 0-20.053 9.003-20.053 20.011v40.021c0 11.008 9.045 20.011 20.053 20.011h23.979c11.008 0 22.656 8.576 25.899 19.072l13.781 33.493c5.163 9.771 3.072 24.064-4.736 31.829l-16.939 16.896c-7.851 7.851-7.851 20.565 0 28.416l28.245 28.16c7.851 7.851 20.523 7.851 28.288 0l17.024-16.981c7.765-7.765 22.101-9.813 31.701-4.651l33.579 13.824c10.411 3.243 19.029 14.933 19.029 25.984v23.936c0 10.923 9.045 19.925 20.011 19.925h40.021c11.008 0 19.968-9.003 19.968-19.925v-23.936c0-11.093 8.704-22.741 19.115-25.984l33.579-13.824c9.643-5.163 23.979-3.072 31.787 4.651l16.896 16.981c7.851 7.851 20.523 7.851 28.331 0l28.288-28.16c7.851-7.851 7.851-20.565 0-28.416l-17.024-16.896c-7.765-7.765-9.813-22.101-4.693-31.829l13.781-33.493c3.243-10.496 15.019-19.072 25.941-19.072h23.979c10.965 0 19.968-9.003 19.968-20.011v-40.021c0.043-11.008-8.96-20.011-19.925-20.011zM864.128 713.813c0 55.168-44.8 99.925-100.011 99.925-55.253 0-100.053-44.757-100.053-99.925 0-55.253 44.8-100.011 100.053-100.011 55.211 0.043 100.011 44.8 100.011 100.011z","M461.312 692.821c0-73.899 37.547-139.008 94.549-177.451l0.171-0.128v-66.773c0-3.072 0.939-7.936 2.901-14.72 1.877-6.656 4.011-13.653 6.272-21.035 2.645-8.363 5.589-17.408 8.619-26.965 6.869-12.8 12.501-26.923 17.536-41.685 1.493 0.896 2.944 1.664 4.523 1.877 15.019 2.603 26.283-25.899 29.44-60.757 3.157-34.261 6.699-44.928-16.171-46.72 0-1.579 0.341-3.115 0.341-4.736 0-39.125-4.053-72.277-12.416-99.328-8.192-27.008-8.576-46.464-22.955-63.104-14.379-16.683-42.027-31.232-61.099-38.784-18.901-7.467-39.083-11.179-60.587-11.179-21.931 0-42.539 9.643-61.568 17.365-18.987 7.68-49.579 15.701-63.744 32.64-14.208 16.896-11.264 37.12-19.541 64-8.021 26.283-9.856 65.024-9.899 103.040-0.341 0-0.64 0-0.939 0-24.107 1.536-20.352 12.075-17.152 46.933 3.285 34.773 14.507 63.317 29.483 60.672 1.451-0.213 2.859-0.939 4.224-1.749 5.163 15.616 11.051 30.464 18.219 43.819 3.072 8.789 5.76 17.109 8.064 24.704 1.877 6.528 3.712 12.971 5.461 19.328 1.664 6.4 2.987 11.093 3.712 14.123v65.621c-11.904 5.419-25.685 11.52-41.429 18.475-15.744 6.869-32.427 14.123-50.133 21.888-17.536 7.723-35.328 15.317-53.163 22.997-17.835 7.765-34.816 14.933-51.029 21.675-16.085 6.571-30.635 12.587-43.691 17.749-13.013 5.12-23.552 9.045-31.659 11.733-15.744 5.76-28.544 14.507-38.528 26.24-9.984 11.648-17.92 23.595-23.595 35.925-6.912 14.165-12.075 29.227-15.531 44.971v73.003h494.293c-20.779-32.896-32.981-71.808-32.981-113.664z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a49_administrator"]},"attrs":[{},{}],"properties":{"order":27,"id":97,"name":"userconfig","prevSize":32,"code":59662},"setIdx":0,"setId":1,"iconIdx":49},{"icon":{"paths":["M984.704 433.195h-47.232c-21.675 0-44.757-16.939-51.115-37.589l-27.136-65.963c-10.112-19.029-6.016-47.275 9.216-62.549l33.621-33.536c15.317-15.36 15.317-40.405 0-55.68l-55.808-55.68c-15.275-15.36-40.363-15.36-55.723 0l-33.579 33.493c-15.275 15.317-43.52 19.499-62.635 9.216l-65.792-27.093c-20.651-6.443-37.675-29.397-37.675-51.115v-47.275c0.043-21.675-17.707-39.424-39.381-39.424h-78.848c-21.589 0-39.339 17.749-39.339 39.424v47.189c0 21.717-16.939 44.672-37.589 51.115l-65.877 27.136c-19.2 10.283-47.275 6.144-62.635-9.259l-33.579-33.451c-15.275-15.36-40.32-15.36-55.723 0l-55.552 55.68c-15.445 15.232-15.445 40.32 0 55.68l33.323 33.536c15.36 15.275 19.627 43.52 9.301 62.549l-27.051 66.005c-6.528 20.736-29.44 37.589-51.157 37.589h-47.275c-21.675 0-39.467 17.749-39.467 39.381v78.763c0 21.675 17.792 39.339 39.467 39.339h47.232c21.717 0.128 44.629 17.067 51.072 37.76l27.179 65.92c10.197 19.243 6.101 47.403-9.301 62.677l-33.451 33.493c-15.36 15.317-15.36 40.32 0 55.851l55.637 55.509c15.403 15.403 40.448 15.403 55.723 0l33.579-33.493c15.275-15.232 43.477-19.328 62.421-9.173l66.091 27.264c20.651 6.4 37.589 29.397 37.589 51.157v47.104c0 21.675 17.749 39.253 39.339 39.253h78.848c21.675 0 39.424-17.579 39.424-39.253v-47.104c0-21.76 16.981-44.757 37.675-51.157l66.005-27.264c19.029-10.155 47.232-6.101 62.677 9.173l33.323 33.493c15.317 15.403 40.405 15.403 55.723 0l55.808-55.509c15.317-15.488 15.317-40.491 0-55.851l-33.621-33.493c-15.189-15.232-19.328-43.435-9.216-62.677l27.136-65.92c6.357-20.651 29.525-37.632 51.115-37.632h47.232c21.632 0 39.296-17.707 39.296-39.339v-78.891c0-21.632-17.664-39.381-39.296-39.381zM709.077 512c0 108.672-88.149 196.779-196.821 196.779-108.885 0-197.12-88.064-197.12-196.779 0-108.8 88.192-196.992 197.12-196.992 108.672-0.043 196.821 88.192 196.821 196.992z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a51_options"]},"attrs":[{}],"properties":{"order":62,"id":95,"name":"options","prevSize":32,"code":59663},"setIdx":0,"setId":1,"iconIdx":51},{"icon":{"paths":["M512.043 0c-282.795 0-512.043 229.248-512.043 512s229.248 512 512.043 512c282.709 0 511.957-229.248 511.957-512s-229.248-512-511.957-512zM504.277 172.8c38.613 0 68.523 28.971 68.523 67.541 0 36.693-29.909 67.584-69.504 67.584-35.712 0-67.584-30.891-67.584-67.584 0.043-38.571 31.915-67.541 68.565-67.541zM635.563 807.083h-247.125v-30.933c55.979-6.741 61.781-10.667 61.781-79.147v-191.147c0-63.744-6.741-66.603-53.12-74.325v-27.989c57.899-6.784 121.643-19.328 175.701-34.731v328.235c0 66.645 4.779 71.424 62.763 79.147v30.891z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a53_info"]},"attrs":[{}],"properties":{"order":23,"id":93,"name":"info","prevSize":32,"code":59664},"setIdx":0,"setId":1,"iconIdx":53},{"icon":{"paths":["M512.085 0c-282.752 0-511.915 229.163-511.915 512.043 0 282.581 229.163 511.957 511.915 511.957s511.915-229.376 511.915-511.957c0-282.88-229.163-512.043-511.915-512.043zM585.429 859.691h-139.648v-134.955h139.648v134.955zM718.635 466.432c-11.776 16.811-34.517 38.272-68.053 64.469l-32.981 25.685c-18.048 13.995-29.952 30.379-35.925 49.024-3.755 11.819-5.76 30.208-6.059 55.125h-126.592c1.835-52.608 6.869-88.917 14.848-109.013 8.107-20.096 28.885-43.264 62.421-69.419l34.005-26.624c11.179-8.405 20.224-17.621 27.051-27.563 12.331-17.109 18.603-35.968 18.603-56.533 0-23.68-6.912-45.184-20.651-64.64-13.867-19.456-39.125-29.269-75.733-29.269-36.053 0-61.568 11.989-76.672 35.968-15.061 23.979-22.613 48.896-22.613 74.709h-134.997c3.755-88.661 34.731-151.552 92.928-188.629 36.736-23.68 81.92-35.499 135.509-35.499 70.357 0 128.853 16.853 175.36 50.432 46.549 33.664 69.845 83.499 69.845 149.461 0 40.491-10.155 74.581-30.293 102.315z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a55_help"]},"attrs":[{}],"properties":{"order":24,"id":91,"name":"help","prevSize":32,"code":59665},"setIdx":0,"setId":1,"iconIdx":55},{"icon":{"paths":["M938.112 228.267h-937.6l333.184 523.819v271.915h245.376v-273.067z","M0 0h938.667v183.424h-938.667v-183.424z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a59_filter"]},"attrs":[{},{}],"properties":{"order":30,"id":87,"name":"filter","prevSize":32,"code":59666},"setIdx":0,"setId":1,"iconIdx":59},{"icon":{"paths":["M973.397 162.731h-922.837c-27.947 0-50.56 22.699-50.56 50.603v455.083c0 27.904 22.613 50.603 50.56 50.603h108.885v245.675h700.032v-245.675h113.963c27.861 0 50.56-22.656 50.56-50.603v-455.083c-0.043-27.904-22.699-50.603-50.603-50.603zM816.811 921.984h-614.699v-467.925h614.699v467.925z","M263.125 0h497.664v105.643h-497.664v-105.643z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a61_print"]},"attrs":[{},{}],"properties":{"order":29,"id":85,"name":"print","prevSize":32,"code":59667},"setIdx":0,"setId":1,"iconIdx":61},{"icon":{"paths":["M1024 818.944l-359.893-278.741 359.893-352.896z","M0 171.989l375.211 363.136-375.211 308.907z","M580.267 633.344c-21.333 21.035-69.12 21.035-98.603-6.997l-70.997-55.765-378.667 301.568 992-1.067-380.16-290.389-63.573 52.651z","M1005.227 147.243l-422.229 413.227c-28.075 24.149-73.771 24.149-102.101 0l-448.896-412.459 973.227-0.768z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a63_email"]},"attrs":[{},{},{},{}],"properties":{"order":28,"id":83,"name":"email","prevSize":32,"code":59668},"setIdx":0,"setId":1,"iconIdx":63},{"icon":{"paths":["M1024 738.603l-259.072-127.061c0 0-95.317 141.696-117.291 136.875-12.245-2.731-13.909-3.072-24.491-7.339-38.016-15.232-132.395-58.581-221.227-138.923l-0.725 0.853c-87.765-79.701-140.032-168.107-158.848-204.075-5.291-9.941-5.888-11.691-9.856-23.552-7.125-21.376 124.117-130.688 124.117-130.688l-152.96-244.693c0 0-202.795 15.744-203.648 217.515-1.109 275.328 239.403 501.589 239.403 501.589 130.816 119.979 325.803 272.683 589.056 244.48 200.661-21.504 195.541-224.981 195.541-224.981z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a65_phone"]},"attrs":[{}],"properties":{"order":53,"id":81,"name":"phone","prevSize":32,"code":59669},"setIdx":0,"setId":1,"iconIdx":65},{"icon":{"paths":["M726.955 780.971c0 49.365-40.149 89.429-89.557 89.429h-547.968c-49.408-0.043-89.429-40.064-89.429-89.429v-530.603c0-49.365 40.021-89.472 89.429-89.472h547.968c49.365 0 89.557 40.107 89.557 89.472v530.603z","M786.389 356.949v334.848l237.611 183.723v-702.251z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a67_video"]},"attrs":[{},{}],"properties":{"order":55,"id":79,"name":"video","prevSize":32,"code":59670},"setIdx":0,"setId":1,"iconIdx":67},{"icon":{"paths":["M512.043 0c-282.709 0-512.043 229.248-512.043 512s229.291 512 512 512c282.709 0 512-229.248 512-512s-229.248-512-511.957-512zM470.229 584.192c0 0-158.677-36.693-189.568-98.603-62.208-124.715-69.589-100.608-77.227-139.221-7.893-38.656 3.797-117.973 3.797-117.973s-1.92 15.488 75.307-84.992c54.997-71.296 183.509-45.909 228.181-30.891 18.517 6.101-79.189 0-83.2 52.224-3.797 52.096 7.893 44.501 52.309 56.021 44.587 11.52 42.581-90.965 42.581-90.965l67.627 40.619 25.216 25.216c0 0 6.997 62.635-15.616 90.88-25.771 32.384-60.416 32.085-65.579 88.875-3.84 41.515 3.797 110.208 3.797 110.208s-8.789 11.392-21.291 1.877c-17.707-13.397-36.608-36.48-50.219-63.744-23.168-46.464-90.88-13.525-92.8-7.765-37.376 112.256 98.603 135.296 98.603 135.296l-1.92 32.939zM530.048 970.923c7.808-30.933 85.205-100.608 69.589-131.499-15.36-30.933-46.293-30.933-77.227-54.187-31.019-23.168-33.579-95.317 15.403-139.179 46.507-41.6 100.608-46.379 100.608-46.379s100.48 30.891 131.371 38.571c31.019 7.808 100.608-15.36 100.608 38.699 0.043 201.259-347.989 324.949-340.352 293.973z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a69_url"]},"attrs":[{}],"properties":{"order":61,"id":77,"name":"website","prevSize":32,"code":59671},"setIdx":0,"setId":1,"iconIdx":69},{"icon":{"paths":["M107.093 711.125l214.827 199.979 512.683-520.96-214.699-199.893-512.811 520.875zM994.603 101.589l-81.664-75.947c-38.059-35.413-98.091-33.963-134.229 3.029l-102.357 104.875 219.136 203.819 102.229-104.704c36.224-37.12 34.816-95.787-3.115-131.072zM0.299 1024l268.459-58.24-210.133-195.584-58.325 253.824z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a71_edit"]},"attrs":[{}],"properties":{"order":37,"id":75,"name":"edit","prevSize":32,"code":59672},"setIdx":0,"setId":1,"iconIdx":71},{"icon":{"paths":["M940.459 348.501h-344.96v-344.917z","M496.555 646.485c-13.995 0-22.997 1.237-28.331 2.432v180.907c5.333 1.28 13.952 1.28 21.717 1.28 56.661 0.384 93.525-30.805 93.525-96.853 0.512-57.429-33.152-87.765-86.912-87.765z","M254.805 645.675c-12.715 0-21.376 1.195-25.899 2.432v81.707c5.333 1.152 11.904 1.621 20.949 1.621 33.237 0 53.717-16.853 53.717-45.184-0.043-25.429-17.664-40.576-48.768-40.576z","M506.624 425.771v-425.771h-428.416v1024h862.251l1.408-598.229h-435.243zM340.096 750.251c-21.333 20.139-52.907 29.141-89.813 29.141-8.192 0-15.616-0.384-21.376-1.237v98.859h-61.909v-272.811c19.328-3.285 46.336-5.76 84.48-5.76 38.528 0 66.091 7.424 84.48 22.229 17.707 13.909 29.525 36.864 29.525 63.957s-8.96 50.048-25.387 65.621zM604.075 844.203c-29.227 24.192-73.515 35.712-127.659 35.712-32.384 0-55.381-2.048-70.955-4.139v-271.573c22.912-3.712 52.864-5.76 84.437-5.76 52.48 0 86.656 9.472 113.28 29.568 28.715 21.291 46.763 55.339 46.763 104.192 0 52.949-19.328 89.429-45.867 112zM860.245 651.733h-106.24v63.189h99.243v50.901h-99.243v111.104h-62.763v-276.48h169.003v51.285z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a77_PDF"]},"attrs":[{},{},{},{}],"properties":{"order":31,"id":69,"name":"pdf","prevSize":32,"code":59673},"setIdx":0,"setId":1,"iconIdx":77},{"icon":{"paths":["M5.461 0h1018.539v170.325h-1018.539v-170.325z","M276.779 275.669h747.221v170.325h-747.221v-170.325z","M277.035 559.531h746.965v170.283h-746.965v-170.283z","M7.125 836.352h1016.875v170.325h-1016.875v-170.325z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a81_report"]},"attrs":[{},{},{},{}],"properties":{"order":47,"id":65,"name":"categories","prevSize":32,"code":59674},"setIdx":0,"setId":1,"iconIdx":81},{"icon":{"paths":["M169.813 169.728l598.997 0.811-1.408-170.539h-767.403v767.403h169.813z","M224.64 224.64v799.36h799.36v-799.36h-799.36zM928.896 670.251h-258.645v258.603h-85.333v-258.603h-258.603v-85.333h258.603v-258.645h85.333v258.645h258.645v85.333z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a87_duplicate"]},"attrs":[{},{}],"properties":{"order":32,"id":59,"name":"duplicate","prevSize":32,"code":59675},"setIdx":0,"setId":1,"iconIdx":87},{"icon":{"paths":["M1024 886.016l-275.499-275.499c89.685-152.917 67.328-355.541-66.731-489.6-158.336-158.464-413.056-161.536-567.765-6.827-154.624 154.624-151.595 409.344 6.827 567.808 137.984 137.899 348.8 157.909 503.083 58.88l271.829 273.493 128.256-128.256zM205.525 597.248c-110.507-110.677-112.683-288.469-4.736-396.416 107.904-107.989 285.824-105.813 396.373 4.736 110.507 110.507 112.683 288.384 4.651 396.288-107.947 108.032-285.653 105.856-396.288-4.608z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a89_find"]},"attrs":[{}],"properties":{"order":58,"id":57,"name":"search","prevSize":32,"code":59676},"setIdx":0,"setId":1,"iconIdx":89},{"icon":{"paths":["M0 88.832v834.389h1024v-834.389h-1024zM296.96 214.229c70.571 0 127.701 57.173 127.701 127.701s-57.131 127.744-127.701 127.744c-70.443 0-127.659-57.173-127.659-127.744s57.216-127.701 127.659-127.701zM100.437 812.331l241.024-226.987 82.133 16.896 120.533-98.261 82.091 111.872 153.344-213.419 153.6 409.941h-832.725z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a91_image"]},"attrs":[{}],"properties":{"order":57,"id":55,"name":"image","prevSize":32,"code":59677},"setIdx":0,"setId":1,"iconIdx":91},{"icon":{"paths":["M907.563 0l-578.432 171.989v586.539c-38.528-13.44-86.101-13.781-133.248 2.859-90.88 32.085-144.853 114.005-120.533 182.997 24.32 68.907 117.76 98.816 208.683 66.688 73.941-26.069 122.667-85.035 125.483-143.232h0.256v-5.931c0-3.072 0.299-6.144 0-9.216v-508.544l416.939-123.989v404.864c-38.613-13.696-86.4-14.165-133.888 2.603-90.923 32.085-144.896 114.005-120.533 182.955 24.32 68.949 117.717 98.859 208.725 66.773 74.155-26.24 123.008-85.675 125.44-144.085h0.981v-733.269z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a93_music"]},"attrs":[{}],"properties":{"order":36,"id":53,"name":"music","prevSize":32,"code":59678},"setIdx":0,"setId":1,"iconIdx":93},{"icon":{"paths":["M507.349 0c-206.592 0-374.016 167.424-374.016 374.016 0 206.549 374.016 649.984 374.016 649.984s374.016-443.435 374.016-649.984c0-206.592-167.424-374.016-374.016-374.016zM510.635 565.248c-102.827 0-186.112-83.413-186.112-186.24s83.285-186.155 186.112-186.155c102.869 0 186.24 83.371 186.24 186.155 0 102.827-83.371 186.24-186.24 186.24z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a97_location"]},"attrs":[{}],"properties":{"order":34,"id":49,"name":"location","prevSize":32,"code":59679},"setIdx":0,"setId":1,"iconIdx":97},{"icon":{"paths":["M512 405.888c-84.779 0-153.771 69.035-153.771 153.771 0 84.907 68.992 153.899 153.771 153.899 84.821 0 153.899-68.992 153.899-153.899 0-84.736-69.077-153.771-153.899-153.771z","M913.237 206.208h-138.325v-9.131c0-40.789-32.981-73.856-73.813-73.856h-378.197c-40.747 0-73.813 33.109-73.813 73.856v9.131h-138.368c-61.056 0-110.72 49.579-110.72 110.763v467.029c0 61.056 49.664 110.677 110.72 110.677h802.56c61.184 0 110.763-49.621 110.763-110.677v-467.029c-0.043-61.184-49.621-110.763-110.805-110.763zM512 797.995c-131.371 0-238.165-106.965-238.165-238.336 0-131.328 106.795-238.208 238.165-238.208 131.413 0 238.251 106.88 238.251 238.208 0 131.371-106.837 238.336-238.251 238.336z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a101_camera"]},"attrs":[{},{}],"properties":{"order":59,"id":45,"name":"camera","prevSize":32,"code":59680},"setIdx":0,"setId":1,"iconIdx":101},{"icon":{"paths":["M1024 653.44l-108.971-210.859-206.208 106.581 120.277 38.869c-37.803 144.64-169.088 251.861-325.419 251.861-101.248 0-196.139-44.971-260.437-123.307l-69.376 56.96c81.408 99.243 201.643 156.117 329.813 156.117 191.019 0 356.309-132.608 410.453-306.048l109.867 29.824z","M194.859 441.472c37.717-144.597 169.045-251.819 325.376-251.819 101.205 0 196.139 44.928 260.437 123.307l69.419-56.96c-81.408-99.243-201.643-156.117-329.813-156.117-190.976 0-352.725 135.296-406.912 308.651l-113.365-32.427 108.971 210.859 206.165-106.581-120.277-38.912z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a125_sync"]},"attrs":[{},{}],"properties":{"order":44,"id":21,"name":"sync","prevSize":32,"code":59681},"setIdx":0,"setId":1,"iconIdx":125},{"icon":{"paths":["M429.099 89.259h165.803v194.688h-165.803v-194.688z","M679.552 219.52v140.501h-331.733v-140.501h-347.819v722.261h1024v-722.261h-344.448zM454.699 806.997h-352.469v-332.544h352.469v332.544zM928.597 801.408h-378.795v-86.485h378.795v86.485zM928.597 561.92h-378.795v-86.528h378.795v86.528z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a129_badge"]},"attrs":[{},{}],"properties":{"order":69,"id":17,"name":"badge","prevSize":32,"code":59682},"setIdx":0,"setId":1,"iconIdx":129},{"icon":{"paths":["M225.963 88.704l-208.853-46.037-17.109 77.611 164.693 36.309 200.448 647.723h643.243v-79.573h-585.856z","M514.645 939.819c0 46.492-37.689 84.181-84.181 84.181s-84.181-37.689-84.181-84.181c0-46.492 37.689-84.181 84.181-84.181s84.181 37.689 84.181 84.181z","M979.371 939.819c0 46.492-37.689 84.181-84.181 84.181s-84.181-37.689-84.181-84.181c0-46.492 37.689-84.181 84.181-84.181s84.181 37.689 84.181 84.181z","M976.853 643.371l47.147-415.829h-653.355l117.76 415.829z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a133_cart"]},"attrs":[{},{},{},{}],"properties":{"order":33,"id":13,"name":"cart","prevSize":32,"code":59683},"setIdx":0,"setId":1,"iconIdx":133},{"icon":{"paths":["M876.885 569.003v408.491h-249.515v-308.139h-236.757v308.139h-252.416v-408.491l369.707-397.312z","M1024 552.448l-512.981-552.448-194.048 208.299v-72.192c0-4.523-3.413-8.149-7.595-8.149h-106.411c-4.224 0-7.595 3.584-7.595 8.149l0.299 202.581-195.669 210.176 33.024 35.499 477.952-513.365 480.085 516.821 32.939-35.371z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a135_home"]},"attrs":[{},{}],"properties":{"order":40,"id":11,"name":"home","prevSize":32,"code":59684},"setIdx":0,"setId":1,"iconIdx":135},{"icon":{"paths":["M1001.173 785.877l-384.981-666.88c-26.709-46.293-63.659-71.808-104.021-71.808s-77.312 25.472-104.064 71.765l-385.024 666.923c-26.709 46.293-30.336 91.051-10.155 125.952 20.181 34.944 60.715 54.229 114.176 54.229h770.048c53.461 0 93.995-19.243 114.176-54.187 20.139-34.944 16.555-79.701-10.155-125.995zM514.645 880.597c-35.797 0-64.768-28.971-64.768-64.811 0-35.669 28.971-64.683 64.768-64.683 35.755 0 64.768 29.013 64.768 64.683-0.043 35.84-29.056 64.811-64.768 64.811zM604.459 311.467c0 0-35.712 354.901-35.712 355.456l-0.043 0.555h-0.043c-1.28 26.155-25.557 47.061-55.424 47.061-30.848 0-55.765-22.101-55.765-49.195 0-0.811-33.536-353.92-33.536-353.92v-0.128c0-49.835 40.363-90.283 90.24-90.283 49.792 0 90.24 40.448 90.24 90.283 0.043 0.085 0.043 0.128 0.043 0.171z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a141_alert"]},"attrs":[{}],"properties":{"order":39,"id":5,"name":"alert","prevSize":32,"code":59685},"setIdx":0,"setId":1,"iconIdx":141},{"icon":{"paths":["M899.755 172.203c0 95.105-176.87 172.203-395.051 172.203s-395.051-77.098-395.051-172.203c0-95.105 176.87-172.203 395.051-172.203s395.051 77.098 395.051 172.203z","M899.328 239.061h-0.085c0-0.341 0.085-0.725 0.085-0.981 0-1.493-0.341-2.944-0.427-4.395-15.019 89.088-185.259 159.488-393.643 159.488-214.741 0-389.077-74.709-394.539-167.723-0.64 4.181-0.725 17.877-0.512 20.608v150.827c-0.128 1.835-0.597 3.499-0.597 5.419 0 95.061 176.896 172.117 395.051 172.117 215.936 0 391.083-75.52 394.667-169.301v-0.043c0-0.853 0.341-1.835 0.341-2.731 0-0.981-0.341-1.963-0.341-2.901v-160.384z","M899.328 462.421h-0.085c0-0.299 0.085-0.683 0.085-0.981 0-1.451-0.341-2.944-0.427-4.395-15.019 89.088-185.259 159.488-393.685 159.488-214.699 0-389.035-74.667-394.496-167.68-0.64 4.181-0.768 17.877-0.555 20.565v150.827c-0.085 1.835-0.597 3.584-0.597 5.419 0 95.104 176.896 172.245 395.051 172.245 215.893 0 391.125-75.648 394.667-169.429v0c0-0.896 0.341-1.92 0.341-2.816 0-0.981-0.341-1.92-0.341-2.816v-160.427z","M899.328 688.512h-0.085c0-0.256 0.085-0.683 0.085-0.981 0-1.408-0.341-2.901-0.427-4.437-15.019 89.173-185.259 159.488-393.643 159.488-214.741 0-389.035-74.667-394.539-167.68-0.64 4.181-0.768 17.92-0.512 20.565v150.912c-0.128 1.749-0.597 3.499-0.597 5.333 0 95.104 176.896 172.245 395.051 172.245 215.893 0 391.125-75.563 394.667-169.344v-0.085c0-0.896 0.427-1.92 0.427-2.816s-0.427-1.835-0.427-2.816v-160.384z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["a145_host"]},"attrs":[{},{},{},{}],"properties":{"order":42,"id":1,"name":"dataset","prevSize":32,"code":59686},"setIdx":0,"setId":1,"iconIdx":145},{"icon":{"paths":["M388.095 0h247.869v388.114h388.114v247.869h-388.114v388.075h-247.869v-388.075h-388.095v-247.869h388.095z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Add_New"]},"attrs":[{}],"properties":{"order":9,"id":750,"name":"new","prevSize":32,"code":59687},"setIdx":1,"setId":0,"iconIdx":4},{"icon":{"paths":["M200.571 796.931c-65.7 20.885-113.75 73.848-130.451 94.215 0.202-3.96-6.842 8.705-6.842 8.705s2.706-3.609 6.842-8.705c-0.062 1.554-1.135 5.38-4.261 13.7-11.29 29.974 23.636 29.205 23.636 29.205 99.024-16.106 111.076-137.121 111.076-137.121zM767.851 694.951c-18.402-0.001-29.754 1.181-29.754 1.181 105.384 92.26 203.398 70.757 203.398 70.757 40.12-5.38-21.102-42.521-21.102-42.521-56.586-25.098-117.411-29.415-152.542-29.417zM407.732 445.851c0 0-38.052 198.070-85.604 256.815l263.733-42.154c0 0-131.431-126.545-178.128-214.661zM413.841 80.012c-0.327-0.031-0.655-0.025-0.984 0.018-2.95 0.391-5.989 3.865-8.935 12.118 0 0-14.213 73.113 21.382 194.629 0 0 30.308-96.404 7.495-170.219 0-0-8.827-35.592-18.958-36.546zM380.637 0.017c28.069-1.161 53.374 56.91 53.374 56.91 78.685 180.728 4.276 296.195 4.276 296.195 77.907 197.402 234.047 302.811 234.047 302.811 151.708-8.755 262.38 32.43 262.38 32.43 87.066 49.221 57.909 95.201 57.909 95.201-91.233 109.402-359.227-61.184-359.227-61.184l-345.434 62.554c-49.916 183.551-216.724 226.674-216.724 226.674-79.509 12.464-68.639-76.672-68.639-76.672 62.061-146.761 218.123-180.527 218.123-180.527 61.47-70.59 161.941-402.39 161.941-402.39-101.512-245.186-30.183-326.754-30.183-326.754 9.136-17.894 18.799-24.862 28.156-25.249z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Adobe_Acrobat"]},"attrs":[{}],"properties":{"order":13,"id":749,"name":"acrobat","prevSize":32,"code":59688},"setIdx":1,"setId":0,"iconIdx":5},{"icon":{"paths":["M167.399 677.842h323.415c0 0 5.916 31.909 7.353 37.842h-330.768c-8.671 0-15.672-7.017-15.672-15.688v-6.483c0-8.652 7.001-15.67 15.672-15.67zM166.669 556.899h286.113c0.132 1.774 0.017 3.559-0.635 5.28l-12.548 32.574h-272.93c-8.657 0-15.674-7.020-15.674-15.692v-6.469c0-8.674 7.018-15.694 15.674-15.694zM164.498 438.164h277.904l3.993 8.972c1.888 4.295 0.969 9.356-2.323 12.716l-16.156 16.154h-263.419c-8.654 0-15.671-7.016-15.671-15.687v-6.482c0-8.653 7.018-15.672 15.671-15.672zM742.87 333.929c-99.615 0-180.35 80.744-180.35 180.355 0 99.603 80.734 180.406 180.35 180.406 99.632 0 180.386-80.803 180.386-180.406 0-99.611-80.754-180.355-180.386-180.355zM163.987 320.635h326.827v33.951c0 1.354-0.266 2.641-0.701 3.878h-326.127c-8.672 0-15.674-7.018-15.674-15.674v-6.483c0-8.672 7.001-15.672 15.674-15.672zM742.875 236.316c3.759 0 7.519 1.433 10.393 4.299l28.972 28.939c3.14 3.158 7.869 4.042 11.913 2.239l37.526-16.592c7.435-3.325 16.073 0.082 19.366 7.485l19.533 44.028c1.802 4.042 5.862 6.7 10.325 6.7h48.152c8.106 0 14.672 6.549 14.672 14.686v41.002c0 4.444 2.755 8.405 6.865 9.992l38.264 14.768c7.585 2.91 11.36 11.448 8.437 18.999l-17.345 44.912c-1.619 4.176-0.617 8.922 2.541 12.079l34.069 34.019c5.747 5.749 5.747 15.071 0 20.819l-29.005 28.972c-3.109 3.108-4.010 7.853-2.206 11.897l16.592 37.477c3.291 7.47-0.050 16.124-7.486 19.415l-43.993 19.515c-4.077 1.805-6.732 5.884-6.732 10.343v48.088c0 8.152-6.566 14.753-14.672 14.753h-1.653l94.603 227.368c2.038 4.911-2.941 9.792-7.803 7.617l-110.426-48.72c-3.726-1.637-8.021 0.099-9.523 3.827l-45.115 109.69c-2.054 5.047-9.154 5.047-11.261 0.050l-91.812-220.185c-0.382-0.984-0.484-2.036-0.717-3.005-1.989 0.284-3.96 0.25-5.933-0.235l-91.844 220.601c-2.089 4.981-9.207 4.981-11.245-0.032l-45.129-109.69c-1.537-3.71-5.833-5.514-9.557-3.845l-110.424 48.722c-4.88 2.155-9.843-2.723-7.822-7.6l93.452-224.563h-0.135c-8.103 0-14.687-6.601-14.687-14.753v-40.97c0-4.428-2.738-8.422-6.866-9.974l-38.228-14.786c-7.602-2.909-11.363-11.43-8.454-18.981l17.327-44.947c1.586-4.159 0.583-8.871-2.559-12.029l-34.051-34.019c-5.714-5.747-5.714-15.070 0-20.819l29.040-29.006c3.090-3.125 3.959-7.903 2.188-11.913l-16.624-37.493c-3.276-7.403 0.049-16.108 7.467-19.415l44.060-19.465c4.078-1.805 6.7-5.848 6.7-10.311v-48.17c0-8.137 6.584-14.686 14.687-14.686h41.002c4.396 0 8.39-2.742 9.96-6.884l14.767-38.246c2.924-7.552 11.447-11.328 19.031-8.42l44.93 17.309c4.178 1.654 8.922 0.62 12.080-2.522l34.002-34.036c2.874-2.866 6.633-4.299 10.392-4.299zM163.837 188.247h206.951c8.672 0 15.689 6.999 15.689 15.672v6.483c0 8.673-7.017 15.674-15.689 15.674h-206.951c-8.672 0-15.691-7.002-15.691-15.674v-6.483c0-8.673 7.019-15.672 15.691-15.672zM26.215 4.042h721.289c14.469 0 26.233 11.762 26.233 26.214v178.013l-15.84-15.805c-3.942-3.927-9.156-6.099-14.72-6.099s-10.778 2.172-14.72 6.081l-22.858 22.891v-122.357c0-11.462-9.34-20.785-20.819-20.785h-595.842c-11.462 0-20.784 9.323-20.784 20.785v752.636c-0 11.478 9.322 20.801 20.784 20.801h353.1l-28.353 68.155h-387.471c-14.452 0-26.215-11.765-26.215-26.233v-878.084c0-14.452 11.763-26.214 26.215-26.214z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Agreement_01"]},"attrs":[{}],"properties":{"order":6,"id":745,"name":"agreement","prevSize":32,"code":59689},"setIdx":1,"setId":0,"iconIdx":9},{"icon":{"paths":["M694.258 599.428c45.741 0 82.948 37.172 82.948 82.93 0 45.74-37.206 82.914-82.948 82.914-45.759 0-82.948-37.173-82.948-82.914 0-45.758 37.188-82.93 82.948-82.93zM694.249 579.495c-56.717 0-102.862 46.13-102.862 102.864 0 56.684 46.146 102.846 102.862 102.846 56.701 0 102.844-46.162 102.844-102.846 0-56.734-46.143-102.864-102.844-102.864zM694.249 555.455c70.032 0 126.851 56.82 126.851 126.904 0 41.364-19.832 78.082-50.455 101.248-2.643 2.003-3.333 5.657-1.767 8.603l43.586 80.843c1.97 3.653-1.65 7.829-5.557 6.379l-32.137-11.886c-3.113-1.162-6.581 0.387-7.809 3.487l-12.578 31.832c-1.716 4.396-7.812 4.733-10.034 0.573l-47.289-88.938c-1.196-2.241-4.428-2.241-5.64 0l-47.289 88.938c-2.239 4.161-8.317 3.823-10.050-0.573l-12.561-31.832c-1.227-3.1-4.696-4.649-7.829-3.487l-32.105 11.886c-3.921 1.449-7.542-2.727-5.571-6.379l43.568-80.843c1.583-2.947 0.893-6.6-1.749-8.603-30.64-23.166-50.472-59.884-50.472-101.248 0-70.084 56.803-126.904 126.886-126.904zM269.891 450.612h486.196c9.528 0 17.24 7.707 17.24 17.236v7.12c-0 9.527-7.712 17.237-17.24 17.237h-486.196c-9.53 0-17.24-7.71-17.24-17.237v-7.12c0-9.529 7.71-17.236 17.24-17.236zM267.499 354.521h486.196c9.532 0 17.24 7.712 17.24 17.243v7.123c0 9.529-7.708 17.241-17.24 17.241h-486.196c-9.529 0-17.24-7.712-17.24-17.241v-7.123c0-9.53 7.711-17.243 17.24-17.243zM266.942 259.775h486.198c9.528 0 17.239 7.713 17.239 17.242v7.124c0 9.53-7.711 17.241-17.239 17.241h-486.198c-9.53 0-17.239-7.711-17.239-17.241v-7.124c0-9.529 7.708-17.242 17.239-17.242zM266.775 165.96h193.064c9.53 0 17.239 7.709 17.239 17.237v7.12c0 9.528-7.708 17.237-17.239 17.237h-193.064c-9.529 0-17.24-7.709-17.24-17.237v-7.12c0-9.528 7.711-17.237 17.24-17.237zM184.438 75.858c-12.355 0-22.407 10.050-22.407 22.407v827.471c0 12.356 10.053 22.406 22.407 22.406h655.085c12.357 0 22.409-10.050 22.409-22.406v-827.471c0-12.356-10.053-22.407-22.409-22.407zM115.481 0h792.997c16.162 0 29.309 13.148 29.309 29.309v965.38c0 16.162-13.148 29.311-29.309 29.311h-792.997c-16.162 0-29.308-13.149-29.308-29.311v-965.38c0-16.162 13.146-29.309 29.308-29.309z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Agreement_02"]},"attrs":[{}],"properties":{"order":7,"id":744,"name":"agreement2","prevSize":32,"code":59690},"setIdx":1,"setId":0,"iconIdx":10},{"icon":{"paths":["M675.041 775.84c54.269 0 98.415 45.251 98.415 100.877 0 55.616-44.146 100.867-98.415 100.867-54.301 0-98.497-45.251-98.497-100.867 0-55.626 44.196-100.877 98.497-100.877zM201.965 775.84c54.274 0 98.419 45.251 98.419 100.877 0 55.616-44.145 100.867-98.419 100.867-54.24 0-98.365-45.251-98.365-100.867-0-55.626 44.124-100.877 98.365-100.877zM675.23 494.43c-19.584 0-36.136 14.043-39.354 33.374l-13.231 79.96c-1.467 8.79 1.054 17.789 6.886 24.654 6.219 7.354 15.418 11.573 25.218 11.573h5.022c19.282 0 36.188-12.792 41.125-31.114l2.904-10.854c5.243-19.261 11.794-43.469 18.96-72.074 2.094-8.397 0.23-17.166-5.134-24.043-5.614-7.186-14.447-11.477-23.69-11.477zM514.384 494.43c-19.383 0-35.165 15.77-35.165 35.146v84.115c0 16.707 13.73 30.301 30.573 30.301 16.635 0 30.709-12.021 33.448-28.592l14.042-84.752c1.499-9.042-1.051-18.238-6.958-25.229-5.949-6.981-14.605-10.989-23.762-10.989zM354.736 494.43c-9.155 0-17.821 4.008-23.759 10.989-5.906 6.99-8.458 16.187-6.958 25.219l13.915 84.749c2.742 16.574 16.835 28.605 33.511 28.605 16.824 0 30.533-13.605 30.533-30.323v-84.093c0-19.376-15.781-35.146-35.165-35.146zM183.028 494.43c-9.144 0-17.626 4.125-23.237 11.342-5.605 7.178-7.564 16.376-5.334 25.21 7.123 28.418 13.644 52.49 18.822 71.603l2.363 8.782c5.168 19.208 21.688 32.624 40.149 32.624h13.040c8.73 0 17.011-3.843 22.707-10.562 5.981-7.062 8.542-16.419 7.013-25.666l-13.232-79.96c-3.208-19.331-19.747-33.374-39.354-33.374zM710.22 272.137c-19.227 0-35.48 14.030-38.685 33.376l-12.094 73.25c-1.491 9.042 1.042 18.248 6.968 25.229 5.936 6.978 14.584 10.99 23.739 10.99h27.104c19.458 0 36.325-12.854 40.991-31.261 5.333-21.146 10.406-39.822 14.895-56.387l4.877-18.102c2.363-8.802 0.499-18.010-5.074-25.283-5.781-7.499-14.562-11.811-24.093-11.811zM513.864 272.137c-19.093 0-34.645 15.771-34.645 35.157v72.543c0 19.374 15.783 35.146 35.165 35.146h26.981c19.603 0 36.157-14.032 39.365-33.346l12.187-73.269c1.467-8.875-1.030-17.907-6.875-24.79-6.155-7.274-15.227-11.44-24.875-11.44zM320.135 272.137c-9.637 0-18.688 4.166-24.856 11.44-5.843 6.883-8.365 15.934-6.874 24.79l12.197 73.269c3.19 19.314 19.751 33.346 39.367 33.346h26.845c19.384 0 35.165-15.771 35.165-35.146v-72.543c0-19.386-15.512-35.157-34.573-35.157zM127.082 272.137c-9.326 0-18.211 4.342-23.793 11.616-5.302 6.906-7.073 15.654-4.824 24.019l5.333 19.75c4.398 16.208 9.366 34.45 14.595 55.032 4.874 19.093 21.854 32.427 41.304 32.427h31.469c9.174 0 17.832-4.013 23.759-10.99 5.928-6.981 8.459-16.187 6.979-25.229l-12.134-73.25c-3.178-19.346-20-33.376-39.97-33.376zM890.503 46.48l99.273 0.344c18.875 0.043 34.24 15.459 34.24 34.323s-15.344 34.198-34.199 34.198h-54.24c-19.595 0-36.532 13.293-41.208 32.314l-130.064 531.104c-6.438 26.291-29.824 44.645-56.885 44.645h-537.891c-27.083 0-50.594-18.342-57.178-44.615l-111.365-445.646c-2.447-9.792-0.282-19.96 5.896-27.906 6.219-7.938 15.563-12.491 25.656-12.491h741.183c19.563 0 36.594-13.217 41.439-32.154l17.875-69.688c6.707-26.158 30.259-44.428 57.468-44.428z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Basket"]},"attrs":[{}],"properties":{"order":8,"id":719,"name":"shop","prevSize":32,"code":59691},"setIdx":1,"setId":0,"iconIdx":35},{"icon":{"paths":["M559.767 776.041h125.060v121.123h-125.060zM365.241 776.041h125.012v121.123h-125.012zM170.715 776.041h125.060v121.123h-125.060zM744.356 585.547h125.059v121.075h-125.059zM559.767 585.547h125.060v121.075h-125.060zM365.241 585.547h125.012v121.075h-125.012zM170.715 585.547h125.060v121.075h-125.060zM744.356 391.021h125.059v121.075h-125.059zM549.83 391.021h125.059v121.075h-125.059zM355.304 391.021h125.060v121.075h-125.060zM92.933 263.979v702.974h838.384v-702.974zM35.766 0h952.709v1024.144h-952.709z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Calendar__02"]},"attrs":[{}],"properties":{"order":10,"id":679,"name":"calendar","prevSize":32,"code":59692},"setIdx":1,"setId":0,"iconIdx":75},{"icon":{"paths":["M850.469 602.208c5.223 0 9.821 3.31 11.443 8.26l35.206 108.297h113.85c5.223 0 9.833 3.374 11.423 8.322 1.627 4.951-0.146 10.38-4.337 13.433l-92.14 66.94 35.206 108.297c1.607 4.916-0.16 10.348-4.371 13.433-2.105 1.543-4.611 2.28-7.069 2.28-2.473 0-4.949-0.738-7.071-2.28l-92.14-66.94-92.123 66.94c-2.123 1.543-4.581 2.28-7.054 2.28-2.488 0-4.981-0.738-7.086-2.28-4.208-3.085-5.975-8.517-4.354-13.433l35.189-108.297-92.123-66.94c-4.226-3.053-5.975-8.483-4.386-13.433 1.622-4.948 6.237-8.322 11.455-8.322h113.867l35.189-108.297c1.609-4.951 6.22-8.26 11.425-8.26zM361.71 459.578c14.748 0 28.373 3.181 40.826 9.48 12.45 6.363 21.964 15.040 28.533 25.966 6.621 10.99 9.916 22.624 9.916 34.932 0 11.664-3.149 22.365-9.403 31.973-6.281 9.578-15.631 17.227-27.939 22.881 16.019 3.697 28.469 11.378 37.341 22.977 8.884 11.666 13.287 26.255 13.287 43.738 0 23.651-8.628 43.64-25.871 60.158-17.238 16.452-39.042 24.614-65.391 24.614-23.748 0-43.479-7.068-59.206-21.24-15.713-14.206-24.679-32.585-26.912-55.145l33.259-4.371c3.84 18.799 10.316 32.425 19.474 40.717 9.173 8.354 20.37 12.498 33.528 12.498 15.634 0 28.842-5.398 39.671-16.291 10.733-10.798 16.113-24.164 16.113-40.266 0-15.265-4.995-27.894-14.94-37.761-10.010-9.929-22.652-14.845-38.062-14.845-6.266 0-14.074 1.222-23.457 3.663l3.677-29.147c2.236 0.291 4.003 0.321 5.336 0.321 14.188 0 26.979-3.663 38.304-11.020 11.31-7.392 16.967-18.769 16.967-34.194 0-12.18-4.114-22.269-12.357-30.27-8.272-8.033-18.943-12.019-31.974-12.019-12.885 0-23.743 4.082-32.326 12.212-8.61 8.098-14.168 20.341-16.614 36.569l-33.222-5.911c4.047-22.336 13.319-39.56 27.714-51.804 14.398-12.276 32.309-18.414 53.728-18.414zM590.945 459.554h21.406v271.857h-33.25v-211.926c-8.003 7.744-18.481 15.392-31.497 22.976-13.018 7.648-24.652 13.302-35.037 17.127v-32.103c18.629-8.803 34.874-19.312 48.823-31.747 13.902-12.374 23.769-24.425 29.555-36.185zM81.385 169.038h89.292v100.424h161.824v-100.424h226.916v100.424h161.808v-100.424h97.342c44.909 0 81.338 36.411 81.338 81.34v379.789l-9.436-28.988c-5.637-17.356-21.704-29.052-39.993-29.052-15.65-0-29.274 8.902-36.538 22.27v-223.863h-727.928v437.636h638.894l14.813 10.766-27.267 83.908h-712.452v-94.673h0.079v-557.792c0-44.928 36.396-81.34 81.306-81.34zM590.238 92.429h100.154v144.258h-100.154zM201.493 92.429h100.179v144.258h-100.179z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Calendar_Favourite"]},"attrs":[{}],"properties":{"order":4,"id":671,"name":"today","prevSize":32,"code":59693},"setIdx":1,"setId":0,"iconIdx":83},{"icon":{"paths":["M238.69 60.541c-52.938-0-95.847 42.9-95.847 95.842 0 52.939 42.909 95.862 95.847 95.862 52.94 0 95.84-42.923 95.84-95.862 0-52.942-42.901-95.842-95.84-95.842zM392.221 50.426h306.155l294.456 288.139v685.485h-776.863v-561.039l40.642-94.103 35.023 81.093v498.374h625.532v-577.602h-249.704v-244.67h-244.628l-1.306-7.293c-4.98-24.278-14.689-46.852-28.118-66.713zM238.689 0c86.369 0 156.367 69.992 156.367 156.374 0 35.435-11.925 68.041-31.798 94.252l116.289 215.985-85.124-24.582-34.050 90.799-96.019-222.375c-5.331 0.878-10.759 1.522-16.269 1.843l-97.681 226.194-34.051-90.799-85.135 24.605 106.068-196.98c-33.598-28.701-54.974-71.302-54.974-118.942 0-86.382 70.011-156.374 156.377-156.374z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Certificate_02"]},"attrs":[{}],"properties":{"order":15,"id":646,"name":"certificate","prevSize":32,"code":59694},"setIdx":1,"setId":0,"iconIdx":108}],"height":1024,"metadata":{"name":"appicons"},"preferences":{"showGlyphs":true,"showCodes":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"appicons","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false,"noie8":true,"ie7":false,"showSelector":true,"showMetrics":false,"showMetadata":false,"showVersion":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"name":"icomoon","classSelector":".icon"},"historySize":50,"gridSize":16}}
\ No newline at end of file
diff --git a/dev/db/sitedb..schema.sql b/dev/db/sitedb..schema.sql
new file mode 100644 (file)
index 0000000..5099ae0
--- /dev/null
@@ -0,0 +1,60 @@
+
+CREATE TABLE sessions (
+       id_user text NULL,
+       user_agent text NULL,
+       remote_addr text NULL,
+       id text NOT NULL,
+       sessiondata json NULL,
+       cschema text NULL,
+  created timestamp NULL DEFAULT now(),
+       CONSTRAINT sessions_pkey PRIMARY KEY (id)
+);
+
+
+CREATE TABLE usergroups (
+       id text NOT NULL,
+       isdefault bool NULL,
+       groupname text NULL,
+       CONSTRAINT usergroups_pkey PRIMARY KEY (id)
+);
+
+CREATE TABLE users (
+  id text NOT NULL,
+  username text NULL,
+       userpassword text NULL,
+  surname text NULL,
+       prename text NULL,
+       created timestamp NULL DEFAULT now(),
+       isblocked bool NULL,
+       regcode text NULL,
+       vcode text NULL,
+       schemaaccess json NULL,
+       id_usergroups json NULL,
+       id_usergroup text NULL,
+       isdeleted bool NULL,
+       terms bool NULL,
+       CONSTRAINT uniq_username UNIQUE (username),
+       CONSTRAINT users_pkey PRIMARY KEY (id)
+);
+
+CREATE OR REPLACE FUNCTION public.getuuid()
+ RETURNS text
+ LANGUAGE plpgsql
+AS $function$
+declare 
+       newuuid text;
+ begin
+        SELECT uuid_in(md5(random()::text || clock_timestamp()::text)::cstring) into newuuid;
+ return newuuid;
+END;
+$function$
+;
+
+
+INSERT INTO usergroups (id, true, groupname) VALUES('user', NULL, 'Users');
+INSERT INTO usergroups (id, isdefault, groupname) VALUES('admin', NULL, 'Administrator');
+INSERT INTO users (id, userpassword, username, surname, prename, id_usergroup ) VALUES
+(getuuid(),'0ecf731e2426a8a469f06e9f4a3bcbed6f8071d9d3e3ef7ef5fd9165021e27ec', 'ksaffran@dks.lu', 'Saffran', 'Kilian', 'admin');
+
+
+
diff --git a/dev/setdevlinks.sh b/dev/setdevlinks.sh
new file mode 100644 (file)
index 0000000..0db3d47
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+CALLDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+PROJECT="$(dirname "${CALLDIR}")"
+PROJECT="$(basename "${PROJECT}")"
+#PROJECT="$(basename "${PROJECT}")"
+echo ${PROJECT}
+sudo ln -s "/usr/home/dksalu/public_html/"${PROJECT} $wk"/"${PROJECT}"/website" 
+sudo ln -s "/usr/home/dksalu/public_html/"${PROJECT}"_admin" $wk"/"${PROJECT}"/admin" 
\ No newline at end of file
diff --git a/website/css/creorga.css b/website/css/creorga.css
deleted file mode 100644 (file)
index 7eb7245..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-body {\r
-  background: url("../img/bg_creorga.jpg");\r
-  background-attachment: fixed;\r
-  background-position: center;\r
-  background-size: cover;\r
-}\r
-\r
-.bg-topbar {\r
-   background:  -webkit-linear-gradient(to right, #ffffff, #77a518); \r
-   background:  linear-gradient(to right, #ffffff, #77a518);\r
-}
\ No newline at end of file
diff --git a/website/css/site.css b/website/css/site.css
deleted file mode 100644 (file)
index 2aa5057..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-body, html {\r
-  /* height: 100%; \r
-  line-height: 1.8; */\r
-}\r
-\r
-/* Full height image header */\r
-.bgimg-1 {\r
-  /* background-position: center;\r
-  background-size: cover;\r
-  background-image: url("../img/slider_pctablet.png");\r
-  min-height: 50%; */\r
-}\r
-\r
-/* \r
-\r
-.bg-topbar {\r
-   background-color:  #6a92d3;\r
-}\r
-\r
-.main {\r
-       margin-top: 80px;\r
-}\r
-\r
-.card-header {\r
-   background-color:  #6a92d3;\r
-   color: #fff;\r
-}\r
-\r
-h1 {\r
-       font-size: 35pt;\r
-       font-weight: bold;\r
-}\r
-\r
-.card {\r
-       opacity: 0.8;\r
-}\r
-\r
-header.masthead {\r
-       padding-top: 30px;\r
-       position: relative;\r
-       background: url(../img/bg.jpg);\r
-  background-position: center;\r
-  background-size: cover;\r
-}\r
-\r
-\r
-.iconbar {\r
-       width: 60px;\r
-    float: left;\r
-}\r
-\r
-a {\r
-  color: #000;\r
-}\r
-\r
-a:hover {\r
-  color: #000;\r
-}\r
-\r
-a.footer {\r
-       color: #fff;\r
-}\r
-\r
-.dropdown-menu {\r
-  border-radius: 0px;\r
-}\r
-\r
-.navbar-nav .dropdown-menu {\r
-  background-color:  #6a92d3;\r
-  color: #fff;\r
-}\r
-\r
-.navbar-nav .dropdown-menu .dropdown-item {\r
-  color: #fff;\r
-}\r
-\r
-.navbar-nav .dropdown-menu .dropdown-item:hover {\r
-  background-color: #52638e;\r
-}\r
-\r
-.nav-link:hover {\r
-  text-decoration: underline;\r
-}\r
-\r
-h3 a: {\r
-  color: #000;\r
-}\r
- */\r
index 4c3f290..a2d8180 100644 (file)
@@ -29,8 +29,8 @@ legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}t
        background-color: #52638e;
 } */
 html,body{font-family:Verdana,sans-serif;font-size:10pt;line-height:1.5}html{overflow-x:hidden}
        background-color: #52638e;
 } */
 html,body{font-family:Verdana,sans-serif;font-size:10pt;line-height:1.5}html{overflow-x:hidden}
-h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.serif{font-family:serif}
-h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.wide{letter-spacing:4px}
+h1{font-size:20pt}h2{font-size:18pt}h3{font-size:16px; text-decoration: underline; font-weight: bold;}h4{font-size:13px}h5{font-size:12px}h6{font-size:11pt}.serif{font-family:serif}
+h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:bold;margin: 0}.wide{letter-spacing:4px}
 hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .img{max-width:100%;height:auto; vertical-align:middle}a{color:inherit}
 .table,.table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.table-all{border:1px solid #ccc}
 hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .img{max-width:100%;height:auto; vertical-align:middle}a{color:inherit}
 .table,.table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.table-all{border:1px solid #ccc}
@@ -117,7 +117,7 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .circle{border-radius:50%}
 .round-small{border-radius:2px}.round,.round-medium{border-radius:4px}.round-large{border-radius:8px}.round-xlarge{border-radius:16px}.round-xxlarge{border-radius:32px}
 .row-padding,.row-padding>.half,.row-padding>.third,.row-padding>.twothird,.row-padding>.threequarter,.row-padding>.quarter,.row-padding>.col{padding:0 8px}
 .circle{border-radius:50%}
 .round-small{border-radius:2px}.round,.round-medium{border-radius:4px}.round-large{border-radius:8px}.round-xlarge{border-radius:16px}.round-xxlarge{border-radius:32px}
 .row-padding,.row-padding>.half,.row-padding>.third,.row-padding>.twothird,.row-padding>.threequarter,.row-padding>.quarter,.row-padding>.col{padding:0 8px}
-.container,.datapanel{padding:0.01em 8px}.datapanel{margin-top:8px;margin-bottom:8px}
+.container,.datapanel{padding:2px 4px}.datapanel{margin-top:4px;margin-bottom:4px}
 .code,.codespan{font-family:Consolas,"courier new";font-size:16px}
 .code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
 .codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
 .code,.codespan{font-family:Consolas,"courier new";font-size:16px}
 .code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
 .codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
@@ -146,9 +146,9 @@ hr{border:0;border-top:1px solid #eee;margin:20px 0}
 .topbar{border-top:6px solid #ccc!important}.bottombar{border-bottom:6px solid #ccc!important}
 .leftbar{border-left:6px solid #ccc!important}.rightbar{border-right:6px solid #ccc!important}
 .section,.code{margin-top:16px!important;margin-bottom:16px!important}
 .topbar{border-top:6px solid #ccc!important}.bottombar{border-bottom:6px solid #ccc!important}
 .leftbar{border-left:6px solid #ccc!important}.rightbar{border-right:6px solid #ccc!important}
 .section,.code{margin-top:16px!important;margin-bottom:16px!important}
-.margin{margin:16px!important}.margin-top{margin-top:16px!important}.margin-bottom{margin-bottom:16px!important}
-.margin-left{margin-left:16px!important}.margin-right{margin-right:16px!important}
-.padding-small{padding:4px 8px!important}.padding{padding:8px 16px!important}.padding-large{padding:12px 24px!important}
+.margin{margin:4px!important}.margin-top{margin-top:4px!important}.margin-bottom{margin-bottom:4px!important}
+.margin-left{margin-left:4px!important}.margin-right{margin-right:4px!important}
+.padding-small{padding:2px 2px!important}.padding{padding:4px 4px!important}.padding-large{padding:8px 8px!important}
 .padding-16{padding-top:16px!important;padding-bottom:16px!important}.padding-24{padding-top:24px!important;padding-bottom:24px!important}
 .padding-32{padding-top:32px!important;padding-bottom:32px!important}.padding-48{padding-top:48px!important;padding-bottom:48px!important}
 .padding-64{padding-top:64px!important;padding-bottom:64px!important}
 .padding-16{padding-top:16px!important;padding-bottom:16px!important}.padding-24{padding-top:24px!important;padding-bottom:24px!important}
 .padding-32{padding-top:32px!important;padding-bottom:32px!important}.padding-48{padding-top:48px!important;padding-bottom:48px!important}
 .padding-64{padding-top:64px!important;padding-bottom:64px!important}
@@ -552,7 +552,8 @@ div.PageListHeader .inner_border
 
 .moduletoolbar
 {
 
 .moduletoolbar
 {
-  background-color: #293146;
+  background-color:  #6a92d3; 
+  /* background-color: #293146; */
   color: #fff;
 }
 
   color: #fff;
 }
 
diff --git a/website/download/update.php b/website/download/update.php
deleted file mode 100644 (file)
index 4b137b4..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-<?php \r
-       $ua = $_SERVER['HTTP_USER_AGENT'];\r
-       $os = $_GET['os'];\r
-       $appid = $_GET['id'];\r
-       $userversion = $_GET['version'];\r
-       $special ="";\r
-       if (isset($_GET['special'])){\r
-           $special = "1";\r
-       }\r
-       $msg = "pas de mises à jours disponible!";\r
-       $sfx = ".exe";\r
-       if ($os != "WINNT"){\r
-               $sfx=".pkg";\r
-       }\r
-       $updatefile="";\r
-       $pattern ="";\r
-       $cursetup = "";\r
-\r
-       if (strpos($ua, 'Creorga') !== false) {\r
-               $cursetup = "nouse";\r
-               $pattern = "/^nouse$/";\r
-               if ($appid == 'creorga.director@dks.lu'){\r
-                       $cursetup = 'Setup_Creorga_'.$userversion.'_director'.$sfx;\r
-                       $pattern = '/^Setup_Creorga_.*_director'.$sfx.'$/';\r
-               } else if ($appid == 'creorga.localmanager@dks.lu'){\r
-                       $cursetup = 'Setup_Creorga_'.$userversion.'_localmanager'.$sfx;\r
-                       $pattern = '/^Setup_Creorga_.*_localmanager'.$sfx.'$/';\r
-               } else if ($appid == 'creorga.staff@dks.lu'){\r
-                       $cursetup = 'Setup_Creorga_'.$userversion.'_staff'.$sfx;\r
-                       $pattern = '/^Setup_Creorga_.*_staff'.$sfx.'$/';\r
-               }\r
-               $updatefile=$cursetup;\r
-               if ($handle = opendir('./creorga')) {\r
-                       while (false !== ($entry = readdir($handle))) {\r
-                               if (preg_match($pattern, $entry)) {\r
-                                       if ($updatefile < $entry){\r
-                                               $updatefile = $entry;\r
-                                               $msg = "nouvelle mise à jour disponible!" ;\r
-                                               \r
-                                       }\r
-                                       \r
-                               }\r
-                       }\r
-                       closedir($handle);\r
-               }\r
-               \r
-               \r
-       } elseif ($special == 1) {\r
-           $cursetup = "nouse";\r
-           $pattern = "/^nouse$/";\r
-           if ($appid == 'director'){\r
-               $cursetup = 'Setup_Creorga_'.$userversion.'_director'.$sfx;\r
-               $pattern = '/^Setup_Creorga_.*_director'.$sfx.'$/';\r
-           } else if ($appid == 'localmanager'){\r
-               $cursetup = 'Setup_Creorga_'.$userversion.'_localmanager'.$sfx;\r
-               $pattern = '/^Setup_Creorga_.*_localmanager'.$sfx.'$/';\r
-           } else if ($appid == 'staff'){\r
-               $cursetup = 'Setup_Creorga_'.$userversion.'_staff'.$sfx;\r
-               $pattern = '/^Setup_Creorga_.*_staff'.$sfx.'$/';\r
-           }\r
-           $updatefile=$cursetup;\r
-           if ($handle = opendir('./creorga')) {\r
-               while (false !== ($entry = readdir($handle))) {\r
-                   if (preg_match($pattern, $entry)) {\r
-                       if ($updatefile < $entry){\r
-                           $updatefile = $entry;\r
-                           $msg = "nouvelle mise à jour disponible!" ;\r
-                           \r
-                       }\r
-                       \r
-                   }\r
-               }\r
-               closedir($handle);\r
-           }\r
-       } else {\r
-           $msg = "Nous n'offrons plus de version libre!" ;\r
-               $cursetup = 'Setup_Creorga_0.0.0_free'.$sfx;\r
-               $pattern = '/^Setup_Creorga_.*_free'.$sfx.'$/';\r
-               $updatefile='Setup_Creorga_0.0.0_free.nouse';\r
-               \r
-               /*if ($handle = opendir('./creorga')) {\r
-                       while (false !== ($entry = readdir($handle))) {\r
-                               if (preg_match($pattern, $entry)) {\r
-                                       if ($updatefile < $entry){\r
-                                               $updatefile = $entry;\r
-                                               \r
-                                       }\r
-                                               \r
-                               }\r
-                       }\r
-                       closedir($handle);\r
-               }*/\r
-               \r
-               //echo "<pre>".$updatefile."</pre>";\r
-       }\r
-\r
-?>\r
-<!DOCTYPE html>\r
-<!--[if IE 9]> <html lang="en" class="ie9"> <![endif]-->\r
-<!--[if !IE]><!-->\r
-<html lang="en">\r
-       <!--<![endif]-->\r
-\r
-       <head>\r
-               <meta charset="utf-8">\r
-               <meta name="viewport" content="width=device-width, initial-scale=1.0">\r
-                  \r
-    <title>DKS - The Database Specialist in Luxembourg</title>\r
-               <meta name="description" content="DKS - The Database Specialist in Luxembourg - FileMaker, PostgreSQL, MySQL, SQLite">\r
-               <meta name="keywords" content="DKS, Luxembourg, database, knownledge, computer, helpdesk, Kilian, Saffran, software, development, filemaker , postgresql, mysql, mobile">\r
-\r
-\r
-    <meta name="author" content="DKS sarl">\r
-    <meta name="robots" content="index,follow">\r
-    <meta name="geo.region" content="LU-G">\r
-    <meta name="geo.placename" content="Roodt-sur-Syre">\r
-    <meta name="geo.position" content="49.667774;6.303956">\r
-    <meta name="ICBM" content="49.667774, 6.303956">\r
-    <meta name="generator" content="Own DKS Generator" />\r
-    <link rel="canonical" href="http://www.dks.lu/" />\r
-    <link rel="shortlink" href="http://www.dks.lu/" />\r
-  <meta property="og:site_name" content="DKS - Database Knowledge Solutions" />\r
-  <meta property="og:type" content="website" />\r
-  <meta property="og:url" content="http://www.dks.lu/" />\r
-  <meta property="og:title" content="DKS" />\r
-  <meta property="og:latitude" content="49.667774" />\r
-  <meta property="og:longitude" content="6.303956" />\r
-  <meta property="og:street_address" content="8b, rue du moulin" />\r
-  <meta property="og:locality" content="Roodt/Syre" />\r
-  <meta property="og:region" content="Grevenmacher" />\r
-  <meta property="og:postal_code" content="6914" />\r
-  <meta property="og:country_name" content="Luxembourg" />\r
-  <meta property="og:email" content="info@dks.lu" />\r
-  <meta property="og:phone_number" content="+352 2678 7406" />\r
-               <link rel="apple-touch-icon" sizes="57x57" href="../images/favicon/apple-touch-icon-57x57.png">\r
-  <link rel="apple-touch-icon" sizes="60x60" href="../images/favicon/apple-touch-icon-60x60.png">\r
-  <link rel="apple-touch-icon" sizes="72x72" href="../images/favicon/apple-touch-icon-72x72.png">\r
-  <link rel="apple-touch-icon" sizes="76x76" href="../images/favicon/apple-touch-icon-76x76.png">\r
-  <link rel="apple-touch-icon" sizes="114x114" href="../images/favicon/apple-touch-icon-114x114.png">\r
-  <link rel="apple-touch-icon" sizes="120x120" href="../images/favicon/apple-touch-icon-120x120.png">\r
-  <link rel="apple-touch-icon" sizes="144x144" href="../images/favicon/apple-touch-icon-144x144.png">\r
-  <link rel="apple-touch-icon" sizes="152x152" href="../images/favicon/apple-touch-icon-152x152.png">\r
-  <link rel="apple-touch-icon" sizes="180x180" href="../images/favicon/apple-touch-icon-180x180.png">\r
-  <link rel="icon" type="image/png" href="../images/favicon/favicon-32x32.png" sizes="32x32">\r
-  <link rel="icon" type="image/png" href="../images/favicon/android-chrome-192x192.png" sizes="192x192">\r
-  <link rel="icon" type="image/png" href="../images/favicon/favicon-96x96.png" sizes="96x96">\r
-  <link rel="icon" type="image/png" href="../images/favicon/favicon-16x16.png" sizes="16x16">\r
-  <link rel="manifest" href="../images/favicon/manifest.json">\r
-  <link rel="mask-icon" href="../images/favicon/safari-pinned-tab.svg" color="#5BBAD5">\r
-  <meta name="msapplication-TileColor" content="#ffffff">\r
-  <meta name="msapplication-TileImage" content="../images/favicon/mstile-144x144.png">\r
-  <meta name="theme-color" content="#ffffff">\r
-               \r
-    <link href="../bootstrap/css/bootstrap.css" rel="stylesheet">\r
-    <link href="../bootstrap/css/glyphicons.css" rel="stylesheet">\r
-    <link href="../bootstrap/css/glyphicons-halflings.css" rel="stylesheet">\r
-    <link href="../bootstrap/css/glyphicons-social.css" rel="stylesheet">\r
-               <link href="../css/animations.css" rel="stylesheet">\r
-               <link href="../plugins/owl-carousel/owl.carousel.css" rel="stylesheet">\r
-               <link href="../plugins/owl-carousel/owl.transitions.css" rel="stylesheet">\r
-               <link href="../plugins/hover/hover-min.css" rel="stylesheet">           \r
-               <link href="../css/style.css" rel="stylesheet" >\r
-               <link href="../css/skins/blue.css" rel="stylesheet">\r
-       </head>\r
-\r
-       <body class="no-trans front-page transparent-header">\r
-\r
-               <div class="scrollToTop circle"><i class="icon-up-open-big"></i></div>\r
-               \r
-               <div class="page-wrapper">\r
-\r
-                       <!-- main-container start -->\r
-                       <!-- ================ -->\r
-                       <section class="main-container padding-ver-clear">\r
-                               <div class="container pv-40">\r
-                                       <div class="row">\r
-\r
-                                               <!-- main start -->\r
-                                               <!-- ================ -->\r
-                                               <div class="main col-md-12">\r
-                                                       <h1 class="title"><?php echo $msg; ?></h1>\r
-\r
-                                                       <div class="separator-2"></div>\r
-                                                       <?php if ($updatefile != ""){\r
-                                                               if (preg_match('/\.pkg$/',$updatefile)){\r
-                                                                       ?>\r
-                                                                               <div class="media margin-clear col-md-6"><div class="media-left"> <div class="overlay-container"> <span class="social social-apple x2"></span> </div> </div> \r
-                                                       <div class="media-body"> <span style="font-size: 20px; font-weight: bold;">Version pour MacOS</span> <br/>Minimum MacOS X 10.6<br/> \r
-                                                       <a class="btn btn-dark btn-animated btn-lg" href="../download/creorga/<?php echo $updatefile ?>"  download="<?php echo $updatefile ?>"><span class="glyphicons glyphicons-download"></span>&nbsp;Téléchargement</a> </div> <hr> </div>\r
-                                                                       <?php\r
-                                                               } else if (preg_match('/\.exe$/',$updatefile)) {\r
-                                                                       ?>\r
-                                                                       <div class="media margin-clear col-md-6"> <div class="media-left"> <div class="overlay-container"> <span class="social social-windows x2"></span> </div> </div> \r
-                                                       <div class="media-body"> <span style="font-size: 20px; font-weight: bold;">Version pour Windows</span> <br/>Minimum Windows Vista<br/> \r
-                                                       <a class="btn btn-dark btn-animated btn-lg" href="../download/creorga/<?php echo $updatefile ?>" download="<?php echo $updatefile ?>"><span class="glyphicons glyphicons-download"></span>&nbsp;Téléchargement</a> </div> <hr> </div>\r
-                                                                       <?php\r
-                                                               }\r
-                                                       }\r
-                                                        ?>\r
-                                               </div>\r
-                                               <!-- main end -->\r
-                                               \r
-                                               \r
-                                       </div>\r
-                               </div>\r
-                       </section>\r
-                       <!-- main-container end -->\r
-\r
-                       <footer id="footer" class="clearfix ">\r
-\r
-                               <div class="subfooter">\r
-                                               <div class="subfooter-inner">\r
-                                                       <div class="row">\r
-                                                               <div class="col-md-12">\r
-                                                                       <p class="text-center">Copyright &copy; 2017 DKS s.à r.l. All Rights Reserved</p>\r
-                                                               </div>\r
-                                                       </div>\r
-                                               </div>\r
-                                       </div>\r
-                               </div>\r
-\r
-                       </footer>\r
-\r
-                       \r
-               </div>\r
-               <!-- page-wrapper end -->\r
-\r
-               <script type="text/javascript" src="../plugins/jquery.min.js"></script>\r
-               <script type="text/javascript" src="../bootstrap/js/bootstrap.min.js"></script>\r
-\r
-               <script type="text/javascript" src="../js/template.js"></script>\r
-    \r
-\r
-       </body>\r
-</html>\r
diff --git a/website/img/Creorga_1000px.png b/website/img/Creorga_1000px.png
deleted file mode 100644 (file)
index 4a09df9..0000000
Binary files a/website/img/Creorga_1000px.png and /dev/null differ
diff --git a/website/img/applescript.png b/website/img/applescript.png
deleted file mode 100644 (file)
index b3f5277..0000000
Binary files a/website/img/applescript.png and /dev/null differ
diff --git a/website/img/apps/cashboxlogo.svg b/website/img/apps/cashboxlogo.svg
deleted file mode 100644 (file)
index 17f6be8..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   viewBox="0 0 512 512"\r
-   height="512"\r
-   width="512"\r
-   y="0px"\r
-   x="0px"\r
-   id="Capa_1"\r
-   version="1.1">\r
-  <metadata\r
-     id="metadata11">\r
-    <rdf:RDF>\r
-      <cc:Work\r
-         rdf:about="">\r
-        <dc:format>image/svg+xml</dc:format>\r
-        <dc:type\r
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\r
-        <dc:title></dc:title>\r
-      </cc:Work>\r
-    </rdf:RDF>\r
-  </metadata>\r
-  <defs\r
-     id="defs9" />\r
-  <path\r
-     id="path821"\r
-     d="m 47.969695,321.57485 4.360881,139.5482 405.561964,2.90726 -1.45363,-145.36272 z"\r
-     style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" />\r
-  <path\r
-     id="path819"\r
-     d="m 308.41403,54.749611 h 76.10187 v 20.907418 l -19.65549,26.420121 1.45362,31.9798 16.65926,13.83859 21.9008,47.84288 -195.83742,82.74672 H 72.542327 l 40.779353,-74.71295 13.71554,-25.96531 v -29.91134 l 185.49261,-3.6632 15.9899,-8.72176 -2.90726,-58.145087 -17.19844,-1.708464 z"\r
-     style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" />\r
-  <path\r
-     style="stroke-width:10.69534111;fill:#52638e;fill-opacity:1"\r
-     d="M 30,297.88827 V 482 H 480.00002 V 297.88827 Z M 442.48428,442.99753 H 67.53673 V 336.87985 H 442.47378 V 442.99753 Z M 406.42719,195.73842 h -1.5531 V 125.13501 H 379.31092 V 98.395754 h 27.11627 V 31.999986 H 286.52373 v 66.395768 h 27.09528 V 125.13501 H 105.12593 v 70.60341 h -0.39877 L 48.752624,287.05304 H 461.22641 Z M 308.41403,54.749611 H 384.5159 V 75.657029 H 308.41403 Z M 127.03722,147.89554 h 255.93607 v 29.91134 H 127.03722 Z m 59.23815,55.88755 -2.72842,14.94477 h -21.3761 l 4.20806,-14.94477 z m -54.6628,19.90456 h 21.86932 l -4.70128,14.94477 h -23.34896 z m -26.44466,-4.97069 8.15377,-14.94477 h 19.89646 l -6.67413,14.94477 z m 28.50147,0 6.18091,-14.94477 h 19.89646 l -4.70127,14.94477 z m -31.2194,4.97069 h 21.86932 l -6.67413,14.94477 H 94.296211 Z m -2.612982,54.79749 H 72.542327 l 8.153772,-14.94477 h 25.815031 z m -16.422976,-19.91546 8.153771,-14.94477 h 23.842177 l -6.67413,14.94477 z m 52.826368,19.91546 h -27.30517 l 6.18092,-14.94477 h 25.81502 z m -19.05695,-19.91546 6.18091,-14.94477 h 23.84218 l -4.70128,14.94477 z m 55.44984,19.91546 h -27.29467 l 4.20806,-14.94477 h 25.81503 z m 3.64139,-19.91546 h -25.33231 l 4.20806,-14.94477 h 23.84217 z m -19.71807,-19.93726 4.20806,-14.94477 h 21.86932 l -2.72842,14.94477 z m 52.48007,39.85272 H 181.742 l 2.2352,-14.94477 h 25.81503 z m 1.00741,-19.91546 h -25.33231 l 2.23521,-14.94477 h 23.84217 z m 0.99692,-19.93726 h -23.34895 l 2.2352,-14.94477 h 21.86932 z m 1.00742,-19.91546 h -21.3761 l 2.2352,-14.94477 h 19.89646 z m 199.3319,197.21429 H 98.619704 v -51.97423 h 81.317336 v 24.60274 h 150.11544 v -24.60274 h 81.32784 z"\r
-     id="path2" />\r
-  <rect\r
-     y="7.689568"\r
-     x="7.1689258"\r
-     height="497.14154"\r
-     width="497.3389"\r
-     id="rect823"\r
-     style="fill:none;fill-opacity:1;stroke:#52638e;stroke-width:9.85825348;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />\r
-</svg>\r
diff --git a/website/img/apps/coloradiologo.svg b/website/img/apps/coloradiologo.svg
deleted file mode 100644 (file)
index e6db71b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.1"
-   id="Layer_1"
-   x="0px"
-   y="0px"
-   width="512"
-   height="512"
-   viewBox="0 0 511.99997 512.00001"
-   enable-background="new 0 0 297.64 209.76"
-   xml:space="preserve"><metadata
-   id="metadata75"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
-   id="defs73" />
-
-
-
-
-
-<g
-   transform="matrix(2.0736849,0,0,1.9449578,50.260331,-235.76009)"
-   id="g851"><g
-     transform="matrix(1.7868062,0,0,2.0278642,-9.0346759,52.702466)"
-     id="g6">
-       <path
-   style="fill:#f7ab1c"
-   id="path4"
-   d="m 79.019,161.18 c -1.017,0.164 -2.118,0.246 -3.304,0.246 -1.187,0 -2.118,0 -2.795,0 -17.197,0 -32.168,-6.084 -44.917,-18.254 C 15.253,131.002 8.88,116.459 8.88,99.545 c 0,-16.996 6.395,-31.642 19.186,-43.936 12.79,-12.294 27.783,-18.442 44.98,-18.442 1.1,0 2.202,0 3.304,0 1.016,0 1.735,0 2.16,0 v 23.539 c -1.695,-0.248 -3.389,-0.372 -5.083,-0.372 -10.844,0 -20.33,3.84 -28.461,11.521 -8.131,7.681 -12.198,16.849 -12.198,27.503 0,10.655 4.066,19.905 12.198,27.751 8.132,7.848 17.662,11.77 28.589,11.77 1.862,0 3.685,-0.164 5.463,-0.496 v 22.797 z" />
-</g><g
-     transform="matrix(1.7868062,0,0,2.0278642,-9.0346759,52.702466)"
-     id="g12">
-       <g
-   id="g10">
-               <path
-   style="fill:#a4378a"
-   id="path8"
-   d="m 78.595,131.409 c -0.511,0.082 -1.064,0.124 -1.66,0.124 -0.597,0 -1.064,0 -1.405,0 -8.642,0 -16.165,-3.029 -22.571,-9.087 -6.407,-6.059 -9.609,-13.298 -9.609,-21.718 0,-8.46 3.213,-15.751 9.641,-21.871 6.427,-6.12 13.961,-9.18 22.603,-9.18 0.553,0 1.106,0 1.66,0 0.511,0 0.872,0 1.085,0 v 11.718 c -0.852,-0.124 -1.703,-0.185 -2.554,-0.185 -5.449,0 -10.216,1.912 -14.302,5.735 -4.086,3.823 -6.129,8.387 -6.129,13.691 0,5.304 2.043,9.909 6.129,13.814 4.086,3.906 8.875,5.858 14.366,5.858 0.936,0 1.852,-0.082 2.746,-0.246 z" />
-       </g>
-</g><ellipse
-     style="fill:#f7aa1a;stroke-width:1.90352"
-     id="ellipse14"
-     ry="31.403505"
-     rx="27.934927"
-     cy="257.17609"
-     cx="155.43011" /></g>
-</svg>
diff --git a/website/img/apps/creorgalogo.svg b/website/img/apps/creorgalogo.svg
deleted file mode 100644 (file)
index 6a91a48..0000000
+++ /dev/null
@@ -1,931 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<!-- Created with Inkscape (http://www.inkscape.org/) -->\r
-\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   xmlns:xlink="http://www.w3.org/1999/xlink"\r
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\r
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\r
-   width="512"\r
-   height="512"\r
-   viewBox="0 0 135.46666 135.46667"\r
-   version="1.1"\r
-   id="svg898"\r
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"\r
-   sodipodi:docname="creorgalogo.svg">\r
-  <defs\r
-     id="defs892">\r
-    <clipPath\r
-       id="clipPath1459"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1457"\r
-         d="m 212.573,661.197 h 170.13 v 62.614 h -170.13 z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1499"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1497"\r
-         d="m 127.508,383.283 h 340.26 v 125.228 h -340.26 z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1539"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1537"\r
-         d="m 258.72,162.909 h 77.835 v 77.836 H 258.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1547"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1545"\r
-         d="m 263.22,236.244 h 68.835 V 211.041 H 263.22 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1555"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1553"\r
-         d="m 258.91026,211.80096 6.38556,36.21427 71.06949,-12.53148 -6.38556,-36.21427 z" />\r
-    </clipPath>\r
-    <linearGradient\r
-       id="linearGradient1565"\r
-       spreadMethod="pad"\r
-       gradientTransform="matrix(5.6686859,32.148682,32.148682,-5.6686859,295.14764,208.71826)"\r
-       gradientUnits="userSpaceOnUse"\r
-       y2="0"\r
-       x2="1"\r
-       y1="0"\r
-       x1="0">\r
-      <stop\r
-         id="stop1557"\r
-         offset="0"\r
-         style="stop-opacity:1;stop-color:#ffffff" />\r
-      <stop\r
-         id="stop1559"\r
-         offset="0.355835"\r
-         style="stop-opacity:1;stop-color:#ffffff" />\r
-      <stop\r
-         id="stop1561"\r
-         offset="0.77301"\r
-         style="stop-opacity:1;stop-color:#77a518" />\r
-      <stop\r
-         id="stop1563"\r
-         offset="1"\r
-         style="stop-opacity:1;stop-color:#77a518" />\r
-    </linearGradient>\r
-    <clipPath\r
-       id="clipPath1589"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1587"\r
-         d="m 263.22,201.353 h 68.835 V 167.409 H 263.22 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1597"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1595"\r
-         d="m 257.41595,168.43279 7.88027,44.6912 72.56379,-12.79496 -7.88027,-44.6912 z" />\r
-    </clipPath>\r
-    <linearGradient\r
-       id="linearGradient1605"\r
-       spreadMethod="pad"\r
-       gradientTransform="matrix(7.7289581,43.833084,43.833084,-7.7289581,294.78554,162.72832)"\r
-       gradientUnits="userSpaceOnUse"\r
-       y2="0"\r
-       x2="1"\r
-       y1="0"\r
-       x1="0">\r
-      <stop\r
-         id="stop1599"\r
-         offset="0"\r
-         style="stop-opacity:1;stop-color:#77a518" />\r
-      <stop\r
-         id="stop1601"\r
-         offset="0.20091295"\r
-         style="stop-opacity:1;stop-color:#ffffff" />\r
-      <stop\r
-         id="stop1603"\r
-         offset="1"\r
-         style="stop-opacity:1;stop-color:#ffffff" />\r
-    </linearGradient>\r
-    <clipPath\r
-       id="clipPath1639"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1637"\r
-         d="m 258.72,162.909 h 77.835 v 77.836 H 258.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1647"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1645"\r
-         d="m 261.72,237.744 h 71.835 v -35.12 H 261.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1651"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1649"\r
-         d="m 261.72,202.624 h 71.835 v 35.12 H 261.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1675"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1673"\r
-         d="m 263.22,236.244 h 68.835 V 198.765 H 263.22 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1683"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1681"\r
-         d="m 332.70958,236.23269 -0.67496,-38.669 -69.46837,1.21257 0.67497,38.669 z" />\r
-    </clipPath>\r
-    <linearGradient\r
-       id="linearGradient1691"\r
-       spreadMethod="pad"\r
-       gradientTransform="matrix(-0.950119,-54.43248,-54.43248,0.950119,298.27158,253.16455)"\r
-       gradientUnits="userSpaceOnUse"\r
-       y2="0"\r
-       x2="1"\r
-       y1="0"\r
-       x1="0">\r
-      <stop\r
-         id="stop1685"\r
-         offset="0"\r
-         style="stop-opacity:1;stop-color:#77a518" />\r
-      <stop\r
-         id="stop1687"\r
-         offset="0.06066242"\r
-         style="stop-opacity:1;stop-color:#77a518" />\r
-      <stop\r
-         id="stop1689"\r
-         offset="1"\r
-         style="stop-opacity:1;stop-color:#ffffff" />\r
-    </linearGradient>\r
-    <clipPath\r
-       id="clipPath1723"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1721"\r
-         d="m 258.72,240.744 h 77.835 V 203.008 H 258.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1727"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1725"\r
-         d="m 258.72,203.008 h 77.835 v 37.736 H 258.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1914"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1912"\r
-         d="m 212.573,661.197 h 170.13 v 62.614 h -170.13 z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1954"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1952"\r
-         d="m 127.508,383.283 h 340.26 v 125.228 h -340.26 z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath1994"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1992"\r
-         d="m 258.72,162.909 h 77.835 v 77.836 H 258.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2002"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2000"\r
-         d="m 263.22,236.244 h 68.835 V 211.041 H 263.22 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2010"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2008"\r
-         d="m 258.91026,211.80096 6.38556,36.21427 71.06949,-12.53148 -6.38556,-36.21427 z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2044"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2042"\r
-         d="m 263.22,201.353 h 68.835 V 167.409 H 263.22 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2052"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2050"\r
-         d="m 257.41595,168.43279 7.88027,44.6912 72.56379,-12.79496 -7.88027,-44.6912 z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2094"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2092"\r
-         d="m 258.72,162.909 h 77.835 v 77.836 H 258.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2102"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2100"\r
-         d="m 261.72,237.744 h 71.835 v -35.12 H 261.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2106"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2104"\r
-         d="m 261.72,202.624 h 71.835 v 35.12 H 261.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2130"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2128"\r
-         d="m 263.22,236.244 h 68.835 V 198.765 H 263.22 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2138"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2136"\r
-         d="m 332.70958,236.23269 -0.67496,-38.669 -69.46837,1.21257 0.67497,38.669 z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2178"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2176"\r
-         d="m 258.72,240.744 h 77.835 V 203.008 H 258.72 Z" />\r
-    </clipPath>\r
-    <clipPath\r
-       id="clipPath2182"\r
-       clipPathUnits="userSpaceOnUse">\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path2180"\r
-         d="m 258.72,203.008 h 77.835 v 37.736 H 258.72 Z" />\r
-    </clipPath>\r
-    <linearGradient\r
-       inkscape:collect="always"\r
-       xlink:href="#linearGradient1565"\r
-       id="linearGradient2488"\r
-       gradientUnits="userSpaceOnUse"\r
-       gradientTransform="matrix(5.6686859,32.148682,32.148682,-5.6686859,295.14764,208.71826)"\r
-       x1="0"\r
-       y1="0"\r
-       x2="1"\r
-       y2="0"\r
-       spreadMethod="pad" />\r
-    <linearGradient\r
-       inkscape:collect="always"\r
-       xlink:href="#linearGradient1605"\r
-       id="linearGradient2490"\r
-       gradientUnits="userSpaceOnUse"\r
-       gradientTransform="matrix(7.7289581,43.833084,43.833084,-7.7289581,294.78554,162.72832)"\r
-       x1="0"\r
-       y1="0"\r
-       x2="1"\r
-       y2="0"\r
-       spreadMethod="pad" />\r
-    <linearGradient\r
-       inkscape:collect="always"\r
-       xlink:href="#linearGradient1691"\r
-       id="linearGradient2492"\r
-       gradientUnits="userSpaceOnUse"\r
-       gradientTransform="matrix(-0.950119,-54.43248,-54.43248,0.950119,298.27158,253.16455)"\r
-       x1="0"\r
-       y1="0"\r
-       x2="1"\r
-       y2="0"\r
-       spreadMethod="pad" />\r
-  </defs>\r
-  <sodipodi:namedview\r
-     id="base"\r
-     pagecolor="#ffffff"\r
-     bordercolor="#666666"\r
-     borderopacity="1.0"\r
-     inkscape:pageopacity="0.0"\r
-     inkscape:pageshadow="2"\r
-     inkscape:zoom="0.98994949"\r
-     inkscape:cx="176.05909"\r
-     inkscape:cy="285.56469"\r
-     inkscape:document-units="mm"\r
-     inkscape:current-layer="layer1"\r
-     showgrid="false"\r
-     units="px"\r
-     showguides="true"\r
-     inkscape:guide-bbox="true"\r
-     inkscape:window-width="1920"\r
-     inkscape:window-height="1017"\r
-     inkscape:window-x="-8"\r
-     inkscape:window-y="-8"\r
-     inkscape:window-maximized="1" />\r
-  <metadata\r
-     id="metadata895">\r
-    <rdf:RDF>\r
-      <cc:Work\r
-         rdf:about="">\r
-        <dc:format>image/svg+xml</dc:format>\r
-        <dc:type\r
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\r
-        <dc:title></dc:title>\r
-      </cc:Work>\r
-    </rdf:RDF>\r
-  </metadata>\r
-  <g\r
-     inkscape:label="Ebene 1"\r
-     inkscape:groupmode="layer"\r
-     id="layer1"\r
-     transform="translate(0,-161.53332)">\r
-    <g\r
-       transform="matrix(0.35277777,0,0,-0.35277777,326.64877,480.62189)"\r
-       inkscape:label="MAQ_Logos"\r
-       id="g1451">\r
-      <g\r
-         id="g1453">\r
-        <g\r
-           clip-path="url(#clipPath1459)"\r
-           id="g1455">\r
-          <g\r
-             transform="translate(270.8022,714.9224)"\r
-             id="g1461">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1463"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c -2.698,0 -4.798,-1.649 -4.798,-4.872 v -15.442 c 7.947,3.748 9.596,7.197 9.596,14.167 C 4.798,-1.574 2.624,0 0,0 m 10.945,-29.835 c 0,-7.195 -4.872,-11.393 -11.169,-11.393 -6.372,0 -11.169,4.198 -11.169,11.393 v 24.963 c 0,7.197 4.947,11.095 11.393,11.095 6.221,0 11.395,-4.273 11.395,-11.994 0,-12.37 -4.798,-15.968 -16.193,-21.815 v -2.249 c 0,-3.073 1.8,-4.797 4.574,-4.797 2.623,0 4.497,1.724 4.497,4.797 v 0.751 l 6.672,2.173 z" />\r
-          </g>\r
-          <g\r
-             transform="translate(371.3083,679.3778)"\r
-             id="g1465">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1467"\r
-               style="fill:#5a5758;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="M 0,0 C 2.697,0 4.798,1.65 4.798,4.873 V 20.315 C -3.149,16.567 -4.798,13.119 -4.798,6.147 -4.798,1.574 -2.624,0 0,0 m -10.945,29.835 c 0,7.196 4.872,11.394 11.169,11.394 6.373,0 11.171,-4.198 11.171,-11.394 V 4.873 C 11.395,-2.323 6.446,-6.221 0,-6.221 c -6.221,0 -11.396,4.273 -11.396,11.993 0,12.369 4.798,15.967 16.194,21.814 v 2.249 c 0,3.073 -1.8,4.797 -4.574,4.797 -2.623,0 -4.497,-1.724 -4.497,-4.797 v -0.749 l -6.672,-2.175 z" />\r
-          </g>\r
-          <g\r
-             transform="translate(297.2103,720.4166)"\r
-             id="g1469">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1471"\r
-               style="fill:#5a5758;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c -6.447,0 -11.393,-4.199 -11.393,-11.095 v -12.928 l 6.596,2.081 v 10.847 c 0,3.224 2.098,4.872 4.797,4.872 2.623,0 4.798,-1.648 4.798,-4.872 v -24.962 c 0,-3.074 -2.175,-4.797 -4.798,-4.797 -2.699,0 -4.797,1.723 -4.797,4.797 v 7.179 l -6.596,-2.08 v -5.099 c 0,-7.046 4.946,-11.394 11.393,-11.394 6.223,0 11.393,4.348 11.393,11.394 v 24.962 C 11.393,-4.199 6.223,0 0,0" />\r
-          </g>\r
-          <g\r
-             transform="translate(349.4522,667.7183)"\r
-             id="g1473">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1475"\r
-               style="fill:#5a5758;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 h -3.814 -8.255 -3.815 c -1.948,0 -3.521,0.825 -3.521,2.699 0,1.798 1.422,2.699 3.972,2.699 h 1.565 11.851 1.565 c 2.55,0 3.973,-0.901 3.973,-2.699 C 3.521,0.825 1.947,0 0,0 m -4.424,23.613 c -2.623,0 -4.947,1.649 -4.947,4.798 v 13.343 c 0,3.372 2.324,4.872 4.947,4.872 2.699,0 4.949,-1.5 4.949,-4.872 V 28.411 c 0,-3.149 -2.25,-4.798 -4.949,-4.798 M 2.399,11.544 c 1.573,0.524 2.248,1.799 2.248,3.299 0,1.424 -1.126,3.074 -3.673,3.673 4.048,2.098 5.995,5.397 5.995,10.045 v 13.043 c 0,6.896 -4.273,11.094 -11.017,11.094 -2.857,0 -4.928,-0.361 -6.198,-0.826 -1.423,-0.714 -5.496,-3.213 -5.647,-8.305 V 28.561 c 0,-6.223 3.074,-10.12 10.644,-10.795 3.524,-0.3 4.124,-1.874 4.124,-3.224 0,-0.899 -0.6,-2.323 -2.098,-2.548 h -11.914 c 0,0 -1.699,-0.03 -3.146,-0.45 -4.722,-1.2 -7.57,-4.498 -7.57,-8.921 0,-5.547 3.597,-9.144 9.82,-9.144 h 7.56 1.062 7.56 c 6.222,0 9.819,3.597 9.819,9.144 0,4.423 -2.848,7.721 -7.569,8.921" />\r
-          </g>\r
-          <g\r
-             transform="translate(259.0146,716.616)"\r
-             id="g1477">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1479"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c -2.068,2.861 -5.492,4.492 -9.344,4.492 -6.447,0 -11.393,-4.198 -11.393,-11.094 v -35.269 h 6.596 v 35.269 c 0,3.224 2.099,4.872 4.797,4.872 0.826,0 1.602,-0.172 2.285,-0.496 z" />\r
-          </g>\r
-          <g\r
-             transform="translate(332.3559,715.8876)"\r
-             id="g1481">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1483"\r
-               style="fill:#5a5758;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c -2.068,2.861 -5.492,4.492 -9.344,4.492 -6.447,0 -11.393,-4.198 -11.393,-11.094 v -35.269 h 6.596 v 35.269 c 0,3.224 2.099,4.872 4.797,4.872 0.826,0 1.602,-0.172 2.285,-0.497 z" />\r
-          </g>\r
-          <g\r
-             transform="translate(283.6098,720.5106)"\r
-             id="g1485">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1487"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c 0,-1.822 -1.477,-3.299 -3.3,-3.299 -1.822,0 -3.299,1.477 -3.299,3.299 0,1.823 1.477,3.3 3.299,3.3 C -1.477,3.3 0,1.823 0,0" />\r
-          </g>\r
-          <g\r
-             transform="translate(223.966,674.0336)"\r
-             id="g1489">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1491"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="M 0,0 C 6.447,0 11.393,4.199 11.393,11.095 V 24.521 L 4.798,22.441 V 11.095 C 4.798,7.871 2.699,6.223 0,6.223 c -2.623,0 -4.798,1.648 -4.798,4.872 v 24.962 c 0,3.074 2.175,4.797 4.798,4.797 2.699,0 4.798,-1.723 4.798,-4.797 v -6.682 l 6.595,2.082 v 4.6 c 0,7.046 -4.946,11.394 -11.393,11.394 -6.223,0 -11.393,-4.348 -11.393,-11.394 V 11.095 C -11.393,4.199 -6.223,0 0,0" />\r
-          </g>\r
-        </g>\r
-      </g>\r
-      <g\r
-         id="g1493">\r
-        <g\r
-           clip-path="url(#clipPath1499)"\r
-           id="g1495">\r
-          <g\r
-             transform="translate(243.9667,490.7339)"\r
-             id="g1501">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1503"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c -5.395,0 -9.595,-3.297 -9.595,-9.744 v -30.884 c 15.893,7.496 19.19,14.393 19.19,28.334 C 9.595,-3.148 5.249,0 0,0 m 21.89,-59.669 c 0,-14.392 -9.745,-22.787 -22.339,-22.787 -12.743,0 -22.338,8.395 -22.338,22.787 v 49.925 c 0,14.393 9.896,22.189 22.787,22.189 12.443,0 22.789,-8.546 22.789,-23.987 0,-24.739 -9.594,-31.936 -32.384,-43.629 v -4.498 c 0,-6.147 3.599,-9.596 9.146,-9.596 5.247,0 8.995,3.449 8.995,9.596 v 1.5 l 13.344,4.347 z" />\r
-          </g>\r
-          <g\r
-             transform="translate(444.9788,419.6446)"\r
-             id="g1505">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1507"\r
-               style="fill:#5a5758;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="M 0,0 C 5.395,0 9.595,3.3 9.595,9.747 V 40.631 C -6.298,33.134 -9.595,26.238 -9.595,12.294 -9.595,3.148 -5.249,0 0,0 m -21.891,59.669 c 0,14.392 9.745,22.789 22.339,22.789 12.747,0 22.341,-8.397 22.341,-22.789 V 9.747 c 0,-14.394 -9.898,-22.19 -22.789,-22.19 -12.443,0 -22.792,8.546 -22.792,23.987 0,24.737 9.597,31.934 32.387,43.627 v 4.498 c 0,6.147 -3.599,9.596 -9.147,9.596 -5.246,0 -8.994,-3.449 -8.994,-9.596 v -1.498 l -13.345,-4.349 z" />\r
-          </g>\r
-          <g\r
-             transform="translate(296.7827,501.7223)"\r
-             id="g1509">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1511"\r
-               style="fill:#5a5758;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c -12.894,0 -22.787,-8.397 -22.787,-22.189 v -25.857 l 13.193,4.162 v 21.695 c 0,6.446 4.197,9.744 9.594,9.744 5.246,0 9.595,-3.298 9.595,-9.744 v -49.925 c 0,-6.148 -4.349,-9.595 -9.595,-9.595 -5.397,0 -9.594,3.447 -9.594,9.595 v 14.359 l -13.193,-4.162 v -10.197 c 0,-14.092 9.893,-22.787 22.787,-22.787 12.445,0 22.787,8.695 22.787,22.787 v 49.925 C 22.787,-8.397 12.445,0 0,0" />\r
-          </g>\r
-          <g\r
-             transform="translate(401.2667,396.3257)"\r
-             id="g1513">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1515"\r
-               style="fill:#5a5758;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 h -7.629 -16.509 -7.631 c -3.894,0 -7.041,1.649 -7.041,5.397 0,3.597 2.845,5.399 7.945,5.399 h 3.129 23.703 3.13 c 5.1,0 7.946,-1.802 7.946,-5.399 C 7.043,1.649 3.894,0 0,0 m -8.848,47.226 c -5.247,0 -9.893,3.297 -9.893,9.596 v 26.686 c 0,6.744 4.646,9.744 9.893,9.744 5.397,0 9.897,-3 9.897,-9.744 V 56.822 c 0,-6.299 -4.5,-9.596 -9.897,-9.596 M 4.798,23.088 c 3.147,1.048 4.495,3.598 4.495,6.598 0,2.847 -2.25,6.147 -7.345,7.345 8.096,4.197 11.99,10.795 11.99,20.091 v 26.086 c 0,13.792 -8.546,22.188 -22.034,22.188 -5.714,0 -9.857,-0.722 -12.397,-1.652 -2.846,-1.429 -10.991,-6.427 -11.293,-16.61 V 57.122 c 0,-12.446 6.148,-20.24 21.289,-21.59 7.046,-0.6 8.247,-3.748 8.247,-6.447 0,-1.798 -1.201,-4.648 -4.197,-5.098 h -23.827 c 0,0 -3.399,-0.06 -6.292,-0.899 -9.443,-2.399 -15.139,-8.996 -15.139,-17.842 0,-11.093 7.194,-18.289 19.639,-18.289 h 15.12 2.123 15.12 c 12.446,0 19.64,7.196 19.64,18.289 0,8.846 -5.696,15.443 -15.139,17.842" />\r
-          </g>\r
-          <g\r
-             transform="translate(220.3915,494.1209)"\r
-             id="g1517">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1519"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c -4.137,5.722 -10.984,8.984 -18.687,8.984 -12.894,0 -22.787,-8.396 -22.787,-22.188 v -70.537 h 13.191 v 70.537 c 0,6.447 4.198,9.743 9.596,9.743 1.651,0 3.203,-0.343 4.57,-0.992 z" />\r
-          </g>\r
-          <g\r
-             transform="translate(367.074,492.6641)"\r
-             id="g1521">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1523"\r
-               style="fill:#5a5758;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c -4.137,5.722 -10.984,8.984 -18.687,8.984 -12.894,0 -22.787,-8.396 -22.787,-22.188 v -70.537 h 13.191 v 70.537 c 0,6.447 4.198,9.743 9.596,9.743 1.651,0 3.203,-0.343 4.57,-0.992 z" />\r
-          </g>\r
-          <g\r
-             transform="translate(269.5819,501.9102)"\r
-             id="g1525">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1527"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c 0,-3.643 -2.955,-6.598 -6.599,-6.598 -3.645,0 -6.6,2.955 -6.6,6.598 0,3.646 2.955,6.601 6.6,6.601 C -2.955,6.601 0,3.646 0,0" />\r
-          </g>\r
-          <g\r
-             transform="translate(150.2943,408.9563)"\r
-             id="g1529">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1531"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="M 0,0 C 12.894,0 22.787,8.397 22.787,22.189 V 49.042 L 9.595,44.881 V 22.189 c 0,-6.446 -4.198,-9.744 -9.595,-9.744 -5.246,0 -9.595,3.298 -9.595,9.744 v 49.925 c 0,6.148 4.349,9.595 9.595,9.595 5.397,0 9.595,-3.447 9.595,-9.595 V 58.751 l 13.192,4.163 v 9.2 c 0,14.092 -9.893,22.787 -22.787,22.787 -12.445,0 -22.787,-8.695 -22.787,-22.787 V 22.189 C -22.787,8.397 -12.445,0 0,0" />\r
-          </g>\r
-        </g>\r
-      </g>\r
-      <g\r
-         id="g1533">\r
-        <g\r
-           clip-path="url(#clipPath1539)"\r
-           id="g1535">\r
-          <g\r
-             id="g1541">\r
-            <g\r
-               id="g1543" />\r
-            <g\r
-               id="g1581">\r
-              <g\r
-                 id="g1579"\r
-                 clip-path="url(#clipPath1547)">\r
-                <g\r
-                   id="g1577">\r
-                  <g\r
-                     id="g1575">\r
-                    <g\r
-                       id="g1573">\r
-                      <g\r
-                         id="g1571">\r
-                        <g\r
-                           id="g1569"\r
-                           clip-path="url(#clipPath1555)">\r
-                          <path\r
-                             inkscape:connector-curvature="0"\r
-                             id="path1567"\r
-                             style="fill:url(#linearGradient2488);stroke:none"\r
-                             d="m 268.724,236.244 c -3.034,0 -5.504,-2.469 -5.504,-5.503 v 0 -16.24 c 9.232,-2.155 21.298,-3.46 34.502,-3.46 v 0 c 13.124,0 25.123,1.289 34.333,3.421 v 0 16.279 c 0,3.034 -2.469,5.503 -5.504,5.503 v 0 z" />\r
-                        </g>\r
-                      </g>\r
-                    </g>\r
-                  </g>\r
-                </g>\r
-              </g>\r
-            </g>\r
-          </g>\r
-          <g\r
-             id="g1583">\r
-            <g\r
-               id="g1585" />\r
-            <g\r
-               id="g1621">\r
-              <g\r
-                 id="g1619"\r
-                 clip-path="url(#clipPath1589)">\r
-                <g\r
-                   id="g1617">\r
-                  <g\r
-                     id="g1615">\r
-                    <g\r
-                       id="g1613">\r
-                      <g\r
-                         id="g1611">\r
-                        <g\r
-                           id="g1609"\r
-                           clip-path="url(#clipPath1597)">\r
-                          <path\r
-                             inkscape:connector-curvature="0"\r
-                             id="path1607"\r
-                             style="fill:url(#linearGradient2490);stroke:none"\r
-                             d="m 291.211,194.844 c -10.141,-2.7 -19.635,-5.951 -27.991,-9.461 v 0 -12.469 c 0,-3.035 2.47,-5.504 5.504,-5.504 v 0 h 57.827 c 0.019,0 0.038,0.003 0.058,0.003 v 0 c 1.376,0.602 2.719,1.209 4.025,1.822 v 0 c 0.881,0.977 1.421,2.264 1.421,3.679 v 0 28.438 c -11.358,-0.295 -25.583,-2.446 -40.844,-6.508" />\r
-                        </g>\r
-                      </g>\r
-                    </g>\r
-                  </g>\r
-                </g>\r
-              </g>\r
-            </g>\r
-          </g>\r
-        </g>\r
-      </g>\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path1623"\r
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-         d="m 333.315,193.599 h -70.832 v 10 h 70.832 z" />\r
-      <g\r
-         transform="translate(290.9775,200.8271)"\r
-         id="g1625">\r
-        <path\r
-           inkscape:connector-curvature="0"\r
-           id="path1627"\r
-           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-           d="M 0,0 7.071,-7.071" />\r
-      </g>\r
-      <g\r
-         transform="translate(305.1197,200.8271)"\r
-         id="g1629">\r
-        <path\r
-           inkscape:connector-curvature="0"\r
-           id="path1631"\r
-           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-           d="M 0,0 -7.071,-7.071" />\r
-      </g>\r
-      <g\r
-         id="g1633">\r
-        <g\r
-           clip-path="url(#clipPath1639)"\r
-           id="g1635">\r
-          <g\r
-             id="g1641">\r
-            <g\r
-               id="g1643" />\r
-            <g\r
-               id="g1663">\r
-              <g\r
-                 style="opacity:0.58000201"\r
-                 id="g1661"\r
-                 clip-path="url(#clipPath1647)">\r
-                <g\r
-                   id="g1659">\r
-                  <g\r
-                     id="g1657"\r
-                     clip-path="url(#clipPath1651)">\r
-                    <g\r
-                       id="g1655"\r
-                       transform="translate(263.2205,230.7404)">\r
-                      <path\r
-                         inkscape:connector-curvature="0"\r
-                         id="path1653"\r
-                         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-                         d="m 0,0 c 0,3.035 2.469,5.504 5.503,5.504 h 57.828 c 3.034,0 5.504,-2.469 5.504,-5.504 v -27.748 c 0.504,0.134 1.004,0.268 1.5,0.407 V 0 c 0,3.862 -3.143,7.004 -7.004,7.004 H 5.503 C 1.642,7.004 -1.5,3.862 -1.5,0 v -27.733 c 0.495,-0.13 0.996,-0.258 1.5,-0.383 z" />\r
-                    </g>\r
-                  </g>\r
-                </g>\r
-              </g>\r
-            </g>\r
-          </g>\r
-          <g\r
-             transform="translate(326.551,236.2442)"\r
-             id="g1665">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1667"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 h -57.827 c -3.035,0 -5.504,-2.469 -5.504,-5.504 V -33.62 c 9.849,-2.45 21.375,-3.86 33.697,-3.86 12.928,0 24.98,1.552 35.138,4.229 V -5.504 C 5.504,-2.469 3.035,0 0,0" />\r
-          </g>\r
-          <g\r
-             id="g1669">\r
-            <g\r
-               id="g1671" />\r
-            <g\r
-               id="g1707">\r
-              <g\r
-                 id="g1705"\r
-                 clip-path="url(#clipPath1675)">\r
-                <g\r
-                   id="g1703">\r
-                  <g\r
-                     id="g1701">\r
-                    <g\r
-                       id="g1699">\r
-                      <g\r
-                         id="g1697">\r
-                        <g\r
-                           id="g1695"\r
-                           clip-path="url(#clipPath1683)">\r
-                          <path\r
-                             inkscape:connector-curvature="0"\r
-                             id="path1693"\r
-                             style="fill:url(#linearGradient2492);stroke:none"\r
-                             d="m 268.724,236.244 c -3.034,0 -5.504,-2.469 -5.504,-5.503 v 0 -28.117 c 9.849,-2.45 21.375,-3.859 33.697,-3.859 v 0 c 12.928,0 24.981,1.552 35.138,4.228 v 0 27.748 c 0,3.034 -2.469,5.503 -5.504,5.503 v 0 z" />\r
-                        </g>\r
-                      </g>\r
-                    </g>\r
-                  </g>\r
-                </g>\r
-              </g>\r
-            </g>\r
-          </g>\r
-          <g\r
-             transform="translate(326.551,240.7442)"\r
-             id="g1709">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1711"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 h -57.827 c -5.516,0 -10.004,-4.487 -10.004,-10.004 v -26.89 c 0.981,-0.292 1.981,-0.572 3,-0.842 v 27.732 c 0,3.862 3.143,7.004 7.004,7.004 L 0,-3 c 3.862,0 7.004,-3.142 7.004,-7.004 v -27.341 c 1.022,0.285 2.021,0.584 3,0.893 v 26.448 C 10.004,-4.487 5.516,0 0,0" />\r
-          </g>\r
-          <g\r
-             transform="translate(333.5552,172.9137)"\r
-             id="g1713">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1715"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c 0,-3.862 -3.142,-7.004 -7.004,-7.004 h -57.828 c -3.861,0 -7.003,3.142 -7.003,7.004 v 30.094 c -1.019,0.27 -2.02,0.55 -3,0.843 V 0 c 0,-5.516 4.487,-10.004 10.003,-10.004 H -7.004 C -1.487,-10.004 3,-5.516 3,0 V 31.378 C 2.02,31.07 1.021,30.771 0,30.486 Z" />\r
-          </g>\r
-          <g\r
-             id="g1717">\r
-            <g\r
-               id="g1719" />\r
-            <g\r
-               id="g1739">\r
-              <g\r
-                 style="opacity:0.58000201"\r
-                 id="g1737"\r
-                 clip-path="url(#clipPath1723)">\r
-                <g\r
-                   id="g1735">\r
-                  <g\r
-                     id="g1733"\r
-                     clip-path="url(#clipPath1727)">\r
-                    <g\r
-                       id="g1731"\r
-                       transform="translate(326.551,240.7442)">\r
-                      <path\r
-                         inkscape:connector-curvature="0"\r
-                         id="path1729"\r
-                         style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-                         d="m 0,0 h -57.827 c -5.516,0 -10.004,-4.487 -10.004,-10.004 v -26.89 c 0.981,-0.292 1.981,-0.572 3,-0.842 v 27.732 c 0,3.862 3.143,7.004 7.004,7.004 L 0,-3 c 3.862,0 7.004,-3.142 7.004,-7.004 v -27.341 c 1.022,0.285 2.021,0.584 3,0.893 v 26.448 C 10.004,-4.487 5.516,0 0,0" />\r
-                    </g>\r
-                  </g>\r
-                </g>\r
-              </g>\r
-            </g>\r
-          </g>\r
-          <g\r
-             transform="translate(263.2205,202.6242)"\r
-             id="g1741">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1743"\r
-               style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 v -29.711 c 0,-3.035 2.469,-5.504 5.503,-5.504 h 57.828 c 3.034,0 5.504,2.469 5.504,5.504 V 0.368 C 58.677,-2.308 46.624,-3.86 33.697,-3.86 21.375,-3.86 9.849,-2.45 0,0" />\r
-          </g>\r
-          <g\r
-             transform="translate(314.9857,230.1868)"\r
-             id="g1745">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1747"\r
-               style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="m 0,0 c -7.664,0 -13.546,-4.993 -13.546,-13.19 v -15.965 l 7.841,2.475 v 13.49 c 0,3.831 2.496,5.79 5.705,5.79 3.119,0 5.705,-1.959 5.705,-5.79 v -29.682 c 0,-3.655 -2.586,-5.704 -5.705,-5.704 -3.209,0 -5.705,2.049 -5.705,5.704 v 7.944 l -7.841,-2.477 v -5.467 c 0,-8.378 5.882,-13.548 13.546,-13.548 7.399,0 13.547,5.17 13.547,13.548 V -13.19 C 13.547,-4.993 7.399,0 0,0" />\r
-          </g>\r
-          <g\r
-             transform="translate(281.1871,173.8764)"\r
-             id="g1749">\r
-            <path\r
-               inkscape:connector-curvature="0"\r
-               id="path1751"\r
-               style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-               d="M 0,0 C 7.666,0 13.547,4.992 13.547,13.193 V 29.16 L 5.705,26.683 V 13.193 C 5.705,9.361 3.209,7.4 0,7.4 c -3.118,0 -5.705,1.961 -5.705,5.793 v 29.681 c 0,3.654 2.587,5.703 5.705,5.703 3.209,0 5.705,-2.049 5.705,-5.703 v -7.945 l 7.842,2.476 v 5.469 c 0,8.379 -5.881,13.547 -13.547,13.547 -7.399,0 -13.547,-5.168 -13.547,-13.547 V 13.193 C -13.547,4.992 -7.399,0 0,0" />\r
-          </g>\r
-        </g>\r
-      </g>\r
-    </g>\r
-    <path\r
-       d="M 110.10394,208.21733 H 85.115989 v -3.52778 h 24.987951 z"\r
-       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.35277778"\r
-       id="path2078"\r
-       inkscape:connector-curvature="0" />\r
-    <g\r
-       id="g2080"\r
-       transform="matrix(0.35277777,0,0,-0.35277777,95.168215,205.66741)">\r
-      <path\r
-         d="M 0,0 7.071,-7.071"\r
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-         id="path2082"\r
-         inkscape:connector-curvature="0" />\r
-    </g>\r
-    <g\r
-       id="g2084"\r
-       transform="matrix(0.35277777,0,0,-0.35277777,100.15727,205.66741)">\r
-      <path\r
-         d="M 0,0 -7.071,-7.071"\r
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-         id="path2086"\r
-         inkscape:connector-curvature="0" />\r
-    </g>\r
-    <g\r
-       clip-path="url(#clipPath2094)"\r
-       id="g2090"\r
-       transform="matrix(1.7404338,0,0,-1.740445,-450.28504,580.53537)">\r
-      <g\r
-         id="g2096">\r
-        <g\r
-           id="g2098" />\r
-        <g\r
-           id="g2118">\r
-          <g\r
-             style="opacity:0.58000201"\r
-             id="g2116"\r
-             clip-path="url(#clipPath2102)">\r
-            <g\r
-               id="g2114">\r
-              <g\r
-                 id="g2112"\r
-                 clip-path="url(#clipPath2106)">\r
-                <g\r
-                   id="g2110"\r
-                   transform="translate(263.2205,230.7404)" />\r
-              </g>\r
-            </g>\r
-          </g>\r
-        </g>\r
-      </g>\r
-      <g\r
-         transform="translate(326.551,240.7442)"\r
-         id="g2164">\r
-        <path\r
-           inkscape:connector-curvature="0"\r
-           id="path2166"\r
-           style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-           d="m 0,0 h -57.827 c -5.516,0 -10.004,-4.487 -10.004,-10.004 v -26.89 c 0.981,-0.292 1.981,-0.572 3,-0.842 v 27.732 c 0,3.862 3.143,7.004 7.004,7.004 L 0,-3 c 3.862,0 7.004,-3.142 7.004,-7.004 v -27.341 c 1.022,0.285 2.021,0.584 3,0.893 v 26.448 C 10.004,-4.487 5.516,0 0,0" />\r
-      </g>\r
-      <g\r
-         transform="translate(333.5552,172.9137)"\r
-         id="g2168">\r
-        <path\r
-           inkscape:connector-curvature="0"\r
-           id="path2170"\r
-           style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-           d="m 0,0 c 0,-3.862 -3.142,-7.004 -7.004,-7.004 h -57.828 c -3.861,0 -7.003,3.142 -7.003,7.004 v 30.094 c -1.019,0.27 -2.02,0.55 -3,0.843 V 0 c 0,-5.516 4.487,-10.004 10.003,-10.004 H -7.004 C -1.487,-10.004 3,-5.516 3,0 V 31.378 C 2.02,31.07 1.021,30.771 0,30.486 Z" />\r
-      </g>\r
-      <g\r
-         id="g2172">\r
-        <g\r
-           id="g2174" />\r
-        <g\r
-           id="g2194">\r
-          <g\r
-             style="opacity:0.58000201"\r
-             id="g2192"\r
-             clip-path="url(#clipPath2178)">\r
-            <g\r
-               id="g2190">\r
-              <g\r
-                 id="g2188"\r
-                 clip-path="url(#clipPath2182)">\r
-                <g\r
-                   id="g2186"\r
-                   transform="translate(326.551,240.7442)">\r
-                  <path\r
-                     inkscape:connector-curvature="0"\r
-                     id="path2184"\r
-                     style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-                     d="m 0,0 h -57.827 c -5.516,0 -10.004,-4.487 -10.004,-10.004 v -26.89 c 0.981,-0.292 1.981,-0.572 3,-0.842 v 27.732 c 0,3.862 3.143,7.004 7.004,7.004 L 0,-3 c 3.862,0 7.004,-3.142 7.004,-7.004 v -27.341 c 1.022,0.285 2.021,0.584 3,0.893 v 26.448 C 10.004,-4.487 5.516,0 0,0" />\r
-                </g>\r
-              </g>\r
-            </g>\r
-          </g>\r
-        </g>\r
-      </g>\r
-      <g\r
-         transform="translate(263.2205,202.6242)"\r
-         id="g2196"\r
-         style="fill:#77a518;fill-opacity:1" />\r
-      <g\r
-         transform="translate(314.9857,230.1868)"\r
-         id="g2200"\r
-         style="fill:#5a5758;fill-opacity:1">\r
-        <path\r
-           inkscape:connector-curvature="0"\r
-           id="path2202"\r
-           style="fill:#5a5758;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-           d="m 0,0 c -7.664,0 -13.546,-4.993 -13.546,-13.19 v -15.965 l 7.841,2.475 v 13.49 c 0,3.831 2.496,5.79 5.705,5.79 3.119,0 5.705,-1.959 5.705,-5.79 v -29.682 c 0,-3.655 -2.586,-5.704 -5.705,-5.704 -3.209,0 -5.705,2.049 -5.705,5.704 v 7.944 l -7.841,-2.477 v -5.467 c 0,-8.378 5.882,-13.548 13.546,-13.548 7.399,0 13.547,5.17 13.547,13.548 V -13.19 C 13.547,-4.993 7.399,0 0,0" />\r
-      </g>\r
-      <g\r
-         transform="translate(281.1871,173.8764)"\r
-         id="g2204"\r
-         style="fill:#77a518;fill-opacity:1">\r
-        <path\r
-           inkscape:connector-curvature="0"\r
-           id="path2206"\r
-           style="fill:#77a518;fill-opacity:1;fill-rule:nonzero;stroke:none"\r
-           d="M 0,0 C 7.666,0 13.547,4.992 13.547,13.193 V 29.16 L 5.705,26.683 V 13.193 C 5.705,9.361 3.209,7.4 0,7.4 c -3.118,0 -5.705,1.961 -5.705,5.793 v 29.681 c 0,3.654 2.587,5.703 5.705,5.703 3.209,0 5.705,-2.049 5.705,-5.703 v -7.945 l 7.842,2.476 v 5.469 c 0,8.379 -5.881,13.547 -13.547,13.547 -7.399,0 -13.547,-5.168 -13.547,-13.547 V 13.193 C -13.547,4.992 -7.399,0 0,0" />\r
-      </g>\r
-    </g>\r
-    <g\r
-       aria-label="`"\r
-       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"\r
-       id="text2496">\r
-      <path\r
-         d="m 74.674946,183.93304 h -4.619873 l -8.4646,-11.59619 h 7.534424 z"\r
-         style="font-size:63.5px;fill:#5a5758;fill-opacity:1;stroke-width:0.26458332"\r
-         id="path2500" />\r
-    </g>\r
-  </g>\r
-</svg>\r
diff --git a/website/img/apps/datastorelogo.svg b/website/img/apps/datastorelogo.svg
deleted file mode 100644 (file)
index 8278e97..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
-   height="512"
-   width="512"
-   sodipodi:docname="datastorelogo.svg"
-   xml:space="preserve"
-   viewBox="0 0 512 512"
-   y="0px"
-   x="0px"
-   id="Capa_1"
-   version="1.1"><metadata
-   id="metadata97"><rdf:RDF><cc:Work
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
-   id="defs95">
-       
-</defs><sodipodi:namedview
-   inkscape:current-layer="g58"
-   inkscape:window-maximized="1"
-   inkscape:window-y="-9"
-   inkscape:window-x="-9"
-   inkscape:cy="315.93583"
-   inkscape:cx="118.79013"
-   inkscape:zoom="1.2227055"
-   showgrid="false"
-   id="namedview93"
-   inkscape:window-height="1001"
-   inkscape:window-width="1920"
-   inkscape:pageshadow="2"
-   inkscape:pageopacity="0"
-   guidetolerance="10"
-   gridtolerance="10"
-   objecttolerance="10"
-   borderopacity="1"
-   bordercolor="#666666"
-   pagecolor="#ffffff" />
-<g
-   id="g58">
-               
-       <g
-   id="g1068"><rect
-     style="fill:#52638f;fill-opacity:1;stroke:none;stroke-width:4.78932;stroke-linecap:square;stroke-linejoin:round"
-     id="rect963"
-     width="468.02481"
-     height="471.20999"
-     x="22.752012"
-     y="22.838272"
-     ry="28.367157" /><rect
-     style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:7.5407;stroke-linecap:square;stroke-linejoin:round"
-     id="rect1035"
-     width="134.1288"
-     height="433.46497"
-     x="40.892921"
-     y="42.528629"
-     ry="19.015203" /><g
-     id="g56"
-     transform="translate(16.357169,19.628603)"
-     style="fill:#52638e;fill-opacity:1">
-                       <path
-   id="path2"
-   d="M 440,0 H 40 C 17.92,0.026 0.026,17.92 0,40 v 400 c 0.026,22.08 17.92,39.974 40,40 h 400 c 22.08,-0.026 39.974,-17.92 40,-40 V 40 C 479.974,17.92 462.08,0.026 440,0 Z m 24,440 c 0,13.255 -10.745,24 -24,24 H 40 C 26.745,464 16,453.255 16,440 V 40 C 16,26.745 26.745,16 40,16 h 400 c 13.255,0 24,10.745 24,24 z"
-   style="fill:#52638e;fill-opacity:1" />
-                       <path
-   id="path4"
-   d="M 212.80363,434.45358 432,432 V 48 L 176.81786,80.714338 Z M 191.18214,61.546425 256,64 v 8 h 16 v -8 h 64 v 8 h 16 v -8 h 64 v 352 h -64 v -8 h -16 v 8 h -64 v -8 h -16 v 8 h -64 z"
-   style="fill:#52638e;fill-opacity:1"
-   sodipodi:nodetypes="cccccccccccccccccccccccccc" />
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-                       
-               </g><rect
-     style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.83171;stroke-linecap:square;stroke-linejoin:round"
-     id="rect982"
-     width="275.61829"
-     height="437.60608"
-     x="200.82889"
-     y="39.205387"
-     ry="17.350021" /><g
-     transform="matrix(-0.77590801,-0.46643367,-0.77273361,0.4683498,731.85319,257.14098)"
-     id="g8"
-     style="fill:#555658;fill-opacity:1"><g
-       id="g6"
-       style="fill:#555658;fill-opacity:1"><path
-         id="path2-9"
-         d="m 211.26,389.24 -60.331,60.331 C 125.917,474.583 85.412,474.583 60.421,449.576 35.425,424.58 35.425,384.071 60.416,359.08 L 181.099,238.397 c 24.991,-24.992 65.5,-24.992 90.491,0 8.331,8.331 21.839,8.331 30.17,0 8.331,-8.331 8.331,-21.839 0,-30.17 -41.654,-41.654 -109.177,-41.654 -150.831,0 L 30.247,328.909 c -41.654,41.654 -41.654,109.177 0,150.831 41.649,41.676 109.177,41.676 150.853,0 l 60.331,-60.331 c 8.331,-8.331 8.331,-21.839 0,-30.17 -8.331,-8.331 -21.84,-8.33 -30.171,0.001 z"
-         style="fill:#555658;fill-opacity:1" /><path
-         id="path4-7"
-         d="m 479.751,30.24 c -41.654,-41.654 -109.199,-41.654 -150.853,0 l -72.384,72.384 c -8.331,8.331 -8.331,21.839 0,30.17 8.331,8.331 21.839,8.331 30.17,0 L 359.068,60.41 c 24.991,-24.992 65.521,-24.992 90.513,0 24.991,24.991 24.991,65.5 0,90.491 L 316.845,283.638 c -24.992,24.992 -65.5,24.992 -90.491,0 -8.331,-8.331 -21.839,-8.331 -30.17,0 -8.331,8.331 -8.331,21.839 0,30.17 41.654,41.654 109.177,41.654 150.831,0 L 479.751,181.072 c 41.654,-41.654 41.654,-109.178 0,-150.832 z"
-         style="fill:#555658;fill-opacity:1" /></g></g><rect
-     style="fill:#00000f;fill-opacity:1;stroke:none;stroke-width:5.00032;stroke-linecap:square;stroke-linejoin:round"
-     id="rect984"
-     width="1.5005017e-05"
-     height="34.350056"
-     x="435.10071"
-     y="74.425117"
-     ry="7.5025087e-06" /><rect
-     style="fill:#00000f;fill-opacity:1;stroke:none;stroke-width:5.00032;stroke-linecap:square;stroke-linejoin:round"
-     id="rect986"
-     width="10.63216"
-     height="1.6357169"
-     x="386.84705"
-     y="143.12523"
-     ry="7.50251e-06" /><rect
-     style="fill:#555658;fill-opacity:1;stroke:none;stroke-width:5.00032;stroke-linecap:square;stroke-linejoin:round"
-     id="rect1037"
-     width="113.68232"
-     height="115.31805"
-     x="49.889366"
-     y="54.796516"
-     ry="20.446461" /><rect
-     ry="20.714382"
-     y="181.4753"
-     x="49.889366"
-     height="285.43262"
-     width="58.067947"
-     id="rect1037-0"
-     style="fill:#555658;fill-opacity:1;stroke:none;stroke-width:5.55741;stroke-linecap:square;stroke-linejoin:round" /></g></g>
-<g
-   id="g62">
-</g>
-<g
-   id="g64">
-</g>
-<g
-   id="g66">
-</g>
-<g
-   id="g68">
-</g>
-<g
-   id="g70">
-</g>
-<g
-   id="g72">
-</g>
-<g
-   id="g74">
-</g>
-<g
-   id="g76">
-</g>
-<g
-   id="g78">
-</g>
-<g
-   id="g80">
-</g>
-<g
-   id="g82">
-</g>
-<g
-   id="g84">
-</g>
-<g
-   id="g86">
-</g>
-<g
-   id="g88">
-</g>
-<g
-   id="g90">
-</g>
-</svg>
diff --git a/website/img/apps/dkstools.svg b/website/img/apps/dkstools.svg
deleted file mode 100644 (file)
index c20a204..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->\r
-\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\r
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\r
-   version="1.1"\r
-   id="Capa_1"\r
-   x="0px"\r
-   y="0px"\r
-   viewBox="0 0 512.00001 512.00001"\r
-   xml:space="preserve"\r
-   sodipodi:docname="dkstools.svg"\r
-   width="512"\r
-   height="512"\r
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata\r
-   id="metadata51"><rdf:RDF><cc:Work\r
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type\r
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs\r
-   id="defs49">\r
-       \r
-       \r
-       \r
-       \r
-       \r
-       \r
-</defs><sodipodi:namedview\r
-   pagecolor="#ffffff"\r
-   bordercolor="#666666"\r
-   borderopacity="1"\r
-   objecttolerance="10"\r
-   gridtolerance="10"\r
-   guidetolerance="10"\r
-   inkscape:pageopacity="0"\r
-   inkscape:pageshadow="2"\r
-   inkscape:window-width="1920"\r
-   inkscape:window-height="1017"\r
-   id="namedview47"\r
-   showgrid="false"\r
-   inkscape:zoom="0.69974172"\r
-   inkscape:cx="472.22206"\r
-   inkscape:cy="344.38866"\r
-   inkscape:window-x="-8"\r
-   inkscape:window-y="-8"\r
-   inkscape:window-maximized="1"\r
-   inkscape:current-layer="Capa_1" />\r
-<polygon\r
-   id="polygon2"\r
-   points="399.542,186.525 398.912,186.565 345.204,240.669 399.542,240.669 "\r
-   transform="translate(20.210508,14.821505)"\r
-   style="fill:#52638e;fill-opacity:1" /><path\r
-   inkscape:connector-curvature="0"\r
-   id="path4"\r
-   d="m 115.17351,255.49051 h 26.059 l -10.794,-25.94901 c -0.256,-0.622 -0.364,-1.258 -0.566,-1.88 -3.922,-12.074 1.934,-25.359 13.844,-30.321 l 0.054,-0.024 -0.078,-0.032 c -6.063,-2.516 -10.793,-7.235 -13.331,-13.331 -2.509,-6.049 -2.524,-12.727 -0.024,-18.82999 l 12.082,-29.28801 c 3.836,-9.23299 12.773,-15.19599 22.773,-15.19599 3.23,0 6.39,0.63 9.387,1.864 l 0.062,0.024 -0.03,-0.07 c -0.986,-2.384 -1.452,-4.829 -1.67,-7.275 -5.451,-2.959 -11.601,-4.799 -18.24,-4.799 H 58.653508 c -21.229,-0.001 -38.443,17.213 -38.443,38.44299 v 19.202 59.633 163.641 l 48.576,-106.04199 c 8.285,-18.084 26.493,-29.77 46.387002,-29.77 z"\r
-   style="fill:#52638e;fill-opacity:1" /><path\r
-   inkscape:connector-curvature="0"\r
-   id="path6"\r
-   d="m 168.51751,137.2015 c -1.088,-0.45 -2.214,-0.66 -3.324,-0.66 -3.432,0 -6.693,2.034 -8.091,5.397 l -12.067,29.24901 c -0.878,2.144 -0.87,4.543 0.016,6.679 0.892,2.142 2.594,3.84399 4.728,4.728 l 16.61,6.841 c -0.49,5.187 -0.512,10.435 0,15.692 l -16.562,6.895 c -4.441,1.848 -6.553,6.965 -4.705,11.415 l 12.159,29.219 c 0.498,1.204 1.452,2.004 2.354,2.834 h 13.549 l 12.051,-5.016 c 1.538,1.84 3.378,3.324 5.055,5.016 h 45.641 l 3.13,-3.152 c -18.41,-3.464 -34.11,-15.81 -41.503,-33.576 -5.768,-13.875 -5.792,-29.164 -0.062,-43.055 5.723,-13.891 16.516,-24.715 30.392,-30.484 6.903,-2.88 14.178,-4.34 21.602,-4.34 22.797,0 43.187,13.611 51.946,34.668 1.452,3.479 2.532,7.051 3.26,10.669 l 39.151,-39.452 -2.128,-5.117 c -1.398,-3.354 -4.659,-5.381 -8.075,-5.381 -1.12,0 -2.245,0.218 -3.339,0.668 l -16.562,6.887 c -3.378,-4.068 -7.127,-7.757 -11.143,-11.065 l 6.849,-16.608 c 0.884,-2.144 0.878,-4.543 -0.008,-6.677 -0.894,-2.136 -2.586,-3.836 -4.745,-4.729 l -29.236,-12.052005 c -1.088,-0.45 -2.221,-0.66 -3.331,-0.66 -3.432,0 -6.685,2.034 -8.067,5.396 l -6.857,16.626005 c -2.624,-0.242 -5.264,-0.374 -7.911,-0.374 -2.586,0 -5.187,0.124 -7.797,0.38 l -6.887,-16.562005 c -1.398,-3.354 -4.643,-5.38 -8.051,-5.38 -1.118,0 -2.252,0.216 -3.347,0.674 l -29.212,12.144995 c -4.441,1.856 -6.553,6.96501 -4.705,11.415 l 6.895,16.562 c -4.084,3.37 -7.773,7.113 -11.081,11.135 z"\r
-   style="fill:#b3b3b3" /><path\r
-   inkscape:connector-curvature="0"\r
-   id="path8"\r
-   d="m 249.48751,156.7855 c -5.319,0 -10.529,1.048 -15.498,3.114 -9.947,4.138 -17.688,11.911 -21.796,21.873 -4.107,9.961 -4.093,20.934 0.046,30.887 6.895,16.578 24.675,26.199 42.077,24.305 l 35.12,-35.376 c 0.752,-6.709 -0.016,-13.526 -2.68,-19.933 -6.288,-15.103 -20.917,-24.87 -37.269,-24.87 z"\r
-   style="fill:#ffcc00" /><path\r
-   inkscape:connector-curvature="0"\r
-   id="path10"\r
-   d="m 479.47051,110.04851 -25.173,25.35099 c -4.427,4.457 -11.609,4.473 -16.066,0.048 -30.818,-30.56999 -30.291,-22.719 6.545,-59.834995 9.459,-9.521 -18.426,-26.261 -38.256,-12.113 -37.862,26.943 -34.624,31.283 -37.062,80.039005 l -111.12,111.952 h 84.666 l 69.122,-69.634 30.344,-1.74 c 15.934,-0.908 30.592,-9.06101 39.763,-22.14501 l 9.651,-13.758 c 13.87,-19.801 -2.816,-47.823 -12.414,-38.16499 z"\r
-   style="fill:#808080" /><path\r
-   inkscape:connector-curvature="0"\r
-   id="path12"\r
-   d="m 454.94951,279.3435 h -339.776 c -10.631,0 -20.274002,6.195 -24.699002,15.856 l -60.007,130.983 c -2.244,4.892 -1.84,10.591 1.064,15.118 2.912,4.526 7.921,7.267 13.309,7.267 H 409.60451 c 6.189,0 11.803,-3.603 14.372,-9.225 l 55.673,-121.518 c 3.852,-8.409 3.16,-18.2 -1.84,-25.989 -4.994,-7.787 -13.612,-12.492 -22.86,-12.492 z"\r
-   style="fill:#6a92d3;fill-opacity:1" />\r
-<g\r
-   id="g16"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g18"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g20"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g22"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g24"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g26"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g28"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g30"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g32"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g34"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g36"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g38"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g40"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g42"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-<g\r
-   id="g44"\r
-   transform="translate(0,35.032013)">\r
-</g>\r
-</svg>
\ No newline at end of file
diff --git a/website/img/apps/dksvpn.svg b/website/img/apps/dksvpn.svg
deleted file mode 100644 (file)
index d805810..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\r
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\r
-   version="1.2"\r
-   x="0px"\r
-   y="0px"\r
-   width="512"\r
-   height="512"\r
-   viewBox="0 0 178.688 218.4192"\r
-   id="svg4"\r
-   sodipodi:docname="dksvpn.svg"\r
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">\r
-  <metadata\r
-     id="metadata10">\r
-    <rdf:RDF>\r
-      <cc:Work\r
-         rdf:about="">\r
-        <dc:format>image/svg+xml</dc:format>\r
-        <dc:type\r
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\r
-        <dc:title></dc:title>\r
-      </cc:Work>\r
-    </rdf:RDF>\r
-  </metadata>\r
-  <defs\r
-     id="defs8" />\r
-  <sodipodi:namedview\r
-     pagecolor="#ffffff"\r
-     bordercolor="#666666"\r
-     borderopacity="1"\r
-     objecttolerance="10"\r
-     gridtolerance="10"\r
-     guidetolerance="10"\r
-     inkscape:pageopacity="0"\r
-     inkscape:pageshadow="2"\r
-     inkscape:window-width="1920"\r
-     inkscape:window-height="1017"\r
-     id="namedview6"\r
-     showgrid="false"\r
-     inkscape:zoom="1.18"\r
-     inkscape:cx="41.464614"\r
-     inkscape:cy="366.89909"\r
-     inkscape:window-x="-8"\r
-     inkscape:window-y="-8"\r
-     inkscape:window-maximized="1"\r
-     inkscape:current-layer="svg4" />\r
-  <path\r
-     d="m 89.343954,48.527656 c 0,0 36.122776,17.415653 59.347946,14.336079 0,0 16.03401,85.925715 -59.347946,109.617335 C 13.96155,148.78945 29.996236,62.863735 29.996236,62.863735 53.220611,65.943309 89.343954,48.527656 89.343954,48.527656 Z m 5.5e-4,-22.115507 c 0,0 -48.551174,23.423307 -79.775753,19.271011 -1.1e-6,0 -21.549682,115.49276 79.775753,147.33784 C 190.66948,161.17592 169.11857,45.68316 169.11857,45.68316 137.89444,49.835456 89.344504,26.412149 89.344504,26.412149 Z m -0.0079,-12.760949 7.139262,3.429503 c 10.519364,5.051218 42.644924,18.185031 64.718204,18.185031 1.94614,0 3.84153,-0.115568 5.65455,-0.350288 l 13.81709,-1.842727 2.05671,11.012378 c 0.93979,5.062147 21.88827,124.451613 -88.317931,159.096303 l -5.059987,1.5866 -5.061908,-1.5866 C -25.921679,168.53716 -4.9744559,49.147692 -4.0345493,44.085544 l 2.0576161,-11.012377 13.8159622,1.842727 c 1.814491,0.233824 3.701972,0.350288 5.655568,0.350288 22.072377,0 54.199632,-13.133813 64.716621,-18.185031 z"\r
-     id="path2"\r
-     inkscape:connector-curvature="0"\r
-     style="stroke-width:10.05348682" />\r
-  <path\r
-     style="fill:#52638e;fill-opacity:1;stroke:#000000;stroke-width:0.42660001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="M 89.343953,48.527657 V 172.48107 c 14.099487,-5.42288 70.193707,-21.40513 59.347947,-109.617337 0,0 -17.411,5.186297 -59.347947,-14.336076 z"\r
-     id="path817"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="cccc" />\r
-  <path\r
-     style="fill:#6a92d3;fill-opacity:1;stroke:#000000;stroke-width:0.42660001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="M 89.343953,48.527657 V 172.48107 c 0,0 -70.555005,-13.09005 -59.347717,-109.617337 0,0 17.410768,4.824771 59.347717,-14.336076 z"\r
-     id="path819"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="cccc" />\r
-</svg>\r
diff --git a/website/img/apps/hourtraxlogo.svg b/website/img/apps/hourtraxlogo.svg
deleted file mode 100644 (file)
index 519e8d2..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<!-- Created with Inkscape (http://www.inkscape.org/) -->\r
-\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\r
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\r
-   width="512"\r
-   height="512"\r
-   viewBox="0 0 135.46666 135.46667"\r
-   version="1.1"\r
-   id="svg2509"\r
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"\r
-   sodipodi:docname="hourtraxlogo.svg">\r
-  <defs\r
-     id="defs2503" />\r
-  <sodipodi:namedview\r
-     id="base"\r
-     pagecolor="#ffffff"\r
-     bordercolor="#666666"\r
-     borderopacity="1.0"\r
-     inkscape:pageopacity="0.0"\r
-     inkscape:pageshadow="2"\r
-     inkscape:zoom="0.98994949"\r
-     inkscape:cx="232.37199"\r
-     inkscape:cy="303.59057"\r
-     inkscape:document-units="mm"\r
-     inkscape:current-layer="layer1"\r
-     showgrid="false"\r
-     units="px"\r
-     showguides="true"\r
-     inkscape:guide-bbox="true"\r
-     inkscape:window-width="1920"\r
-     inkscape:window-height="1017"\r
-     inkscape:window-x="-8"\r
-     inkscape:window-y="-8"\r
-     inkscape:window-maximized="1">\r
-    <sodipodi:guide\r
-       position="82.853553,25.657874"\r
-       orientation="0,1"\r
-       id="guide3067"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="53.988442,90.871642"\r
-       orientation="0,1"\r
-       id="guide3071"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="34.210499,98.622454"\r
-       orientation="1,0"\r
-       id="guide3073"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="97.553376,130.6948"\r
-       orientation="1,0"\r
-       id="guide3075"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="62.006527,90.871645"\r
-       orientation="1,0"\r
-       id="guide3077"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="68.420998,97.286107"\r
-       orientation="1,4.1488867e-08"\r
-       id="guide3079"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="55.05752,78.176339"\r
-       orientation="0,1"\r
-       id="guide3089"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="8.1517202,78.176342"\r
-       orientation="1,0"\r
-       id="guide3093"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="127.62119,82.319017"\r
-       orientation="1,0"\r
-       id="guide3095"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="79.111776,7.6171817"\r
-       orientation="0,1"\r
-       id="guide3099"\r
-       inkscape:locked="false" />\r
-    <sodipodi:guide\r
-       position="103.70057,43.564934"\r
-       orientation="0,1"\r
-       id="guide3107"\r
-       inkscape:locked="false" />\r
-  </sodipodi:namedview>\r
-  <metadata\r
-     id="metadata2506">\r
-    <rdf:RDF>\r
-      <cc:Work\r
-         rdf:about="">\r
-        <dc:format>image/svg+xml</dc:format>\r
-        <dc:type\r
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\r
-        <dc:title></dc:title>\r
-      </cc:Work>\r
-    </rdf:RDF>\r
-  </metadata>\r
-  <g\r
-     inkscape:label="Ebene 1"\r
-     inkscape:groupmode="layer"\r
-     id="layer1"\r
-     transform="translate(0,-161.53332)">\r
-    <g\r
-       id="g3112"\r
-       transform="matrix(0.96589978,0,0,0.96591912,2.3090708,7.8129107)">\r
-      <rect\r
-         y="161.53333"\r
-         x="2.7247839e-07"\r
-         height="135.46666"\r
-         width="135.46666"\r
-         id="rect3054"\r
-         style="fill:none;fill-opacity:1;stroke:#800080;stroke-width:4.23333311;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:7;stroke-dasharray:none;stroke-opacity:1" />\r
-      <path\r
-         sodipodi:nodetypes="cccccccccccccccccccccccccc"\r
-         style="fill:#005bff;fill-opacity:1;stroke-width:8.73611927"\r
-         inkscape:connector-curvature="0"\r
-         d="m 66.191845,233.60782 -49.863659,19.49133 0.0041,36.28365 H 117.7815 l -0.0668,-35.94775 z m -47.79975,-64.49509 v 36.67987 l 48.28682,19.77169 50.694185,-19.79864 v -36.65292 z m 109.157465,0 v 40.20119 l -0.11542,0.0559 0.18705,0.2303 -51.096733,19.9737 51.096733,20.06859 v 39.74039 c -10.17541,-10e-4 -109.326203,-10e-4 -119.4694697,0 V 249.04449 L 56.503861,229.51791 8.2022765,209.24047 v -40.12896 c 10.1898185,10e-4 119.3472835,10e-4 119.3472835,10e-4 z"\r
-         id="path3056" />\r
-      <path\r
-         inkscape:connector-curvature="0"\r
-         id="path3091"\r
-         d="m 20.523205,185.03109 v 20.3193 l 41.237699,16.35877 v 67.67364 h 9.516397 v -67.67364 l 43.220289,-16.35877 v -20.3193 H 20.523205"\r
-         style="fill:#ffd42a;fill-opacity:1;stroke:none;stroke-width:0.36582389px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />\r
-    </g>\r
-  </g>\r
-</svg>\r
diff --git a/website/img/apps/invoicejournallogo.svg b/website/img/apps/invoicejournallogo.svg
deleted file mode 100644 (file)
index fda0cb0..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<!-- Created with Inkscape (http://www.inkscape.org/) -->\r
-\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\r
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\r
-   width="512"\r
-   height="512"\r
-   viewBox="0 0 135.46666 135.46667"\r
-   version="1.1"\r
-   id="svg8"\r
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"\r
-   sodipodi:docname="invoicejournal.svg"\r
-   inkscape:export-filename="C:\Users\ksaff\Pictures\invoicejornal\invoicejournal.png"\r
-   inkscape:export-xdpi="96.300003"\r
-   inkscape:export-ydpi="96.300003">\r
-  <defs\r
-     id="defs2" />\r
-  <sodipodi:namedview\r
-     id="base"\r
-     pagecolor="#ffffff"\r
-     bordercolor="#666666"\r
-     borderopacity="1.0"\r
-     inkscape:pageopacity="0.0"\r
-     inkscape:pageshadow="2"\r
-     inkscape:zoom="0.49497475"\r
-     inkscape:cx="548.93182"\r
-     inkscape:cy="560.36692"\r
-     inkscape:document-units="mm"\r
-     inkscape:current-layer="text12"\r
-     showgrid="false"\r
-     showguides="true"\r
-     inkscape:guide-bbox="true"\r
-     units="px"\r
-     inkscape:window-width="1920"\r
-     inkscape:window-height="1017"\r
-     inkscape:window-x="-8"\r
-     inkscape:window-y="-8"\r
-     inkscape:window-maximized="1" />\r
-  <metadata\r
-     id="metadata5">\r
-    <rdf:RDF>\r
-      <cc:Work\r
-         rdf:about="">\r
-        <dc:format>image/svg+xml</dc:format>\r
-        <dc:type\r
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\r
-        <dc:title></dc:title>\r
-      </cc:Work>\r
-    </rdf:RDF>\r
-  </metadata>\r
-  <g\r
-     inkscape:label="Ebene 1"\r
-     inkscape:groupmode="layer"\r
-     id="layer1"\r
-     transform="translate(0,-161.53332)">\r
-    <rect\r
-       id="rect30"\r
-       width="134.25108"\r
-       height="133.71024"\r
-       x="1.3127096"\r
-       y="163.01714"\r
-       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.79166728;stroke-opacity:1"\r
-       ry="6.8340788" />\r
-    <g\r
-       aria-label="IJ"\r
-       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"\r
-       id="text12">\r
-      <path\r
-         d="m 60.591223,285.49814 v 3.20657 H 15.000112 v -3.20657 h 3.766561 q 6.591488,0 9.57335,-4.24653 1.883284,-2.77325 1.883284,-13.34625 v -75.9177 q 0,-8.92641 -1.020112,-11.78631 -0.784701,-2.16659 -3.217274,-3.72655 -3.452682,-2.07996 -7.219248,-2.07996 h -3.766561 v -3.20656 h 45.591111 v 3.20656 h -3.845032 q -6.513018,0 -9.49488,4.24655 -1.961753,2.77326 -1.961753,13.34627 v 75.9177 q 0,8.9264 1.020112,11.78631 0.784703,2.16659 3.295743,3.72655 3.374213,2.07992 7.140778,2.07992 z"\r
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:56.44444275px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';stroke-width:0.79166728"\r
-         id="path4609"\r
-         inkscape:connector-curvature="0" />\r
-      <path\r
-         d="m 80.679565,174.39484 v -3.20656 h 45.591115 v 3.20656 h -3.84504 q -6.51302,0 -9.49488,4.24655 -1.88328,2.77326 -1.88328,13.34627 v 57.45824 q 0,13.2596 -2.66798,21.4927 -2.58951,8.23308 -9.024059,14.38621 -6.434545,6.0665 -15.537076,6.0665 -7.376183,0 -11.613571,-3.98654 -4.237383,-4.07322 -4.237383,-9.27306 0,-4.24655 1.961752,-6.41313 2.589516,-2.68661 6.042196,-2.68661 2.511044,0 4.472797,1.81996 2.040219,1.81996 5.100552,9.70639 1.804813,4.67983 4.629735,4.67983 2.118693,0 3.923503,-2.85991 1.883284,-2.8599 1.883284,-10.13968 v -80.2509 q 0,-8.92641 -1.020112,-11.78631 -0.784701,-2.16659 -3.295743,-3.72655 -3.374213,-2.07996 -7.140778,-2.07996 z"\r
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:56.44444275px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';stroke-width:0.79166728"\r
-         id="path4611"\r
-         inkscape:connector-curvature="0" />\r
-    </g>\r
-    <flowRoot\r
-       xml:space="preserve"\r
-       id="flowRoot14"\r
-       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"\r
-       transform="scale(0.26458333)"><flowRegion\r
-         id="flowRegion16"><rect\r
-           id="rect18"\r
-           width="60"\r
-           height="97.14286"\r
-           x="171.42857"\r
-           y="151.09111" /></flowRegion><flowPara\r
-         id="flowPara20"></flowPara></flowRoot>    <flowRoot\r
-       xml:space="preserve"\r
-       id="flowRoot22"\r
-       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"\r
-       transform="scale(0.26458333)"><flowRegion\r
-         id="flowRegion24"><rect\r
-           id="rect26"\r
-           width="11.428572"\r
-           height="42.5"\r
-           x="262.85715"\r
-           y="0.019683262" /></flowRegion><flowPara\r
-         id="flowPara28"></flowPara></flowRoot>    <rect\r
-       style="fill:#e6e000;fill-opacity:0;stroke:none;stroke-width:0.79291403;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"\r
-       id="rect4543"\r
-       width="55.153255"\r
-       height="11.885354"\r
-       x="13.419503"\r
-       y="213.23273"\r
-       ry="0" />\r
-    <rect\r
-       style="fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.78807724;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"\r
-       id="rect4545"\r
-       width="45.736843"\r
-       height="12.776742"\r
-       x="14.764714"\r
-       y="204.31873" />\r
-    <rect\r
-       style="fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.78807753;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"\r
-       id="rect4545-7"\r
-       width="45.736843"\r
-       height="12.776748"\r
-       x="14.764714"\r
-       y="229.57507" />\r
-    <rect\r
-       style="fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.78807724;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"\r
-       id="rect4545-9"\r
-       width="45.736843"\r
-       height="12.776742"\r
-       x="80.410553"\r
-       y="216.79836" />\r
-    <rect\r
-       style="fill:#999999;fill-opacity:1;stroke:none;stroke-width:0.78732234;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"\r
-       id="rect4545-9-3"\r
-       width="15.335293"\r
-       height="38.0331"\r
-       x="95.745811"\r
-       y="204.31873" />\r
-  </g>\r
-</svg>\r
diff --git a/website/img/apps/qrcodegenerateorlogo.svg b/website/img/apps/qrcodegenerateorlogo.svg
deleted file mode 100644 (file)
index 45352fd..0000000
+++ /dev/null
@@ -1,2322 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   xmlns:xlink="http://www.w3.org/1999/xlink"\r
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\r
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\r
-   version="1.1"\r
-   width="512"\r
-   height="512"\r
-   viewBox="0 0 512 512"\r
-   id="svg653"\r
-   sodipodi:docname="qrcodegenerateorlogo.svg"\r
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">\r
-  <metadata\r
-     id="metadata657">\r
-    <rdf:RDF>\r
-      <cc:Work\r
-         rdf:about="">\r
-        <dc:format>image/svg+xml</dc:format>\r
-        <dc:type\r
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\r
-        <dc:title></dc:title>\r
-      </cc:Work>\r
-    </rdf:RDF>\r
-  </metadata>\r
-  <sodipodi:namedview\r
-     pagecolor="#ffffff"\r
-     bordercolor="#666666"\r
-     borderopacity="1"\r
-     objecttolerance="10"\r
-     gridtolerance="10"\r
-     guidetolerance="10"\r
-     inkscape:pageopacity="0"\r
-     inkscape:pageshadow="2"\r
-     inkscape:window-width="1920"\r
-     inkscape:window-height="1017"\r
-     id="namedview655"\r
-     showgrid="false"\r
-     inkscape:zoom="0.89393939"\r
-     inkscape:cx="132"\r
-     inkscape:cy="132"\r
-     inkscape:window-x="-8"\r
-     inkscape:window-y="-8"\r
-     inkscape:window-maximized="1"\r
-     inkscape:current-layer="svg653" />\r
-  <desc\r
-     id="desc2" />\r
-  <rect\r
-     width="264"\r
-     height="264"\r
-     cx="0"\r
-     cy="0"\r
-     id="rect4"\r
-     x="0"\r
-     y="248"\r
-     style="fill:#ffffff" />\r
-  <defs\r
-     id="defs7">\r
-    <rect\r
-       id="p"\r
-       width="8"\r
-       height="8"\r
-       x="0"\r
-       y="0" />\r
-  </defs>\r
-  <g\r
-     id="g651"\r
-     style="fill:#000000"\r
-     transform="matrix(2.24,0,0,2.24,-39.68,-39.68)">\r
-    <use\r
-       x="32"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use9"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="40"\r
-       xlink:href="#p"\r
-       id="use11"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use13"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use15"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use17"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="72"\r
-       xlink:href="#p"\r
-       id="use19"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use21"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use23"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use25"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use27"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use29"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use31"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use33"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use35"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="184"\r
-       xlink:href="#p"\r
-       id="use37"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use39"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use41"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use43"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="216"\r
-       xlink:href="#p"\r
-       id="use45"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="32"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use47"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use49"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use51"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use53"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use55"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use57"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use59"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use61"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use63"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use65"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="40"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use67"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use69"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use71"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use73"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use75"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use77"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use79"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="104"\r
-       xlink:href="#p"\r
-       id="use81"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use83"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use85"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use87"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use89"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use91"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use93"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use95"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use97"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use99"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use101"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="48"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use103"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use105"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use107"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use109"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use111"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use113"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use115"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use117"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use119"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use121"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use123"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use125"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use127"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use129"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="56"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use131"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use133"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use135"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use137"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use139"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use141"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="104"\r
-       xlink:href="#p"\r
-       id="use143"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use145"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use147"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use149"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use151"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use153"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use155"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use157"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use159"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use161"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="64"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use163"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="72"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use165"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="72"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use167"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="72"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use169"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="72"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use171"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="72"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use173"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="72"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use175"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="72"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use177"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use179"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="40"\r
-       xlink:href="#p"\r
-       id="use181"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use183"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use185"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use187"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="72"\r
-       xlink:href="#p"\r
-       id="use189"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use191"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use193"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use195"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use197"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use199"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use201"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use203"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="184"\r
-       xlink:href="#p"\r
-       id="use205"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use207"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use209"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use211"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="216"\r
-       xlink:href="#p"\r
-       id="use213"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="80"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use215"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="88"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use217"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="88"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use219"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="88"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use221"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use223"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use225"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use227"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use229"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use231"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use233"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use235"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use237"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use239"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use241"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use243"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use245"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="168"\r
-       xlink:href="#p"\r
-       id="use247"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use249"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use251"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="216"\r
-       xlink:href="#p"\r
-       id="use253"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="96"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use255"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use257"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use259"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use261"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="72"\r
-       xlink:href="#p"\r
-       id="use263"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="88"\r
-       xlink:href="#p"\r
-       id="use265"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="104"\r
-       xlink:href="#p"\r
-       id="use267"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use269"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use271"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use273"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use275"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="168"\r
-       xlink:href="#p"\r
-       id="use277"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use279"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="104"\r
-       y="216"\r
-       xlink:href="#p"\r
-       id="use281"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="112"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use283"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="112"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use285"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="112"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use287"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="112"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use289"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="112"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use291"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="112"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use293"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="112"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use295"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="112"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use297"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use299"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use301"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use303"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="88"\r
-       xlink:href="#p"\r
-       id="use305"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use307"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use309"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use311"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use313"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use315"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use317"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="120"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use319"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use321"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="72"\r
-       xlink:href="#p"\r
-       id="use323"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use325"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use327"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use329"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use331"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="168"\r
-       xlink:href="#p"\r
-       id="use333"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use335"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="184"\r
-       xlink:href="#p"\r
-       id="use337"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use339"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use341"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use343"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="128"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use345"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use347"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use349"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use351"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use353"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use355"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use357"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use359"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="168"\r
-       xlink:href="#p"\r
-       id="use361"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use363"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use365"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="136"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use367"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use369"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use371"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use373"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="72"\r
-       xlink:href="#p"\r
-       id="use375"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use377"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use379"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="104"\r
-       xlink:href="#p"\r
-       id="use381"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use383"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use385"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use387"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use389"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="144"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use391"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="152"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use393"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="152"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use395"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="152"\r
-       y="88"\r
-       xlink:href="#p"\r
-       id="use397"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="152"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use399"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="152"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use401"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="152"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use403"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="152"\r
-       y="184"\r
-       xlink:href="#p"\r
-       id="use405"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="152"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use407"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use409"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="40"\r
-       xlink:href="#p"\r
-       id="use411"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use413"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use415"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="72"\r
-       xlink:href="#p"\r
-       id="use417"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use419"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="104"\r
-       xlink:href="#p"\r
-       id="use421"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use423"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use425"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use427"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use429"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use431"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="168"\r
-       xlink:href="#p"\r
-       id="use433"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use435"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="184"\r
-       xlink:href="#p"\r
-       id="use437"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="160"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use439"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="168"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use441"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="168"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use443"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="168"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use445"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="168"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use447"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="168"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use449"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="168"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use451"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="168"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use453"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="168"\r
-       y="216"\r
-       xlink:href="#p"\r
-       id="use455"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="168"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use457"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use459"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="40"\r
-       xlink:href="#p"\r
-       id="use461"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use463"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use465"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use467"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="72"\r
-       xlink:href="#p"\r
-       id="use469"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use471"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use473"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use475"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use477"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use479"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use481"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use483"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="176"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use485"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="184"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use487"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="184"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use489"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="184"\r
-       y="104"\r
-       xlink:href="#p"\r
-       id="use491"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="184"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use493"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="184"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use495"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="184"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use497"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="184"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use499"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="184"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use501"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use503"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use505"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use507"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use509"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use511"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use513"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use515"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use517"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use519"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use521"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use523"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use525"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="168"\r
-       xlink:href="#p"\r
-       id="use527"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use529"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="184"\r
-       xlink:href="#p"\r
-       id="use531"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use533"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use535"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use537"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="192"\r
-       y="216"\r
-       xlink:href="#p"\r
-       id="use539"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use541"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use543"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use545"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use547"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use549"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use551"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="104"\r
-       xlink:href="#p"\r
-       id="use553"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use555"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use557"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="160"\r
-       xlink:href="#p"\r
-       id="use559"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="184"\r
-       xlink:href="#p"\r
-       id="use561"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use563"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use565"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="216"\r
-       xlink:href="#p"\r
-       id="use567"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="200"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use569"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use571"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use573"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use575"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use577"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use579"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use581"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="112"\r
-       xlink:href="#p"\r
-       id="use583"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use585"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="128"\r
-       xlink:href="#p"\r
-       id="use587"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use589"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="168"\r
-       xlink:href="#p"\r
-       id="use591"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use593"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use595"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="208"\r
-       y="216"\r
-       xlink:href="#p"\r
-       id="use597"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use599"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use601"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="104"\r
-       xlink:href="#p"\r
-       id="use603"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use605"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="136"\r
-       xlink:href="#p"\r
-       id="use607"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="144"\r
-       xlink:href="#p"\r
-       id="use609"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use611"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="184"\r
-       xlink:href="#p"\r
-       id="use613"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="192"\r
-       xlink:href="#p"\r
-       id="use615"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use617"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="208"\r
-       xlink:href="#p"\r
-       id="use619"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="216"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use621"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="32"\r
-       xlink:href="#p"\r
-       id="use623"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="40"\r
-       xlink:href="#p"\r
-       id="use625"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="48"\r
-       xlink:href="#p"\r
-       id="use627"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="56"\r
-       xlink:href="#p"\r
-       id="use629"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="64"\r
-       xlink:href="#p"\r
-       id="use631"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="72"\r
-       xlink:href="#p"\r
-       id="use633"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="80"\r
-       xlink:href="#p"\r
-       id="use635"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="96"\r
-       xlink:href="#p"\r
-       id="use637"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="104"\r
-       xlink:href="#p"\r
-       id="use639"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="120"\r
-       xlink:href="#p"\r
-       id="use641"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="152"\r
-       xlink:href="#p"\r
-       id="use643"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="176"\r
-       xlink:href="#p"\r
-       id="use645"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="200"\r
-       xlink:href="#p"\r
-       id="use647"\r
-       width="100%"\r
-       height="100%" />\r
-    <use\r
-       x="224"\r
-       y="224"\r
-       xlink:href="#p"\r
-       id="use649"\r
-       width="100%"\r
-       height="100%" />\r
-  </g>\r
-</svg>\r
diff --git a/website/img/apps/websiteeditorlogo.svg b/website/img/apps/websiteeditorlogo.svg
deleted file mode 100644 (file)
index 32abb3c..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\r
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\r
-   version="1.2"\r
-   x="0px"\r
-   y="0px"\r
-   width="512"\r
-   height="512"\r
-   viewBox="0 0 614.6048 657.3056"\r
-   id="svg4"\r
-   sodipodi:docname="Websiteeditorlogo.svg"\r
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)">\r
-  <metadata\r
-     id="metadata10">\r
-    <rdf:RDF>\r
-      <cc:Work\r
-         rdf:about="">\r
-        <dc:format>image/svg+xml</dc:format>\r
-        <dc:type\r
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\r
-        <dc:title></dc:title>\r
-      </cc:Work>\r
-    </rdf:RDF>\r
-  </metadata>\r
-  <defs\r
-     id="defs8" />\r
-  <sodipodi:namedview\r
-     pagecolor="#ffffff"\r
-     bordercolor="#666666"\r
-     borderopacity="1"\r
-     objecttolerance="10"\r
-     gridtolerance="10"\r
-     guidetolerance="10"\r
-     inkscape:pageopacity="0"\r
-     inkscape:pageshadow="2"\r
-     inkscape:window-width="1920"\r
-     inkscape:window-height="1017"\r
-     id="namedview6"\r
-     showgrid="false"\r
-     inkscape:zoom="1.18"\r
-     inkscape:cx="159.35835"\r
-     inkscape:cy="273.29322"\r
-     inkscape:window-x="-8"\r
-     inkscape:window-y="-8"\r
-     inkscape:window-maximized="1"\r
-     inkscape:current-layer="svg4" />\r
-  <path\r
-     d="m 168.75696,392.95148 c 4.78675,2.8606 9.87474,4.64643 15.19944,5.48513 3.43466,20.15451 10.3386,50.44134 24.86153,89.238 -27.17887,-7.07319 -56.03802,-20.28021 -85.62278,-42.33273 -0.46292,-0.33778 -0.98931,-0.73698 -1.42815,-1.11219 14.78661,-17.00506 30.58755,-34.22325 46.98996,-51.27821 z M 21.463557,380.20786 C 222.89421,639.81304 422.90903,460.47417 422.90903,460.47417 L 389.13597,392.87759 543.04726,452.91436 501.14277,616.224 c 0,0 -23.12106,-44.61977 -32.2053,-62.9511 C 369.11099,634.70321 105.9509,657.04467 21.463557,380.20786 Z M 388.48309,266.94506 c 2.79387,4.6734 6.50395,8.90921 11.10234,12.3332 15.45049,11.49546 36.04024,10.7958 50.74006,-0.0998 50.18765,40.79581 93.24482,88.42904 127.83089,141.85841 l 0.66407,1.06133 c -1.71595,4.77224 -3.57053,9.52145 -5.4761,14.24475 l -20.60133,-8.0091 -153.95928,-60.08917 -64.1108,-25.00322 30.68926,61.38761 24.09774,48.19451 c -26.6539,18.21858 -84.39837,49.29432 -156.31525,39.55984 l -0.25216,-0.71203 c -11.40262,-31.57569 -20.01135,-63.90083 -25.95134,-96.10123 6.70318,-2.8107 12.83178,-7.25763 17.50621,-13.48185 8.92247,-11.93304 10.51333,-27.02704 5.7013,-40.03485 48.98464,-33.12353 102.16826,-58.36474 158.33438,-75.10831 z m 177.76764,-29.39757 c 4.34852,-0.048 8.69546,-0.048 13.03907,0.002 l 0.52644,0.01 c 4.86306,14.54357 8.88494,29.50063 11.4286,45.13134 6.17868,38.49572 4.28563,76.41674 -4.29716,112.10176 -34.2993,-49.96662 -75.62808,-94.6478 -122.89585,-133.03134 2.10574,-4.84776 3.23369,-9.97007 3.39538,-15.08085 l 0.051,-0.01 c 2.56867,-0.52395 5.18738,-1.03638 7.80611,-1.47387 29.99,-4.75573 60.50685,-7.3294 90.94642,-7.6478 z M 239.38534,167.67338 c 51.32911,15.30674 100.10201,37.07358 145.35341,64.8994 -1.29063,3.99869 -2.00474,8.09719 -2.04228,12.20816 -58.54828,18.31608 -114.05048,45.09304 -165.00327,79.77912 -0.66503,-0.58728 -1.17802,-1.21199 -1.81802,-1.69947 -5.46371,-4.07259 -11.62901,-6.4601 -17.90788,-7.57133 -2.14237,-41.96951 0.16361,-84.12903 6.80532,-125.44889 12.0053,-0.80031 23.60929,-6.41019 31.36645,-16.76919 1.2781,-1.73689 2.25689,-3.55919 3.24627,-5.3978 z m -151.293481,-25.40089 1.240569,0.048 4.436238,0.17369 c 20.301234,0.95098 42.030834,3.3001 66.091614,7.12309 0.56398,12.25701 6.21635,24.16568 16.83006,32.06029 1.98068,1.48836 4.1221,2.66292 6.31547,3.76264 -7.15472,44.19341 -9.37215,88.3254 -6.67831,131.38177 -7.65711,2.73681 -14.67516,7.62209 -19.91272,14.61947 -10.10168,13.49395 -10.78981,30.97497 -3.45993,44.9564 -14.29789,14.54366 -30.43883,32.4354 -48.23313,53.63972 C 29.881876,359.67105 23.026633,329.13366 19.7312,320.23625 21.535757,253.55168 46.423678,191.1037 88.091859,142.27249 Z M 218.16303,55.648474 c -6.1898,15.642319 -11.91671,32.372356 -17.41747,49.953376 -12.46718,0.3992 -24.64758,6.07232 -32.67931,16.80402 -1.26451,1.67443 -2.16815,3.49961 -3.16996,5.26135 -18.63292,-2.83651 -38.156,-4.81129 -57.97943,-5.37362 30.88847,-29.849734 68.59313,-52.877502 111.24617,-66.645126 z M 304.89974,41.09157 c 116.4606,-0.970549 221.43948,68.99771 266.5293,174.43767 -34.16014,0.0672 -67.63216,2.71185 -99.58741,7.82168 -3.22028,0.51148 -6.41648,1.13618 -9.63672,1.73594 -2.81894,-5.15973 -6.7042,-9.89541 -11.79253,-13.68107 -16.55364,-12.33272 -39.17341,-10.74648 -53.92248,2.64852 -47.84577,-29.51156 -99.31313,-52.51515 -152.14519,-68.23433 -0.56398,-12.20711 -6.26632,-24.13976 -16.81733,-32.01058 -1.50427,-1.11277 -3.13365,-1.9246 -4.68698,-2.81253 6.84281,-22.902821 13.98587,-43.219402 21.74204,-61.373693 l 0.58996,-1.425597 c 5.41168,-1.248549 10.80123,-2.58519 16.39098,-3.473117 14.55885,-2.324656 29.03418,-3.513709 43.33636,-3.632893 z"\r
-     id="path2"\r
-     inkscape:connector-curvature="0"\r
-     style="stroke-width:9.61014271" />\r
-  <path\r
-     style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:1.28380001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="m 106.91686,122.2936 57.97943,5.37362 35.84927,-22.06537 17.41747,-49.953376 c 0,0 -51.40803,11.158855 -111.24617,66.645126 z"\r
-     id="path817"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="ccccc" />\r
-  <path\r
-     style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.28380001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="m 222.8404,110.99687 21.50431,34.8231 152.14519,68.23435 65.71501,11.03254 109.22413,-9.55762 c 0,0 -83.6402,-211.9382701 -326.25664,-167.33166 z"\r
-     id="path819"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="ccccccc" />\r
-  <path\r
-     style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:1.28380001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="m 159.86028,149.61727 23.14553,35.82293 -6.6783,131.38177 -23.37266,59.57587 -48.23313,53.63971 c 0,0 -62.143232,-52.1391 -84.99052,-109.8013 -4.53193,-23.32536 27.017947,-146.41274 68.360659,-177.96376 z"\r
-     id="path821"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="cccccccc" />\r
-  <path\r
-     style="fill:#ffcc00;fill-opacity:1;stroke:#000000;stroke-width:1.28380001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="m 204.77262,189.84037 34.61272,-22.16699 c 0,0 105.09866,31.17245 145.35341,64.8994 l -2.04228,12.20816 -165.00327,79.77912 -19.7259,-9.2708 c -2.17593,-94.65305 6.80532,-125.44889 6.80532,-125.44889 z"\r
-     id="path823"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="ccccccc" />\r
-  <path\r
-     style="fill:#800080;fill-opacity:1;stroke:#000000;stroke-width:1.28380001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="m 168.75696,392.95147 15.19944,5.48514 24.86153,89.23801 c -40.25475,-6.5278 -87.05094,-43.44493 -87.05094,-43.44493 z"\r
-     id="path825"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="ccccc" />\r
-  <path\r
-     style="fill:#ff7f2a;fill-opacity:1;stroke:#000000;stroke-width:1.28380001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="m 206.94119,395.57016 23.20751,-53.5167 C 348.737,264.80787 388.4831,266.94507 388.4831,266.94507 l 61.84239,12.23339 c 0,0 57.77716,37.38703 128.49496,142.91974 l -5.4761,14.24475 -238.67141,-93.1015 54.787,109.58213 c 0,0 -64.9261,49.35152 -156.31525,39.55983 z"\r
-     id="path827"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="cccccccccc" />\r
-  <path\r
-     style="fill:#808000;fill-opacity:1;stroke:#000000;stroke-width:1.28380001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="m 467.44721,246.6804 -3.39538,15.08085 122.89585,133.03133 c 0,0 24.41958,-52.78834 -7.13144,-157.23309 0,0 -102.57734,0.41718 -112.36903,9.12091 z"\r
-     id="path829"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="ccccc" />\r
-  <path\r
-     style="fill:#52638e;fill-opacity:1;stroke:#000000;stroke-width:1.28380001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"\r
-     d="M 21.463557,380.20785 C 226.00118,638.05582 422.90903,460.47417 422.90903,460.47417 L 389.13597,392.87759 543.04726,452.91436 501.14277,616.224 468.93747,553.2729 C 417.45876,606.7021 128.15136,694.59106 21.463557,380.20785 Z"\r
-     id="path831"\r
-     inkscape:connector-curvature="0"\r
-     sodipodi:nodetypes="ccccccc" />\r
-</svg>\r
diff --git a/website/img/bash.png b/website/img/bash.png
deleted file mode 100644 (file)
index e0331c1..0000000
Binary files a/website/img/bash.png and /dev/null differ
diff --git a/website/img/bg.jpg b/website/img/bg.jpg
deleted file mode 100644 (file)
index 5ad4139..0000000
Binary files a/website/img/bg.jpg and /dev/null differ
diff --git a/website/img/bg_bw.jpg b/website/img/bg_bw.jpg
deleted file mode 100644 (file)
index c3f063f..0000000
Binary files a/website/img/bg_bw.jpg and /dev/null differ
diff --git a/website/img/bg_creorga.jpg b/website/img/bg_creorga.jpg
deleted file mode 100644 (file)
index d7f782c..0000000
Binary files a/website/img/bg_creorga.jpg and /dev/null differ
diff --git a/website/img/bgtest - Kopie.jpg b/website/img/bgtest - Kopie.jpg
deleted file mode 100644 (file)
index c1782e2..0000000
Binary files a/website/img/bgtest - Kopie.jpg and /dev/null differ
diff --git a/website/img/bgtest.jpg b/website/img/bgtest.jpg
deleted file mode 100644 (file)
index c46b2a2..0000000
Binary files a/website/img/bgtest.jpg and /dev/null differ
diff --git a/website/img/cashbox.png b/website/img/cashbox.png
deleted file mode 100644 (file)
index c8af669..0000000
Binary files a/website/img/cashbox.png and /dev/null differ
diff --git a/website/img/childs.png b/website/img/childs.png
deleted file mode 100644 (file)
index 025155c..0000000
Binary files a/website/img/childs.png and /dev/null differ
diff --git a/website/img/coloradio.png b/website/img/coloradio.png
deleted file mode 100644 (file)
index 0c0117a..0000000
Binary files a/website/img/coloradio.png and /dev/null differ
diff --git a/website/img/creorgalogo.png b/website/img/creorgalogo.png
deleted file mode 100644 (file)
index 15689f8..0000000
Binary files a/website/img/creorgalogo.png and /dev/null differ
diff --git a/website/img/css3.png b/website/img/css3.png
deleted file mode 100644 (file)
index ddd0cb4..0000000
Binary files a/website/img/css3.png and /dev/null differ
diff --git a/website/img/festplatte.jpg b/website/img/festplatte.jpg
deleted file mode 100644 (file)
index fcbb753..0000000
Binary files a/website/img/festplatte.jpg and /dev/null differ
diff --git a/website/img/filemaker.png b/website/img/filemaker.png
deleted file mode 100644 (file)
index f58ab7d..0000000
Binary files a/website/img/filemaker.png and /dev/null differ
diff --git a/website/img/fm_logotm_stacked.png b/website/img/fm_logotm_stacked.png
deleted file mode 100644 (file)
index b885de5..0000000
Binary files a/website/img/fm_logotm_stacked.png and /dev/null differ
diff --git a/website/img/groovy.png b/website/img/groovy.png
deleted file mode 100644 (file)
index 3e2f210..0000000
Binary files a/website/img/groovy.png and /dev/null differ
diff --git a/website/img/hourtrax.png b/website/img/hourtrax.png
deleted file mode 100644 (file)
index e9466d4..0000000
Binary files a/website/img/hourtrax.png and /dev/null differ
diff --git a/website/img/htmlfive.png b/website/img/htmlfive.png
deleted file mode 100644 (file)
index f6ccf50..0000000
Binary files a/website/img/htmlfive.png and /dev/null differ
diff --git a/website/img/icons/menu.svg b/website/img/icons/menu.svg
deleted file mode 100644 (file)
index 1a247ab..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="glyphicons-halflings" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
-  <path id="menu" d="M17,4V5a1,1,0,0,1-1,1H4A1,1,0,0,1,3,5V4A1,1,0,0,1,4,3H16A1,1,0,0,1,17,4ZM16,8H4A1,1,0,0,0,3,9v1a1,1,0,0,0,1,1H16a1,1,0,0,0,1-1V9A1,1,0,0,0,16,8Zm0,5H4a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H16a1,1,0,0,0,1-1V14A1,1,0,0,0,16,13Z"/>
-</svg>
diff --git a/website/img/if_HTML_Logo_65687.png b/website/img/if_HTML_Logo_65687.png
deleted file mode 100644 (file)
index 8c18c8f..0000000
Binary files a/website/img/if_HTML_Logo_65687.png and /dev/null differ
diff --git a/website/img/if_code-programming-javascript-software-develop-command-language_652581.png b/website/img/if_code-programming-javascript-software-develop-command-language_652581.png
deleted file mode 100644 (file)
index 3f9c98a..0000000
Binary files a/website/img/if_code-programming-javascript-software-develop-command-language_652581.png and /dev/null differ
diff --git a/website/img/invoice_journal.png b/website/img/invoice_journal.png
deleted file mode 100644 (file)
index 85d324a..0000000
Binary files a/website/img/invoice_journal.png and /dev/null differ
diff --git a/website/img/java.png b/website/img/java.png
deleted file mode 100644 (file)
index a61562d..0000000
Binary files a/website/img/java.png and /dev/null differ
diff --git a/website/img/javascript.png b/website/img/javascript.png
deleted file mode 100644 (file)
index f550642..0000000
Binary files a/website/img/javascript.png and /dev/null differ
diff --git a/website/img/javascript_yellow.png b/website/img/javascript_yellow.png
deleted file mode 100644 (file)
index 5f00fa2..0000000
Binary files a/website/img/javascript_yellow.png and /dev/null differ
diff --git a/website/img/kasse.jpg b/website/img/kasse.jpg
deleted file mode 100644 (file)
index c28059b..0000000
Binary files a/website/img/kasse.jpg and /dev/null differ
diff --git a/website/img/kinder.jpg b/website/img/kinder.jpg
deleted file mode 100644 (file)
index 022b855..0000000
Binary files a/website/img/kinder.jpg and /dev/null differ
diff --git a/website/img/logo-mysql.png b/website/img/logo-mysql.png
deleted file mode 100644 (file)
index 73b55bd..0000000
Binary files a/website/img/logo-mysql.png and /dev/null differ
diff --git a/website/img/musicmix.jpg b/website/img/musicmix.jpg
deleted file mode 100644 (file)
index ce82425..0000000
Binary files a/website/img/musicmix.jpg and /dev/null differ
diff --git a/website/img/musicmix.png b/website/img/musicmix.png
deleted file mode 100644 (file)
index 4ccb8fb..0000000
Binary files a/website/img/musicmix.png and /dev/null differ
diff --git a/website/img/mysql.png b/website/img/mysql.png
deleted file mode 100644 (file)
index db2efb4..0000000
Binary files a/website/img/mysql.png and /dev/null differ
diff --git a/website/img/perl.png b/website/img/perl.png
deleted file mode 100644 (file)
index f792564..0000000
Binary files a/website/img/perl.png and /dev/null differ
diff --git a/website/img/pics/google4.png b/website/img/pics/google4.png
deleted file mode 100644 (file)
index 3c0e497..0000000
Binary files a/website/img/pics/google4.png and /dev/null differ
diff --git a/website/img/pics/google_gray.svg b/website/img/pics/google_gray.svg
deleted file mode 100644 (file)
index 1f3a237..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<svg version="1.1" viewBox="0 0 52 17" xmlns="http://www.w3.org/2000/svg">
-<g fill="none" fill-rule="evenodd">
-<g transform="translate(-845 -129)" fill="#5F6368" fill-rule="nonzero">
-<g transform="translate(845 129)">
-<path d="m6.7652 13c-3.6764 0-6.7652-2.9184-6.7652-6.5 0-3.5816 3.0888-6.5 6.7652-6.5 2.0353 0 3.4829 0.77497 4.5722 1.7943l-1.2828 1.2497c-0.78115-0.71214-1.8418-1.2707-3.2894-1.2707-2.6874 0-4.7872 2.1085-4.7872 4.7266s2.0998 4.7266 4.7872 4.7266c1.7415 0 2.7304-0.68421 3.3682-1.2986 0.52315-0.50967 0.85998-1.2358 0.98897-2.2342h-4.3572v-1.7803h6.1345c0.064498 0.31418 0.10033 0.69817 0.10033 1.1101 0 1.3335-0.37266 2.9812-1.5766 4.1541-1.1753 1.1869-2.6659 1.8222-4.6582 1.8222z"/>
-<path d="m22 9c0 2.3038-1.7936 4-4 4s-4-1.6962-4-4c0-2.3172 1.7936-4 4-4s4 1.6828 4 4zm-1.753 0c0-1.4424-1.0423-2.424-2.247-2.424s-2.247 0.98831-2.247 2.424c0 1.4224 1.0423 2.424 2.247 2.424s2.247-0.99499 2.247-2.424z"/>
-<path d="m31 9c0 2.3038-1.7936 4-4 4-2.1997 0-4-1.6962-4-4 0-2.3172 1.7936-4 4-4s4 1.6828 4 4zm-1.7462 0c0-1.4424-1.0423-2.424-2.247-2.424s-2.247 0.98831-2.247 2.424c0 1.4224 1.0423 2.424 2.247 2.424 1.2047 0.0066778 2.247-0.99499 2.247-2.424z"/>
-<path d="m40 5.2556v7.4335c0 3.0604-1.8172 4.3109-3.9687 4.3109-2.0261 0-3.2376-1.3472-3.6971-2.4456l1.5944-0.6563c0.28547 0.67703 0.98172 1.4715 2.1027 1.4715 1.3786 0 2.228-0.84974 2.228-2.4318v-0.59413h-0.062663c-0.41079 0.50432-1.2045 0.93955-2.2002 0.93955-2.0888 0-3.9965-1.8031-3.9965-4.1244 0-2.3351 1.9147-4.1589 3.9965-4.1589 0.99565 0 1.7894 0.44214 2.2002 0.92573h0.062663v-0.67012h1.7406zm-1.6153 3.9102c0-1.4577-0.98172-2.5285-2.228-2.5285-1.2672 0-2.3255 1.0639-2.3255 2.5285 0 1.4439 1.0583 2.494 2.3255 2.494 1.2463 0 2.228-1.0501 2.228-2.494z"/>
-<polygon points="43 0 43 12 41 12 41 0"/>
-<path d="m50.432 10.316 1.4877 0.90818c-0.48131 0.65442-1.6408 1.7763-3.6463 1.7763-2.4868 0-4.2735-1.7563-4.2735-4 0-2.3773 1.8086-4 4.062-4 2.268 0 3.3765 1.6494 3.7411 2.5442l0.1969 0.45409-5.8414 2.217c0.44485 0.80134 1.1449 1.2154 2.1222 1.2154 0.97721 0 1.6554-0.44741 2.1513-1.1152zm-4.5871-1.4424 3.9088-1.4825c-0.21878-0.50083-0.86053-0.84808-1.6263-0.84808-0.97721 0-2.3336 0.78798-2.2826 2.3306z"/>
-</g>
-</g>
-</g>
-</svg>
diff --git a/website/img/pics/ico.copywriting.png b/website/img/pics/ico.copywriting.png
deleted file mode 100644 (file)
index c163ff9..0000000
Binary files a/website/img/pics/ico.copywriting.png and /dev/null differ
diff --git a/website/img/pics/ico.monitoring.png b/website/img/pics/ico.monitoring.png
deleted file mode 100644 (file)
index be3b7b5..0000000
Binary files a/website/img/pics/ico.monitoring.png and /dev/null differ
diff --git a/website/img/pics/ico.optimization.png b/website/img/pics/ico.optimization.png
deleted file mode 100644 (file)
index 44008be..0000000
Binary files a/website/img/pics/ico.optimization.png and /dev/null differ
diff --git a/website/img/pics/image-1.jpg b/website/img/pics/image-1.jpg
deleted file mode 100644 (file)
index 00bd2d5..0000000
Binary files a/website/img/pics/image-1.jpg and /dev/null differ
diff --git a/website/img/pics/image-10.jpg b/website/img/pics/image-10.jpg
deleted file mode 100644 (file)
index ef5f6c6..0000000
Binary files a/website/img/pics/image-10.jpg and /dev/null differ
diff --git a/website/img/pics/image-11.jpg b/website/img/pics/image-11.jpg
deleted file mode 100644 (file)
index f4366a9..0000000
Binary files a/website/img/pics/image-11.jpg and /dev/null differ
diff --git a/website/img/pics/image-12.jpg b/website/img/pics/image-12.jpg
deleted file mode 100644 (file)
index 882cc99..0000000
Binary files a/website/img/pics/image-12.jpg and /dev/null differ
diff --git a/website/img/pics/image-2.jpg b/website/img/pics/image-2.jpg
deleted file mode 100644 (file)
index a7a20dd..0000000
Binary files a/website/img/pics/image-2.jpg and /dev/null differ
diff --git a/website/img/pics/image-3.jpg b/website/img/pics/image-3.jpg
deleted file mode 100644 (file)
index 892abb3..0000000
Binary files a/website/img/pics/image-3.jpg and /dev/null differ
diff --git a/website/img/pics/image-4.jpg b/website/img/pics/image-4.jpg
deleted file mode 100644 (file)
index 277f80d..0000000
Binary files a/website/img/pics/image-4.jpg and /dev/null differ
diff --git a/website/img/pics/image-5.jpg b/website/img/pics/image-5.jpg
deleted file mode 100644 (file)
index f3d94ed..0000000
Binary files a/website/img/pics/image-5.jpg and /dev/null differ
diff --git a/website/img/pics/image-6.jpg b/website/img/pics/image-6.jpg
deleted file mode 100644 (file)
index 4ce871f..0000000
Binary files a/website/img/pics/image-6.jpg and /dev/null differ
diff --git a/website/img/pics/image-7.jpg b/website/img/pics/image-7.jpg
deleted file mode 100644 (file)
index 54138bc..0000000
Binary files a/website/img/pics/image-7.jpg and /dev/null differ
diff --git a/website/img/pics/image-8.jpg b/website/img/pics/image-8.jpg
deleted file mode 100644 (file)
index 90f0db8..0000000
Binary files a/website/img/pics/image-8.jpg and /dev/null differ
diff --git a/website/img/pics/image-9.jpg b/website/img/pics/image-9.jpg
deleted file mode 100644 (file)
index f23b68f..0000000
Binary files a/website/img/pics/image-9.jpg and /dev/null differ
diff --git a/website/img/pics/img.home2.png b/website/img/pics/img.home2.png
deleted file mode 100644 (file)
index f684314..0000000
Binary files a/website/img/pics/img.home2.png and /dev/null differ
diff --git a/website/img/pics/img.home3.png b/website/img/pics/img.home3.png
deleted file mode 100644 (file)
index 6c4ec39..0000000
Binary files a/website/img/pics/img.home3.png and /dev/null differ
diff --git a/website/img/pics/img.home4.png b/website/img/pics/img.home4.png
deleted file mode 100644 (file)
index 4939b48..0000000
Binary files a/website/img/pics/img.home4.png and /dev/null differ
diff --git a/website/img/pics/img.home6.png b/website/img/pics/img.home6.png
deleted file mode 100644 (file)
index 6da7e5b..0000000
Binary files a/website/img/pics/img.home6.png and /dev/null differ
diff --git a/website/img/pics/logo.png b/website/img/pics/logo.png
deleted file mode 100644 (file)
index c1aae71..0000000
Binary files a/website/img/pics/logo.png and /dev/null differ
diff --git a/website/img/pics/partner-1.jpg b/website/img/pics/partner-1.jpg
deleted file mode 100644 (file)
index c3dc98f..0000000
Binary files a/website/img/pics/partner-1.jpg and /dev/null differ
diff --git a/website/img/pics/partner-2.jpg b/website/img/pics/partner-2.jpg
deleted file mode 100644 (file)
index 8540561..0000000
Binary files a/website/img/pics/partner-2.jpg and /dev/null differ
diff --git a/website/img/pics/partner-3.jpg b/website/img/pics/partner-3.jpg
deleted file mode 100644 (file)
index 57f8c41..0000000
Binary files a/website/img/pics/partner-3.jpg and /dev/null differ
diff --git a/website/img/pics/partner-4.jpg b/website/img/pics/partner-4.jpg
deleted file mode 100644 (file)
index f8bcc05..0000000
Binary files a/website/img/pics/partner-4.jpg and /dev/null differ
diff --git a/website/img/pics/partner-5.jpg b/website/img/pics/partner-5.jpg
deleted file mode 100644 (file)
index 87e8eaa..0000000
Binary files a/website/img/pics/partner-5.jpg and /dev/null differ
diff --git a/website/img/pics/partner-6.jpg b/website/img/pics/partner-6.jpg
deleted file mode 100644 (file)
index 2b40d10..0000000
Binary files a/website/img/pics/partner-6.jpg and /dev/null differ
diff --git a/website/img/pics/slide1.contact.png b/website/img/pics/slide1.contact.png
deleted file mode 100644 (file)
index 6e66fe1..0000000
Binary files a/website/img/pics/slide1.contact.png and /dev/null differ
diff --git a/website/img/pics/slide1.jpg b/website/img/pics/slide1.jpg
deleted file mode 100644 (file)
index 856314f..0000000
Binary files a/website/img/pics/slide1.jpg and /dev/null differ
diff --git a/website/img/pics/slide2.contact.png b/website/img/pics/slide2.contact.png
deleted file mode 100644 (file)
index 958f97d..0000000
Binary files a/website/img/pics/slide2.contact.png and /dev/null differ
diff --git a/website/img/pics/slide2.jpg b/website/img/pics/slide2.jpg
deleted file mode 100644 (file)
index 137ee24..0000000
Binary files a/website/img/pics/slide2.jpg and /dev/null differ
diff --git a/website/img/pics/slide3.contact.png b/website/img/pics/slide3.contact.png
deleted file mode 100644 (file)
index da96c66..0000000
Binary files a/website/img/pics/slide3.contact.png and /dev/null differ
diff --git a/website/img/pics/slide3.jpg b/website/img/pics/slide3.jpg
deleted file mode 100644 (file)
index 51e337d..0000000
Binary files a/website/img/pics/slide3.jpg and /dev/null differ
diff --git a/website/img/pics/spotlight-poi2.png b/website/img/pics/spotlight-poi2.png
deleted file mode 100644 (file)
index b719ad5..0000000
Binary files a/website/img/pics/spotlight-poi2.png and /dev/null differ
diff --git a/website/img/pics/team.1.jpg b/website/img/pics/team.1.jpg
deleted file mode 100644 (file)
index 0ec0521..0000000
Binary files a/website/img/pics/team.1.jpg and /dev/null differ
diff --git a/website/img/pics/team.2.jpg b/website/img/pics/team.2.jpg
deleted file mode 100644 (file)
index 03885e9..0000000
Binary files a/website/img/pics/team.2.jpg and /dev/null differ
diff --git a/website/img/pics/team.3.jpg b/website/img/pics/team.3.jpg
deleted file mode 100644 (file)
index 62f07c2..0000000
Binary files a/website/img/pics/team.3.jpg and /dev/null differ
diff --git a/website/img/pics/team.4.jpg b/website/img/pics/team.4.jpg
deleted file mode 100644 (file)
index ee4ec2f..0000000
Binary files a/website/img/pics/team.4.jpg and /dev/null differ
diff --git a/website/img/pics/welcome.png b/website/img/pics/welcome.png
deleted file mode 100644 (file)
index e959de4..0000000
Binary files a/website/img/pics/welcome.png and /dev/null differ
diff --git a/website/img/pitouchcase.png b/website/img/pitouchcase.png
deleted file mode 100644 (file)
index ee8f159..0000000
Binary files a/website/img/pitouchcase.png and /dev/null differ
diff --git a/website/img/postgres.png b/website/img/postgres.png
deleted file mode 100644 (file)
index b75bcc4..0000000
Binary files a/website/img/postgres.png and /dev/null differ
diff --git a/website/img/postgresql.png b/website/img/postgresql.png
deleted file mode 100644 (file)
index 14f3db1..0000000
Binary files a/website/img/postgresql.png and /dev/null differ
diff --git a/website/img/powershell.png b/website/img/powershell.png
deleted file mode 100644 (file)
index b747b87..0000000
Binary files a/website/img/powershell.png and /dev/null differ
diff --git a/website/img/price750.svg b/website/img/price750.svg
deleted file mode 100644 (file)
index 114174b..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   xml:space="preserve"\r
-   style="enable-background:new 0 0 100 100;"\r
-   viewBox="0 0 100 100"\r
-   y="0px"\r
-   x="0px"\r
-   id="Capa_1"\r
-   version="1.1"><metadata\r
-   id="metadata43"><rdf:RDF><cc:Work\r
-       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type\r
-         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs\r
-   id="defs41">\r
-               \r
-       </defs>\r
-<g\r
-   id="g6">\r
-       <path\r
-   style="fill:#030104"\r
-   d="M 96.456,2.028 C 95.912,0.451 94.208,-0.38 92.652,0.169 91.095,0.718 90.273,2.441 90.815,4.018 95.414,17.369 86.285,27.335 79.33,32.675 l -2.817,-4.072 c -0.942,-1.361 -3.058,-2.495 -4.699,-2.52 l -15.777,0.072 c -1.64,-0.026 -4.085,0.735 -5.43,1.689 L 4.123,60.786 C 1.872,62.382 1.324,65.522 2.9,67.802 L 24.027,98.34 c 1.577,2.28 4.111,2.007 6.362,0.412 L 76.872,65.811 c 1.345,-0.955 2.885,-3.02 3.426,-4.59 l 4.94,-15.731 c 0.538,-1.571 0.21,-3.969 -0.733,-5.331 l -1.717,-2.481 c 9.351,-7.227 19.053,-20.013 13.668,-35.65 z m -21.627,46.78 c -3.603,2.552 -8.569,1.665 -11.091,-1.98 -2.523,-3.648 -1.648,-8.672 1.957,-11.227 2.859,-2.027 6.573,-1.879 9.246,0.088 -1.346,0.82 -2.269,1.292 -2.445,1.376 -1.49,0.712 -2.127,2.512 -1.426,4.02 0.51,1.095 1.584,1.736 2.705,1.736 0.426,0 0.859,-0.094 1.271,-0.29 0.958,-0.457 1.989,-1.009 3.064,-1.652 0.485,2.966 -0.684,6.089 -3.281,7.929 z"\r
-   id="path2" />\r
-<text\r
-   transform="rotate(-36.533479)"\r
-   id="text4556"\r
-   y="82.810524"\r
-   x="-33.714188"\r
-   style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"\r
-   xml:space="preserve"><tspan\r
-     style="font-size:21.33333397px"\r
-     y="82.810524"\r
-     x="-33.714188"\r
-     id="tspan4554">750€</tspan></text>\r
-</g>\r
-<g\r
-   id="g8">\r
-</g>\r
-<g\r
-   id="g10">\r
-</g>\r
-<g\r
-   id="g12">\r
-</g>\r
-<g\r
-   id="g14">\r
-</g>\r
-<g\r
-   id="g16">\r
-</g>\r
-<g\r
-   id="g18">\r
-</g>\r
-<g\r
-   id="g20">\r
-</g>\r
-<g\r
-   id="g22">\r
-</g>\r
-<g\r
-   id="g24">\r
-</g>\r
-<g\r
-   id="g26">\r
-</g>\r
-<g\r
-   id="g28">\r
-</g>\r
-<g\r
-   id="g30">\r
-</g>\r
-<g\r
-   id="g32">\r
-</g>\r
-<g\r
-   id="g34">\r
-</g>\r
-<g\r
-   id="g36">\r
-</g>\r
-</svg>
\ No newline at end of file
diff --git a/website/img/radio.jpg b/website/img/radio.jpg
deleted file mode 100644 (file)
index c8472f0..0000000
Binary files a/website/img/radio.jpg and /dev/null differ
diff --git a/website/img/rechnung.jpg b/website/img/rechnung.jpg
deleted file mode 100644 (file)
index eea3480..0000000
Binary files a/website/img/rechnung.jpg and /dev/null differ
diff --git a/website/img/slider_pctablet.png b/website/img/slider_pctablet.png
deleted file mode 100644 (file)
index 98ca0f2..0000000
Binary files a/website/img/slider_pctablet.png and /dev/null differ
diff --git a/website/img/sqlite.png b/website/img/sqlite.png
deleted file mode 100644 (file)
index a38dcbb..0000000
Binary files a/website/img/sqlite.png and /dev/null differ
diff --git a/website/img/sybar.png b/website/img/sybar.png
deleted file mode 100644 (file)
index 36ef9e8..0000000
Binary files a/website/img/sybar.png and /dev/null differ
diff --git a/website/img/zeit.jpg b/website/img/zeit.jpg
deleted file mode 100644 (file)
index dfdf9af..0000000
Binary files a/website/img/zeit.jpg and /dev/null differ
index 8255193..a9d5f9b 100644 (file)
@@ -1,6 +1,6 @@
 <?php 
   require('lib/vendor/mustache/mustache/src/Mustache/Autoloader.php');
 <?php 
   require('lib/vendor/mustache/mustache/src/Mustache/Autoloader.php');
-  Mustache_Autoloader::register();
+  Mustache_Autoloader::register(); 
 
   require("lib/config.php");
   require("lib/database.php");
 
   require("lib/config.php");
   require("lib/database.php");
@@ -63,5 +63,5 @@
 
   $mainsite = $m->render('index.html',$vars);
   echo $mainsite;
 
   $mainsite = $m->render('index.html',$vars);
   echo $mainsite;
-  //echo "<pre>".print_r($vars).print_r($_SERVER["REQUEST_URI"]).print_r($vars)."</pre>";
+  // echo "<pre>".print_r($vars).print_r($_SERVER["REQUEST_URI"]).print_r($vars)."</pre>";
 ?>
\ No newline at end of file
 ?>
\ No newline at end of file
diff --git a/website/info.php b/website/info.php
deleted file mode 100644 (file)
index 3c256a4..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php 
-  phpinfo();
-  // echo "<pre>".print_r($vars).print_r($_SERVER["REQUEST_URI"])."</pre>";
-?>
\ No newline at end of file
diff --git a/website/js/dataform.js b/website/js/dataform.js
deleted file mode 100644 (file)
index f90d9c1..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-let dataform = {
-  saveform: function(frmid){
-    var flds=dataform.getformcontent(frmid,null);
-    console.log("TODO: save to db",flds);
-    // flds["fn"] ="saveform";
-    //flds["schemata"]=clientschema;
-    // flds["table"] = frmid;
-    // if (clientschema == null){
-    //   flds["schemata"]=schemata;
-    // }
-    delete flds["null"]; 
-    //for (flds in )
-    // db.exec("UPDATE "+  + " set "++"="++" WHERE id="+ )
-    
-    // postData("db.cgi",flds).then(data => {
-    //   if (aftercallback){
-    //     aftercallback(data.result);
-    //     form.formsaved({});
-    //   } else {
-    //     form.formsaved(data.result);
-    //   }
-    // });
-    return false;
-  },
-  saveformdata: function(flds){
-    //flds["fn"] ="saveform";
-    // flds["schemata"]=clientschema;
-    // if (clientschema == null){
-    //   flds["schemata"]=schemata;
-    // }
-    delete flds["null"];
-    console.log("TODO: save to db",flds);
-    // postData("db.cgi",flds).then(data => {
-    //   if (aftercallback){
-    //     aftercallback(data.result);
-    //     form.formsaved({});
-    //   } else {
-    //     form.formsaved(data.result);
-    //   }
-    // });
-    return false;
-  },
-  formsaved: function(data){
-    var sb = document.getElementById("snackbar");
-    sb.className="show green";
-    sb.innerHTML = 'Les données ont été sauvegardées!';
-    setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
-    return false;
-  },
-  getformcontent: function(frmid,dataflds){
-    var frm = document.getElementById("frm_" + frmid);
-    var flds = {};
-    if (dataflds){
-      flds = dataflds;
-    } 
-    for (var i = 0; i < frm.elements.length; i++) {
-      var field = frm.elements[i];
-      if (((field.getAttribute("name") != 'null') && (field.tagName == "INPUT" || field.tagName == "SELECT" || field.tagName == "TEXTAREA")) && (field.id)){
-        // if (field.classList.contains("tagedit")){
-        //   var fvalue=field.value.trim();
-        //   var ndata = null;
-        //   if (fvalue != ""){
-        //     ndata =  fvalue.split(",");  
-        //   }
-        //   flds[field.getAttribute("name")] = ndata;
-        // }
-        if (field.tagName == "TEXTAREA" ){
-          if (field.classList.contains("richeditarea")){
-            flds[field.dataset.table][field.dataset.column] = tinymce.get(field.id).getContent();
-          } else {
-            flds[field.dataset.table][field.dataset.column] = field.innerHTML;
-          }
-        } else if (field.type == "checkbox" ){
-          if (field.checked){
-            flds[field.dataset.table][field.dataset.column] = "1";
-          } else {
-            flds[field.dataset.table][field.dataset.column] = "";
-          }
-        }
-        else if (field.tagName == "SELECT" && field.multiple == true){
-            var opts = field.selectedOptions;
-            var vals = [];
-            for (var o in opts){
-              if (opts[o].value){
-                vals.push(opts[o].value);
-              }
-            }
-            if (vals.length > 0) {
-              flds[field.dataset.table][field.dataset.column] = JSON.stringify(vals);
-            } else {
-              flds[field.dataset.table][field.dataset.column] = "";
-            }    
-        } 
-        else {
-          console.log("Field",field,field.id, field.value);
-          flds[field.dataset.table][field.dataset.column] = field.value;
-        }
-      }
-    }
-    return flds;
-  },
-  cleanform: function(frmname){
-    var frm = document.getElementById("frm_" + frmname);
-    for (var f in frm){
-      if (frm[f] && frm[f].id){
-      if (frm[f].tagName == 'INPUT'){
-        if (frm[f].type == "checkbox"){
-          frm[f].checked = false;
-        } else if (frm[f].classList.contains("datefield")){
-            if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
-        } else if (frm[f].classList.contains("choices__input")){
-          if (choice[frmname][frm[f].id]){
-            choice[frmname][frm[f].id].removeActiveItems();
-          }
-        } else {
-          frm[f].value = "";
-        }
-      }
-      if (frm[f].tagName == 'SELECT'){
-        if (frm[f].multiple == true){
-          if (frm[f].classList.contains("choices__input")){
-            choice[frmname][frm[f].id].removeActiveItems();
-          }
-        } else {
-          frm[f].value = "";
-        }
-        
-      }
-      if (frm[f].tagName == 'TEXTAREA'){
-        if (frm[f].classList.contains("richeditarea")){
-          tinymce.get(frm[f].id).setContent("");
-        } else {
-          frm[f].innerHTML = "";
-        } 
-      }
-    }
-    }
-    return false;
-  },
-  // cleanform2: function(frmname,choices){
-  //   var frm = document.getElementById("frm_" + frmname);
-  //   for (var f in frm){
-  //     if (frm[f] && frm[f].id){
-  //     if (frm[f].tagName == 'INPUT'){
-  //       if (frm[f].type == "checkbox"){
-  //         frm[f].checked = false;
-  //       } else if (frm[f].classList.contains("datefield")){
-  //           if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
-  //       } else if (frm[f].classList.contains("choices__input")){
-  //         if (choices[frm[f].id]){
-  //           choices[frm[f].id].removeActiveItems();
-  //         }
-  //       } else {
-  //         frm[f].value = "";
-  //       }
-  //     }
-  //     if (frm[f].tagName == 'SELECT'){
-  //       if (frm[f].multiple == true){
-  //         if (frm[f].classList.contains("choices__input")){
-  //           choices[frm[f].id].removeActiveItems();
-  //         }
-  //       } else {
-  //         frm[f].value = "";
-  //       }
-        
-  //     }
-  //     if (frm[f].tagName == 'TEXTAREA'){
-  //       if (frm[f].classList.contains("richeditarea")){
-  //         tinymce.get(frm[f].id).setContent("");
-  //       } else {
-  //         frm[f].innerHTML = "";
-  //       } 
-  //     }
-  //   }
-  //   }
-  //   return false;
-  // },
-  fillform: function(dataclass,choices,data){
-    var frm = document.querySelectorAll('.data_'+ dataclass);
-    //console.log("frmdata",frm);
-    if (data){
-      for (var f in frm){
-        
-        var tblid = null;
-        //console.log("ID",frm[f].id);
-        if (frm[f].id){
-          tblid = frm[f].id.replace(dataclass + "_","");
-          frm[f].dataset.id=data['id'];
-        }
-        //console.log(frm[f].id +'=>' +tblid + "=>" +data[tblid]);
-        if (tblid != null && data[tblid]){
-  
-          if (frm[f].tagName == 'INPUT'){
-            if (frm[f].type == "checkbox"){
-              if (data[tblid] == "1"){
-                frm[f].checked = true;
-              } else {
-                frm[f].checked = false;
-              }
-            } 
-            else if (frm[f].classList.contains("datefield")){ 
-              frm[f]._flatpickr.setDate(data[tblid]);
-            } 
-            else if (frm[f].classList.contains("timefield")){
-              frm[f].value = timecalc.StringToTime(data[tblid]);
-            } 
-            else if (frm[f].classList.contains("number")){
-              frm[f].value = dataform.setNumber(data[tblid],null);
-            }
-            else if (frm[f].classList.contains("currency")){
-              frm[f].value = dataform.setNumber(data[tblid],2);
-            }
-            else if (frm[f].classList.contains("percent")){
-              frm[f].value = dataform.setNumber(data[tblid],2);
-            }
-            else {
-              frm[f].value=data[tblid];
-            }
-          }
-          if (frm[f].tagName == 'SELECT'){
-            if (frm[f].multiple == true){
-         
-              choices[frm[f].id].set(JSON.parse(data[tblid]));
-            } else {
-              frm[f].value=data[tblid];
-            }
-          }
-          if (frm[f].tagName == "TEXTAREA"){
-            //console.log("Set TextArea: " + frm[f].id + " => "+ data[tblid]);
-            if (frm[f].classList.contains("richeditarea")){
-              
-              tinymce.get(frm[f].id).setContent(data[tblid]);
-            } else {
-              frm[f].value = data[tblid];
-            } 
-          }
-        } 
-      }
-    }
-  },
-  setNumber(numdata,decimals){
-    console.log("Number in ",numdata);
-    if (numdata == null || numdata == ''){
-      return "";
-    } 
-    if (decimals){
-      numdata = parseFloat(numdata).toFixed(decimals).toString();    
-    }
-    numdata.toString().replace(/./,',');
-    console.log("Number out ",numdata);
-    return numdata;
-  },
-  fillselectlist: function(obj,listdata,vidcol,vvalcol){
-    var sellist = [];
-    let csel = obj.value;
-    //console.log(obj);
-    //console.log("selectdata",listdata);
-    
-    // for (var d in listdata){
-    // console.log(d);
-    // }
-    // console.log("datasize",listdata.length);
-    if (listdata.length > 0){
-      for (var i=0;i<listdata.length;i++){
-        
-        sellist.push({value:listdata[i][vidcol],text:listdata[i][vvalcol]});
-      }
-    }
-    //console.log("Select data",sellist);
-    obj.setData(sellist);
-    if (obj.select.element.dataset.selected && obj.select.element.dataset.selected != ""){
-       obj.set(obj.select.element.dataset.selected);
-    }
-    return false;
-  },
-  filldatalist: function(obj,optdata,element){
-    obj.innerHTML = '';
-    for (d=0;d < optdata.length;d++){
-      obj.insertAdjacentHTML('beforend','<option vale="' + optdata[d][element] + '"/>');
-    }
-  },
-  setValue: function(obj,newvalue){
-    if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT'){
-      if (obj.type == 'checkbox' || obj.type == 'radio'){
-        obj.checked = true;
-      }else {
-        obj.value=newvalue;
-      }
-    }
-    if (obj.tagName == 'TEXTAREA'){
-      obj.innerHTML = newvalue;
-    }
-    dataform.savefield(obj);
-  },
-  savefield: function(obj){
-    //if (obj.tagName == 'TextArea')
-    fdata = obj.dataset;
-    //fdata["save"] = "field";
-    //fdata["schemata"] = schemata;
-    if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA'){
-      if (obj.type == 'checkbox' || obj.type == 'radio'){
-        if (obj.checked == true){
-          fdata["value"] = 1;
-        } else {
-          fdata["value"] = null;
-        }
-      }else {
-        fdata["value"] = obj.value;
-      }
-    }
-    db.exec("UPDATE "+ fdata["table"]+" SET "+fdata["column"]+"='"+ fdata["value"] + "' WHERE id='" + fdata["id"]+ "';"); 
-    return false;
-  },
-  cleanfield: function(objid){
-    document.getElementById(objid).value='';
-  },
-  }
\ No newline at end of file
diff --git a/website/js/global/myapp.js b/website/js/global/myapp.js
deleted file mode 100644 (file)
index 7692348..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-\r
-let preferences = {\r
-  global: null,\r
-  page: null,\r
-  defaultdata: {}\r
-}\r
-\r
-let myapp = {\r
-    loadpanel: function(idpanel){\r
-      return new Promise(\r
-        function(resolve, reject){\r
-        if (document.getElementById("pnl_" + idpanel).innerHTML == ''){\r
-          var pnldoc = usersystem.readAppFile('panels/' + idpanel + '.html');\r
-          if (pnldoc == ""){\r
-            reject('panels/' + idpanel + '.html' + " data is empty");\r
-          }else {\r
-            document.getElementById("pnl_" + idpanel).insertAdjacentHTML('afterbegin', pnldoc);\r
-            if (eval("typeof "+ idpanel) == "object"){\r
-              eval(`${idpanel}.init();`);\r
-            }\r
-            resolve(true);\r
-          }\r
-        } else {\r
-          resolve(true);\r
-        }\r
-      });\r
-    },\r
-    viewpanel: function( idpanel){\r
-      myapp.loadpanel(idpanel).then(result => {\r
-        if (result){\r
-          let panels = document.getElementsByClassName("panel");\r
-          for (let i=0;i<panels.length;i++){\r
-            panels[i].style.display = 'none';\r
-          }\r
-          document.getElementById("pnl_" + idpanel).style.display = 'block';\r
-        }\r
-      });\r
-    },\r
-    loaddialog: function( dlgname ){\r
-      return new Promise(\r
-        function(resolve, reject){\r
-          if (!document.getElementById("dlg" + dlgname)){\r
-            var dlgdoc = usersystem.readAppFile('dialogs/' + dlgname + '.html');\r
-            if (dlgdoc == ""){\r
-              console.log('dialogs/' + dlgname + '.html' + " data is empty");\r
-              reject(false);\r
-            } else {\r
-              document.getElementById("dialogs").insertAdjacentHTML('beforeend', dlgdoc);\r
-              resolve(true);\r
-            }\r
-            \r
-          }\r
-      });\r
-    },\r
-    viewdialog: function( dlgname){\r
-      //app.loaddialog(dlgname).then(result => {\r
-        document.getElementById("dlg" + dlgname).style.display = 'block';\r
-      //});\r
-      \r
-    },\r
-    closeDialog: function(dlgname){\r
-      document.getElementById("dlg" + dlgname).style.display = 'none';\r
-    },\r
-    confirm(title,message,strbtnok,strbtncancel,action){\r
-      document.getElementById("dlgconfirm_title").innerHTML = title;\r
-      document.getElementById("dlgconfirm_text").innerHTML = message;\r
-      document.getElementById("dlgconfirm_btnok").innerHTML = strbtnok;\r
-      document.getElementById("dlgconfirm_btncancel").innerHTML = strbtncancel;\r
-      document.getElementById("dlgconfirm_btnok").setAttribute("onclick","document.getElementById('dlgconfirm').style.display='none';" + action);\r
-      document.getElementById("dlgconfirm").style.display = 'block';\r
-    },\r
-    message: function(title,message){\r
-      document.getElementById('dlgmessage_title').innerHTML=title;\r
-      document.getElementById('dlgmessage_text').innerHTML=message;\r
-      document.getElementById('dlgmessage').style.display='block';\r
-      return false;\r
-    },\r
-    setpref: function(key,value){\r
-      db.execAsync("REPLACE INTO defaultdata (id,pref) VALUES ('"+key+"','"+value+"');").then(res => {\r
-        myapp.loadpreferences();\r
-      });\r
-      return false;\r
-    },\r
-    loadpreferences: function(){\r
-      db.queryarray("select id,pref from defaultdata;").then(res => {\r
-        for (var i=0;i<res.length;i++){\r
-          preferences["defaultdata"][res[i].id] = res[i].pref;\r
-        }\r
-      });\r
-      return false;\r
-    }\r
-    // getCookie: function(cname) {\r
-    //     var name = cname + "=";\r
-    //     var decodedCookie = decodeURIComponent(document.cookie);\r
-    //     var ca = decodedCookie.split(';');\r
-    //     for (var i = 0; i < ca.length; i++) {\r
-    //         var c = ca[i];\r
-    //         while (c.charAt(0) == ' ') {\r
-    //             c = c.substring(1);\r
-    //         }\r
-    //         if (c.indexOf(name) == 0) {\r
-    //             return c.substring(name.length, c.length);\r
-    //         }\r
-    //     }\r
-    //     return "";\r
-    // },\r
-    // setCookie: function(cname, cvalue) {\r
-    //     document.cookie = cname + "=" + cvalue + ";path=/";\r
-    // },\r
-    // setident: function() {\r
-    //     if (admin.getCookie("dksident") == "") {\r
-    //         var dksident = prompt("Bitte Name eingeben, damit wir deine Einstellungen speichern können!");\r
-    //         if ((dksident != null) && (dksident != "")) {\r
-    //             admin.setCookie("dksident", dksident);\r
-    //         }\r
-    //     }\r
-    // }\r
-}\r
-\r
-\r
-String.prototype.replaceAt = function(index, replacement) {\r
-  return this.substr(0, index) + replacement + this.substr(index + replacement.length);\r
-}\r
-\r
-document.addEventListener("DOMContentLoaded", function() {\r
-    preferences.global = usersystem.getPreference('invoicejournal');\r
-    if(preferences.global.dataset){\r
-      preferences.global["currentdataset"] = usersystem.getPreference(preferences.global.dataset);\r
-    } else {\r
-      usersystem.setPreference('invoicejournal',{"dataset":"default"});\r
-      usersystem.setPreference('default',{"datapath":usersystem.profilepath() + "default","database":"default.sqlite"});\r
-      preferences.global = usersystem.getPreference('invoicejournal');\r
-      preferences.global["currentdataset"] = usersystem.getPreference(preferences.global.dataset);\r
-    }\r
-    \r
-    console.log("Content loaded",preferences);\r
-    db.connect(preferences.global.currentdataset.datapath + "/" + preferences.global.currentdataset.database);\r
-    myapp.loadpreferences();\r
-    //.newuuid().then(data => {console.log(data);});\r
-    myapp.viewpanel("index");\r
-    //index.init();\r
-    //addresses.init();\r
-    //files.inittable();\r
-    //invoice.init();\r
-    //invoices.init();\r
-    //offers.init();\r
-    //offer.init();\r
-    //offerdetails.inittable();\r
-    //transactions.inittable();\r
-    //transaction.initform();\r
-    //mpref.cfg = usersystem.getPreference(mpref.global.dataset);\r
-    \r
-    //admin.setident();\r
-    // document.trigger('moduledataloaded');\r
-    // document.bind('moduledataloaded', myapp.execmodulescript());\r
-    // if (basedb && basedb != "") {\r
-    //     //console.log("INFO basedb:" + basedb);\r
-    //app.getdatasets();\r
-    \r
-    // }\r
-});
\ No newline at end of file
diff --git a/website/js/global/renderer.js b/website/js/global/renderer.js
deleted file mode 100644 (file)
index f169a2b..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-const { dialog } = require('electron');
-const fs = require('fs'); 
-const os = require('os');
-const path = require('path');
-let usersystem = {
-    profilepath: function(){
-        let ppath="";
-        if (os.platform() == "darwin"){
-            ppath = os.homedir().replace(/\\/g,"/") + '/Library/Application Support/invoicejournal/';
-        } else if (os.platform() == "win32") {
-            ppath = os.homedir().replace(/\\/g,"/") + '/AppData/Roaming/invoicejournal/';
-        }
-        return ppath;
-    },
-    selectfile: function(dlgtitle,lastpath,filefilters=null,multiselect=false){
-        let props = ['openFile'];
-        if (multiselect == true){
-          props.push('multiSelections');
-        }
-        return dialog.showOpenDialog({title: dlgtitle,defaultPath: lastpath, filters: filefilters, properties: props });
-    },
-    selectdir: function(dlgtitle,lastpath){
-        return dialog.showOpenDialog({title: dlgtitle,defaultPath: lastpath, filters: filefilters, properties: ['openDirectory'] });
-    },
-    showMessage: function(msgTitle,msg,msgdetail,msgtype,msgButtons=["OK"],defautlbtnid=0,cancelbtnid){
-        return dialog.showMessageBox({type: msgtype, //
-                                    title: msgTitle,
-                                    buttons:msgButtons,
-                                    message: msg, 
-                                    detail: msgdetail,
-                                    defaultId: defautlbtnid,
-                                cancelId: cancelbtnid});
-    },
-    showError: function(errtitle,errmsg){
-        dialog.showErrorBox(errtitle, errmsg);
-    },
-    setPreference: function(key,data){
-        console.log("set preference to: " + this.profilepath()  + key + ".json");
-        console.log(data);
-        if ((typeof data == 'object') || (typeof data == 'array')){
-            data = JSON.stringify(data);
-        }
-        let result = fs.writeFileSync(this.profilepath()  + key + ".json", data);
-        return result;
-    },
-    getPreference: function(key){
-      console.log("getPreference:" + this.profilepath()  + key + ".json");
-        let data = null;
-        if (fs.existsSync(this.profilepath()  + key + ".json")){
-            console.log("Read Key:" + key);
-            let data = fs.readFileSync(this.profilepath()  + key + ".json", 'utf-8');
-            if (data.startsWith("{") || data.startsWith("[")){
-                data = JSON.parse(data);
-            }
-            return data;
-        }
-        return data;
-    },
-    readAppFile: function(filename){
-      if (fs.existsSync(__dirname + '/' + filename)){
-        return fs.readFileSync(__dirname + '/' + filename, 'utf-8');
-      }
-      return "";
-    },
-    getDataSets: function(){
-        let datasets =[];
-        //console.log(os.platform());
-        //console.log("ProfilePath:" + this.profilepath());
-        let files = fs.readdirSync(this.profilepath());
-        files.forEach(function(file) {
-            if (file.match('.*\.json')){
-              if (file != 'invoicejournal.json'){
-                datasets.push({"label":file.replace('.json',''),"value":file});
-              }
-                
-            }
-        });
-        //console.log(datasets);
-        return datasets;
-    },
-    getsysinfo: function(){
-        return {
-            "hostname": os.hostname(),
-            "userdir": os.homedir(),
-            "platform": os.platform(),
-            "userinfo":os.userInfo()
-        }
-    },
-    getApplicationPath: function(){
-      let apath = path.dirname(__dirname);
-      return apath;
-    }
-}
\ No newline at end of file
diff --git a/website/js/global/report.js b/website/js/global/report.js
deleted file mode 100644 (file)
index 987a9a6..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-const { spawn } = require('child_process');
-//const fs = require('fs');
-let report = {
-  id_report: null,
-  tmpfolder: usersystem.profilepath() + 'tmp/',
-  tmpoutput: null,
-  output: null,
-  pdfoptions: null,
-  callback: null,
-  data: null,
-  reportfile:null,
-  open: function(reporttype,fname){
-    console.log("prefs",preferences.global.currentdataset.datapath);
-    console.log("open", preferences.global.currentdataset.datapath + '/' + reporttype + '/' + fname);
-    if (fs.existsSync(preferences.global.currentdataset.datapath + '/' + reporttype + '/' + fname)){
-      window.open(preferences.global.currentdataset.datapath + '/' + reporttype + '/' + fname);
-    }
-  },
-  generate: function(id_report,reportdata,fname,callback){
-    db.query("select * from newreports WHERE id='"+id_report+"';").then(data => {
-      console.log(data);
-      report.id_report = id_report;
-      report.tmpoutput = report.tmpfolder + fname + ".pdf";
-      report.output =  preferences.global.currentdataset.datapath + '/' + data.reporttype + '/' + fname + ".pdf";
-      report.reportfile = fname+ ".pdf";
-      report.pdfoptions = JSON.parse(data.pdfoptions);
-      report.callback = callback;
-      if (!fs.existsSync(report.tmpfolder)){
-        fs.mkdirSync(usersystem.profilepath() + 'tmp/'); 
-      }
-      if (!fs.existsSync(path.dirname(report.tmpoutput))){
-        fs.mkdirSync(path.dirname(report.tmpoutput)); 
-      }
-      if (fs.existsSync(report.tmpfolder + fname + ".pdf")){
-        fs.unlinkSync(report.tmpfolder + fname + ".pdf");
-      }
-      if (fs.existsSync(report.tmpfolder + id_report + ".content.html")){
-        fs.unlinkSync(report.tmpfolder + id_report + ".content.html");
-      }
-      if (fs.existsSync(report.tmpfolder + id_report + ".header.html")){
-        fs.unlinkSync(report.tmpfolder + id_report + ".header.html");
-      }
-      if (fs.existsSync(report.tmpfolder + id_report + ".footer.html")){
-        fs.unlinkSync(report.tmpfolder + id_report + ".footer.html");
-      }
-      
-      let doQueries = async() => {
-        let queryres = {};
-        console.log("data.reportsql",data.reportsql);
-        let qq = JSON.parse(data.reportsql);
-        for (var i in qq){
-          console.log(i);
-          let qsql = qq[i].sql;
-          console.log(qsql);
-          for (var dd in reportdata){
-            qsql = qsql.replace('%%' + dd + '%%',reportdata[dd]);
-          }
-          console.log(qsql);
-          if (qq[i].type == 'query'){
-            queryres[i] = await db.query(qsql);
-          } else if (qq[i].type == 'queryarray'){
-            queryres[i] = await db.queryarray(qsql);
-          }
-          
-        }
-        return queryres;
-      }
-      doQueries().then(result => {
-        console.log(result);
-        let content = Mustache.render(data.contenthtml,result);
-        let header = Mustache.render(data.headerhtml,result);
-        let footer = Mustache.render(data.footerhtml,result);
-        console.log(report.tmpfolder + id_report + ".content.html");
-        var result = fs.writeFileSync(report.tmpfolder + id_report + ".content.html",content);
-        result = fs.writeFileSync(report.tmpfolder + id_report + ".header.html", header);
-        result = fs.writeFileSync(report.tmpfolder + id_report + ".footer.html",footer);
-        //result = fs.writeFileSync(report.tmpfolder + id_report + ".data.js",JSON.stringify(result));
-        report.compile();
-      });
-    }); 
-    
-  },
-  compile: function(){
-    let args = [];
-    console.log("id_report",report.id_report)
-    console.log("pdfoptions",report.pdfoptions);
-    if (report.pdfoptions.bottom){ args.push("-B",report.pdfoptions.bottom + report.pdfoptions.unit); }
-    if (report.pdfoptions.left){ args.push("-L",report.pdfoptions.left+report.pdfoptions.unit); }
-    if (report.pdfoptions.right){ args.push("-R",report.pdfoptions.right+report.pdfoptions.unit); }
-    if (report.pdfoptions.top){ args.push("-T",report.pdfoptions.top+report.pdfoptions.unit); }
-    if (report.pdfoptions.orientation){ args.push("-O",report.pdfoptions.orientation); }
-    if (report.pdfoptions.size){ args.push("-s",report.pdfoptions.size); }
-    if (report.pdfoptions.encoding){ args.push("--encoding",report.pdfoptions.encoding); }
-    if (fs.existsSync(report.tmpfolder+ report.id_report + ".header.html")){
-      args.push("--header-html",report.tmpfolder+ report.id_report + ".header.html");
-    }
-    if (fs.existsSync(report.tmpfolder+ report.id_report + ".footer.html")){
-      args.push("--footer-html",report.tmpfolder+ report.id_report + ".footer.html" );
-    }
-    args.push(report.tmpfolder+ report.id_report + ".content.html" );
-    report.tmpoutput = report.tmpoutput.replace(/\\/g,"/");
-    args.push(report.tmpoutput);
-    console.log("Output to",report.tmpoutput);
-    console.log("AppPath",usersystem.getApplicationPath());
-    console.log(args);
-    const pdfout = spawn(usersystem.getApplicationPath()+ '/tools/wkhtmltopdf.exe', args);
-    pdfout.stdout.on('data', (data) => {
-
-      console.log(`pdfout stdout: ${data}`);
-    });
-
-    pdfout.stderr.on('data', (data) => {
-     console.error(`pdfout stderr: ${data}`);
-    });
-
-    pdfout.on('close', (code) => {
-      console.log(`pdfout: child process exited with code ${code}`);
-      if (code == 0){
-        console.log("Copy",report.tmpoutput,"to",report.output);
-        if (fs.existsSync(report.output)){
-           fs.unlinkSync(report.output);
-        }
-        fs.copyFileSync(report.tmpoutput,report.output);
-        report.callback({"file":report.reportfile});
-      }
-      
-    });
-  }
-}
-
diff --git a/website/js/global/request.js b/website/js/global/request.js
deleted file mode 100644 (file)
index 6e26cac..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-var api = 'http://localhost:6060/';
-
-async function postData(module,schema,fn,data = {}) {
-    // Default options are marked with *
-    const response = await fetch(api + '/'+ module+'/'+ schema+'/'+fn, {
-      method: 'POST', 
-      mode: 'same-origin', 
-      cache: 'no-cache', 
-      credentials: 'same-origin', 
-      headers: {
-        'Content-Type': 'application/json'
-        
-      },
-      redirect: 'follow', 
-      referrerPolicy: 'strict-origin', 
-      body: JSON.stringify(data) 
-    });
-    return response.json(); 
-  }
-// if (location.pathname.indexOf('modules') > 0){
-//   api = location.origin + location.pathname.substring(0, location.pathname.indexOf('module')) + 'api/';
-// }
-//console.log(api);
-var req = {
-    multipartform: function(url, frmname, callback) {
-        var ret = null;
-        var frm = document.getElementById(frmname);
-        var frmdata = new FormData();
-        for (var i = 0; i < frm.elements.length; i++) {
-            var field = frm.elements[i];
-            if ( field.tagName == "INPUT" && field.type == "file"){
-                frmdata.append("file",field.files[0]);
-            } else if (field.tagName == "INPUT"){
-                frmdata.append("folder",field.value);
-            }  
-        }
-        if (!callback) {
-            callback = req.asyncNoEvent;
-        }
-        var request = new XMLHttpRequest();
-        var sendurl = api + url;
-        console.log("Multipartsending URL: POST => " + sendurl + '?' + frmdata);
-        //console.log("Multipart sending URL: " + "POST" + " => " + sendurl);
-        request.open("POST", sendurl, true);
-        request.onload = function() {
-            if (request.status >= 200 && request.status <= 400) {
-                if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0) {
-                    var xparse = JSON.parse(request.responseText);
-                    ret = xparse.result;
-                } else {
-                    ret = request.responseText;
-                }
-                callback(ret);
-            } else {
-                alert("ServerERROR:" + request.status + "\n" + request.responseText);
-            }
-        };
-        request.onerror = function() {
-            alert("Connection ERROR!\n" + url);
-        };
-        request.setRequestHeader('Content-Type', 'multipart/form-data');
-        request.send(frmdata);
-        return ret;
-    },
-    reqdata: function( data, callback) {
-
-        var ret = null;
-        var rdata = null;
-        
-        if (!callback) {
-            callback = req.asyncNoEvent;
-        }
-
-        var request = new XMLHttpRequest();
-        if (typeof data == 'object') {
-            var xdata = [];
-            for (var i in data) {
-                var value = '';
-                if (typeof(data[i]) == 'object') {
-                    value = encodeURIComponent(JSON.stringify(data[i]));
-                } else {
-                    value = encodeURIComponent(data[i]);
-                }
-                xdata.push(i + "=" + value);
-            }
-            rdata = xdata.join("&");
-        } else {
-            rdata = data;
-        }
-        var sendurl = api + "db.cgi";
-        console.log("sending URL => " + sendurl + '?' + rdata);
-        request.open("POST", sendurl, true);
-        request.onload = function() {
-            if (request.status >= 200 && request.status <= 400) {
-                if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0) {
-                    console.log(xparse);
-                    var xparse = JSON.parse(request.responseText);
-                    ret = xparse.result;
-                    console.log(ret);
-                }
-                
-                else {
-                    ret = request.responseText;
-                    //console.log("TEXT returned:" + ret);
-                }
-                callback(ret);
-
-
-            } else {
-                //console.log("ServerERROR: " + request.status + "\n" + request.responseText);
-                alert("ServerERROR:" + request.status + "\n" + request.responseText);
-            }
-        };
-        request.onerror = function() {
-            //console.log("ERROR: connection ERROR\n" + url);
-            alert("Connection ERROR!\n" + url);
-        };
-        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
-        request.send(rdata);
-
-        return ret;
-    },
-    reqfile: function(data, callback) {
-
-      var ret = null;
-      var rdata = null;
-      
-      if (!callback) {
-          callback = req.asyncNoEvent;
-      }
-
-      var request = new XMLHttpRequest();
-      if (typeof data == 'object') {
-          var xdata = [];
-          for (var i in data) {
-              var value = '';
-              if (typeof(data[i]) == 'object') {
-                  value = encodeURIComponent(JSON.stringify(data[i]));
-              } else {
-                  value = encodeURIComponent(data[i]);
-              }
-              xdata.push(i + "=" + value);
-          }
-          rdata = xdata.join("&");
-      } else {
-          rdata = data;
-      }
-      var sendurl = api + "filesystem.cgi";
-      console.log("sending URL => " + sendurl + '?' + rdata);
-      request.open("POST", sendurl, true);
-      request.onload = function() {
-          if (request.status >= 200 && request.status <= 400) {
-              if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0) {
-                  console.log(xparse);
-                  var xparse = JSON.parse(request.responseText);
-                  ret = xparse.result;
-                  //console.log(ret);
-              }
-              
-              else {
-                  ret = request.responseText;
-                  //console.log("TEXT returned:" + ret);
-              }
-              callback(ret);
-
-
-          } else {
-              //console.log("ServerERROR: " + request.status + "\n" + request.responseText);
-              alert("ServerERROR:" + request.status + "\n" + request.responseText);
-          }
-      };
-      request.onerror = function() {
-          //console.log("ERROR: connection ERROR\n" + url);
-          alert("Connection ERROR!\n" + url);
-      };
-      request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
-      request.send(rdata);
-
-      return ret;
-    },
-    reqreport: function( data, callback) {
-
-    var ret = null;
-    var rdata = null;
-    
-    if (!callback) {
-        callback = req.asyncNoEvent;
-    }
-
-    var request = new XMLHttpRequest();
-    if (typeof data == 'object') {
-        var xdata = [];
-        for (var i in data) {
-            var value = '';
-            if (typeof(data[i]) == 'object') {
-                value = encodeURIComponent(JSON.stringify(data[i]));
-            } else {
-                value = encodeURIComponent(data[i]);
-            }
-            xdata.push(i + "=" + value);
-        }
-        rdata = xdata.join("&");
-    } else {
-        rdata = data;
-    }
-    var sendurl = api + "report.cgi";
-    console.log("sending URL => " + sendurl + '?' + rdata);
-    request.open("POST", sendurl, true);
-    request.onload = function() {
-        if (request.status >= 200 && request.status <= 400) {
-            if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0) {
-                console.log(xparse);
-                var xparse = JSON.parse(request.responseText);
-                ret = xparse.result;
-               
-            }
-            
-            else {
-                ret = request.responseText;
-                //console.log("TEXT returned:" + ret);
-            }
-            callback(ret);
-
-
-        } else {
-            //console.log("ServerERROR: " + request.status + "\n" + request.responseText);
-            alert("ServerERROR:" + request.status + "\n" + request.responseText);
-        }
-    };
-    request.onerror = function() {
-        //console.log("ERROR: connection ERROR\n" + url);
-        alert("Connection ERROR!\n" + url);
-    };
-    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
-    request.send(rdata);
-
-    return ret;
-    },
-    asyncNoEvent: function(data) {
-        //console.log("query done");
-        //console.log(data);
-        //console.log("done");
-    }
-
-}
\ No newline at end of file
diff --git a/website/js/global/sqlite.js b/website/js/global/sqlite.js
deleted file mode 100644 (file)
index 2b08b63..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-const sqlite3 = require('sqlite3').verbose();
-
-let db = {
-  dbh: null,
-  connect: function(dbfile){
-    if (db.dbh != null){
-      db.disconnect();
-    }
-    db.dbh = new sqlite3.Database(dbfile);
-  },
-  query: function(sql){
-    process.stderr.write("Query:\n-----\n"+sql+"\n-----\n");
-    return new Promise((resolve, reject) => {
-      db.dbh.get(`${sql}`, (err, row) => {
-          if (err) {
-            reject(err); // optional: you might choose to swallow errors.
-          } else {
-            resolve(row); // accumulate the data
-          }
-      });
-    });
-  },
-  queryarray: function(sql){
-    process.stderr.write("QueryArray:\n-----\n"+sql+"\n-----\n");
-    return new Promise((resolve, reject) => {
-      let queries = [];
-      db.dbh.each(`${sql}`, (err, row) => {
-          if (err) {
-              reject(err); // optional: you might choose to swallow errors.
-          } else {
-              queries.push(row); // accumulate the data
-          }
-      }, (err, n) => {
-          if (err) {
-              reject(err); // optional: again, you might choose to swallow this error.
-          } else {
-              resolve(queries); // resolve the promise
-          }
-      });
-    });
-  },
-  querybykey: function(key,sql){
-    process.stderr.write("QueryByKey:\n-----\n"+sql+"\n-----\n");
-    return new Promise((resolve, reject) => {
-      let ret = {}
-      db.dbh.each(`${sql}`, (err, row) => {
-          if (err) {
-              reject(err); // optional: you might choose to swallow errors.
-          } else {
-            ret[row[key]] = row;
-          }
-      }, (err, n) => {
-          if (err) {
-              reject(err); // optional: again, you might choose to swallow this error.
-          } else {
-              resolve(ret); // resolve the promise
-          }
-      });
-    });
-  },
-  exec: function(sql,callback){
-    process.stderr.write("Exec:\n-----\n"+sql+"\n-----\n");
-    try {
-      return db.dbh.exec(sql);
-    } catch(e){
-      console.log(e);
-    }
-    
-  },
-  execAsync: function(sql){
-    process.stderr.write("ExecAsync:\n-----\n"+sql+"\n-----\n");
-    return new Promise((resolve, reject) => {
-      db.dbh.exec(`${sql}`, (err, row) => {
-          if (err) {
-            reject(err); // optional: you might choose to swallow errors.
-          } else {
-            resolve(row); // accumulate the data
-          }
-      });
-    });
-  },
-  newuuid: function(){
-    return db.query("SELECT lower(hex( randomblob(4)) || '-' || hex( randomblob(2)) || '-' || hex( randomblob(2)) || '-' || hex( randomblob(2))  ||  '-' || hex(randomblob(6))) as id;");
-  },
-  disconnect: function(){
-    db.dbh = null;
-  },
-  create_insert: function(tbl,data){
-    let sqlcols = [];
-    let sqlvals = [];
-    for (var c in data){
-      sqlcols.push(c);
-      sqlvals.push("'" + data[c] +"'");
-    }
-    let inssql = "INSERT INTO " + tbl + "(" + sqlcols.join(',') +") VALUES (" + sqlvals.join(',')+ ")";
-    return inssql;  
-  }
-}
\ No newline at end of file
diff --git a/website/js/timecalc.js b/website/js/timecalc.js
deleted file mode 100644 (file)
index e4bdfd2..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-var timecalc = {
-  MinutesToTime:function (minutes) {
-    if ((minutes == null) || (minutes == "")){ return "00:00";};
-    var hours = parseInt(minutes/60);
-    var restminutes = minutes-(hours*60);
-    return hours+ ":"+ timecalc.lpad(restminutes,2,'0');
-  },
-  TimeToMinutes:function (strtime){
-    var hours = parseInt(strtime.substring(0,2)) * 60;
-    var minutes = parseInt(strtime.substr(3,5));
-    return hours+minutes;
-  },
-  lpad: function(str, length,padString) {
-    str = str.toString();
-    while (str.length < length)
-        str = padString + str;
-    return str;
-  },
-  mondayBefore: function(sdate){
-     if (sdate == null){
-       sdate=new Date();
-     }
-    var day = sdate.getDay();
-    var prevMonday = new Date();
-     if(sdate.getDay() == 0){
-         prevMonday = new Date().setDate(sdate.getDate() - 0);
-    }
-    else{
-         prevMonday = new Date().setDate(sdate.getDate() - day);
-   }
-
-    return new Date(prevMonday);
-  },
-  sundayAfter: function(sdate){
-    var nextSunday = new Date();
-  }
-}
\ No newline at end of file
diff --git a/website/js/vendor/moment/moment-with-locales.min.js b/website/js/vendor/moment/moment-with-locales.min.js
deleted file mode 100644 (file)
index 02cd72b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.moment=a()}(this,function(){"use strict";var e,n;function l(){return e.apply(null,arguments)}function _(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function o(e){return void 0===e}function m(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function M(e,a){var t,s=[];for(t=0;t<e.length;++t)s.push(a(e[t],t));return s}function h(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function L(e,a){for(var t in a)h(a,t)&&(e[t]=a[t]);return h(a,"toString")&&(e.toString=a.toString),h(a,"valueOf")&&(e.valueOf=a.valueOf),e}function c(e,a,t,s){return va(e,a,t,s,!0).utc()}function Y(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function y(e){if(null==e._isValid){var a=Y(e),t=n.call(a.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&a.overflow<0&&!a.empty&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&t);if(e._strict&&(s=s&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function f(e){var a=c(NaN);return null!=e?L(Y(a),e):Y(a).userInvalidated=!0,a}n=Array.prototype.some?Array.prototype.some:function(e){for(var a=Object(this),t=a.length>>>0,s=0;s<t;s++)if(s in a&&e.call(this,a[s],s,a))return!0;return!1};var d=l.momentProperties=[];function k(e,a){var t,s,n;if(o(a._isAMomentObject)||(e._isAMomentObject=a._isAMomentObject),o(a._i)||(e._i=a._i),o(a._f)||(e._f=a._f),o(a._l)||(e._l=a._l),o(a._strict)||(e._strict=a._strict),o(a._tzm)||(e._tzm=a._tzm),o(a._isUTC)||(e._isUTC=a._isUTC),o(a._offset)||(e._offset=a._offset),o(a._pf)||(e._pf=Y(a)),o(a._locale)||(e._locale=a._locale),0<d.length)for(t=0;t<d.length;t++)o(n=a[s=d[t]])||(e[s]=n);return e}var a=!1;function p(e){k(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===a&&(a=!0,l.updateOffset(this),a=!1)}function D(e){return e instanceof p||null!=e&&null!=e._isAMomentObject}function T(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var a=+e,t=0;return 0!==a&&isFinite(a)&&(t=T(a)),t}function r(e,a,t){var s,n=Math.min(e.length,a.length),d=Math.abs(e.length-a.length),r=0;for(s=0;s<n;s++)(t&&e[s]!==a[s]||!t&&g(e[s])!==g(a[s]))&&r++;return r+d}function w(e){!1===l.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function t(n,d){var r=!0;return L(function(){if(null!=l.deprecationHandler&&l.deprecationHandler(null,n),r){for(var e,a=[],t=0;t<arguments.length;t++){if(e="","object"==typeof arguments[t]){for(var s in e+="\n["+t+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[t];a.push(e)}w(n+"\nArguments: "+Array.prototype.slice.call(a).join("")+"\n"+(new Error).stack),r=!1}return d.apply(this,arguments)},d)}var s,v={};function H(e,a){null!=l.deprecationHandler&&l.deprecationHandler(e,a),v[e]||(w(a),v[e]=!0)}function S(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,a){var t,s=L({},e);for(t in a)h(a,t)&&(i(e[t])&&i(a[t])?(s[t]={},L(s[t],e[t]),L(s[t],a[t])):null!=a[t]?s[t]=a[t]:delete s[t]);for(t in e)h(e,t)&&!h(a,t)&&i(e[t])&&(s[t]=L({},s[t]));return s}function j(e){null!=e&&this.set(e)}l.suppressDeprecationWarnings=!1,l.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var a,t=[];for(a in e)h(e,a)&&t.push(a);return t};var x={};function P(e,a){var t=e.toLowerCase();x[t]=x[t+"s"]=x[a]=e}function O(e){return"string"==typeof e?x[e]||x[e.toLowerCase()]:void 0}function W(e){var a,t,s={};for(t in e)h(e,t)&&(a=O(t))&&(s[a]=e[t]);return s}var E={};function A(e,a){E[e]=a}function F(e,a,t){var s=""+Math.abs(e),n=a-s.length;return(0<=e?t?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+s}var z=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,J=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,N={},R={};function I(e,a,t,s){var n=s;"string"==typeof s&&(n=function(){return this[s]()}),e&&(R[e]=n),a&&(R[a[0]]=function(){return F(n.apply(this,arguments),a[1],a[2])}),t&&(R[t]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function C(e,a){return e.isValid()?(a=G(a,e.localeData()),N[a]=N[a]||function(s){var e,n,a,d=s.match(z);for(e=0,n=d.length;e<n;e++)R[d[e]]?d[e]=R[d[e]]:d[e]=(a=d[e]).match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"");return function(e){var a,t="";for(a=0;a<n;a++)t+=S(d[a])?d[a].call(e,s):d[a];return t}}(a),N[a](e)):e.localeData().invalidDate()}function G(e,a){var t=5;function s(e){return a.longDateFormat(e)||e}for(J.lastIndex=0;0<=t&&J.test(e);)e=e.replace(J,s),J.lastIndex=0,t-=1;return e}var U=/\d/,V=/\d\d/,K=/\d{3}/,$=/\d{4}/,Z=/[+-]?\d{6}/,B=/\d\d?/,q=/\d\d\d\d?/,Q=/\d\d\d\d\d\d?/,X=/\d{1,3}/,ee=/\d{1,4}/,ae=/[+-]?\d{1,6}/,te=/\d+/,se=/[+-]?\d+/,ne=/Z|[+-]\d\d:?\d\d/gi,de=/Z|[+-]\d\d(?::?\d\d)?/gi,re=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,_e={};function ie(e,t,s){_e[e]=S(t)?t:function(e,a){return e&&s?s:t}}function oe(e,a){return h(_e,e)?_e[e](a._strict,a._locale):new RegExp(me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,a,t,s,n){return a||t||s||n})))}function me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ue={};function le(e,t){var a,s=t;for("string"==typeof e&&(e=[e]),m(t)&&(s=function(e,a){a[t]=g(e)}),a=0;a<e.length;a++)ue[e[a]]=s}function Me(e,n){le(e,function(e,a,t,s){t._w=t._w||{},n(e,t._w,t,s)})}var he=0,Le=1,ce=2,Ye=3,ye=4,fe=5,ke=6,pe=7,De=8;function Te(e){return ge(e)?366:365}function ge(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),P("year","y"),A("year",1),ie("Y",se),ie("YY",B,V),ie("YYYY",ee,$),ie("YYYYY",ae,Z),ie("YYYYYY",ae,Z),le(["YYYYY","YYYYYY"],he),le("YYYY",function(e,a){a[he]=2===e.length?l.parseTwoDigitYear(e):g(e)}),le("YY",function(e,a){a[he]=l.parseTwoDigitYear(e)}),le("Y",function(e,a){a[he]=parseInt(e,10)}),l.parseTwoDigitYear=function(e){return g(e)+(68<g(e)?1900:2e3)};var we,ve=He("FullYear",!0);function He(a,t){return function(e){return null!=e?(be(this,a,e),l.updateOffset(this,t),this):Se(this,a)}}function Se(e,a){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+a]():NaN}function be(e,a,t){e.isValid()&&!isNaN(t)&&("FullYear"===a&&ge(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+a](t,e.month(),je(t,e.month())):e._d["set"+(e._isUTC?"UTC":"")+a](t))}function je(e,a){if(isNaN(e)||isNaN(a))return NaN;var t,s=(a%(t=12)+t)%t;return e+=(a-s)/12,1===s?ge(e)?29:28:31-s%7%2}we=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var a;for(a=0;a<this.length;++a)if(this[a]===e)return a;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),P("month","M"),A("month",8),ie("M",B),ie("MM",B,V),ie("MMM",function(e,a){return a.monthsShortRegex(e)}),ie("MMMM",function(e,a){return a.monthsRegex(e)}),le(["M","MM"],function(e,a){a[Le]=g(e)-1}),le(["MMM","MMMM"],function(e,a,t,s){var n=t._locale.monthsParse(e,s,t._strict);null!=n?a[Le]=n:Y(t).invalidMonth=e});var xe=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Pe="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Oe="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function We(e,a){var t;if(!e.isValid())return e;if("string"==typeof a)if(/^\d+$/.test(a))a=g(a);else if(!m(a=e.localeData().monthsParse(a)))return e;return t=Math.min(e.date(),je(e.year(),a)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](a,t),e}function Ee(e){return null!=e?(We(this,e),l.updateOffset(this,!0),this):Se(this,"Month")}var Ae=re;var Fe=re;function ze(){function e(e,a){return a.length-e.length}var a,t,s=[],n=[],d=[];for(a=0;a<12;a++)t=c([2e3,a]),s.push(this.monthsShort(t,"")),n.push(this.months(t,"")),d.push(this.months(t,"")),d.push(this.monthsShort(t,""));for(s.sort(e),n.sort(e),d.sort(e),a=0;a<12;a++)s[a]=me(s[a]),n[a]=me(n[a]);for(a=0;a<24;a++)d[a]=me(d[a]);this._monthsRegex=new RegExp("^("+d.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Je(e){var a=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(a.getUTCFullYear())&&a.setUTCFullYear(e),a}function Ne(e,a,t){var s=7+a-t;return-((7+Je(e,0,s).getUTCDay()-a)%7)+s-1}function Re(e,a,t,s,n){var d,r,_=1+7*(a-1)+(7+t-s)%7+Ne(e,s,n);return r=_<=0?Te(d=e-1)+_:_>Te(e)?(d=e+1,_-Te(e)):(d=e,_),{year:d,dayOfYear:r}}function Ie(e,a,t){var s,n,d=Ne(e.year(),a,t),r=Math.floor((e.dayOfYear()-d-1)/7)+1;return r<1?s=r+Ce(n=e.year()-1,a,t):r>Ce(e.year(),a,t)?(s=r-Ce(e.year(),a,t),n=e.year()+1):(n=e.year(),s=r),{week:s,year:n}}function Ce(e,a,t){var s=Ne(e,a,t),n=Ne(e+1,a,t);return(Te(e)-s+n)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),P("week","w"),P("isoWeek","W"),A("week",5),A("isoWeek",5),ie("w",B),ie("ww",B,V),ie("W",B),ie("WW",B,V),Me(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=g(e)});I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),P("day","d"),P("weekday","e"),P("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),ie("d",B),ie("e",B),ie("E",B),ie("dd",function(e,a){return a.weekdaysMinRegex(e)}),ie("ddd",function(e,a){return a.weekdaysShortRegex(e)}),ie("dddd",function(e,a){return a.weekdaysRegex(e)}),Me(["dd","ddd","dddd"],function(e,a,t,s){var n=t._locale.weekdaysParse(e,s,t._strict);null!=n?a.d=n:Y(t).invalidWeekday=e}),Me(["d","e","E"],function(e,a,t,s){a[s]=g(e)});var Ge="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ue="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var Ve="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var Ke=re;var $e=re;var Ze=re;function Be(){function e(e,a){return a.length-e.length}var a,t,s,n,d,r=[],_=[],i=[],o=[];for(a=0;a<7;a++)t=c([2e3,1]).day(a),s=this.weekdaysMin(t,""),n=this.weekdaysShort(t,""),d=this.weekdays(t,""),r.push(s),_.push(n),i.push(d),o.push(s),o.push(n),o.push(d);for(r.sort(e),_.sort(e),i.sort(e),o.sort(e),a=0;a<7;a++)_[a]=me(_[a]),i[a]=me(i[a]),o[a]=me(o[a]);this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function qe(){return this.hours()%12||12}function Qe(e,a){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function Xe(e,a){return a._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+qe.apply(this)+F(this.minutes(),2)}),I("hmmss",0,0,function(){return""+qe.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+F(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)}),Qe("a",!0),Qe("A",!1),P("hour","h"),A("hour",13),ie("a",Xe),ie("A",Xe),ie("H",B),ie("h",B),ie("k",B),ie("HH",B,V),ie("hh",B,V),ie("kk",B,V),ie("hmm",q),ie("hmmss",Q),ie("Hmm",q),ie("Hmmss",Q),le(["H","HH"],Ye),le(["k","kk"],function(e,a,t){var s=g(e);a[Ye]=24===s?0:s}),le(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),le(["h","hh"],function(e,a,t){a[Ye]=g(e),Y(t).bigHour=!0}),le("hmm",function(e,a,t){var s=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s)),Y(t).bigHour=!0}),le("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s,2)),a[fe]=g(e.substr(n)),Y(t).bigHour=!0}),le("Hmm",function(e,a,t){var s=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s))}),le("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s,2)),a[fe]=g(e.substr(n))});var ea,aa=He("Hours",!0),ta={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Pe,monthsShort:Oe,week:{dow:0,doy:6},weekdays:Ge,weekdaysMin:Ve,weekdaysShort:Ue,meridiemParse:/[ap]\.?m?\.?/i},sa={},na={};function da(e){return e?e.toLowerCase().replace("_","-"):e}function ra(e){var a=null;if(!sa[e]&&"undefined"!=typeof module&&module&&module.exports)try{a=ea._abbr,require("./locale/"+e),_a(a)}catch(e){}return sa[e]}function _a(e,a){var t;return e&&((t=o(a)?oa(e):ia(e,a))?ea=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ea._abbr}function ia(e,a){if(null===a)return delete sa[e],null;var t,s=ta;if(a.abbr=e,null!=sa[e])H("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=sa[e]._config;else if(null!=a.parentLocale)if(null!=sa[a.parentLocale])s=sa[a.parentLocale]._config;else{if(null==(t=ra(a.parentLocale)))return na[a.parentLocale]||(na[a.parentLocale]=[]),na[a.parentLocale].push({name:e,config:a}),null;s=t._config}return sa[e]=new j(b(s,a)),na[e]&&na[e].forEach(function(e){ia(e.name,e.config)}),_a(e),sa[e]}function oa(e){var a;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ea;if(!_(e)){if(a=ra(e))return a;e=[e]}return function(e){for(var a,t,s,n,d=0;d<e.length;){for(a=(n=da(e[d]).split("-")).length,t=(t=da(e[d+1]))?t.split("-"):null;0<a;){if(s=ra(n.slice(0,a).join("-")))return s;if(t&&t.length>=a&&r(n,t,!0)>=a-1)break;a--}d++}return ea}(e)}function ma(e){var a,t=e._a;return t&&-2===Y(e).overflow&&(a=t[Le]<0||11<t[Le]?Le:t[ce]<1||t[ce]>je(t[he],t[Le])?ce:t[Ye]<0||24<t[Ye]||24===t[Ye]&&(0!==t[ye]||0!==t[fe]||0!==t[ke])?Ye:t[ye]<0||59<t[ye]?ye:t[fe]<0||59<t[fe]?fe:t[ke]<0||999<t[ke]?ke:-1,Y(e)._overflowDayOfYear&&(a<he||ce<a)&&(a=ce),Y(e)._overflowWeeks&&-1===a&&(a=pe),Y(e)._overflowWeekday&&-1===a&&(a=De),Y(e).overflow=a),e}function ua(e,a,t){return null!=e?e:null!=a?a:t}function la(e){var a,t,s,n,d,r=[];if(!e._d){var _,i;for(_=e,i=new Date(l.now()),s=_._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()],e._w&&null==e._a[ce]&&null==e._a[Le]&&function(e){var a,t,s,n,d,r,_,i;if(null!=(a=e._w).GG||null!=a.W||null!=a.E)d=1,r=4,t=ua(a.GG,e._a[he],Ie(Ha(),1,4).year),s=ua(a.W,1),((n=ua(a.E,1))<1||7<n)&&(i=!0);else{d=e._locale._week.dow,r=e._locale._week.doy;var o=Ie(Ha(),d,r);t=ua(a.gg,e._a[he],o.year),s=ua(a.w,o.week),null!=a.d?((n=a.d)<0||6<n)&&(i=!0):null!=a.e?(n=a.e+d,(a.e<0||6<a.e)&&(i=!0)):n=d}s<1||s>Ce(t,d,r)?Y(e)._overflowWeeks=!0:null!=i?Y(e)._overflowWeekday=!0:(_=Re(t,s,n,d,r),e._a[he]=_.year,e._dayOfYear=_.dayOfYear)}(e),null!=e._dayOfYear&&(d=ua(e._a[he],s[he]),(e._dayOfYear>Te(d)||0===e._dayOfYear)&&(Y(e)._overflowDayOfYear=!0),t=Je(d,0,e._dayOfYear),e._a[Le]=t.getUTCMonth(),e._a[ce]=t.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=r[a]=s[a];for(;a<7;a++)e._a[a]=r[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[Ye]&&0===e._a[ye]&&0===e._a[fe]&&0===e._a[ke]&&(e._nextDay=!0,e._a[Ye]=0),e._d=(e._useUTC?Je:function(e,a,t,s,n,d,r){var _=new Date(e,a,t,s,n,d,r);return e<100&&0<=e&&isFinite(_.getFullYear())&&_.setFullYear(e),_}).apply(null,r),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Ye]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(Y(e).weekdayMismatch=!0)}}var Ma=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ha=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,La=/Z|[+-]\d\d(?::?\d\d)?/,ca=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ya=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ya=/^\/?Date\((\-?\d+)/i;function fa(e){var a,t,s,n,d,r,_=e._i,i=Ma.exec(_)||ha.exec(_);if(i){for(Y(e).iso=!0,a=0,t=ca.length;a<t;a++)if(ca[a][1].exec(i[1])){n=ca[a][0],s=!1!==ca[a][2];break}if(null==n)return void(e._isValid=!1);if(i[3]){for(a=0,t=Ya.length;a<t;a++)if(Ya[a][1].exec(i[3])){d=(i[2]||" ")+Ya[a][0];break}if(null==d)return void(e._isValid=!1)}if(!s&&null!=d)return void(e._isValid=!1);if(i[4]){if(!La.exec(i[4]))return void(e._isValid=!1);r="Z"}e._f=n+(d||"")+(r||""),ga(e)}else e._isValid=!1}var ka=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function pa(e,a,t,s,n,d){var r=[function(e){var a=parseInt(e,10);{if(a<=49)return 2e3+a;if(a<=999)return 1900+a}return a}(e),Oe.indexOf(a),parseInt(t,10),parseInt(s,10),parseInt(n,10)];return d&&r.push(parseInt(d,10)),r}var Da={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ta(e){var a,t,s,n=ka.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(n){var d=pa(n[4],n[3],n[2],n[5],n[6],n[7]);if(a=n[1],t=d,s=e,a&&Ue.indexOf(a)!==new Date(t[0],t[1],t[2]).getDay()&&(Y(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=d,e._tzm=function(e,a,t){if(e)return Da[e];if(a)return 0;var s=parseInt(t,10),n=s%100;return(s-n)/100*60+n}(n[8],n[9],n[10]),e._d=Je.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),Y(e).rfc2822=!0}else e._isValid=!1}function ga(e){if(e._f!==l.ISO_8601)if(e._f!==l.RFC_2822){e._a=[],Y(e).empty=!0;var a,t,s,n,d,r,_,i,o=""+e._i,m=o.length,u=0;for(s=G(e._f,e._locale).match(z)||[],a=0;a<s.length;a++)n=s[a],(t=(o.match(oe(n,e))||[])[0])&&(0<(d=o.substr(0,o.indexOf(t))).length&&Y(e).unusedInput.push(d),o=o.slice(o.indexOf(t)+t.length),u+=t.length),R[n]?(t?Y(e).empty=!1:Y(e).unusedTokens.push(n),r=n,i=e,null!=(_=t)&&h(ue,r)&&ue[r](_,i._a,i,r)):e._strict&&!t&&Y(e).unusedTokens.push(n);Y(e).charsLeftOver=m-u,0<o.length&&Y(e).unusedInput.push(o),e._a[Ye]<=12&&!0===Y(e).bigHour&&0<e._a[Ye]&&(Y(e).bigHour=void 0),Y(e).parsedDateParts=e._a.slice(0),Y(e).meridiem=e._meridiem,e._a[Ye]=function(e,a,t){var s;if(null==t)return a;return null!=e.meridiemHour?e.meridiemHour(a,t):(null!=e.isPM&&((s=e.isPM(t))&&a<12&&(a+=12),s||12!==a||(a=0)),a)}(e._locale,e._a[Ye],e._meridiem),la(e),ma(e)}else Ta(e);else fa(e)}function wa(e){var a,t,s,n,d=e._i,r=e._f;return e._locale=e._locale||oa(e._l),null===d||void 0===r&&""===d?f({nullInput:!0}):("string"==typeof d&&(e._i=d=e._locale.preparse(d)),D(d)?new p(ma(d)):(u(d)?e._d=d:_(r)?function(e){var a,t,s,n,d;if(0===e._f.length)return Y(e).invalidFormat=!0,e._d=new Date(NaN);for(n=0;n<e._f.length;n++)d=0,a=k({},e),null!=e._useUTC&&(a._useUTC=e._useUTC),a._f=e._f[n],ga(a),y(a)&&(d+=Y(a).charsLeftOver,d+=10*Y(a).unusedTokens.length,Y(a).score=d,(null==s||d<s)&&(s=d,t=a));L(e,t||a)}(e):r?ga(e):o(t=(a=e)._i)?a._d=new Date(l.now()):u(t)?a._d=new Date(t.valueOf()):"string"==typeof t?(s=a,null===(n=ya.exec(s._i))?(fa(s),!1===s._isValid&&(delete s._isValid,Ta(s),!1===s._isValid&&(delete s._isValid,l.createFromInputFallback(s)))):s._d=new Date(+n[1])):_(t)?(a._a=M(t.slice(0),function(e){return parseInt(e,10)}),la(a)):i(t)?function(e){if(!e._d){var a=W(e._i);e._a=M([a.year,a.month,a.day||a.date,a.hour,a.minute,a.second,a.millisecond],function(e){return e&&parseInt(e,10)}),la(e)}}(a):m(t)?a._d=new Date(t):l.createFromInputFallback(a),y(e)||(e._d=null),e))}function va(e,a,t,s,n){var d,r={};return!0!==t&&!1!==t||(s=t,t=void 0),(i(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var a;for(a in e)if(e.hasOwnProperty(a))return!1;return!0}(e)||_(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=t,r._i=e,r._f=a,r._strict=s,(d=new p(ma(wa(r))))._nextDay&&(d.add(1,"d"),d._nextDay=void 0),d}function Ha(e,a,t,s){return va(e,a,t,s,!1)}l.createFromInputFallback=t("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),l.ISO_8601=function(){},l.RFC_2822=function(){};var Sa=t("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ha.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:f()}),ba=t("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ha.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:f()});function ja(e,a){var t,s;if(1===a.length&&_(a[0])&&(a=a[0]),!a.length)return Ha();for(t=a[0],s=1;s<a.length;++s)a[s].isValid()&&!a[s][e](t)||(t=a[s]);return t}var xa=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Pa(e){var a=W(e),t=a.year||0,s=a.quarter||0,n=a.month||0,d=a.week||a.isoWeek||0,r=a.day||0,_=a.hour||0,i=a.minute||0,o=a.second||0,m=a.millisecond||0;this._isValid=function(e){for(var a in e)if(-1===we.call(xa,a)||null!=e[a]&&isNaN(e[a]))return!1;for(var t=!1,s=0;s<xa.length;++s)if(e[xa[s]]){if(t)return!1;parseFloat(e[xa[s]])!==g(e[xa[s]])&&(t=!0)}return!0}(a),this._milliseconds=+m+1e3*o+6e4*i+1e3*_*60*60,this._days=+r+7*d,this._months=+n+3*s+12*t,this._data={},this._locale=oa(),this._bubble()}function Oa(e){return e instanceof Pa}function Wa(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ea(e,t){I(e,0,0,function(){var e=this.utcOffset(),a="+";return e<0&&(e=-e,a="-"),a+F(~~(e/60),2)+t+F(~~e%60,2)})}Ea("Z",":"),Ea("ZZ",""),ie("Z",de),ie("ZZ",de),le(["Z","ZZ"],function(e,a,t){t._useUTC=!0,t._tzm=Fa(de,e)});var Aa=/([\+\-]|\d\d)/gi;function Fa(e,a){var t=(a||"").match(e);if(null===t)return null;var s=((t[t.length-1]||[])+"").match(Aa)||["-",0,0],n=60*s[1]+g(s[2]);return 0===n?0:"+"===s[0]?n:-n}function za(e,a){var t,s;return a._isUTC?(t=a.clone(),s=(D(e)||u(e)?e.valueOf():Ha(e).valueOf())-t.valueOf(),t._d.setTime(t._d.valueOf()+s),l.updateOffset(t,!1),t):Ha(e).local()}function Ja(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Na(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}l.updateOffset=function(){};var Ra=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ia=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ca(e,a){var t,s,n,d=e,r=null;return Oa(e)?d={ms:e._milliseconds,d:e._days,M:e._months}:m(e)?(d={},a?d[a]=e:d.milliseconds=e):(r=Ra.exec(e))?(t="-"===r[1]?-1:1,d={y:0,d:g(r[ce])*t,h:g(r[Ye])*t,m:g(r[ye])*t,s:g(r[fe])*t,ms:g(Wa(1e3*r[ke]))*t}):(r=Ia.exec(e))?(t="-"===r[1]?-1:1,d={y:Ga(r[2],t),M:Ga(r[3],t),w:Ga(r[4],t),d:Ga(r[5],t),h:Ga(r[6],t),m:Ga(r[7],t),s:Ga(r[8],t)}):null==d?d={}:"object"==typeof d&&("from"in d||"to"in d)&&(n=function(e,a){var t;if(!e.isValid()||!a.isValid())return{milliseconds:0,months:0};a=za(a,e),e.isBefore(a)?t=Ua(e,a):((t=Ua(a,e)).milliseconds=-t.milliseconds,t.months=-t.months);return t}(Ha(d.from),Ha(d.to)),(d={}).ms=n.milliseconds,d.M=n.months),s=new Pa(d),Oa(e)&&h(e,"_locale")&&(s._locale=e._locale),s}function Ga(e,a){var t=e&&parseFloat(e.replace(",","."));return(isNaN(t)?0:t)*a}function Ua(e,a){var t={milliseconds:0,months:0};return t.months=a.month()-e.month()+12*(a.year()-e.year()),e.clone().add(t.months,"M").isAfter(a)&&--t.months,t.milliseconds=+a-+e.clone().add(t.months,"M"),t}function Va(s,n){return function(e,a){var t;return null===a||isNaN(+a)||(H(n,"moment()."+n+"(period, number) is deprecated. Please use moment()."+n+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),t=e,e=a,a=t),Ka(this,Ca(e="string"==typeof e?+e:e,a),s),this}}function Ka(e,a,t,s){var n=a._milliseconds,d=Wa(a._days),r=Wa(a._months);e.isValid()&&(s=null==s||s,r&&We(e,Se(e,"Month")+r*t),d&&be(e,"Date",Se(e,"Date")+d*t),n&&e._d.setTime(e._d.valueOf()+n*t),s&&l.updateOffset(e,d||r))}Ca.fn=Pa.prototype,Ca.invalid=function(){return Ca(NaN)};var $a=Va(1,"add"),Za=Va(-1,"subtract");function Ba(e,a){var t=12*(a.year()-e.year())+(a.month()-e.month()),s=e.clone().add(t,"months");return-(t+(a-s<0?(a-s)/(s-e.clone().add(t-1,"months")):(a-s)/(e.clone().add(t+1,"months")-s)))||0}function qa(e){var a;return void 0===e?this._locale._abbr:(null!=(a=oa(e))&&(this._locale=a),this)}l.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",l.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Qa=t("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Xa(){return this._locale}function et(e,a){I(0,[e,e.length],0,a)}function at(e,a,t,s,n){var d;return null==e?Ie(this,s,n).year:((d=Ce(e,s,n))<a&&(a=d),function(e,a,t,s,n){var d=Re(e,a,t,s,n),r=Je(d.year,0,d.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}.call(this,e,a,t,s,n))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),et("gggg","weekYear"),et("ggggg","weekYear"),et("GGGG","isoWeekYear"),et("GGGGG","isoWeekYear"),P("weekYear","gg"),P("isoWeekYear","GG"),A("weekYear",1),A("isoWeekYear",1),ie("G",se),ie("g",se),ie("GG",B,V),ie("gg",B,V),ie("GGGG",ee,$),ie("gggg",ee,$),ie("GGGGG",ae,Z),ie("ggggg",ae,Z),Me(["gggg","ggggg","GGGG","GGGGG"],function(e,a,t,s){a[s.substr(0,2)]=g(e)}),Me(["gg","GG"],function(e,a,t,s){a[s]=l.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),P("quarter","Q"),A("quarter",7),ie("Q",U),le("Q",function(e,a){a[Le]=3*(g(e)-1)}),I("D",["DD",2],"Do","date"),P("date","D"),A("date",9),ie("D",B),ie("DD",B,V),ie("Do",function(e,a){return e?a._dayOfMonthOrdinalParse||a._ordinalParse:a._dayOfMonthOrdinalParseLenient}),le(["D","DD"],ce),le("Do",function(e,a){a[ce]=g(e.match(B)[0])});var tt=He("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),P("dayOfYear","DDD"),A("dayOfYear",4),ie("DDD",X),ie("DDDD",K),le(["DDD","DDDD"],function(e,a,t){t._dayOfYear=g(e)}),I("m",["mm",2],0,"minute"),P("minute","m"),A("minute",14),ie("m",B),ie("mm",B,V),le(["m","mm"],ye);var st=He("Minutes",!1);I("s",["ss",2],0,"second"),P("second","s"),A("second",15),ie("s",B),ie("ss",B,V),le(["s","ss"],fe);var nt,dt=He("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),P("millisecond","ms"),A("millisecond",16),ie("S",X,U),ie("SS",X,V),ie("SSS",X,K),nt="SSSS";nt.length<=9;nt+="S")ie(nt,te);function rt(e,a){a[ke]=g(1e3*("0."+e))}for(nt="S";nt.length<=9;nt+="S")le(nt,rt);var _t=He("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var it=p.prototype;function ot(e){return e}it.add=$a,it.calendar=function(e,a){var t=e||Ha(),s=za(t,this).startOf("day"),n=l.calendarFormat(this,s)||"sameElse",d=a&&(S(a[n])?a[n].call(this,t):a[n]);return this.format(d||this.localeData().calendar(n,this,Ha(t)))},it.clone=function(){return new p(this)},it.diff=function(e,a,t){var s,n,d;if(!this.isValid())return NaN;if(!(s=za(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),a=O(a)){case"year":d=Ba(this,s)/12;break;case"month":d=Ba(this,s);break;case"quarter":d=Ba(this,s)/3;break;case"second":d=(this-s)/1e3;break;case"minute":d=(this-s)/6e4;break;case"hour":d=(this-s)/36e5;break;case"day":d=(this-s-n)/864e5;break;case"week":d=(this-s-n)/6048e5;break;default:d=this-s}return t?d:T(d)},it.endOf=function(e){return void 0===(e=O(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},it.format=function(e){e||(e=this.isUtc()?l.defaultFormatUtc:l.defaultFormat);var a=C(this,e);return this.localeData().postformat(a)},it.from=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Ha(e).isValid())?Ca({to:this,from:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},it.fromNow=function(e){return this.from(Ha(),e)},it.to=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Ha(e).isValid())?Ca({from:this,to:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},it.toNow=function(e){return this.to(Ha(),e)},it.get=function(e){return S(this[e=O(e)])?this[e]():this},it.invalidAt=function(){return Y(this).overflow},it.isAfter=function(e,a){var t=D(e)?e:Ha(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=O(a)||"millisecond")?this.valueOf()>t.valueOf():t.valueOf()<this.clone().startOf(a).valueOf())},it.isBefore=function(e,a){var t=D(e)?e:Ha(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=O(a)||"millisecond")?this.valueOf()<t.valueOf():this.clone().endOf(a).valueOf()<t.valueOf())},it.isBetween=function(e,a,t,s){var n=D(e)?e:Ha(e),d=D(a)?a:Ha(a);return!!(this.isValid()&&n.isValid()&&d.isValid())&&("("===(s=s||"()")[0]?this.isAfter(n,t):!this.isBefore(n,t))&&(")"===s[1]?this.isBefore(d,t):!this.isAfter(d,t))},it.isSame=function(e,a){var t,s=D(e)?e:Ha(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(a=O(a)||"millisecond")?this.valueOf()===s.valueOf():(t=s.valueOf(),this.clone().startOf(a).valueOf()<=t&&t<=this.clone().endOf(a).valueOf()))},it.isSameOrAfter=function(e,a){return this.isSame(e,a)||this.isAfter(e,a)},it.isSameOrBefore=function(e,a){return this.isSame(e,a)||this.isBefore(e,a)},it.isValid=function(){return y(this)},it.lang=Qa,it.locale=qa,it.localeData=Xa,it.max=ba,it.min=Sa,it.parsingFlags=function(){return L({},Y(this))},it.set=function(e,a){if("object"==typeof e)for(var t=function(e){var a=[];for(var t in e)a.push({unit:t,priority:E[t]});return a.sort(function(e,a){return e.priority-a.priority}),a}(e=W(e)),s=0;s<t.length;s++)this[t[s].unit](e[t[s].unit]);else if(S(this[e=O(e)]))return this[e](a);return this},it.startOf=function(e){switch(e=O(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},it.subtract=Za,it.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},it.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},it.toDate=function(){return new Date(this.valueOf())},it.toISOString=function(e){if(!this.isValid())return null;var a=!0!==e,t=a?this.clone().utc():this;return t.year()<0||9999<t.year()?C(t,a?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):S(Date.prototype.toISOString)?a?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",C(t,"Z")):C(t,a?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},it.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",a="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",a="Z");var t="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=a+'[")]';return this.format(t+s+"-MM-DD[T]HH:mm:ss.SSS"+n)},it.toJSON=function(){return this.isValid()?this.toISOString():null},it.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},it.unix=function(){return Math.floor(this.valueOf()/1e3)},it.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},it.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},it.year=ve,it.isLeapYear=function(){return ge(this.year())},it.weekYear=function(e){return at.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},it.isoWeekYear=function(e){return at.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},it.quarter=it.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},it.month=Ee,it.daysInMonth=function(){return je(this.year(),this.month())},it.week=it.weeks=function(e){var a=this.localeData().week(this);return null==e?a:this.add(7*(e-a),"d")},it.isoWeek=it.isoWeeks=function(e){var a=Ie(this,1,4).week;return null==e?a:this.add(7*(e-a),"d")},it.weeksInYear=function(){var e=this.localeData()._week;return Ce(this.year(),e.dow,e.doy)},it.isoWeeksInYear=function(){return Ce(this.year(),1,4)},it.date=tt,it.day=it.days=function(e){if(!this.isValid())return null!=e?this:NaN;var a,t,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(a=e,t=this.localeData(),e="string"!=typeof a?a:isNaN(a)?"number"==typeof(a=t.weekdaysParse(a))?a:null:parseInt(a,10),this.add(e-s,"d")):s},it.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var a=(this.day()+7-this.localeData()._week.dow)%7;return null==e?a:this.add(e-a,"d")},it.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var a,t,s=(a=e,t=this.localeData(),"string"==typeof a?t.weekdaysParse(a)%7||7:isNaN(a)?null:a);return this.day(this.day()%7?s:s-7)},it.dayOfYear=function(e){var a=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?a:this.add(e-a,"d")},it.hour=it.hours=aa,it.minute=it.minutes=st,it.second=it.seconds=dt,it.millisecond=it.milliseconds=_t,it.utcOffset=function(e,a,t){var s,n=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?n:Ja(this);if("string"==typeof e){if(null===(e=Fa(de,e)))return this}else Math.abs(e)<16&&!t&&(e*=60);return!this._isUTC&&a&&(s=Ja(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),n!==e&&(!a||this._changeInProgress?Ka(this,Ca(e-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,l.updateOffset(this,!0),this._changeInProgress=null)),this},it.utc=function(e){return this.utcOffset(0,e)},it.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Ja(this),"m")),this},it.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Fa(ne,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},it.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Ha(e).utcOffset():0,(this.utcOffset()-e)%60==0)},it.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},it.isLocal=function(){return!!this.isValid()&&!this._isUTC},it.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},it.isUtc=Na,it.isUTC=Na,it.zoneAbbr=function(){return this._isUTC?"UTC":""},it.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},it.dates=t("dates accessor is deprecated. Use date instead.",tt),it.months=t("months accessor is deprecated. Use month instead",Ee),it.years=t("years accessor is deprecated. Use year instead",ve),it.zone=t("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,a),this):-this.utcOffset()}),it.isDSTShifted=t("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e={};if(k(e,this),(e=wa(e))._a){var a=e._isUTC?c(e._a):Ha(e._a);this._isDSTShifted=this.isValid()&&0<r(e._a,a.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var mt=j.prototype;function ut(e,a,t,s){var n=oa(),d=c().set(s,a);return n[t](d,e)}function lt(e,a,t){if(m(e)&&(a=e,e=void 0),e=e||"",null!=a)return ut(e,a,t,"month");var s,n=[];for(s=0;s<12;s++)n[s]=ut(e,s,t,"month");return n}function Mt(e,a,t,s){a=("boolean"==typeof e?m(a)&&(t=a,a=void 0):(a=e,e=!1,m(t=a)&&(t=a,a=void 0)),a||"");var n,d=oa(),r=e?d._week.dow:0;if(null!=t)return ut(a,(t+r)%7,s,"day");var _=[];for(n=0;n<7;n++)_[n]=ut(a,(n+r)%7,s,"day");return _}mt.calendar=function(e,a,t){var s=this._calendar[e]||this._calendar.sameElse;return S(s)?s.call(a,t):s},mt.longDateFormat=function(e){var a=this._longDateFormat[e],t=this._longDateFormat[e.toUpperCase()];return a||!t?a:(this._longDateFormat[e]=t.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},mt.invalidDate=function(){return this._invalidDate},mt.ordinal=function(e){return this._ordinal.replace("%d",e)},mt.preparse=ot,mt.postformat=ot,mt.relativeTime=function(e,a,t,s){var n=this._relativeTime[t];return S(n)?n(e,a,t,s):n.replace(/%d/i,e)},mt.pastFuture=function(e,a){var t=this._relativeTime[0<e?"future":"past"];return S(t)?t(a):t.replace(/%s/i,a)},mt.set=function(e){var a,t;for(t in e)S(a=e[t])?this[t]=a:this["_"+t]=a;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},mt.months=function(e,a){return e?_(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||xe).test(a)?"format":"standalone"][e.month()]:_(this._months)?this._months:this._months.standalone},mt.monthsShort=function(e,a){return e?_(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[xe.test(a)?"format":"standalone"][e.month()]:_(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},mt.monthsParse=function(e,a,t){var s,n,d;if(this._monthsParseExact)return function(e,a,t){var s,n,d,r=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)d=c([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(d,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(d,"").toLocaleLowerCase();return t?"MMM"===a?-1!==(n=we.call(this._shortMonthsParse,r))?n:null:-1!==(n=we.call(this._longMonthsParse,r))?n:null:"MMM"===a?-1!==(n=we.call(this._shortMonthsParse,r))?n:-1!==(n=we.call(this._longMonthsParse,r))?n:null:-1!==(n=we.call(this._longMonthsParse,r))?n:-1!==(n=we.call(this._shortMonthsParse,r))?n:null}.call(this,e,a,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=c([2e3,s]),t&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),t||this._monthsParse[s]||(d="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(d.replace(".",""),"i")),t&&"MMMM"===a&&this._longMonthsParse[s].test(e))return s;if(t&&"MMM"===a&&this._shortMonthsParse[s].test(e))return s;if(!t&&this._monthsParse[s].test(e))return s}},mt.monthsRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||ze.call(this),e?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Fe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},mt.monthsShortRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||ze.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=Ae),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},mt.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},mt.firstDayOfYear=function(){return this._week.doy},mt.firstDayOfWeek=function(){return this._week.dow},mt.weekdays=function(e,a){return e?_(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(a)?"format":"standalone"][e.day()]:_(this._weekdays)?this._weekdays:this._weekdays.standalone},mt.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},mt.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},mt.weekdaysParse=function(e,a,t){var s,n,d;if(this._weekdaysParseExact)return function(e,a,t){var s,n,d,r=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)d=c([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(d,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(d,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(d,"").toLocaleLowerCase();return t?"dddd"===a?-1!==(n=we.call(this._weekdaysParse,r))?n:null:"ddd"===a?-1!==(n=we.call(this._shortWeekdaysParse,r))?n:null:-1!==(n=we.call(this._minWeekdaysParse,r))?n:null:"dddd"===a?-1!==(n=we.call(this._weekdaysParse,r))?n:-1!==(n=we.call(this._shortWeekdaysParse,r))?n:-1!==(n=we.call(this._minWeekdaysParse,r))?n:null:"ddd"===a?-1!==(n=we.call(this._shortWeekdaysParse,r))?n:-1!==(n=we.call(this._weekdaysParse,r))?n:-1!==(n=we.call(this._minWeekdaysParse,r))?n:null:-1!==(n=we.call(this._minWeekdaysParse,r))?n:-1!==(n=we.call(this._weekdaysParse,r))?n:-1!==(n=we.call(this._shortWeekdaysParse,r))?n:null}.call(this,e,a,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=c([2e3,1]).day(s),t&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(d="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(d.replace(".",""),"i")),t&&"dddd"===a&&this._fullWeekdaysParse[s].test(e))return s;if(t&&"ddd"===a&&this._shortWeekdaysParse[s].test(e))return s;if(t&&"dd"===a&&this._minWeekdaysParse[s].test(e))return s;if(!t&&this._weekdaysParse[s].test(e))return s}},mt.weekdaysRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Ke),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},mt.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=$e),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},mt.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ze),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},mt.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},mt.meridiem=function(e,a,t){return 11<e?t?"pm":"PM":t?"am":"AM"},_a("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1===g(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}}),l.lang=t("moment.lang is deprecated. Use moment.locale instead.",_a),l.langData=t("moment.langData is deprecated. Use moment.localeData instead.",oa);var ht=Math.abs;function Lt(e,a,t,s){var n=Ca(a,t);return e._milliseconds+=s*n._milliseconds,e._days+=s*n._days,e._months+=s*n._months,e._bubble()}function ct(e){return e<0?Math.floor(e):Math.ceil(e)}function Yt(e){return 4800*e/146097}function yt(e){return 146097*e/4800}function ft(e){return function(){return this.as(e)}}var kt=ft("ms"),pt=ft("s"),Dt=ft("m"),Tt=ft("h"),gt=ft("d"),wt=ft("w"),vt=ft("M"),Ht=ft("y");function St(e){return function(){return this.isValid()?this._data[e]:NaN}}var bt=St("milliseconds"),jt=St("seconds"),xt=St("minutes"),Pt=St("hours"),Ot=St("days"),Wt=St("months"),Et=St("years");var At=Math.round,Ft={ss:44,s:45,m:45,h:22,d:26,M:11};var zt=Math.abs;function Jt(e){return(0<e)-(e<0)||+e}function Nt(){if(!this.isValid())return this.localeData().invalidDate();var e,a,t=zt(this._milliseconds)/1e3,s=zt(this._days),n=zt(this._months);a=T((e=T(t/60))/60),t%=60,e%=60;var d=T(n/12),r=n%=12,_=s,i=a,o=e,m=t?t.toFixed(3).replace(/\.?0+$/,""):"",u=this.asSeconds();if(!u)return"P0D";var l=u<0?"-":"",M=Jt(this._months)!==Jt(u)?"-":"",h=Jt(this._days)!==Jt(u)?"-":"",L=Jt(this._milliseconds)!==Jt(u)?"-":"";return l+"P"+(d?M+d+"Y":"")+(r?M+r+"M":"")+(_?h+_+"D":"")+(i||o||m?"T":"")+(i?L+i+"H":"")+(o?L+o+"M":"")+(m?L+m+"S":"")}var Rt=Pa.prototype;Rt.isValid=function(){return this._isValid},Rt.abs=function(){var e=this._data;return this._milliseconds=ht(this._milliseconds),this._days=ht(this._days),this._months=ht(this._months),e.milliseconds=ht(e.milliseconds),e.seconds=ht(e.seconds),e.minutes=ht(e.minutes),e.hours=ht(e.hours),e.months=ht(e.months),e.years=ht(e.years),this},Rt.add=function(e,a){return Lt(this,e,a,1)},Rt.subtract=function(e,a){return Lt(this,e,a,-1)},Rt.as=function(e){if(!this.isValid())return NaN;var a,t,s=this._milliseconds;if("month"===(e=O(e))||"year"===e)return a=this._days+s/864e5,t=this._months+Yt(a),"month"===e?t:t/12;switch(a=this._days+Math.round(yt(this._months)),e){case"week":return a/7+s/6048e5;case"day":return a+s/864e5;case"hour":return 24*a+s/36e5;case"minute":return 1440*a+s/6e4;case"second":return 86400*a+s/1e3;case"millisecond":return Math.floor(864e5*a)+s;default:throw new Error("Unknown unit "+e)}},Rt.asMilliseconds=kt,Rt.asSeconds=pt,Rt.asMinutes=Dt,Rt.asHours=Tt,Rt.asDays=gt,Rt.asWeeks=wt,Rt.asMonths=vt,Rt.asYears=Ht,Rt.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12):NaN},Rt._bubble=function(){var e,a,t,s,n,d=this._milliseconds,r=this._days,_=this._months,i=this._data;return 0<=d&&0<=r&&0<=_||d<=0&&r<=0&&_<=0||(d+=864e5*ct(yt(_)+r),_=r=0),i.milliseconds=d%1e3,e=T(d/1e3),i.seconds=e%60,a=T(e/60),i.minutes=a%60,t=T(a/60),i.hours=t%24,_+=n=T(Yt(r+=T(t/24))),r-=ct(yt(n)),s=T(_/12),_%=12,i.days=r,i.months=_,i.years=s,this},Rt.clone=function(){return Ca(this)},Rt.get=function(e){return e=O(e),this.isValid()?this[e+"s"]():NaN},Rt.milliseconds=bt,Rt.seconds=jt,Rt.minutes=xt,Rt.hours=Pt,Rt.days=Ot,Rt.weeks=function(){return T(this.days()/7)},Rt.months=Wt,Rt.years=Et,Rt.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var a,t,s,n,d,r,_,i,o,m,u,l=this.localeData(),M=(t=!e,s=l,n=Ca(a=this).abs(),d=At(n.as("s")),r=At(n.as("m")),_=At(n.as("h")),i=At(n.as("d")),o=At(n.as("M")),m=At(n.as("y")),(u=d<=Ft.ss&&["s",d]||d<Ft.s&&["ss",d]||r<=1&&["m"]||r<Ft.m&&["mm",r]||_<=1&&["h"]||_<Ft.h&&["hh",_]||i<=1&&["d"]||i<Ft.d&&["dd",i]||o<=1&&["M"]||o<Ft.M&&["MM",o]||m<=1&&["y"]||["yy",m])[2]=t,u[3]=0<+a,u[4]=s,function(e,a,t,s,n){return n.relativeTime(a||1,!!t,e,s)}.apply(null,u));return e&&(M=l.pastFuture(+this,M)),l.postformat(M)},Rt.toISOString=Nt,Rt.toString=Nt,Rt.toJSON=Nt,Rt.locale=qa,Rt.localeData=Xa,Rt.toIsoString=t("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Nt),Rt.lang=Qa,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ie("x",se),ie("X",/[+-]?\d+(\.\d{1,3})?/),le("X",function(e,a,t){t._d=new Date(1e3*parseFloat(e,10))}),le("x",function(e,a,t){t._d=new Date(g(e))}),l.version="2.23.0",e=Ha,l.fn=it,l.min=function(){return ja("isBefore",[].slice.call(arguments,0))},l.max=function(){return ja("isAfter",[].slice.call(arguments,0))},l.now=function(){return Date.now?Date.now():+new Date},l.utc=c,l.unix=function(e){return Ha(1e3*e)},l.months=function(e,a){return lt(e,a,"months")},l.isDate=u,l.locale=_a,l.invalid=f,l.duration=Ca,l.isMoment=D,l.weekdays=function(e,a,t){return Mt(e,a,t,"weekdays")},l.parseZone=function(){return Ha.apply(null,arguments).parseZone()},l.localeData=oa,l.isDuration=Oa,l.monthsShort=function(e,a){return lt(e,a,"monthsShort")},l.weekdaysMin=function(e,a,t){return Mt(e,a,t,"weekdaysMin")},l.defineLocale=ia,l.updateLocale=function(e,a){if(null!=a){var t,s,n=ta;null!=(s=ra(e))&&(n=s._config),(t=new j(a=b(n,a))).parentLocale=sa[e],sa[e]=t,_a(e)}else null!=sa[e]&&(null!=sa[e].parentLocale?sa[e]=sa[e].parentLocale:null!=sa[e]&&delete sa[e]);return sa[e]},l.locales=function(){return s(sa)},l.weekdaysShort=function(e,a,t){return Mt(e,a,t,"weekdaysShort")},l.normalizeUnits=O,l.relativeTimeRounding=function(e){return void 0===e?At:"function"==typeof e&&(At=e,!0)},l.relativeTimeThreshold=function(e,a){return void 0!==Ft[e]&&(void 0===a?Ft[e]:(Ft[e]=a,"s"===e&&(Ft.ss=a-1),!0))},l.calendarFormat=function(e,a){var t=e.diff(a,"days",!0);return t<-6?"sameElse":t<-1?"lastWeek":t<0?"lastDay":t<1?"sameDay":t<2?"nextDay":t<7?"nextWeek":"sameElse"},l.prototype=it,l.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},l.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),l.defineLocale("ar-dz",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u0623\u062d_\u0625\u062b_\u062b\u0644\u0627_\u0623\u0631_\u062e\u0645_\u062c\u0645_\u0633\u0628".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:4}}),l.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}});var It={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},Ct=function(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5},Gt={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},Ut=function(r){return function(e,a,t,s){var n=Ct(e),d=Gt[r][Ct(e)];return 2===n&&(d=d[a?0:1]),d.replace(/%d/i,e)}},Vt=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];l.defineLocale("ar-ly",{months:Vt,monthsShort:Vt,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:Ut("s"),ss:Ut("s"),m:Ut("m"),mm:Ut("m"),h:Ut("h"),hh:Ut("h"),d:Ut("d"),dd:Ut("d"),M:Ut("M"),MM:Ut("M"),y:Ut("y"),yy:Ut("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return It[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),l.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}});var Kt={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},$t={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};l.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return $t[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Kt[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),l.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}});var Zt={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},Bt={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},qt=function(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5},Qt={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},Xt=function(r){return function(e,a,t,s){var n=qt(e),d=Qt[r][qt(e)];return 2===n&&(d=d[a?0:1]),d.replace(/%d/i,e)}},es=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];l.defineLocale("ar",{months:es,monthsShort:es,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:Xt("s"),ss:Xt("s"),m:Xt("m"),mm:Xt("m"),h:Xt("h"),hh:Xt("h"),d:Xt("d"),dd:Xt("d"),M:Xt("M"),MM:Xt("M"),y:Xt("y"),yy:Xt("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Bt[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Zt[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var as={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};function ts(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===t?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}l.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"birne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,t){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){if(0===e)return e+"-\u0131nc\u0131";var a=e%10;return e+(as[a]||as[e%100-a]||as[100<=e?100:null])},week:{dow:1,doy:7}}),l.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:ts,mm:ts,h:ts,hh:ts,d:"\u0434\u0437\u0435\u043d\u044c",dd:ts,M:"\u043c\u0435\u0441\u044f\u0446",MM:ts,y:"\u0433\u043e\u0434",yy:ts},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),l.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0===t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1===a?e+"-\u0432\u0438":2===a?e+"-\u0440\u0438":7===a||8===a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),l.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var ss={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},ns={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};l.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09c0_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2_\u0986\u0997_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ss[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}});var ds={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},rs={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function _s(e,a,t){var s,n,d;return e+" "+(s={mm:"munutenn",MM:"miz",dd:"devezh"}[t],2!==e?s:void 0!==(d={m:"v",b:"v",d:"z"})[(n=s).charAt(0)]?d[n.charAt(0)]+n.substring(1):n)}function is(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}l.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return rs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ds[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}}),l.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:_s,h:"un eur",hh:"%d eur",d:"un devezh",dd:_s,M:"ur miz",MM:_s,y:"ur bloaz",yy:function(e){switch(function e(a){return 9<a?e(a%10):a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(e){return e+(1===e?"a\xf1":"vet")},week:{dow:1,doy:4}}),l.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:is,m:is,mm:is,h:is,hh:is,d:"dan",dd:is,M:"mjesec",MM:is,y:"godinu",yy:is},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}});var os="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),ms="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_");function us(e){return 1<e&&e<5&&1!=~~(e/10)}function ls(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return a||s?n+(us(e)?"sekundy":"sekund"):n+"sekundami";break;case"m":return a?"minuta":s?"minutu":"minutou";case"mm":return a||s?n+(us(e)?"minuty":"minut"):n+"minutami";break;case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(us(e)?"hodiny":"hodin"):n+"hodinami";break;case"d":return a||s?"den":"dnem";case"dd":return a||s?n+(us(e)?"dny":"dn\xed"):n+"dny";break;case"M":return a||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||s?n+(us(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):n+"m\u011bs\xedci";break;case"y":return a||s?"rok":"rokem";case"yy":return a||s?n+(us(e)?"roky":"let"):n+"lety";break}}function Ms(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function hs(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function Ls(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}l.defineLocale("cs",{months:os,monthsShort:ms,monthsParse:function(e,a){var t,s=[];for(t=0;t<12;t++)s[t]=new RegExp("^"+e[t]+"$|^"+a[t]+"$","i");return s}(os,ms),shortMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(ms),longMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(os),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:ls,ss:ls,m:ls,mm:ls,h:ls,hh:ls,d:ls,dd:ls,M:ls,MM:ls,y:ls,yy:ls},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){return e+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}}),l.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a="";return 20<e?a=40===e||50===e||60===e||80===e||100===e?"fed":"ain":0<e&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+a},week:{dow:1,doy:4}}),l.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ms,mm:"%d Minuten",h:Ms,hh:"%d Stunden",d:Ms,dd:Ms,M:Ms,MM:Ms,y:Ms,yy:Ms},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:hs,mm:"%d Minuten",h:hs,hh:"%d Stunden",d:hs,dd:hs,M:hs,MM:hs,y:hs,yy:hs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ls,mm:"%d Minuten",h:Ls,hh:"%d Stunden",d:Ls,dd:Ls,M:Ls,MM:Ls,y:Ls,yy:Ls},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var cs=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],Ys=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];l.defineLocale("dv",{months:cs,monthsShort:cs,weekdays:Ys,weekdaysShort:Ys,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,a,t){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}}),l.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,a,t){return 11<e?t?"\u03bc\u03bc":"\u039c\u039c":t?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(e){return"\u03bc"===(e+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var t=this._calendarEl[e],s=a&&a.hours();return S(t)&&(t=t.apply(a)),t.replace("{}",s%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}}),l.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}}),l.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}}),l.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"p.t.m.":"P.T.M.":t?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});var ys="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),fs="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),ks=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],ps=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;l.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?fs[e.month()]:ys[e.month()]:ys},monthsRegex:ps,monthsShortRegex:ps,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:ks,longMonthsParse:ks,shortMonthsParse:ks,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var Ds="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Ts="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");l.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Ts[e.month()]:Ds[e.month()]:Ds},monthsParseExact:!0,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"MMMM [de] D [de] YYYY",LLL:"MMMM [de] D [de] YYYY h:mm A",LLLL:"dddd, MMMM [de] D [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}});var gs="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),ws="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),vs=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],Hs=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;function Ss(e,a,t,s){var n={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[e+" minuti",e+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[e+" tunni",e+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[e+" kuu",e+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[e+" aasta",e+" aastat"]};return a?n[t][2]?n[t][2]:n[t][1]:s?n[t][0]:n[t][1]}l.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?ws[e.month()]:gs[e.month()]:gs},monthsRegex:Hs,monthsShortRegex:Hs,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:vs,longMonthsParse:vs,shortMonthsParse:vs,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:Ss,ss:Ss,m:Ss,mm:Ss,h:Ss,hh:Ss,d:Ss,dd:"%d p\xe4eva",M:Ss,MM:Ss,y:Ss,yy:Ss},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var bs={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},js={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};l.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,a,t){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"\u062b\u0627\u0646\u06cc\u0647 d%",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return js[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return bs[e]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}});var xs="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),Ps=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",xs[7],xs[8],xs[9]];function Os(e,a,t,s){var n,d,r="";switch(t){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":return s?"sekunnin":"sekuntia";case"m":return s?"minuutin":"minuutti";case"mm":r=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":r=s?"tunnin":"tuntia";break;case"d":return s?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":r=s?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return s?"kuukauden":"kuukausi";case"MM":r=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":r=s?"vuoden":"vuotta";break}return d=s,r=((n=e)<10?d?Ps[n]:xs[n]:n)+" "+r}l.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:Os,ss:Os,m:Os,mm:Os,h:Os,hh:Os,d:Os,dd:Os,M:Os,MM:Os,y:Os,yy:Os},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minutt",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0i",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}}),l.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}}),l.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var Ws="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),Es="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");l.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Es[e.month()]:Ws[e.month()]:Ws},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});function As(e,a,t,s){var n={s:["thodde secondanim","thodde second"],ss:[e+" secondanim",e+" second"],m:["eka mintan","ek minute"],mm:[e+" mintanim",e+" mintam"],h:["eka horan","ek hor"],hh:[e+" horanim",e+" horam"],d:["eka disan","ek dis"],dd:[e+" disanim",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineanim",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsanim",e+" vorsam"]};return a?n[t][0]:n[t][1]}l.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}}),l.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:As,ss:As,m:As,mm:As,h:As,hh:As,d:As,dd:As,M:As,MM:As,y:As,yy:As},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokalli"===a?e:"donparam"===a?12<e?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}});var Fs={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},zs={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};l.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ac7\u0ab9\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(e){return zs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Fs[e]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===a?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===a?e:"\u0aac\u0aaa\u0acb\u0ab0"===a?10<=e?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}}),l.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(e){return 2===e?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":e+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(e){return 2===e?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":e+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(e){return 2===e?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":e+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(e){return 2===e?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":e%10==0&&10!==e?e+" \u05e9\u05e0\u05d4":e+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(e){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(e)},meridiem:function(e,a,t){return e<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":e<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":e<12?t?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":e<18?t?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}});var Js={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Ns={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function Rs(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}l.defineLocale("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Js[e]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924"===a?e<4?e:e+12:"\u0938\u0941\u092c\u0939"===a?e:"\u0926\u094b\u092a\u0939\u0930"===a?10<=e?e:e+12:"\u0936\u093e\u092e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924":e<10?"\u0938\u0941\u092c\u0939":e<17?"\u0926\u094b\u092a\u0939\u0930":e<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}}),l.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:Rs,m:Rs,mm:Rs,h:Rs,hh:Rs,d:"dan",dd:Rs,M:"mjesec",MM:Rs,y:"godinu",yy:Rs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Is="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function Cs(e,a,t,s){var n=e;switch(t){case"s":return s||a?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return n+(s||a)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(s||a?" perc":" perce");case"mm":return n+(s||a?" perc":" perce");case"h":return"egy"+(s||a?" \xf3ra":" \xf3r\xe1ja");case"hh":return n+(s||a?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(s||a?" nap":" napja");case"dd":return n+(s||a?" nap":" napja");case"M":return"egy"+(s||a?" h\xf3nap":" h\xf3napja");case"MM":return n+(s||a?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(s||a?" \xe9v":" \xe9ve");case"yy":return n+(s||a?" \xe9v":" \xe9ve")}return""}function Gs(e){return(e?"":"[m\xfalt] ")+"["+Is[this.day()]+"] LT[-kor]"}function Us(e){return e%100==11||e%10!=1}function Vs(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return Us(e)?n+(a||s?"sek\xfandur":"sek\xfandum"):n+"sek\xfanda";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return Us(e)?n+(a||s?"m\xedn\xfatur":"m\xedn\xfatum"):a?n+"m\xedn\xfata":n+"m\xedn\xfatu";case"hh":return Us(e)?n+(a||s?"klukkustundir":"klukkustundum"):n+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return Us(e)?a?n+"dagar":n+(s?"daga":"d\xf6gum"):a?n+"dagur":n+(s?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":s?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return Us(e)?a?n+"m\xe1nu\xf0ir":n+(s?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?n+"m\xe1nu\xf0ur":n+(s?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||s?"\xe1r":"\xe1ri";case"yy":return Us(e)?n+(a||s?"\xe1r":"\xe1rum"):n+(a||s?"\xe1r":"\xe1ri")}}l.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return Gs.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return Gs.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:Cs,ss:Cs,m:Cs,mm:Cs,h:Cs,hh:Cs,d:Cs,dd:Cs,M:Cs,MM:Cs,y:Cs,yy:Cs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(e){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(e)},meridiem:function(e){return e<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":e<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":e<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-\u056b\u0576":e+"-\u0580\u0564";default:return e}},week:{dow:1,doy:7}}),l.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?11<=e?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),l.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:Vs,ss:Vs,m:Vs,mm:Vs,h:"klukkustund",hh:Vs,d:Vs,dd:Vs,M:Vs,MM:Vs,y:Vs,yy:Vs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("ja",{months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(e){return"\u5348\u5f8c"===e},meridiem:function(e,a,t){return e<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(e){return e.week()<this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(e){return this.week()<e.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}}),l.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?11<=e?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),l.defineLocale("ka",{months:{standalone:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),format:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(e)?e.replace(/\u10d8$/,"\u10e8\u10d8"):e+"\u10e8\u10d8"},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":e<20||e<=100&&e%20==0||e%100==0?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}});var Ks={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};l.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(e){return e+(Ks[e]||Ks[e%10]||Ks[100<=e?100:null])},week:{dow:1,doy:7}});var $s={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},Zs={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};l.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,a,t){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(e){return Zs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return $s[e]})},week:{dow:1,doy:4}});var Bs={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},qs={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};l.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(e){return qs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Bs[e]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===a?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===a?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===a?10<=e?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}}),l.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\uc77c";case"M":return e+"\uc6d4";case"w":case"W":return e+"\uc8fc";default:return e}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(e){return"\uc624\ud6c4"===e},meridiem:function(e,a,t){return e<12?"\uc624\uc804":"\uc624\ud6c4"}});var Qs={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},Xs={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},en=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];l.defineLocale("ku",{months:en,monthsShort:en,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(e){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(e)},meridiem:function(e,a,t){return e<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Xs[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Qs[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var an={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};function tn(e,a,t,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?n[t][0]:n[t][1]}function sn(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10;return sn(0===a?e/10:a)}if(e<1e4){for(;10<=e;)e/=10;return sn(e)}return sn(e/=1e3)}l.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(e){return e+(an[e]||an[e%10]||an[100<=e?100:null])},week:{dow:1,doy:7}}),l.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return sn(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return sn(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:tn,mm:"%d Minutten",h:tn,hh:"%d Stonnen",d:tn,dd:"%d Deeg",M:tn,MM:"%d M\xe9int",y:tn,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(e){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===e},meridiem:function(e,a,t){return e<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(e){return"\u0e97\u0eb5\u0ec8"+e}});var nn={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function dn(e,a,t,s){return a?_n(t)[0]:s?_n(t)[1]:_n(t)[2]}function rn(e){return e%10==0||10<e&&e<20}function _n(e){return nn[e].split("_")}function on(e,a,t,s){var n=e+" ";return 1===e?n+dn(0,a,t[0],s):a?n+(rn(e)?_n(t)[1]:_n(t)[0]):s?n+_n(t)[1]:n+(rn(e)?_n(t)[1]:_n(t)[2])}l.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(e,a,t,s){return a?"kelios sekund\u0117s":s?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:on,m:dn,mm:on,h:dn,hh:on,d:dn,dd:on,M:dn,MM:on,y:dn,yy:on},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});var mn={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function un(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function ln(e,a,t){return e+" "+un(mn[t],e,a)}function Mn(e,a,t){return un(mn[t],e,a)}l.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(e,a){return a?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:ln,m:Mn,mm:ln,h:Mn,hh:ln,d:Mn,dd:ln,M:Mn,MM:ln,y:Mn,yy:ln},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var hn={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=hn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+hn.correctGrammaticalCase(e,s)}};function Ln(e,a,t,s){switch(t){case"s":return a?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return e+(a?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return e+(a?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return e+(a?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return e+(a?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return e+(a?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return e+(a?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return e}}l.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:hn.translate,m:hn.translate,mm:hn.translate,h:hn.translate,hh:hn.translate,d:"dan",dd:hn.translate,M:"mjesec",MM:hn.translate,y:"godinu",yy:hn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u043e\u0441\u043b\u0435 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0===t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1===a?e+"-\u0432\u0438":2===a?e+"-\u0440\u0438":7===a||8===a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),l.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&4<=e||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":e<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":e<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":e<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}}),l.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(e){return"\u04ae\u0425"===e},meridiem:function(e,a,t){return e<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:Ln,ss:Ln,m:Ln,mm:Ln,h:Ln,hh:Ln,d:Ln,dd:Ln,M:Ln,MM:Ln,y:Ln,yy:Ln},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" \u04e9\u0434\u04e9\u0440";default:return e}}});var cn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Yn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function yn(e,a,t,s){var n="";if(a)switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":n="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":n="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":n="%d \u0924\u093e\u0938";break;case"d":n="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":n="%d \u0926\u093f\u0935\u0938";break;case"M":n="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":n="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u0947";break}else switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":n="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":n="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":n="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":n="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":n="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":n="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":n="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u093e\u0902";break}return n.replace(/%d/i,e)}l.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:yn,ss:yn,m:yn,mm:yn,h:yn,hh:yn,d:yn,dd:yn,M:yn,MM:yn,y:yn,yy:yn},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Yn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return cn[e]})},meridiemParse:/\u0930\u093e\u0924\u094d\u0930\u0940|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u094d\u0930\u0940"===a?e<4?e:e+12:"\u0938\u0915\u093e\u0933\u0940"===a?e:"\u0926\u0941\u092a\u093e\u0930\u0940"===a?10<=e?e:e+12:"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924\u094d\u0930\u0940":e<10?"\u0938\u0915\u093e\u0933\u0940":e<17?"\u0926\u0941\u092a\u093e\u0930\u0940":e<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}}),l.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),l.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),l.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[G\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var fn={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},kn={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};l.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(e){return kn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return fn[e]})},week:{dow:1,doy:4}}),l.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var pn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Dn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};l.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Dn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return pn[e]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===a?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===a?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===a?10<=e?e:e+12:"\u0938\u093e\u0901\u091d"===a?e+12:void 0},meridiem:function(e,a,t){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}});var Tn="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),gn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),wn=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],vn=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;l.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?gn[e.month()]:Tn[e.month()]:Tn},monthsRegex:vn,monthsShortRegex:vn,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:wn,longMonthsParse:wn,shortMonthsParse:wn,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});var Hn="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),Sn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),bn=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],jn=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;l.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Sn[e.month()]:Hn[e.month()]:Hn},monthsRegex:jn,monthsShortRegex:jn,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:bn,longMonthsParse:bn,shortMonthsParse:bn,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),l.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var xn={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},Pn={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};l.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(e){return Pn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return xn[e]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===a?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===a?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===a?10<=e?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}});var On="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),Wn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");function En(e){return e%10<5&&1<e%10&&~~(e/10)%10!=1}function An(e,a,t){var s=e+" ";switch(t){case"ss":return s+(En(e)?"sekundy":"sekund");case"m":return a?"minuta":"minut\u0119";case"mm":return s+(En(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return s+(En(e)?"godziny":"godzin");case"MM":return s+(En(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return s+(En(e)?"lata":"lat")}}function Fn(e,a,t){var s=" ";return(20<=e%100||100<=e&&e%100==0)&&(s=" de "),e+s+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[t]}function zn(e,a,t){var s,n;return"m"===t?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}l.defineLocale("pl",{months:function(e,a){return e?""===a?"("+Wn[e.month()]+"|"+On[e.month()]+")":/D MMMM/.test(a)?Wn[e.month()]:On[e.month()]:On},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:An,m:An,mm:An,h:An,hh:An,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:An,y:"rok",yy:An},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"}),l.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:Fn,m:"un minut",mm:Fn,h:"o or\u0103",hh:Fn,d:"o zi",dd:Fn,M:"o lun\u0103",MM:Fn,y:"un an",yy:Fn},week:{dow:1,doy:7}});var Jn=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];l.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?\] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:Jn,longMonthsParse:Jn,shortMonthsParse:Jn,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:zn,m:zn,mm:zn,h:"\u0447\u0430\u0441",hh:zn,d:"\u0434\u0435\u043d\u044c",dd:zn,M:"\u043c\u0435\u0441\u044f\u0446",MM:zn,y:"\u0433\u043e\u0434",yy:zn},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:4}});var Nn=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],Rn=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];l.defineLocale("sd",{months:Nn,monthsShort:Nn,weekdays:Rn,weekdaysShort:Rn,weekdaysMin:Rn,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),l.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(e){return e+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(e){return"\u0db4.\u0dc0."===e||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===e},meridiem:function(e,a,t){return 11<e?t?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":t?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}});var In="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),Cn="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function Gn(e){return 1<e&&e<5}function Un(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return a||s?n+(Gn(e)?"sekundy":"sek\xfand"):n+"sekundami";break;case"m":return a?"min\xfata":s?"min\xfatu":"min\xfatou";case"mm":return a||s?n+(Gn(e)?"min\xfaty":"min\xfat"):n+"min\xfatami";break;case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(Gn(e)?"hodiny":"hod\xedn"):n+"hodinami";break;case"d":return a||s?"de\u0148":"d\u0148om";case"dd":return a||s?n+(Gn(e)?"dni":"dn\xed"):n+"d\u0148ami";break;case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?n+(Gn(e)?"mesiace":"mesiacov"):n+"mesiacmi";break;case"y":return a||s?"rok":"rokom";case"yy":return a||s?n+(Gn(e)?"roky":"rokov"):n+"rokmi";break}}function Vn(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?a?"sekundo":"sekundi":2===e?a||s?"sekundi":"sekundah":e<5?a||s?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return n+=1===e?a?"minuta":"minuto":2===e?a||s?"minuti":"minutama":e<5?a||s?"minute":"minutami":a||s?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return n+=1===e?a?"ura":"uro":2===e?a||s?"uri":"urama":e<5?a||s?"ure":"urami":a||s?"ur":"urami";case"d":return a||s?"en dan":"enim dnem";case"dd":return n+=1===e?a||s?"dan":"dnem":2===e?a||s?"dni":"dnevoma":a||s?"dni":"dnevi";case"M":return a||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?a||s?"mesec":"mesecem":2===e?a||s?"meseca":"mesecema":e<5?a||s?"mesece":"meseci":a||s?"mesecev":"meseci";case"y":return a||s?"eno leto":"enim letom";case"yy":return n+=1===e?a||s?"leto":"letom":2===e?a||s?"leti":"letoma":e<5?a||s?"leta":"leti":a||s?"let":"leti"}}l.defineLocale("sk",{months:In,monthsShort:Cn,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:Un,ss:Un,m:Un,mm:Un,h:Un,hh:Un,d:Un,dd:Un,M:Un,MM:Un,y:Un,yy:Un},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:Vn,ss:Vn,m:Vn,mm:Vn,h:Vn,hh:Vn,d:Vn,dd:Vn,M:Vn,MM:Vn,y:Vn,yy:Vn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Kn={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=Kn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+Kn.correctGrammaticalCase(e,s)}};l.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:Kn.translate,m:Kn.translate,mm:Kn.translate,h:Kn.translate,hh:Kn.translate,d:"\u0434\u0430\u043d",dd:Kn.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:Kn.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",yy:Kn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var $n={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=$n.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+$n.correctGrammaticalCase(e,s)}};l.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:$n.translate,m:$n.translate,mm:$n.translate,h:$n.translate,hh:$n.translate,d:"dan",dd:$n.translate,M:"mesec",MM:$n.translate,y:"godinu",yy:$n.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,t){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?11<=e?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),l.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"e":1===a?"a":2===a?"a":"e")},week:{dow:1,doy:4}}),l.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});var Zn={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},Bn={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};l.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(e){return Bn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Zn[e]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,a,t){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,a){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===a?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===a||"\u0b95\u0bbe\u0bb2\u0bc8"===a?e:"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===a&&10<=e?e:e+12},week:{dow:0,doy:6}}),l.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c42\u0c32\u0c46\u0c56_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c42\u0c32\u0c46\u0c56_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?e<4?e:e+12:"\u0c09\u0c26\u0c2f\u0c02"===a?e:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?10<=e?e:e+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":e<10?"\u0c09\u0c26\u0c2f\u0c02":e<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":e<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}}),l.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}});var qn={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};l.defineLocale("tg",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u041f\u0430\u0433\u043e\u04b3 \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0448\u0430\u0431"===a?e<4?e:e+12:"\u0441\u0443\u0431\u04b3"===a?e:"\u0440\u04ef\u0437"===a?11<=e?e:e+12:"\u0431\u0435\u0433\u043e\u04b3"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0448\u0430\u0431":e<11?"\u0441\u0443\u0431\u04b3":e<16?"\u0440\u04ef\u0437":e<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(e){return e+(qn[e]||qn[e%10]||qn[100<=e?100:null])},week:{dow:1,doy:7}}),l.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(e){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===e},meridiem:function(e,a,t){return e<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}}),l.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});var Qn="pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function Xn(e,a,t,s){var n=function(e){var a=Math.floor(e%1e3/100),t=Math.floor(e%100/10),s=e%10,n="";0<a&&(n+=Qn[a]+"vatlh");0<t&&(n+=(""!==n?" ":"")+Qn[t]+"maH");0<s&&(n+=(""!==n?" ":"")+Qn[s]);return""===n?"pagh":n}(e);switch(t){case"ss":return n+" lup";case"mm":return n+" tup";case"hh":return n+" rep";case"dd":return n+" jaj";case"MM":return n+" jar";case"yy":return n+" DIS"}}l.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu\u2019":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:Xn,m:"wa\u2019 tup",mm:Xn,h:"wa\u2019 rep",hh:Xn,d:"wa\u2019 jaj",dd:Xn,M:"wa\u2019 jar",MM:Xn,y:"wa\u2019 DIS",yy:Xn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var ed={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};function ad(e,a,t,s){var n={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[e+" m\xeduts",e+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[e+" \xfeoras",e+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s?n[t][0]:a?n[t][0]:n[t][1]}function td(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===t?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:a?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}function sd(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}l.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'\u0131nc\u0131";var t=e%10;return e+(ed[t]||ed[e%100-t]||ed[100<=e?100:null])}},week:{dow:1,doy:7}}),l.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"d'o":"D'O":t?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:ad,ss:ad,m:ad,mm:ad,h:ad,hh:ad,d:ad,dd:ad,M:ad,MM:ad,y:ad,yy:ad},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),l.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}}),l.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a?e:"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"===a||"\u0643\u06d5\u0686"===a?e+12:11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":s<900?"\u0633\u06d5\u06be\u06d5\u0631":s<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":s<1230?"\u0686\u06c8\u0634":s<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return e+"-\u06be\u06d5\u067e\u062a\u06d5";default:return e}},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:7}}),l.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(e,a){var t={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return e?t[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(a)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:t.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:sd("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:sd("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:sd("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:sd("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return sd("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return sd("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:td,m:td,mm:td,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:td,d:"\u0434\u0435\u043d\u044c",dd:td,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:td,y:"\u0440\u0456\u043a",yy:td},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0456":e<12?"\u0440\u0430\u043d\u043a\u0443":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}});var nd=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],dd=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];return l.defineLocale("ur",{months:nd,monthsShort:nd,weekdays:dd,weekdaysShort:dd,weekdaysMin:dd,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),l.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),l.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}}),l.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[H\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n r\u1ed3i l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),l.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}}),l.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}),l.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),l.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),l.locale("en"),l});
\ No newline at end of file
diff --git a/website/js/vendor/moment/moment.min.js b/website/js/vendor/moment/moment.min.js
deleted file mode 100644 (file)
index 2a3358f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function d(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function h(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Ot(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function v(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function S(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function D(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function k(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=D(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&k(e[s])!==k(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e="","object"==typeof arguments[n]){for(var s in e+="\n["+n+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function x(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function H(e,t){var n=e.toLowerCase();W[n]=W[n+"s"]=W[t]=e}function R(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function C(e){var t,n,s={};for(n in e)m(e,n)&&(t=R(n))&&(s[t]=e[n]);return s}var F={};function L(e,t){F[e]=t}function U(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return U(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(e){var t,n="";for(t=0;t<i;t++)n+=x(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,J=/[+-]?\d{6}/,B=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,te=/[+-]?\d{1,6}/,ne=/\d+/,se=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,re=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=x(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(de(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function de(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var he={};function ce(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),d(n)&&(s=function(e,t){t[n]=k(e)}),t=0;t<e.length;t++)he[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,pe=4,ve=5,we=6,Me=7,Se=8;function De(e){return ke(e)?366:365}function ke(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),H("year","y"),L("year",1),ue("Y",se),ue("YY",B,z),ue("YYYY",ee,q),ue("YYYYY",te,J),ue("YYYYYY",te,J),ce(["YYYYY","YYYYYY"],me),ce("YYYY",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):k(e)}),ce("YY",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce("Y",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return k(e)+(68<k(e)?1900:2e3)};var Ye,Oe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(be(this,t,e),c.updateOffset(this,n),this):xe(this,t)}}function xe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function be(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ke(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?ke(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),H("month","M"),L("month",8),ue("M",B),ue("MM",B,z),ue("MMM",function(e,t){return t.monthsShortRegex(e)}),ue("MMMM",function(e,t){return t.monthsRegex(e)}),ce(["M","MM"],function(e,t){t[_e]=k(e)-1}),ce(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,He="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Re="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=k(t);else if(!d(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Fe(e){return null!=e?(Ce(this,e),c.updateOffset(this,!0),this):xe(this,"Month")}var Le=ae;var Ue=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=de(s[t]),i[t]=de(i[t]);for(t=0;t<24;t++)r[t]=de(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ge(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return a=o<=0?De(r=e-1)+o:o>De(e)?(r=e+1,o-De(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(De(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),H("week","w"),H("isoWeek","W"),L("week",5),L("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=k(e)});I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),H("day","d"),H("weekday","e"),H("isoWeekday","E"),L("day",11),L("weekday",11),L("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=k(e)});var je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var $e=ae;var qe=ae;var Je=ae;function Be(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=de(o[t]),u[t]=de(u[t]),l[t]=de(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ke(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),H("hour","h"),L("hour",13),ue("a",Ke),ue("A",Ke),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=k(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=k(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i))});var et,tt=Te("Hours",!0),nt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:He,monthsShort:Re,week:{dow:0,doy:6},weekdays:je,weekdaysMin:ze,weekdaysShort:Ze,meridiemParse:/[ap]\.?m?\.?/i},st={},it={};function rt(e){return e?e.toLowerCase().replace("_","-"):e}function at(e){var t=null;if(!st[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=et._abbr,require("./locale/"+e),ot(t)}catch(e){}return st[e]}function ot(e,t){var n;return e&&((n=l(t)?lt(e):ut(e,t))?et=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),et._abbr}function ut(e,t){if(null===t)return delete st[e],null;var n,s=nt;if(t.abbr=e,null!=st[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=st[e]._config;else if(null!=t.parentLocale)if(null!=st[t.parentLocale])s=st[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return it[t.parentLocale]||(it[t.parentLocale]=[]),it[t.parentLocale].push({name:e,config:t}),null;s=n._config}return st[e]=new P(b(s,t)),it[e]&&it[e].forEach(function(e){ut(e.name,e.config)}),ot(e),st[e]}function lt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return et;if(!o(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=rt(e[r]).split("-")).length,n=(n=rt(e[r+1]))?n.split("-"):null;0<t;){if(s=at(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return et}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[pe]||0!==n[ve]||0!==n[we])?ge:n[pe]<0||59<n[pe]?pe:n[ve]<0||59<n[ve]?ve:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=Se),g(e).overflow=t),e}function ht(e,t,n){return null!=e?e:null!=t?t:n}function ct(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ht(t.GG,e._a[me],Ie(Tt(),1,4).year),s=ht(t.W,1),((i=ht(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(Tt(),r,a);n=ht(t.gg,e._a[me],l.year),s=ht(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ht(e._a[me],s[me]),(e._dayOfYear>De(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[pe]&&0===e._a[ve]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&0<=e&&isFinite(o.getFullYear())&&o.setFullYear(e),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var ft=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],gt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function vt(e){var t,n,s,i,r,a,o=e._i,u=ft.exec(o)||mt.exec(o);if(u){for(g(e).iso=!0,t=0,n=yt.length;t<n;t++)if(yt[t][1].exec(u[1])){i=yt[t][0],s=!1!==yt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[3])){r=(u[2]||" ")+gt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!_t.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),kt(e)}else e._isValid=!1}var wt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function Mt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),Re.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=wt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(i){var r=Mt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&Ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function kt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=""+e._i,d=l.length,h=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),h+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(he,a)&&he[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=d-h,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ct(e),dt(e)}else Dt(e);else vt(e)}function Yt(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||lt(e._l),null===r||void 0===a&&""===r?v({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),S(r)?new M(dt(r)):(h(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],kt(t),p(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?kt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):h(n)?t._d=new Date(n.valueOf()):"string"==typeof n?(s=t,null===(i=pt.exec(s._i))?(vt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ct(t)):u(n)?function(e){if(!e._d){var t=C(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ct(e)}}(t):d(n)?t._d=new Date(n):c.createFromInputFallback(t),p(e)||(e._d=null),e))}function Ot(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Yt(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Tt(e,t,n,s){return Ot(e,t,n,s,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:v()}),bt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:v()});function Pt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ht(e){var t=C(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Wt,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Wt.length;++s)if(e[Wt[s]]){if(n)return!1;parseFloat(e[Wt[s]])!==k(e[Wt[s]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=lt(),this._bubble()}function Rt(e){return e instanceof Ht}function Ct(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+U(~~(e/60),2)+n+U(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ue("Z",re),ue("ZZ",re),ce(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Ut(re,e)});var Lt=/([\+\-]|\d\d)/gi;function Ut(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(Lt)||["-",0,0],i=60*s[1]+k(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Nt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(S(e)||h(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):Tt(e).local()}function Gt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Vt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var Et=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,It=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function At(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:d(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=Et.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:k(a[ye])*n,h:k(a[ge])*n,m:k(a[pe])*n,s:k(a[ve])*n,ms:k(Ct(1e3*a[we]))*n}):(a=It.exec(e))?(n="-"===a[1]?-1:1,r={y:jt(a[2],n),M:jt(a[3],n),w:jt(a[4],n),d:jt(a[5],n),h:jt(a[6],n),m:jt(a[7],n),s:jt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Nt(t,e),e.isBefore(t)?n=Zt(e,t):((n=Zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Tt(r.from),Tt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,"_locale")&&(s._locale=e._locale),s}function jt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Zt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function zt(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),$t(this,At(e="string"==typeof e?+e:e,t),s),this}}function $t(e,t,n,s){var i=t._milliseconds,r=Ct(t._days),a=Ct(t._months);e.isValid()&&(s=null==s||s,a&&Ce(e,xe(e,"Month")+a*n),r&&be(e,"Date",xe(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}At.fn=Ht.prototype,At.invalid=function(){return At(NaN)};var qt=zt(1,"add"),Jt=zt(-1,"subtract");function Bt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function Qt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=lt(e))&&(this._locale=t),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xt=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}function en(e,t){I(0,[e,e.length],0,t)}function tn(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),en("gggg","weekYear"),en("ggggg","weekYear"),en("GGGG","isoWeekYear"),en("GGGGG","isoWeekYear"),H("weekYear","gg"),H("isoWeekYear","GG"),L("weekYear",1),L("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=k(e)}),fe(["gg","GG"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),H("quarter","Q"),L("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(k(e)-1)}),I("D",["DD",2],"Do","date"),H("date","D"),L("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=k(e.match(B)[0])});var nn=Te("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),H("dayOfYear","DDD"),L("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=k(e)}),I("m",["mm",2],0,"minute"),H("minute","m"),L("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],pe);var sn=Te("Minutes",!1);I("s",["ss",2],0,"second"),H("second","s"),L("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],ve);var rn,an=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),H("millisecond","ms"),L("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),rn="SSSS";rn.length<=9;rn+="S")ue(rn,ne);function on(e,t){t[we]=k(1e3*("0."+e))}for(rn="S";rn.length<=9;rn+="S")ce(rn,on);var un=Te("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var ln=M.prototype;function dn(e){return e}ln.add=qt,ln.calendar=function(e,t){var n=e||Tt(),s=Nt(n,this).startOf("day"),i=c.calendarFormat(this,s)||"sameElse",r=t&&(x(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,Tt(n)))},ln.clone=function(){return new M(this)},ln.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Nt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=R(t)){case"year":r=Bt(this,s)/12;break;case"month":r=Bt(this,s);break;case"quarter":r=Bt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:D(r)},ln.endOf=function(e){return void 0===(e=R(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},ln.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},ln.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.fromNow=function(e){return this.from(Tt(),e)},ln.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.toNow=function(e){return this.to(Tt(),e)},ln.get=function(e){return x(this[e=R(e)])?this[e]():this},ln.invalidAt=function(){return g(this).overflow},ln.isAfter=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},ln.isBefore=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},ln.isBetween=function(e,t,n,s){var i=S(e)?e:Tt(e),r=S(t)?t:Tt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&("("===(s=s||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===s[1]?this.isBefore(r,n):!this.isAfter(r,n))},ln.isSame=function(e,t){var n,s=S(e)?e:Tt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},ln.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},ln.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},ln.isValid=function(){return p(this)},ln.lang=Xt,ln.locale=Qt,ln.localeData=Kt,ln.max=bt,ln.min=xt,ln.parsingFlags=function(){return _({},g(this))},ln.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:F[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=C(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(x(this[e=R(e)]))return this[e](t);return this},ln.startOf=function(e){switch(e=R(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},ln.subtract=Jt,ln.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},ln.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},ln.toDate=function(){return new Date(this.valueOf())},ln.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):x(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(n,"Z")):A(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},ln.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},ln.toJSON=function(){return this.isValid()?this.toISOString():null},ln.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},ln.unix=function(){return Math.floor(this.valueOf()/1e3)},ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ln.year=Oe,ln.isLeapYear=function(){return ke(this.year())},ln.weekYear=function(e){return tn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ln.isoWeekYear=function(e){return tn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},ln.quarter=ln.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},ln.month=Fe,ln.daysInMonth=function(){return Pe(this.year(),this.month())},ln.week=ln.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},ln.isoWeek=ln.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},ln.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},ln.isoWeeksInYear=function(){return Ae(this.year(),1,4)},ln.date=nn,ln.day=ln.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},ln.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},ln.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var t,n,s=(t=e,n=this.localeData(),"string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t);return this.day(this.day()%7?s:s-7)},ln.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},ln.hour=ln.hours=tt,ln.minute=ln.minutes=sn,ln.second=ln.seconds=an,ln.millisecond=ln.milliseconds=un,ln.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Gt(this);if("string"==typeof e){if(null===(e=Ut(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Gt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?$t(this,At(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},ln.utc=function(e){return this.utcOffset(0,e)},ln.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Gt(this),"m")),this},ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ut(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},ln.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ln.isUtc=Vt,ln.isUTC=Vt,ln.zoneAbbr=function(){return this._isUTC?"UTC":""},ln.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},ln.dates=n("dates accessor is deprecated. Use date instead.",nn),ln.months=n("months accessor is deprecated. Use month instead",Fe),ln.years=n("years accessor is deprecated. Use year instead",Oe),ln.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),ln.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Yt(e))._a){var t=e._isUTC?y(e._a):Tt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var hn=P.prototype;function cn(e,t,n,s){var i=lt(),r=y().set(s,t);return i[n](r,e)}function fn(e,t,n){if(d(e)&&(t=e,e=void 0),e=e||"",null!=t)return cn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=cn(e,s,n,"month");return i}function mn(e,t,n,s){t=("boolean"==typeof e?d(t)&&(n=t,t=void 0):(t=e,e=!1,d(n=t)&&(n=t,t=void 0)),t||"");var i,r=lt(),a=e?r._week.dow:0;if(null!=n)return cn(t,(n+a)%7,s,"day");var o=[];for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,"day");return o}hn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return x(s)?s.call(t,n):s},hn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},hn.invalidDate=function(){return this._invalidDate},hn.ordinal=function(e){return this._ordinal.replace("%d",e)},hn.preparse=dn,hn.postformat=dn,hn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return x(i)?i(e,t,n,s):i.replace(/%d/i,e)},hn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return x(n)?n(t):n.replace(/%s/i,t)},hn.set=function(e){var t,n;for(n in e)x(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},hn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},hn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},hn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},hn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Ue),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},hn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},hn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},hn.firstDayOfYear=function(){return this._week.doy},hn.firstDayOfWeek=function(){return this._week.dow},hn.weekdays=function(e,t){return e?o(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:o(this._weekdays)?this._weekdays:this._weekdays.standalone},hn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},hn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},hn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},hn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=$e),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},hn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},hn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Je),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},hn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},hn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ot("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===k(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",ot),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",lt);var _n=Math.abs;function yn(e,t,n,s){var i=At(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function pn(e){return 4800*e/146097}function vn(e){return 146097*e/4800}function wn(e){return function(){return this.as(e)}}var Mn=wn("ms"),Sn=wn("s"),Dn=wn("m"),kn=wn("h"),Yn=wn("d"),On=wn("w"),Tn=wn("M"),xn=wn("y");function bn(e){return function(){return this.isValid()?this._data[e]:NaN}}var Pn=bn("milliseconds"),Wn=bn("seconds"),Hn=bn("minutes"),Rn=bn("hours"),Cn=bn("days"),Fn=bn("months"),Ln=bn("years");var Un=Math.round,Nn={ss:44,s:45,m:45,h:22,d:26,M:11};var Gn=Math.abs;function Vn(e){return(0<e)-(e<0)||+e}function En(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Gn(this._milliseconds)/1e3,s=Gn(this._days),i=Gn(this._months);t=D((e=D(n/60))/60),n%=60,e%=60;var r=D(i/12),a=i%=12,o=s,u=t,l=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Vn(this._months)!==Vn(h)?"-":"",m=Vn(this._days)!==Vn(h)?"-":"",_=Vn(this._milliseconds)!==Vn(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||d?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(d?_+d+"S":"")}var In=Ht.prototype;return In.isValid=function(){return this._isValid},In.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},In.add=function(e,t){return yn(this,e,t,1)},In.subtract=function(e,t){return yn(this,e,t,-1)},In.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=R(e))||"year"===e)return t=this._days+s/864e5,n=this._months+pn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(vn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},In.asMilliseconds=Mn,In.asSeconds=Sn,In.asMinutes=Dn,In.asHours=kn,In.asDays=Yn,In.asWeeks=On,In.asMonths=Tn,In.asYears=xn,In.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},In._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*gn(vn(o)+a),o=a=0),u.milliseconds=r%1e3,e=D(r/1e3),u.seconds=e%60,t=D(e/60),u.minutes=t%60,n=D(t/60),u.hours=n%24,o+=i=D(pn(a+=D(n/24))),a-=gn(vn(i)),s=D(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},In.clone=function(){return At(this)},In.get=function(e){return e=R(e),this.isValid()?this[e+"s"]():NaN},In.milliseconds=Pn,In.seconds=Wn,In.minutes=Hn,In.hours=Rn,In.days=Cn,In.weeks=function(){return D(this.days()/7)},In.months=Fn,In.years=Ln,In.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,d,h,c=this.localeData(),f=(n=!e,s=c,i=At(t=this).abs(),r=Un(i.as("s")),a=Un(i.as("m")),o=Un(i.as("h")),u=Un(i.as("d")),l=Un(i.as("M")),d=Un(i.as("y")),(h=r<=Nn.ss&&["s",r]||r<Nn.s&&["ss",r]||a<=1&&["m"]||a<Nn.m&&["mm",a]||o<=1&&["h"]||o<Nn.h&&["hh",o]||u<=1&&["d"]||u<Nn.d&&["dd",u]||l<=1&&["M"]||l<Nn.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=n,h[3]=0<+t,h[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,h));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},In.toISOString=En,In.toString=En,In.toJSON=En,In.locale=Qt,In.localeData=Kt,In.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",En),In.lang=Xt,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ue("x",se),ue("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,n){n._d=new Date(k(e))}),c.version="2.23.0",e=Tt,c.fn=ln,c.min=function(){return Pt("isBefore",[].slice.call(arguments,0))},c.max=function(){return Pt("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return Tt(1e3*e)},c.months=function(e,t){return fn(e,t,"months")},c.isDate=h,c.locale=ot,c.invalid=v,c.duration=At,c.isMoment=S,c.weekdays=function(e,t,n){return mn(e,t,n,"weekdays")},c.parseZone=function(){return Tt.apply(null,arguments).parseZone()},c.localeData=lt,c.isDuration=Rt,c.monthsShort=function(e,t){return fn(e,t,"monthsShort")},c.weekdaysMin=function(e,t,n){return mn(e,t,n,"weekdaysMin")},c.defineLocale=ut,c.updateLocale=function(e,t){if(null!=t){var n,s,i=nt;null!=(s=at(e))&&(i=s._config),(n=new P(t=b(i,t))).parentLocale=st[e],st[e]=n,ot(e)}else null!=st[e]&&(null!=st[e].parentLocale?st[e]=st[e].parentLocale:null!=st[e]&&delete st[e]);return st[e]},c.locales=function(){return s(st)},c.weekdaysShort=function(e,t,n){return mn(e,t,n,"weekdaysShort")},c.normalizeUnits=R,c.relativeTimeRounding=function(e){return void 0===e?Un:"function"==typeof e&&(Un=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==Nn[e]&&(void 0===t?Nn[e]:(Nn[e]=t,"s"===e&&(Nn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=ln,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c});
\ No newline at end of file
diff --git a/website/js/vendor/mustache/mustache.js b/website/js/vendor/mustache/mustache.js
deleted file mode 100644 (file)
index 6ed26c7..0000000
+++ /dev/null
@@ -1,740 +0,0 @@
-// This file has been generated from mustache.mjs
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-  typeof define === 'function' && define.amd ? define(factory) :
-  (global = global || self, global.Mustache = factory());
-}(this, (function () { 'use strict';
-
-  /*!
-   * mustache.js - Logic-less {{mustache}} templates with JavaScript
-   * http://github.com/janl/mustache.js
-   */
-
-  var objectToString = Object.prototype.toString;
-  var isArray = Array.isArray || function isArrayPolyfill (object) {
-    return objectToString.call(object) === '[object Array]';
-  };
-
-  function isFunction (object) {
-    return typeof object === 'function';
-  }
-
-  /**
-   * More correct typeof string handling array
-   * which normally returns typeof 'object'
-   */
-  function typeStr (obj) {
-    return isArray(obj) ? 'array' : typeof obj;
-  }
-
-  function escapeRegExp (string) {
-    return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&');
-  }
-
-  /**
-   * Null safe way of checking whether or not an object,
-   * including its prototype, has a given property
-   */
-  function hasProperty (obj, propName) {
-    return obj != null && typeof obj === 'object' && (propName in obj);
-  }
-
-  /**
-   * Safe way of detecting whether or not the given thing is a primitive and
-   * whether it has the given property
-   */
-  function primitiveHasOwnProperty (primitive, propName) {
-    return (
-      primitive != null
-      && typeof primitive !== 'object'
-      && primitive.hasOwnProperty
-      && primitive.hasOwnProperty(propName)
-    );
-  }
-
-  // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577
-  // See https://github.com/janl/mustache.js/issues/189
-  var regExpTest = RegExp.prototype.test;
-  function testRegExp (re, string) {
-    return regExpTest.call(re, string);
-  }
-
-  var nonSpaceRe = /\S/;
-  function isWhitespace (string) {
-    return !testRegExp(nonSpaceRe, string);
-  }
-
-  var entityMap = {
-    '&': '&amp;',
-    '<': '&lt;',
-    '>': '&gt;',
-    '"': '&quot;',
-    "'": '&#39;',
-    '/': '&#x2F;',
-    '`': '&#x60;',
-    '=': '&#x3D;'
-  };
-
-  function escapeHtml (string) {
-    return String(string).replace(/[&<>"'`=\/]/g, function fromEntityMap (s) {
-      return entityMap[s];
-    });
-  }
-
-  var whiteRe = /\s*/;
-  var spaceRe = /\s+/;
-  var equalsRe = /\s*=/;
-  var curlyRe = /\s*\}/;
-  var tagRe = /#|\^|\/|>|\{|&|=|!/;
-
-  /**
-   * Breaks up the given `template` string into a tree of tokens. If the `tags`
-   * argument is given here it must be an array with two string values: the
-   * opening and closing tags used in the template (e.g. [ "<%", "%>" ]). Of
-   * course, the default is to use mustaches (i.e. mustache.tags).
-   *
-   * A token is an array with at least 4 elements. The first element is the
-   * mustache symbol that was used inside the tag, e.g. "#" or "&". If the tag
-   * did not contain a symbol (i.e. {{myValue}}) this element is "name". For
-   * all text that appears outside a symbol this element is "text".
-   *
-   * The second element of a token is its "value". For mustache tags this is
-   * whatever else was inside the tag besides the opening symbol. For text tokens
-   * this is the text itself.
-   *
-   * The third and fourth elements of the token are the start and end indices,
-   * respectively, of the token in the original template.
-   *
-   * Tokens that are the root node of a subtree contain two more elements: 1) an
-   * array of tokens in the subtree and 2) the index in the original template at
-   * which the closing tag for that section begins.
-   *
-   * Tokens for partials also contain two more elements: 1) a string value of
-   * indendation prior to that tag and 2) the index of that tag on that line -
-   * eg a value of 2 indicates the partial is the third tag on this line.
-   */
-  function parseTemplate (template, tags) {
-    if (!template)
-      return [];
-    var lineHasNonSpace = false;
-    var sections = [];     // Stack to hold section tokens
-    var tokens = [];       // Buffer to hold the tokens
-    var spaces = [];       // Indices of whitespace tokens on the current line
-    var hasTag = false;    // Is there a {{tag}} on the current line?
-    var nonSpace = false;  // Is there a non-space char on the current line?
-    var indentation = '';  // Tracks indentation for tags that use it
-    var tagIndex = 0;      // Stores a count of number of tags encountered on a line
-
-    // Strips all whitespace tokens array for the current line
-    // if there was a {{#tag}} on it and otherwise only space.
-    function stripSpace () {
-      if (hasTag && !nonSpace) {
-        while (spaces.length)
-          delete tokens[spaces.pop()];
-      } else {
-        spaces = [];
-      }
-
-      hasTag = false;
-      nonSpace = false;
-    }
-
-    var openingTagRe, closingTagRe, closingCurlyRe;
-    function compileTags (tagsToCompile) {
-      if (typeof tagsToCompile === 'string')
-        tagsToCompile = tagsToCompile.split(spaceRe, 2);
-
-      if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)
-        throw new Error('Invalid tags: ' + tagsToCompile);
-
-      openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\s*');
-      closingTagRe = new RegExp('\\s*' + escapeRegExp(tagsToCompile[1]));
-      closingCurlyRe = new RegExp('\\s*' + escapeRegExp('}' + tagsToCompile[1]));
-    }
-
-    compileTags(tags || mustache.tags);
-
-    var scanner = new Scanner(template);
-
-    var start, type, value, chr, token, openSection;
-    while (!scanner.eos()) {
-      start = scanner.pos;
-
-      // Match any text between tags.
-      value = scanner.scanUntil(openingTagRe);
-
-      if (value) {
-        for (var i = 0, valueLength = value.length; i < valueLength; ++i) {
-          chr = value.charAt(i);
-
-          if (isWhitespace(chr)) {
-            spaces.push(tokens.length);
-            indentation += chr;
-          } else {
-            nonSpace = true;
-            lineHasNonSpace = true;
-            indentation += ' ';
-          }
-
-          tokens.push([ 'text', chr, start, start + 1 ]);
-          start += 1;
-
-          // Check for whitespace on the current line.
-          if (chr === '\n') {
-            stripSpace();
-            indentation = '';
-            tagIndex = 0;
-            lineHasNonSpace = false;
-          }
-        }
-      }
-
-      // Match the opening tag.
-      if (!scanner.scan(openingTagRe))
-        break;
-
-      hasTag = true;
-
-      // Get the tag type.
-      type = scanner.scan(tagRe) || 'name';
-      scanner.scan(whiteRe);
-
-      // Get the tag value.
-      if (type === '=') {
-        value = scanner.scanUntil(equalsRe);
-        scanner.scan(equalsRe);
-        scanner.scanUntil(closingTagRe);
-      } else if (type === '{') {
-        value = scanner.scanUntil(closingCurlyRe);
-        scanner.scan(curlyRe);
-        scanner.scanUntil(closingTagRe);
-        type = '&';
-      } else {
-        value = scanner.scanUntil(closingTagRe);
-      }
-
-      // Match the closing tag.
-      if (!scanner.scan(closingTagRe))
-        throw new Error('Unclosed tag at ' + scanner.pos);
-
-      if (type == '>') {
-        token = [ type, value, start, scanner.pos, indentation, tagIndex, lineHasNonSpace ];
-      } else {
-        token = [ type, value, start, scanner.pos ];
-      }
-      tagIndex++;
-      tokens.push(token);
-
-      if (type === '#' || type === '^') {
-        sections.push(token);
-      } else if (type === '/') {
-        // Check section nesting.
-        openSection = sections.pop();
-
-        if (!openSection)
-          throw new Error('Unopened section "' + value + '" at ' + start);
-
-        if (openSection[1] !== value)
-          throw new Error('Unclosed section "' + openSection[1] + '" at ' + start);
-      } else if (type === 'name' || type === '{' || type === '&') {
-        nonSpace = true;
-      } else if (type === '=') {
-        // Set the tags for the next time around.
-        compileTags(value);
-      }
-    }
-
-    stripSpace();
-
-    // Make sure there are no open sections when we're done.
-    openSection = sections.pop();
-
-    if (openSection)
-      throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos);
-
-    return nestTokens(squashTokens(tokens));
-  }
-
-  /**
-   * Combines the values of consecutive text tokens in the given `tokens` array
-   * to a single token.
-   */
-  function squashTokens (tokens) {
-    var squashedTokens = [];
-
-    var token, lastToken;
-    for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
-      token = tokens[i];
-
-      if (token) {
-        if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {
-          lastToken[1] += token[1];
-          lastToken[3] = token[3];
-        } else {
-          squashedTokens.push(token);
-          lastToken = token;
-        }
-      }
-    }
-
-    return squashedTokens;
-  }
-
-  /**
-   * Forms the given array of `tokens` into a nested tree structure where
-   * tokens that represent a section have two additional items: 1) an array of
-   * all tokens that appear in that section and 2) the index in the original
-   * template that represents the end of that section.
-   */
-  function nestTokens (tokens) {
-    var nestedTokens = [];
-    var collector = nestedTokens;
-    var sections = [];
-
-    var token, section;
-    for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
-      token = tokens[i];
-
-      switch (token[0]) {
-        case '#':
-        case '^':
-          collector.push(token);
-          sections.push(token);
-          collector = token[4] = [];
-          break;
-        case '/':
-          section = sections.pop();
-          section[5] = token[2];
-          collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;
-          break;
-        default:
-          collector.push(token);
-      }
-    }
-
-    return nestedTokens;
-  }
-
-  /**
-   * A simple string scanner that is used by the template parser to find
-   * tokens in template strings.
-   */
-  function Scanner (string) {
-    this.string = string;
-    this.tail = string;
-    this.pos = 0;
-  }
-
-  /**
-   * Returns `true` if the tail is empty (end of string).
-   */
-  Scanner.prototype.eos = function eos () {
-    return this.tail === '';
-  };
-
-  /**
-   * Tries to match the given regular expression at the current position.
-   * Returns the matched text if it can match, the empty string otherwise.
-   */
-  Scanner.prototype.scan = function scan (re) {
-    var match = this.tail.match(re);
-
-    if (!match || match.index !== 0)
-      return '';
-
-    var string = match[0];
-
-    this.tail = this.tail.substring(string.length);
-    this.pos += string.length;
-
-    return string;
-  };
-
-  /**
-   * Skips all text until the given regular expression can be matched. Returns
-   * the skipped string, which is the entire tail if no match can be made.
-   */
-  Scanner.prototype.scanUntil = function scanUntil (re) {
-    var index = this.tail.search(re), match;
-
-    switch (index) {
-      case -1:
-        match = this.tail;
-        this.tail = '';
-        break;
-      case 0:
-        match = '';
-        break;
-      default:
-        match = this.tail.substring(0, index);
-        this.tail = this.tail.substring(index);
-    }
-
-    this.pos += match.length;
-
-    return match;
-  };
-
-  /**
-   * Represents a rendering context by wrapping a view object and
-   * maintaining a reference to the parent context.
-   */
-  function Context (view, parentContext) {
-    this.view = view;
-    this.cache = { '.': this.view };
-    this.parent = parentContext;
-  }
-
-  /**
-   * Creates a new context using the given view with this context
-   * as the parent.
-   */
-  Context.prototype.push = function push (view) {
-    return new Context(view, this);
-  };
-
-  /**
-   * Returns the value of the given name in this context, traversing
-   * up the context hierarchy if the value is absent in this context's view.
-   */
-  Context.prototype.lookup = function lookup (name) {
-    var cache = this.cache;
-
-    var value;
-    if (cache.hasOwnProperty(name)) {
-      value = cache[name];
-    } else {
-      var context = this, intermediateValue, names, index, lookupHit = false;
-
-      while (context) {
-        if (name.indexOf('.') > 0) {
-          intermediateValue = context.view;
-          names = name.split('.');
-          index = 0;
-
-          /**
-           * Using the dot notion path in `name`, we descend through the
-           * nested objects.
-           *
-           * To be certain that the lookup has been successful, we have to
-           * check if the last object in the path actually has the property
-           * we are looking for. We store the result in `lookupHit`.
-           *
-           * This is specially necessary for when the value has been set to
-           * `undefined` and we want to avoid looking up parent contexts.
-           *
-           * In the case where dot notation is used, we consider the lookup
-           * to be successful even if the last "object" in the path is
-           * not actually an object but a primitive (e.g., a string, or an
-           * integer), because it is sometimes useful to access a property
-           * of an autoboxed primitive, such as the length of a string.
-           **/
-          while (intermediateValue != null && index < names.length) {
-            if (index === names.length - 1)
-              lookupHit = (
-                hasProperty(intermediateValue, names[index])
-                || primitiveHasOwnProperty(intermediateValue, names[index])
-              );
-
-            intermediateValue = intermediateValue[names[index++]];
-          }
-        } else {
-          intermediateValue = context.view[name];
-
-          /**
-           * Only checking against `hasProperty`, which always returns `false` if
-           * `context.view` is not an object. Deliberately omitting the check
-           * against `primitiveHasOwnProperty` if dot notation is not used.
-           *
-           * Consider this example:
-           * ```
-           * Mustache.render("The length of a football field is {{#length}}{{length}}{{/length}}.", {length: "100 yards"})
-           * ```
-           *
-           * If we were to check also against `primitiveHasOwnProperty`, as we do
-           * in the dot notation case, then render call would return:
-           *
-           * "The length of a football field is 9."
-           *
-           * rather than the expected:
-           *
-           * "The length of a football field is 100 yards."
-           **/
-          lookupHit = hasProperty(context.view, name);
-        }
-
-        if (lookupHit) {
-          value = intermediateValue;
-          break;
-        }
-
-        context = context.parent;
-      }
-
-      cache[name] = value;
-    }
-
-    if (isFunction(value))
-      value = value.call(this.view);
-
-    return value;
-  };
-
-  /**
-   * A Writer knows how to take a stream of tokens and render them to a
-   * string, given a context. It also maintains a cache of templates to
-   * avoid the need to parse the same template twice.
-   */
-  function Writer () {
-    this.templateCache = {
-      _cache: {},
-      set: function set (key, value) {
-        this._cache[key] = value;
-      },
-      get: function get (key) {
-        return this._cache[key];
-      },
-      clear: function clear () {
-        this._cache = {};
-      }
-    };
-  }
-
-  /**
-   * Clears all cached templates in this writer.
-   */
-  Writer.prototype.clearCache = function clearCache () {
-    if (typeof this.templateCache !== 'undefined') {
-      this.templateCache.clear();
-    }
-  };
-
-  /**
-   * Parses and caches the given `template` according to the given `tags` or
-   * `mustache.tags` if `tags` is omitted,  and returns the array of tokens
-   * that is generated from the parse.
-   */
-  Writer.prototype.parse = function parse (template, tags) {
-    var cache = this.templateCache;
-    var cacheKey = template + ':' + (tags || mustache.tags).join(':');
-    var isCacheEnabled = typeof cache !== 'undefined';
-    var tokens = isCacheEnabled ? cache.get(cacheKey) : undefined;
-
-    if (tokens == undefined) {
-      tokens = parseTemplate(template, tags);
-      isCacheEnabled && cache.set(cacheKey, tokens);
-    }
-    return tokens;
-  };
-
-  /**
-   * High-level method that is used to render the given `template` with
-   * the given `view`.
-   *
-   * The optional `partials` argument may be an object that contains the
-   * names and templates of partials that are used in the template. It may
-   * also be a function that is used to load partial templates on the fly
-   * that takes a single argument: the name of the partial.
-   *
-   * If the optional `tags` argument is given here it must be an array with two
-   * string values: the opening and closing tags used in the template (e.g.
-   * [ "<%", "%>" ]). The default is to mustache.tags.
-   */
-  Writer.prototype.render = function render (template, view, partials, tags) {
-    var tokens = this.parse(template, tags);
-    var context = (view instanceof Context) ? view : new Context(view, undefined);
-    return this.renderTokens(tokens, context, partials, template, tags);
-  };
-
-  /**
-   * Low-level method that renders the given array of `tokens` using
-   * the given `context` and `partials`.
-   *
-   * Note: The `originalTemplate` is only ever used to extract the portion
-   * of the original template that was contained in a higher-order section.
-   * If the template doesn't use higher-order sections, this argument may
-   * be omitted.
-   */
-  Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate, tags) {
-    var buffer = '';
-
-    var token, symbol, value;
-    for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {
-      value = undefined;
-      token = tokens[i];
-      symbol = token[0];
-
-      if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);
-      else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);
-      else if (symbol === '>') value = this.renderPartial(token, context, partials, tags);
-      else if (symbol === '&') value = this.unescapedValue(token, context);
-      else if (symbol === 'name') value = this.escapedValue(token, context);
-      else if (symbol === 'text') value = this.rawValue(token);
-
-      if (value !== undefined)
-        buffer += value;
-    }
-
-    return buffer;
-  };
-
-  Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {
-    var self = this;
-    var buffer = '';
-    var value = context.lookup(token[1]);
-
-    // This function is used to render an arbitrary template
-    // in the current context by higher-order sections.
-    function subRender (template) {
-      return self.render(template, context, partials);
-    }
-
-    if (!value) return;
-
-    if (isArray(value)) {
-      for (var j = 0, valueLength = value.length; j < valueLength; ++j) {
-        buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);
-      }
-    } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {
-      buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);
-    } else if (isFunction(value)) {
-      if (typeof originalTemplate !== 'string')
-        throw new Error('Cannot use higher-order sections without the original template');
-
-      // Extract the portion of the original template that the section contains.
-      value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);
-
-      if (value != null)
-        buffer += value;
-    } else {
-      buffer += this.renderTokens(token[4], context, partials, originalTemplate);
-    }
-    return buffer;
-  };
-
-  Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {
-    var value = context.lookup(token[1]);
-
-    // Use JavaScript's definition of falsy. Include empty arrays.
-    // See https://github.com/janl/mustache.js/issues/186
-    if (!value || (isArray(value) && value.length === 0))
-      return this.renderTokens(token[4], context, partials, originalTemplate);
-  };
-
-  Writer.prototype.indentPartial = function indentPartial (partial, indentation, lineHasNonSpace) {
-    var filteredIndentation = indentation.replace(/[^ \t]/g, '');
-    var partialByNl = partial.split('\n');
-    for (var i = 0; i < partialByNl.length; i++) {
-      if (partialByNl[i].length && (i > 0 || !lineHasNonSpace)) {
-        partialByNl[i] = filteredIndentation + partialByNl[i];
-      }
-    }
-    return partialByNl.join('\n');
-  };
-
-  Writer.prototype.renderPartial = function renderPartial (token, context, partials, tags) {
-    if (!partials) return;
-
-    var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];
-    if (value != null) {
-      var lineHasNonSpace = token[6];
-      var tagIndex = token[5];
-      var indentation = token[4];
-      var indentedValue = value;
-      if (tagIndex == 0 && indentation) {
-        indentedValue = this.indentPartial(value, indentation, lineHasNonSpace);
-      }
-      return this.renderTokens(this.parse(indentedValue, tags), context, partials, indentedValue, tags);
-    }
-  };
-
-  Writer.prototype.unescapedValue = function unescapedValue (token, context) {
-    var value = context.lookup(token[1]);
-    if (value != null)
-      return value;
-  };
-
-  Writer.prototype.escapedValue = function escapedValue (token, context) {
-    var value = context.lookup(token[1]);
-    if (value != null)
-      return mustache.escape(value);
-  };
-
-  Writer.prototype.rawValue = function rawValue (token) {
-    return token[1];
-  };
-
-  var mustache = {
-    name: 'mustache.js',
-    version: '4.0.1',
-    tags: [ '{{', '}}' ],
-    clearCache: undefined,
-    escape: undefined,
-    parse: undefined,
-    render: undefined,
-    Scanner: undefined,
-    Context: undefined,
-    Writer: undefined,
-    /**
-     * Allows a user to override the default caching strategy, by providing an
-     * object with set, get and clear methods. This can also be used to disable
-     * the cache by setting it to the literal `undefined`.
-     */
-    set templateCache (cache) {
-      defaultWriter.templateCache = cache;
-    },
-    /**
-     * Gets the default or overridden caching object from the default writer.
-     */
-    get templateCache () {
-      return defaultWriter.templateCache;
-    }
-  };
-
-  // All high-level mustache.* functions use this writer.
-  var defaultWriter = new Writer();
-
-  /**
-   * Clears all cached templates in the default writer.
-   */
-  mustache.clearCache = function clearCache () {
-    return defaultWriter.clearCache();
-  };
-
-  /**
-   * Parses and caches the given template in the default writer and returns the
-   * array of tokens it contains. Doing this ahead of time avoids the need to
-   * parse templates on the fly as they are rendered.
-   */
-  mustache.parse = function parse (template, tags) {
-    return defaultWriter.parse(template, tags);
-  };
-
-  /**
-   * Renders the `template` with the given `view` and `partials` using the
-   * default writer. If the optional `tags` argument is given here it must be an
-   * array with two string values: the opening and closing tags used in the
-   * template (e.g. [ "<%", "%>" ]). The default is to mustache.tags.
-   */
-  mustache.render = function render (template, view, partials, tags) {
-    if (typeof template !== 'string') {
-      throw new TypeError('Invalid template! Template should be a "string" ' +
-                          'but "' + typeStr(template) + '" was given as the first ' +
-                          'argument for mustache#render(template, view, partials)');
-    }
-
-    return defaultWriter.render(template, view, partials, tags);
-  };
-
-  // Export the escaping function so that the user may override it.
-  // See https://github.com/janl/mustache.js/issues/244
-  mustache.escape = escapeHtml;
-
-  // Export these mainly for testing, but also for advanced usage.
-  mustache.Scanner = Scanner;
-  mustache.Context = Context;
-  mustache.Writer = Writer;
-
-  return mustache;
-
-})));
diff --git a/website/js/vendor/mustache/mustache.min.js b/website/js/vendor/mustache/mustache.min.js
deleted file mode 100644 (file)
index 173c85a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=global||self,global.Mustache=factory())})(this,function(){"use strict";var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)==="[object Array]"};function isFunction(object){return typeof object==="function"}function typeStr(obj){return isArray(obj)?"array":typeof obj}function escapeRegExp(string){return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function hasProperty(obj,propName){return obj!=null&&typeof obj==="object"&&propName in obj}function primitiveHasOwnProperty(primitive,propName){return primitive!=null&&typeof primitive!=="object"&&primitive.hasOwnProperty&&primitive.hasOwnProperty(propName)}var regExpTest=RegExp.prototype.test;function testRegExp(re,string){return regExpTest.call(re,string)}var nonSpaceRe=/\S/;function isWhitespace(string){return!testRegExp(nonSpaceRe,string)}var entityMap={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};function escapeHtml(string){return String(string).replace(/[&<>"'`=\/]/g,function fromEntityMap(s){return entityMap[s]})}var whiteRe=/\s*/;var spaceRe=/\s+/;var equalsRe=/\s*=/;var curlyRe=/\s*\}/;var tagRe=/#|\^|\/|>|\{|&|=|!/;function parseTemplate(template,tags){if(!template)return[];var lineHasNonSpace=false;var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;var indentation="";var tagIndex=0;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length)delete tokens[spaces.pop()]}else{spaces=[]}hasTag=false;nonSpace=false}var openingTagRe,closingTagRe,closingCurlyRe;function compileTags(tagsToCompile){if(typeof tagsToCompile==="string")tagsToCompile=tagsToCompile.split(spaceRe,2);if(!isArray(tagsToCompile)||tagsToCompile.length!==2)throw new Error("Invalid tags: "+tagsToCompile);openingTagRe=new RegExp(escapeRegExp(tagsToCompile[0])+"\\s*");closingTagRe=new RegExp("\\s*"+escapeRegExp(tagsToCompile[1]));closingCurlyRe=new RegExp("\\s*"+escapeRegExp("}"+tagsToCompile[1]))}compileTags(tags||mustache.tags);var scanner=new Scanner(template);var start,type,value,chr,token,openSection;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(openingTagRe);if(value){for(var i=0,valueLength=value.length;i<valueLength;++i){chr=value.charAt(i);if(isWhitespace(chr)){spaces.push(tokens.length);indentation+=chr}else{nonSpace=true;lineHasNonSpace=true;indentation+=" "}tokens.push(["text",chr,start,start+1]);start+=1;if(chr==="\n"){stripSpace();indentation="";tagIndex=0;lineHasNonSpace=false}}}if(!scanner.scan(openingTagRe))break;hasTag=true;type=scanner.scan(tagRe)||"name";scanner.scan(whiteRe);if(type==="="){value=scanner.scanUntil(equalsRe);scanner.scan(equalsRe);scanner.scanUntil(closingTagRe)}else if(type==="{"){value=scanner.scanUntil(closingCurlyRe);scanner.scan(curlyRe);scanner.scanUntil(closingTagRe);type="&"}else{value=scanner.scanUntil(closingTagRe)}if(!scanner.scan(closingTagRe))throw new Error("Unclosed tag at "+scanner.pos);if(type==">"){token=[type,value,start,scanner.pos,indentation,tagIndex,lineHasNonSpace]}else{token=[type,value,start,scanner.pos]}tagIndex++;tokens.push(token);if(type==="#"||type==="^"){sections.push(token)}else if(type==="/"){openSection=sections.pop();if(!openSection)throw new Error('Unopened section "'+value+'" at '+start);if(openSection[1]!==value)throw new Error('Unclosed section "'+openSection[1]+'" at '+start)}else if(type==="name"||type==="{"||type==="&"){nonSpace=true}else if(type==="="){compileTags(value)}}stripSpace();openSection=sections.pop();if(openSection)throw new Error('Unclosed section "'+openSection[1]+'" at '+scanner.pos);return nestTokens(squashTokens(tokens))}function squashTokens(tokens){var squashedTokens=[];var token,lastToken;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];if(token){if(token[0]==="text"&&lastToken&&lastToken[0]==="text"){lastToken[1]+=token[1];lastToken[3]=token[3]}else{squashedTokens.push(token);lastToken=token}}}return squashedTokens}function nestTokens(tokens){var nestedTokens=[];var collector=nestedTokens;var sections=[];var token,section;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];switch(token[0]){case"#":case"^":collector.push(token);sections.push(token);collector=token[4]=[];break;case"/":section=sections.pop();section[5]=token[2];collector=sections.length>0?sections[sections.length-1][4]:nestedTokens;break;default:collector.push(token)}}return nestedTokens}function Scanner(string){this.string=string;this.tail=string;this.pos=0}Scanner.prototype.eos=function eos(){return this.tail===""};Scanner.prototype.scan=function scan(re){var match=this.tail.match(re);if(!match||match.index!==0)return"";var string=match[0];this.tail=this.tail.substring(string.length);this.pos+=string.length;return string};Scanner.prototype.scanUntil=function scanUntil(re){var index=this.tail.search(re),match;switch(index){case-1:match=this.tail;this.tail="";break;case 0:match="";break;default:match=this.tail.substring(0,index);this.tail=this.tail.substring(index)}this.pos+=match.length;return match};function Context(view,parentContext){this.view=view;this.cache={".":this.view};this.parent=parentContext}Context.prototype.push=function push(view){return new Context(view,this)};Context.prototype.lookup=function lookup(name){var cache=this.cache;var value;if(cache.hasOwnProperty(name)){value=cache[name]}else{var context=this,intermediateValue,names,index,lookupHit=false;while(context){if(name.indexOf(".")>0){intermediateValue=context.view;names=name.split(".");index=0;while(intermediateValue!=null&&index<names.length){if(index===names.length-1)lookupHit=hasProperty(intermediateValue,names[index])||primitiveHasOwnProperty(intermediateValue,names[index]);intermediateValue=intermediateValue[names[index++]]}}else{intermediateValue=context.view[name];lookupHit=hasProperty(context.view,name)}if(lookupHit){value=intermediateValue;break}context=context.parent}cache[name]=value}if(isFunction(value))value=value.call(this.view);return value};function Writer(){this.templateCache={_cache:{},set:function set(key,value){this._cache[key]=value},get:function get(key){return this._cache[key]},clear:function clear(){this._cache={}}}}Writer.prototype.clearCache=function clearCache(){if(typeof this.templateCache!=="undefined"){this.templateCache.clear()}};Writer.prototype.parse=function parse(template,tags){var cache=this.templateCache;var cacheKey=template+":"+(tags||mustache.tags).join(":");var isCacheEnabled=typeof cache!=="undefined";var tokens=isCacheEnabled?cache.get(cacheKey):undefined;if(tokens==undefined){tokens=parseTemplate(template,tags);isCacheEnabled&&cache.set(cacheKey,tokens)}return tokens};Writer.prototype.render=function render(template,view,partials,tags){var tokens=this.parse(template,tags);var context=view instanceof Context?view:new Context(view,undefined);return this.renderTokens(tokens,context,partials,template,tags)};Writer.prototype.renderTokens=function renderTokens(tokens,context,partials,originalTemplate,tags){var buffer="";var token,symbol,value;for(var i=0,numTokens=tokens.length;i<numTokens;++i){value=undefined;token=tokens[i];symbol=token[0];if(symbol==="#")value=this.renderSection(token,context,partials,originalTemplate);else if(symbol==="^")value=this.renderInverted(token,context,partials,originalTemplate);else if(symbol===">")value=this.renderPartial(token,context,partials,tags);else if(symbol==="&")value=this.unescapedValue(token,context);else if(symbol==="name")value=this.escapedValue(token,context);else if(symbol==="text")value=this.rawValue(token);if(value!==undefined)buffer+=value}return buffer};Writer.prototype.renderSection=function renderSection(token,context,partials,originalTemplate){var self=this;var buffer="";var value=context.lookup(token[1]);function subRender(template){return self.render(template,context,partials)}if(!value)return;if(isArray(value)){for(var j=0,valueLength=value.length;j<valueLength;++j){buffer+=this.renderTokens(token[4],context.push(value[j]),partials,originalTemplate)}}else if(typeof value==="object"||typeof value==="string"||typeof value==="number"){buffer+=this.renderTokens(token[4],context.push(value),partials,originalTemplate)}else if(isFunction(value)){if(typeof originalTemplate!=="string")throw new Error("Cannot use higher-order sections without the original template");value=value.call(context.view,originalTemplate.slice(token[3],token[5]),subRender);if(value!=null)buffer+=value}else{buffer+=this.renderTokens(token[4],context,partials,originalTemplate)}return buffer};Writer.prototype.renderInverted=function renderInverted(token,context,partials,originalTemplate){var value=context.lookup(token[1]);if(!value||isArray(value)&&value.length===0)return this.renderTokens(token[4],context,partials,originalTemplate)};Writer.prototype.indentPartial=function indentPartial(partial,indentation,lineHasNonSpace){var filteredIndentation=indentation.replace(/[^ \t]/g,"");var partialByNl=partial.split("\n");for(var i=0;i<partialByNl.length;i++){if(partialByNl[i].length&&(i>0||!lineHasNonSpace)){partialByNl[i]=filteredIndentation+partialByNl[i]}}return partialByNl.join("\n")};Writer.prototype.renderPartial=function renderPartial(token,context,partials,tags){if(!partials)return;var value=isFunction(partials)?partials(token[1]):partials[token[1]];if(value!=null){var lineHasNonSpace=token[6];var tagIndex=token[5];var indentation=token[4];var indentedValue=value;if(tagIndex==0&&indentation){indentedValue=this.indentPartial(value,indentation,lineHasNonSpace)}return this.renderTokens(this.parse(indentedValue,tags),context,partials,indentedValue,tags)}};Writer.prototype.unescapedValue=function unescapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return value};Writer.prototype.escapedValue=function escapedValue(token,context){var value=context.lookup(token[1]);if(value!=null)return mustache.escape(value)};Writer.prototype.rawValue=function rawValue(token){return token[1]};var mustache={name:"mustache.js",version:"4.0.1",tags:["{{","}}"],clearCache:undefined,escape:undefined,parse:undefined,render:undefined,Scanner:undefined,Context:undefined,Writer:undefined,set templateCache(cache){defaultWriter.templateCache=cache},get templateCache(){return defaultWriter.templateCache}};var defaultWriter=new Writer;mustache.clearCache=function clearCache(){return defaultWriter.clearCache()};mustache.parse=function parse(template,tags){return defaultWriter.parse(template,tags)};mustache.render=function render(template,view,partials,tags){if(typeof template!=="string"){throw new TypeError('Invalid template! Template should be a "string" '+'but "'+typeStr(template)+'" was given as the first '+"argument for mustache#render(template, view, partials)")}return defaultWriter.render(template,view,partials,tags)};mustache.escape=escapeHtml;mustache.Scanner=Scanner;mustache.Context=Context;mustache.Writer=Writer;return mustache});
diff --git a/website/js/vendor/tabulator/css/tabulator.min.css b/website/js/vendor/tabulator/css/tabulator.min.css
deleted file mode 100644 (file)
index 92a0dd0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#cdcdcd;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#cdcdcd}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter{color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{-ms-flex-pack:center;justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#e2e2e2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#e6e6e6;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#f3f3f3!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}
-/*# sourceMappingURL=tabulator.min.css.map */
diff --git a/website/js/vendor/tabulator/css/tabulator.min.css.map b/website/js/vendor/tabulator/css/tabulator.min.css.map
deleted file mode 100644 (file)
index 8924b90..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"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","file":"tabulator.min.css","sourcesContent":["/* Tabulator v4.8.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #888 !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder: 1px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitDataTable\"]{\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground:$headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//header menu button\r\n\t\t\t\t.tabulator-header-menu-button{\r\n\t\t\t\t\tpadding: 0 8px;\r\n\r\n\t\t\t\t\t&:hover{\r\n\t\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t\topacity: .6;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title and sort arrow\r\n\t\t\t\t.tabulator-col-title-holder{\r\n\t\t\t\t\tposition: relative;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-header-menu-button + .tabulator-title-editor{\r\n\t\t\t\t\t\twidth:calc(100% - 22px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-col-sorter{\r\n\t\t\t\t\tdisplay: flex;\r\n\t\t\t\t\talign-items: center;\r\n\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:0;\r\n\t\t\t\t\tbottom:0;\r\n\t\t\t\t\tright:4px;\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\twidth: 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-col-sorter{\r\n\t\t\t\t\t\tcolor: $sortArrowInactive;\r\n\r\n\t\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-col-sorter{\r\n\t\t\t\t\t\tcolor: $sortArrowActive;\r\n\r\n\t\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-col-sorter{\r\n\t\t\t\t\t\tcolor: $sortArrowActive;\r\n\r\n\t\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\t\tcolor: $sortArrowActive;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-col-sorter{\r\n\t\t\t\t\t\tjustify-content: center;\r\n\t\t\t\t\t\tleft:0;\r\n\t\t\t\t\t\tright:0;\r\n\t\t\t\t\t\ttop:4px;\r\n\t\t\t\t\t\tbottom:auto;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tmin-height:100%;\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#ccc;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t//row element\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align: right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-menu{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\tbox-shadow: 0 0 5px 0 rgba(0, 0, 0, .2);\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-menu-item{\r\n\r\n\t\tpadding:5px 10px;\r\n\r\n\t\tuser-select: none;\r\n\r\n\t\t&.tabulator-menu-item-disabled{\r\n\t\t\topacity: .5;\r\n\t\t}\r\n\r\n\t\t&:not(.tabulator-menu-item-disabled):hover{\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-menu-separator{\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\r\n\t\t\t&.focused{\r\n\t\t\t\toutline:1px solid rgba($rowBackgroundColor, .5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.focused{\r\n\t\t\toutline:1px solid $editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-notice{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n\r\n//RTL Styling\r\n\r\n.tabulator.tabulator-ltr{\r\n\tdirection: ltr;\r\n}\r\n\r\n.tabulator.tabulator-rtl{\r\n\ttext-align: initial;\r\n\tdirection: rtl;\r\n\r\n\t.tabulator-header {\r\n\t\t.tabulator-col{\r\n\t\t\ttext-align: initial;\r\n\t\t\tborder-left:1px solid $headerBorderColor;\r\n\t\t\tborder-right:initial;\r\n\r\n\t\t\t&.tabulator-col-group{\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tmargin-right:initial;\r\n\t\t\t\t\tmargin-left:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\tpadding-left:25px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tleft:8px;\r\n\t\t\t\t\tright:initial;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-row{\r\n\t\t.tabulator-cell{\r\n\t\t\tborder-right:initial;\r\n\t\t\tborder-left:1px solid $rowBorderColor;\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t// &:first-child{\r\n\t\t\t// \t.tabulator-col-resize-handle.prev{\r\n\t\t\t// \t\tdisplay: none;\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\r\n\t\t\t.tabulator-data-tree-branch{\r\n\t\t\t\tmargin-right:initial;\r\n\t\t\t\tmargin-left:5px;\r\n\r\n\t\t\t\tborder-bottom-left-radius:initial;\r\n\t\t\t\tborder-bottom-right-radius:1px;\r\n\r\n\t\t\t\tborder-left:initial;\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control{\r\n\t\t\t\tmargin-right:initial;\r\n\t\t\t\tmargin-left:5px;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tleft:0;\r\n\t\tright:auto;\r\n\r\n\t\t&.prev{\r\n\t\t\tright:0;\r\n\t\t\tleft:auto;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n\r\n\t.tabulator-data-tree-branch{\r\n\t\tdisplay:inline-block;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:9px;\r\n\t\twidth:7px;\r\n\r\n\t\tmargin-top:-9px;\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\tborder-left:2px solid $rowBorderColor;\r\n\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t}\r\n\r\n\t//row grouping element\r\n\t.tabulator-print-table-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:30px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:50px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:70px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:90px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:110px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-data-tree-control{\r\n\r\n\t\tdisplay:inline-flex;\r\n\t\tjustify-content:center;\r\n\t\talign-items:center;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:11px;\r\n\t\twidth:11px;\r\n\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder:1px solid $rowTextColor;\r\n\t\tborder-radius:2px;\r\n\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\toverflow:hidden;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: transparent;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-expand{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/css/tabulator_site.min.css b/website/js/vendor/tabulator/css/tabulator_site.min.css
deleted file mode 100644 (file)
index 3b32a79..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.tabulator{position:relative;border-bottom:5px solid #222;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;-ms-transform:translatez(0);transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid rgba(32.1569%,38.8235%,55.6863%,1);background-color:#222;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background-color:#222;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid rgba(32.1569%,38.8235%,55.6863%,1);background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-menu-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter{color:rgba(32.1569%,38.8235%,55.6863%,1)}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid rgba(32.1569%,38.8235%,55.6863%,1)}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter{color:rgba(32.1569%,38.8235%,55.6863%,1)}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid rgba(32.1569%,38.8235%,55.6863%,1);color:rgba(32.1569%,38.8235%,55.6863%,1)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{-ms-transform:rotate(180deg);transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{-ms-flex-pack:center;justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#3c3c3c!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:0}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:rgba(32.1569%,38.8235%,55.6863%,1);font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#484848!important;color:#fff}.tabulator .tabulator-footer{padding:5px 10px;padding-top:8px;border-top:3px solid rgba(32.1569%,38.8235%,55.6863%,1);background-color:#222;text-align:right;color:#222;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-8px -10px 8px -10px;text-align:left;background:#3c3c3c!important;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:#fff;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:rgba(32.1569%,38.8235%,55.6863%,1)}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:6px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:0 0}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:0 0;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:rgba(32.1569%,38.8235%,55.6863%,1)}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:0 0}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid rgba(32.1569%,38.8235%,55.6863%,1);padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:#090909}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid rgba(32.1569%,38.8235%,55.6863%,1);border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid rgba(32.1569%,38.8235%,55.6863%,1);vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:rgba(32.1569%,38.8235%,55.6863%,1)}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid rgba(255,255,255,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #aaa;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:initial;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{left:8px;right:initial}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:initial;margin-left:5px;border-bottom-left-radius:initial;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #aaa}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:initial;margin-left:5px}.tabulator.tabulator-rtl .tabulator-col-resize-handle{position:absolute;left:0;right:auto}.tabulator.tabulator-rtl .tabulator-col-resize-handle.prev{right:0;left:auto}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid rgba(32.1569%,38.8235%,55.6863%,1);padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:#090909}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid rgba(32.1569%,38.8235%,55.6863%,1);border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid rgba(32.1569%,38.8235%,55.6863%,1);vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:rgba(32.1569%,38.8235%,55.6863%,1)}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:0 0}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/css/tabulator_site.min.css.map b/website/js/vendor/tabulator/css/tabulator_site.min.css.map
deleted file mode 100644 (file)
index 5ca4e22..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAElB,6BAvCgB,AAyChB,sBA1CqB,AA4CrB,eA1Ca,AA2Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CAiiBxB,AAhjBD,iFAoBI,cAAc,CACd,AArBJ,0CA0BE,oBAAqB,CACrB,AA3BF,oFAiCK,iBAAkB,CAClB,AAlCL,kCAyCE,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA1CF,6BA8CE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCAhF2B,AAiF3B,sBApFyB,AAqFzB,WApFmB,AAqFnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAmRpB,AAjVF,qDAiEG,YAAY,CACZ,AAlEH,4CAsEG,qBAAoB,AAEpB,kBAAiB,AACjB,sBAAqB,AACrB,4BAxGoB,AAyGpB,sBA3GwB,AA4GxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAqNhB,AAnSH,6DAiFI,kBAAkB,AAClB,yBA/GyB,AAgHzB,mBAA8C,AAC9C,mBAAoB,CACpB,AArFJ,mEAyFI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CA8DX,AAzJJ,iGA+FK,aAAc,CAMd,AArGL,uGAkGM,eAAe,AACf,UAAW,CACX,AApGN,+FAyGK,iBAAkB,CAClB,AA1GL,wFA8GK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAiBrB,AArIL,gHAwHM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AAhIN,8IAmIM,uBAAuB,CACvB,AApIN,yFAyIK,oBAAa,AAAb,aAAa,AACb,sBAAmB,AAAnB,mBAAmB,AAEnB,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,SAAS,CAST,AAxJL,0GAkJM,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BA9KkB,CA+KlB,AAvJN,0FAgKK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAjMkB,AAkMlB,gBAAgB,AAEhB,iBAAiB,CACjB,AAvKL,0FA6KK,YAAa,CACb,AA9KL,qEAmLI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AAxMJ,8EA2LK,qBAAsB,CACtB,AA5LL,yEA+LK,cAAe,CACf,AAhML,sFAoMM,QAAS,AACT,QAAS,CACT,AAtMN,oFA6MK,kBAAkB,CAClB,AA9ML,qEAiNK,eAAc,AACd,wBAAoD,CACpD,AAnNL,4HAuNM,UA/OkB,CAqPlB,AA7NN,6IA0NO,gBAAgB,AAChB,4BAnPiB,CAoPjB,AA5NP,2HAkOM,aA3PmB,CAkQnB,AAzON,4IAqOO,gBAAgB,AAChB,+BA/PkB,CAiQlB,AAxOP,4HA8OM,aAvQmB,CA8QnB,AArPN,6IAiPO,mBAAmB,AACnB,6BA3QkB,AA4QlB,aA5QkB,CA6QlB,AApPP,+GA4PM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAlQN,oHAuQM,wBAAyB,CACzB,AAxQN,2GA6QM,gBAAe,AACf,gBAAgB,CAChB,AA/QN,uIAmRO,gBAAe,AACf,mBAAmB,CACnB,AArRP,4GA0RM,qBAAuB,AAAvB,uBAAuB,AACvB,OAAM,AACN,QAAO,AACP,QAAO,AACP,WAAW,CACX,AA/RN,+CAsSG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AApTH,qEA8SI,2BAjUgB,CAkUhB,AA/SJ,sEAkTI,0BArUgB,CAsUhB,AAnTJ,qDAuTG,sBAAqB,AACrB,eAAc,AAEd,6BAA0D,AAU1D,0BAvViB,AA0VjB,eAAgB,CAChB,AAxUH,oEA6TI,4BAA0D,CAK1D,AAlUJ,iGAgUK,YAAa,CACb,AAjUL,2DA2UG,cAAc,CAKd,AAhVH,iEA8UI,YAAa,CACb,AA/UJ,kCAqVE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAgDjC,AAzYF,wCA4VG,YAAa,CACb,AA7VH,yDAiWG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAOlB,UAAU,CAYV,AAtXH,wFAsWI,gBAAe,AACf,cAAc,CACd,AAxWJ,8DA6WI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cA/YyB,AAgZzB,gBAAiB,AACjB,cAAe,CACf,AArXJ,mDA0XG,kBAAiB,AACjB,qBAAoB,AACpB,sBAjZqB,AAkZrB,mBAAmB,AACnB,iBAAgB,AAChB,UAjZe,CA0Zf,AAxYH,kFAmYK,gBAAiB,AACjB,6BAA0D,AAC1D,UApagB,CAqahB,AAtYL,6BA8YE,iBAAgB,AAChB,gBAAe,AACf,6BArZ2B,AAsZ3B,sBAzZyB,AA0ZzB,iBAAgB,AAChB,WA1ZmB,AA2ZnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AAlfF,qDA8ZG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAA0D,AAY1D,6BAnciB,AAqcjB,eAAgB,CAMhB,AAxbH,oEAuaI,6BAA0D,AAC1D,oBAAiC,CAKjC,AA7aJ,iGA2aK,YAAa,CACb,AA5aL,gEAqbI,mBAAkB,AAClB,kBAAkB,CAClB,AAvbJ,wDA6bI,UAAU,CACV,AA9bJ,kDAmcG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA9coB,AA+cpB,iBAAiB,CACjB,AA1cH,8CA8cG,YAAY,CACZ,AA/cH,6CAmdG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA9doB,AA+dpB,kBAAiB,AAEjB,gBAAe,AAEf,WApekB,AAqelB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AAjfH,oDAmeI,aAxeyB,CAyezB,AApeJ,sDAueI,UAAU,CACV,AAxeJ,kEA4eK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA/eL,wCAsfE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AApgBF,6CA6fG,OAAM,AACN,UAAU,CACV,AA/fH,8CAkgBG,gBAAgB,CAChB,AAngBH,6BAygBE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA/iBF,mDAwhBG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA9iBH,qEAqiBI,sBAAqB,AACrB,UAAU,CACV,AAviBJ,mEA2iBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBA5kBuB,CA47BvB,AApXD,kCAQE,wBA/kB4B,CAglB5B,AATF,0CAYE,sBAhlBsB,AAilBtB,cAAe,CACf,AAdF,kCAiBE,wBAnlB6B,CAolB7B,AAlBF,wCAqBE,yBAtlBkC,AAulBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BAvmBkB,AAwmBlB,6BAxmBkB,AA0mBlB,8BAA+B,AAC/B,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BAzoBiB,CA0oBjB,AApEH,wDAuEG,0BA7oBiB,CA8oBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BAtpBkB,AAupBlB,4BAvpBkB,CA0qBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cA9qBW,CAyrBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAlrBkB,AAmrBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAnrBkB,AAorBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBA5rBgB,CAmsBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UAjsBe,CAksBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAiJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,kBA9uBoB,CA+uBpB,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAzvBiB,AA0vBjB,4BA1vBiB,CA2vBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAxwBe,AAywBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAryBa,CAsyBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAhzBc,CA6zBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA3zBa,CA4zBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAp1BqB,AAq1BrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,4BAr3BkB,AAs3BlB,0BAAyB,AACzB,gCAj4B2B,AAk4B3B,YAAW,AACX,kBAAiB,AACjB,gBAv4ByB,AAw4BzB,WAv4BmB,AAw4BnB,gBAAgB,AAEhB,cAAe,CA0Df,AAlXF,qCA2TG,eAAc,AACd,wBAAoD,CACpD,AA7TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BAh5BqB,AAi5BrB,eAAgB,CAChB,AAtUJ,uDA0UG,iBAAiB,CACjB,AA3UH,uDA8UG,iBAAiB,CACjB,AA/UH,uDAkVG,iBAAiB,CACjB,AAnVH,uDAsVG,iBAAiB,CACjB,AAvVH,uDA0VG,kBAAkB,CAClB,AA3VH,uDA8VG,oBAAqB,CACrB,AA/VH,gDAmWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAt7BsB,AAu7BtB,qBAAqB,CACrB,AA5WH,oCA+WG,iBAAgB,AAChB,aAh8B0B,CAi8B1B,AAKH,gBACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,gBAn8BuB,AAo8BvB,sBAl8BmB,AAm8BnB,oCAAuC,AAEvC,eAr9Ba,AAu9Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CAqBd,AAnCD,qCAkBE,iBAAgB,AAEhB,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CAUjB,AA9BF,kEAuBG,UAAW,CACX,AAxBH,8EA2BG,eAAe,AACf,kBAz9B2B,CA09B3B,AA7BH,0CAiCE,yBA79BkB,CA89BlB,AAGF,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA1+BuB,AA2+BvB,sBAz+BmB,AA2+BnB,eA3/Ba,AA6/Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Cd,AA5DD,6DAkBE,YAAW,AAEX,UAp/BgB,CA0gChB,AA1CF,oEAuBG,WA1/BqB,AA2/BrB,kBAl/BkB,CAu/BlB,AA7BH,4EA2BI,oCA9/BoB,CA+/BpB,AA5BJ,qEAgCG,yBA1/BkB,CA2/BlB,AAjCH,mEAqCG,eAAc,AAEd,WA1gCqB,AA2gCrB,kBAlgCkB,CAmgClB,AAzCH,+DA6CE,YAAW,AAEX,WA/gCgB,AAghChB,iBAAkB,CAClB,AAjDF,8DAoDE,6BArhCkB,AAuhClB,YAAW,AACX,gBAAe,AAEf,WAzhCgB,AA0hChB,eAAgB,CAChB,AAMF,yBACC,aAAc,CACd,AAGD,yBACC,mBAAmB,AACnB,aAAc,CAwEd,AA1ED,0DAMG,mBAAmB,AACnB,2BAzjCoB,AA0jCpB,oBAAoB,CAsBpB,AA9BH,wGAYK,eAAoB,AACpB,gBAAgB,CAChB,AAdL,kGAmBK,gBAAe,AACf,iBAAiB,CACjB,AArBL,kGA0BK,SAAQ,AACR,UAAa,CACb,AA5BL,wDAmCG,qBAAoB,AACpB,0BA3kCiB,CAmmCjB,AA5DH,oFA8CI,eAAoB,AACpB,gBAAe,AAEf,4BAAiC,AACjC,+BAA8B,AAE9B,oBAAmB,AACnB,2BA5lCgB,CA6lChB,AAtDJ,qFAyDI,eAAoB,AACpB,eAAe,CACf,AA3DJ,sDAiEE,kBAAiB,AACjB,OAAM,AACN,UAAU,CAMV,AAzEF,2DAsEG,QAAO,AACP,SAAS,CACT,AAOH,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CAsKzB,AAvKD,oDAKE,sBAAqB,AACrB,4BA1oCkB,AA2oClB,0BAAyB,AACzB,gCAtpC2B,AAupC3B,YAAW,AACX,kBAAiB,AACjB,gBA5pCyB,AA6pCzB,WA5pCmB,AA6pCnB,gBAAgB,AAEhB,cAAe,CAmEf,AAlFF,0DAkBG,eAAc,AACd,wBAAoD,CACpD,AApBH,6FAwBI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BArqCqB,AAsqCrB,eAAgB,CAChB,AA7BJ,+EAkCI,2BAA4B,CAC5B,AAnCJ,+EAwCI,2BAA4B,CAC5B,AAzCJ,+EA8CI,2BAA4B,CAC5B,AA/CJ,+EAoDI,2BAA4B,CAC5B,AArDJ,+EA0DI,4BAA6B,CAC7B,AA3DJ,4EA8DG,oBAAqB,CACrB,AA/DH,qEAmEG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAptCsB,AAqtCtB,qBAAqB,CACrB,AA5EH,yDA+EG,iBAAgB,AAChB,aA9tC0B,CA+tC1B,AAjFH,mDAqFE,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BApuCkB,AAquClB,4BAruCkB,CAsuClB,AAlGF,oDAsGE,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAnvCgB,AAovChB,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAkDf,AAtKF,0DAuHG,eAAc,AACd,yBAA4B,CAC5B,AAzHH,0FA4HG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AA/IH,gGAqII,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAhxCc,CAixCd,AA9IJ,wFAkJG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA3xCe,CAwyCf,AArKH,8FA2JI,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAtyCc,CAuyCd","file":"tabulator_site.min.css","sourcesContent":["/* Tabulator v4.8.3 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#222 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#222 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#3FB449 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #3FB449 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#222 !default; //border to tabulator\r\n$footerTextColor:#222 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#3FB449 !default; //footer bottom seperator color\r\n$footerActiveColor:$footerSeperatorColor !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder-bottom: 5px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitDataTable\"]{\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitColumns\"]{\r\n\t\t.tabulator-row{\r\n\t\t\t.tabulator-cell{\r\n\t\t\t\t&:last-of-type{\r\n\t\t\t\t\tborder-right: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:8px;\r\n\r\n\t\t\t\t//header menu button\r\n\t\t\t\t.tabulator-header-menu-button{\r\n\t\t\t\t\tpadding: 0 8px;\r\n\r\n\t\t\t\t\t&:hover{\r\n\t\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t\topacity: .6;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title and sort arrow\r\n\t\t\t\t.tabulator-col-title-holder{\r\n\t\t\t\t\tposition: relative;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-header-menu-button + .tabulator-title-editor{\r\n\t\t\t\t\t\twidth:calc(100% - 22px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-col-sorter{\r\n\t\t\t\t\tdisplay: flex;\r\n\t\t\t\t\talign-items: center;\r\n\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:0;\r\n\t\t\t\t\tbottom:0;\r\n\t\t\t\t\tright:4px;\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\twidth: 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-col-sorter{\r\n\t\t\t\t\t\tcolor: $sortArrowInactive;\r\n\r\n\t\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-col-sorter{\r\n\t\t\t\t\t\tcolor: $sortArrowActive;\r\n\r\n\t\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-col-sorter{\r\n\t\t\t\t\t\tcolor: $sortArrowActive;\r\n\r\n\t\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\t\tcolor: $sortArrowActive;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-col-sorter{\r\n\t\t\t\t\t\tjustify-content: center;\r\n\t\t\t\t\t\tleft:0;\r\n\t\t\t\t\t\tright:0;\r\n\t\t\t\t\t\ttop:4px;\r\n\t\t\t\t\t\tbottom:auto;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\t// border-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tmin-height:100%;\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$headerSeperatorColor;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:lighten($headerBackgroundColor, 15%) !important;\r\n\t\t\t\t\tcolor:$headerTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tpadding-top:8px;\r\n\t\tborder-top:3px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-8px -10px 8px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\t\t\t\tcolor:$headerTextColor !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// border-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:$sortArrowActive;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-menu{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\tbox-shadow: 0 0 5px 0 rgba(0, 0, 0, .2);\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-menu-item{\r\n\r\n\t\tpadding:5px 10px;\r\n\r\n\t\tuser-select: none;\r\n\r\n\t\t&.tabulator-menu-item-disabled{\r\n\t\t\topacity: .5;\r\n\t\t}\r\n\r\n\t\t&:not(.tabulator-menu-item-disabled):hover{\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-menu-separator{\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\r\n\t\t\t&.focused{\r\n\t\t\t\toutline:1px solid rgba($rowBackgroundColor, .5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.focused{\r\n\t\t\toutline:1px solid $editBoxColor;\r\n\t\t}\r\n\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-notice{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n\r\n//RTL Styling\r\n\r\n.tabulator.tabulator-ltr{\r\n\tdirection: ltr;\r\n}\r\n\r\n\r\n.tabulator.tabulator-rtl{\r\n\ttext-align: initial;\r\n\tdirection: rtl;\r\n\r\n\t.tabulator-header {\r\n\t\t.tabulator-col{\r\n\t\t\ttext-align: initial;\r\n\t\t\tborder-left:1px solid $headerBorderColor;\r\n\t\t\tborder-right:initial;\r\n\r\n\t\t\t&.tabulator-col-group{\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tmargin-right:initial;\r\n\t\t\t\t\tmargin-left:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\tpadding-left:25px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tleft:8px;\r\n\t\t\t\t\tright:initial;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-row{\r\n\t\t.tabulator-cell{\r\n\t\t\tborder-right:initial;\r\n\t\t\tborder-left:1px solid $rowBorderColor;\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t// &:first-child{\r\n\t\t\t// \t.tabulator-col-resize-handle.prev{\r\n\t\t\t// \t\tdisplay: none;\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\r\n\t\t\t.tabulator-data-tree-branch{\r\n\t\t\t\tmargin-right:initial;\r\n\t\t\t\tmargin-left:5px;\r\n\r\n\t\t\t\tborder-bottom-left-radius:initial;\r\n\t\t\t\tborder-bottom-right-radius:1px;\r\n\r\n\t\t\t\tborder-left:initial;\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control{\r\n\t\t\t\tmargin-right:initial;\r\n\t\t\t\tmargin-left:5px;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tleft:0;\r\n\t\tright:auto;\r\n\r\n\t\t&.prev{\r\n\t\t\tright:0;\r\n\t\t\tleft:auto;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n\r\n\t//row grouping element\r\n\t.tabulator-print-table-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:30px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:50px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:70px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:90px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:110px !important;\r\n\t\t\t}\r\n\t\t}\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-data-tree-branch{\r\n\t\tdisplay:inline-block;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:9px;\r\n\t\twidth:7px;\r\n\r\n\t\tmargin-top:-9px;\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\tborder-left:2px solid $rowBorderColor;\r\n\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t}\r\n\r\n\t.tabulator-data-tree-control{\r\n\r\n\t\tdisplay:inline-flex;\r\n\t\tjustify-content:center;\r\n\t\talign-items:center;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:11px;\r\n\t\twidth:11px;\r\n\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder:1px solid $rowTextColor;\r\n\t\tborder-radius:2px;\r\n\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\toverflow:hidden;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: transparent;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-expand{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/accessor.min.js b/website/js/vendor/tabulator/js/modules/accessor.min.js
deleted file mode 100644 (file)
index 901db09..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Accessor=function(o){this.table=o,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};Accessor.prototype.initializeColumn=function(o){var e=this,s=!1,t={};this.allowedTypes.forEach(function(r){var c,a="accessor"+(r.charAt(0).toUpperCase()+r.slice(1));o.definition[a]&&(c=e.lookupAccessor(o.definition[a]))&&(s=!0,t[a]={accessor:c,params:o.definition[a+"Params"]||{}})}),s&&(o.modules.accessor=t)},Accessor.prototype.lookupAccessor=function(o){var e=!1;switch(void 0===o?"undefined":_typeof(o)){case"string":this.accessors[o]?e=this.accessors[o]:console.warn("Accessor Error - No such accessor found, ignoring: ",o);break;case"function":e=o}return e},Accessor.prototype.transformRow=function(o,e){var s="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),t=o.getComponent(),r=Tabulator.prototype.helpers.deepClone(o.data||{});return this.table.columnManager.traverse(function(o){var c,a,n,i;o.modules.accessor&&(a=o.modules.accessor[s]||o.modules.accessor.accessor||!1)&&"undefined"!=(c=o.getFieldValue(r))&&(i=o.getComponent(),n="function"==typeof a.params?a.params(c,r,e,i,t):a.params,o.setFieldValue(r,a.accessor(c,r,e,n,i,t)))}),r},Accessor.prototype.accessors={},Tabulator.prototype.registerModule("accessor",Accessor);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/calculation_colums.min.js b/website/js/vendor/tabulator/js/modules/calculation_colums.min.js
deleted file mode 100644 (file)
index 9b6f56b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},CalcComponent=function(t){this._row=t};CalcComponent.prototype.getData=function(t){return this._row.getData(t)},CalcComponent.prototype.getElement=function(){return this._row.getElement()},CalcComponent.prototype.getTable=function(){return this._row.table},CalcComponent.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(o){t.push(o.getComponent())}),t},CalcComponent.prototype.getCell=function(t){var o=this._row.getCell(t);return!!o&&o.getComponent()},CalcComponent.prototype._getSelf=function(){return this._row};var ColumnCalcs=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};ColumnCalcs.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},ColumnCalcs.prototype.initialize=function(){this.genColumn=new Column({field:"value"},this)},ColumnCalcs.prototype.registerColumnField=function(){},ColumnCalcs.prototype.initializeColumn=function(t){var o=t.definition,e={topCalcParams:o.topCalcParams||{},botCalcParams:o.bottomCalcParams||{}};if(o.topCalc){switch(_typeof(o.topCalc)){case"string":this.calculations[o.topCalc]?e.topCalc=this.calculations[o.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.topCalc);break;case"function":e.topCalc=o.topCalc}e.topCalc&&(t.modules.columnCalcs=e,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(o.bottomCalc){switch(_typeof(o.bottomCalc)){case"string":this.calculations[o.bottomCalc]?e.botCalc=this.calculations[o.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.bottomCalc);break;case"function":e.botCalc=o.bottomCalc}e.botCalc&&(t.modules.columnCalcs=e,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},ColumnCalcs.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},ColumnCalcs.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},ColumnCalcs.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},ColumnCalcs.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&this.botRow&&(this.botRow.getElement().style.marginLeft=-t+"px")},ColumnCalcs.prototype.recalc=function(t){var o;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),o=this.generateRow("top",this.rowsToData(t)),this.topRow=o;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(o.getElement()),o.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),o=this.generateRow("bottom",this.rowsToData(t)),this.botRow=o;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(o.getElement()),o.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},ColumnCalcs.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},ColumnCalcs.prototype.recalcAll=function(){var t=this;if((this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalc(this.table.rowManager.activeRows),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs)){table.modules.groupRows.getChildGroups().forEach(function(o){t.recalcGroup(o)})}},ColumnCalcs.prototype.recalcGroup=function(t){var o,e;t&&t.calcs&&(t.calcs.bottom&&(o=this.rowsToData(t.rows),e=this.generateRowData("bottom",o),t.calcs.bottom.updateData(e),t.calcs.bottom.reinitialize()),t.calcs.top&&(o=this.rowsToData(t.rows),e=this.generateRowData("top",o),t.calcs.top.updateData(e),t.calcs.top.reinitialize()))},ColumnCalcs.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},ColumnCalcs.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},ColumnCalcs.prototype.rowsToData=function(t){var o=this,e=[];return t.forEach(function(t){if(e.push(t.getData()),o.table.options.dataTree&&o.table.options.dataTreeChildColumnCalcs&&t.modules.dataTree.open){var n=o.rowsToData(o.table.modules.dataTree.getFilteredTreeChildren(t));e=e.concat(n)}}),e},ColumnCalcs.prototype.generateRow=function(t,o){var e,n=this,l=this.generateRowData(t,o);return n.table.modExists("mutator")&&n.table.modules.mutator.disable(),e=new Row(l,this,"calc"),n.table.modExists("mutator")&&n.table.modules.mutator.enable(),e.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),e.component=!1,e.getComponent=function(){return this.component||(this.component=new CalcComponent(this)),this.component},e.generateCells=function(){var o=[];n.table.columnManager.columnsByIndex.forEach(function(l){n.genColumn.setField(l.getField()),n.genColumn.hozAlign=l.hozAlign,l.definition[t+"CalcFormatter"]&&n.table.modExists("format")?n.genColumn.modules.format={formatter:n.table.modules.format.getFormatter(l.definition[t+"CalcFormatter"]),params:l.definition[t+"CalcFormatterParams"]||{}}:n.genColumn.modules.format={formatter:n.table.modules.format.getFormatter("plaintext"),params:{}},n.genColumn.definition.cssClass=l.definition.cssClass;var i=new Cell(n.genColumn,e);i.getElement(),i.column=l,i.setWidth(),l.cells.push(i),o.push(i),l.visible||i.hide()}),this.cells=o},e},ColumnCalcs.prototype.generateRowData=function(t,o){var e,n,l={},i="top"==t?this.topCalcs:this.botCalcs,a="top"==t?"topCalc":"botCalc";return i.forEach(function(t){var i=[];t.modules.columnCalcs&&t.modules.columnCalcs[a]&&(o.forEach(function(o){i.push(t.getFieldValue(o))}),n=a+"Params",e="function"==typeof t.modules.columnCalcs[n]?t.modules.columnCalcs[n](i,o):t.modules.columnCalcs[n],t.setFieldValue(l,t.modules.columnCalcs[a](i,o,e)))}),l},ColumnCalcs.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},ColumnCalcs.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},ColumnCalcs.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},ColumnCalcs.prototype.getResults=function(){var t,o=this,e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){e[t.getKey()]=o.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e},ColumnCalcs.prototype.getGroupResults=function(t){var o=this,e=t._getSelf(),n=t.getSubGroups(),l={};return n.forEach(function(t){l[t.getKey()]=o.getGroupResults(t)}),{top:e.calcs.top?e.calcs.top.getData():{},bottom:e.calcs.bottom?e.calcs.bottom.getData():{},groups:l}},ColumnCalcs.prototype.calculations={avg:function(t,o,e){var n=0,l=void 0!==e.precision?e.precision:2;return t.length&&(n=t.reduce(function(t,o){return Number(t)+Number(o)}),n/=t.length,n=!1!==l?n.toFixed(l):n),parseFloat(n).toString()},max:function(t,o,e){var n=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))>n||null===n)&&(n=t)}),null!==n?!1!==l?n.toFixed(l):n:""},min:function(t,o,e){var n=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))<n||null===n)&&(n=t)}),null!==n?!1!==l?n.toFixed(l):n:""},sum:function(t,o,e){var n=0,l=void 0!==e.precision&&e.precision;return t.length&&t.forEach(function(t){t=Number(t),n+=isNaN(t)?0:Number(t)}),!1!==l?n.toFixed(l):n},concat:function(t,o,e){var n=0;return t.length&&(n=t.reduce(function(t,o){return String(t)+String(o)})),n},count:function(t,o,e){var n=0;return t.length&&t.forEach(function(t){t&&n++}),n}},Tabulator.prototype.registerModule("columnCalcs",ColumnCalcs);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/clipboard.min.js b/website/js/vendor/tabulator/js/modules/clipboard.min.js
deleted file mode 100644 (file)
index 5bbd436..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Clipboard=function(t){this.table=t,this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0};Clipboard.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(e){var a,o,i;if(!t.blocked){if(e.preventDefault(),t.customSelection)a=t.customSelection,t.table.options.clipboardCopyFormatter&&(a=t.table.options.clipboardCopyFormatter("plain",a));else{var i=t.table.modules.export.generateExportList(t.table.options.clipboardCopyConfig,t.table.options.clipboardCopyStyled,t.rowRange,"clipboard");o=t.table.modules.export.genereateHTMLTable(i),a=o?t.generatePlainContent(i):"",t.table.options.clipboardCopyFormatter&&(a=t.table.options.clipboardCopyFormatter("plain",a),o=t.table.options.clipboardCopyFormatter("html",o))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",a):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",a),o&&e.clipboardData.setData("text/html",o)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",a),o&&e.originalEvent.clipboardData.setData("text/html",o)),t.table.options.clipboardCopied.call(t.table,a,o),t.reset()}}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(e){t.paste(e)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},Clipboard.prototype.reset=function(){this.blocked=!0,this.customSelection=!1},Clipboard.prototype.generatePlainContent=function(t){var e=[];return t.forEach(function(t){var a=[];t.columns.forEach(function(e){var o="";if(e)if("group"===t.type&&(e.value=e.component.getKey()),null===e.value)o="";else switch(_typeof(e.value)){case"object":o=JSON.stringify(e.value);break;case"undefined":o="";break;default:o=e.value}a.push(o)}),e.push(a.join("\t"))}),e.join("\n")},Clipboard.prototype.copy=function(t,e){var t,a,o;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=t||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?(t=document.createRange(),t.selectNodeContents(this.table.element),a=window.getSelection(),a.toString()&&e&&(this.customSelection=a.toString()),a.removeAllRanges(),a.addRange(t)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(o=document.body.createTextRange(),o.moveToElementText(this.table.element),o.select()),document.execCommand("copy"),a&&a.removeAllRanges())},Clipboard.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},Clipboard.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},Clipboard.prototype.paste=function(t){var e,a,o;this.checkPaseOrigin(t)&&(e=this.getPasteData(t),a=this.pasteParser.call(this,e),a?(t.preventDefault(),this.table.modExists("mutator")&&(a=this.mutateData(a)),o=this.pasteAction.call(this,a),this.table.options.clipboardPasted.call(this.table,e,a,o)):this.table.options.clipboardPasteError.call(this.table,e))},Clipboard.prototype.mutateData=function(t){var e=this,a=[];return Array.isArray(t)?t.forEach(function(t){a.push(e.table.modules.mutator.transformRow(t,"clipboard"))}):a=t,a},Clipboard.prototype.checkPaseOrigin=function(t){var e=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(e=!1),e},Clipboard.prototype.getPasteData=function(t){var e;return window.clipboardData&&window.clipboardData.getData?e=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?e=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(e=t.originalEvent.clipboardData.getData("text/plain")),e},Clipboard.prototype.pasteParsers={table:function(t){var e=[],a=!0,o=this.table.columnManager.columns,i=[],n=[];return t=t.split("\n"),t.forEach(function(t){e.push(t.split("\t"))}),!(!e.length||1===e.length&&e[0].length<2)&&(!0,e[0].forEach(function(t){var e=o.find(function(e){return t&&e.definition.title&&t.trim()&&e.definition.title.trim()===t.trim()});e?i.push(e):a=!1}),a||(a=!0,i=[],e[0].forEach(function(t){var e=o.find(function(e){return t&&e.field&&t.trim()&&e.field.trim()===t.trim()});e?i.push(e):a=!1}),a||(i=this.table.columnManager.columnsByIndex)),a&&e.shift(),e.forEach(function(t){var e={};t.forEach(function(t,a){i[a]&&(e[i[a].field]=t)}),n.push(e)}),n)}},Clipboard.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},Tabulator.prototype.registerModule("clipboard",Clipboard);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/data_tree.min.js b/website/js/vendor/tabulator/js/modules/data_tree.min.js
deleted file mode 100644 (file)
index 949ac56..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},DataTree=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};DataTree.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),a=this.table.options;switch(this.field=a.dataTreeChildField,this.indent=a.dataTreeChildIndent,this.elementField=a.dataTreeElementColumn||!!t&&t.field,a.dataTreeBranchElement&&(!0===a.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof a.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=a.dataTreeBranchElement),a.dataTreeCollapseElement?"string"==typeof a.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=a.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),a.dataTreeExpandElement?"string"==typeof a.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=a.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(a.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return a.dataTreeStartExpanded};break;case"function":this.startOpen=a.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return a.dataTreeStartExpanded[t]}}},DataTree.prototype.initializeRow=function(e){var t=e.getData()[this.field],a=Array.isArray(t),n=a||!a&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;!n&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!n&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!n&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!n)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!n)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:n}},DataTree.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],a=t.getElement(),n=e.modules.dataTree;n.branchEl&&(n.branchEl.parentNode&&n.branchEl.parentNode.removeChild(n.branchEl),n.branchEl=!1),n.controlEl&&(n.controlEl.parentNode&&n.controlEl.parentNode.removeChild(n.controlEl),n.controlEl=!1),this.generateControlElement(e,a),e.element.classList.add("tabulator-tree-level-"+n.index),n.index&&(this.branchEl?(n.branchEl=this.branchEl.cloneNode(!0),a.insertBefore(n.branchEl,a.firstChild),this.table.rtl?n.branchEl.style.marginRight=(n.branchEl.offsetWidth+n.branchEl.style.marginLeft)*(n.index-1)+n.index*this.indent+"px":n.branchEl.style.marginLeft=(n.branchEl.offsetWidth+n.branchEl.style.marginRight)*(n.index-1)+n.index*this.indent+"px"):this.table.rtl?a.style.paddingRight=parseInt(window.getComputedStyle(a,null).getPropertyValue("padding-right"))+n.index*this.indent+"px":a.style.paddingLeft=parseInt(window.getComputedStyle(a,null).getPropertyValue("padding-left"))+n.index*this.indent+"px")},DataTree.prototype.generateControlElement=function(e,t){var a=this,n=e.modules.dataTree,t=t||e.getCells()[0].getElement(),r=n.controlEl;!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.collapseRow(e)})):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.expandRow(e)})),n.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),r&&r.parentNode===t?r.parentNode.replaceChild(n.controlEl,r):t.insertBefore(n.controlEl,t.firstChild))},DataTree.prototype.setDisplayIndex=function(e){this.displayIndex=e},DataTree.prototype.getDisplayIndex=function(){return this.displayIndex},DataTree.prototype.getRows=function(e){var t=this,a=[];return e.forEach(function(e,n){var r,l;a.push(e),e instanceof Row&&(r=e.modules.dataTree.children,r.index||!1===r.children||(l=t.getChildren(e),l.forEach(function(e){a.push(e)})))}),a},DataTree.prototype.getChildren=function(e){var t=this,a=e.modules.dataTree,n=[],r=[];return!1!==a.children&&a.open&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),n=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(a.children):a.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(n),n.forEach(function(e){r.push(e),t.getChildren(e).forEach(function(e){r.push(e)})})),r},DataTree.prototype.generateChildren=function(e){var t=this,a=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach(function(n){var r=new Row(n||{},t.table.rowManager);r.modules.dataTree.index=e.modules.dataTree.index+1,r.modules.dataTree.parent=e,r.modules.dataTree.children&&(r.modules.dataTree.open=t.startOpen(r.getComponent(),r.modules.dataTree.index)),a.push(r)}),a},DataTree.prototype.expandRow=function(e,t){var a=e.modules.dataTree;!1!==a.children&&(a.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},DataTree.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},DataTree.prototype.getFilteredTreeChildren=function(e){var t,a=e.modules.dataTree,n=[];return a.children&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),t=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(a.children):a.children,t.forEach(function(e){e instanceof Row&&n.push(e)})),n},DataTree.prototype.rowDelete=function(e){var t,a=e.modules.dataTree.parent;a&&(t=this.findChildIndex(e,a),!1!==t&&a.data[this.field].splice(t,1),a.data[this.field].length||delete a.data[this.field],this.initializeRow(a),this.layoutRow(a)),this.table.rowManager.refreshActiveData("tree",!1,!0)},DataTree.prototype.addTreeChildRow=function(e,t,a,n){var r=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==n&&!1!==(r=this.findChildIndex(n,e))&&e.data[this.field].splice(a?r:r+1,0,t),!1===r&&(a?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)},DataTree.prototype.findChildIndex=function(e,t){var a=this,n=!1;return"object"==(void 0===e?"undefined":_typeof(e))?e instanceof Row?n=e.data:e instanceof RowComponent?n=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(n=t.modules.dataTree.children.find(function(t){return t instanceof Row&&t.element===e}))&&(n=n.data):n=void 0!==e&&null!==e&&t.data[this.field].find(function(t){return t.data[a.table.options.index]==e}),n&&(Array.isArray(t.data[this.field])&&(n=t.data[this.field].indexOf(n)),-1==n&&(n=!1)),n},DataTree.prototype.getTreeChildren=function(e,t,a){var n=this,r=e.modules.dataTree,l=[];return r.children&&(Array.isArray(r.children)||(r.children=this.generateChildren(e)),r.children.forEach(function(e){e instanceof Row&&(l.push(t?e.getComponent():e),a&&(l=l.concat(n.getTreeChildren(e,t,a))))})),l},DataTree.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||e.row.reinitialize()},DataTree.prototype.getChildField=function(){return this.field},DataTree.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},Tabulator.prototype.registerModule("dataTree",DataTree);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/download.min.js b/website/js/vendor/tabulator/js/modules/download.min.js
deleted file mode 100644 (file)
index 45bceb3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Download=function(e){this.table=e};Download.prototype.download=function(e,o,t,n,a){function r(t,n){a?!0===a?i.triggerDownload(t,n,e,o,!0):a(t):i.triggerDownload(t,n,e,o)}var i=this,l=!1;if("function"==typeof e?l=e:i.downloaders[e]?l=i.downloaders[e]:console.warn("Download Error - No such download type found: ",e),l){var s=this.generateExportList(n);l.call(this.table,s,t||{},r)}},Download.prototype.generateExportList=function(e){var o=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),t=this.table.options.groupHeaderDownload;return t&&!Array.isArray(t)&&(t=[t]),o.forEach(function(e){var o;"group"===e.type&&(o=e.columns[0],t&&t[e.indent]&&(o.value=t[e.indent](o.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))}),o},Download.prototype.triggerDownload=function(e,o,t,n,a){var r=document.createElement("a"),i=new Blob([e],{type:o}),n=n||"Tabulator."+("function"==typeof t?"txt":t);(i=this.table.options.downloadReady.call(this.table,e,i))&&(a?window.open(window.URL.createObjectURL(i)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(i,n):(r.setAttribute("href",window.URL.createObjectURL(i)),r.setAttribute("download",n),r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},Download.prototype.commsReceived=function(e,o,t){switch(o){case"intercept":this.download(t.type,"",t.options,t.active,t.intercept)}},Download.prototype.downloaders={csv:function(e,o,t){var n=o&&o.delimiter?o.delimiter:",",a=[],r=[];e.forEach(function(e){var o=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(function(e,o){e&&1===e.depth&&(r[o]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')});break;case"row":e.columns.forEach(function(e){if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}o.push('"'+String(e.value).split('"').join('""')+'"')}}),a.push(o.join(n))}}),r.length&&a.unshift(r.join(n)),a=a.join("\n"),o.bom&&(a="\ufeff"+a),t(a,"text/csv")},json:function(e,o,t){var n=[];e.forEach(function(e){var o={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach(function(e){e&&(o[e.component.getField()]=e.value)}),n.push(o)}}),n=JSON.stringify(n,null,"\t"),t(n,"application/json")},pdf:function(e,o,t){function n(e,o){var t=[];return e.columns.forEach(function(e){var n;if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}n={content:e.value,colSpan:e.width,rowSpan:e.height},o&&(n.styles=o),t.push(n)}else t.push("")}),t}var a=[],r=[],i={},l=o.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},s=o.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},c=o.jsPDF||{},u=o&&o.title?o.title:"";c.orientation||(c.orientation=o.orientation||"landscape"),c.unit||(c.unit="pt"),e.forEach(function(e){switch(e.type){case"header":a.push(n(e));break;case"group":r.push(n(e,l));break;case"calc":r.push(n(e,s));break;case"row":r.push(n(e))}});var d=new jsPDF(c);o&&o.autoTable&&(i="function"==typeof o.autoTable?o.autoTable(d)||{}:o.autoTable),u&&(i.addPageContent=function(e){d.text(u,40,30)}),i.head=a,i.body=r,d.autoTable(i),o&&o.documentProcessing&&o.documentProcessing(d),t(d.output("arraybuffer"),"application/pdf")},xlsx:function(e,o,t){function n(){var o=[],t=[],n={},a={s:{c:0,r:0},e:{c:e[0]?e[0].columns.reduce(function(e,o){return e+(o&&o.width?o.width:1)},0):0,r:e.length}};return e.forEach(function(e,n){var a=[];e.columns.forEach(function(e,o){e?(a.push(e.value instanceof Date||"object"!==_typeof(e.value)?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&t.push({s:{r:n,c:o},e:{r:n+e.height-1,c:o+e.width-1}})):a.push("")}),o.push(a)}),XLSX.utils.sheet_add_aoa(n,o),n["!ref"]=XLSX.utils.encode_range(a),t.length&&(n["!merges"]=t),n}var a,r=this,i=o.sheetName||"Sheet1",l=XLSX.utils.book_new();if(l.SheetNames=[],l.Sheets={},o.sheetOnly)return void t(n());if(o.sheets)for(var s in o.sheets)!0===o.sheets[s]?(l.SheetNames.push(s),l.Sheets[s]=n()):(l.SheetNames.push(s),this.modules.comms.send(o.sheets[s],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:r.active,intercept:function(e){l.Sheets[s]=e}}));else l.SheetNames.push(i),l.Sheets[i]=n();o.documentProcessing&&(l=o.documentProcessing(l)),a=XLSX.write(l,{bookType:"xlsx",bookSST:!0,type:"binary"}),t(function(e){for(var o=new ArrayBuffer(e.length),t=new Uint8Array(o),n=0;n!=e.length;++n)t[n]=255&e.charCodeAt(n);return o}(a),"application/octet-stream")},html:function(e,o,t){this.modExists("export",!0)&&t(this.modules.export.genereateHTMLTable(e),"text/html")}},Tabulator.prototype.registerModule("download",Download);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/edit.min.js b/website/js/vendor/tabulator/js/modules/edit.min.js
deleted file mode 100644 (file)
index 9d9073b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Edit=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[]};Edit.prototype.initializeColumn=function(e){var t=this,i={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?i.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":i.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?i.editor=t.editors[e.definition.formatter]:i.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}i.editor&&(e.modules.edit=i)},Edit.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},Edit.prototype.clearEditor=function(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),e?i.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-row-editing")}},Edit.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},Edit.prototype.bindEditor=function(e){var t=this,i=e.getElement();i.setAttribute("tabindex",0),i.addEventListener("click",function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})}),i.addEventListener("mousedown",function(e){2===e.button?e.preventDefault():t.mouseClick=!0}),i.addEventListener("focus",function(i){t.recursionBlock||t.edit(e,i,!1)})},Edit.prototype.focusCellNoEvent=function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1},Edit.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},Edit.prototype.focusScrollAdjust=function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,n=e.row.getElement();n.offsetTop;n.offsetTop<t?this.table.rowManager.element.scrollTop-=t-n.offsetTop:n.offsetTop+n.offsetHeight>i&&(this.table.rowManager.element.scrollTop+=n.offsetTop+n.offsetHeight-i);var o=this.table.rowManager.element.scrollLeft,a=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,r=e.getElement();r.offsetLeft;this.table.modExists("frozenColumns")&&(o+=parseInt(this.table.modules.frozenColumns.leftMargin),a-=parseInt(this.table.modules.frozenColumns.rightMargin)),r.offsetLeft<o?this.table.rowManager.element.scrollLeft-=o-r.offsetLeft:r.offsetLeft+r.offsetWidth>a&&(this.table.rowManager.element.scrollLeft+=r.offsetLeft+r.offsetWidth-a)}},Edit.prototype.edit=function(e,t,i){function n(t){if(u.currentCell===e){var i=!0;return e.column.modules.validate&&u.table.modExists("validate")&&"manual"!=u.table.options.validationMode&&(i=u.table.modules.validate.validate(e.column.modules.validate,e,t)),!0===i||"highlight"===u.table.options.validationMode?(u.clearEditor(),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==u.editedCells.indexOf(e)&&u.editedCells.push(e),e.setValue(t,!0),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e),!0===i||(m.classList.add("tabulator-validation-fail"),u.table.options.validationFailed.call(u.table,e.getComponent(),t,i),!1)):(u.invalidEdit=!0,m.classList.add("tabulator-validation-fail"),u.focusCellNoEvent(e,!0),c(),u.table.options.validationFailed.call(u.table,e.getComponent(),t,i),!1)}}function o(){u.currentCell===e&&(u.cancelEdit(),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e))}function a(e){c=e}var r,l,s,u=this,d=!0,c=function(){},m=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,m.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":d=e.column.modules.edit.check(e.getComponent());break;case"boolean":d=e.column.modules.edit.check}if(d||i){if(u.cancelEdit(),u.currentCell=e,this.focusScrollAdjust(e),l=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,l)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,l),u.table.options.cellEditing.call(this.table,l),s="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(l):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(u,l,a,n,o,s)))return m.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),m.blur(),!1;for(m.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");m.firstChild;)m.removeChild(m.firstChild);m.appendChild(r),c();for(var f=m.children,p=0;p<f.length;p++)f[p].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,m.blur(),!1},Edit.prototype.maskInput=function(e,t){function i(t){var l=n[t];void 0!==l&&l!==r&&l!==o&&l!==a&&(e.value=e.value+""+l,i(t+1))}var n=t.mask,o=void 0!==t.maskLetterChar?t.maskLetterChar:"A",a=void 0!==t.maskNumberChar?t.maskNumberChar:"9",r=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*",l=!1;e.addEventListener("keydown",function(t){var i=e.value.length,s=t.key;if(t.keyCode>46){if(i>=n.length)return t.preventDefault(),t.stopPropagation(),l=!1,!1;switch(n[i]){case o:if(s.toUpperCase()==s.toLowerCase())return t.preventDefault(),t.stopPropagation(),l=!1,!1;break;case a:if(isNaN(s))return t.preventDefault(),t.stopPropagation(),l=!1,!1;break;case r:break;default:if(s!==n[i])return t.preventDefault(),t.stopPropagation(),l=!1,!1}l=!0}}),e.addEventListener("keyup",function(n){n.keyCode>46&&t.maskAutoFill&&i(e.value.length)}),e.placeholder||(e.placeholder=n),t.maskAutoFill&&i(e.value.length)},Edit.prototype.getEditedCells=function(){var e=[];return this.editedCells.forEach(function(t){e.push(t.getComponent())}),e},Edit.prototype.clearEdited=function(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.edit.edited=!1,e.modules.validate&&(e.modules.validate.invalid=!1)),(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1)},Edit.prototype.editors={input:function(e,t,i,n,o){function a(e){(null===r||void 0===r)&&""!==l.value||l.value!==r?i(l.value)&&(r=l.value):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type",o.search?"search":"text"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var s in o.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+o.elementAttributes["+"+s])):l.setAttribute(s,o.elementAttributes[s]);return l.value=void 0!==r?r:"",t(function(){l.focus({preventScroll:!0}),l.style.height="100%"}),l.addEventListener("change",a),l.addEventListener("blur",a),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:a(e);break;case 27:n();break;case 35:case 36:e.stopPropagation()}}),o.mask&&this.table.modules.edit.maskInput(l,o),l},textarea:function(e,t,i,n,o){function a(t){(null===r||void 0===r)&&""!==u.value||u.value!==r?(i(u.value)&&(r=u.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):n()}var r=e.getValue(),l=o.verticalNavigation||"hybrid",s=String(null!==r&&void 0!==r?r:""),u=(s.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),d=0;if(u.style.display="block",u.style.padding="2px",u.style.height="100%",u.style.width="100%",u.style.boxSizing="border-box",u.style.whiteSpace="pre-wrap",u.style.resize="none",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var c in o.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),u.setAttribute(c,u.getAttribute(c)+o.elementAttributes["+"+c])):u.setAttribute(c,o.elementAttributes[c]);return u.value=s,t(function(){u.focus({preventScroll:!0}),u.style.height="100%",u.scrollHeight,u.style.height=u.scrollHeight+"px",e.getRow().normalizeHeight()}),u.addEventListener("change",a),u.addEventListener("blur",a),u.addEventListener("keyup",function(){u.style.height="";var t=u.scrollHeight;u.style.height=t+"px",t!=d&&(d=t,e.getRow().normalizeHeight())}),u.addEventListener("keydown",function(e){switch(e.keyCode){case 27:n();break;case 38:("editor"==l||"hybrid"==l&&u.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==l||"hybrid"==l&&u.selectionStart!==u.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}}),o.mask&&this.table.modules.edit.maskInput(u,o),u},number:function(e,t,i,n,o){function a(){var e=s.value;isNaN(e)||""===e||(e=Number(e)),e!==r?i(e)&&(r=e):n()}var r=e.getValue(),l=o.verticalNavigation||"editor",s=document.createElement("input");if(s.setAttribute("type","number"),void 0!==o.max&&s.setAttribute("max",o.max),void 0!==o.min&&s.setAttribute("min",o.min),void 0!==o.step&&s.setAttribute("step",o.step),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var u in o.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),s.setAttribute(u,s.getAttribute(u)+o.elementAttributes["+"+u])):s.setAttribute(u,o.elementAttributes[u]);s.value=r;var d=function(e){a()};return t(function(){s.removeEventListener("blur",d),s.focus({preventScroll:!0}),s.style.height="100%",s.addEventListener("blur",d)}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 13:a();break;case 27:n();break;case 38:case 40:"editor"==l&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}}),o.mask&&this.table.modules.edit.maskInput(s,o),s},range:function(e,t,i,n,o){function a(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type","range"),void 0!==o.max&&l.setAttribute("max",o.max),void 0!==o.min&&l.setAttribute("min",o.min),void 0!==o.step&&l.setAttribute("step",o.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var s in o.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+o.elementAttributes["+"+s])):l.setAttribute(s,o.elementAttributes[s]);return l.value=r,t(function(){l.focus({preventScroll:!0}),l.style.height="100%"}),l.addEventListener("blur",function(e){a()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:a();break;case 27:n()}}),l},select:function(e,t,i,n,o){function a(t){var i,n={},a=k.table.getData();return i=t?k.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(a.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=o.sortValuesList?"asc"==o.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create select lookup list:",t),n}function r(t,i){function n(e){var e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return i.indexOf(e.value)>-1&&u(e),o.push(e),a.push(e),e}var o=[],a=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1},a.push(t),e.options.forEach(function(e){n(e)})):n(e):(t={label:e,value:e,element:!1},i.indexOf(t.value)>-1&&u(t),o.push(t),a.push(t))});else for(var r in t){var s={label:t[r],value:r,element:!1};i.indexOf(s.value)>-1&&u(s),o.push(s),a.push(s)}N=o,S=a,l()}function l(){for(;P.firstChild;)P.removeChild(P.firstChild);S.forEach(function(t){var i=t.element;if(!i){if(i=document.createElement("div"),t.label=o.listItemFormatter?o.listItemFormatter(t.value,t.label,e,i,t.itemParams):t.label,t.group?(i.classList.add("tabulator-edit-select-list-group"),i.tabIndex=0,i.innerHTML=""===t.label?"&nbsp;":t.label):(i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=""===t.label?"&nbsp;":t.label,i.addEventListener("click",function(){V=!0,setTimeout(function(){V=!1},10),I?(c(t),x.focus()):m(t)}),M.indexOf(t)>-1&&i.classList.add("active")),t.elementAttributes&&"object"==_typeof(t.elementAttributes))for(var n in t.elementAttributes)"+"==n.charAt(0)?(n=n.slice(1),i.setAttribute(n,x.getAttribute(n)+t.elementAttributes["+"+n])):i.setAttribute(n,t.elementAttributes[n]);i.addEventListener("mousedown",function(){O=!1,setTimeout(function(){O=!0},10)}),t.element=i}P.appendChild(i)})}function s(e,t){!I&&T&&T.element&&T.element.classList.remove("active"),T&&T.element&&T.element.classList.remove("focused"),T=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active")),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function u(e){-1==M.indexOf(e)&&(M.push(e),s(e,!0)),p()}function d(e){var t=M[e];e>-1&&(M.splice(e,1),t.element&&t.element.classList.remove("active"))}function c(e){e||(e=T);var t=M.indexOf(e);t>-1?d(t):(!0!==I&&M.length>=I&&d(0),u(e)),p()}function m(e){g(),e||(e=T),e&&(x.value=e.label,i(e.value)),w=x.value}function f(e){e||g();var t=[];M.forEach(function(e){t.push(e.value)}),w=x.value,i(t)}function p(){var e=[];M.forEach(function(t){e.push(t.label)}),x.value=e.join(", "),!1===k.currentCell&&f(!0)}function b(){for(var e=M.length,t=0;t<e;t++)d(0)}function v(){g(),n()}function h(){if(M=[],!P.parentNode){!0===o.values?r(a(),w):"string"==typeof o.values?r(a(o.values),w):r(o.values||[],w);var e=Tabulator.prototype.helpers.elOffset(A);P.style.minWidth=A.offsetWidth+"px",P.style.top=e.top+A.offsetHeight+"px",P.style.left=e.left+"px",P.addEventListener("mousedown",function(e){O=!1,setTimeout(function(){O=!0},10)}),document.body.appendChild(P)}}function g(){P.parentNode&&P.parentNode.removeChild(P),y()}function y(){k.table.rowManager.element.removeEventListener("scroll",v)}var E=this,k=this,A=e.getElement(),C=e.getValue(),L=o.verticalNavigation||"editor",w=void 0!==C||null===C?Array.isArray(C)?C:[C]:void 0!==o.defaultValue?o.defaultValue:[],x=document.createElement("input"),P=document.createElement("div"),I=o.multiselect,N=[],T={},S=[],M=[],O=!0,V=!1;if((Array.isArray(o)||!Array.isArray(o)&&"object"===(void 0===o?"undefined":_typeof(o))&&!o.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),o={values:o}),x.setAttribute("type","text"),x.style.padding="4px",x.style.width="100%",x.style.boxSizing="border-box",x.style.cursor="default",x.readOnly=0!=this.currentCell,o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var j in o.elementAttributes)"+"==j.charAt(0)?(j=j.slice(1),x.setAttribute(j,x.getAttribute(j)+o.elementAttributes["+"+j])):x.setAttribute(j,o.elementAttributes[j]);return x.value=void 0!==C||null===C?C:"",x.addEventListener("search",function(e){x.value||(b(),f())}),x.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=N.indexOf(T),("editor"==L||"hybrid"==L&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&s(N[t-1],!I));break;case 40:t=N.indexOf(T),("editor"==L||"hybrid"==L&&t<N.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<N.length-1&&(-1==t?s(N[0],!I):s(N[t+1],!I)));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:I?c():m();break;case 27:v();break;case 9:break;default:!1===k.currentCell&&e.preventDefault()}}),x.addEventListener("blur",function(e){O&&(I?f():v())}),x.addEventListener("focus",function(e){V||h()}),P=document.createElement("div"),P.classList.add("tabulator-edit-select-list"),t(function(){x.style.height="100%",x.focus({preventScroll:!0})}),setTimeout(function(){E.table.rowManager.element.addEventListener("scroll",v)},10),x},autocomplete:function(e,t,i,n,o){function a(){!0===o.values?T=r():"string"==typeof o.values&&(T=r(o.values))}function r(t){var i,n={},a=E.table.getData();return i=t?E.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(a.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=o.sortValuesList?"asc"==o.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create autocomplete lookup list:",t),n}function l(e,t){var i,n,a=[];i=T||(o.values||[]),o.searchFunc?(a=o.searchFunc(e,i),a instanceof Promise?(s(void 0!==o.searchingPlaceholder?o.searchingPlaceholder:"Searching..."),a.then(function(e){c(u(e),t)}).catch(function(e){console.err("error in autocomplete search promise:",e)})):c(u(a),t)):(n=u(i),""===e?o.showListOnEmpty&&(a=n):n.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&a.push(t)}),c(a,t))}function s(e){var t=document.createElement("div");d(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,x.appendChild(t))}function u(e){var t=[];if(Array.isArray(e))e.forEach(function(e){var i={};"object"===(void 0===e?"undefined":_typeof(e))?(i.title=o.listItemFormatter?o.listItemFormatter(e.value,e.label):e.label,i.value=e.value):(i.title=o.listItemFormatter?o.listItemFormatter(e,e):e,i.value=e),t.push(i)});else for(var i in e){var n={title:o.listItemFormatter?o.listItemFormatter(i,e[i]):e[i],value:i};t.push(n)}return t}function d(){for(;x.firstChild;)x.removeChild(x.firstChild)}function c(e,t){e.length?m(e,t):o.emptyPlaceholder&&s(o.emptyPlaceholder)}function m(e,t){var i=!1;d(),P=e,P.forEach(function(e){var n=e.element;n||(n=document.createElement("div"),n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=e.title,n.addEventListener("click",function(t){b(e),f()}),n.addEventListener("mousedown",function(e){N=!1,setTimeout(function(){N=!0},10)}),e.element=n,t&&e.value==A&&(w.value=e.title,e.element.classList.add("active"),i=!0),e===I&&(e.element.classList.add("active"),i=!0)),x.appendChild(n)}),i||b(!1)}function f(){v(),I?A!==I.value?(A=I.value,w.value=I.title,i(I.value)):n():o.freetext?(A=w.value,i(w.value)):o.allowEmpty&&""===w.value?(A=w.value,i(w.value)):n()}function p(){if(!x.parentNode){for(;x.firstChild;)x.removeChild(x.firstChild);var e=Tabulator.prototype.helpers.elOffset(k);x.style.minWidth=k.offsetWidth+"px",x.style.top=e.top+k.offsetHeight+"px",x.style.left=e.left+"px",document.body.appendChild(x)}}function b(e,t){I&&I.element&&I.element.classList.remove("active"),I=e,e&&e.element&&e.element.classList.add("active"),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function v(){x.parentNode&&x.parentNode.removeChild(x),g()}function h(){v(),n()}function g(){E.table.rowManager.element.removeEventListener("scroll",h)}var y=this,E=this,k=e.getElement(),A=e.getValue(),C=o.verticalNavigation||"editor",L=void 0!==A||null===A?A:void 0!==o.defaultValue?o.defaultValue:"",w=document.createElement("input"),x=document.createElement("div"),P=[],I=!1,N=!0,T=!1;if(w.setAttribute("type","search"),w.style.padding="4px",w.style.width="100%",w.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var S in o.elementAttributes)"+"==S.charAt(0)?(S=S.slice(1),w.setAttribute(S,w.getAttribute(S)+o.elementAttributes["+"+S])):w.setAttribute(S,o.elementAttributes[S]);return x.classList.add("tabulator-edit-select-list"),x.addEventListener("mousedown",function(e){N=!1,setTimeout(function(){N=!0},10)}),w.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=P.indexOf(I),("editor"==C||"hybrid"==C&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),b(t>0?P[t-1]:!1));break;case 40:t=P.indexOf(I),("editor"==C||"hybrid"==C&&t<P.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<P.length-1&&b(-1==t?P[0]:P[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation();break;case 13:f();break;case 27:h();break;case 36:case 35:e.stopImmediatePropagation()}}),w.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:l(w.value)}}),w.addEventListener("search",function(e){l(w.value)}),w.addEventListener("blur",function(e){N&&f()}),w.addEventListener("focus",function(e){var t=L;a(),p(),w.value=t,l(t,!0)}),t(function(){w.style.height="100%",w.focus({preventScroll:!0})}),o.mask&&this.table.modules.edit.maskInput(w,o),setTimeout(function(){y.table.rowManager.element.addEventListener("scroll",h)},10),a(),w.value=L,l(L,!0),w},star:function(e,t,i,n,o){function a(e){m.forEach(function(t,i){i<e?("ie"==l.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==l.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){u=e,a(e)}var l=this,s=e.getElement(),u=e.getValue(),d=s.getElementsByTagName("svg").length||5,c=s.getElementsByTagName("svg")[0]?s.getElementsByTagName("svg")[0].getAttribute("width"):14,m=[],f=document.createElement("div"),p=document.createElementNS("http://www.w3.org/2000/svg","svg");if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",f.style.verticalAlign="middle",f.style.display="inline-block",f.style.padding="4px",p.setAttribute("width",c),p.setAttribute("height",c),p.setAttribute("viewBox","0 0 512 512"),p.setAttribute("xml:space","preserve"),p.style.padding="0 1px",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var b in o.elementAttributes)"+"==b.charAt(0)?(b=b.slice(1),f.setAttribute(b,f.getAttribute(b)+o.elementAttributes["+"+b])):f.setAttribute(b,o.elementAttributes[b]);for(var v=1;v<=d;v++)!function(e){var t=document.createElement("span"),n=p.cloneNode(!0);m.push(n),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),a(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e),s.blur()}),t.appendChild(n),f.appendChild(t)}(v);return u=Math.min(parseInt(u),d),a(u),f.addEventListener("mousemove",function(e){a(0)}),f.addEventListener("click",function(e){i(0)}),s.addEventListener("blur",function(e){n()}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(u+1);break;case 37:r(u-1);break;case 13:i(u);break;case 27:n()}}),f},progress:function(e,t,i,n,o){function a(){var e=c*Math.round(p.offsetWidth/(s.clientWidth/100))+d;i(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",m)}var r,l,s=e.getElement(),u=void 0===o.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:o.max,d=void 0===o.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:o.min,c=(u-d)/100,m=e.getValue()||0,f=document.createElement("div"),p=document.createElement("div");if(f.style.position="absolute",f.style.right="0",f.style.top="0",f.style.bottom="0",f.style.width="5px",f.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var b in o.elementAttributes)"+"==b.charAt(0)?(b=b.slice(1),p.setAttribute(b,p.getAttribute(b)+o.elementAttributes["+"+b])):p.setAttribute(b,o.elementAttributes[b]);return s.style.padding="4px 4px",m=Math.min(parseFloat(m),u),m=Math.max(parseFloat(m),d),m=Math.round((m-d)/c),p.style.width=m+"%",s.setAttribute("aria-valuemin",d),s.setAttribute("aria-valuemax",u),p.appendChild(f),f.addEventListener("mousedown",function(e){r=e.screenX,l=p.offsetWidth}),f.addEventListener("mouseover",function(){f.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){r&&(p.style.width=l+e.screenX-r+"px")}),s.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,l=!1,a())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+s.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-s.clientWidth/100+"px";break;case 9:case 13:a();break;case 27:n()}}),s.addEventListener("blur",function(){n()}),p},tickCross:function(e,t,i,n,o){function a(e){return s?e?d?u:l.checked:l.checked&&!d?(l.checked=!1,l.indeterminate=!0,d=!0,u):(d=!1,l.checked):l.checked}var r=e.getValue(),l=document.createElement("input"),s=o.tristate,u=void 0===o.indeterminateValue?null:o.indeterminateValue,d=!1;if(l.setAttribute("type","checkbox"),l.style.marginTop="5px",l.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var c in o.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+o.elementAttributes["+"+c])):l.setAttribute(c,o.elementAttributes[c]);return l.value=r,!s||void 0!==r&&r!==u&&""!==r||(d=!0,l.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){l.focus({preventScroll:!0})}),l.checked=!0===r||"true"===r||"True"===r||1===r,t(function(){l.focus()}),l.addEventListener("change",function(e){i(a())}),l.addEventListener("blur",function(e){i(a(!0))}),l.addEventListener("keydown",function(e){13==e.keyCode&&i(a()),27==e.keyCode&&n()}),l}},Tabulator.prototype.registerModule("edit",Edit);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/export.min.js b/website/js/vendor/tabulator/js/modules/export.min.js
deleted file mode 100644 (file)
index 785982a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ExportRow=function(t,e,o,n){this.type=t,this.columns=e,this.component=o||!1,this.indent=n||0},ExportColumn=function(t,e,o,n,r){this.value=t,this.component=e||!1,this.width=o,this.height=n,this.depth=r},Export=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};Export.prototype.generateExportList=function(t,e,o,n){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=n;var r=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],a=this.bodyToExportRows(this.rowLookup(o));return r.concat(a)},Export.prototype.genereateTable=function(t,e,o,n){var r=this.generateExportList(t,e,o,n);return this.genereateTableElement(r)},Export.prototype.rowLookup=function(t){var e=this,o=[];if("function"==typeof t)t.call(this.table).forEach(function(t){(t=e.table.rowManager.findRow(t))&&o.push(t)});else switch(t){case!0:case"visible":o=this.table.rowManager.getVisibleRows(!0);break;case"all":o=this.table.rowManager.rows;break;case"selected":o=this.table.modules.selectRow.selectedRows;break;case"active":default:o=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],o)},Export.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var n=t.processColumnGroup(o);n&&e.push(n)}),e},Export.prototype.processColumnGroup=function(t){var e=this,o=t.columns,n=0,r=t.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||t.definition.title,a={title:r,column:t,depth:1};if(o.length){if(a.subGroups=[],a.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(a.width+=o.width,a.subGroups.push(o),o.depth>n&&(n=o.depth))}),a.depth+=n,!a.width)return!1}else{if(!this.columnVisCheck(t))return!1;a.width=1}return a},Export.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},Export.prototype.headersToExportRows=function(t){function e(t,r){var a=n-r;if(void 0===o[r]&&(o[r]=[]),t.height=t.subGroups?1:a-t.depth+1,o[r].push(t),t.height>1)for(var l=1;l<t.height;l++)void 0===o[r+l]&&(o[r+l]=[]),o[r+l].push(!1);if(t.width>1)for(var i=1;i<t.width;i++)o[r].push(!1);t.subGroups&&t.subGroups.forEach(function(t){e(t,r+1)})}var o=[],n=0,r=[];return t.forEach(function(t){t.depth>n&&(n=t.depth)}),t.forEach(function(t){e(t,0)}),o.forEach(function(t){var e=[];t.forEach(function(t){t?e.push(new ExportColumn(t.title,t.column.getComponent(),t.width,t.height,t.depth)):e.push(null)}),r.push(new ExportRow("header",e))}),r},Export.prototype.bodyToExportRows=function(t){var e=this,o=[],n=[];return this.table.columnManager.columnsByIndex.forEach(function(t){e.columnVisCheck(t)&&o.push(t.getComponent())}),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&t.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&t.push(this.table.modules.columnCalcs.botRow)),t=t.filter(function(t){switch(t.type){case"group":return!1!==e.config.rowGroups;case"calc":return!1!==e.config.columnCalcs;case"row":return!(e.table.options.dataTree&&!1===e.config.dataTree&&t.modules.dataTree.parent)}return!0}),t.forEach(function(t,r){var a=t.getData(e.colVisProp),l=[],i=0;switch(t.type){case"group":i=t.level,l.push(new ExportColumn(t.key,t.getComponent(),o.length,1));break;case"calc":case"row":o.forEach(function(t){l.push(new ExportColumn(t._column.getFieldValue(a),t,1,1))}),e.table.options.dataTree&&!1!==e.config.dataTree&&(i=t.modules.dataTree.index)}n.push(new ExportRow(t.type,l,t.getComponent(),i))}),n},Export.prototype.genereateTableElement=function(t){var e=this,o=document.createElement("table"),n=document.createElement("thead"),r=document.createElement("tbody"),a=this.lookupTableStyles(),l=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],i={};return i.rowFormatter=null!==l?l:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(i.treeElementField=this.table.modules.dataTree.elementField),i.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],i.groupHeader&&!Array.isArray(i.groupHeader)&&(i.groupHeader=[i.groupHeader]),o.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),n,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),t.forEach(function(t,o){switch(t.type){case"header":n.appendChild(e.genereateHeaderElement(t,i,a));break;case"group":r.appendChild(e.genereateGroupElement(t,i,a));break;case"calc":r.appendChild(e.genereateCalcElement(t,i,a));break;case"row":var l=e.genereateRowElement(t,i,a);e.mapElementStyles(o%2&&a.evenRow?a.evenRow:a.oddRow,l,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),r.appendChild(l)}}),n.innerHTML&&o.appendChild(n),o.appendChild(r),this.mapElementStyles(this.table.element,o,["border-top","border-left","border-right","border-bottom"]),o},Export.prototype.lookupTableStyles=function(){var t={};return this.cloneTableStyle&&window.getComputedStyle&&(t.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),t.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),t.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),t.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),t.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],t.firstRow&&(t.styleCells=t.firstRow.getElementsByClassName("tabulator-cell"),t.firstCell=t.styleCells[0],t.lastCell=t.styleCells[t.styleCells.length-1])),t},Export.prototype.genereateHeaderElement=function(t,e,o){var n=this,r=document.createElement("tr");return t.columns.forEach(function(t){if(t){var e=document.createElement("th"),o=t.component._column.definition.cssClass?t.component._column.definition.cssClass.split(" "):[];e.colSpan=t.width,e.rowSpan=t.height,e.innerHTML=t.value,n.cloneTableStyle&&(e.style.boxSizing="border-box"),o.forEach(function(t){e.classList.add(t)}),n.mapElementStyles(t.component.getElement(),e,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),n.mapElementStyles(t.component._column.contentElement,e,["padding-top","padding-left","padding-right","padding-bottom"]),t.component._column.visible?n.mapElementStyles(t.component.getElement(),e,["width"]):t.component._column.definition.width&&(e.style.width=t.component._column.definition.width+"px"),t.component._column.parent&&n.mapElementStyles(t.component._column.parent.groupElement,e,["border-top"]),r.appendChild(e)}}),r},Export.prototype.genereateGroupElement=function(t,e,o){var n=document.createElement("tr"),r=document.createElement("td"),a=t.columns[0];return n.classList.add("tabulator-print-table-row"),e.groupHeader&&e.groupHeader[t.indent]?a.value=e.groupHeader[t.indent](a.value,t.component._group.getRowCount(),t.component._group.getData(),t.component):!1===e.groupHeader?a.value=a.value:a.value=t.component._group.generator(a.value,t.component._group.getRowCount(),t.component._group.getData(),t.component),r.colSpan=a.width,r.innerHTML=a.value,n.classList.add("tabulator-print-table-group"),n.classList.add("tabulator-group-level-"+t.indent),a.component.isVisible()&&n.classList.add("tabulator-group-visible"),this.mapElementStyles(o.firstGroup,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(o.firstGroup,r,["padding-top","padding-left","padding-right","padding-bottom"]),n.appendChild(r),n},Export.prototype.genereateCalcElement=function(t,e,o){var n=this.genereateRowElement(t,e,o);return n.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(o.calcRow,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n},Export.prototype.genereateRowElement=function(t,e,o){var n=this,r=document.createElement("tr");return r.classList.add("tabulator-print-table-row"),t.columns.forEach(function(a){if(a){var l=document.createElement("td"),s=a.component._column,p=a.value,c={modules:{},getValue:function(){return p},getField:function(){return s.definition.field},getElement:function(){return l},getColumn:function(){return s.getComponent()},getData:function(){return t.component.getData()},getRow:function(){return t.component},getComponent:function(){return c},column:s};if((s.definition.cssClass?s.definition.cssClass.split(" "):[]).forEach(function(t){l.classList.add(t)}),n.table.modExists("format")&&!1!==n.config.formatCells)p=n.table.modules.format.formatExportValue(c,n.colVisProp);else switch(void 0===p?"undefined":_typeof(p)){case"object":p=JSON.stringify(p);break;case"undefined":case"null":p="";break;default:p=p}p instanceof Node?l.appendChild(p):l.innerHTML=p,o.firstCell&&(n.mapElementStyles(o.firstCell,l,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),s.definition.align&&(l.style.textAlign=s.definition.align)),n.table.options.dataTree&&!1!==n.config.dataTree&&(e.treeElementField&&e.treeElementField==s.field||!e.treeElementField&&0==i)&&(t.component._row.modules.dataTree.controlEl&&l.insertBefore(t.component._row.modules.dataTree.controlEl.cloneNode(!0),l.firstChild),t.component._row.modules.dataTree.branchEl&&l.insertBefore(t.component._row.modules.dataTree.branchEl.cloneNode(!0),l.firstChild)),r.appendChild(l),c.modules.format&&c.modules.format.renderedCallback&&c.modules.format.renderedCallback(),e.rowFormatter&&!1!==n.config.formatCells&&e.rowFormatter(t.component)}}),r},Export.prototype.genereateHTMLTable=function(t){var e=document.createElement("div");return e.appendChild(this.genereateTableElement(t)),e.innerHTML},Export.prototype.getHtml=function(t,e,o,n){var r=this.generateExportList(o||this.table.options.htmlOutputConfig,e,t,n||"htmlOutput");return this.genereateHTMLTable(r)},Export.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){var n={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var r=window.getComputedStyle(t);o.forEach(function(t){e.style[n[t]]=r.getPropertyValue(t)})}}},Tabulator.prototype.registerModule("export",Export);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/format.min.js b/website/js/vendor/tabulator/js/modules/format.min.js
deleted file mode 100644 (file)
index 9616969..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Format=function(e){this.table=e};Format.prototype.initializeColumn=function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))},Format.prototype.lookupFormatter=function(e,t){var o={params:e.definition["formatter"+t+"Params"]||{}},r=e.definition["formatter"+t];switch(void 0===r?"undefined":_typeof(r)){case"string":"tick"===r&&(r="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[r]?o.formatter=this.formatters[r]:(console.warn("Formatter Error - No such formatter found: ",r),o.formatter=this.formatters.plaintext);break;case"function":o.formatter=r;break;default:o.formatter=this.formatters.plaintext}return o},Format.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)},Format.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}var o=e.getComponent(),r="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,r,t)},Format.prototype.formatExportValue=function(e,t){var o,r=e.column.modules.format[t];if(r){var a=function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1};return o="function"==typeof r.params?r.params(component):r.params,r.formatter.call(this,e.getComponent(),o,a)}return this.formatValue(e)},Format.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},Format.prototype.emptyToSpace=function(e){return null===e||void 0===e||""===e?"&nbsp;":e},Format.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},Format.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var r,a,n,l,i=parseFloat(e.getValue()),s=t.decimal||".",c=t.thousand||",",d=t.symbol||"",u=!!t.symbolAfter,m=void 0!==t.precision?t.precision:2;if(isNaN(i))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(r=!1!==m?i.toFixed(m):i,r=String(r).split("."),a=r[0],n=r.length>1?s+r[1]:"",l=/(\d+)(\d{3})/;l.test(a);)a=a.replace(l,"$1"+c+"$2");return u?a+n+d:d+a+n},link:function(e,t,o){var r,a=e.getValue(),n=t.urlPrefix||"",l=t.download,i=a,s=document.createElement("a");if(t.labelField&&(r=e.getData(),i=r[t.labelField]),t.label)switch(_typeof(t.label)){case"string":i=t.label;break;case"function":i=t.label(e)}if(i){if(t.urlField&&(r=e.getData(),a=r[t.urlField]),t.url)switch(_typeof(t.url)){case"string":a=t.url;break;case"function":a=t.url(e)}return s.setAttribute("href",n+a),t.target&&s.setAttribute("target",t.target),t.download&&(l="function"==typeof l?l(e):!0===l?"":l,s.setAttribute("download",l)),s.innerHTML=this.emptyToSpace(this.sanitizeHTML(i)),s}return"&nbsp;"},image:function(e,t,o){var r=document.createElement("img");switch(r.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":r.style.height=t.height+"px";break;case"string":r.style.height=t.height}switch(_typeof(t.width)){case"number":r.style.width=t.width+"px";break;case"string":r.style.width=t.width}return r.addEventListener("load",function(){e.getRow().normalizeHeight()}),r},tickCross:function(e,t,o){var r=e.getValue(),a=e.getElement(),n=t.allowEmpty,l=t.allowTruthy,i=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',s=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return l&&r||!0===r||"true"===r||"True"===r||1===r||"1"===r?(a.setAttribute("aria-checked",!0),i||""):!n||"null"!==r&&""!==r&&null!==r&&void 0!==r?(a.setAttribute("aria-checked",!1),s||""):(a.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=t.outputFormat||"DD/MM/YYYY hh:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",l=e.getValue(),i=moment(l,r);return i.isValid()?t.timezone?i.tz(t.timezone).format(a):i.format(a):!0===n?l:"function"==typeof n?n(l):n},datetimediff:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",n=void 0!==t.suffix&&t.suffix,l=void 0!==t.unit?t.unit:void 0,i=void 0!==t.humanize&&t.humanize,s=void 0!==t.date?t.date:moment(),c=e.getValue(),d=moment(c,r);return d.isValid()?i?moment.duration(d.diff(s)).humanize(n):d.diff(s,l)+(n?" "+n:""):!0===a?c:"function"==typeof a?a(c):a},lookup:function(e,t,o){var r=e.getValue();return void 0===t[r]?(console.warn("Missing display value for "+r),r):t[r]},star:function(e,t,o){var r=e.getValue(),a=e.getElement(),n=t&&t.stars?t.stars:5,l=document.createElement("span"),i=document.createElementNS("http://www.w3.org/2000/svg","svg");l.style.verticalAlign="middle",i.setAttribute("width","14"),i.setAttribute("height","14"),i.setAttribute("viewBox","0 0 512 512"),i.setAttribute("xml:space","preserve"),i.style.padding="0 1px",r=r&&!isNaN(r)?parseInt(r):0,r=Math.max(0,Math.min(r,n));for(var s=1;s<=n;s++){var c=i.cloneNode(!0);c.innerHTML=s<=r?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',l.appendChild(c)}return a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",a.setAttribute("aria-label",r),l},traffic:function(e,t,o){var r,a,n=this.sanitizeHTML(e.getValue())||0,l=document.createElement("span"),i=t&&t.max?t.max:100,s=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(l.classList.add("tabulator-traffic-light"),a=parseFloat(n)<=i?parseFloat(n):i,a=parseFloat(a)>=s?parseFloat(a):s,r=(i-s)/100,a=Math.round((a-s)/r),void 0===c?"undefined":_typeof(c)){case"string":d=c;break;case"function":d=c(n);break;case"object":if(Array.isArray(c)){var u=100/c.length,m=Math.floor(a/u);m=Math.min(m,c.length-1),m=Math.max(m,0),d=c[m];break}}return l.style.backgroundColor=d,l}},progress:function(e,t,o){var r,a,n,l,i,s=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),d=t&&t.max?t.max:100,u=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(a=parseFloat(s)<=d?parseFloat(s):d,a=parseFloat(a)>=u?parseFloat(a):u,r=(d-u)/100,a=Math.round((a-u)/r),_typeof(t.color)){case"string":n=t.color;break;case"function":n=t.color(s);break;case"object":if(Array.isArray(t.color)){var f=100/t.color.length,p=Math.floor(a/f);p=Math.min(p,t.color.length-1),p=Math.max(p,0),n=t.color[p];break}default:n="#2DC214"}switch(_typeof(t.legend)){case"string":l=t.legend;break;case"function":l=t.legend(s);break;case"boolean":l=s;break;default:l=!1}switch(_typeof(t.legendColor)){case"string":i=t.legendColor;break;case"function":i=t.legendColor(s);break;case"object":if(Array.isArray(t.legendColor)){var f=100/t.legendColor.length,p=Math.floor(a/f);p=Math.min(p,t.legendColor.length-1),p=Math.max(p,0),i=t.legendColor[p]}break;default:i="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a);var h=document.createElement("div");if(h.style.display="inline-block",h.style.position="relative",h.style.width=a+"%",h.style.backgroundColor=n,h.style.height="100%",h.setAttribute("data-max",d),h.setAttribute("data-min",u),l){var g=document.createElement("div");g.style.position="absolute",g.style.top="4px",g.style.left=0,g.style.textAlign=m,g.style.width="100%",g.style.color=i,g.innerHTML=l}return o(function(){if(!(e instanceof CellComponent)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",c.appendChild(t),c=t}c.appendChild(h),l&&c.appendChild(g)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function r(e){var t=n.element;n.open=e,t&&(n.open?(a.classList.add("open"),t.style.display=""):(a.classList.remove("open"),t.style.display="none"))}var a=document.createElement("div"),n=e.getRow()._row.modules.responsiveLayout;return a.classList.add("tabulator-responsive-collapse-toggle"),a.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),a.addEventListener("click",function(e){e.stopImmediatePropagation(),r(!n.open)}),r(n.open),a},rowSelection:function(e,t,o){var r=this,a=document.createElement("input");if(a.type="checkbox",this.table.modExists("selectRow",!0))if(a.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var n=e.getRow();n instanceof RowComponent?(a.addEventListener("change",function(e){n.toggleSelect()}),a.checked=n.isSelected&&n.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(n,a)):a=""}else a.addEventListener("change",function(e){r.table.modules.selectRow.selectedRows.length?r.table.deselectRow():r.table.selectRow(t.rowRange)}),this.table.modules.selectRow.registerHeaderSelectCheckbox(a);return a}},Tabulator.prototype.registerModule("format",Format);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/group_rows.min.js b/website/js/vendor/tabulator/js/modules/group_rows.min.js
deleted file mode 100644 (file)
index f1b6996..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var GroupComponent=function(t){this._group=t,this.type="GroupComponent"};GroupComponent.prototype.getKey=function(){return this._group.key},GroupComponent.prototype.getField=function(){return this._group.field},GroupComponent.prototype.getElement=function(){return this._group.element},GroupComponent.prototype.getRows=function(){return this._group.getRows(!0)},GroupComponent.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},GroupComponent.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},GroupComponent.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._group.visible},GroupComponent.prototype.isVisible=function(){return this._group.visible},GroupComponent.prototype.show=function(){this._group.show()},GroupComponent.prototype.hide=function(){this._group.hide()},GroupComponent.prototype.toggle=function(){this._group.toggleVisibility()},GroupComponent.prototype._getSelf=function(){return this._group},GroupComponent.prototype.getTable=function(){return this._group.groupManager.table};var Group=function(t,o,e,r,i,s,n){this.groupManager=t,this.parent=o,this.key=r,this.level=e,this.field=i,this.hasSubGroups=e<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=n,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=n?n.visible:void 0!==t.startOpen[e]?t.startOpen[e]:t.startOpen[0],this.component=null,this.createElements(),this.addBindings(),this.createValueGroups()};Group.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},Group.prototype.createElements=function(){var t=document.createElement("div");t.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(t),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},Group.prototype.createValueGroups=function(){var t=this,o=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]&&this.groupManager.allowedValues[o].forEach(function(e){t._createGroup(e,o)})},Group.prototype.addBindings=function(){var t,o,e,r,i=this;i.groupManager.table.options.groupClick&&i.element.addEventListener("click",function(t){i.groupManager.table.options.groupClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupDblClick&&i.element.addEventListener("dblclick",function(t){i.groupManager.table.options.groupDblClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupContext&&i.element.addEventListener("contextmenu",function(t){i.groupManager.table.options.groupContext.call(i.groupManager.table,t,i.getComponent())}),(i.groupManager.table.options.groupContextMenu||i.groupManager.table.options.groupClickMenu)&&i.groupManager.table.modExists("menu")&&i.groupManager.table.modules.menu.initializeGroup.call(i.groupManager.table.modules.menu,i),i.groupManager.table.options.groupTap&&(e=!1,i.element.addEventListener("touchstart",function(t){e=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){e&&i.groupManager.table.options.groupTap(t,i.getComponent()),e=!1})),i.groupManager.table.options.groupDblTap&&(t=null,i.element.addEventListener("touchend",function(o){t?(clearTimeout(t),t=null,i.groupManager.table.options.groupDblTap(o,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.groupManager.table.options.groupTapHold&&(o=null,i.element.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,e=!1,i.groupManager.table.options.groupTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(o),o=null})),i.groupManager.table.options.groupToggleElement&&(r="arrow"==i.groupManager.table.options.groupToggleElement?i.arrowElement:i.element,r.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i.toggleVisibility()}))},Group.prototype._createGroup=function(t,o){var e=o+"_"+t,r=new Group(this.groupManager,this,o,t,this.groupManager.groupIDLookups[o].field,this.groupManager.headerGenerator[o]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[e]);this.groups[e]=r,this.groupList.push(r)},Group.prototype._addRowToGroup=function(t){var o=this.level+1;if(this.hasSubGroups){var e=this.groupManager.groupIDLookups[o].func(t.getData()),r=o+"_"+e;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]?this.groups[r]&&this.groups[r].addRow(t):(this.groups[r]||this._createGroup(e,o),this.groups[r].addRow(t))}},Group.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},Group.prototype.insertRow=function(t,o,e){var r=this.conformRowData({});t.updateData(r);var i=this.rows.indexOf(o);i>-1?e?this.rows.splice(i+1,0,t):this.rows.splice(i,0,t):e?this.rows.push(t):this.rows.unshift(t),t.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},Group.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(o){o.scrollHeader(t)})},Group.prototype.getRowIndex=function(t){},Group.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},Group.prototype.removeRow=function(t){var o=this.rows.indexOf(t),e=t.getElement();o>-1&&this.rows.splice(o,1),this.groupManager.table.options.groupValues||this.rows.length?(e.parentNode&&e.parentNode.removeChild(e),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},Group.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],o=this.groupList.indexOf(t),o>-1&&this.groupList.splice(o,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},Group.prototype.getHeadersAndRows=function(t){var o=[];return o.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows(t))}):(!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top)),o=o.concat(this.rows),!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top))),!t&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom)))),o},Group.prototype.getData=function(t,o){var e=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){e.push(t.getData(o||"data"))}),e},Group.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(o){t+=o.getRowCount()}):t=this.rows.length,t},Group.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},Group.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var o=t.getElement();o.parentNode.removeChild(o)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},Group.prototype.show=function(){var t=this;if(t.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var o=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e})}):t.rows.forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},Group.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(o){t.push(o.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},Group.prototype.getRowGroup=function(t){var o=!1;return this.groupList.length?this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}):this.rows.find(function(o){return o===t})&&(o=this),o},Group.prototype.getSubGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.getRows=function(t){var o=[];return this.rows.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(o){t.push(o.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},Group.prototype.getPath=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return t.unshift(this.key),this.parent&&this.parent.getPath(t),t},Group.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},Group.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Group.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},Group.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},Group.prototype.reinitialize=function(){this.initialized=!1,this.height=0,Tabulator.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},Group.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},Group.prototype.getHeight=function(){return this.outerHeight},Group.prototype.getGroup=function(){return this},Group.prototype.reinitializeHeight=function(){},Group.prototype.calcHeight=function(){},Group.prototype.setCellHeight=function(){},Group.prototype.clearCellHeight=function(){},Group.prototype.getComponent=function(){return this.component||(this.component=new GroupComponent(this)),this.component};var GroupRows=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};GroupRows.prototype.initialize=function(){var t=this,o=t.table.options.groupBy,e=t.table.options.groupStartOpen,r=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(o)&&Array.isArray(r)&&o.length>r.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(o,e){t.headerGenerator[0]=function(t,r,i){return(void 0===t?"":t)+"<span>("+r+" "+(1===r?o:e.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(o)||o)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var i=this.table.columnManager.getRealColumns();i.forEach(function(o){o.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),o.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(o)||(o=[o]),o.forEach(function(o,e){var r,i;"function"==typeof o?r=o:(i=t.table.columnManager.getColumnByField(o),r=i?function(t){return i.getFieldValue(t)}:function(t){return t[o]}),t.groupIDLookups.push({field:"function"!=typeof o&&o,func:r,values:!!t.allowedValues&&t.allowedValues[e]})}),e&&(Array.isArray(e)||(e=[e]),e.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=e),r&&(t.headerGenerator=Array.isArray(r)?r:[r]),this.initialized=!0},GroupRows.prototype.setDisplayIndex=function(t){this.displayIndex=t},GroupRows.prototype.getDisplayIndex=function(){return this.displayIndex},GroupRows.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},GroupRows.prototype.getGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},GroupRows.prototype.getChildGroups=function(t){var o=this,e=[];return t||(t=this),t.groupList.forEach(function(t){t.groupList.length?e=e.concat(o.getChildGroups(t)):e.push(t)}),e},GroupRows.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},GroupRows.prototype.pullGroupListData=function(t){var o=this,e=[];return t.forEach(function(t){var r={};r.level=0,r.rowCount=0,r.headerContent="";var i=[];t.hasSubGroups?(i=o.pullGroupListData(t.groupList),r.level=t.level,r.rowCount=i.length-t.groupList.length,r.headerContent=t.generator(t.key,r.rowCount,t.rows,t),e.push(r),e=e.concat(i)):(r.level=t.level,r.headerContent=t.generator(t.key,t.rows.length,t.rows,t),r.rowCount=t.getRows().length,e.push(r),t.getRows().forEach(function(t){e.push(t.getData("data"))}))}),e},GroupRows.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},GroupRows.prototype.getRowGroup=function(t){var o=!1;return this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}),o},GroupRows.prototype.countGroups=function(){return this.groupList.length},GroupRows.prototype.generateGroups=function(t){var o=this,e=o.groups;o.groups={},o.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){o.createGroup(t,0,e)}),t.forEach(function(t){o.assignRowToExistingGroup(t,e)})):t.forEach(function(t){o.assignRowToGroup(t,e)})},GroupRows.prototype.createGroup=function(t,o,e){var r,i=o+"_"+t;e=e||[],r=new Group(this,!1,o,t,this.groupIDLookups[0].field,this.headerGenerator[0],e[i]),this.groups[i]=r,this.groupList.push(r)},GroupRows.prototype.assignRowToExistingGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]&&this.groups[r].addRow(t)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r=!this.groups["0_"+e];return r&&this.createGroup(e,0,o),this.groups["0_"+e].addRow(t),!r},GroupRows.prototype.reassignRowToGroup=function(t){var o=t.getGroup(),e=o.getPath(),r=this.getExpectedPath(t);e.length==r.length&&e.every(function(t,o){return t===r[o]})||(o.removeRow(t),this.assignRowToGroup(t,self.groups),this.table.rowManager.refreshActiveData("group",!1,!0))},GroupRows.prototype.getExpectedPath=function(t){var o=[],e=t.getData();return this.groupIDLookups.forEach(function(t){o.push(t.func(e))}),o},GroupRows.prototype.updateGroupRows=function(t){var o=this,e=[];if(o.groupList.forEach(function(t){e=e.concat(t.getHeadersAndRows())}),t){var r=o.table.rowManager.setDisplayRows(e,this.getDisplayIndex());!0!==r&&this.setDisplayIndex(r),o.table.rowManager.refreshActiveData("group",!0,!0)}return e},GroupRows.prototype.scrollHeaders=function(t){this.table.options.virtualDomHoz&&(t-=this.table.vdomHoz.vDomPadLeft),t+="px",this.groupList.forEach(function(o){o.scrollHeader(t)})},GroupRows.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],(o=this.groupList.indexOf(t))>-1&&this.groupList.splice(o,1))},Tabulator.prototype.registerModule("groupRows",GroupRows);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/history.min.js b/website/js/vendor/tabulator/js/modules/history.min.js
deleted file mode 100644 (file)
index ed4acef..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var History=function(t){this.table=t,this.history=[],this.index=-1};History.prototype.clear=function(){this.history=[],this.index=-1},History.prototype.action=function(t,o,e){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:o,data:e}),this.index++},History.prototype.getHistoryUndoSize=function(){return this.index+1},History.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},History.prototype.clearComponentHistory=function(t){var o=this.history.findIndex(function(o){return o.component===t});o>-1&&(this.history.splice(o,1),o<=this.index&&this.index--,this.clearComponentHistory(t))},History.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},History.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},History.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.posFrom],!t.data.after),this.table.rowManager.redraw()}},History.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.posTo],t.data.after),this.table.rowManager.redraw()}},History.prototype._rebindRow=function(t,o){this.history.forEach(function(e){if(e.component instanceof Row)e.component===t&&(e.component=o);else if(e.component instanceof Cell&&e.component.row===t){var i=e.component.column.getField();i&&(e.component=o.getCell(i))}})},Tabulator.prototype.registerModule("history",History);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/menu.min.js b/website/js/vendor/tabulator/js/modules/menu.min.js
deleted file mode 100644 (file)
index 172576e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var Menu=function(e){this.table=e,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1};Menu.prototype.initializeColumnHeader=function(e){var t,n=this;e.definition.headerContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.definition.headerContextMenu)),this.tapHold(e,e.definition.headerContextMenu)),e.definition.headerMenu&&(t=document.createElement("span"),t.classList.add("tabulator-header-menu-button"),t.innerHTML="&vellip;",t.addEventListener("click",function(t){var i="function"==typeof e.definition.headerMenu?e.definition.headerMenu(e.getComponent(),t):e.definition.headerMenu;t.stopPropagation(),t.preventDefault(),n.loadMenu(t,e,i)}),e.titleElement.insertBefore(t,e.titleElement.firstChild))},Menu.prototype.LoadMenuEvent=function(e,t,n){t="function"==typeof t?t(e.getComponent(),n):t,this.loadMenu(n,e,t)},Menu.prototype.tapHold=function(e,t){var n=this,i=e.getElement(),o=null,u=!1;i.addEventListener("touchstart",function(i){clearTimeout(o),u=!1,o=setTimeout(function(){clearTimeout(o),o=null,u=!0,n.LoadMenuEvent(e,t,i)},1e3)},{passive:!0}),i.addEventListener("touchend",function(e){clearTimeout(o),o=null,u&&e.preventDefault()})},Menu.prototype.initializeCell=function(e){e.column.definition.contextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.column.definition.contextMenu)),this.tapHold(e,e.column.definition.contextMenu)),e.column.definition.clickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,e.column.definition.clickMenu))},Menu.prototype.initializeRow=function(e){this.table.options.rowContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.rowContextMenu)),this.tapHold(e,this.table.options.rowContextMenu)),this.table.options.rowClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.rowClickMenu))},Menu.prototype.initializeGroup=function(e){this.table.options.groupContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.groupContextMenu)),this.tapHold(e,this.table.options.groupContextMenu)),this.table.options.groupClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.groupClickMenu))},Menu.prototype.loadMenu=function(e,t,n){var i=this,o=Math.max(document.body.offsetHeight,window.innerHeight),u=!(e instanceof MouseEvent);if(u||e.preventDefault(),n&&n.length){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout(function(){i.nestedMenuBlock=!1},100);this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),n.forEach(function(e){var n=document.createElement("div"),o=e.label,u=e.disabled;e.separator?n.classList.add("tabulator-menu-separator"):(n.classList.add("tabulator-menu-item"),"function"==typeof o&&(o=o(t.getComponent())),o instanceof Node?n.appendChild(o):n.innerHTML=o,"function"==typeof u&&(u=u(t.getComponent())),u?(n.classList.add("tabulator-menu-item-disabled"),n.addEventListener("click",function(e){e.stopPropagation()})):n.addEventListener("click",function(n){i.hideMenu(),e.action(n,t.getComponent())})),i.menuEl.appendChild(n)}),this.menuEl.style.top=(u?e.touches[0].pageY:e.pageY)+"px",this.menuEl.style.left=(u?e.touches[0].pageX:e.pageX)+"px",setTimeout(function(){i.table.rowManager.element.addEventListener("scroll",i.blurEvent),document.body.addEventListener("click",i.blurEvent),document.body.addEventListener("contextmenu",i.blurEvent),document.body.addEventListener("keydown",i.escEvent)},100),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=o&&(this.menuEl.style.top="",this.menuEl.style.bottom=o-e.pageY+"px")}},Menu.prototype.isOpen=function(){return!!this.menuEl.parentNode},Menu.prototype.escMenu=function(e){27==e.keyCode&&this.hideMenu()},Menu.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.escEvent&&document.body.removeEventListener("keydown",this.escEvent),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},Menu.prototype.menus={},Tabulator.prototype.registerModule("menu",Menu);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/page.min.js b/website/js/vendor/tabulator/js/modules/page.min.js
deleted file mode 100644 (file)
index 58dbf2b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var Page=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.createElements()};Page.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},Page.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var a=1;a<5;a++)t.push(this.size*a);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var a=document.createElement("option");a.value=t,!0===t?e.table.modules.localize.bind("pagination|all",function(e){a.innerHTML=e}):a.innerHTML=t,e.pageSizeSelect.appendChild(a)}),this.pageSizeSelect.value=this.size}},Page.prototype.initialize=function(e){var t,a,i,s=this;this.dataSentNames=Object.assign({},this.paginationDataSentNames),this.dataSentNames=Object.assign(this.dataSentNames,this.table.options.paginationDataSent),this.dataReceivedNames=Object.assign({},this.paginationDataReceivedNames),this.dataReceivedNames=Object.assign(this.dataReceivedNames,this.table.options.paginationDataReceived),s.table.modules.localize.bind("pagination|first",function(e){s.firstBut.innerHTML=e}),s.table.modules.localize.bind("pagination|first_title",function(e){s.firstBut.setAttribute("aria-label",e),s.firstBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|prev",function(e){s.prevBut.innerHTML=e}),s.table.modules.localize.bind("pagination|prev_title",function(e){s.prevBut.setAttribute("aria-label",e),s.prevBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|next",function(e){s.nextBut.innerHTML=e}),s.table.modules.localize.bind("pagination|next_title",function(e){s.nextBut.setAttribute("aria-label",e),s.nextBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|last",function(e){s.lastBut.innerHTML=e}),s.table.modules.localize.bind("pagination|last_title",function(e){s.lastBut.setAttribute("aria-label",e),s.lastBut.setAttribute("title",e)}),s.firstBut.addEventListener("click",function(){s.setPage(1).then(function(){}).catch(function(){})}),s.prevBut.addEventListener("click",function(){s.previousPage().then(function(){}).catch(function(){})}),s.nextBut.addEventListener("click",function(){s.nextPage().then(function(){}).catch(function(){})}),s.lastBut.addEventListener("click",function(){s.setPage(s.max).then(function(){}).catch(function(){})}),s.table.options.paginationElement&&(s.element=s.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),s.table.modules.localize.bind("pagination|page_size",function(e){s.pageSizeSelect.setAttribute("aria-label",e),s.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),s.element.appendChild(t),s.element.appendChild(s.pageSizeSelect),s.pageSizeSelect.addEventListener("change",function(e){s.setPageSize("true"==s.pageSizeSelect.value||s.pageSizeSelect.value),s.setPage(1).then(function(){}).catch(function(){})})),s.element.appendChild(s.firstBut),s.element.appendChild(s.prevBut),s.element.appendChild(s.pagesElement),s.element.appendChild(s.nextBut),s.element.appendChild(s.lastBut),s.table.options.paginationElement||e||s.table.footerManager.append(s.element,s),s.mode=s.table.options.pagination,s.table.options.paginationSize?s.size=s.table.options.paginationSize:(a=document.createElement("div"),a.classList.add("tabulator-row"),a.style.visibility=e,i=document.createElement("div"),i.classList.add("tabulator-cell"),i.innerHTML="Page Row Test",a.appendChild(i),s.table.rowManager.getTableElement().appendChild(a),s.size=Math.floor(s.table.rowManager.getElement().clientHeight/a.offsetHeight),s.table.rowManager.getTableElement().removeChild(a)),s.count=s.table.options.paginationButtonCount,s.generatePageSizeSelectList()},Page.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},Page.prototype.setDisplayIndex=function(e){this.displayIndex=e},Page.prototype.getDisplayIndex=function(){return this.displayIndex},Page.prototype.setMaxRows=function(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},Page.prototype.reset=function(e,t){return("local"==this.mode||e)&&(this.page=1),t&&(this.initialLoad=!0),!0},Page.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},Page.prototype.setPage=function(e){var t=this,a=this;switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return new Promise(function(i,s){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){s()}),a.table.options.persistence&&a.table.modExists("persistence",!0)&&a.table.modules.persistence.config.page&&a.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),s())})},Page.prototype.setPageToRow=function(e){var t=this;return new Promise(function(a,i){var s=t.table.rowManager.getDisplayRows(t.displayIndex-1),n=s.indexOf(e);if(n>-1){var o=!0===t.size?1:Math.ceil((n+1)/t.size);t.setPage(o).then(function(){a()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},Page.prototype.setPageSize=function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},Page.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),a=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),s=this.page<=a?Math.min(this.count,this.max):Math.min(this.page+a,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var n=i;n<=s;n++)n>0&&n<=e.max&&e.pagesElement.appendChild(e._generatePageButton(n));this.footerRedraw()},Page.prototype._generatePageButton=function(e){var t=this,a=document.createElement("button");return a.classList.add("tabulator-page"),e==t.page&&a.classList.add("active"),a.setAttribute("type","button"),a.setAttribute("role","button"),t.table.modules.localize.bind("pagination|page_title",function(t){a.setAttribute("aria-label",t+" "+e),a.setAttribute("title",t+" "+e)}),a.setAttribute("data-page",e),a.textContent=e,a.addEventListener("click",function(a){t.setPage(e).then(function(){}).catch(function(){})}),a},Page.prototype.previousPage=function(){var e=this;return new Promise(function(t,a){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){a()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),a())})},Page.prototype.nextPage=function(){var e=this;return new Promise(function(t,a){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){a()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),a())})},Page.prototype.getPage=function(){return this.page},Page.prototype.getPageMax=function(){return this.max},Page.prototype.getPageSize=function(e){return this.size},Page.prototype.getMode=function(){return this.mode},Page.prototype.getRows=function(e){var t,a,i;if("local"==this.mode){t=[],!0===this.size?(a=0,i=e.length):(a=this.size*(this.page-1),i=a+parseInt(this.size)),this._setPageButtons();for(var s=a;s<i;s++)e[s]&&t.push(e[s]);return t}return this._setPageButtons(),e.slice(0)},Page.prototype.trigger=function(){var e,t=this;return new Promise(function(a,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),a();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){a()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},Page.prototype._getRemotePage=function(){var e,t,a=this,i=this;return new Promise(function(s,n){if(i.table.modExists("ajax",!0)||n(),e=Tabulator.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[a.dataSentNames.page]=i.page,a.size&&(t[a.dataSentNames.size]=a.size),a.table.options.ajaxSorting&&a.table.modExists("sort")){var o=i.table.modules.sort.getSort();o.forEach(function(e){delete e.column}),t[a.dataSentNames.sorters]=o}if(a.table.options.ajaxFiltering&&a.table.modExists("filter")){var r=i.table.modules.filter.getFilters(!0,!0);t[a.dataSentNames.filters]=r}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(a.progressiveLoad).then(function(e){i._parseRemoteData(e),s()}).catch(function(e){n()}),i.table.modules.ajax.setParams(e)})},Page.prototype._parseRemoteData=function(e){var t,e,a,i=this;if(void 0===e[this.dataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e[this.dataReceivedNames.data]){if(this.max=parseInt(e[this.dataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page):this.table.rowManager.addRows(e[this.dataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.dataReceivedNames.data]),this.table.rowManager.setData(e,!0,this.initialLoad&&1==this.page),a=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+a&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());this.initialLoad=!1}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property")},Page.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},Page.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},Page.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},Tabulator.prototype.registerModule("page",Page);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/reactive_data.min.js b/website/js/vendor/tabulator/js/modules/reactive_data.min.js
deleted file mode 100644 (file)
index e97ddd5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var ReactiveData=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};ReactiveData.prototype.watchData=function(e){var t,a=this;this.currentVersion++,t=this.currentVersion,a.unwatchData(),a.data=e,a.origFuncs.push=e.push,Object.defineProperty(a.data,"push",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!1)}),a.origFuncs.push.apply(e,arguments)}}),a.origFuncs.unshift=e.unshift,Object.defineProperty(a.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!0)}),a.origFuncs.unshift.apply(e,arguments)}}),a.origFuncs.shift=e.shift,Object.defineProperty(a.data,"shift",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[0]))&&r.deleteActual(),a.origFuncs.shift.call(e)}}),a.origFuncs.pop=e.pop,Object.defineProperty(a.data,"pop",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[a.data.length-1]))&&r.deleteActual(),a.origFuncs.pop.call(e)}}),a.origFuncs.splice=e.splice,Object.defineProperty(a.data,"splice",{enumerable:!1,configurable:!0,value:function(){var r,n=Array.from(arguments),o=n[0]<0?e.length+n[0]:n[0],i=n[1],c=!!n[2]&&n.slice(2);if(!a.blocked&&t===a.currentVersion){if(c&&(r=!!e[o]&&a.table.rowManager.getRowFromDataObject(e[o]),r?c.forEach(function(e){a.table.rowManager.addRowActual(e,!0,r,!0)}):(c=c.slice().reverse(),c.forEach(function(e){a.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==i){var u=e.slice(o,void 0===n[1]?n[1]:o+i);u.forEach(function(e,t){var r=a.table.rowManager.getRowFromDataObject(e);r&&r.deleteActual(t!==u.length-1)})}(c||0!==i)&&a.table.rowManager.reRenderInPosition()}return a.origFuncs.splice.apply(e,arguments)}})},ReactiveData.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},ReactiveData.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var a in t)this.watchKey(e,t,a);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1},ReactiveData.prototype.watchTreeChildren=function(e){function t(){a.table.modules.dataTree.initializeRow(e),a.table.modules.dataTree.layoutRow(e),a.table.rowManager.refreshActiveData("tree",!1,!0)}var a=this,r=e.getData()[this.table.options.dataTreeChildField],n={};r&&(n.push=r.push,Object.defineProperty(r,"push",{enumerable:!1,configurable:!0,value:function(){var e=n.push.apply(r,arguments);return t(),e}}),n.unshift=r.unshift,Object.defineProperty(r,"unshift",{enumerable:!1,configurable:!0,value:function(){var e=n.unshift.apply(r,arguments);return t(),e}}),n.shift=r.shift,Object.defineProperty(r,"shift",{enumerable:!1,configurable:!0,value:function(){var e=n.shift.call(r);return t(),e}}),n.pop=r.pop,Object.defineProperty(r,"pop",{enumerable:!1,configurable:!0,value:function(){var e=n.pop.call(r);return t(),e}}),n.splice=r.splice,Object.defineProperty(r,"splice",{enumerable:!1,configurable:!0,value:function(){var e=n.splice.apply(r,arguments);return t(),e}}))},ReactiveData.prototype.watchKey=function(e,t,a){var r=this,n=Object.getOwnPropertyDescriptor(t,a),o=t[a],i=this.currentVersion;Object.defineProperty(t,a,{set:function(t){if(o=t,!r.blocked&&i===r.currentVersion){var c={};c[a]=t,e.updateData(c)}n.set&&n.set(t)},get:function(){return n.get&&n.get(),o}})},ReactiveData.prototype.unwatchRow=function(e){var t=e.getData();for(var a in t)Object.defineProperty(t,a,{value:t[a]})},ReactiveData.prototype.block=function(){this.blocked=!0},ReactiveData.prototype.unblock=function(){this.blocked=!1},Tabulator.prototype.registerModule("reactiveData",ReactiveData);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/resize_columns.min.js b/website/js/vendor/tabulator/js/modules/resize_columns.min.js
deleted file mode 100644 (file)
index 4987797..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var ResizeColumns=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};ResizeColumns.prototype.initializeColumn=function(e,t,i){var o=this,n=!1,s=this.table.options.resizableColumns;if("header"===e&&(n="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:n}),!0===s||s==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var l=document.createElement("div");l.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var r=function(e){var i=t.getLastColumn();i&&o._checkResizability(i)&&(o.startColumn=t,o._mouseDown(e,i,a))};a.addEventListener("mousedown",r),a.addEventListener("touchstart",r,{passive:!0}),a.addEventListener("dblclick",function(e){var i=t.getLastColumn();i&&o._checkResizability(i)&&(e.stopPropagation(),i.reinitializeWidth(!0))}),l.addEventListener("click",function(e){e.stopPropagation()});var d=function(e){var i,n,s;(i=t.getFirstColumn())&&(n=o.table.columnManager.findColumnIndex(i),(s=n>0&&o.table.columnManager.getColumnByIndex(n-1))&&o._checkResizability(s)&&(o.startColumn=t,o._mouseDown(e,s,l)))};l.addEventListener("mousedown",d),l.addEventListener("touchstart",d,{passive:!0}),l.addEventListener("dblclick",function(e){var i,n,s;(i=t.getFirstColumn())&&(n=o.table.columnManager.findColumnIndex(i),(s=n>0&&o.table.columnManager.getColumnByIndex(n-1))&&o._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),i.appendChild(a),i.appendChild(l)}},ResizeColumns.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},ResizeColumns.prototype._mouseDown=function(e,t,i){function o(e){s.table.rtl?t.setWidth(s.startWidth-((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)):t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),s.table.options.virtualDomHoz&&s.table.vdomHoz.reinitialize(!0),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",o),i.removeEventListener("touchmove",o),i.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",n),i.addEventListener("touchmove",o,{passive:!0}),i.addEventListener("touchend",n)},Tabulator.prototype.registerModule("resizeColumns",ResizeColumns);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/resize_table.min.js b/website/js/vendor/tabulator/js/modules/resize_table.min.js
deleted file mode 100644 (file)
index 3adeed9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var ResizeTable=function(e){this.table=e,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};ResizeTable.prototype.initialize=function(e){var t,i=this,n=this.table;this.tableHeight=n.element.clientHeight,this.tableWidth=n.element.clientWidth,n.element.parentNode&&(this.containerHeight=n.element.parentNode.clientHeight,this.containerWidth=n.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===n.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver(function(e){if(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),r=Math.floor(e[0].contentRect.width);i.tableHeight==t&&i.tableWidth==r||(i.tableHeight=t,i.tableWidth=r,n.element.parentNode&&(i.containerHeight=n.element.parentNode.clientHeight,i.containerWidth=n.element.parentNode.clientWidth),n.options.virtualDomHoz&&n.vdomHoz.reinitialize(!0),n.redraw())}}),this.observer.observe(n.element),t=window.getComputedStyle(n.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver(function(e){if(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),r=Math.floor(e[0].contentRect.width);i.containerHeight==t&&i.containerWidth==r||(i.containerHeight=t,i.containerWidth=r,i.tableHeight=n.element.clientHeight,i.tableWidth=n.element.clientWidth),n.options.virtualDomHoz&&n.vdomHoz.reinitialize(!0),n.redraw()}}),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell)&&(n.options.virtualDomHoz&&n.vdomHoz.reinitialize(!0),n.redraw())},window.addEventListener("resize",this.binding))},ResizeTable.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},Tabulator.prototype.registerModule("resizeTable",ResizeTable);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/modules/sort.min.js b/website/js/vendor/tabulator/js/modules/sort.min.js
deleted file mode 100644 (file)
index e6e73ed..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sort=function(t){this.table=t,this.sortList=[],this.changed=!1};Sort.prototype.initializeColumn=function(t,e){var r,o,n=this,i=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?i=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":i=t.definition.sorter}t.modules.sort={sorter:i,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(r=t.getElement(),r.classList.add("tabulator-sortable"),o=document.createElement("div"),o.classList.add("tabulator-col-sorter"),"object"==_typeof(this.table.options.headerSortElement)?o.appendChild(this.table.options.headerSortElement):o.innerHTML=this.table.options.headerSortElement,e.appendChild(o),t.modules.sort.element=o,r.addEventListener("click",function(e){var r="",o=[],i=!1;if(t.modules.sort){if(t.modules.sort.tristate)r="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":r="desc";break;case"desc":r="asc";break;default:r=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(o=n.getSort(),i=o.findIndex(function(e){return e.field===t.getField()}),i>-1?(o[i].dir=r,i!=o.length-1&&(i=o.splice(i,1)[0],"none"!=r&&o.push(i))):"none"!=r&&o.push({column:t,dir:r}),n.setSort(o)):"none"==r?n.clear():n.setSort(t,r),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},Sort.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},Sort.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},Sort.prototype.setSort=function(t,e){var r=this,o=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=r.table.columnManager.findColumn(t.column),e?(t.column=e,o.push(t),r.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),r.sortList=o,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},Sort.prototype.clear=function(){this.setSort([])},Sort.prototype.findSorter=function(t){var e,r=this.table.rowManager.activeRows[0],o="string";if(r&&(r=r.getData(),t.getField()))switch(e=t.getFieldValue(r),void 0===e?"undefined":_typeof(e)){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return this.sorters[o]},Sort.prototype.sort=function(t){var e=this,r=this.table.options.sortOrderReverse?e.sortList.slice().reverse():e.sortList,o=[],n=[];e.table.options.dataSorting&&e.table.options.dataSorting.call(e.table,e.getSort()),e.clearColumnHeaders(),e.table.options.ajaxSorting?r.forEach(function(t,r){e.setColumnHeader(t.column,t.dir)}):(r.forEach(function(t,r){var n=t.column.modules.sort;t.column&&n&&(n.sorter||(n.sorter=e.findSorter(t.column)),t.params="function"==typeof n.params?n.params(t.column.getComponent(),t.dir):n.params,o.push(t)),e.setColumnHeader(t.column,t.dir)}),o.length&&e._sortItems(t,o)),e.table.options.dataSorted&&(t.forEach(function(t){n.push(t.getComponent())}),e.table.options.dataSorted.call(e.table,e.getSort(),n))},Sort.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},Sort.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},Sort.prototype._sortItems=function(t,e){var r=this,o=e.length-1;t.sort(function(t,n){for(var i,s=o;s>=0;s--){var a=e[s];if(0!==(i=r._sortRow(t,n,a.column,a.dir,a.params)))break}return i})},Sort.prototype._sortRow=function(t,e,r,o,n){var i,s,a="asc"==o?t:e,l="asc"==o?e:t;return t=r.getFieldValue(a.getData()),e=r.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",i=a.getComponent(),s=l.getComponent(),r.modules.sort.sorter.call(this,t,e,i,s,r.getComponent(),o,n)},Sort.prototype.sorters={number:function(t,e,r,o,n,i,s){var a=s.alignEmptyValues,l=s.decimalSeparator||".",u=s.thousandSeparator||",",c=0;if(t=parseFloat(String(t).split(u).join("").split(l).join(".")),e=parseFloat(String(e).split(u).join("").split(l).join(".")),isNaN(t))c=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;c=1}return("top"===a&&"desc"===i||"bottom"===a&&"asc"===i)&&(c*=-1),c},string:function(t,e,r,o,n,i,s){var a,l=s.alignEmptyValues,u=0;if(t){if(e){switch(_typeof(s.locale)){case"boolean":s.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=s.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}u=1}else u=e?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},date:function(t,e,r,o,n,i,s){return s.format||(s.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,r,o,n,i,s)},time:function(t,e,r,o,n,i,s){return s.format||(s.format="HH:mm"),this.sorters.datetime.call(this,t,e,r,o,n,i,s)},datetime:function(t,e,r,o,n,i,s){var a=s.format||"DD/MM/YYYY HH:mm:ss",l=s.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;u=1}else u=e.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,r,o,n,i,s){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,r,o,n,i,s){function a(t){switch(c){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,u=0,c=s.type||"length",d=s.alignEmptyValues,m=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,u=e?a(e):0,l-u;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===i||"bottom"===d&&"asc"===i)&&(m*=-1),m},exists:function(t,e,r,o,n,i,s){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,r,o,n,i,s){var a,l,u,c,d,m=0,f=/(\d+)|(\D+)/g,p=/\d/,h=s.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(f),l=l.match(f),d=a.length>l.length?l.length:a.length;m<d;)if(u=a[m],c=l[m++],u!==c)return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===h&&"desc"===i||"bottom"===h&&"asc"===i)&&(g*=-1),g}},Tabulator.prototype.registerModule("sort",Sort);
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/tabulator.es2015.js b/website/js/vendor/tabulator/js/tabulator.es2015.js
deleted file mode 100644 (file)
index 31daf6c..0000000
+++ /dev/null
@@ -1,23395 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-
-'use strict';
-
-// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
-
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-if (!Array.prototype.findIndex) {
-
-       Object.defineProperty(Array.prototype, 'findIndex', {
-
-               value: function value(predicate) {
-
-                       // 1. Let O be ? ToObject(this value).
-
-                       if (this == null) {
-
-                               throw new TypeError('"this" is null or not defined');
-                       }
-
-                       var o = Object(this);
-
-                       // 2. Let len be ? ToLength(? Get(O, "length")).
-
-                       var len = o.length >>> 0;
-
-                       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-                       if (typeof predicate !== 'function') {
-
-                               throw new TypeError('predicate must be a function');
-                       }
-
-                       // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-                       var thisArg = arguments[1];
-
-                       // 5. Let k be 0.
-
-                       var k = 0;
-
-                       // 6. Repeat, while k < len
-
-                       while (k < len) {
-
-                               // a. Let Pk be ! ToString(k).
-
-                               // b. Let kValue be ? Get(O, Pk).
-
-                               // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-                               // d. If testResult is true, return k.
-
-                               var kValue = o[k];
-
-                               if (predicate.call(thisArg, kValue, k, o)) {
-
-                                       return k;
-                               }
-
-                               // e. Increase k by 1.
-
-                               k++;
-                       }
-
-                       // 7. Return -1.
-
-                       return -1;
-               }
-
-       });
-}
-
-// https://tc39.github.io/ecma262/#sec-array.prototype.find
-
-if (!Array.prototype.find) {
-
-       Object.defineProperty(Array.prototype, 'find', {
-
-               value: function value(predicate) {
-
-                       // 1. Let O be ? ToObject(this value).
-
-                       if (this == null) {
-
-                               throw new TypeError('"this" is null or not defined');
-                       }
-
-                       var o = Object(this);
-
-                       // 2. Let len be ? ToLength(? Get(O, "length")).
-
-                       var len = o.length >>> 0;
-
-                       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-                       if (typeof predicate !== 'function') {
-
-                               throw new TypeError('predicate must be a function');
-                       }
-
-                       // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-                       var thisArg = arguments[1];
-
-                       // 5. Let k be 0.
-
-                       var k = 0;
-
-                       // 6. Repeat, while k < len
-
-                       while (k < len) {
-
-                               // a. Let Pk be ! ToString(k).
-
-                               // b. Let kValue be ? Get(O, Pk).
-
-                               // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-                               // d. If testResult is true, return kValue.
-
-                               var kValue = o[k];
-
-                               if (predicate.call(thisArg, kValue, k, o)) {
-
-                                       return kValue;
-                               }
-
-                               // e. Increase k by 1.
-
-                               k++;
-                       }
-
-                       // 7. Return undefined.
-
-                       return undefined;
-               }
-
-       });
-}
-
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill
-
-if (!String.prototype.includes) {
-
-       String.prototype.includes = function (search, start) {
-
-               'use strict';
-
-               if (search instanceof RegExp) {
-
-                       throw TypeError('first argument must not be a RegExp');
-               }
-
-               if (start === undefined) {
-                       start = 0;
-               }
-
-               return this.indexOf(search, start) !== -1;
-       };
-}
-
-// https://tc39.github.io/ecma262/#sec-array.prototype.includes
-
-if (!Array.prototype.includes) {
-
-       Object.defineProperty(Array.prototype, 'includes', {
-
-               value: function value(searchElement, fromIndex) {
-
-                       if (this == null) {
-
-                               throw new TypeError('"this" is null or not defined');
-                       }
-
-                       // 1. Let O be ? ToObject(this value).
-
-                       var o = Object(this);
-
-                       // 2. Let len be ? ToLength(? Get(O, "length")).
-
-                       var len = o.length >>> 0;
-
-                       // 3. If len is 0, return false.
-
-                       if (len === 0) {
-
-                               return false;
-                       }
-
-                       // 4. Let n be ? ToInteger(fromIndex).
-
-                       //    (If fromIndex is undefined, this step produces the value 0.)
-
-                       var n = fromIndex | 0;
-
-                       // 5. If n ≥ 0, then
-
-                       //  a. Let k be n.
-
-                       // 6. Else n < 0,
-
-                       //  a. Let k be len + n.
-
-                       //  b. If k < 0, let k be 0.
-
-                       var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
-                       function sameValueZero(x, y) {
-
-                               return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);
-                       }
-
-                       // 7. Repeat, while k < len
-
-                       while (k < len) {
-
-                               // a. Let elementK be the result of ? Get(O, ! ToString(k)).
-
-                               // b. If SameValueZero(searchElement, elementK) is true, return true.
-
-                               if (sameValueZero(o[k], searchElement)) {
-
-                                       return true;
-                               }
-
-                               // c. Increase k by 1.
-
-                               k++;
-                       }
-
-                       // 8. Return false
-
-                       return false;
-               }
-
-       });
-}
-
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
-
-if (typeof Object.assign !== 'function') {
-
-       // Must be writable: true, enumerable: false, configurable: true
-
-       Object.defineProperty(Object, "assign", {
-
-               value: function assign(target, varArgs) {
-                       // .length of function is 2
-
-                       'use strict';
-
-                       if (target === null || target === undefined) {
-
-                               throw new TypeError('Cannot convert undefined or null to object');
-                       }
-
-                       var to = Object(target);
-
-                       for (var index = 1; index < arguments.length; index++) {
-
-                               var nextSource = arguments[index];
-
-                               if (nextSource !== null && nextSource !== undefined) {
-
-                                       for (var nextKey in nextSource) {
-
-                                               // Avoid bugs when hasOwnProperty is shadowed
-
-                                               if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
-
-                                                       to[nextKey] = nextSource[nextKey];
-                                               }
-                                       }
-                               }
-                       }
-
-                       return to;
-               },
-
-               writable: true,
-
-               configurable: true
-
-       });
-}
-
-var ColumnManager = function ColumnManager(table) {
-
-       this.table = table; //hold parent table
-
-       this.blockHozScrollEvent = false;
-
-       this.headersElement = this.createHeadersElement();
-
-       this.element = this.createHeaderElement(); //containing element
-
-       this.rowManager = null; //hold row manager object
-
-       this.columns = []; // column definition object
-
-       this.columnsByIndex = []; //columns by index
-
-       this.columnsByField = {}; //columns by field
-
-       this.scrollLeft = 0;
-
-       this.element.insertBefore(this.headersElement, this.element.firstChild);
-};
-
-////////////// Setup Functions /////////////////
-
-
-ColumnManager.prototype.createHeadersElement = function () {
-
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-headers");
-
-       return el;
-};
-
-ColumnManager.prototype.createHeaderElement = function () {
-
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-header");
-
-       if (!this.table.options.headerVisible) {
-
-               el.classList.add("tabulator-header-hidden");
-       }
-
-       return el;
-};
-
-ColumnManager.prototype.initialize = function () {
-
-       var self = this;
-
-       //scroll body along with header
-
-       // self.element.addEventListener("scroll", function(e){
-
-       //      if(!self.blockHozScrollEvent){
-
-       //              self.table.rowManager.scrollHorizontal(self.element.scrollLeft);
-
-       //      }
-
-       // });
-};
-
-//link to row manager
-
-ColumnManager.prototype.setRowManager = function (manager) {
-
-       this.rowManager = manager;
-};
-
-//return containing element
-
-ColumnManager.prototype.getElement = function () {
-
-       return this.element;
-};
-
-//return header containing element
-
-ColumnManager.prototype.getHeadersElement = function () {
-
-       return this.headersElement;
-};
-
-// ColumnManager.prototype.tempScrollBlock = function(){
-
-//     clearTimeout(this.blockHozScrollEvent);
-
-//     this.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);
-
-// }
-
-
-//scroll horizontally to match table body
-
-ColumnManager.prototype.scrollHorizontal = function (left) {
-
-       var hozAdjust = 0,
-           scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
-
-       // this.tempScrollBlock();
-
-       this.element.scrollLeft = left;
-
-       //adjust for vertical scrollbar moving table when present
-
-       if (left > scrollWidth) {
-
-               hozAdjust = left - scrollWidth;
-
-               this.element.style.marginLeft = -hozAdjust + "px";
-       } else {
-
-               this.element.style.marginLeft = 0;
-       }
-
-       //keep frozen columns fixed in position
-
-       //this._calcFrozenColumnsPos(hozAdjust + 3);
-
-
-       this.scrollLeft = left;
-
-       if (this.table.modExists("frozenColumns")) {
-
-               this.table.modules.frozenColumns.scrollHorizontal();
-       }
-};
-
-///////////// Column Setup Functions /////////////
-
-
-ColumnManager.prototype.generateColumnsFromRowData = function (data) {
-
-       var cols = [],
-           definitions = this.table.options.autoColumnsDefinitions,
-           row,
-           sorter;
-
-       if (data && data.length) {
-
-               row = data[0];
-
-               for (var key in row) {
-
-                       var col = {
-
-                               field: key,
-
-                               title: key
-
-                       };
-
-                       var value = row[key];
-
-                       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-
-                               case "undefined":
-
-                                       sorter = "string";
-
-                                       break;
-
-                               case "boolean":
-
-                                       sorter = "boolean";
-
-                                       break;
-
-                               case "object":
-
-                                       if (Array.isArray(value)) {
-
-                                               sorter = "array";
-                                       } else {
-
-                                               sorter = "string";
-                                       }
-
-                                       break;
-
-                               default:
-
-                                       if (!isNaN(value) && value !== "") {
-
-                                               sorter = "number";
-                                       } else {
-
-                                               if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-
-                                                       sorter = "alphanum";
-                                               } else {
-
-                                                       sorter = "string";
-                                               }
-                                       }
-
-                                       break;
-
-                       }
-
-                       col.sorter = sorter;
-
-                       cols.push(col);
-               }
-
-               if (definitions) {
-
-                       switch (typeof definitions === 'undefined' ? 'undefined' : _typeof(definitions)) {
-
-                               case "function":
-
-                                       this.table.options.columns = definitions.call(this.table, cols);
-
-                                       break;
-
-                               case "object":
-
-                                       if (Array.isArray(definitions)) {
-
-                                               cols.forEach(function (col) {
-
-                                                       var match = definitions.find(function (def) {
-
-                                                               return def.field === col.field;
-                                                       });
-
-                                                       if (match) {
-
-                                                               Object.assign(col, match);
-                                                       }
-                                               });
-                                       } else {
-
-                                               cols.forEach(function (col) {
-
-                                                       if (definitions[col.field]) {
-
-                                                               Object.assign(col, definitions[col.field]);
-                                                       }
-                                               });
-                                       }
-
-                                       this.table.options.columns = cols;
-
-                                       break;
-
-                       }
-               } else {
-
-                       this.table.options.columns = cols;
-               }
-
-               this.setColumns(this.table.options.columns);
-       }
-};
-
-ColumnManager.prototype.setColumns = function (cols, row) {
-
-       var self = this;
-
-       while (self.headersElement.firstChild) {
-               self.headersElement.removeChild(self.headersElement.firstChild);
-       }self.columns = [];
-
-       self.columnsByIndex = [];
-
-       self.columnsByField = {};
-
-       //reset frozen columns
-
-       if (self.table.modExists("frozenColumns")) {
-
-               self.table.modules.frozenColumns.reset();
-       }
-
-       cols.forEach(function (def, i) {
-
-               self._addColumn(def);
-       });
-
-       self._reIndexColumns();
-
-       if (self.table.options.responsiveLayout && self.table.modExists("responsiveLayout", true)) {
-
-               self.table.modules.responsiveLayout.initialize();
-       }
-
-       if (this.table.options.virtualDomHoz) {
-
-               this.table.vdomHoz.reinitialize(false, true);
-       }
-
-       self.redraw(true);
-};
-
-ColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {
-
-       var column = new Column(definition, this),
-           colEl = column.getElement(),
-           index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
-
-       if (nextToColumn && index > -1) {
-
-               var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
-
-               var nextEl = nextToColumn.getElement();
-
-               if (before) {
-
-                       this.columns.splice(parentIndex, 0, column);
-
-                       nextEl.parentNode.insertBefore(colEl, nextEl);
-               } else {
-
-                       this.columns.splice(parentIndex + 1, 0, column);
-
-                       nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
-               }
-       } else {
-
-               if (before) {
-
-                       this.columns.unshift(column);
-
-                       this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);
-               } else {
-
-                       this.columns.push(column);
-
-                       this.headersElement.appendChild(column.getElement());
-               }
-
-               column.columnRendered();
-       }
-
-       return column;
-};
-
-ColumnManager.prototype.registerColumnField = function (col) {
-
-       if (col.definition.field) {
-
-               this.columnsByField[col.definition.field] = col;
-       }
-};
-
-ColumnManager.prototype.registerColumnPosition = function (col) {
-
-       this.columnsByIndex.push(col);
-};
-
-ColumnManager.prototype._reIndexColumns = function () {
-
-       this.columnsByIndex = [];
-
-       this.columns.forEach(function (column) {
-
-               column.reRegisterPosition();
-       });
-};
-
-//ensure column headers take up the correct amount of space in column groups
-
-ColumnManager.prototype._verticalAlignHeaders = function () {
-
-       var self = this,
-           minHeight = 0;
-
-       self.columns.forEach(function (column) {
-
-               var height;
-
-               column.clearVerticalAlign();
-
-               height = column.getHeight();
-
-               if (height > minHeight) {
-
-                       minHeight = height;
-               }
-       });
-
-       self.columns.forEach(function (column) {
-
-               column.verticalAlign(self.table.options.columnHeaderVertAlign, minHeight);
-       });
-
-       self.rowManager.adjustTableSize();
-};
-
-//////////////// Column Details /////////////////
-
-
-ColumnManager.prototype.findColumn = function (subject) {
-
-       var self = this;
-
-       if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-               if (subject instanceof Column) {
-
-                       //subject is column element
-
-                       return subject;
-               } else if (subject instanceof ColumnComponent) {
-
-                       //subject is public column component
-
-                       return subject._getSelf() || false;
-               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-
-                       //subject is a HTML element of the column header
-
-                       var match = self.columns.find(function (column) {
-
-                               return column.element === subject;
-                       });
-
-                       return match || false;
-               }
-       } else {
-
-               //subject should be treated as the field name of the column
-
-               return this.columnsByField[subject] || false;
-       }
-
-       //catch all for any other type of input
-
-
-       return false;
-};
-
-ColumnManager.prototype.getColumnByField = function (field) {
-
-       return this.columnsByField[field];
-};
-
-ColumnManager.prototype.getColumnsByFieldRoot = function (root) {
-       var _this = this;
-
-       var matches = [];
-
-       Object.keys(this.columnsByField).forEach(function (field) {
-
-               var fieldRoot = field.split(".")[0];
-
-               if (fieldRoot === root) {
-
-                       matches.push(_this.columnsByField[field]);
-               }
-       });
-
-       return matches;
-};
-
-ColumnManager.prototype.getColumnByIndex = function (index) {
-
-       return this.columnsByIndex[index];
-};
-
-ColumnManager.prototype.getFirstVisibileColumn = function (index) {
-
-       var index = this.columnsByIndex.findIndex(function (col) {
-
-               return col.visible;
-       });
-
-       return index > -1 ? this.columnsByIndex[index] : false;
-};
-
-ColumnManager.prototype.getColumns = function () {
-
-       return this.columns;
-};
-
-ColumnManager.prototype.findColumnIndex = function (column) {
-
-       return this.columnsByIndex.findIndex(function (col) {
-
-               return column === col;
-       });
-};
-
-//return all columns that are not groups
-
-ColumnManager.prototype.getRealColumns = function () {
-
-       return this.columnsByIndex;
-};
-
-//travers across columns and call action
-
-ColumnManager.prototype.traverse = function (callback) {
-
-       var self = this;
-
-       self.columnsByIndex.forEach(function (column, i) {
-
-               callback(column, i);
-       });
-};
-
-//get defintions of actual columns
-
-ColumnManager.prototype.getDefinitions = function (active) {
-
-       var self = this,
-           output = [];
-
-       self.columnsByIndex.forEach(function (column) {
-
-               if (!active || active && column.visible) {
-
-                       output.push(column.getDefinition());
-               }
-       });
-
-       return output;
-};
-
-//get full nested definition tree
-
-ColumnManager.prototype.getDefinitionTree = function () {
-
-       var self = this,
-           output = [];
-
-       self.columns.forEach(function (column) {
-
-               output.push(column.getDefinition(true));
-       });
-
-       return output;
-};
-
-ColumnManager.prototype.getComponents = function (structured) {
-
-       var self = this,
-           output = [],
-           columns = structured ? self.columns : self.columnsByIndex;
-
-       columns.forEach(function (column) {
-
-               output.push(column.getComponent());
-       });
-
-       return output;
-};
-
-ColumnManager.prototype.getWidth = function () {
-
-       var width = 0;
-
-       this.columnsByIndex.forEach(function (column) {
-
-               if (column.visible) {
-
-                       width += column.getWidth();
-               }
-       });
-
-       return width;
-};
-
-ColumnManager.prototype.moveColumn = function (from, to, after) {
-
-       this.moveColumnActual(from, to, after);
-
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-               this.table.modules.responsiveLayout.initialize();
-       }
-
-       if (this.table.modExists("columnCalcs")) {
-
-               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-       }
-
-       to.element.parentNode.insertBefore(from.element, to.element);
-
-       if (after) {
-
-               to.element.parentNode.insertBefore(to.element, from.element);
-       }
-
-       this._verticalAlignHeaders();
-
-       this.table.rowManager.reinitialize();
-};
-
-ColumnManager.prototype.moveColumnActual = function (from, to, after) {
-
-       if (from.parent.isGroup) {
-
-               this._moveColumnInArray(from.parent.columns, from, to, after);
-       } else {
-
-               this._moveColumnInArray(this.columns, from, to, after);
-       }
-
-       this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
-
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-               this.table.modules.responsiveLayout.initialize();
-       }
-
-       if (this.table.options.virtualDomHoz) {
-
-               this.table.vdomHoz.reinitialize(true);
-       }
-
-       if (this.table.options.columnMoved) {
-
-               this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
-       }
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-               this.table.modules.persistence.save("columns");
-       }
-};
-
-ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
-       var _this2 = this;
-
-       var fromIndex = columns.indexOf(from),
-           toIndex,
-           rows = [];
-
-       if (fromIndex > -1) {
-
-               columns.splice(fromIndex, 1);
-
-               toIndex = columns.indexOf(to);
-
-               if (toIndex > -1) {
-
-                       if (after) {
-
-                               toIndex = toIndex + 1;
-                       }
-               } else {
-
-                       toIndex = fromIndex;
-               }
-
-               columns.splice(toIndex, 0, from);
-
-               if (updateRows) {
-
-                       if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
-
-                               this.table.rowManager.rows.forEach(function (row) {
-
-                                       rows = rows.concat(_this2.table.modules.dataTree.getTreeChildren(row, false, true));
-                               });
-                       }
-
-                       rows = rows.concat(this.table.rowManager.rows);
-
-                       rows.forEach(function (row) {
-
-                               if (row.cells.length) {
-
-                                       var cell = row.cells.splice(fromIndex, 1)[0];
-
-                                       row.cells.splice(toIndex, 0, cell);
-                               }
-                       });
-               }
-       }
-};
-
-ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
-       var _this3 = this;
-
-       var left = 0,
-           offset = 0,
-           adjust = 0,
-           colEl = column.getElement();
-
-       return new Promise(function (resolve, reject) {
-
-               if (typeof position === "undefined") {
-
-                       position = _this3.table.options.scrollToColumnPosition;
-               }
-
-               if (typeof ifVisible === "undefined") {
-
-                       ifVisible = _this3.table.options.scrollToColumnIfVisible;
-               }
-
-               if (column.visible) {
-
-                       //align to correct position
-
-                       switch (position) {
-
-                               case "middle":
-
-                               case "center":
-
-                                       adjust = -_this3.element.clientWidth / 2;
-
-                                       break;
-
-                               case "right":
-
-                                       adjust = colEl.clientWidth - _this3.headersElement.clientWidth;
-
-                                       break;
-
-                       }
-
-                       //check column visibility
-
-                       if (!ifVisible) {
-
-                               offset = colEl.offsetLeft;
-
-                               if (offset > 0 && offset + colEl.offsetWidth < _this3.element.clientWidth) {
-
-                                       return false;
-                               }
-                       }
-
-                       //calculate scroll position
-
-                       left = colEl.offsetLeft + adjust;
-
-                       left = Math.max(Math.min(left, _this3.table.rowManager.element.scrollWidth - _this3.table.rowManager.element.clientWidth), 0);
-
-                       _this3.table.rowManager.scrollHorizontal(left);
-
-                       _this3.scrollHorizontal(left);
-
-                       resolve();
-               } else {
-
-                       console.warn("Scroll Error - Column not visible");
-
-                       reject("Scroll Error - Column not visible");
-               }
-       });
-};
-
-//////////////// Cell Management /////////////////
-
-
-ColumnManager.prototype.generateCells = function (row) {
-
-       var self = this;
-
-       var cells = [];
-
-       self.columnsByIndex.forEach(function (column) {
-
-               cells.push(column.generateCell(row));
-       });
-
-       return cells;
-};
-
-//////////////// Column Management /////////////////
-
-
-ColumnManager.prototype.getFlexBaseWidth = function () {
-
-       var self = this,
-           totalWidth = self.table.element.clientWidth,
-           //table element width
-
-       fixedWidth = 0;
-
-       //adjust for vertical scrollbar if present
-
-       if (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {
-
-               totalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;
-       }
-
-       this.columnsByIndex.forEach(function (column) {
-
-               var width, minWidth, colWidth;
-
-               if (column.visible) {
-
-                       width = column.definition.width || 0;
-
-                       minWidth = typeof column.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(column.minWidth);
-
-                       if (typeof width == "string") {
-
-                               if (width.indexOf("%") > -1) {
-
-                                       colWidth = totalWidth / 100 * parseInt(width);
-                               } else {
-
-                                       colWidth = parseInt(width);
-                               }
-                       } else {
-
-                               colWidth = width;
-                       }
-
-                       fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-               }
-       });
-
-       return fixedWidth;
-};
-
-ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
-       var _this4 = this;
-
-       return new Promise(function (resolve, reject) {
-
-               var column = _this4._addColumn(definition, before, nextToColumn);
-
-               _this4._reIndexColumns();
-
-               if (_this4.table.options.responsiveLayout && _this4.table.modExists("responsiveLayout", true)) {
-
-                       _this4.table.modules.responsiveLayout.initialize();
-               }
-
-               if (_this4.table.modExists("columnCalcs")) {
-
-                       _this4.table.modules.columnCalcs.recalc(_this4.table.rowManager.activeRows);
-               }
-
-               _this4.redraw();
-
-               if (_this4.table.modules.layout.getMode() != "fitColumns") {
-
-                       column.reinitializeWidth();
-               }
-
-               _this4._verticalAlignHeaders();
-
-               _this4.table.rowManager.reinitialize();
-
-               if (_this4.table.options.virtualDomHoz) {
-
-                       _this4.table.vdomHoz.reinitialize();
-               }
-
-               resolve(column);
-       });
-};
-
-//remove column from system
-
-ColumnManager.prototype.deregisterColumn = function (column) {
-
-       var field = column.getField(),
-           index;
-
-       //remove from field list
-
-       if (field) {
-
-               delete this.columnsByField[field];
-       }
-
-       //remove from index list
-
-       index = this.columnsByIndex.indexOf(column);
-
-       if (index > -1) {
-
-               this.columnsByIndex.splice(index, 1);
-       }
-
-       //remove from column list
-
-       index = this.columns.indexOf(column);
-
-       if (index > -1) {
-
-               this.columns.splice(index, 1);
-       }
-
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-               this.table.modules.responsiveLayout.initialize();
-       }
-
-       this._verticalAlignHeaders();
-
-       this.redraw();
-};
-
-//redraw columns
-
-ColumnManager.prototype.redraw = function (force) {
-
-       if (force) {
-
-               if (Tabulator.prototype.helpers.elVisible(this.element)) {
-
-                       this._verticalAlignHeaders();
-               }
-
-               this.table.rowManager.resetScroll();
-
-               this.table.rowManager.reinitialize();
-       }
-
-       if (["fitColumns", "fitDataStretch"].indexOf(this.table.modules.layout.getMode()) > -1) {
-
-               this.table.modules.layout.layout();
-       } else {
-
-               if (force) {
-
-                       this.table.modules.layout.layout();
-               } else {
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               }
-       }
-
-       if (this.table.modExists("frozenColumns")) {
-
-               this.table.modules.frozenColumns.layout();
-       }
-
-       if (this.table.modExists("columnCalcs")) {
-
-               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-       }
-
-       if (force) {
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                       this.table.modules.persistence.save("columns");
-               }
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       this.table.modules.columnCalcs.redraw();
-               }
-       }
-
-       this.table.footerManager.redraw();
-};
-
-//public column object
-var ColumnComponent = function ColumnComponent(column) {
-       this._column = column;
-       this.type = "ColumnComponent";
-};
-
-ColumnComponent.prototype.getElement = function () {
-       return this._column.getElement();
-};
-
-ColumnComponent.prototype.getDefinition = function () {
-       return this._column.getDefinition();
-};
-
-ColumnComponent.prototype.getField = function () {
-       return this._column.getField();
-};
-
-ColumnComponent.prototype.getCells = function () {
-       var cells = [];
-
-       this._column.cells.forEach(function (cell) {
-               cells.push(cell.getComponent());
-       });
-
-       return cells;
-};
-
-ColumnComponent.prototype.getVisibility = function () {
-       console.warn("getVisibility function is deprecated, you should now use the isVisible function");
-       return this._column.visible;
-};
-
-ColumnComponent.prototype.isVisible = function () {
-       return this._column.visible;
-};
-
-ColumnComponent.prototype.show = function () {
-       if (this._column.isGroup) {
-               this._column.columns.forEach(function (column) {
-                       column.show();
-               });
-       } else {
-               this._column.show();
-       }
-};
-
-ColumnComponent.prototype.hide = function () {
-       if (this._column.isGroup) {
-               this._column.columns.forEach(function (column) {
-                       column.hide();
-               });
-       } else {
-               this._column.hide();
-       }
-};
-
-ColumnComponent.prototype.toggle = function () {
-       if (this._column.visible) {
-               this.hide();
-       } else {
-               this.show();
-       }
-};
-
-ColumnComponent.prototype.delete = function () {
-       return this._column.delete();
-};
-
-ColumnComponent.prototype.getSubColumns = function () {
-       var output = [];
-
-       if (this._column.columns.length) {
-               this._column.columns.forEach(function (column) {
-                       output.push(column.getComponent());
-               });
-       }
-
-       return output;
-};
-
-ColumnComponent.prototype.getParentColumn = function () {
-       return this._column.parent instanceof Column ? this._column.parent.getComponent() : false;
-};
-
-ColumnComponent.prototype._getSelf = function () {
-       return this._column;
-};
-
-ColumnComponent.prototype.scrollTo = function () {
-       return this._column.table.columnManager.scrollToColumn(this._column);
-};
-
-ColumnComponent.prototype.getTable = function () {
-       return this._column.table;
-};
-
-ColumnComponent.prototype.headerFilterFocus = function () {
-       if (this._column.table.modExists("filter", true)) {
-               this._column.table.modules.filter.setHeaderFilterFocus(this._column);
-       }
-};
-
-ColumnComponent.prototype.reloadHeaderFilter = function () {
-       if (this._column.table.modExists("filter", true)) {
-               this._column.table.modules.filter.reloadHeaderFilter(this._column);
-       }
-};
-
-ColumnComponent.prototype.getHeaderFilterValue = function () {
-       if (this._column.table.modExists("filter", true)) {
-               return this._column.table.modules.filter.getHeaderFilterValue(this._column);
-       }
-};
-
-ColumnComponent.prototype.setHeaderFilterValue = function (value) {
-       if (this._column.table.modExists("filter", true)) {
-               this._column.table.modules.filter.setHeaderFilterValue(this._column, value);
-       }
-};
-
-ColumnComponent.prototype.move = function (to, after) {
-       var toColumn = this._column.table.columnManager.findColumn(to);
-
-       if (toColumn) {
-               this._column.table.columnManager.moveColumn(this._column, toColumn, after);
-       } else {
-               console.warn("Move Error - No matching column found:", toColumn);
-       }
-};
-
-ColumnComponent.prototype.getNextColumn = function () {
-       var nextCol = this._column.nextColumn();
-
-       return nextCol ? nextCol.getComponent() : false;
-};
-
-ColumnComponent.prototype.getPrevColumn = function () {
-       var prevCol = this._column.prevColumn();
-
-       return prevCol ? prevCol.getComponent() : false;
-};
-
-ColumnComponent.prototype.updateDefinition = function (updates) {
-       return this._column.updateDefinition(updates);
-};
-
-ColumnComponent.prototype.getWidth = function () {
-       return this._column.getWidth();
-};
-
-ColumnComponent.prototype.setWidth = function (width) {
-       var result;
-
-       if (width === true) {
-               result = this._column.reinitializeWidth(true);
-       } else {
-               result = this._column.setWidth(width);
-       }
-
-       if (this._column.table.options.virtualDomHoz) {
-               this._column.table.vdomHoz.reinitialize(true);
-       }
-
-       return result;
-};
-
-ColumnComponent.prototype.validate = function () {
-       return this._column.validate();
-};
-
-var Column = function Column(def, parent) {
-       var self = this;
-
-       this.table = parent.table;
-       this.definition = def; //column definition
-       this.parent = parent; //hold parent object
-       this.type = "column"; //type of element
-       this.columns = []; //child columns
-       this.cells = []; //cells bound to this column
-       this.element = this.createElement(); //column header element
-       this.contentElement = false;
-       this.titleHolderElement = false;
-       this.titleElement = false;
-       this.groupElement = this.createGroupElement(); //column group holder element
-       this.isGroup = false;
-       this.tooltip = false; //hold column tooltip
-       this.hozAlign = ""; //horizontal text alignment
-       this.vertAlign = ""; //vert text alignment
-
-       //multi dimensional filed handling
-       this.field = "";
-       this.fieldStructure = "";
-       this.getFieldValue = "";
-       this.setFieldValue = "";
-
-       this.titleFormatterRendered = false;
-
-       this.setField(this.definition.field);
-
-       if (this.table.options.invalidOptionWarnings) {
-               this.checkDefinition();
-       }
-
-       this.modules = {}; //hold module variables;
-
-       this.cellEvents = {
-               cellClick: false,
-               cellDblClick: false,
-               cellContext: false,
-               cellTap: false,
-               cellDblTap: false,
-               cellTapHold: false,
-               cellMouseEnter: false,
-               cellMouseLeave: false,
-               cellMouseOver: false,
-               cellMouseOut: false,
-               cellMouseMove: false
-       };
-
-       this.width = null; //column width
-       this.widthStyled = ""; //column width prestyled to improve render efficiency
-       this.minWidth = null; //column minimum width
-       this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
-       this.widthFixed = false; //user has specified a width for this column
-
-       this.visible = true; //default visible state
-
-       this.component = null;
-
-       this._mapDepricatedFunctionality();
-
-       //initialize column
-       if (def.columns) {
-
-               this.isGroup = true;
-
-               def.columns.forEach(function (def, i) {
-                       var newCol = new Column(def, self);
-                       self.attachColumn(newCol);
-               });
-
-               self.checkColumnVisibility();
-       } else {
-               parent.registerColumnField(this);
-       }
-
-       if (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists("moveRow")) {
-               this.table.modules.moveRow.setHandle(true);
-       }
-
-       this._buildHeader();
-
-       this.bindModuleColumns();
-};
-
-Column.prototype.createElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-col");
-       el.setAttribute("role", "columnheader");
-       el.setAttribute("aria-sort", "none");
-
-       return el;
-};
-
-Column.prototype.createGroupElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-col-group-cols");
-
-       return el;
-};
-
-Column.prototype.checkDefinition = function () {
-       var _this5 = this;
-
-       Object.keys(this.definition).forEach(function (key) {
-               if (_this5.defaultOptionList.indexOf(key) === -1) {
-                       console.warn("Invalid column definition option in '" + (_this5.field || _this5.definition.title) + "' column:", key);
-               }
-       });
-};
-
-Column.prototype.setField = function (field) {
-       this.field = field;
-       this.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];
-       this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;
-       this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;
-};
-
-//register column position with column manager
-Column.prototype.registerColumnPosition = function (column) {
-       this.parent.registerColumnPosition(column);
-};
-
-//register column position with column manager
-Column.prototype.registerColumnField = function (column) {
-       this.parent.registerColumnField(column);
-};
-
-//trigger position registration
-Column.prototype.reRegisterPosition = function () {
-       if (this.isGroup) {
-               this.columns.forEach(function (column) {
-                       column.reRegisterPosition();
-               });
-       } else {
-               this.registerColumnPosition(this);
-       }
-};
-
-Column.prototype._mapDepricatedFunctionality = function () {
-       if (typeof this.definition.hideInHtml !== "undefined") {
-               this.definition.htmlOutput = !this.definition.hideInHtml;
-               console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput");
-       }
-
-       if (typeof this.definition.align !== "undefined") {
-               this.definition.hozAlign = this.definition.align;
-               console.warn("align column definition property is deprecated, you should now use hozAlign");
-       }
-
-       if (typeof this.definition.downloadTitle !== "undefined") {
-               this.definition.titleDownload = this.definition.downloadTitle;
-               console.warn("downloadTitle definition property is deprecated, you should now use titleDownload");
-       }
-};
-
-Column.prototype.setTooltip = function () {
-       var self = this,
-           def = self.definition;
-
-       //set header tooltips
-       var tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;
-
-       if (tooltip) {
-               if (tooltip === true) {
-                       if (def.field) {
-                               self.table.modules.localize.bind("columns|" + def.field, function (value) {
-                                       self.element.setAttribute("title", value || def.title);
-                               });
-                       } else {
-                               self.element.setAttribute("title", def.title);
-                       }
-               } else {
-                       if (typeof tooltip == "function") {
-                               tooltip = tooltip(self.getComponent());
-
-                               if (tooltip === false) {
-                                       tooltip = "";
-                               }
-                       }
-
-                       self.element.setAttribute("title", tooltip);
-               }
-       } else {
-               self.element.setAttribute("title", "");
-       }
-};
-
-//build header element
-Column.prototype._buildHeader = function () {
-       var self = this,
-           def = self.definition;
-
-       while (self.element.firstChild) {
-               self.element.removeChild(self.element.firstChild);
-       }if (def.headerVertical) {
-               self.element.classList.add("tabulator-col-vertical");
-
-               if (def.headerVertical === "flip") {
-                       self.element.classList.add("tabulator-col-vertical-flip");
-               }
-       }
-
-       self.contentElement = self._bindEvents();
-
-       self.contentElement = self._buildColumnHeaderContent();
-
-       self.element.appendChild(self.contentElement);
-
-       if (self.isGroup) {
-               self._buildGroupHeader();
-       } else {
-               self._buildColumnHeader();
-       }
-
-       self.setTooltip();
-
-       //set resizable handles
-       if (self.table.options.resizableColumns && self.table.modExists("resizeColumns")) {
-               self.table.modules.resizeColumns.initializeColumn("header", self, self.element);
-       }
-
-       //set resizable handles
-       if (def.headerFilter && self.table.modExists("filter") && self.table.modExists("edit")) {
-               if (typeof def.headerFilterPlaceholder !== "undefined" && def.field) {
-                       self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
-               }
-
-               self.table.modules.filter.initializeColumn(self);
-       }
-
-       //set resizable handles
-       if (self.table.modExists("frozenColumns")) {
-               self.table.modules.frozenColumns.initializeColumn(self);
-       }
-
-       //set movable column
-       if (self.table.options.movableColumns && !self.isGroup && self.table.modExists("moveColumn")) {
-               self.table.modules.moveColumn.initializeColumn(self);
-       }
-
-       //set calcs column
-       if ((def.topCalc || def.bottomCalc) && self.table.modExists("columnCalcs")) {
-               self.table.modules.columnCalcs.initializeColumn(self);
-       }
-
-       //handle persistence
-       if (self.table.modExists("persistence") && self.table.modules.persistence.config.columns) {
-               self.table.modules.persistence.initializeColumn(self);
-       }
-
-       //update header tooltip on mouse enter
-       self.element.addEventListener("mouseenter", function (e) {
-               self.setTooltip();
-       });
-};
-
-Column.prototype._bindEvents = function () {
-
-       var self = this,
-           def = self.definition,
-           dblTap,
-           tapHold,
-           tap;
-
-       //setup header click event bindings
-       if (typeof def.headerClick == "function") {
-               self.element.addEventListener("click", function (e) {
-                       def.headerClick(e, self.getComponent());
-               });
-       }
-
-       if (typeof def.headerDblClick == "function") {
-               self.element.addEventListener("dblclick", function (e) {
-                       def.headerDblClick(e, self.getComponent());
-               });
-       }
-
-       if (typeof def.headerContext == "function") {
-               self.element.addEventListener("contextmenu", function (e) {
-                       def.headerContext(e, self.getComponent());
-               });
-       }
-
-       //setup header tap event bindings
-       if (typeof def.headerTap == "function") {
-               tap = false;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               def.headerTap(e, self.getComponent());
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (typeof def.headerDblTap == "function") {
-               dblTap = null;
-
-               self.element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               def.headerDblTap(e, self.getComponent());
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (typeof def.headerTapHold == "function") {
-               tapHold = null;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               def.headerTapHold(e, self.getComponent());
-                       }, 1000);
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-
-       //store column cell click event bindings
-       if (typeof def.cellClick == "function") {
-               self.cellEvents.cellClick = def.cellClick;
-       }
-
-       if (typeof def.cellDblClick == "function") {
-               self.cellEvents.cellDblClick = def.cellDblClick;
-       }
-
-       if (typeof def.cellContext == "function") {
-               self.cellEvents.cellContext = def.cellContext;
-       }
-
-       //store column mouse event bindings
-       if (typeof def.cellMouseEnter == "function") {
-               self.cellEvents.cellMouseEnter = def.cellMouseEnter;
-       }
-
-       if (typeof def.cellMouseLeave == "function") {
-               self.cellEvents.cellMouseLeave = def.cellMouseLeave;
-       }
-
-       if (typeof def.cellMouseOver == "function") {
-               self.cellEvents.cellMouseOver = def.cellMouseOver;
-       }
-
-       if (typeof def.cellMouseOut == "function") {
-               self.cellEvents.cellMouseOut = def.cellMouseOut;
-       }
-
-       if (typeof def.cellMouseMove == "function") {
-               self.cellEvents.cellMouseMove = def.cellMouseMove;
-       }
-
-       //setup column cell tap event bindings
-       if (typeof def.cellTap == "function") {
-               self.cellEvents.cellTap = def.cellTap;
-       }
-
-       if (typeof def.cellDblTap == "function") {
-               self.cellEvents.cellDblTap = def.cellDblTap;
-       }
-
-       if (typeof def.cellTapHold == "function") {
-               self.cellEvents.cellTapHold = def.cellTapHold;
-       }
-
-       //setup column cell edit callbacks
-       if (typeof def.cellEdited == "function") {
-               self.cellEvents.cellEdited = def.cellEdited;
-       }
-
-       if (typeof def.cellEditing == "function") {
-               self.cellEvents.cellEditing = def.cellEditing;
-       }
-
-       if (typeof def.cellEditCancelled == "function") {
-               self.cellEvents.cellEditCancelled = def.cellEditCancelled;
-       }
-};
-
-//build header element for header
-Column.prototype._buildColumnHeader = function () {
-       var _this6 = this;
-
-       var def = this.definition,
-           table = this.table,
-           sortable;
-
-       //set column sorter
-       if (table.modExists("sort")) {
-               table.modules.sort.initializeColumn(this, this.titleHolderElement);
-       }
-
-       //set column header context menu
-       if ((def.headerContextMenu || def.headerClickMenu || def.headerMenu) && table.modExists("menu")) {
-               table.modules.menu.initializeColumnHeader(this);
-       }
-
-       //set column formatter
-       if (table.modExists("format")) {
-               table.modules.format.initializeColumn(this);
-       }
-
-       //set column editor
-       if (typeof def.editor != "undefined" && table.modExists("edit")) {
-               table.modules.edit.initializeColumn(this);
-       }
-
-       //set colum validator
-       if (typeof def.validator != "undefined" && table.modExists("validate")) {
-               table.modules.validate.initializeColumn(this);
-       }
-
-       //set column mutator
-       if (table.modExists("mutator")) {
-               table.modules.mutator.initializeColumn(this);
-       }
-
-       //set column accessor
-       if (table.modExists("accessor")) {
-               table.modules.accessor.initializeColumn(this);
-       }
-
-       //set respoviveLayout
-       if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
-               table.modules.responsiveLayout.initializeColumn(this);
-       }
-
-       //set column visibility
-       if (typeof def.visible != "undefined") {
-               if (def.visible) {
-                       this.show(true);
-               } else {
-                       this.hide(true);
-               }
-       }
-
-       //asign additional css classes to column header
-       if (def.cssClass) {
-               var classeNames = def.cssClass.split(" ");
-               classeNames.forEach(function (className) {
-                       _this6.element.classList.add(className);
-               });
-       }
-
-       if (def.field) {
-               this.element.setAttribute("tabulator-field", def.field);
-       }
-
-       //set min width if present
-       this.setMinWidth(typeof def.minWidth == "undefined" ? this.table.options.columnMinWidth : parseInt(def.minWidth));
-
-       this.reinitializeWidth();
-
-       //set tooltip if present
-       this.tooltip = this.definition.tooltip || this.definition.tooltip === false ? this.definition.tooltip : this.table.options.tooltips;
-
-       //set orizontal text alignment
-       this.hozAlign = typeof this.definition.hozAlign == "undefined" ? this.table.options.cellHozAlign : this.definition.hozAlign;
-       this.vertAlign = typeof this.definition.vertAlign == "undefined" ? this.table.options.cellVertAlign : this.definition.vertAlign;
-
-       this.titleElement.style.textAlign = this.definition.headerHozAlign || this.table.options.headerHozAlign;
-};
-
-Column.prototype._buildColumnHeaderContent = function () {
-       var def = this.definition,
-           table = this.table;
-
-       var contentElement = document.createElement("div");
-       contentElement.classList.add("tabulator-col-content");
-
-       this.titleHolderElement = document.createElement("div");
-       this.titleHolderElement.classList.add("tabulator-col-title-holder");
-
-       contentElement.appendChild(this.titleHolderElement);
-
-       this.titleElement = this._buildColumnHeaderTitle();
-
-       this.titleHolderElement.appendChild(this.titleElement);
-
-       return contentElement;
-};
-
-//build title element of column
-Column.prototype._buildColumnHeaderTitle = function () {
-       var self = this,
-           def = self.definition,
-           table = self.table,
-           title;
-
-       var titleHolderElement = document.createElement("div");
-       titleHolderElement.classList.add("tabulator-col-title");
-
-       if (def.editableTitle) {
-               var titleElement = document.createElement("input");
-               titleElement.classList.add("tabulator-title-editor");
-
-               titleElement.addEventListener("click", function (e) {
-                       e.stopPropagation();
-                       titleElement.focus();
-               });
-
-               titleElement.addEventListener("change", function () {
-                       def.title = titleElement.value;
-                       table.options.columnTitleChanged.call(self.table, self.getComponent());
-               });
-
-               titleHolderElement.appendChild(titleElement);
-
-               if (def.field) {
-                       table.modules.localize.bind("columns|" + def.field, function (text) {
-                               titleElement.value = text || def.title || "&nbsp;";
-                       });
-               } else {
-                       titleElement.value = def.title || "&nbsp;";
-               }
-       } else {
-               if (def.field) {
-                       table.modules.localize.bind("columns|" + def.field, function (text) {
-                               self._formatColumnHeaderTitle(titleHolderElement, text || def.title || "&nbsp;");
-                       });
-               } else {
-                       self._formatColumnHeaderTitle(titleHolderElement, def.title || "&nbsp;");
-               }
-       }
-
-       return titleHolderElement;
-};
-
-Column.prototype._formatColumnHeaderTitle = function (el, title) {
-       var _this7 = this;
-
-       var formatter, contents, params, mockCell, onRendered;
-
-       if (this.definition.titleFormatter && this.table.modExists("format")) {
-
-               formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
-
-               onRendered = function onRendered(callback) {
-                       _this7.titleFormatterRendered = callback;
-               };
-
-               mockCell = {
-                       getValue: function getValue() {
-                               return title;
-                       },
-                       getElement: function getElement() {
-                               return el;
-                       }
-               };
-
-               params = this.definition.titleFormatterParams || {};
-
-               params = typeof params === "function" ? params() : params;
-
-               contents = formatter.call(this.table.modules.format, mockCell, params, onRendered);
-
-               switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
-                       case "object":
-                               if (contents instanceof Node) {
-                                       el.appendChild(contents);
-                               } else {
-                                       el.innerHTML = "";
-                                       console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents);
-                               }
-                               break;
-                       case "undefined":
-                       case "null":
-                               el.innerHTML = "";
-                               break;
-                       default:
-                               el.innerHTML = contents;
-               }
-       } else {
-               el.innerHTML = title;
-       }
-};
-
-//build header element for column group
-Column.prototype._buildGroupHeader = function () {
-       var _this8 = this;
-
-       this.element.classList.add("tabulator-col-group");
-       this.element.setAttribute("role", "columngroup");
-       this.element.setAttribute("aria-title", this.definition.title);
-
-       //asign additional css classes to column header
-       if (this.definition.cssClass) {
-               var classeNames = this.definition.cssClass.split(" ");
-               classeNames.forEach(function (className) {
-                       _this8.element.classList.add(className);
-               });
-       }
-
-       //set column header context menu
-       if ((this.definition.headerContextMenu || this.definition.headerMenu) && this.table.modExists("menu")) {
-               this.table.modules.menu.initializeColumnHeader(this);
-       }
-
-       this.element.appendChild(this.groupElement);
-};
-
-//flat field lookup
-Column.prototype._getFlatData = function (data) {
-       return data[this.field];
-};
-
-//nested field lookup
-Column.prototype._getNestedData = function (data) {
-       var dataObj = data,
-           structure = this.fieldStructure,
-           length = structure.length,
-           output;
-
-       for (var _i = 0; _i < length; _i++) {
-
-               dataObj = dataObj[structure[_i]];
-
-               output = dataObj;
-
-               if (!dataObj) {
-                       break;
-               }
-       }
-
-       return output;
-};
-
-//flat field set
-Column.prototype._setFlatData = function (data, value) {
-       if (this.field) {
-               data[this.field] = value;
-       }
-};
-
-//nested field set
-Column.prototype._setNestedData = function (data, value) {
-       var dataObj = data,
-           structure = this.fieldStructure,
-           length = structure.length;
-
-       for (var _i2 = 0; _i2 < length; _i2++) {
-
-               if (_i2 == length - 1) {
-                       dataObj[structure[_i2]] = value;
-               } else {
-                       if (!dataObj[structure[_i2]]) {
-                               if (typeof value !== "undefined") {
-                                       dataObj[structure[_i2]] = {};
-                               } else {
-                                       break;
-                               }
-                       }
-
-                       dataObj = dataObj[structure[_i2]];
-               }
-       }
-};
-
-//attach column to this group
-Column.prototype.attachColumn = function (column) {
-       var self = this;
-
-       if (self.groupElement) {
-               self.columns.push(column);
-               self.groupElement.appendChild(column.getElement());
-       } else {
-               console.warn("Column Warning - Column being attached to another column instead of column group");
-       }
-};
-
-//vertically align header in column
-Column.prototype.verticalAlign = function (alignment, height) {
-
-       //calculate height of column header and group holder element
-       var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;
-       // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;
-
-       this.element.style.height = parentHeight + "px";
-
-       if (this.isGroup) {
-               this.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + "px";
-       }
-
-       //vertically align cell contents
-       if (!this.isGroup && alignment !== "top") {
-               if (alignment === "bottom") {
-                       this.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + "px";
-               } else {
-                       this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + "px";
-               }
-       }
-
-       this.columns.forEach(function (column) {
-               column.verticalAlign(alignment);
-       });
-};
-
-//clear vertical alignmenet
-Column.prototype.clearVerticalAlign = function () {
-       this.element.style.paddingTop = "";
-       this.element.style.height = "";
-       this.element.style.minHeight = "";
-       this.groupElement.style.minHeight = "";
-
-       this.columns.forEach(function (column) {
-               column.clearVerticalAlign();
-       });
-};
-
-Column.prototype.bindModuleColumns = function () {
-       //check if rownum formatter is being used on a column
-       if (this.definition.formatter == "rownum") {
-               this.table.rowManager.rowNumColumn = this;
-       }
-};
-
-//// Retreive Column Information ////
-
-//return column header element
-Column.prototype.getElement = function () {
-       return this.element;
-};
-
-//return colunm group element
-Column.prototype.getGroupElement = function () {
-       return this.groupElement;
-};
-
-//return field name
-Column.prototype.getField = function () {
-       return this.field;
-};
-
-//return the first column in a group
-Column.prototype.getFirstColumn = function () {
-       if (!this.isGroup) {
-               return this;
-       } else {
-               if (this.columns.length) {
-                       return this.columns[0].getFirstColumn();
-               } else {
-                       return false;
-               }
-       }
-};
-
-//return the last column in a group
-Column.prototype.getLastColumn = function () {
-       if (!this.isGroup) {
-               return this;
-       } else {
-               if (this.columns.length) {
-                       return this.columns[this.columns.length - 1].getLastColumn();
-               } else {
-                       return false;
-               }
-       }
-};
-
-//return all columns in a group
-Column.prototype.getColumns = function () {
-       return this.columns;
-};
-
-//return all columns in a group
-Column.prototype.getCells = function () {
-       return this.cells;
-};
-
-//retreive the top column in a group of columns
-Column.prototype.getTopColumn = function () {
-       if (this.parent.isGroup) {
-               return this.parent.getTopColumn();
-       } else {
-               return this;
-       }
-};
-
-//return column definition object
-Column.prototype.getDefinition = function (updateBranches) {
-       var colDefs = [];
-
-       if (this.isGroup && updateBranches) {
-               this.columns.forEach(function (column) {
-                       colDefs.push(column.getDefinition(true));
-               });
-
-               this.definition.columns = colDefs;
-       }
-
-       return this.definition;
-};
-
-//////////////////// Actions ////////////////////
-
-Column.prototype.checkColumnVisibility = function () {
-       var visible = false;
-
-       this.columns.forEach(function (column) {
-               if (column.visible) {
-                       visible = true;
-               }
-       });
-
-       if (visible) {
-               this.show();
-               this.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-       } else {
-               this.hide();
-       }
-};
-
-//show column
-Column.prototype.show = function (silent, responsiveToggle) {
-       if (!this.visible) {
-               this.visible = true;
-
-               this.element.style.display = "";
-
-               if (this.parent.isGroup) {
-                       this.parent.checkColumnVisibility();
-               }
-
-               this.cells.forEach(function (cell) {
-                       cell.show();
-               });
-
-               if (!this.isGroup && this.width === null) {
-                       this.reinitializeWidth();
-               }
-
-               this.table.columnManager._verticalAlignHeaders();
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-                       this.table.modules.persistence.save("columns");
-               }
-
-               if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-                       this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-               }
-
-               if (!silent) {
-                       this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);
-               }
-
-               if (this.parent.isGroup) {
-                       this.parent.matchChildWidths();
-               }
-       }
-};
-
-//hide column
-Column.prototype.hide = function (silent, responsiveToggle) {
-       if (this.visible) {
-               this.visible = false;
-
-               this.element.style.display = "none";
-
-               this.table.columnManager._verticalAlignHeaders();
-
-               if (this.parent.isGroup) {
-                       this.parent.checkColumnVisibility();
-               }
-
-               this.cells.forEach(function (cell) {
-                       cell.hide();
-               });
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-                       this.table.modules.persistence.save("columns");
-               }
-
-               if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-                       this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-               }
-
-               if (!silent) {
-                       this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-               }
-
-               if (this.parent.isGroup) {
-                       this.parent.matchChildWidths();
-               }
-       }
-};
-
-Column.prototype.matchChildWidths = function () {
-       var childWidth = 0;
-
-       if (this.contentElement && this.columns.length) {
-               this.columns.forEach(function (column) {
-                       if (column.visible) {
-                               childWidth += column.getWidth();
-                       }
-               });
-
-               this.contentElement.style.maxWidth = childWidth - 1 + "px";
-
-               if (this.parent.isGroup) {
-                       this.parent.matchChildWidths();
-               }
-       }
-};
-
-Column.prototype.setWidth = function (width) {
-       this.widthFixed = true;
-       this.setWidthActual(width);
-};
-
-Column.prototype.setWidthActual = function (width) {
-       if (isNaN(width)) {
-               width = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));
-       }
-
-       width = Math.max(this.minWidth, width);
-
-       this.width = width;
-       this.widthStyled = width ? width + "px" : "";
-
-       this.element.style.width = this.widthStyled;
-
-       if (!this.isGroup) {
-               this.cells.forEach(function (cell) {
-                       cell.setWidth();
-               });
-       }
-
-       if (this.parent.isGroup) {
-               this.parent.matchChildWidths();
-       }
-
-       //set resizable handles
-       if (this.table.modExists("frozenColumns")) {
-               this.table.modules.frozenColumns.layout();
-       }
-};
-
-Column.prototype.checkCellHeights = function () {
-       var rows = [];
-
-       this.cells.forEach(function (cell) {
-               if (cell.row.heightInitialized) {
-                       if (cell.row.getElement().offsetParent !== null) {
-                               rows.push(cell.row);
-                               cell.row.clearCellHeight();
-                       } else {
-                               cell.row.heightInitialized = false;
-                       }
-               }
-       });
-
-       rows.forEach(function (row) {
-               row.calcHeight();
-       });
-
-       rows.forEach(function (row) {
-               row.setCellHeight();
-       });
-};
-
-Column.prototype.getWidth = function () {
-       var width = 0;
-
-       if (this.isGroup) {
-               this.columns.forEach(function (column) {
-                       if (column.visible) {
-                               width += column.getWidth();
-                       }
-               });
-       } else {
-               width = this.width;
-       }
-
-       return width;
-};
-
-Column.prototype.getHeight = function () {
-       return this.element.offsetHeight;
-};
-
-Column.prototype.setMinWidth = function (minWidth) {
-       this.minWidth = minWidth;
-       this.minWidthStyled = minWidth ? minWidth + "px" : "";
-
-       this.element.style.minWidth = this.minWidthStyled;
-
-       this.cells.forEach(function (cell) {
-               cell.setMinWidth();
-       });
-};
-
-Column.prototype.delete = function () {
-       var _this9 = this;
-
-       return new Promise(function (resolve, reject) {
-
-               if (_this9.isGroup) {
-                       _this9.columns.forEach(function (column) {
-                               column.delete();
-                       });
-               }
-
-               //cancel edit if column is currently being edited
-               if (_this9.table.modExists("edit")) {
-                       if (_this9.table.modules.edit.currentCell.column === _this9) {
-                               _this9.table.modules.edit.cancelEdit();
-                       }
-               }
-
-               var cellCount = _this9.cells.length;
-
-               for (var _i3 = 0; _i3 < cellCount; _i3++) {
-                       _this9.cells[0].delete();
-               }
-
-               if (_this9.element.parentNode) {
-                       _this9.element.parentNode.removeChild(_this9.element);
-               }
-
-               _this9.element = false;
-               _this9.contentElement = false;
-               _this9.titleElement = false;
-               _this9.groupElement = false;
-
-               _this9.table.columnManager.deregisterColumn(_this9);
-
-               if (_this9.table.options.virtualDomHoz) {
-                       _this9.table.vdomHoz.reinitialize(true);
-               }
-
-               resolve();
-       });
-};
-
-Column.prototype.columnRendered = function () {
-       if (this.titleFormatterRendered) {
-               this.titleFormatterRendered();
-       }
-};
-
-Column.prototype.validate = function () {
-       var invalid = [];
-
-       this.cells.forEach(function (cell) {
-               if (!cell.validate()) {
-                       invalid.push(cell.getComponent());
-               }
-       });
-
-       return invalid.length ? invalid : true;
-};
-
-//////////////// Cell Management /////////////////
-
-//generate cell for this column
-Column.prototype.generateCell = function (row) {
-       var self = this;
-
-       var cell = new Cell(self, row);
-
-       this.cells.push(cell);
-
-       return cell;
-};
-
-Column.prototype.nextColumn = function () {
-       var index = this.table.columnManager.findColumnIndex(this);
-       return index > -1 ? this._nextVisibleColumn(index + 1) : false;
-};
-
-Column.prototype._nextVisibleColumn = function (index) {
-       var column = this.table.columnManager.getColumnByIndex(index);
-       return !column || column.visible ? column : this._nextVisibleColumn(index + 1);
-};
-
-Column.prototype.prevColumn = function () {
-       var index = this.table.columnManager.findColumnIndex(this);
-       return index > -1 ? this._prevVisibleColumn(index - 1) : false;
-};
-
-Column.prototype._prevVisibleColumn = function (index) {
-       var column = this.table.columnManager.getColumnByIndex(index);
-       return !column || column.visible ? column : this._prevVisibleColumn(index - 1);
-};
-
-Column.prototype.reinitializeWidth = function (force) {
-       this.widthFixed = false;
-
-       //set width if present
-       if (typeof this.definition.width !== "undefined" && !force) {
-               this.setWidth(this.definition.width);
-       }
-
-       //hide header filters to prevent them altering column width
-       if (this.table.modExists("filter")) {
-               this.table.modules.filter.hideHeaderFilterElements();
-       }
-
-       this.fitToData();
-
-       //show header filters again after layout is complete
-       if (this.table.modExists("filter")) {
-               this.table.modules.filter.showHeaderFilterElements();
-       }
-};
-
-//set column width to maximum cell width
-Column.prototype.fitToData = function () {
-       var self = this;
-
-       if (!this.widthFixed) {
-               this.element.style.width = "";
-
-               self.cells.forEach(function (cell) {
-                       cell.clearWidth();
-               });
-       }
-
-       var maxWidth = this.element.offsetWidth;
-
-       if (!self.width || !this.widthFixed) {
-               self.cells.forEach(function (cell) {
-                       var width = cell.getWidth();
-
-                       if (width > maxWidth) {
-                               maxWidth = width;
-                       }
-               });
-
-               if (maxWidth) {
-                       self.setWidthActual(maxWidth + 1);
-               }
-       }
-};
-
-Column.prototype.updateDefinition = function (updates) {
-       var _this10 = this;
-
-       return new Promise(function (resolve, reject) {
-               var definition;
-
-               if (!_this10.isGroup) {
-                       definition = Object.assign({}, _this10.getDefinition());
-                       definition = Object.assign(definition, updates);
-
-                       _this10.table.columnManager.addColumn(definition, false, _this10).then(function (column) {
-
-                               if (definition.field == _this10.field) {
-                                       _this10.field = false; //cleair field name to prevent deletion of duplicate column from arrays
-                               }
-
-                               _this10.delete().then(function () {
-                                       resolve(column.getComponent());
-                               }).catch(function (err) {
-                                       reject(err);
-                               });
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Column Update Error - The updateDefinition function is only available on columns, not column groups");
-                       reject("Column Update Error - The updateDefinition function is only available on columns, not column groups");
-               }
-       });
-};
-
-Column.prototype.deleteCell = function (cell) {
-       var index = this.cells.indexOf(cell);
-
-       if (index > -1) {
-               this.cells.splice(index, 1);
-       }
-};
-
-Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "hozAlign", "vertAlign", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "accessorPrint", "accessorPrintParams", "accessorHtmlOutput", "accessorHtmlOutputParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "headerHozAlign", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print", "headerContextMenu", "headerMenu", "contextMenu",
-// "headerClickMenu",
-"clickMenu", "formatterPrint", "formatterPrintParams", "formatterClipboard", "formatterClipboardParams", "formatterHtmlOutput", "formatterHtmlOutputParams", "titlePrint", "titleClipboard", "titleHtmlOutput", "titleDownload"];
-
-//////////////// Event Bindings /////////////////
-
-//////////////// Object Generation /////////////////
-Column.prototype.getComponent = function () {
-       if (!this.component) {
-               this.component = new ColumnComponent(this);
-       }
-
-       return this.component;
-};
-
-var RowManager = function RowManager(table) {
-
-       this.table = table;
-       this.element = this.createHolderElement(); //containing element
-       this.tableElement = this.createTableElement(); //table element
-       this.heightFixer = this.createTableElement(); //table element
-       this.columnManager = null; //hold column manager object
-       this.height = 0; //hold height of table element
-
-       this.firstRender = false; //handle first render
-       this.renderMode = "virtual"; //current rendering mode
-       this.fixedHeight = false; //current rendering mode
-
-       this.rows = []; //hold row data objects
-       this.activeRows = []; //rows currently available to on display in the table
-       this.activeRowsCount = 0; //count of active rows
-
-       this.displayRows = []; //rows currently on display in the table
-       this.displayRowsCount = 0; //count of display rows
-
-       this.scrollTop = 0;
-       this.scrollLeft = 0;
-
-       this.vDomRowHeight = 20; //approximation of row heights for padding
-
-       this.vDomTop = 0; //hold position for first rendered row in the virtual DOM
-       this.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM
-
-       this.vDomScrollPosTop = 0; //last scroll position of the vDom top;
-       this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;
-
-       this.vDomTopPad = 0; //hold value of padding for top of virtual DOM
-       this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM
-
-       this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go
-
-       this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling
-
-       this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)
-       this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin
-
-       this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
-       this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
-
-       this.rowNumColumn = false; //hold column component for row number column
-
-       this.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing
-       this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed
-       this.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed
-};
-
-//////////////// Setup Functions /////////////////
-
-RowManager.prototype.createHolderElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-tableHolder");
-       el.setAttribute("tabindex", 0);
-
-       return el;
-};
-
-RowManager.prototype.createTableElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-table");
-
-       return el;
-};
-
-//return containing element
-RowManager.prototype.getElement = function () {
-       return this.element;
-};
-
-//return table element
-RowManager.prototype.getTableElement = function () {
-       return this.tableElement;
-};
-
-//return position of row in table
-RowManager.prototype.getRowPosition = function (row, active) {
-       if (active) {
-               return this.activeRows.indexOf(row);
-       } else {
-               return this.rows.indexOf(row);
-       }
-};
-
-//link to column manager
-RowManager.prototype.setColumnManager = function (manager) {
-       this.columnManager = manager;
-};
-
-RowManager.prototype.initialize = function () {
-       var self = this;
-
-       self.setRenderMode();
-
-       //initialize manager
-       self.element.appendChild(self.tableElement);
-
-       self.firstRender = true;
-
-       //scroll header along with table body
-       self.element.addEventListener("scroll", function () {
-               var left = self.element.scrollLeft;
-
-               //handle horizontal scrolling
-               if (self.scrollLeft != left) {
-                       self.columnManager.scrollHorizontal(left);
-
-                       if (self.table.options.groupBy) {
-                               self.table.modules.groupRows.scrollHeaders(left);
-                       }
-
-                       if (self.table.modExists("columnCalcs")) {
-                               self.table.modules.columnCalcs.scrollHorizontal(left);
-                       }
-
-                       self.table.options.scrollHorizontal(left);
-               }
-
-               self.scrollLeft = left;
-       });
-
-       //handle virtual dom scrolling
-       if (this.renderMode === "virtual") {
-
-               self.element.addEventListener("scroll", function () {
-                       var top = self.element.scrollTop;
-                       var dir = self.scrollTop > top;
-
-                       //handle verical scrolling
-                       if (self.scrollTop != top) {
-                               self.scrollTop = top;
-                               self.scrollVertical(dir);
-
-                               if (self.table.options.ajaxProgressiveLoad == "scroll") {
-                                       self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
-                               }
-
-                               self.table.options.scrollVertical(top);
-                       } else {
-                               self.scrollTop = top;
-                       }
-               });
-       }
-};
-
-////////////////// Row Manipulation //////////////////
-
-RowManager.prototype.findRow = function (subject) {
-       var self = this;
-
-       if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-               if (subject instanceof Row) {
-                       //subject is row element
-                       return subject;
-               } else if (subject instanceof RowComponent) {
-                       //subject is public row component
-                       return subject._getSelf() || false;
-               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-                       //subject is a HTML element of the row
-                       var match = self.rows.find(function (row) {
-                               return row.element === subject;
-                       });
-
-                       return match || false;
-               }
-       } else if (typeof subject == "undefined" || subject === null) {
-               return false;
-       } else {
-               //subject should be treated as the index of the row
-               var _match = self.rows.find(function (row) {
-                       return row.data[self.table.options.index] == subject;
-               });
-
-               return _match || false;
-       }
-
-       //catch all for any other type of input
-
-       return false;
-};
-
-RowManager.prototype.getRowFromDataObject = function (data) {
-       var match = this.rows.find(function (row) {
-               return row.data === data;
-       });
-
-       return match || false;
-};
-
-RowManager.prototype.getRowFromPosition = function (position, active) {
-       if (active) {
-               return this.activeRows[position];
-       } else {
-               return this.rows[position];
-       }
-};
-
-RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
-       var _this11 = this;
-
-       var rowIndex = this.getDisplayRows().indexOf(row),
-           rowEl = row.getElement(),
-           rowTop,
-           offset = 0;
-
-       return new Promise(function (resolve, reject) {
-               if (rowIndex > -1) {
-
-                       if (typeof position === "undefined") {
-                               position = _this11.table.options.scrollToRowPosition;
-                       }
-
-                       if (typeof ifVisible === "undefined") {
-                               ifVisible = _this11.table.options.scrollToRowIfVisible;
-                       }
-
-                       if (position === "nearest") {
-                               switch (_this11.renderMode) {
-                                       case "classic":
-                                               rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
-                                               position = Math.abs(_this11.element.scrollTop - rowTop) > Math.abs(_this11.element.scrollTop + _this11.element.clientHeight - rowTop) ? "bottom" : "top";
-                                               break;
-                                       case "virtual":
-                                               position = Math.abs(_this11.vDomTop - rowIndex) > Math.abs(_this11.vDomBottom - rowIndex) ? "bottom" : "top";
-                                               break;
-                               }
-                       }
-
-                       //check row visibility
-                       if (!ifVisible) {
-                               if (Tabulator.prototype.helpers.elVisible(rowEl)) {
-                                       offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this11.element).top;
-
-                                       if (offset > 0 && offset < _this11.element.clientHeight - rowEl.offsetHeight) {
-                                               return false;
-                                       }
-                               }
-                       }
-
-                       //scroll to row
-                       switch (_this11.renderMode) {
-                               case "classic":
-                                       _this11.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this11.element).top + _this11.element.scrollTop;
-                                       break;
-                               case "virtual":
-                                       _this11._virtualRenderFill(rowIndex, true);
-                                       break;
-                       }
-
-                       //align to correct position
-                       switch (position) {
-                               case "middle":
-                               case "center":
-
-                                       if (_this11.element.scrollHeight - _this11.element.scrollTop == _this11.element.clientHeight) {
-                                               _this11.element.scrollTop = _this11.element.scrollTop + (rowEl.offsetTop - _this11.element.scrollTop) - (_this11.element.scrollHeight - rowEl.offsetTop) / 2;
-                                       } else {
-                                               _this11.element.scrollTop = _this11.element.scrollTop - _this11.element.clientHeight / 2;
-                                       }
-
-                                       break;
-
-                               case "bottom":
-
-                                       if (_this11.element.scrollHeight - _this11.element.scrollTop == _this11.element.clientHeight) {
-                                               _this11.element.scrollTop = _this11.element.scrollTop - (_this11.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
-                                       } else {
-                                               _this11.element.scrollTop = _this11.element.scrollTop - _this11.element.clientHeight + rowEl.offsetHeight;
-                                       }
-
-                                       break;
-                       }
-
-                       resolve();
-               } else {
-                       console.warn("Scroll Error - Row not visible");
-                       reject("Scroll Error - Row not visible");
-               }
-       });
-};
-
-////////////////// Data Handling //////////////////
-
-RowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {
-       var _this12 = this;
-
-       var self = this;
-
-       return new Promise(function (resolve, reject) {
-               if (renderInPosition && _this12.getDisplayRows().length) {
-                       if (self.table.options.pagination) {
-                               self._setDataActual(data, true);
-                       } else {
-                               _this12.reRenderInPosition(function () {
-                                       self._setDataActual(data);
-                               });
-                       }
-               } else {
-                       if (_this12.table.options.autoColumns && columnsChanged) {
-                               _this12.table.columnManager.generateColumnsFromRowData(data);
-                       }
-                       _this12.resetScroll();
-
-                       _this12._setDataActual(data);
-               }
-
-               resolve();
-       });
-};
-
-RowManager.prototype._setDataActual = function (data, renderInPosition) {
-       var self = this;
-
-       self.table.options.dataLoading.call(this.table, data);
-
-       this._wipeElements();
-
-       if (this.table.options.history && this.table.modExists("history")) {
-               this.table.modules.history.clear();
-       }
-
-       if (Array.isArray(data)) {
-
-               if (this.table.modExists("selectRow")) {
-                       this.table.modules.selectRow.clearSelectionData();
-               }
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-                       this.table.modules.reactiveData.watchData(data);
-               }
-
-               data.forEach(function (def, i) {
-                       if (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === "object") {
-                               var row = new Row(def, self);
-                               self.rows.push(row);
-                       } else {
-                               console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def);
-                       }
-               });
-
-               self.refreshActiveData(false, false, renderInPosition);
-
-               self.table.options.dataLoaded.call(this.table, data);
-       } else {
-               console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
-       }
-};
-
-RowManager.prototype._wipeElements = function () {
-       this.rows.forEach(function (row) {
-               row.wipe();
-       });
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.wipe();
-       }
-
-       this.rows = [];
-       this.activeRows = [];
-       this.activeRowsCount = 0;
-       this.displayRows = [];
-       this.displayRowsCount = 0;
-
-       this.adjustTableSize();
-};
-
-RowManager.prototype.deleteRow = function (row, blockRedraw) {
-       var allIndex = this.rows.indexOf(row),
-           activeIndex = this.activeRows.indexOf(row);
-
-       if (activeIndex > -1) {
-               this.activeRows.splice(activeIndex, 1);
-       }
-
-       if (allIndex > -1) {
-               this.rows.splice(allIndex, 1);
-       }
-
-       this.setActiveRows(this.activeRows);
-
-       this.displayRowIterator(function (rows) {
-               var displayIndex = rows.indexOf(row);
-
-               if (displayIndex > -1) {
-                       rows.splice(displayIndex, 1);
-               }
-       });
-
-       if (!blockRedraw) {
-               this.reRenderInPosition();
-       }
-
-       this.regenerateRowNumbers();
-
-       this.table.options.rowDeleted.call(this.table, row.getComponent());
-
-       if (this.table.options.dataChanged) {
-               this.table.options.dataChanged.call(this.table, this.getData());
-       }
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.updateGroupRows(true);
-       } else if (this.table.options.pagination && this.table.modExists("page")) {
-               this.refreshActiveData(false, false, true);
-       } else {
-               if (this.table.options.pagination && this.table.modExists("page")) {
-                       this.refreshActiveData("page");
-               }
-       }
-};
-
-RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
-
-       var row = this.addRowActual(data, pos, index, blockRedraw);
-
-       if (this.table.options.history && this.table.modExists("history")) {
-               this.table.modules.history.action("rowAdd", row, { data: data, pos: pos, index: index });
-       }
-
-       return row;
-};
-
-//add multiple rows
-RowManager.prototype.addRows = function (data, pos, index) {
-       var _this13 = this;
-
-       var self = this,
-           length = 0,
-           rows = [];
-
-       return new Promise(function (resolve, reject) {
-               pos = _this13.findAddRowPos(pos);
-
-               if (!Array.isArray(data)) {
-                       data = [data];
-               }
-
-               length = data.length - 1;
-
-               if (typeof index == "undefined" && pos || typeof index !== "undefined" && !pos) {
-                       data.reverse();
-               }
-
-               data.forEach(function (item, i) {
-                       var row = self.addRow(item, pos, index, true);
-                       rows.push(row);
-               });
-
-               if (_this13.table.options.groupBy && _this13.table.modExists("groupRows")) {
-                       _this13.table.modules.groupRows.updateGroupRows(true);
-               } else if (_this13.table.options.pagination && _this13.table.modExists("page")) {
-                       _this13.refreshActiveData(false, false, true);
-               } else {
-                       _this13.reRenderInPosition();
-               }
-
-               //recalc column calculations if present
-               if (_this13.table.modExists("columnCalcs")) {
-                       _this13.table.modules.columnCalcs.recalc(_this13.table.rowManager.activeRows);
-               }
-
-               _this13.regenerateRowNumbers();
-               resolve(rows);
-       });
-};
-
-RowManager.prototype.findAddRowPos = function (pos) {
-       if (typeof pos === "undefined") {
-               pos = this.table.options.addRowPos;
-       }
-
-       if (pos === "pos") {
-               pos = true;
-       }
-
-       if (pos === "bottom") {
-               pos = false;
-       }
-
-       return pos;
-};
-
-RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
-       var row = data instanceof Row ? data : new Row(data || {}, this),
-           top = this.findAddRowPos(pos),
-           allIndex = -1,
-           activeIndex,
-           dispRows;
-
-       if (!index && this.table.options.pagination && this.table.options.paginationAddRow == "page") {
-               dispRows = this.getDisplayRows();
-
-               if (top) {
-                       if (dispRows.length) {
-                               index = dispRows[0];
-                       } else {
-                               if (this.activeRows.length) {
-                                       index = this.activeRows[this.activeRows.length - 1];
-                                       top = false;
-                               }
-                       }
-               } else {
-                       if (dispRows.length) {
-                               index = dispRows[dispRows.length - 1];
-                               top = dispRows.length < this.table.modules.page.getPageSize() ? false : true;
-                       }
-               }
-       }
-
-       if (typeof index !== "undefined") {
-               index = this.findRow(index);
-       }
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.assignRowToGroup(row);
-
-               var groupRows = row.getGroup().rows;
-
-               if (groupRows.length > 1) {
-
-                       if (!index || index && groupRows.indexOf(index) == -1) {
-                               if (top) {
-                                       if (groupRows[0] !== row) {
-                                               index = groupRows[0];
-                                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                       }
-                               } else {
-                                       if (groupRows[groupRows.length - 1] !== row) {
-                                               index = groupRows[groupRows.length - 1];
-                                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                       }
-                               }
-                       } else {
-                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                       }
-               }
-       }
-
-       if (index) {
-               allIndex = this.rows.indexOf(index);
-       }
-
-       if (index && allIndex > -1) {
-               activeIndex = this.activeRows.indexOf(index);
-
-               this.displayRowIterator(function (rows) {
-                       var displayIndex = rows.indexOf(index);
-
-                       if (displayIndex > -1) {
-                               rows.splice(top ? displayIndex : displayIndex + 1, 0, row);
-                       }
-               });
-
-               if (activeIndex > -1) {
-                       this.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);
-               }
-
-               this.rows.splice(top ? allIndex : allIndex + 1, 0, row);
-       } else {
-
-               if (top) {
-
-                       this.displayRowIterator(function (rows) {
-                               rows.unshift(row);
-                       });
-
-                       this.activeRows.unshift(row);
-                       this.rows.unshift(row);
-               } else {
-                       this.displayRowIterator(function (rows) {
-                               rows.push(row);
-                       });
-
-                       this.activeRows.push(row);
-                       this.rows.push(row);
-               }
-       }
-
-       this.setActiveRows(this.activeRows);
-
-       this.table.options.rowAdded.call(this.table, row.getComponent());
-
-       if (this.table.options.dataChanged) {
-               this.table.options.dataChanged.call(this.table, this.getData());
-       }
-
-       if (!blockRedraw) {
-               this.reRenderInPosition();
-       }
-
-       return row;
-};
-
-RowManager.prototype.moveRow = function (from, to, after) {
-       if (this.table.options.history && this.table.modExists("history")) {
-               this.table.modules.history.action("rowMove", from, { posFrom: this.getRowPosition(from), posTo: this.getRowPosition(to), to: to, after: after });
-       }
-
-       this.moveRowActual(from, to, after);
-
-       this.regenerateRowNumbers();
-
-       this.table.options.rowMoved.call(this.table, from.getComponent());
-};
-
-RowManager.prototype.moveRowActual = function (from, to, after) {
-       var _this14 = this;
-
-       this._moveRowInArray(this.rows, from, to, after);
-       this._moveRowInArray(this.activeRows, from, to, after);
-
-       this.displayRowIterator(function (rows) {
-               _this14._moveRowInArray(rows, from, to, after);
-       });
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-               if (!after && to instanceof Group) {
-                       to = this.table.rowManager.prevDisplayRow(from) || to;
-               }
-
-               var toGroup = to.getGroup();
-               var fromGroup = from.getGroup();
-
-               if (toGroup === fromGroup) {
-                       this._moveRowInArray(toGroup.rows, from, to, after);
-               } else {
-                       if (fromGroup) {
-                               fromGroup.removeRow(from);
-                       }
-
-                       toGroup.insertRow(from, to, after);
-               }
-       }
-};
-
-RowManager.prototype._moveRowInArray = function (rows, from, to, after) {
-       var fromIndex, toIndex, start, end;
-
-       if (from !== to) {
-
-               fromIndex = rows.indexOf(from);
-
-               if (fromIndex > -1) {
-
-                       rows.splice(fromIndex, 1);
-
-                       toIndex = rows.indexOf(to);
-
-                       if (toIndex > -1) {
-
-                               if (after) {
-                                       rows.splice(toIndex + 1, 0, from);
-                               } else {
-                                       rows.splice(toIndex, 0, from);
-                               }
-                       } else {
-                               rows.splice(fromIndex, 0, from);
-                       }
-               }
-
-               //restyle rows
-               if (rows === this.getDisplayRows()) {
-
-                       start = fromIndex < toIndex ? fromIndex : toIndex;
-                       end = toIndex > fromIndex ? toIndex : fromIndex + 1;
-
-                       for (var _i4 = start; _i4 <= end; _i4++) {
-                               if (rows[_i4]) {
-                                       this.styleRow(rows[_i4], _i4);
-                               }
-                       }
-               }
-       }
-};
-
-RowManager.prototype.clearData = function () {
-       this.setData([]);
-};
-
-RowManager.prototype.getRowIndex = function (row) {
-       return this.findRowIndex(row, this.rows);
-};
-
-RowManager.prototype.getDisplayRowIndex = function (row) {
-       var index = this.getDisplayRows().indexOf(row);
-       return index > -1 ? index : false;
-};
-
-RowManager.prototype.nextDisplayRow = function (row, rowOnly) {
-       var index = this.getDisplayRowIndex(row),
-           nextRow = false;
-
-       if (index !== false && index < this.displayRowsCount - 1) {
-               nextRow = this.getDisplayRows()[index + 1];
-       }
-
-       if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
-               return this.nextDisplayRow(nextRow, rowOnly);
-       }
-
-       return nextRow;
-};
-
-RowManager.prototype.prevDisplayRow = function (row, rowOnly) {
-       var index = this.getDisplayRowIndex(row),
-           prevRow = false;
-
-       if (index) {
-               prevRow = this.getDisplayRows()[index - 1];
-       }
-
-       if (rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
-               return this.prevDisplayRow(prevRow, rowOnly);
-       }
-
-       return prevRow;
-};
-
-RowManager.prototype.findRowIndex = function (row, list) {
-       var rowIndex;
-
-       row = this.findRow(row);
-
-       if (row) {
-               rowIndex = list.indexOf(row);
-
-               if (rowIndex > -1) {
-                       return rowIndex;
-               }
-       }
-
-       return false;
-};
-
-RowManager.prototype.getData = function (active, transform) {
-       var output = [],
-           rows = this.getRows(active);
-
-       rows.forEach(function (row) {
-               if (row.type == "row") {
-                       output.push(row.getData(transform || "data"));
-               }
-       });
-
-       return output;
-};
-
-RowManager.prototype.getComponents = function (active) {
-       var output = [],
-           rows = this.getRows(active);
-
-       rows.forEach(function (row) {
-               output.push(row.getComponent());
-       });
-
-       return output;
-};
-
-RowManager.prototype.getDataCount = function (active) {
-       var rows = this.getRows(active);
-
-       return rows.length;
-};
-
-RowManager.prototype._genRemoteRequest = function () {
-       var _this15 = this;
-
-       var table = this.table,
-           options = table.options,
-           params = {};
-
-       if (table.modExists("page")) {
-               //set sort data if defined
-               if (options.ajaxSorting) {
-                       var sorters = this.table.modules.sort.getSort();
-
-                       sorters.forEach(function (item) {
-                               delete item.column;
-                       });
-
-                       params[this.table.modules.page.paginationDataSentNames.sorters] = sorters;
-               }
-
-               //set filter data if defined
-               if (options.ajaxFiltering) {
-                       var filters = this.table.modules.filter.getFilters(true, true);
-
-                       params[this.table.modules.page.paginationDataSentNames.filters] = filters;
-               }
-
-               this.table.modules.ajax.setParams(params, true);
-       }
-
-       table.modules.ajax.sendRequest().then(function (data) {
-               _this15._setDataActual(data, true);
-       }).catch(function (e) {});
-};
-
-//choose the path to refresh data after a filter update
-RowManager.prototype.filterRefresh = function () {
-       var table = this.table,
-           options = table.options,
-           left = this.scrollLeft;
-
-       if (options.ajaxFiltering) {
-               if (options.pagination == "remote" && table.modExists("page")) {
-                       table.modules.page.reset(true);
-                       table.modules.page.setPage(1).then(function () {}).catch(function () {});
-               } else if (options.ajaxProgressiveLoad) {
-                       table.modules.ajax.loadData().then(function () {}).catch(function () {});
-               } else {
-                       //assume data is url, make ajax call to url to get data
-                       this._genRemoteRequest();
-               }
-       } else {
-               this.refreshActiveData("filter");
-       }
-
-       this.scrollHorizontal(left);
-};
-
-//choose the path to refresh data after a sorter update
-RowManager.prototype.sorterRefresh = function (loadOrignalData) {
-       var table = this.table,
-           options = this.table.options,
-           left = this.scrollLeft;
-
-       if (options.ajaxSorting) {
-               if ((options.pagination == "remote" || options.progressiveLoad) && table.modExists("page")) {
-                       table.modules.page.reset(true);
-                       table.modules.page.setPage(1).then(function () {}).catch(function () {});
-               } else if (options.ajaxProgressiveLoad) {
-                       table.modules.ajax.loadData().then(function () {}).catch(function () {});
-               } else {
-                       //assume data is url, make ajax call to url to get data
-                       this._genRemoteRequest();
-               }
-       } else {
-               this.refreshActiveData(loadOrignalData ? "filter" : "sort");
-       }
-
-       this.scrollHorizontal(left);
-};
-
-RowManager.prototype.scrollHorizontal = function (left) {
-       this.scrollLeft = left;
-       this.element.scrollLeft = left;
-
-       if (this.table.options.groupBy) {
-               this.table.modules.groupRows.scrollHeaders(left);
-       }
-
-       if (this.table.modExists("columnCalcs")) {
-               this.table.modules.columnCalcs.scrollHorizontal(left);
-       }
-};
-
-//set active data set
-RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
-       var self = this,
-           table = this.table,
-           cascadeOrder = ["all", "filter", "sort", "display", "freeze", "group", "tree", "page"],
-           displayIndex;
-
-       if (this.redrawBlock) {
-
-               if (!this.redrawBlockRestoreConfig || cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage)) {
-                       this.redrawBlockRestoreConfig = {
-                               stage: stage,
-                               skipStage: skipStage,
-                               renderInPosition: renderInPosition
-                       };
-               }
-
-               return;
-       } else {
-
-               if (self.table.modExists("edit")) {
-                       self.table.modules.edit.cancelEdit();
-               }
-
-               if (!stage) {
-                       stage = "all";
-               }
-
-               if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
-                       table.modules.selectRow.deselectRows();
-               }
-
-               //cascade through data refresh stages
-               switch (stage) {
-                       case "all":
-
-                       case "filter":
-                               if (!skipStage) {
-                                       if (table.modExists("filter")) {
-                                               self.setActiveRows(table.modules.filter.filter(self.rows));
-                                       } else {
-                                               self.setActiveRows(self.rows.slice(0));
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                       case "sort":
-                               if (!skipStage) {
-                                       if (table.modExists("sort")) {
-                                               table.modules.sort.sort(this.activeRows);
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                               //regenerate row numbers for row number formatter if in use
-                               this.regenerateRowNumbers();
-
-                       //generic stage to allow for pipeline trigger after the data manipulation stage
-                       case "display":
-                               this.resetDisplayRows();
-
-                       case "freeze":
-                               if (!skipStage) {
-                                       if (this.table.modExists("frozenRows")) {
-                                               if (table.modules.frozenRows.isFrozen()) {
-                                                       if (!table.modules.frozenRows.getDisplayIndex()) {
-                                                               table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
-
-                                                       displayIndex = table.modules.frozenRows.getDisplayIndex();
-
-                                                       displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                       if (displayIndex !== true) {
-                                                               table.modules.frozenRows.setDisplayIndex(displayIndex);
-                                                       }
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                       case "group":
-                               if (!skipStage) {
-                                       if (table.options.groupBy && table.modExists("groupRows")) {
-
-                                               if (!table.modules.groupRows.getDisplayIndex()) {
-                                                       table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
-
-                                               displayIndex = table.modules.groupRows.getDisplayIndex();
-
-                                               displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                               if (displayIndex !== true) {
-                                                       table.modules.groupRows.setDisplayIndex(displayIndex);
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                       case "tree":
-
-                               if (!skipStage) {
-                                       if (table.options.dataTree && table.modExists("dataTree")) {
-                                               if (!table.modules.dataTree.getDisplayIndex()) {
-                                                       table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
-
-                                               displayIndex = table.modules.dataTree.getDisplayIndex();
-
-                                               displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                               if (displayIndex !== true) {
-                                                       table.modules.dataTree.setDisplayIndex(displayIndex);
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                               if (table.options.pagination && table.modExists("page") && !renderInPosition) {
-                                       if (table.modules.page.getMode() == "local") {
-                                               table.modules.page.reset();
-                                       }
-                               }
-
-                       case "page":
-                               if (!skipStage) {
-                                       if (table.options.pagination && table.modExists("page")) {
-
-                                               if (!table.modules.page.getDisplayIndex()) {
-                                                       table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
-
-                                               displayIndex = table.modules.page.getDisplayIndex();
-
-                                               if (table.modules.page.getMode() == "local") {
-                                                       table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
-                                               }
-
-                                               displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                               if (displayIndex !== true) {
-                                                       table.modules.page.setDisplayIndex(displayIndex);
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-               }
-
-               if (Tabulator.prototype.helpers.elVisible(self.element)) {
-                       if (renderInPosition) {
-                               self.reRenderInPosition();
-                       } else {
-
-                               if (stage === "all" && this.table.options.virtualDomHoz) {
-                                       this.table.vdomHoz.dataChange();
-                               }
-
-                               self.renderTable();
-
-                               if (table.options.layoutColumnsOnNewData) {
-                                       self.table.columnManager.redraw(true);
-                               }
-                       }
-               }
-
-               if (table.modExists("columnCalcs")) {
-                       table.modules.columnCalcs.recalc(this.activeRows);
-               }
-       }
-};
-
-//regenerate row numbers for row number formatter if in use
-RowManager.prototype.regenerateRowNumbers = function () {
-       var _this16 = this;
-
-       if (this.rowNumColumn) {
-               this.activeRows.forEach(function (row) {
-                       var cell = row.getCell(_this16.rowNumColumn);
-
-                       if (cell) {
-                               cell._generateContents();
-                       }
-               });
-       }
-};
-
-RowManager.prototype.setActiveRows = function (activeRows) {
-       this.activeRows = activeRows;
-       this.activeRowsCount = this.activeRows.length;
-};
-
-//reset display rows array
-RowManager.prototype.resetDisplayRows = function () {
-       this.displayRows = [];
-
-       this.displayRows.push(this.activeRows.slice(0));
-
-       this.displayRowsCount = this.displayRows[0].length;
-
-       if (this.table.modExists("frozenRows")) {
-               this.table.modules.frozenRows.setDisplayIndex(0);
-       }
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.setDisplayIndex(0);
-       }
-
-       if (this.table.options.pagination && this.table.modExists("page")) {
-               this.table.modules.page.setDisplayIndex(0);
-       }
-};
-
-RowManager.prototype.getNextDisplayIndex = function () {
-       return this.displayRows.length;
-};
-
-//set display row pipeline data
-RowManager.prototype.setDisplayRows = function (displayRows, index) {
-
-       var output = true;
-
-       if (index && typeof this.displayRows[index] != "undefined") {
-               this.displayRows[index] = displayRows;
-               output = true;
-       } else {
-               this.displayRows.push(displayRows);
-               output = index = this.displayRows.length - 1;
-       }
-
-       if (index == this.displayRows.length - 1) {
-               this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-       }
-
-       return output;
-};
-
-RowManager.prototype.getDisplayRows = function (index) {
-       if (typeof index == "undefined") {
-               return this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];
-       } else {
-               return this.displayRows[index] || [];
-       }
-};
-
-RowManager.prototype.getVisibleRows = function (viewable) {
-       var topEdge = this.element.scrollTop,
-           bottomEdge = this.element.clientHeight + topEdge,
-           topFound = false,
-           topRow = 0,
-           bottomRow = 0,
-           rows = this.getDisplayRows();
-
-       if (viewable) {
-
-               this.getDisplayRows();
-               for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-                       if (rows[i]) {
-                               if (!topFound) {
-                                       if (topEdge - rows[i].getElement().offsetTop >= 0) {
-                                               topRow = i;
-                                       } else {
-                                               topFound = true;
-
-                                               if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-                                                       bottomRow = i;
-                                               } else {
-                                                       break;
-                                               }
-                                       }
-                               } else {
-                                       if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-                                               bottomRow = i;
-                                       } else {
-                                               break;
-                                       }
-                               }
-                       }
-               }
-       } else {
-               topRow = this.vDomTop;
-               bottomRow = this.vDomBottom;
-       }
-
-       return rows.slice(topRow, bottomRow + 1);
-};
-
-//repeat action accross display rows
-RowManager.prototype.displayRowIterator = function (callback) {
-       this.displayRows.forEach(callback);
-
-       this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-};
-
-//return only actual rows (not group headers etc)
-RowManager.prototype.getRows = function (active) {
-       var rows;
-
-       switch (active) {
-               case "active":
-                       rows = this.activeRows;
-                       break;
-
-               case "display":
-                       rows = this.table.rowManager.getDisplayRows();
-                       break;
-
-               case "visible":
-                       rows = this.getVisibleRows(true);
-                       break;
-
-               case "selected":
-                       rows = this.table.modules.selectRow.selectedRows;
-                       break;
-
-               default:
-                       rows = this.rows;
-       }
-
-       return rows;
-};
-
-///////////////// Table Rendering /////////////////
-
-//trigger rerender of table in current position
-RowManager.prototype.reRenderInPosition = function (callback) {
-       if (this.getRenderMode() == "virtual") {
-
-               if (this.redrawBlock) {
-                       if (callback) {
-                               callback();
-                       } else {
-                               this.redrawBlockRederInPosition = true;
-                       }
-               } else {
-                       var scrollTop = this.element.scrollTop;
-                       var topRow = false;
-                       var topOffset = false;
-
-                       var left = this.scrollLeft;
-
-                       var rows = this.getDisplayRows();
-
-                       for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-
-                               if (rows[i]) {
-                                       var diff = scrollTop - rows[i].getElement().offsetTop;
-
-                                       if (topOffset === false || Math.abs(diff) < topOffset) {
-                                               topOffset = diff;
-                                               topRow = i;
-                                       } else {
-                                               break;
-                                       }
-                               }
-                       }
-
-                       if (callback) {
-                               callback();
-                       }
-
-                       this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
-
-                       this.scrollHorizontal(left);
-               }
-       } else {
-               this.renderTable();
-
-               if (callback) {
-                       callback();
-               }
-       }
-};
-
-RowManager.prototype.setRenderMode = function () {
-
-       if (this.table.options.virtualDom) {
-
-               this.renderMode = "virtual";
-
-               if (this.table.element.clientHeight || this.table.options.height) {
-                       this.fixedHeight = true;
-               } else {
-                       this.fixedHeight = false;
-               }
-       } else {
-               this.renderMode = "classic";
-       }
-};
-
-RowManager.prototype.getRenderMode = function () {
-       return this.renderMode;
-};
-
-RowManager.prototype.renderTable = function () {
-
-       this.table.options.renderStarted.call(this.table);
-
-       this.element.scrollTop = 0;
-
-       switch (this.renderMode) {
-               case "classic":
-                       this._simpleRender();
-                       break;
-
-               case "virtual":
-                       this._virtualRenderFill();
-                       break;
-       }
-
-       if (this.firstRender) {
-               if (this.displayRowsCount) {
-                       this.firstRender = false;
-                       this.table.modules.layout.layout();
-               } else {
-                       this.renderEmptyScroll();
-               }
-       }
-
-       if (this.table.modExists("frozenColumns")) {
-               this.table.modules.frozenColumns.layout();
-       }
-
-       if (!this.displayRowsCount) {
-               if (this.table.options.placeholder) {
-
-                       this.table.options.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
-
-                       this.getElement().appendChild(this.table.options.placeholder);
-                       this.table.options.placeholder.style.width = this.table.columnManager.getWidth() + "px";
-               }
-       }
-
-       this.table.options.renderComplete.call(this.table);
-};
-
-//simple render on heightless table
-RowManager.prototype._simpleRender = function () {
-       this._clearVirtualDom();
-
-       if (this.displayRowsCount) {
-               this.checkClassicModeGroupHeaderWidth();
-       } else {
-               this.renderEmptyScroll();
-       }
-};
-
-RowManager.prototype.checkClassicModeGroupHeaderWidth = function () {
-       var self = this,
-           element = this.tableElement,
-           onlyGroupHeaders = true;
-
-       self.getDisplayRows().forEach(function (row, index) {
-               self.styleRow(row, index);
-               element.appendChild(row.getElement());
-               row.initialize(true);
-
-               if (row.type !== "group") {
-                       onlyGroupHeaders = false;
-               }
-       });
-
-       if (onlyGroupHeaders) {
-               element.style.minWidth = self.table.columnManager.getWidth() + "px";
-       } else {
-               element.style.minWidth = "";
-       }
-};
-
-//show scrollbars on empty table div
-RowManager.prototype.renderEmptyScroll = function () {
-       if (this.table.options.placeholder) {
-               this.tableElement.style.display = "none";
-       } else {
-               this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
-               // this.tableElement.style.minHeight = "1px";
-               // this.tableElement.style.visibility = "hidden";
-       }
-};
-
-RowManager.prototype._clearVirtualDom = function () {
-       var element = this.tableElement;
-
-       if (this.table.options.placeholder && this.table.options.placeholder.parentNode) {
-               this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);
-       }
-
-       // element.children.detach();
-       while (element.firstChild) {
-               element.removeChild(element.firstChild);
-       }element.style.paddingTop = "";
-       element.style.paddingBottom = "";
-       element.style.minWidth = "";
-       element.style.minHeight = "";
-       element.style.display = "";
-       element.style.visibility = "";
-
-       this.scrollTop = 0;
-       this.scrollLeft = 0;
-       this.vDomTop = 0;
-       this.vDomBottom = 0;
-       this.vDomTopPad = 0;
-       this.vDomBottomPad = 0;
-};
-
-RowManager.prototype.styleRow = function (row, index) {
-       var rowEl = row.getElement();
-
-       if (index % 2) {
-               rowEl.classList.add("tabulator-row-even");
-               rowEl.classList.remove("tabulator-row-odd");
-       } else {
-               rowEl.classList.add("tabulator-row-odd");
-               rowEl.classList.remove("tabulator-row-even");
-       }
-};
-
-//full virtual render
-RowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {
-       var self = this,
-           element = self.tableElement,
-           holder = self.element,
-           topPad = 0,
-           rowsHeight = 0,
-           topPadHeight = 0,
-           i = 0,
-           onlyGroupHeaders = true,
-           rows = self.getDisplayRows();
-
-       position = position || 0;
-
-       offset = offset || 0;
-
-       if (!position) {
-               self._clearVirtualDom();
-       } else {
-               while (element.firstChild) {
-                       element.removeChild(element.firstChild);
-               } //check if position is too close to bottom of table
-               var heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;
-
-               if (heightOccupied < self.height) {
-                       position -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);
-
-                       if (position < 0) {
-                               position = 0;
-                       }
-               }
-
-               //calculate initial pad
-               topPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);
-               position -= topPad;
-       }
-
-       if (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {
-
-               self.vDomTop = position;
-
-               self.vDomBottom = position - 1;
-
-               while ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {
-                       var index = self.vDomBottom + 1,
-                           row = rows[index],
-                           rowHeight = 0;
-
-                       self.styleRow(row, index);
-
-                       element.appendChild(row.getElement());
-
-                       row.initialize();
-
-                       if (!row.heightInitialized) {
-                               row.normalizeHeight(true);
-                       }
-
-                       // if(!row.initialized){
-                       //      row.initialize(true);
-                       // }else{
-                       //      if(!row.heightInitialized){
-                       //              row.normalizeHeight(true);
-                       //      }
-                       // }
-
-                       rowHeight = row.getHeight();
-
-                       if (i < topPad) {
-                               topPadHeight += rowHeight;
-                       } else {
-                               rowsHeight += rowHeight;
-                       }
-
-                       if (rowHeight > this.vDomWindowBuffer) {
-                               this.vDomWindowBuffer = rowHeight * 2;
-                       }
-
-                       if (row.type !== "group") {
-                               onlyGroupHeaders = false;
-                       }
-
-                       self.vDomBottom++;
-                       i++;
-               }
-
-               if (!position) {
-                       this.vDomTopPad = 0;
-                       //adjust rowheight to match average of rendered elements
-                       self.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);
-                       self.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);
-
-                       self.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;
-               } else {
-                       self.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;
-                       self.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);
-               }
-
-               element.style.paddingTop = self.vDomTopPad + "px";
-               element.style.paddingBottom = self.vDomBottomPad + "px";
-
-               if (forceMove) {
-                       this.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);
-               }
-
-               this.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);
-
-               //adjust for horizontal scrollbar if present (and not at top of table)
-               if (this.element.scrollWidth > this.element.offsetWidth && forceMove) {
-                       this.scrollTop += this.element.offsetHeight - this.element.clientHeight;
-               }
-
-               this.vDomScrollPosTop = this.scrollTop;
-               this.vDomScrollPosBottom = this.scrollTop;
-
-               holder.scrollTop = this.scrollTop;
-
-               element.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + "px" : "";
-
-               if (self.table.options.groupBy) {
-                       if (self.table.modules.layout.getMode() != "fitDataFill" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {
-                               self.tableElement.style.minWidth = self.table.columnManager.getWidth();
-                       }
-               }
-       } else {
-               this.renderEmptyScroll();
-       }
-
-       if (!this.fixedHeight) {
-               this.adjustTableSize();
-       }
-};
-
-//handle vertical scrolling
-RowManager.prototype.scrollVertical = function (dir) {
-       var topDiff = this.scrollTop - this.vDomScrollPosTop;
-       var bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-       var margin = this.vDomWindowBuffer * 2;
-
-       if (-topDiff > margin || bottomDiff > margin) {
-               //if big scroll redraw table;
-               var left = this.scrollLeft;
-               this._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));
-               this.scrollHorizontal(left);
-       } else {
-
-               if (dir) {
-                       //scrolling up
-                       if (topDiff < 0) {
-
-                               this._addTopRow(-topDiff);
-                       }
-
-                       if (bottomDiff < 0) {
-
-                               //hide bottom row if needed
-                               if (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {
-                                       this._removeBottomRow(-bottomDiff);
-                               } else {
-                                       this.vDomScrollPosBottom = this.scrollTop;
-                               }
-                       }
-               } else {
-                       //scrolling down
-                       if (topDiff >= 0) {
-
-                               //hide top row if needed
-                               if (this.scrollTop > this.vDomWindowBuffer) {
-
-                                       this._removeTopRow(topDiff);
-                               } else {
-                                       this.vDomScrollPosTop = this.scrollTop;
-                               }
-                       }
-
-                       if (bottomDiff >= 0) {
-
-                               this._addBottomRow(bottomDiff);
-                       }
-               }
-       }
-};
-
-RowManager.prototype._addTopRow = function (topDiff) {
-       var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-       var table = this.tableElement,
-           rows = this.getDisplayRows();
-
-       if (this.vDomTop) {
-               var index = this.vDomTop - 1,
-                   topRow = rows[index],
-                   topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-               //hide top row if needed
-               if (topDiff >= topRowHeight) {
-                       this.styleRow(topRow, index);
-                       table.insertBefore(topRow.getElement(), table.firstChild);
-                       if (!topRow.initialized || !topRow.heightInitialized) {
-                               this.vDomTopNewRows.push(topRow);
-
-                               if (!topRow.heightInitialized) {
-                                       topRow.clearCellHeight();
-                               }
-                       }
-                       topRow.initialize();
-
-                       this.vDomTopPad -= topRowHeight;
-
-                       if (this.vDomTopPad < 0) {
-                               this.vDomTopPad = index * this.vDomRowHeight;
-                       }
-
-                       if (!index) {
-                               this.vDomTopPad = 0;
-                       }
-
-                       table.style.paddingTop = this.vDomTopPad + "px";
-                       this.vDomScrollPosTop -= topRowHeight;
-                       this.vDomTop--;
-               }
-
-               topDiff = -(this.scrollTop - this.vDomScrollPosTop);
-
-               if (topRow.getHeight() > this.vDomWindowBuffer) {
-                       this.vDomWindowBuffer = topRow.getHeight() * 2;
-               }
-
-               if (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {
-                       this._addTopRow(topDiff, i + 1);
-               } else {
-                       this._quickNormalizeRowHeight(this.vDomTopNewRows);
-               }
-       }
-};
-
-RowManager.prototype._removeTopRow = function (topDiff) {
-       var table = this.tableElement,
-           topRow = this.getDisplayRows()[this.vDomTop],
-           topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-       if (topDiff >= topRowHeight) {
-
-               var rowEl = topRow.getElement();
-               rowEl.parentNode.removeChild(rowEl);
-
-               this.vDomTopPad += topRowHeight;
-               table.style.paddingTop = this.vDomTopPad + "px";
-               this.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;
-               this.vDomTop++;
-
-               topDiff = this.scrollTop - this.vDomScrollPosTop;
-
-               this._removeTopRow(topDiff);
-       }
-};
-
-RowManager.prototype._addBottomRow = function (bottomDiff) {
-       var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-       var table = this.tableElement,
-           rows = this.getDisplayRows();
-
-       if (this.vDomBottom < this.displayRowsCount - 1) {
-               var index = this.vDomBottom + 1,
-                   bottomRow = rows[index],
-                   bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-               //hide bottom row if needed
-               if (bottomDiff >= bottomRowHeight) {
-                       this.styleRow(bottomRow, index);
-                       table.appendChild(bottomRow.getElement());
-
-                       if (!bottomRow.initialized || !bottomRow.heightInitialized) {
-                               this.vDomBottomNewRows.push(bottomRow);
-
-                               if (!bottomRow.heightInitialized) {
-                                       bottomRow.clearCellHeight();
-                               }
-                       }
-
-                       bottomRow.initialize();
-
-                       this.vDomBottomPad -= bottomRowHeight;
-
-                       if (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {
-                               this.vDomBottomPad = 0;
-                       }
-
-                       table.style.paddingBottom = this.vDomBottomPad + "px";
-                       this.vDomScrollPosBottom += bottomRowHeight;
-                       this.vDomBottom++;
-               }
-
-               bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-
-               if (bottomRow.getHeight() > this.vDomWindowBuffer) {
-                       this.vDomWindowBuffer = bottomRow.getHeight() * 2;
-               }
-
-               if (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {
-                       this._addBottomRow(bottomDiff, i + 1);
-               } else {
-                       this._quickNormalizeRowHeight(this.vDomBottomNewRows);
-               }
-       }
-};
-
-RowManager.prototype._removeBottomRow = function (bottomDiff) {
-       var table = this.tableElement,
-           bottomRow = this.getDisplayRows()[this.vDomBottom],
-           bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-       if (bottomDiff >= bottomRowHeight) {
-
-               var rowEl = bottomRow.getElement();
-
-               if (rowEl.parentNode) {
-                       rowEl.parentNode.removeChild(rowEl);
-               }
-
-               this.vDomBottomPad += bottomRowHeight;
-
-               if (this.vDomBottomPad < 0) {
-                       this.vDomBottomPad = 0;
-               }
-
-               table.style.paddingBottom = this.vDomBottomPad + "px";
-               this.vDomScrollPosBottom -= bottomRowHeight;
-               this.vDomBottom--;
-
-               bottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);
-
-               this._removeBottomRow(bottomDiff);
-       }
-};
-
-RowManager.prototype._quickNormalizeRowHeight = function (rows) {
-       rows.forEach(function (row) {
-               row.calcHeight();
-       });
-
-       rows.forEach(function (row) {
-               row.setCellHeight();
-       });
-
-       rows.length = 0;
-};
-
-//normalize height of active rows
-RowManager.prototype.normalizeHeight = function () {
-       this.activeRows.forEach(function (row) {
-               row.normalizeHeight();
-       });
-};
-
-//adjust the height of the table holder to fit in the Tabulator element
-RowManager.prototype.adjustTableSize = function () {
-       var initialHeight = this.element.clientHeight,
-           modExists;
-
-       if (this.renderMode === "virtual") {
-               var otherHeight = Math.floor(this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0));
-
-               if (this.fixedHeight) {
-                       this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
-                       this.element.style.height = "calc(100% - " + otherHeight + "px)";
-                       this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
-               } else {
-                       this.element.style.height = "";
-                       this.element.style.height = Math.floor(this.table.element.clientHeight) - otherHeight + "px";
-                       this.element.scrollTop = this.scrollTop;
-               }
-
-               this.height = this.element.clientHeight;
-               this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
-
-               //check if the table has changed size when dealing with variable height tables
-               if (!this.fixedHeight && Math.floor(initialHeight) != Math.floor(this.element.clientHeight)) {
-                       modExists = this.table.modExists("resizeTable");
-
-                       if (modExists && !this.table.modules.resizeTable.autoResize || !modExists) {
-                               this.redraw();
-                       }
-               }
-       }
-};
-
-//renitialize all rows
-RowManager.prototype.reinitialize = function () {
-       this.rows.forEach(function (row) {
-               row.reinitialize(true);
-       });
-};
-
-//prevent table from being redrawn
-RowManager.prototype.blockRedraw = function () {
-       this.redrawBlock = true;
-       this.redrawBlockRestoreConfig = false;
-};
-
-//restore table redrawing
-RowManager.prototype.restoreRedraw = function () {
-       this.redrawBlock = false;
-
-       if (this.redrawBlockRestoreConfig) {
-               this.refreshActiveData(this.redrawBlockRestoreConfig.stage, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);
-
-               this.redrawBlockRestoreConfig = false;
-       } else {
-               if (this.redrawBlockRederInPosition) {
-                       this.reRenderInPosition();
-               }
-       }
-
-       this.redrawBlockRederInPosition = false;
-};
-
-//redraw table
-RowManager.prototype.redraw = function (force) {
-       var pos = 0,
-           left = this.scrollLeft;
-
-       this.adjustTableSize();
-
-       this.table.tableWidth = this.table.element.clientWidth;
-
-       if (!force) {
-               if (this.renderMode == "classic") {
-
-                       if (this.table.options.groupBy) {
-                               this.refreshActiveData("group", false, false);
-                       } else {
-                               this._simpleRender();
-                       }
-               } else {
-                       this.reRenderInPosition();
-                       this.scrollHorizontal(left);
-               }
-
-               if (!this.displayRowsCount) {
-                       if (this.table.options.placeholder) {
-                               this.getElement().appendChild(this.table.options.placeholder);
-                       }
-               }
-       } else {
-               this.renderTable();
-       }
-};
-
-RowManager.prototype.resetScroll = function () {
-       this.element.scrollLeft = 0;
-       this.element.scrollTop = 0;
-
-       if (this.table.browser === "ie") {
-               var event = document.createEvent("Event");
-               event.initEvent("scroll", false, true);
-               this.element.dispatchEvent(event);
-       } else {
-               this.element.dispatchEvent(new Event('scroll'));
-       }
-};
-
-var VDomHoz = function VDomHoz(table) {
-       this.table = table;
-
-       this.element = this.table.rowManager.tableElement;
-       this.holderEl = this.table.rowManager.element;
-
-       this.leftCol = 0;
-       this.rightCol = 0;
-       this.scrollLeft = 0;
-
-       this.vDomScrollPosLeft = 0;
-       this.vDomScrollPosRight = 0;
-
-       this.vDomPadLeft = 0;
-       this.vDomPadRight = 0;
-
-       this.fitDataColAvg = 0;
-
-       this.window = 200; //pixel margin to make column visible before it is shown on screen
-
-       this.initialized = false;
-
-       this.columns = [];
-
-       if (this.compatabilityCheck()) {
-               this.initialize();
-       }
-};
-
-VDomHoz.prototype.compatabilityCheck = function () {
-       var options = this.table.options,
-           frozen = false,
-           ok = true;
-
-       if (options.layout == "fitDataTable") {
-               console.warn("Horizontal Vitrual DOM is not compatible with fitDataTable layout mode");
-               ok = false;
-       }
-
-       if (options.responsiveLayout) {
-               console.warn("Horizontal Vitrual DOM is not compatible with responsive columns");
-               ok = false;
-       }
-
-       if (this.table.rtl) {
-               console.warn("Horizontal Vitrual DOM is not currently compatible with RTL text direction");
-               ok = false;
-       }
-
-       // if(options.rowFormatter){
-       //      console.warn("Horizontal Vitrual DOM is not compatible with row formatters");
-       //      ok = false;
-       // }
-
-       if (options.columns) {
-               frozen = options.columns.find(function (col) {
-                       return col.frozen;
-               });
-
-               if (frozen) {
-                       console.warn("Horizontal Vitrual DOM is not compatible with frozen columns");
-                       ok = false;
-               }
-       }
-
-       if (!ok) {
-               options.virtualDomHoz = false;
-       }
-
-       return ok;
-};
-
-VDomHoz.prototype.initialize = function () {
-       var _this17 = this;
-
-       this.holderEl.addEventListener("scroll", function () {
-               var left = _this17.holderEl.scrollLeft;
-
-               if (_this17.scrollLeft != left) {
-                       _this17.scrollLeft = left;
-                       _this17.scroll(left - (_this17.vDomScrollPosLeft + _this17.window));
-               }
-       });
-};
-
-VDomHoz.prototype.deinitialize = function () {
-       this.initialized = false;
-};
-
-VDomHoz.prototype.clear = function () {
-       this.columns = [];
-
-       this.leftCol = -1;
-       this.rightCol = 0;
-
-       this.vDomScrollPosLeft = 0;
-       this.vDomScrollPosRight = 0;
-       this.vDomPadLeft = 0;
-       this.vDomPadRight = 0;
-};
-
-VDomHoz.prototype.dataChange = function () {
-       var change = false,
-           collsWidth = 0,
-           colEnd = 0,
-           group,
-           row,
-           rowEl;
-
-       if (this.table.options.layout === "fitData") {
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (!column.definition.width && column.visible) {
-                               change = true;
-                       }
-               });
-
-               if (change) {
-                       if (change && this.table.rowManager.getDisplayRows().length) {
-                               // this.table.vdomHoz.deinitialize();
-
-                               this.vDomScrollPosRight = this.scrollLeft + this.holderEl.clientWidth + this.window;
-
-                               if (this.table.options.groupBy) {
-                                       group = this.table.modules.groupRows.getGroups(false)[0];
-
-                                       row = group.getRows(false)[0];
-                               } else {
-                                       row = this.table.rowManager.getDisplayRows()[0];
-                               }
-
-                               if (row) {
-
-                                       rowEl = row.getElement();
-
-                                       row.generateCells();
-
-                                       this.element.appendChild(rowEl);
-
-                                       for (var colEnd = 0; colEnd < row.cells.length; colEnd++) {
-                                               var cell = row.cells[colEnd];
-                                               rowEl.appendChild(cell.getElement());
-
-                                               cell.column.reinitializeWidth();
-
-                                               collsWidth += cell.column.getWidth();
-
-                                               if (collsWidth > this.vDomScrollPosRight) {
-                                                       break;
-                                               }
-                                       }
-
-                                       rowEl.parentNode.removeChild(rowEl);
-
-                                       this.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));
-
-                                       for (colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++) {
-                                               this.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);
-                                       }
-
-                                       this.reinitialize(false, true);
-                               }
-                       }
-               }
-       } else {
-               if (this.table.options.layout === "fitColumns") {
-                       this.table.modules.layout.layout();
-                       this.table.vdomHoz.reinitialize(false, true);
-               }
-       }
-};
-
-VDomHoz.prototype.fitDataLayoutOverride = function () {
-       for (var _i5 = this.leftCol; _i5 <= this.rightCol; _i5++) {
-               this.columns[_i5].reinitializeWidth();
-       }
-};
-
-VDomHoz.prototype.reinitialize = function (update, blockRedraw) {
-       var _this18 = this;
-
-       var old = {
-               cols: this.columns,
-               leftCol: this.leftCol,
-               rightCol: this.rightCol
-       };
-
-       if (update && !this.initialized) {
-               return;
-       }
-
-       this.clear();
-
-       this.scrollLeft = this.holderEl.scrollLeft;
-
-       this.vDomScrollPosLeft = this.scrollLeft - this.window;
-       this.vDomScrollPosRight = this.scrollLeft + this.holderEl.clientWidth + this.window;
-
-       var colPos = 0;
-
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               var config = {};
-
-               if (column.visible) {
-                       var width = column.getWidth();
-
-                       config.leftPos = colPos;
-                       config.rightPos = colPos + width;
-
-                       if (colPos + width > _this18.vDomScrollPosLeft && colPos < _this18.vDomScrollPosRight) {
-                               //column is visible
-
-                               if (_this18.leftCol == -1) {
-                                       _this18.leftCol = _this18.columns.length;
-                                       _this18.vDomPadLeft = colPos;
-                               }
-
-                               _this18.rightCol = _this18.columns.length;
-                       } else {
-                               // column is hidden
-                               if (_this18.leftCol !== -1) {
-                                       _this18.vDomPadRight += width;
-                               }
-                       }
-
-                       _this18.columns.push(column);
-
-                       column.modules.vdomHoz = config;
-
-                       colPos += width;
-               }
-       });
-
-       this.element.style.paddingLeft = this.vDomPadLeft + "px";
-       this.element.style.paddingRight = this.vDomPadRight + "px";
-
-       this.initialized = true;
-
-       if (!blockRedraw) {
-               if (!update || this.reinitChanged(old)) {
-                       this.renitializeRows();
-               }
-       }
-
-       this.holderEl.scrollLeft = this.scrollLeft;
-};
-
-VDomHoz.prototype.reinitChanged = function (old) {
-       var _this19 = this;
-
-       var match = true;
-
-       if (old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol) {
-               return true;
-       }
-
-       old.cols.forEach(function (col, i) {
-               if (col !== _this19.columns[i]) {
-                       match = false;
-               }
-       });
-
-       return !match;
-};
-
-VDomHoz.prototype.renitializeRows = function () {
-       var _this20 = this;
-
-       var rows = this.table.rowManager.getVisibleRows();
-       rows.forEach(function (row) {
-               _this20.reinitializeRow(row, true);
-       });
-};
-
-VDomHoz.prototype.scroll = function (diff) {
-       this.vDomScrollPosLeft += diff;
-       this.vDomScrollPosRight += diff;
-
-       if (diff > this.holderEl.clientWidth * .8) {
-               this.reinitialize();
-       } else {
-               if (diff > 0) {
-                       //scroll right
-                       this.addColRight();
-                       this.removeColLeft();
-               } else {
-                       //scroll left
-                       this.addColLeft();
-                       this.removeColRight();
-               }
-       }
-};
-
-VDomHoz.prototype.colPositionAdjust = function (start, end, diff) {
-       for (var _i6 = start; _i6 < end; _i6++) {
-               var column = this.columns[_i6];
-
-               column.modules.vdomHoz.leftPos -= diff;
-               column.modules.vdomHoz.rightPos -= diff;
-       }
-};
-
-VDomHoz.prototype.addColRight = function () {
-       var column = this.columns[this.rightCol + 1],
-           rows,
-           oldWidth,
-           widthDiff;
-
-       if (column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight) {
-
-               rows = this.table.rowManager.getVisibleRows();
-
-               rows.forEach(function (row) {
-                       if (row.type !== "group") {
-                               var cell = row.getCell(column);
-                               row.getElement().appendChild(cell.getElement());
-                               cell.cellRendered();
-                       }
-               });
-
-               if (this.fitDataColAvg) {
-
-                       oldWidth = column.getWidth();
-
-                       if (oldWidth === this.fitDataColAvg) {
-                               column.reinitializeWidth();
-
-                               widthDiff = oldWidth - column.getWidth();
-
-                               if (widthDiff) {
-                                       column.modules.vdomHoz.rightPos -= widthDiff;
-                                       this.colPositionAdjust(this.rightCol + 1, this.columns.length, widthDiff);
-                               }
-                       }
-               }
-
-               this.rightCol++;
-
-               if (this.rightCol >= this.columns.length - 1) {
-                       this.vDomPadRight = 0;
-               } else {
-                       this.vDomPadRight -= column.getWidth();
-               }
-
-               this.element.style.paddingRight = this.vDomPadRight + "px";
-
-               this.addColRight();
-       }
-};
-
-VDomHoz.prototype.addColLeft = function () {
-       var column = this.columns[this.leftCol - 1],
-           rows;
-
-       if (column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft) {
-               var rows = this.table.rowManager.getVisibleRows();
-
-               rows.forEach(function (row) {
-                       if (row.type !== "group") {
-                               var cell = row.getCell(column);
-                               row.getElement().prepend(cell.getElement());
-                               cell.cellRendered();
-                       }
-               });
-
-               if (!this.leftCol) {
-                       this.vDomPadLeft = 0;
-               } else {
-                       this.vDomPadLeft -= column.getWidth();
-               }
-
-               this.element.style.paddingLeft = this.vDomPadLeft + "px";
-
-               this.leftCol--;
-
-               this.addColLeft();
-       }
-};
-
-VDomHoz.prototype.removeColRight = function (column) {
-       var column = this.columns[this.rightCol],
-           rows;
-
-       if (column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight) {
-               rows = this.table.rowManager.getVisibleRows();
-
-               column.modules.vdomHoz.visible = false;
-
-               rows.forEach(function (row) {
-                       if (row.type !== "group") {
-                               var cell = row.getCell(column);
-                               row.getElement().removeChild(cell.getElement());
-                       }
-               });
-
-               this.vDomPadRight += column.getWidth();
-               this.element.style.paddingRight = this.vDomPadRight + "px";
-
-               this.rightCol--;
-
-               this.removeColRight();
-       }
-};
-
-VDomHoz.prototype.removeColLeft = function () {
-       var column = this.columns[this.leftCol],
-           rows;
-
-       if (column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft) {
-
-               rows = this.table.rowManager.getVisibleRows();
-
-               rows.forEach(function (row) {
-                       if (row.type !== "group") {
-                               var cell = row.getCell(column);
-                               row.getElement().removeChild(cell.getElement());
-                       }
-               });
-
-               this.vDomPadLeft += column.getWidth();
-               this.element.style.paddingLeft = this.vDomPadLeft + "px";
-
-               this.leftCol++;
-
-               this.removeColLeft();
-       }
-};
-
-VDomHoz.prototype.initializeRow = function (row) {
-       if (row.type !== "group") {
-               row.modules.vdomHoz = {
-                       leftCol: this.leftCol,
-                       rightCol: this.rightCol
-               };
-
-               for (var _i7 = this.leftCol; _i7 <= this.rightCol; _i7++) {
-                       var column = this.columns[_i7];
-
-                       if (column.visible) {
-                               var cell = row.getCell(column);
-
-                               row.element.appendChild(cell.getElement());
-                               cell.cellRendered();
-                       }
-               }
-       }
-};
-
-VDomHoz.prototype.reinitializeRow = function (row, force) {
-       if (row.type !== "group") {
-               if (force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol) {
-                       while (row.element.firstChild) {
-                               row.element.removeChild(row.element.firstChild);
-                       }this.initializeRow(row);
-               }
-       }
-};
-//public row object
-var RowComponent = function RowComponent(row) {
-       this._row = row;
-};
-
-RowComponent.prototype.getData = function (transform) {
-       return this._row.getData(transform);
-};
-
-RowComponent.prototype.getElement = function () {
-       return this._row.getElement();
-};
-
-RowComponent.prototype.getCells = function () {
-       var cells = [];
-
-       this._row.getCells().forEach(function (cell) {
-               cells.push(cell.getComponent());
-       });
-
-       return cells;
-};
-
-RowComponent.prototype.getCell = function (column) {
-       var cell = this._row.getCell(column);
-       return cell ? cell.getComponent() : false;
-};
-
-RowComponent.prototype.getIndex = function () {
-       return this._row.getData("data")[this._row.table.options.index];
-};
-
-RowComponent.prototype.getPosition = function (active) {
-       return this._row.table.rowManager.getRowPosition(this._row, active);
-};
-
-RowComponent.prototype.delete = function () {
-       return this._row.delete();
-};
-
-RowComponent.prototype.scrollTo = function () {
-       return this._row.table.rowManager.scrollToRow(this._row);
-};
-
-RowComponent.prototype.pageTo = function () {
-       if (this._row.table.modExists("page", true)) {
-               return this._row.table.modules.page.setPageToRow(this._row);
-       }
-};
-
-RowComponent.prototype.move = function (to, after) {
-       this._row.moveToRow(to, after);
-};
-
-RowComponent.prototype.update = function (data) {
-       return this._row.updateData(data);
-};
-
-RowComponent.prototype.normalizeHeight = function () {
-       this._row.normalizeHeight(true);
-};
-
-RowComponent.prototype.select = function () {
-       this._row.table.modules.selectRow.selectRows(this._row);
-};
-
-RowComponent.prototype.deselect = function () {
-       this._row.table.modules.selectRow.deselectRows(this._row);
-};
-
-RowComponent.prototype.toggleSelect = function () {
-       this._row.table.modules.selectRow.toggleRow(this._row);
-};
-
-RowComponent.prototype.isSelected = function () {
-       return this._row.table.modules.selectRow.isRowSelected(this._row);
-};
-
-RowComponent.prototype._getSelf = function () {
-       return this._row;
-};
-
-RowComponent.prototype.validate = function () {
-       return this._row.validate();
-};
-
-RowComponent.prototype.freeze = function () {
-       if (this._row.table.modExists("frozenRows", true)) {
-               this._row.table.modules.frozenRows.freezeRow(this._row);
-       }
-};
-
-RowComponent.prototype.unfreeze = function () {
-       if (this._row.table.modExists("frozenRows", true)) {
-               this._row.table.modules.frozenRows.unfreezeRow(this._row);
-       }
-};
-
-RowComponent.prototype.isFrozen = function () {
-       if (this._row.table.modExists("frozenRows", true)) {
-               var index = this._row.table.modules.frozenRows.rows.indexOf(this._row);
-               return index > -1;
-       }
-
-       return false;
-};
-
-RowComponent.prototype.treeCollapse = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               this._row.table.modules.dataTree.collapseRow(this._row);
-       }
-};
-
-RowComponent.prototype.treeExpand = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               this._row.table.modules.dataTree.expandRow(this._row);
-       }
-};
-
-RowComponent.prototype.treeToggle = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               this._row.table.modules.dataTree.toggleRow(this._row);
-       }
-};
-
-RowComponent.prototype.getTreeParent = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               return this._row.table.modules.dataTree.getTreeParent(this._row);
-       }
-
-       return false;
-};
-
-RowComponent.prototype.getTreeChildren = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               return this._row.table.modules.dataTree.getTreeChildren(this._row, true);
-       }
-
-       return false;
-};
-
-RowComponent.prototype.addTreeChild = function (data, pos, index) {
-       if (this._row.table.modExists("dataTree", true)) {
-               return this._row.table.modules.dataTree.addTreeChildRow(this._row, data, pos, index);
-       }
-
-       return false;
-};
-
-RowComponent.prototype.reformat = function () {
-       return this._row.reinitialize();
-};
-
-RowComponent.prototype.getGroup = function () {
-       return this._row.getGroup().getComponent();
-};
-
-RowComponent.prototype.getTable = function () {
-       return this._row.table;
-};
-
-RowComponent.prototype.getNextRow = function () {
-       var row = this._row.nextRow();
-       return row ? row.getComponent() : row;
-};
-
-RowComponent.prototype.getPrevRow = function () {
-       var row = this._row.prevRow();
-       return row ? row.getComponent() : row;
-};
-
-var Row = function Row(data, parent) {
-       var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "row";
-
-       this.table = parent.table;
-       this.parent = parent;
-       this.data = {};
-       this.type = type; //type of element
-       this.element = this.createElement();
-       this.modules = {}; //hold module variables;
-       this.cells = [];
-       this.height = 0; //hold element height
-       this.heightStyled = ""; //hold element height prestyled to improve render efficiency
-       this.manualHeight = false; //user has manually set row height
-       this.outerHeight = 0; //holde lements outer height
-       this.initialized = false; //element has been rendered
-       this.heightInitialized = false; //element has resized cells to fit
-
-       this.component = null;
-
-       this.setData(data);
-       this.generateElement();
-};
-
-Row.prototype.createElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-row");
-       el.setAttribute("role", "row");
-
-       return el;
-};
-
-Row.prototype.getElement = function () {
-       return this.element;
-};
-
-Row.prototype.detachElement = function () {
-       if (this.element && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-};
-
-Row.prototype.generateElement = function () {
-       var self = this,
-           dblTap,
-           tapHold,
-           tap;
-
-       //set row selection characteristics
-       if (self.table.options.selectable !== false && self.table.modExists("selectRow")) {
-               self.table.modules.selectRow.initializeRow(this);
-       }
-
-       //setup movable rows
-       if (self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-               self.table.modules.moveRow.initializeRow(this);
-       }
-
-       //setup data tree
-       if (self.table.options.dataTree !== false && self.table.modExists("dataTree")) {
-               self.table.modules.dataTree.initializeRow(this);
-       }
-
-       //setup column colapse container
-       if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
-               self.table.modules.responsiveLayout.initializeRow(this);
-       }
-
-       //set column menu
-       if ((self.table.options.rowContextMenu || self.table.options.rowClickMenu) && this.table.modExists("menu")) {
-               self.table.modules.menu.initializeRow(this);
-       }
-
-       //handle row click events
-       if (self.table.options.rowClick) {
-               self.element.addEventListener("click", function (e) {
-                       self.table.options.rowClick(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowDblClick) {
-               self.element.addEventListener("dblclick", function (e) {
-                       self.table.options.rowDblClick(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowContext) {
-               self.element.addEventListener("contextmenu", function (e) {
-                       self.table.options.rowContext(e, self.getComponent());
-               });
-       }
-
-       //handle mouse events
-       if (self.table.options.rowMouseEnter) {
-               self.element.addEventListener("mouseenter", function (e) {
-                       self.table.options.rowMouseEnter(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseLeave) {
-               self.element.addEventListener("mouseleave", function (e) {
-                       self.table.options.rowMouseLeave(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseOver) {
-               self.element.addEventListener("mouseover", function (e) {
-                       self.table.options.rowMouseOver(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseOut) {
-               self.element.addEventListener("mouseout", function (e) {
-                       self.table.options.rowMouseOut(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseMove) {
-               self.element.addEventListener("mousemove", function (e) {
-                       self.table.options.rowMouseMove(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowTap) {
-
-               tap = false;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               self.table.options.rowTap(e, self.getComponent());
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (self.table.options.rowDblTap) {
-
-               dblTap = null;
-
-               self.element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               self.table.options.rowDblTap(e, self.getComponent());
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (self.table.options.rowTapHold) {
-
-               tapHold = null;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               self.table.options.rowTapHold(e, self.getComponent());
-                       }, 1000);
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-};
-
-Row.prototype.generateCells = function () {
-       this.cells = this.table.columnManager.generateCells(this);
-};
-
-//functions to setup on first render
-Row.prototype.initialize = function (force) {
-       var _this21 = this;
-
-       if (!this.initialized || force) {
-
-               this.deleteCells();
-
-               while (this.element.firstChild) {
-                       this.element.removeChild(this.element.firstChild);
-               } //handle frozen cells
-               if (this.table.modExists("frozenColumns")) {
-                       this.table.modules.frozenColumns.layoutRow(this);
-               }
-
-               this.generateCells();
-
-               if (this.table.options.virtualDomHoz && this.table.vdomHoz.initialized) {
-                       this.table.vdomHoz.initializeRow(this);
-               } else {
-                       this.cells.forEach(function (cell) {
-                               _this21.element.appendChild(cell.getElement());
-                               cell.cellRendered();
-                       });
-               }
-
-               if (force) {
-                       this.normalizeHeight();
-               }
-
-               //setup movable rows
-               if (this.table.options.dataTree && this.table.modExists("dataTree")) {
-                       this.table.modules.dataTree.layoutRow(this);
-               }
-
-               //setup column colapse container
-               if (this.table.options.responsiveLayout === "collapse" && this.table.modExists("responsiveLayout")) {
-                       this.table.modules.responsiveLayout.layoutRow(this);
-               }
-
-               if (this.table.options.rowFormatter) {
-                       this.table.options.rowFormatter(this.getComponent());
-               }
-
-               //set resizable handles
-               if (this.table.options.resizableRows && this.table.modExists("resizeRows")) {
-                       this.table.modules.resizeRows.initializeRow(this);
-               }
-
-               this.initialized = true;
-       } else {
-               if (this.table.options.virtualDomHoz) {
-                       this.table.vdomHoz.reinitializeRow(this);
-               }
-       }
-};
-
-Row.prototype.reinitializeHeight = function () {
-       this.heightInitialized = false;
-
-       if (this.element.offsetParent !== null) {
-               this.normalizeHeight(true);
-       }
-};
-
-Row.prototype.reinitialize = function (children) {
-       this.initialized = false;
-       this.heightInitialized = false;
-
-       if (!this.manualHeight) {
-               this.height = 0;
-               this.heightStyled = "";
-       }
-
-       if (this.element.offsetParent !== null) {
-               this.initialize(true);
-       }
-
-       if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
-               this.table.modules.dataTree.getTreeChildren(this, false, true).forEach(function (child) {
-                       child.reinitialize(true);
-               });
-       }
-};
-
-//get heights when doing bulk row style calcs in virtual DOM
-Row.prototype.calcHeight = function (force) {
-
-       var maxHeight = 0,
-           minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;
-
-       this.cells.forEach(function (cell) {
-               var height = cell.getHeight();
-               if (height > maxHeight) {
-                       maxHeight = height;
-               }
-       });
-
-       if (force) {
-               this.height = Math.max(maxHeight, minHeight);
-       } else {
-               this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);
-       }
-
-       this.heightStyled = this.height ? this.height + "px" : "";
-       this.outerHeight = this.element.offsetHeight;
-};
-
-//set of cells
-Row.prototype.setCellHeight = function () {
-       this.cells.forEach(function (cell) {
-               cell.setHeight();
-       });
-
-       this.heightInitialized = true;
-};
-
-Row.prototype.clearCellHeight = function () {
-       this.cells.forEach(function (cell) {
-               cell.clearHeight();
-       });
-};
-
-//normalize the height of elements in the row
-Row.prototype.normalizeHeight = function (force) {
-
-       if (force) {
-               this.clearCellHeight();
-       }
-
-       this.calcHeight(force);
-
-       this.setCellHeight();
-};
-
-// Row.prototype.setHeight = function(height){
-//     this.height = height;
-
-//     this.setCellHeight();
-// };
-
-//set height of rows
-Row.prototype.setHeight = function (height, force) {
-       if (this.height != height || force) {
-
-               this.manualHeight = true;
-
-               this.height = height;
-               this.heightStyled = height ? height + "px" : "";
-
-               this.setCellHeight();
-
-               // this.outerHeight = this.element.outerHeight();
-               this.outerHeight = this.element.offsetHeight;
-       }
-};
-
-//return rows outer height
-Row.prototype.getHeight = function () {
-       return this.outerHeight;
-};
-
-//return rows outer Width
-Row.prototype.getWidth = function () {
-       return this.element.offsetWidth;
-};
-
-//////////////// Cell Management /////////////////
-
-Row.prototype.deleteCell = function (cell) {
-       var index = this.cells.indexOf(cell);
-
-       if (index > -1) {
-               this.cells.splice(index, 1);
-       }
-};
-
-//////////////// Data Management /////////////////
-
-Row.prototype.setData = function (data) {
-       if (this.table.modExists("mutator")) {
-               data = this.table.modules.mutator.transformRow(data, "data");
-       }
-
-       this.data = data;
-
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-               this.table.modules.reactiveData.watchRow(this);
-       }
-};
-
-//update the rows data
-Row.prototype.updateData = function (updatedData) {
-       var _this22 = this;
-
-       var visible = Tabulator.prototype.helpers.elVisible(this.element),
-           tempData = {},
-           newRowData;
-
-       return new Promise(function (resolve, reject) {
-
-               if (typeof updatedData === "string") {
-                       updatedData = JSON.parse(updatedData);
-               }
-
-               if (_this22.table.options.reactiveData && _this22.table.modExists("reactiveData", true)) {
-                       _this22.table.modules.reactiveData.block();
-               }
-
-               //mutate incomming data if needed
-               if (_this22.table.modExists("mutator")) {
-
-                       tempData = Object.assign(tempData, _this22.data);
-                       tempData = Object.assign(tempData, updatedData);
-
-                       newRowData = _this22.table.modules.mutator.transformRow(tempData, "data", updatedData);
-               } else {
-                       newRowData = updatedData;
-               }
-
-               //set data
-               for (var attrname in newRowData) {
-                       _this22.data[attrname] = newRowData[attrname];
-               }
-
-               if (_this22.table.options.reactiveData && _this22.table.modExists("reactiveData", true)) {
-                       _this22.table.modules.reactiveData.unblock();
-               }
-
-               //update affected cells only
-               for (var attrname in updatedData) {
-
-                       var columns = _this22.table.columnManager.getColumnsByFieldRoot(attrname);
-
-                       columns.forEach(function (column) {
-                               var cell = _this22.getCell(column.getField());
-
-                               if (cell) {
-                                       var value = column.getFieldValue(newRowData);
-                                       if (cell.getValue() != value) {
-                                               cell.setValueProcessData(value);
-
-                                               if (visible) {
-                                                       cell.cellRendered();
-                                               }
-                                       }
-                               }
-                       });
-               }
-
-               if (_this22.table.options.groupUpdateOnCellEdit && _this22.table.options.groupBy && _this22.table.modExists("groupRows")) {
-                       _this22.table.modules.groupRows.reassignRowToGroup(_this22.row);
-               }
-
-               //Partial reinitialization if visible
-               if (visible) {
-                       _this22.normalizeHeight(true);
-
-                       if (_this22.table.options.rowFormatter) {
-                               _this22.table.options.rowFormatter(_this22.getComponent());
-                       }
-               } else {
-                       _this22.initialized = false;
-                       _this22.height = 0;
-                       _this22.heightStyled = "";
-               }
-
-               if (_this22.table.options.dataTree !== false && _this22.table.modExists("dataTree") && _this22.table.modules.dataTree.redrawNeeded(updatedData)) {
-                       _this22.table.modules.dataTree.initializeRow(_this22);
-
-                       if (visible) {
-                               _this22.table.modules.dataTree.layoutRow(_this22);
-                               _this22.table.rowManager.refreshActiveData("tree", false, true);
-                       }
-               }
-
-               //this.reinitialize();
-
-               _this22.table.options.rowUpdated.call(_this22.table, _this22.getComponent());
-
-               if (_this22.table.options.dataChanged) {
-                       _this22.table.options.dataChanged.call(_this22.table, _this22.table.rowManager.getData());
-               }
-
-               resolve();
-       });
-};
-
-Row.prototype.getData = function (transform) {
-       if (transform) {
-               if (this.table.modExists("accessor")) {
-                       return this.table.modules.accessor.transformRow(this, transform);
-               }
-       }
-
-       return this.data;
-};
-
-Row.prototype.getCell = function (column) {
-       var match = false;
-
-       column = this.table.columnManager.findColumn(column);
-
-       match = this.cells.find(function (cell) {
-               return cell.column === column;
-       });
-
-       return match;
-};
-
-Row.prototype.getCellIndex = function (findCell) {
-       return this.cells.findIndex(function (cell) {
-               return cell === findCell;
-       });
-};
-
-Row.prototype.findNextEditableCell = function (index) {
-       var nextCell = false;
-
-       if (index < this.cells.length - 1) {
-               for (var i = index + 1; i < this.cells.length; i++) {
-                       var cell = this.cells[i];
-
-                       if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-                               var allowEdit = true;
-
-                               if (typeof cell.column.modules.edit.check == "function") {
-                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                               }
-
-                               if (allowEdit) {
-                                       nextCell = cell;
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       return nextCell;
-};
-
-Row.prototype.findPrevEditableCell = function (index) {
-       var prevCell = false;
-
-       if (index > 0) {
-               for (var i = index - 1; i >= 0; i--) {
-                       var cell = this.cells[i],
-                           allowEdit = true;
-
-                       if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-                               if (typeof cell.column.modules.edit.check == "function") {
-                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                               }
-
-                               if (allowEdit) {
-                                       prevCell = cell;
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       return prevCell;
-};
-
-Row.prototype.getCells = function () {
-       return this.cells;
-};
-
-Row.prototype.nextRow = function () {
-       var row = this.table.rowManager.nextDisplayRow(this, true);
-       return row || false;
-};
-
-Row.prototype.prevRow = function () {
-       var row = this.table.rowManager.prevDisplayRow(this, true);
-       return row || false;
-};
-
-Row.prototype.moveToRow = function (to, before) {
-       var toRow = this.table.rowManager.findRow(to);
-
-       if (toRow) {
-               this.table.rowManager.moveRowActual(this, toRow, !before);
-               this.table.rowManager.refreshActiveData("display", false, true);
-       } else {
-               console.warn("Move Error - No matching row found:", to);
-       }
-};
-
-Row.prototype.validate = function () {
-       var invalid = [];
-
-       this.cells.forEach(function (cell) {
-               if (!cell.validate()) {
-                       invalid.push(cell.getComponent());
-               }
-       });
-
-       return invalid.length ? invalid : true;
-};
-
-///////////////////// Actions  /////////////////////
-
-Row.prototype.delete = function () {
-       var _this23 = this;
-
-       return new Promise(function (resolve, reject) {
-               var index, rows;
-
-               if (_this23.table.options.history && _this23.table.modExists("history")) {
-
-                       if (_this23.table.options.groupBy && _this23.table.modExists("groupRows")) {
-                               rows = _this23.getGroup().rows;
-                               index = rows.indexOf(_this23);
-
-                               if (index) {
-                                       index = rows[index - 1];
-                               }
-                       } else {
-                               index = _this23.table.rowManager.getRowIndex(_this23);
-
-                               if (index) {
-                                       index = _this23.table.rowManager.rows[index - 1];
-                               }
-                       }
-
-                       _this23.table.modules.history.action("rowDelete", _this23, { data: _this23.getData(), pos: !index, index: index });
-               }
-
-               _this23.deleteActual();
-
-               resolve();
-       });
-};
-
-Row.prototype.deleteActual = function (blockRedraw) {
-       var index = this.table.rowManager.getRowIndex(this);
-
-       this.detatchModules();
-
-       // if(this.table.options.dataTree && this.table.modExists("dataTree")){
-       //      this.table.modules.dataTree.collapseRow(this, true);
-       // }
-
-       //remove any reactive data watchers from row object
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {}
-       // this.table.modules.reactiveData.unwatchRow(this);
-
-
-       //remove from group
-       if (this.modules.group) {
-               this.modules.group.removeRow(this);
-       }
-
-       this.table.rowManager.deleteRow(this, blockRedraw);
-
-       this.deleteCells();
-
-       this.initialized = false;
-       this.heightInitialized = false;
-       this.element = false;
-
-       if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
-               this.table.modules.dataTree.rowDelete(this);
-       }
-
-       //recalc column calculations if present
-       if (this.table.modExists("columnCalcs")) {
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.columnCalcs.recalcRowGroup(this);
-               } else {
-                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-               }
-       }
-};
-
-Row.prototype.detatchModules = function () {
-       //deselect row if it is selected
-       if (this.table.modExists("selectRow")) {
-               this.table.modules.selectRow._deselectRow(this, true);
-       }
-
-       //cancel edit if row is currently being edited
-       if (this.table.modExists("edit")) {
-               if (this.table.modules.edit.currentCell.row === this) {
-                       this.table.modules.edit.cancelEdit();
-               }
-       }
-
-       if (this.table.modExists("frozenRows")) {
-               this.table.modules.frozenRows.detachRow(this);
-       }
-};
-
-Row.prototype.deleteCells = function () {
-       var cellCount = this.cells.length;
-
-       for (var _i8 = 0; _i8 < cellCount; _i8++) {
-               this.cells[0].delete();
-       }
-};
-
-Row.prototype.wipe = function () {
-       this.detatchModules();
-       this.deleteCells();
-
-       while (this.element.firstChild) {
-               this.element.removeChild(this.element.firstChild);
-       }this.element = false;
-       this.modules = {};
-
-       if (this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-};
-
-Row.prototype.getGroup = function () {
-       return this.modules.group || false;
-};
-
-//////////////// Object Generation /////////////////
-Row.prototype.getComponent = function () {
-       if (!this.component) {
-               this.component = new RowComponent(this);
-       }
-
-       return this.component;
-};
-
-//public row object
-var CellComponent = function CellComponent(cell) {
-       this._cell = cell;
-};
-
-CellComponent.prototype.getValue = function () {
-       return this._cell.getValue();
-};
-
-CellComponent.prototype.getOldValue = function () {
-       return this._cell.getOldValue();
-};
-
-CellComponent.prototype.getInitialValue = function () {
-       return this._cell.initialValue;
-};
-
-CellComponent.prototype.getElement = function () {
-       return this._cell.getElement();
-};
-
-CellComponent.prototype.getRow = function () {
-       return this._cell.row.getComponent();
-};
-
-CellComponent.prototype.getData = function () {
-       return this._cell.row.getData();
-};
-
-CellComponent.prototype.getField = function () {
-       return this._cell.column.getField();
-};
-
-CellComponent.prototype.getColumn = function () {
-       return this._cell.column.getComponent();
-};
-
-CellComponent.prototype.setValue = function (value, mutate) {
-       if (typeof mutate == "undefined") {
-               mutate = true;
-       }
-
-       this._cell.setValue(value, mutate);
-};
-
-CellComponent.prototype.restoreOldValue = function () {
-       this._cell.setValueActual(this._cell.getOldValue());
-};
-
-CellComponent.prototype.restoreInitialValue = function () {
-       this._cell.setValueActual(this._cell.initialValue);
-};
-
-CellComponent.prototype.edit = function (force) {
-       return this._cell.edit(force);
-};
-
-CellComponent.prototype.cancelEdit = function () {
-       this._cell.cancelEdit();
-};
-
-CellComponent.prototype.isEdited = function () {
-       return !!this._cell.modules.edit && this._cell.modules.edit.edited;
-};
-
-CellComponent.prototype.clearEdited = function () {
-       if (self.table.modExists("edit", true)) {
-               this._cell.table.modules.edit.clearEdited(this._cell);
-       }
-};
-
-CellComponent.prototype.isValid = function () {
-       return this._cell.modules.validate ? !this._cell.modules.validate.invalid : true;
-};
-
-CellComponent.prototype.validate = function () {
-       return this._cell.validate();
-};
-
-CellComponent.prototype.clearValidation = function () {
-       if (this._cell.table.modExists("validate", true)) {
-               this._cell.table.modules.validate.clearValidation(this._cell);
-       }
-};
-
-CellComponent.prototype.nav = function () {
-       return this._cell.nav();
-};
-
-CellComponent.prototype.checkHeight = function () {
-       this._cell.checkHeight();
-};
-
-CellComponent.prototype.getTable = function () {
-       return this._cell.table;
-};
-
-CellComponent.prototype._getSelf = function () {
-       return this._cell;
-};
-
-var Cell = function Cell(column, row) {
-
-       this.table = column.table;
-       this.column = column;
-       this.row = row;
-       this.element = null;
-       this.value = null;
-       this.initialValue;
-       this.oldValue = null;
-       this.modules = {};
-
-       this.height = null;
-       this.width = null;
-       this.minWidth = null;
-
-       this.component = null;
-
-       this.loaded = false; //track if the cell has been added to the DOM yet
-
-       this.build();
-};
-
-//////////////// Setup Functions /////////////////
-
-//generate element
-Cell.prototype.build = function () {
-       this.generateElement();
-
-       this.setWidth();
-
-       this._configureCell();
-
-       this.setValueActual(this.column.getFieldValue(this.row.data));
-
-       this.initialValue = this.value;
-};
-
-Cell.prototype.generateElement = function () {
-       this.element = document.createElement('div');
-       this.element.className = "tabulator-cell";
-       this.element.setAttribute("role", "gridcell");
-       this.element = this.element;
-};
-
-Cell.prototype._configureCell = function () {
-       var self = this,
-           cellEvents = self.column.cellEvents,
-           element = self.element,
-           field = this.column.getField(),
-           vertAligns = {
-               top: "flex-start",
-               bottom: "flex-end",
-               middle: "center"
-       },
-           hozAligns = {
-               left: "flex-start",
-               right: "flex-end",
-               center: "center"
-       };
-
-       //set text alignment
-       element.style.textAlign = self.column.hozAlign;
-
-       if (self.column.vertAlign) {
-               element.style.display = "inline-flex";
-
-               element.style.alignItems = vertAligns[self.column.vertAlign] || "";
-
-               if (self.column.hozAlign) {
-                       element.style.justifyContent = hozAligns[self.column.hozAlign] || "";
-               }
-       }
-
-       if (field) {
-               element.setAttribute("tabulator-field", field);
-       }
-
-       //add class to cell if needed
-       if (self.column.definition.cssClass) {
-               var classNames = self.column.definition.cssClass.split(" ");
-               classNames.forEach(function (className) {
-                       element.classList.add(className);
-               });
-       }
-
-       //update tooltip on mouse enter
-       if (this.table.options.tooltipGenerationMode === "hover") {
-               element.addEventListener("mouseenter", function (e) {
-                       self._generateTooltip();
-               });
-       }
-
-       self._bindClickEvents(cellEvents);
-
-       self._bindTouchEvents(cellEvents);
-
-       self._bindMouseEvents(cellEvents);
-
-       if (self.column.modules.edit) {
-               self.table.modules.edit.bindEditor(self);
-       }
-
-       if (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-               self.table.modules.moveRow.initializeCell(self);
-       }
-
-       //hide cell if not visible
-       if (!self.column.visible) {
-               self.hide();
-       }
-};
-
-Cell.prototype._bindClickEvents = function (cellEvents) {
-       var self = this,
-           element = self.element;
-
-       //set event bindings
-       if (cellEvents.cellClick || self.table.options.cellClick) {
-               element.addEventListener("click", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellClick) {
-                               cellEvents.cellClick.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellClick) {
-                               self.table.options.cellClick.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellDblClick || this.table.options.cellDblClick) {
-               element.addEventListener("dblclick", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellDblClick) {
-                               cellEvents.cellDblClick.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellDblClick) {
-                               self.table.options.cellDblClick.call(self.table, e, component);
-                       }
-               });
-       } else {
-               element.addEventListener("dblclick", function (e) {
-
-                       if (self.table.modExists("edit")) {
-                               if (self.table.modules.edit.currentCell === self) {
-                                       return; //prevent instant selection of editor content
-                               }
-                       }
-
-                       e.preventDefault();
-
-                       try {
-                               if (document.selection) {
-                                       // IE
-                                       var range = document.body.createTextRange();
-                                       range.moveToElementText(self.element);
-                                       range.select();
-                               } else if (window.getSelection) {
-                                       var range = document.createRange();
-                                       range.selectNode(self.element);
-                                       window.getSelection().removeAllRanges();
-                                       window.getSelection().addRange(range);
-                               }
-                       } catch (e) {}
-               });
-       }
-
-       if (cellEvents.cellContext || this.table.options.cellContext) {
-               element.addEventListener("contextmenu", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellContext) {
-                               cellEvents.cellContext.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellContext) {
-                               self.table.options.cellContext.call(self.table, e, component);
-                       }
-               });
-       }
-};
-
-Cell.prototype._bindMouseEvents = function (cellEvents) {
-       var self = this,
-           element = self.element;
-
-       if (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {
-               element.addEventListener("mouseenter", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseEnter) {
-                               cellEvents.cellMouseEnter.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseEnter) {
-                               self.table.options.cellMouseEnter.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {
-               element.addEventListener("mouseleave", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseLeave) {
-                               cellEvents.cellMouseLeave.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseLeave) {
-                               self.table.options.cellMouseLeave.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {
-               element.addEventListener("mouseover", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseOver) {
-                               cellEvents.cellMouseOver.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseOver) {
-                               self.table.options.cellMouseOver.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {
-               element.addEventListener("mouseout", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseOut) {
-                               cellEvents.cellMouseOut.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseOut) {
-                               self.table.options.cellMouseOut.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {
-               element.addEventListener("mousemove", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseMove) {
-                               cellEvents.cellMouseMove.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseMove) {
-                               self.table.options.cellMouseMove.call(self.table, e, component);
-                       }
-               });
-       }
-};
-
-Cell.prototype._bindTouchEvents = function (cellEvents) {
-       var self = this,
-           element = self.element,
-           dblTap,
-           tapHold,
-           tap;
-
-       if (cellEvents.cellTap || this.table.options.cellTap) {
-               tap = false;
-
-               element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellTap) {
-                                       cellEvents.cellTap.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellTap) {
-                                       self.table.options.cellTap.call(self.table, e, component);
-                               }
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (cellEvents.cellDblTap || this.table.options.cellDblTap) {
-               dblTap = null;
-
-               element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellDblTap) {
-                                       cellEvents.cellDblTap.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellDblTap) {
-                                       self.table.options.cellDblTap.call(self.table, e, component);
-                               }
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (cellEvents.cellTapHold || this.table.options.cellTapHold) {
-               tapHold = null;
-
-               element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellTapHold) {
-                                       cellEvents.cellTapHold.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellTapHold) {
-                                       self.table.options.cellTapHold.call(self.table, e, component);
-                               }
-                       }, 1000);
-               }, { passive: true });
-
-               element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-};
-
-//generate cell contents
-Cell.prototype._generateContents = function () {
-       var val;
-
-       if (this.table.modExists("format")) {
-               val = this.table.modules.format.formatValue(this);
-       } else {
-               val = this.element.innerHTML = this.value;
-       }
-
-       switch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {
-               case "object":
-                       if (val instanceof Node) {
-
-                               //clear previous cell contents
-                               while (this.element.firstChild) {
-                                       this.element.removeChild(this.element.firstChild);
-                               }this.element.appendChild(val);
-                       } else {
-                               this.element.innerHTML = "";
-
-                               if (val != null) {
-                                       console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val);
-                               }
-                       }
-                       break;
-               case "undefined":
-               case "null":
-                       this.element.innerHTML = "";
-                       break;
-               default:
-                       this.element.innerHTML = val;
-       }
-};
-
-Cell.prototype.cellRendered = function () {
-       if (this.table.modExists("format") && this.table.modules.format.cellRendered) {
-               this.table.modules.format.cellRendered(this);
-       }
-};
-
-//generate tooltip text
-Cell.prototype._generateTooltip = function () {
-       var tooltip = this.column.tooltip;
-
-       if (tooltip) {
-               if (tooltip === true) {
-                       tooltip = this.value;
-               } else if (typeof tooltip == "function") {
-                       tooltip = tooltip(this.getComponent());
-
-                       if (tooltip === false) {
-                               tooltip = "";
-                       }
-               }
-
-               if (typeof tooltip === "undefined") {
-                       tooltip = "";
-               }
-
-               this.element.setAttribute("title", tooltip);
-       } else {
-               this.element.setAttribute("title", "");
-       }
-};
-
-//////////////////// Getters ////////////////////
-Cell.prototype.getElement = function () {
-       if (!this.loaded) {
-               this.loaded = true;
-               this.layoutElement();
-       }
-
-       return this.element;
-};
-
-Cell.prototype.getValue = function () {
-       return this.value;
-};
-
-Cell.prototype.getOldValue = function () {
-       return this.oldValue;
-};
-
-//////////////////// Actions ////////////////////
-
-Cell.prototype.setValue = function (value, mutate) {
-
-       var changed = this.setValueProcessData(value, mutate),
-           component;
-
-       if (changed) {
-               if (this.table.options.history && this.table.modExists("history")) {
-                       this.table.modules.history.action("cellEdit", this, { oldValue: this.oldValue, newValue: this.value });
-               }
-
-               component = this.getComponent();
-
-               if (this.column.cellEvents.cellEdited) {
-                       this.column.cellEvents.cellEdited.call(this.table, component);
-               }
-
-               if (this.table.options.groupUpdateOnCellEdit && this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.groupRows.reassignRowToGroup(this.row);
-               }
-
-               this.cellRendered();
-
-               this.table.options.cellEdited.call(this.table, component);
-
-               if (this.table.options.dataChanged) {
-                       this.table.options.dataChanged.call(this.table, this.table.rowManager.getData());
-               }
-       }
-};
-
-Cell.prototype.setValueProcessData = function (value, mutate) {
-       var changed = false;
-
-       if (this.value != value) {
-
-               changed = true;
-
-               if (mutate) {
-                       if (this.column.modules.mutate) {
-                               value = this.table.modules.mutator.transformCell(this, value);
-                       }
-               }
-       }
-
-       this.setValueActual(value);
-
-       if (changed && this.table.modExists("columnCalcs")) {
-               if (this.column.definition.topCalc || this.column.definition.bottomCalc) {
-                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                               if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
-                                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                               }
-
-                               if (this.table.options.columnCalcs != "table") {
-                                       this.table.modules.columnCalcs.recalcRowGroup(this.row);
-                               }
-                       } else {
-                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                       }
-               }
-       }
-
-       return changed;
-};
-
-Cell.prototype.setValueActual = function (value) {
-       this.oldValue = this.value;
-
-       this.value = value;
-
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-               this.table.modules.reactiveData.block();
-       }
-
-       this.column.setFieldValue(this.row.data, value);
-
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-               this.table.modules.reactiveData.unblock();
-       }
-
-       if (this.loaded) {
-               this.layoutElement();
-       }
-};
-
-Cell.prototype.layoutElement = function () {
-       this._generateContents();
-       this._generateTooltip();
-
-       //set resizable handles
-       if (this.table.options.resizableColumns && this.table.modExists("resizeColumns") && this.row.type === "row") {
-               this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
-       }
-
-       if ((this.column.definition.contextMenu || this.column.definition.clickMenu) && this.table.modExists("menu")) {
-               this.table.modules.menu.initializeCell(this);
-       }
-
-       //handle frozen cells
-       if (this.table.modExists("frozenColumns")) {
-               this.table.modules.frozenColumns.layoutElement(this.element, this.column);
-       }
-};
-
-Cell.prototype.setWidth = function () {
-       this.width = this.column.width;
-       this.element.style.width = this.column.widthStyled;
-};
-
-Cell.prototype.clearWidth = function () {
-       this.width = "";
-       this.element.style.width = "";
-};
-
-Cell.prototype.getWidth = function () {
-       return this.width || this.element.offsetWidth;
-};
-
-Cell.prototype.setMinWidth = function () {
-       this.minWidth = this.column.minWidth;
-       this.element.style.minWidth = this.column.minWidthStyled;
-};
-
-Cell.prototype.checkHeight = function () {
-       // var height = this.element.css("height");
-       this.row.reinitializeHeight();
-};
-
-Cell.prototype.clearHeight = function () {
-       this.element.style.height = "";
-       this.height = null;
-};
-
-Cell.prototype.setHeight = function () {
-       this.height = this.row.height;
-       this.element.style.height = this.row.heightStyled;
-};
-
-Cell.prototype.getHeight = function () {
-       return this.height || this.element.offsetHeight;
-};
-
-Cell.prototype.show = function () {
-       this.element.style.display = this.column.vertAlign ? "inline-flex" : "";
-};
-
-Cell.prototype.hide = function () {
-       this.element.style.display = "none";
-};
-
-Cell.prototype.edit = function (force) {
-       if (this.table.modExists("edit", true)) {
-               return this.table.modules.edit.editCell(this, force);
-       }
-};
-
-Cell.prototype.cancelEdit = function () {
-       if (this.table.modExists("edit", true)) {
-               var editing = this.table.modules.edit.getCurrentCell();
-
-               if (editing && editing._getSelf() === this) {
-                       this.table.modules.edit.cancelEdit();
-               } else {
-                       console.warn("Cancel Editor Error - This cell is not currently being edited ");
-               }
-       }
-};
-
-Cell.prototype.validate = function () {
-       if (this.column.modules.validate && this.table.modExists("validate", true)) {
-               var valid = this.table.modules.validate.validate(this.column.modules.validate, this, this.getValue());
-
-               return valid === true;
-       } else {
-               return true;
-       }
-};
-
-Cell.prototype.delete = function () {
-       if (!this.table.rowManager.redrawBlock && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-
-       if (this.modules.validate && this.modules.validate.invalid) {
-               this.table.modules.validate.clearValidation(this);
-       }
-
-       if (this.modules.edit && this.modules.edit.edited) {
-               this.table.modules.edit.clearEdited(this);
-       }
-
-       if (this.table.options.history) {
-               this.table.modules.history.clearComponentHistory(this);
-       }
-
-       this.element = false;
-       this.column.deleteCell(this);
-       this.row.deleteCell(this);
-       this.calcs = {};
-};
-
-//////////////// Navigation /////////////////
-
-Cell.prototype.nav = function () {
-
-       var self = this,
-           nextCell = false,
-           index = this.row.getCellIndex(this);
-
-       return {
-               next: function next() {
-                       var nextCell = this.right(),
-                           nextRow;
-
-                       if (!nextCell) {
-                               nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                               if (nextRow) {
-                                       nextCell = nextRow.findNextEditableCell(-1);
-
-                                       if (nextCell) {
-                                               nextCell.edit();
-                                               return true;
-                                       }
-                               }
-                       } else {
-                               return true;
-                       }
-
-                       return false;
-               },
-               prev: function prev() {
-                       var nextCell = this.left(),
-                           prevRow;
-
-                       if (!nextCell) {
-                               prevRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                               if (prevRow) {
-                                       nextCell = prevRow.findPrevEditableCell(prevRow.cells.length);
-
-                                       if (nextCell) {
-                                               nextCell.edit();
-                                               return true;
-                                       }
-                               }
-                       } else {
-                               return true;
-                       }
-
-                       return false;
-               },
-               left: function left() {
-
-                       nextCell = self.row.findPrevEditableCell(index);
-
-                       if (nextCell) {
-                               nextCell.edit();
-                               return true;
-                       } else {
-                               return false;
-                       }
-               },
-               right: function right() {
-                       nextCell = self.row.findNextEditableCell(index);
-
-                       if (nextCell) {
-                               nextCell.edit();
-                               return true;
-                       } else {
-                               return false;
-                       }
-               },
-               up: function up() {
-                       var nextRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                       if (nextRow) {
-                               nextRow.cells[index].edit();
-                       }
-               },
-               down: function down() {
-                       var nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                       if (nextRow) {
-                               nextRow.cells[index].edit();
-                       }
-               }
-
-       };
-};
-
-Cell.prototype.getIndex = function () {
-       this.row.getCellIndex(this);
-};
-
-//////////////// Object Generation /////////////////
-Cell.prototype.getComponent = function () {
-
-       if (!this.component) {
-               this.component = new CellComponent(this);
-       }
-
-       return this.component;
-};
-var FooterManager = function FooterManager(table) {
-       this.table = table;
-       this.active = false;
-       this.element = this.createElement(); //containing element
-       this.external = false;
-       this.links = [];
-
-       this._initialize();
-};
-
-FooterManager.prototype.createElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-footer");
-
-       return el;
-};
-
-FooterManager.prototype._initialize = function (element) {
-       if (this.table.options.footerElement) {
-
-               switch (_typeof(this.table.options.footerElement)) {
-                       case "string":
-
-                               if (this.table.options.footerElement[0] === "<") {
-                                       this.element.innerHTML = this.table.options.footerElement;
-                               } else {
-                                       this.external = true;
-                                       this.element = document.querySelector(this.table.options.footerElement);
-                               }
-                               break;
-                       default:
-                               this.element = this.table.options.footerElement;
-                               break;
-               }
-       }
-};
-
-FooterManager.prototype.getElement = function () {
-       return this.element;
-};
-
-FooterManager.prototype.append = function (element, parent) {
-       this.activate(parent);
-
-       this.element.appendChild(element);
-       this.table.rowManager.adjustTableSize();
-};
-
-FooterManager.prototype.prepend = function (element, parent) {
-       this.activate(parent);
-
-       this.element.insertBefore(element, this.element.firstChild);
-       this.table.rowManager.adjustTableSize();
-};
-
-FooterManager.prototype.remove = function (element) {
-       element.parentNode.removeChild(element);
-       this.deactivate();
-};
-
-FooterManager.prototype.deactivate = function (force) {
-       if (!this.element.firstChild || force) {
-               if (!this.external) {
-                       this.element.parentNode.removeChild(this.element);
-               }
-               this.active = false;
-       }
-
-       // this.table.rowManager.adjustTableSize();
-};
-
-FooterManager.prototype.activate = function (parent) {
-       if (!this.active) {
-               this.active = true;
-               if (!this.external) {
-                       this.table.element.appendChild(this.getElement());
-                       this.table.element.style.display = '';
-               }
-       }
-
-       if (parent) {
-               this.links.push(parent);
-       }
-};
-
-FooterManager.prototype.redraw = function () {
-       this.links.forEach(function (link) {
-               link.footerRedraw();
-       });
-};
-
-var Tabulator = function Tabulator(element, options) {
-
-       this.options = {};
-
-       this.columnManager = null; // hold Column Manager
-       this.rowManager = null; //hold Row Manager
-       this.footerManager = null; //holder Footer Manager
-       this.vdomHoz = null; //holder horizontal virtual dom
-
-
-       this.browser = ""; //hold current browser type
-       this.browserSlow = false; //handle reduced functionality for slower browsers
-       this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
-       this.rtl = false; //check if the table is in RTL mode
-
-       this.modules = {}; //hold all modules bound to this table
-
-       if (this.initializeElement(element)) {
-               this.initializeOptions(options || {});
-               this._create();
-       }
-
-       Tabulator.prototype.comms.register(this); //register table for inderdevice communication
-};
-
-//default setup options
-Tabulator.prototype.defaultOptions = {
-
-       height: false, //height of tabulator
-       minHeight: false, //minimum height of tabulator
-       maxHeight: false, //maximum height of tabulator
-
-       layout: "fitData", ///layout type "fitColumns" | "fitData"
-       layoutColumnsOnNewData: false, //update column widths on setData
-
-       columnMinWidth: 40, //minimum global width for a column
-       columnHeaderVertAlign: "top", //vertical alignment of column headers
-       columnVertAlign: false, // DEPRECATED - Left to allow warning
-
-       resizableColumns: true, //resizable columns
-       resizableRows: false, //resizable rows
-       autoResize: true, //auto resize table
-
-       columns: [], //store for colum header info
-
-       cellHozAlign: "", //horizontal align columns
-       cellVertAlign: "", //vertical align columns
-       headerHozAlign: "", //horizontal header alignment
-
-
-       data: [], //default starting data
-
-       autoColumns: false, //build columns from data row structure
-       autoColumnsDefinitions: false,
-
-       reactiveData: false, //enable data reactivity
-
-       nestedFieldSeparator: ".", //seperatpr for nested data
-
-       tooltips: false, //Tool tip value
-       tooltipsHeader: false, //Tool tip for headers
-       tooltipGenerationMode: "load", //when to generate tooltips
-
-       initialSort: false, //initial sorting criteria
-       initialFilter: false, //initial filtering criteria
-       initialHeaderFilter: false, //initial header filtering criteria
-
-       columnHeaderSortMulti: true, //multiple or single column sorting
-
-       sortOrderReverse: false, //reverse internal sort ordering
-
-       headerSort: true, //set default global header sort
-       headerSortTristate: false, //set default tristate header sorting
-       headerSortElement: "<div class='tabulator-arrow'></div>", //header sort element
-
-       footerElement: false, //hold footer element
-
-       index: "id", //filed for row index
-
-       textDirection: "auto",
-
-       keybindings: [], //array for keybindings
-
-       tabEndNewRow: false, //create new row when tab to end of table
-
-       invalidOptionWarnings: true, //allow toggling of invalid option warnings
-
-       clipboard: false, //enable clipboard
-       clipboardCopyStyled: true, //formatted table data
-       clipboardCopyConfig: false, //clipboard config
-       clipboardCopyFormatter: false, //DEPRICATED - REMOVE in 5.0
-       clipboardCopyRowRange: "active", //restrict clipboard to visible rows only
-       clipboardPasteParser: "table", //convert pasted clipboard data to rows
-       clipboardPasteAction: "insert", //how to insert pasted data into the table
-
-       clipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard
-       clipboardPasted: function clipboardPasted() {}, //data has been pasted into the table
-       clipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table
-
-       downloadDataFormatter: false, //function to manipulate table data before it is downloaded
-       downloadReady: function downloadReady(data, blob) {
-               return blob;
-       }, //function to manipulate download data
-       downloadComplete: false, //function to manipulate download data
-       downloadConfig: {}, //download config
-       downloadRowRange: "active", //restrict download to active rows only
-
-       dataTree: false, //enable data tree
-       dataTreeFilter: true, //filter child rows
-       dataTreeSort: true, //sort child rows
-       dataTreeElementColumn: false,
-       dataTreeBranchElement: true, //show data tree branch element
-       dataTreeChildIndent: 9, //data tree child indent in px
-       dataTreeChildField: "_children", //data tre column field to look for child rows
-       dataTreeCollapseElement: false, //data tree row collapse element
-       dataTreeExpandElement: false, //data tree row expand element
-       dataTreeStartExpanded: false,
-       dataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded
-       dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
-       dataTreeChildColumnCalcs: false, //include visible data tree rows in column calculations
-       dataTreeSelectPropagate: false, //seleccting a parent row selects its children
-
-       printAsHtml: false, //enable print as html
-       printFormatter: false, //printing page formatter
-       printHeader: false, //page header contents
-       printFooter: false, //page footer contents
-       printCopyStyle: true, //DEPRICATED - REMOVE in 5.0
-       printStyled: true, //enable print as html styling
-       printVisibleRows: true, //DEPRICATED - REMOVE in 5.0
-       printRowRange: "visible", //restrict print to visible rows only
-       printConfig: {}, //print config options
-
-       addRowPos: "bottom", //position to insert blank rows, top|bottom
-
-       selectable: "highlight", //highlight rows on hover
-       selectableRangeMode: "drag", //highlight rows on hover
-       selectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached
-       selectablePersistence: true, // maintain selection when table view is updated
-       selectableCheck: function selectableCheck(data, row) {
-               return true;
-       }, //check wheather row is selectable
-
-       headerFilterLiveFilterDelay: 300, //delay before updating column after user types in header filter
-       headerFilterPlaceholder: false, //placeholder text to display in header filters
-
-       headerVisible: true, //hide header
-
-       history: false, //enable edit history
-
-       locale: false, //current system language
-       langs: {},
-
-       virtualDom: true, //enable DOM virtualization
-       virtualDomBuffer: 0, // set virtual DOM buffer size
-       virtualDomHoz: false, //enable horizontal DOM virtualization
-
-       persistentLayout: false, //DEPRICATED - REMOVE in 5.0
-       persistentSort: false, //DEPRICATED - REMOVE in 5.0
-       persistentFilter: false, //DEPRICATED - REMOVE in 5.0
-       persistenceID: "", //key for persistent storage
-       persistenceMode: true, //mode for storing persistence information
-       persistenceReaderFunc: false, //function for handling persistence data reading
-       persistenceWriterFunc: false, //function for handling persistence data writing
-
-       persistence: false,
-
-       responsiveLayout: false, //responsive layout flags
-       responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
-       responsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter
-       responsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter
-
-       pagination: false, //set pagination type
-       paginationSize: false, //set number of rows to a page
-       paginationInitialPage: 1, //initail page to show on load
-       paginationButtonCount: 5, // set count of page button
-       paginationSizeSelector: false, //add pagination size selector element
-       paginationElement: false, //element to hold pagination numbers
-       paginationDataSent: {}, //pagination data sent to the server
-       paginationDataReceived: {}, //pagination data received from the server
-       paginationAddRow: "page", //add rows on table or page
-
-       ajaxURL: false, //url for ajax loading
-       ajaxURLGenerator: false,
-       ajaxParams: {}, //params for ajax loading
-       ajaxConfig: "get", //ajax request type
-       ajaxContentType: "form", //ajax request type
-       ajaxRequestFunc: false, //promise function
-       ajaxLoader: true, //show loader
-       ajaxLoaderLoading: false, //loader element
-       ajaxLoaderError: false, //loader element
-       ajaxFiltering: false,
-       ajaxSorting: false,
-       ajaxProgressiveLoad: false, //progressive loading
-       ajaxProgressiveLoadDelay: 0, //delay between requests
-       ajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins
-
-       groupBy: false, //enable table grouping and set field to group by
-       groupStartOpen: true, //starting state of group
-       groupValues: false,
-       groupUpdateOnCellEdit: false,
-
-       groupHeader: false, //header generation function
-       groupHeaderPrint: null,
-       groupHeaderClipboard: null,
-       groupHeaderHtmlOutput: null,
-       groupHeaderDownload: null,
-
-       htmlOutputConfig: false, //html outypu config
-
-       movableColumns: false, //enable movable columns
-
-       movableRows: false, //enable movable rows
-       movableRowsConnectedTables: false, //tables for movable rows to be connected to
-       movableRowsConnectedElements: false, //other elements for movable rows to be connected to
-       movableRowsSender: false,
-       movableRowsReceiver: "insert",
-       movableRowsSendingStart: function movableRowsSendingStart() {},
-       movableRowsSent: function movableRowsSent() {},
-       movableRowsSentFailed: function movableRowsSentFailed() {},
-       movableRowsSendingStop: function movableRowsSendingStop() {},
-       movableRowsReceivingStart: function movableRowsReceivingStart() {},
-       movableRowsReceived: function movableRowsReceived() {},
-       movableRowsReceivedFailed: function movableRowsReceivedFailed() {},
-       movableRowsReceivingStop: function movableRowsReceivingStop() {},
-       movableRowsElementDrop: function movableRowsElementDrop() {},
-
-       scrollToRowPosition: "top",
-       scrollToRowIfVisible: true,
-
-       scrollToColumnPosition: "left",
-       scrollToColumnIfVisible: true,
-
-       rowFormatter: false,
-       rowFormatterPrint: null,
-       rowFormatterClipboard: null,
-       rowFormatterHtmlOutput: null,
-
-       placeholder: false,
-
-       //table building callbacks
-       tableBuilding: function tableBuilding() {},
-       tableBuilt: function tableBuilt() {},
-
-       //render callbacks
-       renderStarted: function renderStarted() {},
-       renderComplete: function renderComplete() {},
-
-       //row callbacks
-       rowClick: false,
-       rowDblClick: false,
-       rowContext: false,
-       rowTap: false,
-       rowDblTap: false,
-       rowTapHold: false,
-       rowMouseEnter: false,
-       rowMouseLeave: false,
-       rowMouseOver: false,
-       rowMouseOut: false,
-       rowMouseMove: false,
-       rowContextMenu: false,
-       rowClickMenu: false,
-       rowAdded: function rowAdded() {},
-       rowDeleted: function rowDeleted() {},
-       rowMoved: function rowMoved() {},
-       rowUpdated: function rowUpdated() {},
-       rowSelectionChanged: function rowSelectionChanged() {},
-       rowSelected: function rowSelected() {},
-       rowDeselected: function rowDeselected() {},
-       rowResized: function rowResized() {},
-
-       //cell callbacks
-       //row callbacks
-       cellClick: false,
-       cellDblClick: false,
-       cellContext: false,
-       cellTap: false,
-       cellDblTap: false,
-       cellTapHold: false,
-       cellMouseEnter: false,
-       cellMouseLeave: false,
-       cellMouseOver: false,
-       cellMouseOut: false,
-       cellMouseMove: false,
-       cellEditing: function cellEditing() {},
-       cellEdited: function cellEdited() {},
-       cellEditCancelled: function cellEditCancelled() {},
-
-       //column callbacks
-       columnMoved: false,
-       columnResized: function columnResized() {},
-       columnTitleChanged: function columnTitleChanged() {},
-       columnVisibilityChanged: function columnVisibilityChanged() {},
-
-       //HTML iport callbacks
-       htmlImporting: function htmlImporting() {},
-       htmlImported: function htmlImported() {},
-
-       //data callbacks
-       dataLoading: function dataLoading() {},
-       dataLoaded: function dataLoaded() {},
-       dataEdited: false, //DEPRECATED
-       dataChanged: false,
-
-       //ajax callbacks
-       ajaxRequesting: function ajaxRequesting() {},
-       ajaxResponse: false,
-       ajaxError: function ajaxError() {},
-
-       //filtering callbacks
-       dataFiltering: false,
-       dataFiltered: false,
-
-       //sorting callbacks
-       dataSorting: function dataSorting() {},
-       dataSorted: function dataSorted() {},
-
-       //grouping callbacks
-       groupToggleElement: "arrow",
-       groupClosedShowCalcs: false,
-       dataGrouping: function dataGrouping() {},
-       dataGrouped: false,
-       groupVisibilityChanged: function groupVisibilityChanged() {},
-       groupClick: false,
-       groupDblClick: false,
-       groupContext: false,
-       groupContextMenu: false,
-       groupClickMenu: false,
-       groupTap: false,
-       groupDblTap: false,
-       groupTapHold: false,
-
-       columnCalcs: true,
-
-       //pagination callbacks
-       pageLoaded: function pageLoaded() {},
-
-       //localization callbacks
-       localized: function localized() {},
-
-       //validation callbacks
-       validationMode: "blocking",
-       validationFailed: function validationFailed() {},
-
-       //history callbacks
-       historyUndo: function historyUndo() {},
-       historyRedo: function historyRedo() {},
-
-       //scroll callbacks
-       scrollHorizontal: function scrollHorizontal() {},
-       scrollVertical: function scrollVertical() {}
-};
-
-Tabulator.prototype.initializeOptions = function (options) {
-
-       //warn user if option is not available
-       if (options.invalidOptionWarnings !== false) {
-               for (var key in options) {
-                       if (typeof this.defaultOptions[key] === "undefined") {
-                               console.warn("Invalid table constructor option:", key);
-                       }
-               }
-       }
-
-       //assign options to table
-       for (var key in this.defaultOptions) {
-               if (key in options) {
-                       this.options[key] = options[key];
-               } else {
-                       if (Array.isArray(this.defaultOptions[key])) {
-                               this.options[key] = Object.assign([], this.defaultOptions[key]);
-                       } else if (_typeof(this.defaultOptions[key]) === "object" && this.defaultOptions[key] !== null) {
-                               this.options[key] = Object.assign({}, this.defaultOptions[key]);
-                       } else {
-                               this.options[key] = this.defaultOptions[key];
-                       }
-               }
-       }
-};
-
-Tabulator.prototype.initializeElement = function (element) {
-
-       if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
-               this.element = element;
-               return true;
-       } else if (typeof element === "string") {
-               this.element = document.querySelector(element);
-
-               if (this.element) {
-                       return true;
-               } else {
-                       console.error("Tabulator Creation Error - no element found matching selector: ", element);
-                       return false;
-               }
-       } else {
-               console.error("Tabulator Creation Error - Invalid element provided:", element);
-               return false;
-       }
-};
-
-Tabulator.prototype.rtlCheck = function () {
-       var style = window.getComputedStyle(this.element);
-
-       switch (this.options.textDirection) {
-               case "auto":
-                       if (style.direction !== "rtl") {
-                               break;
-                       };
-
-               case "rtl":
-                       this.element.classList.add("tabulator-rtl");
-                       this.rtl = true;
-                       break;
-
-               case "ltr":
-                       this.element.classList.add("tabulator-ltr");
-
-               default:
-                       this.rtl = false;
-       }
-};
-
-//convert depricated functionality to new functions
-Tabulator.prototype._mapDepricatedFunctionality = function () {
-
-       //map depricated persistance setup options
-       if (this.options.persistentLayout || this.options.persistentSort || this.options.persistentFilter) {
-               if (!this.options.persistence) {
-                       this.options.persistence = {};
-               }
-       }
-
-       if (this.options.dataEdited) {
-               console.warn("DEPRECATION WARNING - dataEdited option has been deprecated, please use the dataChanged option instead");
-               this.options.dataChanged = this.options.dataEdited;
-       }
-
-       if (this.options.downloadDataFormatter) {
-               console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated");
-       }
-
-       if (typeof this.options.clipboardCopyHeader !== "undefined") {
-               this.options.columnHeaders = this.options.clipboardCopyHeader;
-               console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
-       }
-
-       if (this.options.printVisibleRows !== true) {
-               console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option");
-
-               this.options.persistence.printRowRange = "active";
-       }
-
-       if (this.options.printCopyStyle !== true) {
-               console.warn("printCopyStyle option is deprecated, you should now use the printStyled option");
-
-               this.options.persistence.printStyled = this.options.printCopyStyle;
-       }
-
-       if (this.options.persistentLayout) {
-               console.warn("persistentLayout option is deprecated, you should now use the persistence option");
-
-               if (this.options.persistence !== true && typeof this.options.persistence.columns === "undefined") {
-                       this.options.persistence.columns = true;
-               }
-       }
-
-       if (this.options.persistentSort) {
-               console.warn("persistentSort option is deprecated, you should now use the persistence option");
-
-               if (this.options.persistence !== true && typeof this.options.persistence.sort === "undefined") {
-                       this.options.persistence.sort = true;
-               }
-       }
-
-       if (this.options.persistentFilter) {
-               console.warn("persistentFilter option is deprecated, you should now use the persistence option");
-
-               if (this.options.persistence !== true && typeof this.options.persistence.filter === "undefined") {
-                       this.options.persistence.filter = true;
-               }
-       }
-
-       if (this.options.columnVertAlign) {
-               console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option");
-
-               this.options.columnHeaderVertAlign = this.options.columnVertAlign;
-       }
-};
-
-Tabulator.prototype._clearSelection = function () {
-
-       this.element.classList.add("tabulator-block-select");
-
-       if (window.getSelection) {
-               if (window.getSelection().empty) {
-                       // Chrome
-                       window.getSelection().empty();
-               } else if (window.getSelection().removeAllRanges) {
-                       // Firefox
-                       window.getSelection().removeAllRanges();
-               }
-       } else if (document.selection) {
-               // IE?
-               document.selection.empty();
-       }
-
-       this.element.classList.remove("tabulator-block-select");
-};
-
-//concreate table
-Tabulator.prototype._create = function () {
-       this._clearObjectPointers();
-
-       this._mapDepricatedFunctionality();
-
-       this.bindModules();
-
-       this.rtlCheck();
-
-       if (this.element.tagName === "TABLE") {
-               if (this.modExists("htmlTableImport", true)) {
-                       this.modules.htmlTableImport.parseTable();
-               }
-       }
-
-       this.columnManager = new ColumnManager(this);
-       this.rowManager = new RowManager(this);
-       this.footerManager = new FooterManager(this);
-
-       this.columnManager.setRowManager(this.rowManager);
-       this.rowManager.setColumnManager(this.columnManager);
-
-       if (this.options.virtualDomHoz) {
-               this.vdomHoz = new VDomHoz(this);
-       }
-
-       this._buildElement();
-
-       this._loadInitialData();
-};
-
-//clear pointers to objects in default config object
-Tabulator.prototype._clearObjectPointers = function () {
-       this.options.columns = this.options.columns.slice(0);
-
-       if (!this.options.reactiveData) {
-               this.options.data = this.options.data.slice(0);
-       }
-};
-
-//build tabulator element
-Tabulator.prototype._buildElement = function () {
-       var _this24 = this;
-
-       var element = this.element,
-           mod = this.modules,
-           options = this.options;
-
-       options.tableBuilding.call(this);
-
-       element.classList.add("tabulator");
-       element.setAttribute("role", "grid");
-
-       //empty element
-       while (element.firstChild) {
-               element.removeChild(element.firstChild);
-       } //set table height
-       if (options.height) {
-               options.height = isNaN(options.height) ? options.height : options.height + "px";
-               element.style.height = options.height;
-       }
-
-       //set table min height
-       if (options.minHeight !== false) {
-               options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px";
-               element.style.minHeight = options.minHeight;
-       }
-
-       //set table maxHeight
-       if (options.maxHeight !== false) {
-               options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px";
-               element.style.maxHeight = options.maxHeight;
-       }
-
-       this.columnManager.initialize();
-       this.rowManager.initialize();
-
-       this._detectBrowser();
-
-       if (this.modExists("layout", true)) {
-               mod.layout.initialize(options.layout);
-       }
-
-       //set localization
-
-       mod.localize.initialize();
-
-       if (options.headerFilterPlaceholder !== false) {
-               mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
-       }
-
-       for (var locale in options.langs) {
-               mod.localize.installLang(locale, options.langs[locale]);
-       }
-
-       mod.localize.setLocale(options.locale);
-
-       //configure placeholder element
-       if (typeof options.placeholder == "string") {
-
-               var el = document.createElement("div");
-               el.classList.add("tabulator-placeholder");
-
-               var span = document.createElement("span");
-               span.innerHTML = options.placeholder;
-
-               el.appendChild(span);
-
-               options.placeholder = el;
-       }
-
-       //build table elements
-       element.appendChild(this.columnManager.getElement());
-       element.appendChild(this.rowManager.getElement());
-
-       if (options.footerElement) {
-               this.footerManager.activate();
-       }
-
-       if (options.persistence && this.modExists("persistence", true)) {
-               mod.persistence.initialize();
-       }
-
-       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.columns) {
-               options.columns = mod.persistence.load("columns", options.columns);
-       }
-
-       if (options.movableRows && this.modExists("moveRow")) {
-               mod.moveRow.initialize();
-       }
-
-       if (options.autoColumns && this.options.data) {
-               this.columnManager.generateColumnsFromRowData(this.options.data);
-       }
-
-       if (this.modExists("columnCalcs")) {
-               mod.columnCalcs.initialize();
-       }
-
-       this.columnManager.setColumns(options.columns);
-
-       if (options.dataTree && this.modExists("dataTree", true)) {
-               mod.dataTree.initialize();
-       }
-
-       if (this.modExists("frozenRows")) {
-               this.modules.frozenRows.initialize();
-       }
-
-       if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort || options.initialSort) && this.modExists("sort", true)) {
-               var sorters = [];
-
-               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort) {
-                       sorters = mod.persistence.load("sort");
-
-                       if (sorters === false && options.initialSort) {
-                               sorters = options.initialSort;
-                       }
-               } else if (options.initialSort) {
-                       sorters = options.initialSort;
-               }
-
-               mod.sort.setSort(sorters);
-       }
-
-       if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter || options.initialFilter) && this.modExists("filter", true)) {
-               var filters = [];
-
-               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter) {
-                       filters = mod.persistence.load("filter");
-
-                       if (filters === false && options.initialFilter) {
-                               filters = options.initialFilter;
-                       }
-               } else if (options.initialFilter) {
-                       filters = options.initialFilter;
-               }
-
-               mod.filter.setFilter(filters);
-       }
-
-       if (options.initialHeaderFilter && this.modExists("filter", true)) {
-               options.initialHeaderFilter.forEach(function (item) {
-
-                       var column = _this24.columnManager.findColumn(item.field);
-
-                       if (column) {
-                               mod.filter.setHeaderFilterValue(column, item.value);
-                       } else {
-                               console.warn("Column Filter Error - No matching column found:", item.field);
-                               return false;
-                       }
-               });
-       }
-
-       if (this.modExists("ajax")) {
-               mod.ajax.initialize();
-       }
-
-       if (options.pagination && this.modExists("page", true)) {
-               mod.page.initialize();
-       }
-
-       if (options.groupBy && this.modExists("groupRows", true)) {
-               mod.groupRows.initialize();
-       }
-
-       if (this.modExists("keybindings")) {
-               mod.keybindings.initialize();
-       }
-
-       if (this.modExists("selectRow")) {
-               mod.selectRow.clearSelectionData(true);
-       }
-
-       if (options.autoResize && this.modExists("resizeTable")) {
-               mod.resizeTable.initialize();
-       }
-
-       if (this.modExists("clipboard")) {
-               mod.clipboard.initialize();
-       }
-
-       if (options.printAsHtml && this.modExists("print")) {
-               mod.print.initialize();
-       }
-
-       options.tableBuilt.call(this);
-};
-
-Tabulator.prototype._loadInitialData = function () {
-       var self = this;
-
-       if (self.options.pagination && self.modExists("page")) {
-               self.modules.page.reset(true, true);
-
-               if (self.options.pagination == "local") {
-                       if (self.options.data.length) {
-                               self.rowManager.setData(self.options.data, false, true);
-                       } else {
-                               if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-                                       self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {
-                                               if (self.options.paginationInitialPage) {
-                                                       self.modules.page.setPage(self.options.paginationInitialPage);
-                                               }
-                                       });
-
-                                       return;
-                               } else {
-                                       self.rowManager.setData(self.options.data, false, true);
-                               }
-                       }
-
-                       if (self.options.paginationInitialPage) {
-                               self.modules.page.setPage(self.options.paginationInitialPage);
-                       }
-               } else {
-                       if (self.options.ajaxURL) {
-                               self.modules.page.setPage(self.options.paginationInitialPage).then(function () {}).catch(function () {});
-                       } else {
-                               self.rowManager.setData([], false, true);
-                       }
-               }
-       } else {
-               if (self.options.data.length) {
-                       self.rowManager.setData(self.options.data);
-               } else {
-                       if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-                               self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {});
-                       } else {
-                               self.rowManager.setData(self.options.data, false, true);
-                       }
-               }
-       }
-};
-
-//deconstructor
-Tabulator.prototype.destroy = function () {
-       var element = this.element;
-
-       Tabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication
-
-       if (this.options.reactiveData && this.modExists("reactiveData", true)) {
-               this.modules.reactiveData.unwatchData();
-       }
-
-       //clear row data
-       this.rowManager.rows.forEach(function (row) {
-               row.wipe();
-       });
-
-       this.rowManager.rows = [];
-       this.rowManager.activeRows = [];
-       this.rowManager.displayRows = [];
-
-       //clear event bindings
-       if (this.options.autoResize && this.modExists("resizeTable")) {
-               this.modules.resizeTable.clearBindings();
-       }
-
-       if (this.modExists("keybindings")) {
-               this.modules.keybindings.clearBindings();
-       }
-
-       //clear DOM
-       while (element.firstChild) {
-               element.removeChild(element.firstChild);
-       }element.classList.remove("tabulator");
-};
-
-Tabulator.prototype._detectBrowser = function () {
-       var ua = navigator.userAgent || navigator.vendor || window.opera;
-
-       if (ua.indexOf("Trident") > -1) {
-               this.browser = "ie";
-               this.browserSlow = true;
-       } else if (ua.indexOf("Edge") > -1) {
-               this.browser = "edge";
-               this.browserSlow = true;
-       } else if (ua.indexOf("Firefox") > -1) {
-               this.browser = "firefox";
-               this.browserSlow = false;
-       } else {
-               this.browser = "other";
-               this.browserSlow = false;
-       }
-
-       this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.substr(0, 4));
-};
-
-////////////////// Data Handling //////////////////
-
-//block table redrawing
-Tabulator.prototype.blockRedraw = function () {
-       return this.rowManager.blockRedraw();
-};
-
-//restore table redrawing
-Tabulator.prototype.restoreRedraw = function () {
-       return this.rowManager.restoreRedraw();
-};
-
-//local data from local file
-Tabulator.prototype.setDataFromLocalFile = function (extensions) {
-       var _this25 = this;
-
-       return new Promise(function (resolve, reject) {
-               var input = document.createElement("input");
-               input.type = "file";
-               input.accept = extensions || ".json,application/json";
-
-               input.addEventListener("change", function (e) {
-                       var file = input.files[0],
-                           reader = new FileReader(),
-                           data;
-
-                       reader.readAsText(file);
-
-                       reader.onload = function (e) {
-
-                               try {
-                                       data = JSON.parse(reader.result);
-                               } catch (e) {
-                                       console.warn("File Load Error - File contents is invalid JSON", e);
-                                       reject(e);
-                                       return;
-                               }
-
-                               _this25.setData(data).then(function (data) {
-                                       resolve(data);
-                               }).catch(function (err) {
-                                       resolve(err);
-                               });
-                       };
-
-                       reader.onerror = function (e) {
-                               console.warn("File Load Error - Unable to read file");
-                               reject();
-                       };
-               });
-
-               input.click();
-       });
-};
-
-//load data
-Tabulator.prototype.setData = function (data, params, config) {
-       if (this.modExists("ajax")) {
-               this.modules.ajax.blockActiveRequest();
-       }
-
-       return this._setData(data, params, config, false, true);
-};
-
-Tabulator.prototype._setData = function (data, params, config, inPosition, columnsChanged) {
-       var self = this;
-
-       if (typeof data === "string") {
-               if (data.indexOf("{") == 0 || data.indexOf("[") == 0) {
-                       //data is a json encoded string
-                       return self.rowManager.setData(JSON.parse(data), inPosition, columnsChanged);
-               } else {
-
-                       if (self.modExists("ajax", true)) {
-                               if (params) {
-                                       self.modules.ajax.setParams(params);
-                               }
-
-                               if (config) {
-                                       self.modules.ajax.setConfig(config);
-                               }
-
-                               self.modules.ajax.setUrl(data);
-
-                               if (self.options.pagination == "remote" && self.modExists("page", true)) {
-                                       self.modules.page.reset(true, true);
-                                       return self.modules.page.setPage(1);
-                               } else {
-                                       //assume data is url, make ajax call to url to get data
-                                       return self.modules.ajax.loadData(inPosition, columnsChanged);
-                               }
-                       }
-               }
-       } else {
-               if (data) {
-                       //asume data is already an object
-                       return self.rowManager.setData(data, inPosition, columnsChanged);
-               } else {
-
-                       //no data provided, check if ajaxURL is present;
-                       if (self.modExists("ajax") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {
-
-                               if (self.options.pagination == "remote" && self.modExists("page", true)) {
-                                       self.modules.page.reset(true, true);
-                                       return self.modules.page.setPage(1);
-                               } else {
-                                       return self.modules.ajax.loadData(inPosition, columnsChanged);
-                               }
-                       } else {
-                               //empty data
-                               return self.rowManager.setData([], inPosition, columnsChanged);
-                       }
-               }
-       }
-};
-
-//clear data
-Tabulator.prototype.clearData = function () {
-       if (this.modExists("ajax")) {
-               this.modules.ajax.blockActiveRequest();
-       }
-
-       this.rowManager.clearData();
-};
-
-//get table data array
-Tabulator.prototype.getData = function (active) {
-
-       if (active === true) {
-               console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'");
-               active = "active";
-       }
-
-       return this.rowManager.getData(active);
-};
-
-//get table data array count
-Tabulator.prototype.getDataCount = function (active) {
-
-       if (active === true) {
-               console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'");
-               active = "active";
-       }
-
-       return this.rowManager.getDataCount(active);
-};
-
-//search for specific row components
-Tabulator.prototype.searchRows = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.search("rows", field, type, value);
-       }
-};
-
-//search for specific data
-Tabulator.prototype.searchData = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.search("data", field, type, value);
-       }
-};
-
-//get table html
-Tabulator.prototype.getHtml = function (visible, style, config) {
-       if (this.modExists("export", true)) {
-               return this.modules.export.getHtml(visible, style, config);
-       }
-};
-
-//get print html
-Tabulator.prototype.print = function (visible, style, config) {
-       if (this.modExists("print", true)) {
-               return this.modules.print.printFullscreen(visible, style, config);
-       }
-};
-
-//retrieve Ajax URL
-Tabulator.prototype.getAjaxUrl = function () {
-       if (this.modExists("ajax", true)) {
-               return this.modules.ajax.getUrl();
-       }
-};
-
-//replace data, keeping table in position with same sort
-Tabulator.prototype.replaceData = function (data, params, config) {
-       if (this.modExists("ajax")) {
-               this.modules.ajax.blockActiveRequest();
-       }
-
-       return this._setData(data, params, config, true);
-};
-
-//update table data
-Tabulator.prototype.updateData = function (data) {
-       var _this26 = this;
-
-       var self = this;
-       var responses = 0;
-
-       return new Promise(function (resolve, reject) {
-               if (_this26.modExists("ajax")) {
-                       _this26.modules.ajax.blockActiveRequest();
-               }
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (data) {
-                       data.forEach(function (item) {
-                               var row = self.rowManager.findRow(item[self.options.index]);
-
-                               if (row) {
-                                       responses++;
-
-                                       row.updateData(item).then(function () {
-                                               responses--;
-
-                                               if (!responses) {
-                                                       resolve();
-                                               }
-                                       });
-                               }
-                       });
-               } else {
-                       console.warn("Update Error - No data provided");
-                       reject("Update Error - No data provided");
-               }
-       });
-};
-
-Tabulator.prototype.addData = function (data, pos, index) {
-       var _this27 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this27.modExists("ajax")) {
-                       _this27.modules.ajax.blockActiveRequest();
-               }
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (data) {
-                       _this27.rowManager.addRows(data, pos, index).then(function (rows) {
-                               var output = [];
-
-                               rows.forEach(function (row) {
-                                       output.push(row.getComponent());
-                               });
-
-                               resolve(output);
-                       });
-               } else {
-                       console.warn("Update Error - No data provided");
-                       reject("Update Error - No data provided");
-               }
-       });
-};
-
-//update table data
-Tabulator.prototype.updateOrAddData = function (data) {
-       var _this28 = this;
-
-       var self = this,
-           rows = [],
-           responses = 0;
-
-       return new Promise(function (resolve, reject) {
-               if (_this28.modExists("ajax")) {
-                       _this28.modules.ajax.blockActiveRequest();
-               }
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (data) {
-                       data.forEach(function (item) {
-                               var row = self.rowManager.findRow(item[self.options.index]);
-
-                               responses++;
-
-                               if (row) {
-                                       row.updateData(item).then(function () {
-                                               responses--;
-                                               rows.push(row.getComponent());
-
-                                               if (!responses) {
-                                                       resolve(rows);
-                                               }
-                                       });
-                               } else {
-                                       self.rowManager.addRows(item).then(function (newRows) {
-                                               responses--;
-                                               rows.push(newRows[0].getComponent());
-
-                                               if (!responses) {
-                                                       resolve(rows);
-                                               }
-                                       });
-                               }
-                       });
-               } else {
-                       console.warn("Update Error - No data provided");
-                       reject("Update Error - No data provided");
-               }
-       });
-};
-
-//get row object
-Tabulator.prototype.getRow = function (index) {
-       var row = this.rowManager.findRow(index);
-
-       if (row) {
-               return row.getComponent();
-       } else {
-               console.warn("Find Error - No matching row found:", index);
-               return false;
-       }
-};
-
-//get row object
-Tabulator.prototype.getRowFromPosition = function (position, active) {
-       var row = this.rowManager.getRowFromPosition(position, active);
-
-       if (row) {
-               return row.getComponent();
-       } else {
-               console.warn("Find Error - No matching row found:", position);
-               return false;
-       }
-};
-
-//delete row from table
-Tabulator.prototype.deleteRow = function (index) {
-       var _this29 = this;
-
-       return new Promise(function (resolve, reject) {
-               var self = _this29,
-                   count = 0,
-                   successCount = 0,
-                   foundRows = [];
-
-               function doneCheck() {
-                       count++;
-
-                       if (count == index.length) {
-                               if (successCount) {
-                                       self.rowManager.reRenderInPosition();
-                                       resolve();
-                               }
-                       }
-               }
-
-               if (!Array.isArray(index)) {
-                       index = [index];
-               }
-
-               //find matching rows
-               index.forEach(function (item) {
-                       var row = _this29.rowManager.findRow(item, true);
-
-                       if (row) {
-                               foundRows.push(row);
-                       } else {
-                               console.warn("Delete Error - No matching row found:", item);
-                               reject("Delete Error - No matching row found");
-                               doneCheck();
-                       }
-               });
-
-               //sort rows into correct order to ensure smooth delete from table
-               foundRows.sort(function (a, b) {
-                       return _this29.rowManager.rows.indexOf(a) > _this29.rowManager.rows.indexOf(b) ? 1 : -1;
-               });
-
-               foundRows.forEach(function (row) {
-                       row.delete().then(function () {
-                               successCount++;
-                               doneCheck();
-                       }).catch(function (err) {
-                               doneCheck();
-                               reject(err);
-                       });
-               });
-       });
-};
-
-//add row to table
-Tabulator.prototype.addRow = function (data, pos, index) {
-       var _this30 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               _this30.rowManager.addRows(data, pos, index).then(function (rows) {
-                       //recalc column calculations if present
-                       if (_this30.modExists("columnCalcs")) {
-                               _this30.modules.columnCalcs.recalc(_this30.rowManager.activeRows);
-                       }
-
-                       resolve(rows[0].getComponent());
-               });
-       });
-};
-
-//update a row if it exitsts otherwise create it
-Tabulator.prototype.updateOrAddRow = function (index, data) {
-       var _this31 = this;
-
-       return new Promise(function (resolve, reject) {
-               var row = _this31.rowManager.findRow(index);
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (row) {
-                       row.updateData(data).then(function () {
-                               //recalc column calculations if present
-                               if (_this31.modExists("columnCalcs")) {
-                                       _this31.modules.columnCalcs.recalc(_this31.rowManager.activeRows);
-                               }
-
-                               resolve(row.getComponent());
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       row = _this31.rowManager.addRows(data).then(function (rows) {
-                               //recalc column calculations if present
-                               if (_this31.modExists("columnCalcs")) {
-                                       _this31.modules.columnCalcs.recalc(_this31.rowManager.activeRows);
-                               }
-
-                               resolve(rows[0].getComponent());
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               }
-       });
-};
-
-//update row data
-Tabulator.prototype.updateRow = function (index, data) {
-       var _this32 = this;
-
-       return new Promise(function (resolve, reject) {
-               var row = _this32.rowManager.findRow(index);
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (row) {
-                       row.updateData(data).then(function () {
-                               resolve(row.getComponent());
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Update Error - No matching row found:", index);
-                       reject("Update Error - No matching row found");
-               }
-       });
-};
-
-//scroll to row in DOM
-Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
-       var _this33 = this;
-
-       return new Promise(function (resolve, reject) {
-               var row = _this33.rowManager.findRow(index);
-
-               if (row) {
-                       _this33.rowManager.scrollToRow(row, position, ifVisible).then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Scroll Error - No matching row found:", index);
-                       reject("Scroll Error - No matching row found");
-               }
-       });
-};
-
-Tabulator.prototype.moveRow = function (from, to, after) {
-       var fromRow = this.rowManager.findRow(from);
-
-       if (fromRow) {
-               fromRow.moveToRow(to, after);
-       } else {
-               console.warn("Move Error - No matching row found:", from);
-       }
-};
-
-Tabulator.prototype.getRows = function (active) {
-
-       if (active === true) {
-               console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'");
-               active = "active";
-       }
-
-       return this.rowManager.getComponents(active);
-};
-
-//get position of row in table
-Tabulator.prototype.getRowPosition = function (index, active) {
-       var row = this.rowManager.findRow(index);
-
-       if (row) {
-               return this.rowManager.getRowPosition(row, active);
-       } else {
-               console.warn("Position Error - No matching row found:", index);
-               return false;
-       }
-};
-
-//copy table data to clipboard
-Tabulator.prototype.copyToClipboard = function (selector) {
-       if (this.modExists("clipboard", true)) {
-               this.modules.clipboard.copy(selector);
-       }
-};
-
-/////////////// Column Functions  ///////////////
-
-Tabulator.prototype.setColumns = function (definition) {
-       this.columnManager.setColumns(definition);
-};
-
-Tabulator.prototype.getColumns = function (structured) {
-       return this.columnManager.getComponents(structured);
-};
-
-Tabulator.prototype.getColumn = function (field) {
-       var col = this.columnManager.findColumn(field);
-
-       if (col) {
-               return col.getComponent();
-       } else {
-               console.warn("Find Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.getColumnDefinitions = function () {
-       return this.columnManager.getDefinitionTree();
-};
-
-Tabulator.prototype.getColumnLayout = function () {
-       if (this.modExists("persistence", true)) {
-               return this.modules.persistence.parseColumns(this.columnManager.getColumns());
-       }
-};
-
-Tabulator.prototype.setColumnLayout = function (layout) {
-       if (this.modExists("persistence", true)) {
-               this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));
-               return true;
-       }
-       return false;
-};
-
-Tabulator.prototype.showColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
-
-       if (column) {
-               column.show();
-
-               if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-                       this.modules.responsiveLayout.update();
-               }
-       } else {
-               console.warn("Column Show Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.hideColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
-
-       if (column) {
-               column.hide();
-
-               if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-                       this.modules.responsiveLayout.update();
-               }
-       } else {
-               console.warn("Column Hide Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.toggleColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
-
-       if (column) {
-               if (column.visible) {
-                       column.hide();
-               } else {
-                       column.show();
-               }
-       } else {
-               console.warn("Column Visibility Toggle Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.addColumn = function (definition, before, field) {
-       var _this34 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this34.columnManager.findColumn(field);
-
-               _this34.columnManager.addColumn(definition, before, column).then(function (column) {
-                       resolve(column.getComponent());
-               }).catch(function (err) {
-                       reject(err);
-               });
-       });
-};
-
-Tabulator.prototype.deleteColumn = function (field) {
-       var _this35 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this35.columnManager.findColumn(field);
-
-               if (column) {
-                       column.delete().then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Column Delete Error - No matching column found:", field);
-                       reject();
-               }
-       });
-};
-
-Tabulator.prototype.updateColumnDefinition = function (field, definition) {
-       var _this36 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this36.columnManager.findColumn(field);
-
-               if (column) {
-                       column.updateDefinition(definition).then(function (col) {
-                               resolve(col);
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Column Update Error - No matching column found:", field);
-                       reject();
-               }
-       });
-};
-
-Tabulator.prototype.moveColumn = function (from, to, after) {
-       var fromColumn = this.columnManager.findColumn(from);
-       var toColumn = this.columnManager.findColumn(to);
-
-       if (fromColumn) {
-               if (toColumn) {
-                       this.columnManager.moveColumn(fromColumn, toColumn, after);
-               } else {
-                       console.warn("Move Error - No matching column found:", toColumn);
-               }
-       } else {
-               console.warn("Move Error - No matching column found:", from);
-       }
-};
-
-//scroll to column in DOM
-Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
-       var _this37 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this37.columnManager.findColumn(field);
-
-               if (column) {
-                       _this37.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Scroll Error - No matching column found:", field);
-                       reject("Scroll Error - No matching column found");
-               }
-       });
-};
-
-//////////// Localization Functions  ////////////
-Tabulator.prototype.setLocale = function (locale) {
-       this.modules.localize.setLocale(locale);
-};
-
-Tabulator.prototype.getLocale = function () {
-       return this.modules.localize.getLocale();
-};
-
-Tabulator.prototype.getLang = function (locale) {
-       return this.modules.localize.getLang(locale);
-};
-
-//////////// General Public Functions ////////////
-
-//redraw list without updating data
-Tabulator.prototype.redraw = function (force) {
-       this.columnManager.redraw(force);
-       this.rowManager.redraw(force);
-};
-
-Tabulator.prototype.setHeight = function (height) {
-
-       if (this.rowManager.renderMode !== "classic") {
-               this.options.height = isNaN(height) ? height : height + "px";
-               this.element.style.height = this.options.height;
-               this.rowManager.setRenderMode();
-               this.rowManager.redraw();
-       } else {
-               console.warn("setHeight function is not available in classic render mode");
-       }
-};
-
-///////////////////// Sorting ////////////////////
-
-//trigger sort
-Tabulator.prototype.setSort = function (sortList, dir) {
-       if (this.modExists("sort", true)) {
-               this.modules.sort.setSort(sortList, dir);
-               this.rowManager.sorterRefresh();
-       }
-};
-
-Tabulator.prototype.getSorters = function () {
-       if (this.modExists("sort", true)) {
-               return this.modules.sort.getSort();
-       }
-};
-
-Tabulator.prototype.clearSort = function () {
-       if (this.modExists("sort", true)) {
-               this.modules.sort.clear();
-               this.rowManager.sorterRefresh();
-       }
-};
-
-///////////////////// Filtering ////////////////////
-
-//set standard filters
-Tabulator.prototype.setFilter = function (field, type, value, params) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.setFilter(field, type, value, params);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//add filter to array
-Tabulator.prototype.addFilter = function (field, type, value, params) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.addFilter(field, type, value, params);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//get all filters
-Tabulator.prototype.getFilters = function (all) {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.getFilters(all);
-       }
-};
-
-Tabulator.prototype.setHeaderFilterFocus = function (field) {
-       if (this.modExists("filter", true)) {
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-                       this.modules.filter.setHeaderFilterFocus(column);
-               } else {
-                       console.warn("Column Filter Focus Error - No matching column found:", field);
-                       return false;
-               }
-       }
-};
-
-Tabulator.prototype.getHeaderFilterValue = function (field) {
-       if (this.modExists("filter", true)) {
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-                       return this.modules.filter.getHeaderFilterValue(column);
-               } else {
-                       console.warn("Column Filter Error - No matching column found:", field);
-               }
-       }
-};
-
-Tabulator.prototype.setHeaderFilterValue = function (field, value) {
-       if (this.modExists("filter", true)) {
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-                       this.modules.filter.setHeaderFilterValue(column, value);
-               } else {
-                       console.warn("Column Filter Error - No matching column found:", field);
-                       return false;
-               }
-       }
-};
-
-Tabulator.prototype.getHeaderFilters = function () {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.getHeaderFilters();
-       }
-};
-
-//remove filter from array
-Tabulator.prototype.removeFilter = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.removeFilter(field, type, value);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//clear filters
-Tabulator.prototype.clearFilter = function (all) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.clearFilter(all);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//clear header filters
-Tabulator.prototype.clearHeaderFilter = function () {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.clearHeaderFilter();
-               this.rowManager.filterRefresh();
-       }
-};
-
-///////////////////// select ////////////////////
-Tabulator.prototype.selectRow = function (rows) {
-       if (this.modExists("selectRow", true)) {
-               if (rows === true) {
-                       console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'");
-                       rows = "active";
-               }
-               this.modules.selectRow.selectRows(rows);
-       }
-};
-
-Tabulator.prototype.deselectRow = function (rows) {
-       if (this.modExists("selectRow", true)) {
-               this.modules.selectRow.deselectRows(rows);
-       }
-};
-
-Tabulator.prototype.toggleSelectRow = function (row) {
-       if (this.modExists("selectRow", true)) {
-               this.modules.selectRow.toggleRow(row);
-       }
-};
-
-Tabulator.prototype.getSelectedRows = function () {
-       if (this.modExists("selectRow", true)) {
-               return this.modules.selectRow.getSelectedRows();
-       }
-};
-
-Tabulator.prototype.getSelectedData = function () {
-       if (this.modExists("selectRow", true)) {
-               return this.modules.selectRow.getSelectedData();
-       }
-};
-
-///////////////////// validation  ////////////////////
-Tabulator.prototype.getInvalidCells = function () {
-       if (this.modExists("validate", true)) {
-               return this.modules.validate.getInvalidCells();
-       }
-};
-
-Tabulator.prototype.clearCellValidation = function (cells) {
-       var _this38 = this;
-
-       if (this.modExists("validate", true)) {
-
-               if (!cells) {
-                       cells = this.modules.validate.getInvalidCells();
-               }
-
-               if (!Array.isArray(cells)) {
-                       cells = [cells];
-               }
-
-               cells.forEach(function (cell) {
-                       _this38.modules.validate.clearValidation(cell._getSelf());
-               });
-       }
-};
-
-Tabulator.prototype.validate = function (cells) {
-       var output = [];
-
-       //clear row data
-       this.rowManager.rows.forEach(function (row) {
-               var valid = row.validate();
-
-               if (valid !== true) {
-                       output = output.concat(valid);
-               }
-       });
-
-       return output.length ? output : true;
-};
-
-//////////// Pagination Functions  ////////////
-
-Tabulator.prototype.setMaxPage = function (max) {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.setMaxPage(max);
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setPage = function (page) {
-       if (this.options.pagination && this.modExists("page")) {
-               return this.modules.page.setPage(page);
-       } else {
-               return new Promise(function (resolve, reject) {
-                       reject();
-               });
-       }
-};
-
-Tabulator.prototype.setPageToRow = function (row) {
-       var _this39 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this39.options.pagination && _this39.modExists("page")) {
-                       row = _this39.rowManager.findRow(row);
-
-                       if (row) {
-                               _this39.modules.page.setPageToRow(row).then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-                       } else {
-                               reject();
-                       }
-               } else {
-                       reject();
-               }
-       });
-};
-
-Tabulator.prototype.setPageSize = function (size) {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.setPageSize(size);
-               this.modules.page.setPage(1).then(function () {}).catch(function () {});
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getPageSize = function () {
-       if (this.options.pagination && this.modExists("page", true)) {
-               return this.modules.page.getPageSize();
-       }
-};
-
-Tabulator.prototype.previousPage = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.previousPage();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.nextPage = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.nextPage();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getPage = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               return this.modules.page.getPage();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getPageMax = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               return this.modules.page.getPageMax();
-       } else {
-               return false;
-       }
-};
-
-///////////////// Grouping Functions ///////////////
-
-Tabulator.prototype.setGroupBy = function (groups) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupBy = groups;
-               this.modules.groupRows.initialize();
-               this.rowManager.refreshActiveData("display");
-
-               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                       this.modules.persistence.save("group");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setGroupValues = function (groupValues) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupValues = groupValues;
-               this.modules.groupRows.initialize();
-               this.rowManager.refreshActiveData("display");
-
-               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                       this.modules.persistence.save("group");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setGroupStartOpen = function (values) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupStartOpen = values;
-               this.modules.groupRows.initialize();
-               if (this.options.groupBy) {
-                       this.rowManager.refreshActiveData("group");
-
-                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                               this.modules.persistence.save("group");
-                       }
-               } else {
-                       console.warn("Grouping Update - cant refresh view, no groups have been set");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setGroupHeader = function (values) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupHeader = values;
-               this.modules.groupRows.initialize();
-               if (this.options.groupBy) {
-                       this.rowManager.refreshActiveData("group");
-
-                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                               this.modules.persistence.save("group");
-                       }
-               } else {
-                       console.warn("Grouping Update - cant refresh view, no groups have been set");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getGroups = function (values) {
-       if (this.modExists("groupRows", true)) {
-               return this.modules.groupRows.getGroups(true);
-       } else {
-               return false;
-       }
-};
-
-// get grouped table data in the same format as getData()
-Tabulator.prototype.getGroupedData = function () {
-       if (this.modExists("groupRows", true)) {
-               return this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();
-       }
-};
-
-Tabulator.prototype.getEditedCells = function () {
-       if (this.modExists("edit", true)) {
-               return this.modules.edit.getEditedCells();
-       }
-};
-
-Tabulator.prototype.clearCellEdited = function (cells) {
-       var _this40 = this;
-
-       if (this.modExists("edit", true)) {
-
-               if (!cells) {
-                       cells = this.modules.edit.getEditedCells();
-               }
-
-               if (!Array.isArray(cells)) {
-                       cells = [cells];
-               }
-
-               cells.forEach(function (cell) {
-                       _this40.modules.edit.clearEdited(cell._getSelf());
-               });
-       }
-};
-
-///////////////// Column Calculation Functions ///////////////
-Tabulator.prototype.getCalcResults = function () {
-       if (this.modExists("columnCalcs", true)) {
-               return this.modules.columnCalcs.getResults();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.recalc = function () {
-       if (this.modExists("columnCalcs", true)) {
-               this.modules.columnCalcs.recalcAll(this.rowManager.activeRows);
-       }
-};
-
-/////////////// Navigation Management //////////////
-
-Tabulator.prototype.navigatePrev = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       return cell.nav().prev();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateNext = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       return cell.nav().next();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateLeft = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().left();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateRight = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().right();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateUp = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().up();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateDown = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().down();
-               }
-       }
-
-       return false;
-};
-
-/////////////// History Management //////////////
-Tabulator.prototype.undo = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.undo();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.redo = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.redo();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getHistoryUndoSize = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.getHistoryUndoSize();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getHistoryRedoSize = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.getHistoryRedoSize();
-       } else {
-               return false;
-       }
-};
-
-/////////////// Download Management //////////////
-
-Tabulator.prototype.download = function (type, filename, options, active) {
-       if (this.modExists("download", true)) {
-               this.modules.download.download(type, filename, options, active);
-       }
-};
-
-Tabulator.prototype.downloadToTab = function (type, filename, options, active) {
-       if (this.modExists("download", true)) {
-               this.modules.download.download(type, filename, options, active, true);
-       }
-};
-
-/////////// Inter Table Communications ///////////
-
-Tabulator.prototype.tableComms = function (table, module, action, data) {
-       this.modules.comms.receive(table, module, action, data);
-};
-
-////////////// Extension Management //////////////
-
-//object to hold module
-Tabulator.prototype.moduleBindings = {};
-
-//extend module
-Tabulator.prototype.extendModule = function (name, property, values) {
-
-       if (Tabulator.prototype.moduleBindings[name]) {
-               var source = Tabulator.prototype.moduleBindings[name].prototype[property];
-
-               if (source) {
-                       if ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == "object") {
-                               for (var key in values) {
-                                       source[key] = values[key];
-                               }
-                       } else {
-                               console.warn("Module Error - Invalid value type, it must be an object");
-                       }
-               } else {
-                       console.warn("Module Error - property does not exist:", property);
-               }
-       } else {
-               console.warn("Module Error - module does not exist:", name);
-       }
-};
-
-//add module to tabulator
-Tabulator.prototype.registerModule = function (name, module) {
-       var self = this;
-       Tabulator.prototype.moduleBindings[name] = module;
-};
-
-//ensure that module are bound to instantiated function
-Tabulator.prototype.bindModules = function () {
-       this.modules = {};
-
-       for (var name in Tabulator.prototype.moduleBindings) {
-               this.modules[name] = new Tabulator.prototype.moduleBindings[name](this);
-       }
-};
-
-//Check for module
-Tabulator.prototype.modExists = function (plugin, required) {
-       if (this.modules[plugin]) {
-               return true;
-       } else {
-               if (required) {
-                       console.error("Tabulator Module Not Installed: " + plugin);
-               }
-               return false;
-       }
-};
-
-Tabulator.prototype.helpers = {
-
-       elVisible: function elVisible(el) {
-               return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
-       },
-
-       elOffset: function elOffset(el) {
-               var box = el.getBoundingClientRect();
-
-               return {
-                       top: box.top + window.pageYOffset - document.documentElement.clientTop,
-                       left: box.left + window.pageXOffset - document.documentElement.clientLeft
-               };
-       },
-
-       deepClone: function deepClone(obj) {
-               var clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);
-
-               for (var i in obj) {
-                       if (obj[i] != null && _typeof(obj[i]) === "object") {
-                               if (obj[i] instanceof Date) {
-                                       clone[i] = new Date(obj[i]);
-                               } else {
-                                       clone[i] = this.deepClone(obj[i]);
-                               }
-                       }
-               }
-               return clone;
-       }
-};
-
-Tabulator.prototype.comms = {
-       tables: [],
-       register: function register(table) {
-               Tabulator.prototype.comms.tables.push(table);
-       },
-       deregister: function deregister(table) {
-               var index = Tabulator.prototype.comms.tables.indexOf(table);
-
-               if (index > -1) {
-                       Tabulator.prototype.comms.tables.splice(index, 1);
-               }
-       },
-       lookupTable: function lookupTable(query, silent) {
-               var results = [],
-                   matches,
-                   match;
-
-               if (typeof query === "string") {
-                       matches = document.querySelectorAll(query);
-
-                       if (matches.length) {
-                               for (var i = 0; i < matches.length; i++) {
-                                       match = Tabulator.prototype.comms.matchElement(matches[i]);
-
-                                       if (match) {
-                                               results.push(match);
-                                       }
-                               }
-                       }
-               } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
-                       match = Tabulator.prototype.comms.matchElement(query);
-
-                       if (match) {
-                               results.push(match);
-                       }
-               } else if (Array.isArray(query)) {
-                       query.forEach(function (item) {
-                               results = results.concat(Tabulator.prototype.comms.lookupTable(item));
-                       });
-               } else {
-                       if (!silent) {
-                               console.warn("Table Connection Error - Invalid Selector", query);
-                       }
-               }
-
-               return results;
-       },
-       matchElement: function matchElement(element) {
-               return Tabulator.prototype.comms.tables.find(function (table) {
-                       return element instanceof Tabulator ? table === element : table.element === element;
-               });
-       }
-};
-
-Tabulator.prototype.findTable = function (query) {
-       var results = Tabulator.prototype.comms.lookupTable(query, true);
-       return Array.isArray(results) && !results.length ? false : results;
-};
-
-var Layout = function Layout(table) {
-
-       this.table = table;
-
-       this.mode = null;
-};
-
-//initialize layout system
-
-Layout.prototype.initialize = function (layout) {
-
-       if (this.modes[layout]) {
-
-               this.mode = layout;
-       } else {
-
-               console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
-
-               this.mode = 'fitData';
-       }
-
-       this.table.element.setAttribute("tabulator-layout", this.mode);
-};
-
-Layout.prototype.getMode = function () {
-
-       return this.mode;
-};
-
-//trigger table layout
-
-Layout.prototype.layout = function () {
-
-       this.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);
-};
-
-//layout render functions
-
-Layout.prototype.modes = {
-
-       //resize columns to fit data they contain
-
-       "fitData": function fitData(columns) {
-
-               if (this.table.options.virtualDomHoz) {
-
-                       this.table.vdomHoz.fitDataLayoutOverride();
-               } else {
-
-                       columns.forEach(function (column) {
-
-                               column.reinitializeWidth();
-                       });
-               }
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-       },
-
-       //resize columns to fit data they contain and stretch row to fill table
-
-       "fitDataFill": function fitDataFill(columns) {
-
-               columns.forEach(function (column) {
-
-                       column.reinitializeWidth();
-               });
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-       },
-
-       //resize columns to fit data they contain
-
-       "fitDataTable": function fitDataTable(columns) {
-
-               columns.forEach(function (column) {
-
-                       column.reinitializeWidth();
-               });
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-       },
-
-       //resize columns to fit data the contain and stretch last column to fill table
-
-       "fitDataStretch": function fitDataStretch(columns) {
-               var _this41 = this;
-
-               var colsWidth = 0,
-                   tableWidth = this.table.rowManager.element.clientWidth,
-                   gap = 0,
-                   lastCol = false;
-
-               columns.forEach(function (column, i) {
-
-                       if (!column.widthFixed) {
-
-                               column.reinitializeWidth();
-                       }
-
-                       if (_this41.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
-
-                               lastCol = column;
-                       }
-
-                       if (column.visible) {
-
-                               colsWidth += column.getWidth();
-                       }
-               });
-
-               if (lastCol) {
-
-                       gap = tableWidth - colsWidth + lastCol.getWidth();
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               lastCol.setWidth(0);
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-
-                       if (gap > 0) {
-
-                               lastCol.setWidth(gap);
-                       } else {
-
-                               lastCol.reinitializeWidth();
-                       }
-               } else {
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               }
-       },
-
-       //resize columns to fit
-
-       "fitColumns": function fitColumns(columns) {
-
-               var self = this;
-
-               var totalWidth = self.table.element.clientWidth; //table element width
-
-               var fixedWidth = 0; //total width of columns with a defined width
-
-               var flexWidth = 0; //total width available to flexible columns
-
-               var flexGrowUnits = 0; //total number of widthGrow blocks accross all columns
-
-               var flexColWidth = 0; //desired width of flexible columns
-
-               var flexColumns = []; //array of flexible width columns
-
-               var fixedShrinkColumns = []; //array of fixed width columns that can shrink
-
-               var flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns
-
-               var overflowWidth = 0; //horizontal overflow width
-
-               var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
-
-
-               function calcWidth(width) {
-
-                       var colWidth;
-
-                       if (typeof width == "string") {
-
-                               if (width.indexOf("%") > -1) {
-
-                                       colWidth = totalWidth / 100 * parseInt(width);
-                               } else {
-
-                                       colWidth = parseInt(width);
-                               }
-                       } else {
-
-                               colWidth = width;
-                       }
-
-                       return colWidth;
-               }
-
-               //ensure columns resize to take up the correct amount of space
-
-               function scaleColumns(columns, freeSpace, colWidth, shrinkCols) {
-
-                       var oversizeCols = [],
-                           oversizeSpace = 0,
-                           remainingSpace = 0,
-                           nextColWidth = 0,
-                           gap = 0,
-                           changeUnits = 0,
-                           undersizeCols = [];
-
-                       function calcGrow(col) {
-
-                               return colWidth * (col.column.definition.widthGrow || 1);
-                       }
-
-                       function calcShrink(col) {
-
-                               return calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);
-                       }
-
-                       columns.forEach(function (col, i) {
-
-                               var width = shrinkCols ? calcShrink(col) : calcGrow(col);
-
-                               if (col.column.minWidth >= width) {
-
-                                       oversizeCols.push(col);
-                               } else {
-
-                                       undersizeCols.push(col);
-
-                                       changeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;
-                               }
-                       });
-
-                       if (oversizeCols.length) {
-
-                               oversizeCols.forEach(function (col) {
-
-                                       oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
-
-                                       col.width = col.column.minWidth;
-                               });
-
-                               remainingSpace = freeSpace - oversizeSpace;
-
-                               nextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;
-
-                               gap = remainingSpace - nextColWidth * changeUnits;
-
-                               gap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
-                       } else {
-
-                               gap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;
-
-                               undersizeCols.forEach(function (column) {
-
-                                       column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
-                               });
-                       }
-
-                       return gap;
-               }
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-
-               //adjust for vertical scrollbar if present
-
-               if (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {
-
-                       totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
-               }
-
-               columns.forEach(function (column) {
-
-                       var width, minWidth, colWidth;
-
-                       if (column.visible) {
-
-                               width = column.definition.width;
-
-                               minWidth = parseInt(column.minWidth);
-
-                               if (width) {
-
-                                       colWidth = calcWidth(width);
-
-                                       fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-
-                                       if (column.definition.widthShrink) {
-
-                                               fixedShrinkColumns.push({
-
-                                                       column: column,
-
-                                                       width: colWidth > minWidth ? colWidth : minWidth
-
-                                               });
-
-                                               flexShrinkUnits += column.definition.widthShrink;
-                                       }
-                               } else {
-
-                                       flexColumns.push({
-
-                                               column: column,
-
-                                               width: 0
-
-                                       });
-
-                                       flexGrowUnits += column.definition.widthGrow || 1;
-                               }
-                       }
-               });
-
-               //calculate available space
-
-               flexWidth = totalWidth - fixedWidth;
-
-               //calculate correct column size
-
-               flexColWidth = Math.floor(flexWidth / flexGrowUnits);
-
-               //generate column widths
-
-               var gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
-
-               //increase width of last column to account for rounding errors
-
-               if (flexColumns.length && gapFill > 0) {
-
-                       flexColumns[flexColumns.length - 1].width += +gapFill;
-               }
-
-               //caculate space for columns to be shrunk into
-
-               flexColumns.forEach(function (col) {
-
-                       flexWidth -= col.width;
-               });
-
-               overflowWidth = Math.abs(gapFill) + flexWidth;
-
-               //shrink oversize columns if there is no available space
-
-               if (overflowWidth > 0 && flexShrinkUnits) {
-
-                       gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
-               }
-
-               //decrease width of last column to account for rounding errors
-
-               if (fixedShrinkColumns.length) {
-
-                       fixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;
-               }
-
-               flexColumns.forEach(function (col) {
-
-                       col.column.setWidth(col.width);
-               });
-
-               fixedShrinkColumns.forEach(function (col) {
-
-                       col.column.setWidth(col.width);
-               });
-       }
-
-};
-
-Tabulator.prototype.registerModule("layout", Layout);
-var Localize = function Localize(table) {
-       this.table = table; //hold Tabulator object
-       this.locale = "default"; //current locale
-       this.lang = false; //current language
-       this.bindings = {}; //update events to call when locale is changed
-       this.langList = {};
-};
-
-Localize.prototype.initialize = function () {
-       this.langList = Tabulator.prototype.helpers.deepClone(this.langs);
-};
-
-//set header placehoder
-Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
-       this.langList.default.headerFilters.default = placeholder;
-};
-
-//set header filter placeholder by column
-Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
-       this.langList.default.headerFilters.columns[column] = placeholder;
-
-       if (this.lang && !this.lang.headerFilters.columns[column]) {
-               this.lang.headerFilters.columns[column] = placeholder;
-       }
-};
-
-//setup a lang description object
-Localize.prototype.installLang = function (locale, lang) {
-       if (this.langList[locale]) {
-               this._setLangProp(this.langList[locale], lang);
-       } else {
-               this.langList[locale] = lang;
-       }
-};
-
-Localize.prototype._setLangProp = function (lang, values) {
-       for (var key in values) {
-               if (lang[key] && _typeof(lang[key]) == "object") {
-                       this._setLangProp(lang[key], values[key]);
-               } else {
-                       lang[key] = values[key];
-               }
-       }
-};
-
-//set current locale
-Localize.prototype.setLocale = function (desiredLocale) {
-       var self = this;
-
-       desiredLocale = desiredLocale || "default";
-
-       //fill in any matching languge values
-       function traverseLang(trans, path) {
-               for (var prop in trans) {
-                       if (_typeof(trans[prop]) == "object") {
-                               if (!path[prop]) {
-                                       path[prop] = {};
-                               }
-                               traverseLang(trans[prop], path[prop]);
-                       } else {
-                               path[prop] = trans[prop];
-                       }
-               }
-       }
-
-       //determing correct locale to load
-       if (desiredLocale === true && navigator.language) {
-               //get local from system
-               desiredLocale = navigator.language.toLowerCase();
-       }
-
-       if (desiredLocale) {
-
-               //if locale is not set, check for matching top level locale else use default
-               if (!self.langList[desiredLocale]) {
-                       var prefix = desiredLocale.split("-")[0];
-
-                       if (self.langList[prefix]) {
-                               console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
-                               desiredLocale = prefix;
-                       } else {
-                               console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
-                               desiredLocale = "default";
-                       }
-               }
-       }
-
-       self.locale = desiredLocale;
-
-       //load default lang template
-       self.lang = Tabulator.prototype.helpers.deepClone(self.langList.default || {});
-
-       if (desiredLocale != "default") {
-               traverseLang(self.langList[desiredLocale], self.lang);
-       }
-
-       self.table.options.localized.call(self.table, self.locale, self.lang);
-
-       self._executeBindings();
-};
-
-//get current locale
-Localize.prototype.getLocale = function (locale) {
-       return self.locale;
-};
-
-//get lang object for given local or current if none provided
-Localize.prototype.getLang = function (locale) {
-       return locale ? this.langList[locale] : this.lang;
-};
-
-//get text for current locale
-Localize.prototype.getText = function (path, value) {
-       var path = value ? path + "|" + value : path,
-           pathArray = path.split("|"),
-           text = this._getLangElement(pathArray, this.locale);
-
-       // if(text === false){
-       //      console.warn("Localization Error - Matching localized text not found for given path: ", path);
-       // }
-
-       return text || "";
-};
-
-//traverse langs object and find localized copy
-Localize.prototype._getLangElement = function (path, locale) {
-       var self = this;
-       var root = self.lang;
-
-       path.forEach(function (level) {
-               var rootPath;
-
-               if (root) {
-                       rootPath = root[level];
-
-                       if (typeof rootPath != "undefined") {
-                               root = rootPath;
-                       } else {
-                               root = false;
-                       }
-               }
-       });
-
-       return root;
-};
-
-//set update binding
-Localize.prototype.bind = function (path, callback) {
-       if (!this.bindings[path]) {
-               this.bindings[path] = [];
-       }
-
-       this.bindings[path].push(callback);
-
-       callback(this.getText(path), this.lang);
-};
-
-//itterate through bindings and trigger updates
-Localize.prototype._executeBindings = function () {
-       var self = this;
-
-       var _loop = function _loop(path) {
-               self.bindings[path].forEach(function (binding) {
-                       binding(self.getText(path), self.lang);
-               });
-       };
-
-       for (var path in self.bindings) {
-               _loop(path);
-       }
-};
-
-//Localized text listings
-Localize.prototype.langs = {
-       "default": { //hold default locale text
-               "groups": {
-                       "item": "item",
-                       "items": "items"
-               },
-               "columns": {},
-               "ajax": {
-                       "loading": "Loading",
-                       "error": "Error"
-               },
-               "pagination": {
-                       "page_size": "Page Size",
-                       "page_title": "Show Page",
-                       "first": "First",
-                       "first_title": "First Page",
-                       "last": "Last",
-                       "last_title": "Last Page",
-                       "prev": "Prev",
-                       "prev_title": "Prev Page",
-                       "next": "Next",
-                       "next_title": "Next Page",
-                       "all": "All"
-               },
-               "headerFilters": {
-                       "default": "filter column...",
-                       "columns": {}
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("localize", Localize);
-var Comms = function Comms(table) {
-       this.table = table;
-};
-
-Comms.prototype.getConnections = function (selectors) {
-       var self = this,
-           connections = [],
-           connection;
-
-       connection = Tabulator.prototype.comms.lookupTable(selectors);
-
-       connection.forEach(function (con) {
-               if (self.table !== con) {
-                       connections.push(con);
-               }
-       });
-
-       return connections;
-};
-
-Comms.prototype.send = function (selectors, module, action, data) {
-       var self = this,
-           connections = this.getConnections(selectors);
-
-       connections.forEach(function (connection) {
-               connection.tableComms(self.table.element, module, action, data);
-       });
-
-       if (!connections.length && selectors) {
-               console.warn("Table Connection Error - No tables matching selector found", selectors);
-       }
-};
-
-Comms.prototype.receive = function (table, module, action, data) {
-       if (this.table.modExists(module)) {
-               return this.table.modules[module].commsReceived(table, action, data);
-       } else {
-               console.warn("Inter-table Comms Error - no such module:", module);
-       }
-};
-
-Tabulator.prototype.registerModule("comms", Comms);
-
-var Accessor = function Accessor(table) {
-       this.table = table; //hold Tabulator object
-       this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types
-};
-
-//initialize column accessor
-Accessor.prototype.initializeColumn = function (column) {
-       var self = this,
-           match = false,
-           config = {};
-
-       this.allowedTypes.forEach(function (type) {
-               var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                   accessor;
-
-               if (column.definition[key]) {
-                       accessor = self.lookupAccessor(column.definition[key]);
-
-                       if (accessor) {
-                               match = true;
-
-                               config[key] = {
-                                       accessor: accessor,
-                                       params: column.definition[key + "Params"] || {}
-                               };
-                       }
-               }
-       });
-
-       if (match) {
-               column.modules.accessor = config;
-       }
-};
-
-Accessor.prototype.lookupAccessor = function (value) {
-       var accessor = false;
-
-       //set column accessor
-       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-               case "string":
-                       if (this.accessors[value]) {
-                               accessor = this.accessors[value];
-                       } else {
-                               console.warn("Accessor Error - No such accessor found, ignoring: ", value);
-                       }
-                       break;
-
-               case "function":
-                       accessor = value;
-                       break;
-       }
-
-       return accessor;
-};
-
-//apply accessor to row
-Accessor.prototype.transformRow = function (row, type) {
-       var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
-           rowComponent = row.getComponent();
-
-       //clone data object with deep copy to isolate internal data from returned result
-       var data = Tabulator.prototype.helpers.deepClone(row.data || {});
-
-       this.table.columnManager.traverse(function (column) {
-               var value, accessor, params, colCompnent;
-
-               if (column.modules.accessor) {
-
-                       accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;
-
-                       if (accessor) {
-                               value = column.getFieldValue(data);
-
-                               if (value != "undefined") {
-                                       colCompnent = column.getComponent();
-                                       params = typeof accessor.params === "function" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;
-                                       column.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));
-                               }
-                       }
-               }
-       });
-
-       return data;
-},
-
-//default accessors
-Accessor.prototype.accessors = {};
-
-Tabulator.prototype.registerModule("accessor", Accessor);
-var Ajax = function Ajax(table) {
-
-       this.table = table; //hold Tabulator object
-       this.config = false; //hold config object for ajax request
-       this.url = ""; //request URL
-       this.urlGenerator = false;
-       this.params = false; //request parameters
-
-       this.loaderElement = this.createLoaderElement(); //loader message div
-       this.msgElement = this.createMsgElement(); //message element
-       this.loadingElement = false;
-       this.errorElement = false;
-       this.loaderPromise = false;
-
-       this.progressiveLoad = false;
-       this.loading = false;
-
-       this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request
-};
-
-//initialize setup options
-Ajax.prototype.initialize = function () {
-       var template;
-
-       this.loaderElement.appendChild(this.msgElement);
-
-       if (this.table.options.ajaxLoaderLoading) {
-               if (typeof this.table.options.ajaxLoaderLoading == "string") {
-                       template = document.createElement('template');
-                       template.innerHTML = this.table.options.ajaxLoaderLoading.trim();
-                       this.loadingElement = template.content.firstChild;
-               } else {
-                       this.loadingElement = this.table.options.ajaxLoaderLoading;
-               }
-       }
-
-       this.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;
-
-       this.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;
-
-       if (this.table.options.ajaxLoaderError) {
-               if (typeof this.table.options.ajaxLoaderError == "string") {
-                       template = document.createElement('template');
-                       template.innerHTML = this.table.options.ajaxLoaderError.trim();
-                       this.errorElement = template.content.firstChild;
-               } else {
-                       this.errorElement = this.table.options.ajaxLoaderError;
-               }
-       }
-
-       if (this.table.options.ajaxParams) {
-               this.setParams(this.table.options.ajaxParams);
-       }
-
-       if (this.table.options.ajaxConfig) {
-               this.setConfig(this.table.options.ajaxConfig);
-       }
-
-       if (this.table.options.ajaxURL) {
-               this.setUrl(this.table.options.ajaxURL);
-       }
-
-       if (this.table.options.ajaxProgressiveLoad) {
-               if (this.table.options.pagination) {
-                       this.progressiveLoad = false;
-                       console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time");
-               } else {
-                       if (this.table.modExists("page")) {
-                               this.progressiveLoad = this.table.options.ajaxProgressiveLoad;
-                               this.table.modules.page.initializeProgressive(this.progressiveLoad);
-                       } else {
-                               console.error("Pagination plugin is required for progressive ajax loading");
-                       }
-               }
-       }
-};
-
-Ajax.prototype.createLoaderElement = function () {
-       var el = document.createElement("div");
-       el.classList.add("tabulator-loader");
-       return el;
-};
-
-Ajax.prototype.createMsgElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-loader-msg");
-       el.setAttribute("role", "alert");
-
-       return el;
-};
-
-//set ajax params
-Ajax.prototype.setParams = function (params, update) {
-       if (update) {
-               this.params = this.params || {};
-
-               for (var key in params) {
-                       this.params[key] = params[key];
-               }
-       } else {
-               this.params = params;
-       }
-};
-
-Ajax.prototype.getParams = function () {
-       return this.params || {};
-};
-
-//load config object
-Ajax.prototype.setConfig = function (config) {
-       this._loadDefaultConfig();
-
-       if (typeof config == "string") {
-               this.config.method = config;
-       } else {
-               for (var key in config) {
-                       this.config[key] = config[key];
-               }
-       }
-};
-
-//create config object from default
-Ajax.prototype._loadDefaultConfig = function (force) {
-       var self = this;
-       if (!self.config || force) {
-
-               self.config = {};
-
-               //load base config from defaults
-               for (var key in self.defaultConfig) {
-                       self.config[key] = self.defaultConfig[key];
-               }
-       }
-};
-
-//set request url
-Ajax.prototype.setUrl = function (url) {
-       this.url = url;
-};
-
-//get request url
-Ajax.prototype.getUrl = function () {
-       return this.url;
-};
-
-//lstandard loading function
-Ajax.prototype.loadData = function (inPosition, columnsChanged) {
-       var self = this;
-
-       if (this.progressiveLoad) {
-               return this._loadDataProgressive();
-       } else {
-               return this._loadDataStandard(inPosition, columnsChanged);
-       }
-};
-
-Ajax.prototype.nextPage = function (diff) {
-       var margin;
-
-       if (!this.loading) {
-
-               margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;
-
-               if (diff < margin) {
-                       this.table.modules.page.nextPage().then(function () {}).catch(function () {});
-               }
-       }
-};
-
-Ajax.prototype.blockActiveRequest = function () {
-       this.requestOrder++;
-};
-
-Ajax.prototype._loadDataProgressive = function () {
-       this.table.rowManager.setData([]);
-       return this.table.modules.page.setPage(1);
-};
-
-Ajax.prototype._loadDataStandard = function (inPosition, columnsChanged) {
-       var _this42 = this;
-
-       return new Promise(function (resolve, reject) {
-               _this42.sendRequest(inPosition).then(function (data) {
-                       _this42.table.rowManager.setData(data, inPosition, columnsChanged).then(function () {
-                               resolve();
-                       }).catch(function (e) {
-                               reject(e);
-                       });
-               }).catch(function (e) {
-                       reject(e);
-               });
-       });
-};
-
-Ajax.prototype.generateParamsList = function (data, prefix) {
-       var self = this,
-           output = [];
-
-       prefix = prefix || "";
-
-       if (Array.isArray(data)) {
-               data.forEach(function (item, i) {
-                       output = output.concat(self.generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
-               });
-       } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === "object") {
-               for (var key in data) {
-                       output = output.concat(self.generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
-               }
-       } else {
-               output.push({ key: prefix, value: data });
-       }
-
-       return output;
-};
-
-Ajax.prototype.serializeParams = function (params) {
-       var output = this.generateParamsList(params),
-           encoded = [];
-
-       output.forEach(function (item) {
-               encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value));
-       });
-
-       return encoded.join("&");
-};
-
-//send ajax request
-Ajax.prototype.sendRequest = function (silent) {
-       var _this43 = this;
-
-       var self = this,
-           url = self.url,
-           requestNo,
-           esc,
-           query;
-
-       self.requestOrder++;
-       requestNo = self.requestOrder;
-
-       self._loadDefaultConfig();
-
-       return new Promise(function (resolve, reject) {
-               if (self.table.options.ajaxRequesting.call(_this43.table, self.url, self.params) !== false) {
-
-                       self.loading = true;
-
-                       if (!silent) {
-                               self.showLoader();
-                       }
-
-                       _this43.loaderPromise(url, self.config, self.params).then(function (data) {
-                               if (requestNo === self.requestOrder) {
-                                       if (self.table.options.ajaxResponse) {
-                                               data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
-                                       }
-                                       resolve(data);
-
-                                       self.hideLoader();
-                                       self.loading = false;
-                               } else {
-                                       console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made");
-                               }
-                       }).catch(function (error) {
-                               console.error("Ajax Load Error: ", error);
-                               self.table.options.ajaxError.call(self.table, error);
-
-                               self.showError();
-
-                               setTimeout(function () {
-                                       self.hideLoader();
-                               }, 3000);
-
-                               self.loading = false;
-
-                               reject();
-                       });
-               } else {
-                       reject();
-               }
-       });
-};
-
-Ajax.prototype.showLoader = function () {
-       var shouldLoad = typeof this.table.options.ajaxLoader === "function" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;
-
-       if (shouldLoad) {
-
-               this.hideLoader();
-
-               while (this.msgElement.firstChild) {
-                       this.msgElement.removeChild(this.msgElement.firstChild);
-               }this.msgElement.classList.remove("tabulator-error");
-               this.msgElement.classList.add("tabulator-loading");
-
-               if (this.loadingElement) {
-                       this.msgElement.appendChild(this.loadingElement);
-               } else {
-                       this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|loading");
-               }
-
-               this.table.element.appendChild(this.loaderElement);
-       }
-};
-
-Ajax.prototype.showError = function () {
-       this.hideLoader();
-
-       while (this.msgElement.firstChild) {
-               this.msgElement.removeChild(this.msgElement.firstChild);
-       }this.msgElement.classList.remove("tabulator-loading");
-       this.msgElement.classList.add("tabulator-error");
-
-       if (this.errorElement) {
-               this.msgElement.appendChild(this.errorElement);
-       } else {
-               this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|error");
-       }
-
-       this.table.element.appendChild(this.loaderElement);
-};
-
-Ajax.prototype.hideLoader = function () {
-       if (this.loaderElement.parentNode) {
-               this.loaderElement.parentNode.removeChild(this.loaderElement);
-       }
-};
-
-//default ajax config object
-Ajax.prototype.defaultConfig = {
-       method: "GET"
-};
-
-Ajax.prototype.defaultURLGenerator = function (url, config, params) {
-
-       if (url) {
-               if (params && Object.keys(params).length) {
-                       if (!config.method || config.method.toLowerCase() == "get") {
-                               config.method = "get";
-
-                               url += (url.includes("?") ? "&" : "?") + this.serializeParams(params);
-                       }
-               }
-       }
-
-       return url;
-};
-
-Ajax.prototype.defaultLoaderPromise = function (url, config, params) {
-       var self = this,
-           contentType;
-
-       return new Promise(function (resolve, reject) {
-
-               //set url
-               url = self.urlGenerator(url, config, params);
-
-               //set body content if not GET request
-               if (config.method.toUpperCase() != "GET") {
-                       contentType = _typeof(self.table.options.ajaxContentType) === "object" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];
-                       if (contentType) {
-
-                               for (var key in contentType.headers) {
-                                       if (!config.headers) {
-                                               config.headers = {};
-                                       }
-
-                                       if (typeof config.headers[key] === "undefined") {
-                                               config.headers[key] = contentType.headers[key];
-                                       }
-                               }
-
-                               config.body = contentType.body.call(self, url, config, params);
-                       } else {
-                               console.warn("Ajax Error - Invalid ajaxContentType value:", self.table.options.ajaxContentType);
-                       }
-               }
-
-               if (url) {
-
-                       //configure headers
-                       if (typeof config.headers === "undefined") {
-                               config.headers = {};
-                       }
-
-                       if (typeof config.headers.Accept === "undefined") {
-                               config.headers.Accept = "application/json";
-                       }
-
-                       if (typeof config.headers["X-Requested-With"] === "undefined") {
-                               config.headers["X-Requested-With"] = "XMLHttpRequest";
-                       }
-
-                       if (typeof config.mode === "undefined") {
-                               config.mode = "cors";
-                       }
-
-                       if (config.mode == "cors") {
-
-                               if (typeof config.headers["Access-Control-Allow-Origin"] === "undefined") {
-                                       config.headers["Access-Control-Allow-Origin"] = window.location.origin;
-                               }
-
-                               if (typeof config.credentials === "undefined") {
-                                       config.credentials = 'same-origin';
-                               }
-                       } else {
-                               if (typeof config.credentials === "undefined") {
-                                       config.credentials = 'include';
-                               }
-                       }
-
-                       //send request
-                       fetch(url, config).then(function (response) {
-                               if (response.ok) {
-                                       response.json().then(function (data) {
-                                               resolve(data);
-                                       }).catch(function (error) {
-                                               reject(error);
-                                               console.warn("Ajax Load Error - Invalid JSON returned", error);
-                                       });
-                               } else {
-                                       console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
-                                       reject(response);
-                               }
-                       }).catch(function (error) {
-                               console.error("Ajax Load Error - Connection Error: ", error);
-                               reject(error);
-                       });
-               } else {
-                       console.warn("Ajax Load Error - No URL Set");
-                       resolve([]);
-               }
-       });
-};
-
-Ajax.prototype.contentTypeFormatters = {
-       "json": {
-               headers: {
-                       'Content-Type': 'application/json'
-               },
-               body: function body(url, config, params) {
-                       return JSON.stringify(params);
-               }
-       },
-       "form": {
-               headers: {},
-               body: function body(url, config, params) {
-                       var output = this.generateParamsList(params),
-                           form = new FormData();
-
-                       output.forEach(function (item) {
-                               form.append(item.key, item.value);
-                       });
-
-                       return form;
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("ajax", Ajax);
-
-//public calc object
-var CalcComponent = function CalcComponent(row) {
-       this._row = row;
-};
-
-CalcComponent.prototype.getData = function (transform) {
-       return this._row.getData(transform);
-};
-
-CalcComponent.prototype.getElement = function () {
-       return this._row.getElement();
-};
-
-CalcComponent.prototype.getTable = function () {
-       return this._row.table;
-};
-
-CalcComponent.prototype.getCells = function () {
-       var cells = [];
-
-       this._row.getCells().forEach(function (cell) {
-               cells.push(cell.getComponent());
-       });
-
-       return cells;
-};
-
-CalcComponent.prototype.getCell = function (column) {
-       var cell = this._row.getCell(column);
-       return cell ? cell.getComponent() : false;
-};
-
-CalcComponent.prototype._getSelf = function () {
-       return this._row;
-};
-
-var ColumnCalcs = function ColumnCalcs(table) {
-       this.table = table; //hold Tabulator object
-       this.topCalcs = [];
-       this.botCalcs = [];
-       this.genColumn = false;
-       this.topElement = this.createElement();
-       this.botElement = this.createElement();
-       this.topRow = false;
-       this.botRow = false;
-       this.topInitialized = false;
-       this.botInitialized = false;
-
-       this.initialize();
-};
-
-ColumnCalcs.prototype.createElement = function () {
-       var el = document.createElement("div");
-       el.classList.add("tabulator-calcs-holder");
-       return el;
-};
-
-ColumnCalcs.prototype.initialize = function () {
-       this.genColumn = new Column({ field: "value" }, this);
-};
-
-//dummy functions to handle being mock column manager
-ColumnCalcs.prototype.registerColumnField = function () {};
-
-//initialize column calcs
-ColumnCalcs.prototype.initializeColumn = function (column) {
-       var def = column.definition;
-
-       var config = {
-               topCalcParams: def.topCalcParams || {},
-               botCalcParams: def.bottomCalcParams || {}
-       };
-
-       if (def.topCalc) {
-
-               switch (_typeof(def.topCalc)) {
-                       case "string":
-                               if (this.calculations[def.topCalc]) {
-                                       config.topCalc = this.calculations[def.topCalc];
-                               } else {
-                                       console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
-                               }
-                               break;
-
-                       case "function":
-                               config.topCalc = def.topCalc;
-                               break;
-
-               }
-
-               if (config.topCalc) {
-                       column.modules.columnCalcs = config;
-                       this.topCalcs.push(column);
-
-                       if (this.table.options.columnCalcs != "group") {
-                               this.initializeTopRow();
-                       }
-               }
-       }
-
-       if (def.bottomCalc) {
-               switch (_typeof(def.bottomCalc)) {
-                       case "string":
-                               if (this.calculations[def.bottomCalc]) {
-                                       config.botCalc = this.calculations[def.bottomCalc];
-                               } else {
-                                       console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
-                               }
-                               break;
-
-                       case "function":
-                               config.botCalc = def.bottomCalc;
-                               break;
-
-               }
-
-               if (config.botCalc) {
-                       column.modules.columnCalcs = config;
-                       this.botCalcs.push(column);
-
-                       if (this.table.options.columnCalcs != "group") {
-                               this.initializeBottomRow();
-                       }
-               }
-       }
-};
-
-ColumnCalcs.prototype.removeCalcs = function () {
-       var changed = false;
-
-       if (this.topInitialized) {
-               this.topInitialized = false;
-               this.topElement.parentNode.removeChild(this.topElement);
-               changed = true;
-       }
-
-       if (this.botInitialized) {
-               this.botInitialized = false;
-               this.table.footerManager.remove(this.botElement);
-               changed = true;
-       }
-
-       if (changed) {
-               this.table.rowManager.adjustTableSize();
-       }
-};
-
-ColumnCalcs.prototype.initializeTopRow = function () {
-       if (!this.topInitialized) {
-               // this.table.columnManager.headersElement.after(this.topElement);
-               this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-               this.topInitialized = true;
-       }
-};
-
-ColumnCalcs.prototype.initializeBottomRow = function () {
-       if (!this.botInitialized) {
-               this.table.footerManager.prepend(this.botElement);
-               this.botInitialized = true;
-       }
-};
-
-ColumnCalcs.prototype.scrollHorizontal = function (left) {
-       var hozAdjust = 0,
-           scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
-
-       if (this.botInitialized && this.botRow) {
-               this.botRow.getElement().style.marginLeft = -left + "px";
-       }
-};
-
-ColumnCalcs.prototype.recalc = function (rows) {
-       var data, row;
-
-       if (this.topInitialized || this.botInitialized) {
-               data = this.rowsToData(rows);
-
-               if (this.topInitialized) {
-                       if (this.topRow) {
-                               this.topRow.deleteCells();
-                       }
-
-                       row = this.generateRow("top", this.rowsToData(rows));
-                       this.topRow = row;
-                       while (this.topElement.firstChild) {
-                               this.topElement.removeChild(this.topElement.firstChild);
-                       }this.topElement.appendChild(row.getElement());
-                       row.initialize(true);
-               }
-
-               if (this.botInitialized) {
-                       if (this.botRow) {
-                               this.botRow.deleteCells();
-                       }
-
-                       row = this.generateRow("bottom", this.rowsToData(rows));
-                       this.botRow = row;
-                       while (this.botElement.firstChild) {
-                               this.botElement.removeChild(this.botElement.firstChild);
-                       }this.botElement.appendChild(row.getElement());
-                       row.initialize(true);
-               }
-
-               this.table.rowManager.adjustTableSize();
-
-               //set resizable handles
-               if (this.table.modExists("frozenColumns")) {
-                       this.table.modules.frozenColumns.layout();
-               }
-       }
-};
-
-ColumnCalcs.prototype.recalcRowGroup = function (row) {
-       this.recalcGroup(this.table.modules.groupRows.getRowGroup(row));
-};
-
-ColumnCalcs.prototype.recalcAll = function () {
-       var _this44 = this;
-
-       if (this.topCalcs.length || this.botCalcs.length) {
-               if (this.table.options.columnCalcs !== "group") {
-                       this.recalc(this.table.rowManager.activeRows);
-               }
-
-               if (this.table.options.groupBy && this.table.options.columnCalcs !== "table") {
-
-                       var groups = table.modules.groupRows.getChildGroups();
-
-                       groups.forEach(function (group) {
-                               _this44.recalcGroup(group);
-                       });
-               }
-       }
-};
-
-ColumnCalcs.prototype.recalcGroup = function (group) {
-       var data, rowData;
-
-       if (group) {
-               if (group.calcs) {
-                       if (group.calcs.bottom) {
-                               data = this.rowsToData(group.rows);
-                               rowData = this.generateRowData("bottom", data);
-
-                               group.calcs.bottom.updateData(rowData);
-                               group.calcs.bottom.reinitialize();
-                       }
-
-                       if (group.calcs.top) {
-                               data = this.rowsToData(group.rows);
-                               rowData = this.generateRowData("top", data);
-
-                               group.calcs.top.updateData(rowData);
-                               group.calcs.top.reinitialize();
-                       }
-               }
-       }
-};
-
-//generate top stats row
-ColumnCalcs.prototype.generateTopRow = function (rows) {
-       return this.generateRow("top", this.rowsToData(rows));
-};
-//generate bottom stats row
-ColumnCalcs.prototype.generateBottomRow = function (rows) {
-       return this.generateRow("bottom", this.rowsToData(rows));
-};
-
-ColumnCalcs.prototype.rowsToData = function (rows) {
-       var _this45 = this;
-
-       var data = [];
-
-       rows.forEach(function (row) {
-               data.push(row.getData());
-
-               if (_this45.table.options.dataTree && _this45.table.options.dataTreeChildColumnCalcs) {
-                       if (row.modules.dataTree.open) {
-                               var children = _this45.rowsToData(_this45.table.modules.dataTree.getFilteredTreeChildren(row));
-                               data = data.concat(children);
-                       }
-               }
-       });
-
-       return data;
-};
-
-//generate stats row
-ColumnCalcs.prototype.generateRow = function (pos, data) {
-       var self = this,
-           rowData = this.generateRowData(pos, data),
-           row;
-
-       if (self.table.modExists("mutator")) {
-               self.table.modules.mutator.disable();
-       }
-
-       row = new Row(rowData, this, "calc");
-
-       if (self.table.modExists("mutator")) {
-               self.table.modules.mutator.enable();
-       }
-
-       row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
-
-       row.component = false;
-
-       row.getComponent = function () {
-               if (!this.component) {
-                       this.component = new CalcComponent(this);
-               }
-
-               return this.component;
-       };
-
-       row.generateCells = function () {
-
-               var cells = [];
-
-               self.table.columnManager.columnsByIndex.forEach(function (column) {
-
-                       //set field name of mock column
-                       self.genColumn.setField(column.getField());
-                       self.genColumn.hozAlign = column.hozAlign;
-
-                       if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
-                               self.genColumn.modules.format = {
-                                       formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
-                                       params: column.definition[pos + "CalcFormatterParams"] || {}
-                               };
-                       } else {
-                               self.genColumn.modules.format = {
-                                       formatter: self.table.modules.format.getFormatter("plaintext"),
-                                       params: {}
-                               };
-                       }
-
-                       //ensure css class defintion is replicated to calculation cell
-                       self.genColumn.definition.cssClass = column.definition.cssClass;
-
-                       //generate cell and assign to correct column
-                       var cell = new Cell(self.genColumn, row);
-                       cell.getElement();
-                       cell.column = column;
-                       cell.setWidth();
-
-                       column.cells.push(cell);
-                       cells.push(cell);
-
-                       if (!column.visible) {
-                               cell.hide();
-                       }
-               });
-
-               this.cells = cells;
-       };
-
-       return row;
-};
-
-//generate stats row
-ColumnCalcs.prototype.generateRowData = function (pos, data) {
-       var rowData = {},
-           calcs = pos == "top" ? this.topCalcs : this.botCalcs,
-           type = pos == "top" ? "topCalc" : "botCalc",
-           params,
-           paramKey;
-
-       calcs.forEach(function (column) {
-               var values = [];
-
-               if (column.modules.columnCalcs && column.modules.columnCalcs[type]) {
-                       data.forEach(function (item) {
-                               values.push(column.getFieldValue(item));
-                       });
-
-                       paramKey = type + "Params";
-                       params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
-
-                       column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
-               }
-       });
-
-       return rowData;
-};
-
-ColumnCalcs.prototype.hasTopCalcs = function () {
-       return !!this.topCalcs.length;
-};
-
-ColumnCalcs.prototype.hasBottomCalcs = function () {
-       return !!this.botCalcs.length;
-};
-
-//handle table redraw
-ColumnCalcs.prototype.redraw = function () {
-       if (this.topRow) {
-               this.topRow.normalizeHeight(true);
-       }
-       if (this.botRow) {
-               this.botRow.normalizeHeight(true);
-       }
-};
-
-//return the calculated
-ColumnCalcs.prototype.getResults = function () {
-       var self = this,
-           results = {},
-           groups;
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               groups = this.table.modules.groupRows.getGroups(true);
-
-               groups.forEach(function (group) {
-                       results[group.getKey()] = self.getGroupResults(group);
-               });
-       } else {
-               results = {
-                       top: this.topRow ? this.topRow.getData() : {},
-                       bottom: this.botRow ? this.botRow.getData() : {}
-               };
-       }
-
-       return results;
-};
-
-//get results from a group
-ColumnCalcs.prototype.getGroupResults = function (group) {
-       var self = this,
-           groupObj = group._getSelf(),
-           subGroups = group.getSubGroups(),
-           subGroupResults = {},
-           results = {};
-
-       subGroups.forEach(function (subgroup) {
-               subGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);
-       });
-
-       results = {
-               top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
-               bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
-               groups: subGroupResults
-       };
-
-       return results;
-};
-
-//default calculations
-ColumnCalcs.prototype.calculations = {
-       "avg": function avg(values, data, calcParams) {
-               var output = 0,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
-
-               if (values.length) {
-                       output = values.reduce(function (sum, value) {
-                               return Number(sum) + Number(value);
-                       });
-
-                       output = output / values.length;
-
-                       output = precision !== false ? output.toFixed(precision) : output;
-               }
-
-               return parseFloat(output).toString();
-       },
-       "max": function max(values, data, calcParams) {
-               var output = null,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-               values.forEach(function (value) {
-
-                       value = Number(value);
-
-                       if (value > output || output === null) {
-                               output = value;
-                       }
-               });
-
-               return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-       },
-       "min": function min(values, data, calcParams) {
-               var output = null,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-               values.forEach(function (value) {
-
-                       value = Number(value);
-
-                       if (value < output || output === null) {
-                               output = value;
-                       }
-               });
-
-               return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-       },
-       "sum": function sum(values, data, calcParams) {
-               var output = 0,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-               if (values.length) {
-                       values.forEach(function (value) {
-                               value = Number(value);
-
-                               output += !isNaN(value) ? Number(value) : 0;
-                       });
-               }
-
-               return precision !== false ? output.toFixed(precision) : output;
-       },
-       "concat": function concat(values, data, calcParams) {
-               var output = 0;
-
-               if (values.length) {
-                       output = values.reduce(function (sum, value) {
-                               return String(sum) + String(value);
-                       });
-               }
-
-               return output;
-       },
-       "count": function count(values, data, calcParams) {
-               var output = 0;
-
-               if (values.length) {
-                       values.forEach(function (value) {
-                               if (value) {
-                                       output++;
-                               }
-                       });
-               }
-
-               return output;
-       }
-};
-
-Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
-
-var Clipboard = function Clipboard(table) {
-       this.table = table;
-       this.mode = true;
-
-       this.pasteParser = function () {};
-       this.pasteAction = function () {};
-       this.customSelection = false;
-       this.rowRange = false;
-       this.blocked = true; //block copy actions not originating from this command
-};
-
-Clipboard.prototype.initialize = function () {
-       var _this46 = this;
-
-       this.mode = this.table.options.clipboard;
-
-       this.rowRange = this.table.options.clipboardCopyRowRange;
-
-       if (this.mode === true || this.mode === "copy") {
-               this.table.element.addEventListener("copy", function (e) {
-                       var plain, html, list;
-
-                       if (!_this46.blocked) {
-                               e.preventDefault();
-
-                               if (_this46.customSelection) {
-                                       plain = _this46.customSelection;
-
-                                       if (_this46.table.options.clipboardCopyFormatter) {
-                                               plain = _this46.table.options.clipboardCopyFormatter("plain", plain);
-                                       }
-                               } else {
-
-                                       var list = _this46.table.modules.export.generateExportList(_this46.table.options.clipboardCopyConfig, _this46.table.options.clipboardCopyStyled, _this46.rowRange, "clipboard");
-
-                                       html = _this46.table.modules.export.genereateHTMLTable(list);
-                                       plain = html ? _this46.generatePlainContent(list) : "";
-
-                                       if (_this46.table.options.clipboardCopyFormatter) {
-                                               plain = _this46.table.options.clipboardCopyFormatter("plain", plain);
-                                               html = _this46.table.options.clipboardCopyFormatter("html", html);
-                                       }
-                               }
-
-                               if (window.clipboardData && window.clipboardData.setData) {
-                                       window.clipboardData.setData('Text', plain);
-                               } else if (e.clipboardData && e.clipboardData.setData) {
-                                       e.clipboardData.setData('text/plain', plain);
-                                       if (html) {
-                                               e.clipboardData.setData('text/html', html);
-                                       }
-                               } else if (e.originalEvent && e.originalEvent.clipboardData.setData) {
-                                       e.originalEvent.clipboardData.setData('text/plain', plain);
-                                       if (html) {
-                                               e.originalEvent.clipboardData.setData('text/html', html);
-                                       }
-                               }
-
-                               _this46.table.options.clipboardCopied.call(_this46.table, plain, html);
-
-                               _this46.reset();
-                       }
-               });
-       }
-
-       if (this.mode === true || this.mode === "paste") {
-               this.table.element.addEventListener("paste", function (e) {
-                       _this46.paste(e);
-               });
-       }
-
-       this.setPasteParser(this.table.options.clipboardPasteParser);
-       this.setPasteAction(this.table.options.clipboardPasteAction);
-};
-
-Clipboard.prototype.reset = function () {
-       this.blocked = true;
-       this.customSelection = false;
-};
-
-Clipboard.prototype.generatePlainContent = function (list) {
-       var output = [];
-
-       list.forEach(function (row) {
-               var rowData = [];
-
-               row.columns.forEach(function (col) {
-                       var value = "";
-
-                       if (col) {
-
-                               if (row.type === "group") {
-                                       col.value = col.component.getKey();
-                               }
-
-                               if (col.value === null) {
-                                       value = "";
-                               } else {
-                                       switch (_typeof(col.value)) {
-                                               case "object":
-                                                       value = JSON.stringify(col.value);
-                                                       break;
-
-                                               case "undefined":
-                                                       value = "";
-                                                       break;
-
-                                               default:
-                                                       value = col.value;
-                                       }
-                               }
-                       }
-
-                       rowData.push(value);
-               });
-
-               output.push(rowData.join("\t"));
-       });
-
-       return output.join("\n");
-};
-
-Clipboard.prototype.copy = function (range, internal) {
-       var range, sel, textRange;
-       this.blocked = false;
-       this.customSelection = false;
-
-       if (this.mode === true || this.mode === "copy") {
-
-               this.rowRange = range || this.table.options.clipboardCopyRowRange;
-
-               if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {
-                       range = document.createRange();
-                       range.selectNodeContents(this.table.element);
-                       sel = window.getSelection();
-
-                       if (sel.toString() && internal) {
-                               this.customSelection = sel.toString();
-                       }
-
-                       sel.removeAllRanges();
-                       sel.addRange(range);
-               } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") {
-                       textRange = document.body.createTextRange();
-                       textRange.moveToElementText(this.table.element);
-                       textRange.select();
-               }
-
-               document.execCommand('copy');
-
-               if (sel) {
-                       sel.removeAllRanges();
-               }
-       }
-};
-
-//PASTE EVENT HANDLING
-
-Clipboard.prototype.setPasteAction = function (action) {
-
-       switch (typeof action === 'undefined' ? 'undefined' : _typeof(action)) {
-               case "string":
-                       this.pasteAction = this.pasteActions[action];
-
-                       if (!this.pasteAction) {
-                               console.warn("Clipboard Error - No such paste action found:", action);
-                       }
-                       break;
-
-               case "function":
-                       this.pasteAction = action;
-                       break;
-       }
-};
-
-Clipboard.prototype.setPasteParser = function (parser) {
-       switch (typeof parser === 'undefined' ? 'undefined' : _typeof(parser)) {
-               case "string":
-                       this.pasteParser = this.pasteParsers[parser];
-
-                       if (!this.pasteParser) {
-                               console.warn("Clipboard Error - No such paste parser found:", parser);
-                       }
-                       break;
-
-               case "function":
-                       this.pasteParser = parser;
-                       break;
-       }
-};
-
-Clipboard.prototype.paste = function (e) {
-       var data, rowData, rows;
-
-       if (this.checkPaseOrigin(e)) {
-
-               data = this.getPasteData(e);
-
-               rowData = this.pasteParser.call(this, data);
-
-               if (rowData) {
-                       e.preventDefault();
-
-                       if (this.table.modExists("mutator")) {
-                               rowData = this.mutateData(rowData);
-                       }
-
-                       rows = this.pasteAction.call(this, rowData);
-                       this.table.options.clipboardPasted.call(this.table, data, rowData, rows);
-               } else {
-                       this.table.options.clipboardPasteError.call(this.table, data);
-               }
-       }
-};
-
-Clipboard.prototype.mutateData = function (data) {
-       var self = this,
-           output = [];
-
-       if (Array.isArray(data)) {
-               data.forEach(function (row) {
-                       output.push(self.table.modules.mutator.transformRow(row, "clipboard"));
-               });
-       } else {
-               output = data;
-       }
-
-       return output;
-};
-
-Clipboard.prototype.checkPaseOrigin = function (e) {
-       var valid = true;
-
-       if (e.target.tagName != "DIV" || this.table.modules.edit.currentCell) {
-               valid = false;
-       }
-
-       return valid;
-};
-
-Clipboard.prototype.getPasteData = function (e) {
-       var data;
-
-       if (window.clipboardData && window.clipboardData.getData) {
-               data = window.clipboardData.getData('Text');
-       } else if (e.clipboardData && e.clipboardData.getData) {
-               data = e.clipboardData.getData('text/plain');
-       } else if (e.originalEvent && e.originalEvent.clipboardData.getData) {
-               data = e.originalEvent.clipboardData.getData('text/plain');
-       }
-
-       return data;
-};
-
-Clipboard.prototype.pasteParsers = {
-       table: function table(clipboard) {
-               var data = [],
-                   success = false,
-                   headerFindSuccess = true,
-                   columns = this.table.columnManager.columns,
-                   columnMap = [],
-                   rows = [];
-
-               //get data from clipboard into array of columns and rows.
-               clipboard = clipboard.split("\n");
-
-               clipboard.forEach(function (row) {
-                       data.push(row.split("\t"));
-               });
-
-               if (data.length && !(data.length === 1 && data[0].length < 2)) {
-                       success = true;
-
-                       //check if headers are present by title
-                       data[0].forEach(function (value) {
-                               var column = columns.find(function (column) {
-                                       return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();
-                               });
-
-                               if (column) {
-                                       columnMap.push(column);
-                               } else {
-                                       headerFindSuccess = false;
-                               }
-                       });
-
-                       //check if column headers are present by field
-                       if (!headerFindSuccess) {
-                               headerFindSuccess = true;
-                               columnMap = [];
-
-                               data[0].forEach(function (value) {
-                                       var column = columns.find(function (column) {
-                                               return value && column.field && value.trim() && column.field.trim() === value.trim();
-                                       });
-
-                                       if (column) {
-                                               columnMap.push(column);
-                                       } else {
-                                               headerFindSuccess = false;
-                                       }
-                               });
-
-                               if (!headerFindSuccess) {
-                                       columnMap = this.table.columnManager.columnsByIndex;
-                               }
-                       }
-
-                       //remove header row if found
-                       if (headerFindSuccess) {
-                               data.shift();
-                       }
-
-                       data.forEach(function (item) {
-                               var row = {};
-
-                               item.forEach(function (value, i) {
-                                       if (columnMap[i]) {
-                                               row[columnMap[i].field] = value;
-                                       }
-                               });
-
-                               rows.push(row);
-                       });
-
-                       return rows;
-               } else {
-                       return false;
-               }
-       }
-};
-
-Clipboard.prototype.pasteActions = {
-       replace: function replace(rows) {
-               return this.table.setData(rows);
-       },
-       update: function update(rows) {
-               return this.table.updateOrAddData(rows);
-       },
-       insert: function insert(rows) {
-               return this.table.addData(rows);
-       }
-};
-
-Tabulator.prototype.registerModule("clipboard", Clipboard);
-
-var DataTree = function DataTree(table) {
-       this.table = table;
-       this.indent = 10;
-       this.field = "";
-       this.collapseEl = null;
-       this.expandEl = null;
-       this.branchEl = null;
-       this.elementField = false;
-
-       this.startOpen = function () {};
-
-       this.displayIndex = 0;
-};
-
-DataTree.prototype.initialize = function () {
-       var dummyEl = null,
-           firstCol = this.table.columnManager.getFirstVisibileColumn(),
-           options = this.table.options;
-
-       this.field = options.dataTreeChildField;
-       this.indent = options.dataTreeChildIndent;
-       this.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);
-
-       if (options.dataTreeBranchElement) {
-
-               if (options.dataTreeBranchElement === true) {
-                       this.branchEl = document.createElement("div");
-                       this.branchEl.classList.add("tabulator-data-tree-branch");
-               } else {
-                       if (typeof options.dataTreeBranchElement === "string") {
-                               dummyEl = document.createElement("div");
-                               dummyEl.innerHTML = options.dataTreeBranchElement;
-                               this.branchEl = dummyEl.firstChild;
-                       } else {
-                               this.branchEl = options.dataTreeBranchElement;
-                       }
-               }
-       }
-
-       if (options.dataTreeCollapseElement) {
-               if (typeof options.dataTreeCollapseElement === "string") {
-                       dummyEl = document.createElement("div");
-                       dummyEl.innerHTML = options.dataTreeCollapseElement;
-                       this.collapseEl = dummyEl.firstChild;
-               } else {
-                       this.collapseEl = options.dataTreeCollapseElement;
-               }
-       } else {
-               this.collapseEl = document.createElement("div");
-               this.collapseEl.classList.add("tabulator-data-tree-control");
-               this.collapseEl.tabIndex = 0;
-               this.collapseEl.innerHTML = "<div class='tabulator-data-tree-control-collapse'></div>";
-       }
-
-       if (options.dataTreeExpandElement) {
-               if (typeof options.dataTreeExpandElement === "string") {
-                       dummyEl = document.createElement("div");
-                       dummyEl.innerHTML = options.dataTreeExpandElement;
-                       this.expandEl = dummyEl.firstChild;
-               } else {
-                       this.expandEl = options.dataTreeExpandElement;
-               }
-       } else {
-               this.expandEl = document.createElement("div");
-               this.expandEl.classList.add("tabulator-data-tree-control");
-               this.expandEl.tabIndex = 0;
-               this.expandEl.innerHTML = "<div class='tabulator-data-tree-control-expand'></div>";
-       }
-
-       switch (_typeof(options.dataTreeStartExpanded)) {
-               case "boolean":
-                       this.startOpen = function (row, index) {
-                               return options.dataTreeStartExpanded;
-                       };
-                       break;
-
-               case "function":
-                       this.startOpen = options.dataTreeStartExpanded;
-                       break;
-
-               default:
-                       this.startOpen = function (row, index) {
-                               return options.dataTreeStartExpanded[index];
-                       };
-                       break;
-       }
-};
-
-DataTree.prototype.initializeRow = function (row) {
-       var childArray = row.getData()[this.field];
-       var isArray = Array.isArray(childArray);
-
-       var children = isArray || !isArray && (typeof childArray === 'undefined' ? 'undefined' : _typeof(childArray)) === "object" && childArray !== null;
-
-       if (!children && row.modules.dataTree && row.modules.dataTree.branchEl) {
-               row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);
-       }
-
-       if (!children && row.modules.dataTree && row.modules.dataTree.controlEl) {
-               row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);
-       }
-
-       row.modules.dataTree = {
-               index: row.modules.dataTree ? row.modules.dataTree.index : 0,
-               open: children ? row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0) : false,
-               controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,
-               branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,
-               parent: row.modules.dataTree ? row.modules.dataTree.parent : false,
-               children: children
-       };
-};
-
-DataTree.prototype.layoutRow = function (row) {
-       var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],
-           el = cell.getElement(),
-           config = row.modules.dataTree;
-
-       if (config.branchEl) {
-               if (config.branchEl.parentNode) {
-                       config.branchEl.parentNode.removeChild(config.branchEl);
-               }
-               config.branchEl = false;
-       }
-
-       if (config.controlEl) {
-               if (config.controlEl.parentNode) {
-                       config.controlEl.parentNode.removeChild(config.controlEl);
-               }
-               config.controlEl = false;
-       }
-
-       this.generateControlElement(row, el);
-
-       row.element.classList.add("tabulator-tree-level-" + config.index);
-
-       if (config.index) {
-               if (this.branchEl) {
-                       config.branchEl = this.branchEl.cloneNode(true);
-                       el.insertBefore(config.branchEl, el.firstChild);
-
-                       if (this.table.rtl) {
-                               config.branchEl.style.marginRight = (config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1) + config.index * this.indent + "px";
-                       } else {
-                               config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
-                       }
-               } else {
-
-                       if (this.table.rtl) {
-                               el.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + config.index * this.indent + "px";
-                       } else {
-                               el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
-                       }
-               }
-       }
-};
-
-DataTree.prototype.generateControlElement = function (row, el) {
-       var _this47 = this;
-
-       var config = row.modules.dataTree,
-           el = el || row.getCells()[0].getElement(),
-           oldControl = config.controlEl;
-
-       if (config.children !== false) {
-
-               if (config.open) {
-                       config.controlEl = this.collapseEl.cloneNode(true);
-                       config.controlEl.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               _this47.collapseRow(row);
-                       });
-               } else {
-                       config.controlEl = this.expandEl.cloneNode(true);
-                       config.controlEl.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               _this47.expandRow(row);
-                       });
-               }
-
-               config.controlEl.addEventListener("mousedown", function (e) {
-                       e.stopPropagation();
-               });
-
-               if (oldControl && oldControl.parentNode === el) {
-                       oldControl.parentNode.replaceChild(config.controlEl, oldControl);
-               } else {
-                       el.insertBefore(config.controlEl, el.firstChild);
-               }
-       }
-};
-
-DataTree.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-DataTree.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-DataTree.prototype.getRows = function (rows) {
-       var _this48 = this;
-
-       var output = [];
-
-       rows.forEach(function (row, i) {
-               var config, children;
-
-               output.push(row);
-
-               if (row instanceof Row) {
-
-                       config = row.modules.dataTree.children;
-
-                       if (!config.index && config.children !== false) {
-                               children = _this48.getChildren(row);
-
-                               children.forEach(function (child) {
-                                       output.push(child);
-                               });
-                       }
-               }
-       });
-
-       return output;
-};
-
-DataTree.prototype.getChildren = function (row) {
-       var _this49 = this;
-
-       var config = row.modules.dataTree,
-           children = [],
-           output = [];
-
-       if (config.children !== false && config.open) {
-               if (!Array.isArray(config.children)) {
-                       config.children = this.generateChildren(row);
-               }
-
-               if (this.table.modExists("filter") && this.table.options.dataTreeFilter) {
-                       children = this.table.modules.filter.filter(config.children);
-               } else {
-                       children = config.children;
-               }
-
-               if (this.table.modExists("sort") && this.table.options.dataTreeSort) {
-                       this.table.modules.sort.sort(children);
-               }
-
-               children.forEach(function (child) {
-                       output.push(child);
-
-                       var subChildren = _this49.getChildren(child);
-
-                       subChildren.forEach(function (sub) {
-                               output.push(sub);
-                       });
-               });
-       }
-
-       return output;
-};
-
-DataTree.prototype.generateChildren = function (row) {
-       var _this50 = this;
-
-       var children = [];
-
-       var childArray = row.getData()[this.field];
-
-       if (!Array.isArray(childArray)) {
-               childArray = [childArray];
-       }
-
-       childArray.forEach(function (childData) {
-               var childRow = new Row(childData || {}, _this50.table.rowManager);
-               childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
-               childRow.modules.dataTree.parent = row;
-               if (childRow.modules.dataTree.children) {
-                       childRow.modules.dataTree.open = _this50.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
-               }
-               children.push(childRow);
-       });
-
-       return children;
-};
-
-DataTree.prototype.expandRow = function (row, silent) {
-       var config = row.modules.dataTree;
-
-       if (config.children !== false) {
-               config.open = true;
-
-               row.reinitialize();
-
-               this.table.rowManager.refreshActiveData("tree", false, true);
-
-               this.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);
-       }
-};
-
-DataTree.prototype.collapseRow = function (row) {
-       var config = row.modules.dataTree;
-
-       if (config.children !== false) {
-               config.open = false;
-
-               row.reinitialize();
-
-               this.table.rowManager.refreshActiveData("tree", false, true);
-
-               this.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);
-       }
-};
-
-DataTree.prototype.toggleRow = function (row) {
-       var config = row.modules.dataTree;
-
-       if (config.children !== false) {
-               if (config.open) {
-                       this.collapseRow(row);
-               } else {
-                       this.expandRow(row);
-               }
-       }
-};
-
-DataTree.prototype.getTreeParent = function (row) {
-       return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
-};
-
-DataTree.prototype.getFilteredTreeChildren = function (row) {
-       var config = row.modules.dataTree,
-           output = [],
-           children;
-
-       if (config.children) {
-
-               if (!Array.isArray(config.children)) {
-                       config.children = this.generateChildren(row);
-               }
-
-               if (this.table.modExists("filter") && this.table.options.dataTreeFilter) {
-                       children = this.table.modules.filter.filter(config.children);
-               } else {
-                       children = config.children;
-               }
-
-               children.forEach(function (childRow) {
-                       if (childRow instanceof Row) {
-                               output.push(childRow);
-                       }
-               });
-       }
-
-       return output;
-};
-
-DataTree.prototype.rowDelete = function (row) {
-       var parent = row.modules.dataTree.parent,
-           childIndex;
-
-       if (parent) {
-               childIndex = this.findChildIndex(row, parent);
-
-               if (childIndex !== false) {
-                       parent.data[this.field].splice(childIndex, 1);
-               }
-
-               if (!parent.data[this.field].length) {
-                       delete parent.data[this.field];
-               }
-
-               this.initializeRow(parent);
-               this.layoutRow(parent);
-       }
-
-       this.table.rowManager.refreshActiveData("tree", false, true);
-};
-
-DataTree.prototype.addTreeChildRow = function (row, data, top, index) {
-       var childIndex = false;
-
-       if (typeof data === "string") {
-               data = JSON.parse(data);
-       }
-
-       if (!Array.isArray(row.data[this.field])) {
-               row.data[this.field] = [];
-
-               row.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);
-       }
-
-       if (typeof index !== "undefined") {
-               childIndex = this.findChildIndex(index, row);
-
-               if (childIndex !== false) {
-                       row.data[this.field].splice(top ? childIndex : childIndex + 1, 0, data);
-               }
-       }
-
-       if (childIndex === false) {
-               if (top) {
-                       row.data[this.field].unshift(data);
-               } else {
-                       row.data[this.field].push(data);
-               }
-       }
-
-       this.initializeRow(row);
-       this.layoutRow(row);
-
-       this.table.rowManager.refreshActiveData("tree", false, true);
-};
-
-DataTree.prototype.findChildIndex = function (subject, parent) {
-       var _this51 = this;
-
-       var match = false;
-
-       if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-               if (subject instanceof Row) {
-                       //subject is row element
-                       match = subject.data;
-               } else if (subject instanceof RowComponent) {
-                       //subject is public row component
-                       match = subject._getSelf().data;
-               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-                       if (parent.modules.dataTree) {
-                               match = parent.modules.dataTree.children.find(function (childRow) {
-                                       return childRow instanceof Row ? childRow.element === subject : false;
-                               });
-
-                               if (match) {
-                                       match = match.data;
-                               }
-                       }
-               }
-       } else if (typeof subject == "undefined" || subject === null) {
-               match = false;
-       } else {
-               //subject should be treated as the index of the row
-               match = parent.data[this.field].find(function (row) {
-                       return row.data[_this51.table.options.index] == subject;
-               });
-       }
-
-       if (match) {
-
-               if (Array.isArray(parent.data[this.field])) {
-                       match = parent.data[this.field].indexOf(match);
-               }
-
-               if (match == -1) {
-                       match = false;
-               }
-       }
-
-       //catch all for any other type of input
-
-       return match;
-};
-
-DataTree.prototype.getTreeChildren = function (row, component, recurse) {
-       var _this52 = this;
-
-       var config = row.modules.dataTree,
-           output = [];
-
-       if (config.children) {
-
-               if (!Array.isArray(config.children)) {
-                       config.children = this.generateChildren(row);
-               }
-
-               config.children.forEach(function (childRow) {
-                       if (childRow instanceof Row) {
-                               output.push(component ? childRow.getComponent() : childRow);
-
-                               if (recurse) {
-                                       output = output.concat(_this52.getTreeChildren(childRow, component, recurse));
-                               }
-                       }
-               });
-       }
-
-       return output;
-};
-
-DataTree.prototype.checkForRestyle = function (cell) {
-       if (!cell.row.cells.indexOf(cell)) {
-               cell.row.reinitialize();
-       }
-};
-
-DataTree.prototype.getChildField = function () {
-       return this.field;
-};
-
-DataTree.prototype.redrawNeeded = function (data) {
-       return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false);
-};
-
-Tabulator.prototype.registerModule("dataTree", DataTree);
-
-var Download = function Download(table) {
-       this.table = table; //hold Tabulator object
-};
-
-//trigger file download
-Download.prototype.download = function (type, filename, options, range, interceptCallback) {
-       var self = this,
-           downloadFunc = false;
-
-       function buildLink(data, mime) {
-               if (interceptCallback) {
-                       if (interceptCallback === true) {
-                               self.triggerDownload(data, mime, type, filename, true);
-                       } else {
-                               interceptCallback(data);
-                       }
-               } else {
-                       self.triggerDownload(data, mime, type, filename);
-               }
-       }
-
-       if (typeof type == "function") {
-               downloadFunc = type;
-       } else {
-               if (self.downloaders[type]) {
-                       downloadFunc = self.downloaders[type];
-               } else {
-                       console.warn("Download Error - No such download type found: ", type);
-               }
-       }
-
-       if (downloadFunc) {
-               var list = this.generateExportList(range);
-
-               downloadFunc.call(this.table, list, options || {}, buildLink);
-       }
-};
-
-Download.prototype.generateExportList = function (range) {
-       var list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, "download");
-
-       //assign group header formatter
-       var groupHeader = this.table.options.groupHeaderDownload;
-
-       if (groupHeader && !Array.isArray(groupHeader)) {
-               groupHeader = [groupHeader];
-       }
-
-       list.forEach(function (row) {
-               var group;
-
-               if (row.type === "group") {
-                       group = row.columns[0];
-
-                       if (groupHeader && groupHeader[row.indent]) {
-                               group.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
-                       }
-               }
-       });
-
-       return list;
-};
-
-Download.prototype.triggerDownload = function (data, mime, type, filename, newTab) {
-       var element = document.createElement('a'),
-           blob = new Blob([data], { type: mime }),
-           filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
-
-       blob = this.table.options.downloadReady.call(this.table, data, blob);
-
-       if (blob) {
-
-               if (newTab) {
-                       window.open(window.URL.createObjectURL(blob));
-               } else {
-                       if (navigator.msSaveOrOpenBlob) {
-                               navigator.msSaveOrOpenBlob(blob, filename);
-                       } else {
-                               element.setAttribute('href', window.URL.createObjectURL(blob));
-
-                               //set file title
-                               element.setAttribute('download', filename);
-
-                               //trigger download
-                               element.style.display = 'none';
-                               document.body.appendChild(element);
-                               element.click();
-
-                               //remove temporary link element
-                               document.body.removeChild(element);
-                       }
-               }
-
-               if (this.table.options.downloadComplete) {
-                       this.table.options.downloadComplete();
-               }
-       }
-};
-
-Download.prototype.commsReceived = function (table, action, data) {
-       switch (action) {
-               case "intercept":
-                       this.download(data.type, "", data.options, data.active, data.intercept);
-                       break;
-       }
-};
-
-//downloaders
-Download.prototype.downloaders = {
-       csv: function csv(list, options, setFileContents) {
-               var delimiter = options && options.delimiter ? options.delimiter : ",",
-                   fileContents = [],
-                   headers = [];
-
-               list.forEach(function (row) {
-                       var item = [];
-
-                       switch (row.type) {
-                               case "group":
-                                       console.warn("Download Warning - CSV downloader cannot process row groups");
-                                       break;
-
-                               case "calc":
-                                       console.warn("Download Warning - CSV downloader cannot process column calculations");
-                                       break;
-
-                               case "header":
-                                       row.columns.forEach(function (col, i) {
-                                               if (col && col.depth === 1) {
-                                                       headers[i] = typeof col.value == "undefined" || col.value === null ? "" : '"' + String(col.value).split('"').join('""') + '"';
-                                               }
-                                       });
-                                       break;
-
-                               case "row":
-                                       row.columns.forEach(function (col) {
-
-                                               if (col) {
-
-                                                       switch (_typeof(col.value)) {
-                                                               case "object":
-                                                                       col.value = JSON.stringify(col.value);
-                                                                       break;
-
-                                                               case "undefined":
-                                                               case "null":
-                                                                       col.value = "";
-                                                                       break;
-                                                       }
-
-                                                       item.push('"' + String(col.value).split('"').join('""') + '"');
-                                               }
-                                       });
-
-                                       fileContents.push(item.join(delimiter));
-                                       break;
-                       }
-               });
-
-               if (headers.length) {
-                       fileContents.unshift(headers.join(delimiter));
-               }
-
-               fileContents = fileContents.join("\n");
-
-               if (options.bom) {
-                       fileContents = '\uFEFF' + fileContents;
-               }
-
-               setFileContents(fileContents, "text/csv");
-       },
-
-       json: function json(list, options, setFileContents) {
-               var fileContents = [];
-
-               list.forEach(function (row) {
-                       var item = {};
-
-                       switch (row.type) {
-                               case "header":
-                                       break;
-
-                               case "group":
-                                       console.warn("Download Warning - JSON downloader cannot process row groups");
-                                       break;
-
-                               case "calc":
-                                       console.warn("Download Warning - JSON downloader cannot process column calculations");
-                                       break;
-
-                               case "row":
-                                       row.columns.forEach(function (col) {
-                                               if (col) {
-                                                       item[col.component.getField()] = col.value;
-                                               }
-                                       });
-
-                                       fileContents.push(item);
-                                       break;
-                       }
-               });
-
-               fileContents = JSON.stringify(fileContents, null, '\t');
-
-               setFileContents(fileContents, "application/json");
-       },
-
-       pdf: function pdf(list, options, setFileContents) {
-               var header = [],
-                   body = [],
-                   autoTableParams = {},
-                   rowGroupStyles = options.rowGroupStyles || {
-                       fontStyle: "bold",
-                       fontSize: 12,
-                       cellPadding: 6,
-                       fillColor: 220
-               },
-                   rowCalcStyles = options.rowCalcStyles || {
-                       fontStyle: "bold",
-                       fontSize: 10,
-                       cellPadding: 4,
-                       fillColor: 232
-               },
-                   jsPDFParams = options.jsPDF || {},
-                   title = options && options.title ? options.title : "";
-
-               if (!jsPDFParams.orientation) {
-                       jsPDFParams.orientation = options.orientation || "landscape";
-               }
-
-               if (!jsPDFParams.unit) {
-                       jsPDFParams.unit = "pt";
-               }
-
-               //parse row list
-               list.forEach(function (row) {
-                       var item = {};
-
-                       switch (row.type) {
-                               case "header":
-                                       header.push(parseRow(row));
-                                       break;
-
-                               case "group":
-                                       body.push(parseRow(row, rowGroupStyles));
-                                       break;
-
-                               case "calc":
-                                       body.push(parseRow(row, rowCalcStyles));
-                                       break;
-
-                               case "row":
-                                       body.push(parseRow(row));
-                                       break;
-                       }
-               });
-
-               function parseRow(row, styles) {
-                       var rowData = [];
-
-                       row.columns.forEach(function (col) {
-                               var cell;
-
-                               if (col) {
-                                       switch (_typeof(col.value)) {
-                                               case "object":
-                                                       col.value = JSON.stringify(col.value);
-                                                       break;
-
-                                               case "undefined":
-                                               case "null":
-                                                       col.value = "";
-                                                       break;
-                                       }
-
-                                       cell = {
-                                               content: col.value,
-                                               colSpan: col.width,
-                                               rowSpan: col.height
-                                       };
-
-                                       if (styles) {
-                                               cell.styles = styles;
-                                       }
-
-                                       rowData.push(cell);
-                               } else {
-                                       rowData.push("");
-                               }
-                       });
-
-                       return rowData;
-               }
-
-               //configure PDF
-               var doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables
-
-               if (options && options.autoTable) {
-                       if (typeof options.autoTable === "function") {
-                               autoTableParams = options.autoTable(doc) || {};
-                       } else {
-                               autoTableParams = options.autoTable;
-                       }
-               }
-
-               if (title) {
-                       autoTableParams.addPageContent = function (data) {
-                               doc.text(title, 40, 30);
-                       };
-               }
-
-               autoTableParams.head = header;
-               autoTableParams.body = body;
-
-               doc.autoTable(autoTableParams);
-
-               if (options && options.documentProcessing) {
-                       options.documentProcessing(doc);
-               }
-
-               setFileContents(doc.output("arraybuffer"), "application/pdf");
-       },
-
-       xlsx: function xlsx(list, options, setFileContents) {
-               var self = this,
-                   sheetName = options.sheetName || "Sheet1",
-                   workbook = XLSX.utils.book_new(),
-                   output;
-
-               workbook.SheetNames = [];
-               workbook.Sheets = {};
-
-               function generateSheet() {
-                       var rows = [],
-                           merges = [],
-                           worksheet = {},
-                           range = { s: { c: 0, r: 0 }, e: { c: list[0] ? list[0].columns.reduce(function (a, b) {
-                                               return a + (b && b.width ? b.width : 1);
-                                       }, 0) : 0, r: list.length } };
-
-                       //parse row list
-                       list.forEach(function (row, i) {
-                               var rowData = [];
-
-                               row.columns.forEach(function (col, j) {
-
-                                       if (col) {
-                                               rowData.push(!(col.value instanceof Date) && _typeof(col.value) === "object" ? JSON.stringify(col.value) : col.value);
-
-                                               if (col.width > 1 || col.height > -1) {
-                                                       merges.push({ s: { r: i, c: j }, e: { r: i + col.height - 1, c: j + col.width - 1 } });
-                                               }
-                                       } else {
-                                               rowData.push("");
-                                       }
-                               });
-
-                               rows.push(rowData);
-                       });
-
-                       //convert rows to worksheet
-                       XLSX.utils.sheet_add_aoa(worksheet, rows);
-
-                       worksheet['!ref'] = XLSX.utils.encode_range(range);
-
-                       if (merges.length) {
-                               worksheet["!merges"] = merges;
-                       }
-
-                       return worksheet;
-               }
-
-               if (options.sheetOnly) {
-                       setFileContents(generateSheet());
-                       return;
-               }
-
-               if (options.sheets) {
-                       for (var sheet in options.sheets) {
-
-                               if (options.sheets[sheet] === true) {
-                                       workbook.SheetNames.push(sheet);
-                                       workbook.Sheets[sheet] = generateSheet();
-                               } else {
-
-                                       workbook.SheetNames.push(sheet);
-
-                                       this.modules.comms.send(options.sheets[sheet], "download", "intercept", {
-                                               type: "xlsx",
-                                               options: { sheetOnly: true },
-                                               active: self.active,
-                                               intercept: function intercept(data) {
-                                                       workbook.Sheets[sheet] = data;
-                                               }
-                                       });
-                               }
-                       }
-               } else {
-                       workbook.SheetNames.push(sheetName);
-                       workbook.Sheets[sheetName] = generateSheet();
-               }
-
-               if (options.documentProcessing) {
-                       workbook = options.documentProcessing(workbook);
-               }
-
-               //convert workbook to binary array
-               function s2ab(s) {
-                       var buf = new ArrayBuffer(s.length);
-                       var view = new Uint8Array(buf);
-                       for (var i = 0; i != s.length; ++i) {
-                               view[i] = s.charCodeAt(i) & 0xFF;
-                       }return buf;
-               }
-
-               output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
-
-               setFileContents(s2ab(output), "application/octet-stream");
-       },
-
-       html: function html(list, options, setFileContents) {
-               if (this.modExists("export", true)) {
-                       setFileContents(this.modules.export.genereateHTMLTable(list), "text/html");
-               }
-       }
-
-};
-
-Tabulator.prototype.registerModule("download", Download);
-
-var Edit = function Edit(table) {
-       this.table = table; //hold Tabulator object
-       this.currentCell = false; //hold currently editing cell
-       this.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening
-       this.recursionBlock = false; //prevent focus recursion
-       this.invalidEdit = false;
-       this.editedCells = [];
-};
-
-//initialize column editor
-Edit.prototype.initializeColumn = function (column) {
-       var self = this,
-           config = {
-               editor: false,
-               blocked: false,
-               check: column.definition.editable,
-               params: column.definition.editorParams || {}
-       };
-
-       //set column editor
-       switch (_typeof(column.definition.editor)) {
-               case "string":
-
-                       if (column.definition.editor === "tick") {
-                               column.definition.editor = "tickCross";
-                               console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                       }
-
-                       if (self.editors[column.definition.editor]) {
-                               config.editor = self.editors[column.definition.editor];
-                       } else {
-                               console.warn("Editor Error - No such editor found: ", column.definition.editor);
-                       }
-                       break;
-
-               case "function":
-                       config.editor = column.definition.editor;
-                       break;
-
-               case "boolean":
-
-                       if (column.definition.editor === true) {
-
-                               if (typeof column.definition.formatter !== "function") {
-
-                                       if (column.definition.formatter === "tick") {
-                                               column.definition.formatter = "tickCross";
-                                               console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                                       }
-
-                                       if (self.editors[column.definition.formatter]) {
-                                               config.editor = self.editors[column.definition.formatter];
-                                       } else {
-                                               config.editor = self.editors["input"];
-                                       }
-                               } else {
-                                       console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
-                               }
-                       }
-                       break;
-       }
-
-       if (config.editor) {
-               column.modules.edit = config;
-       }
-};
-
-Edit.prototype.getCurrentCell = function () {
-       return this.currentCell ? this.currentCell.getComponent() : false;
-};
-
-Edit.prototype.clearEditor = function (cancel) {
-       var cell = this.currentCell,
-           cellEl;
-
-       this.invalidEdit = false;
-
-       if (cell) {
-               this.currentCell = false;
-
-               cellEl = cell.getElement();
-
-               if (cancel) {
-                       cell.validate();
-               } else {
-                       cellEl.classList.remove("tabulator-validation-fail");
-               }
-
-               cellEl.classList.remove("tabulator-editing");
-               while (cellEl.firstChild) {
-                       cellEl.removeChild(cellEl.firstChild);
-               }cell.row.getElement().classList.remove("tabulator-row-editing");
-       }
-};
-
-Edit.prototype.cancelEdit = function () {
-
-       if (this.currentCell) {
-               var cell = this.currentCell;
-               var component = this.currentCell.getComponent();
-
-               this.clearEditor(true);
-               cell.setValueActual(cell.getValue());
-               cell.cellRendered();
-
-               if (cell.column.definition.editor == "textarea" || cell.column.definition.variableHeight) {
-                       cell.row.normalizeHeight(true);
-               }
-
-               if (cell.column.cellEvents.cellEditCancelled) {
-                       cell.column.cellEvents.cellEditCancelled.call(this.table, component);
-               }
-
-               this.table.options.cellEditCancelled.call(this.table, component);
-       }
-};
-
-//return a formatted value for a cell
-Edit.prototype.bindEditor = function (cell) {
-       var self = this,
-           element = cell.getElement();
-
-       element.setAttribute("tabindex", 0);
-
-       element.addEventListener("click", function (e) {
-               if (!element.classList.contains("tabulator-editing")) {
-                       element.focus({ preventScroll: true });
-               }
-       });
-
-       element.addEventListener("mousedown", function (e) {
-               if (e.button === 2) {
-                       e.preventDefault();
-               } else {
-                       self.mouseClick = true;
-               }
-       });
-
-       element.addEventListener("focus", function (e) {
-               if (!self.recursionBlock) {
-                       self.edit(cell, e, false);
-               }
-       });
-};
-
-Edit.prototype.focusCellNoEvent = function (cell, block) {
-       this.recursionBlock = true;
-       if (!(block && this.table.browser === "ie")) {
-               cell.getElement().focus({ preventScroll: true });
-       }
-       this.recursionBlock = false;
-};
-
-Edit.prototype.editCell = function (cell, forceEdit) {
-       this.focusCellNoEvent(cell);
-       this.edit(cell, false, forceEdit);
-};
-
-Edit.prototype.focusScrollAdjust = function (cell) {
-       if (this.table.rowManager.getRenderMode() == "virtual") {
-               var topEdge = this.table.rowManager.element.scrollTop,
-                   bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,
-                   rowEl = cell.row.getElement(),
-                   offset = rowEl.offsetTop;
-
-               if (rowEl.offsetTop < topEdge) {
-                       this.table.rowManager.element.scrollTop -= topEdge - rowEl.offsetTop;
-               } else {
-                       if (rowEl.offsetTop + rowEl.offsetHeight > bottomEdge) {
-                               this.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;
-                       }
-               }
-
-               var leftEdge = this.table.rowManager.element.scrollLeft,
-                   rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,
-                   cellEl = cell.getElement(),
-                   offset = cellEl.offsetLeft;
-
-               if (this.table.modExists("frozenColumns")) {
-                       leftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);
-                       rightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);
-               }
-
-               if (cellEl.offsetLeft < leftEdge) {
-                       this.table.rowManager.element.scrollLeft -= leftEdge - cellEl.offsetLeft;
-               } else {
-                       if (cellEl.offsetLeft + cellEl.offsetWidth > rightEdge) {
-                               this.table.rowManager.element.scrollLeft += cellEl.offsetLeft + cellEl.offsetWidth - rightEdge;
-                       }
-               }
-       }
-};
-
-Edit.prototype.edit = function (cell, e, forceEdit) {
-       var self = this,
-           allowEdit = true,
-           rendered = function rendered() {},
-           element = cell.getElement(),
-           cellEditor,
-           component,
-           params;
-
-       //prevent editing if another cell is refusing to leave focus (eg. validation fail)
-       if (this.currentCell) {
-               if (!this.invalidEdit) {
-                       this.cancelEdit();
-               }
-               return;
-       }
-
-       //handle successfull value change
-       function success(value) {
-               if (self.currentCell === cell) {
-                       var valid = true;
-
-                       if (cell.column.modules.validate && self.table.modExists("validate") && self.table.options.validationMode != "manual") {
-                               valid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);
-                       }
-
-                       if (valid === true || self.table.options.validationMode === "highlight") {
-                               self.clearEditor();
-
-                               if (!cell.modules.edit) {
-                                       cell.modules.edit = {};
-                               }
-
-                               cell.modules.edit.edited = true;
-
-                               if (self.editedCells.indexOf(cell) == -1) {
-                                       self.editedCells.push(cell);
-                               }
-
-                               cell.setValue(value, true);
-
-                               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                                       self.table.modules.dataTree.checkForRestyle(cell);
-                               }
-
-                               if (valid !== true) {
-                                       element.classList.add("tabulator-validation-fail");
-                                       self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
-                                       return false;
-                               }
-
-                               return true;
-                       } else {
-                               self.invalidEdit = true;
-                               element.classList.add("tabulator-validation-fail");
-                               self.focusCellNoEvent(cell, true);
-                               rendered();
-                               self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
-
-                               return false;
-                       }
-               } else {
-                       // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
-               }
-       }
-
-       //handle aborted edit
-       function cancel() {
-               if (self.currentCell === cell) {
-                       self.cancelEdit();
-
-                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                               self.table.modules.dataTree.checkForRestyle(cell);
-                       }
-               } else {
-                       // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
-               }
-       }
-
-       function onRendered(callback) {
-               rendered = callback;
-       }
-
-       if (!cell.column.modules.edit.blocked) {
-               if (e) {
-                       e.stopPropagation();
-               }
-
-               switch (_typeof(cell.column.modules.edit.check)) {
-                       case "function":
-                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                               break;
-
-                       case "boolean":
-                               allowEdit = cell.column.modules.edit.check;
-                               break;
-               }
-
-               if (allowEdit || forceEdit) {
-
-                       self.cancelEdit();
-
-                       self.currentCell = cell;
-
-                       this.focusScrollAdjust(cell);
-
-                       component = cell.getComponent();
-
-                       if (this.mouseClick) {
-                               this.mouseClick = false;
-
-                               if (cell.column.cellEvents.cellClick) {
-                                       cell.column.cellEvents.cellClick.call(this.table, e, component);
-                               }
-                       }
-
-                       if (cell.column.cellEvents.cellEditing) {
-                               cell.column.cellEvents.cellEditing.call(this.table, component);
-                       }
-
-                       self.table.options.cellEditing.call(this.table, component);
-
-                       params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
-
-                       cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
-
-                       //if editor returned, add to DOM, if false, abort edit
-                       if (cellEditor !== false) {
-
-                               if (cellEditor instanceof Node) {
-                                       element.classList.add("tabulator-editing");
-                                       cell.row.getElement().classList.add("tabulator-row-editing");
-                                       while (element.firstChild) {
-                                               element.removeChild(element.firstChild);
-                                       }element.appendChild(cellEditor);
-
-                                       //trigger onRendered Callback
-                                       rendered();
-
-                                       //prevent editing from triggering rowClick event
-                                       var children = element.children;
-
-                                       for (var i = 0; i < children.length; i++) {
-                                               children[i].addEventListener("click", function (e) {
-                                                       e.stopPropagation();
-                                               });
-                                       }
-                               } else {
-                                       console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
-                                       element.blur();
-                                       return false;
-                               }
-                       } else {
-                               element.blur();
-                               return false;
-                       }
-
-                       return true;
-               } else {
-                       this.mouseClick = false;
-                       element.blur();
-                       return false;
-               }
-       } else {
-               this.mouseClick = false;
-               element.blur();
-               return false;
-       }
-};
-
-Edit.prototype.maskInput = function (el, options) {
-       var mask = options.mask,
-           maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A",
-           maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9",
-           maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*",
-           success = false;
-
-       function fillSymbols(index) {
-               var symbol = mask[index];
-               if (typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber) {
-                       el.value = el.value + "" + symbol;
-                       fillSymbols(index + 1);
-               }
-       }
-
-       el.addEventListener("keydown", function (e) {
-               var index = el.value.length,
-                   char = e.key;
-
-               if (e.keyCode > 46) {
-                       if (index >= mask.length) {
-                               e.preventDefault();
-                               e.stopPropagation();
-                               success = false;
-                               return false;
-                       } else {
-                               switch (mask[index]) {
-                                       case maskLetter:
-                                               if (char.toUpperCase() == char.toLowerCase()) {
-                                                       e.preventDefault();
-                                                       e.stopPropagation();
-                                                       success = false;
-                                                       return false;
-                                               }
-                                               break;
-
-                                       case maskNumber:
-                                               if (isNaN(char)) {
-                                                       e.preventDefault();
-                                                       e.stopPropagation();
-                                                       success = false;
-                                                       return false;
-                                               }
-                                               break;
-
-                                       case maskWildcard:
-                                               break;
-
-                                       default:
-                                               if (char !== mask[index]) {
-                                                       e.preventDefault();
-                                                       e.stopPropagation();
-                                                       success = false;
-                                                       return false;
-                                               }
-                               }
-                       }
-
-                       success = true;
-               }
-
-               return;
-       });
-
-       el.addEventListener("keyup", function (e) {
-               if (e.keyCode > 46) {
-                       if (options.maskAutoFill) {
-                               fillSymbols(el.value.length);
-                       }
-               }
-       });
-
-       if (!el.placeholder) {
-               el.placeholder = mask;
-       }
-
-       if (options.maskAutoFill) {
-               fillSymbols(el.value.length);
-       }
-};
-
-Edit.prototype.getEditedCells = function () {
-       var output = [];
-
-       this.editedCells.forEach(function (cell) {
-               output.push(cell.getComponent());
-       });
-
-       return output;
-};
-
-Edit.prototype.clearEdited = function (cell) {
-       var editIndex;
-
-       if (cell.modules.edit && cell.modules.edit.edited) {
-               cell.modules.edit.edited = false;
-
-               if (cell.modules.validate) {
-                       cell.modules.validate.invalid = false;
-               }
-       }
-
-       editIndex = this.editedCells.indexOf(cell);
-
-       if (editIndex > -1) {
-               this.editedCells.splice(editIndex, 1);
-       }
-};
-
-//default data editors
-Edit.prototype.editors = {
-
-       //input element
-       input: function input(cell, onRendered, success, cancel, editorParams) {
-
-               //create and style input
-               var cellValue = cell.getValue(),
-                   input = document.createElement("input");
-
-               input.setAttribute("type", editorParams.search ? "search" : "text");
-
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = typeof cellValue !== "undefined" ? cellValue : "";
-
-               onRendered(function () {
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-               });
-
-               function onChange(e) {
-                       if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-                               if (success(input.value)) {
-                                       cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                               }
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on blur or change
-               input.addEventListener("change", onChange);
-               input.addEventListener("blur", onChange);
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               // case 9:
-                               case 13:
-                                       onChange(e);
-                                       break;
-
-                               case 27:
-                                       cancel();
-                                       break;
-
-                               case 35:
-                               case 36:
-                                       e.stopPropagation();
-                                       break;
-                       }
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //resizable text area element
-       textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   cellValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "hybrid",
-                   value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
-                   count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
-                   input = document.createElement("textarea"),
-                   scrollHeight = 0;
-
-               //create and style input
-               input.style.display = "block";
-               input.style.padding = "2px";
-               input.style.height = "100%";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-               input.style.whiteSpace = "pre-wrap";
-               input.style.resize = "none";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = value;
-
-               onRendered(function () {
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-
-                       input.scrollHeight;
-                       input.style.height = input.scrollHeight + "px";
-                       cell.getRow().normalizeHeight();
-               });
-
-               function onChange(e) {
-
-                       if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-
-                               if (success(input.value)) {
-                                       cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                               }
-
-                               setTimeout(function () {
-                                       cell.getRow().normalizeHeight();
-                               }, 300);
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on blur or change
-               input.addEventListener("change", onChange);
-               input.addEventListener("blur", onChange);
-
-               input.addEventListener("keyup", function () {
-
-                       input.style.height = "";
-
-                       var heightNow = input.scrollHeight;
-
-                       input.style.height = heightNow + "px";
-
-                       if (heightNow != scrollHeight) {
-                               scrollHeight = heightNow;
-                               cell.getRow().normalizeHeight();
-                       }
-               });
-
-               input.addEventListener("keydown", function (e) {
-
-                       switch (e.keyCode) {
-                               case 27:
-                                       cancel();
-                                       break;
-
-                               case 38:
-                                       //up arrow
-                                       if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                       }
-
-                                       break;
-
-                               case 40:
-                                       //down arrow
-                                       if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart !== input.value.length) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                       }
-                                       break;
-
-                               case 35:
-                               case 36:
-                                       e.stopPropagation();
-                                       break;
-                       }
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //input element with type of number
-       number: function number(cell, onRendered, success, cancel, editorParams) {
-
-               var cellValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "editor",
-                   input = document.createElement("input");
-
-               input.setAttribute("type", "number");
-
-               if (typeof editorParams.max != "undefined") {
-                       input.setAttribute("max", editorParams.max);
-               }
-
-               if (typeof editorParams.min != "undefined") {
-                       input.setAttribute("min", editorParams.min);
-               }
-
-               if (typeof editorParams.step != "undefined") {
-                       input.setAttribute("step", editorParams.step);
-               }
-
-               //create and style input
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = cellValue;
-
-               var blurFunc = function blurFunc(e) {
-                       onChange();
-               };
-
-               onRendered(function () {
-                       //submit new value on blur
-                       input.removeEventListener("blur", blurFunc);
-
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-
-                       //submit new value on blur
-                       input.addEventListener("blur", blurFunc);
-               });
-
-               function onChange() {
-                       var value = input.value;
-
-                       if (!isNaN(value) && value !== "") {
-                               value = Number(value);
-                       }
-
-                       if (value !== cellValue) {
-                               if (success(value)) {
-                                       cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                               }
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 13:
-                                       // case 9:
-                                       onChange();
-                                       break;
-
-                               case 27:
-                                       cancel();
-                                       break;
-
-                               case 38: //up arrow
-                               case 40:
-                                       //down arrow
-                                       if (vertNav == "editor") {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                       }
-                                       break;
-
-                               case 35:
-                               case 36:
-                                       e.stopPropagation();
-                                       break;
-                       }
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //input element with type of number
-       range: function range(cell, onRendered, success, cancel, editorParams) {
-
-               var cellValue = cell.getValue(),
-                   input = document.createElement("input");
-
-               input.setAttribute("type", "range");
-
-               if (typeof editorParams.max != "undefined") {
-                       input.setAttribute("max", editorParams.max);
-               }
-
-               if (typeof editorParams.min != "undefined") {
-                       input.setAttribute("min", editorParams.min);
-               }
-
-               if (typeof editorParams.step != "undefined") {
-                       input.setAttribute("step", editorParams.step);
-               }
-
-               //create and style input
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = cellValue;
-
-               onRendered(function () {
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-               });
-
-               function onChange() {
-                       var value = input.value;
-
-                       if (!isNaN(value) && value !== "") {
-                               value = Number(value);
-                       }
-
-                       if (value != cellValue) {
-                               if (success(value)) {
-                                       cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                               }
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on blur
-               input.addEventListener("blur", function (e) {
-                       onChange();
-               });
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 13:
-                                       // case 9:
-                                       onChange();
-                                       break;
-
-                               case 27:
-                                       cancel();
-                                       break;
-                       }
-               });
-
-               return input;
-       },
-
-       //select
-       select: function select(cell, onRendered, success, cancel, editorParams) {
-               var _this53 = this;
-
-               var self = this,
-                   cellEl = cell.getElement(),
-                   initialValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "editor",
-                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? Array.isArray(initialValue) ? initialValue : [initialValue] : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : [],
-                   input = document.createElement("input"),
-                   listEl = document.createElement("div"),
-                   multiselect = editorParams.multiselect,
-                   dataItems = [],
-                   currentItem = {},
-                   displayItems = [],
-                   currentItems = [],
-                   blurable = true,
-                   blockListShow = false;
-
-               if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === "object" && !editorParams.values) {
-                       console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
-                       editorParams = { values: editorParams };
-               }
-
-               function getUniqueColumnValues(field) {
-                       var output = {},
-                           data = self.table.getData(),
-                           column;
-
-                       if (field) {
-                               column = self.table.columnManager.getColumnByField(field);
-                       } else {
-                               column = cell.getColumn()._getSelf();
-                       }
-
-                       if (column) {
-                               data.forEach(function (row) {
-                                       var val = column.getFieldValue(row);
-
-                                       if (val !== null && typeof val !== "undefined" && val !== "") {
-                                               output[val] = true;
-                                       }
-                               });
-
-                               if (editorParams.sortValuesList) {
-                                       if (editorParams.sortValuesList == "asc") {
-                                               output = Object.keys(output).sort();
-                                       } else {
-                                               output = Object.keys(output).sort().reverse();
-                                       }
-                               } else {
-                                       output = Object.keys(output);
-                               }
-                       } else {
-                               console.warn("unable to find matching column to create select lookup list:", field);
-                       }
-
-                       return output;
-               }
-
-               function parseItems(inputValues, curentValues) {
-                       var dataList = [];
-                       var displayList = [];
-
-                       function processComplexListItem(item) {
-                               var item = {
-                                       label: item.label,
-                                       value: item.value,
-                                       itemParams: item.itemParams,
-                                       elementAttributes: item.elementAttributes,
-                                       element: false
-                               };
-
-                               // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
-                               //      setCurrentItem(item);
-                               // }
-
-                               if (curentValues.indexOf(item.value) > -1) {
-                                       setItem(item);
-                               }
-
-                               dataList.push(item);
-                               displayList.push(item);
-
-                               return item;
-                       }
-
-                       if (typeof inputValues == "function") {
-                               inputValues = inputValues(cell);
-                       }
-
-                       if (Array.isArray(inputValues)) {
-                               inputValues.forEach(function (value) {
-                                       var item;
-
-                                       if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object") {
-
-                                               if (value.options) {
-                                                       item = {
-                                                               label: value.label,
-                                                               group: true,
-                                                               itemParams: value.itemParams,
-                                                               elementAttributes: value.elementAttributes,
-                                                               element: false
-                                                       };
-
-                                                       displayList.push(item);
-
-                                                       value.options.forEach(function (item) {
-                                                               processComplexListItem(item);
-                                                       });
-                                               } else {
-                                                       processComplexListItem(value);
-                                               }
-                                       } else {
-
-                                               item = {
-                                                       label: value,
-                                                       value: value,
-                                                       element: false
-                                               };
-
-                                               // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
-                                               //      setCurrentItem(item);
-                                               // }
-
-                                               if (curentValues.indexOf(item.value) > -1) {
-                                                       setItem(item);
-                                               }
-
-                                               dataList.push(item);
-                                               displayList.push(item);
-                                       }
-                               });
-                       } else {
-                               for (var key in inputValues) {
-                                       var item = {
-                                               label: inputValues[key],
-                                               value: key,
-                                               element: false
-                                       };
-
-                                       // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
-                                       //      setCurrentItem(item);
-                                       // }
-
-                                       if (curentValues.indexOf(item.value) > -1) {
-                                               setItem(item);
-                                       }
-
-                                       dataList.push(item);
-                                       displayList.push(item);
-                               }
-                       }
-
-                       dataItems = dataList;
-                       displayItems = displayList;
-
-                       fillList();
-               }
-
-               function fillList() {
-                       while (listEl.firstChild) {
-                               listEl.removeChild(listEl.firstChild);
-                       }displayItems.forEach(function (item) {
-
-                               var el = item.element;
-
-                               if (!el) {
-                                       el = document.createElement("div");
-                                       item.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;
-                                       if (item.group) {
-                                               el.classList.add("tabulator-edit-select-list-group");
-                                               el.tabIndex = 0;
-                                               el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-                                       } else {
-                                               el.classList.add("tabulator-edit-select-list-item");
-                                               el.tabIndex = 0;
-                                               el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-
-                                               el.addEventListener("click", function () {
-                                                       blockListShow = true;
-
-                                                       setTimeout(function () {
-                                                               blockListShow = false;
-                                                       }, 10);
-
-                                                       // setCurrentItem(item);
-                                                       // chooseItem();
-                                                       if (multiselect) {
-                                                               toggleItem(item);
-                                                               input.focus();
-                                                       } else {
-                                                               chooseItem(item);
-                                                       }
-                                               });
-
-                                               // if(item === currentItem){
-                                               //      el.classList.add("active");
-                                               // }
-
-                                               if (currentItems.indexOf(item) > -1) {
-                                                       el.classList.add("active");
-                                               }
-                                       }
-
-                                       if (item.elementAttributes && _typeof(item.elementAttributes) == "object") {
-                                               for (var key in item.elementAttributes) {
-                                                       if (key.charAt(0) == "+") {
-                                                               key = key.slice(1);
-                                                               el.setAttribute(key, input.getAttribute(key) + item.elementAttributes["+" + key]);
-                                                       } else {
-                                                               el.setAttribute(key, item.elementAttributes[key]);
-                                                       }
-                                               }
-                                       }
-                                       el.addEventListener("mousedown", function () {
-                                               blurable = false;
-
-                                               setTimeout(function () {
-                                                       blurable = true;
-                                               }, 10);
-                                       });
-
-                                       item.element = el;
-                               }
-
-                               listEl.appendChild(el);
-                       });
-               }
-
-               function setCurrentItem(item, active) {
-
-                       if (!multiselect && currentItem && currentItem.element) {
-                               currentItem.element.classList.remove("active");
-                       }
-
-                       if (currentItem && currentItem.element) {
-                               currentItem.element.classList.remove("focused");
-                       }
-
-                       currentItem = item;
-
-                       if (item.element) {
-                               item.element.classList.add("focused");
-                               if (active) {
-                                       item.element.classList.add("active");
-                               }
-                       }
-
-                       if (item && item.element && item.element.scrollIntoView) {
-                               item.element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });
-                       }
-               }
-
-               // function chooseItem(){
-               //      hideList();
-
-               //      if(initialValue !== currentItem.value){
-               //              initialValue = currentItem.value;
-               //              success(currentItem.value);
-               //      }else{
-               //              cancel();
-               //      }
-               // }
-
-               function setItem(item) {
-                       var index = currentItems.indexOf(item);
-
-                       if (index == -1) {
-                               currentItems.push(item);
-                               setCurrentItem(item, true);
-                       }
-
-                       fillInput();
-               }
-
-               function unsetItem(index) {
-                       var item = currentItems[index];
-
-                       if (index > -1) {
-                               currentItems.splice(index, 1);
-                               if (item.element) {
-                                       item.element.classList.remove("active");
-                               }
-                       }
-               }
-
-               function toggleItem(item) {
-                       if (!item) {
-                               item = currentItem;
-                       }
-
-                       var index = currentItems.indexOf(item);
-
-                       if (index > -1) {
-                               unsetItem(index);
-                       } else {
-                               if (multiselect !== true && currentItems.length >= multiselect) {
-                                       unsetItem(0);
-                               }
-
-                               setItem(item);
-                       }
-
-                       fillInput();
-               }
-
-               function chooseItem(item) {
-                       hideList();
-
-                       if (!item) {
-                               item = currentItem;
-                       }
-
-                       if (item) {
-                               input.value = item.label;
-                               success(item.value);
-                       }
-
-                       initialDisplayValue = input.value;
-               }
-
-               function chooseItems(silent) {
-                       if (!silent) {
-                               hideList();
-                       }
-
-                       var output = [];
-
-                       currentItems.forEach(function (item) {
-                               output.push(item.value);
-                       });
-
-                       initialDisplayValue = input.value;
-
-                       success(output);
-               }
-
-               function fillInput() {
-                       var output = [];
-
-                       currentItems.forEach(function (item) {
-                               output.push(item.label);
-                       });
-
-                       input.value = output.join(", ");
-
-                       if (self.currentCell === false) {
-                               chooseItems(true);
-                       }
-               }
-
-               function unsetItems() {
-
-                       var len = currentItems.length;
-
-                       for (var _i9 = 0; _i9 < len; _i9++) {
-                               unsetItem(0);
-                       }
-               }
-
-               function cancelItem() {
-                       hideList();
-                       cancel();
-               }
-
-               function showList() {
-                       currentItems = [];
-
-                       if (!listEl.parentNode) {
-                               if (editorParams.values === true) {
-                                       parseItems(getUniqueColumnValues(), initialDisplayValue);
-                               } else if (typeof editorParams.values === "string") {
-                                       parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
-                               } else {
-                                       parseItems(editorParams.values || [], initialDisplayValue);
-                               }
-
-                               var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                               listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                               listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                               listEl.style.left = offset.left + "px";
-
-                               listEl.addEventListener("mousedown", function (e) {
-                                       blurable = false;
-
-                                       setTimeout(function () {
-                                               blurable = true;
-                                       }, 10);
-                               });
-
-                               document.body.appendChild(listEl);
-                       }
-               }
-
-               function hideList() {
-                       if (listEl.parentNode) {
-                               listEl.parentNode.removeChild(listEl);
-                       }
-
-                       removeScrollListener();
-               }
-
-               function removeScrollListener() {
-                       self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-               }
-
-               //style input
-               input.setAttribute("type", "text");
-
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-               input.style.cursor = "default";
-               input.readOnly = this.currentCell != false;
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
-
-               // if(editorParams.values === true){
-               //      parseItems(getUniqueColumnValues(), initialValue);
-               // }else if(typeof editorParams.values === "string"){
-               //      parseItems(getUniqueColumnValues(editorParams.values), initialValue);
-               // }else{
-               //      parseItems(editorParams.values || [], initialValue);
-               // }
-
-               input.addEventListener("search", function (e) {
-                       if (!input.value) {
-                               unsetItems();
-                               chooseItems();
-                       }
-               });
-
-               //allow key based navigation
-               input.addEventListener("keydown", function (e) {
-                       var index;
-
-                       switch (e.keyCode) {
-                               case 38:
-                                       //up arrow
-                                       index = dataItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index > 0) {
-                                                       setCurrentItem(dataItems[index - 1], !multiselect);
-                                               }
-                                       }
-                                       break;
-
-                               case 40:
-                                       //down arrow
-                                       index = dataItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index < dataItems.length - 1) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index < dataItems.length - 1) {
-                                                       if (index == -1) {
-                                                               setCurrentItem(dataItems[0], !multiselect);
-                                                       } else {
-                                                               setCurrentItem(dataItems[index + 1], !multiselect);
-                                                       }
-                                               }
-                                       }
-                                       break;
-
-                               case 37: //left arrow
-                               case 39:
-                                       //right arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       e.preventDefault();
-                                       break;
-
-                               case 13:
-                                       //enter
-                                       // chooseItem();
-
-                                       if (multiselect) {
-                                               toggleItem();
-                                       } else {
-                                               chooseItem();
-                                       }
-
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancelItem();
-                                       break;
-
-                               case 9:
-                                       //tab
-                                       break;
-
-                               default:
-                                       if (self.currentCell === false) {
-                                               e.preventDefault();
-                                       }
-                       }
-               });
-
-               input.addEventListener("blur", function (e) {
-                       if (blurable) {
-                               if (multiselect) {
-                                       chooseItems();
-                               } else {
-                                       cancelItem();
-                               }
-                       }
-               });
-
-               input.addEventListener("focus", function (e) {
-                       if (!blockListShow) {
-                               showList();
-                       }
-               });
-
-               //style list element
-               listEl = document.createElement("div");
-               listEl.classList.add("tabulator-edit-select-list");
-
-               onRendered(function () {
-                       input.style.height = "100%";
-                       input.focus({ preventScroll: true });
-               });
-
-               setTimeout(function () {
-                       _this53.table.rowManager.element.addEventListener("scroll", cancelItem);
-               }, 10);
-
-               return input;
-       },
-
-       //autocomplete
-       autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
-               var _this54 = this;
-
-               var self = this,
-                   cellEl = cell.getElement(),
-                   initialValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "editor",
-                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
-                   input = document.createElement("input"),
-                   listEl = document.createElement("div"),
-                   allItems = [],
-                   displayItems = [],
-                   values = [],
-                   currentItem = false,
-                   blurable = true,
-                   uniqueColumnValues = false;
-
-               //style input
-               input.setAttribute("type", "search");
-
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               //style list element
-               listEl.classList.add("tabulator-edit-select-list");
-
-               listEl.addEventListener("mousedown", function (e) {
-                       blurable = false;
-
-                       setTimeout(function () {
-                               blurable = true;
-                       }, 10);
-               });
-
-               function genUniqueColumnValues() {
-                       if (editorParams.values === true) {
-                               uniqueColumnValues = getUniqueColumnValues();
-                       } else if (typeof editorParams.values === "string") {
-                               uniqueColumnValues = getUniqueColumnValues(editorParams.values);
-                       }
-               }
-
-               function getUniqueColumnValues(field) {
-                       var output = {},
-                           data = self.table.getData(),
-                           column;
-
-                       if (field) {
-                               column = self.table.columnManager.getColumnByField(field);
-                       } else {
-                               column = cell.getColumn()._getSelf();
-                       }
-
-                       if (column) {
-                               data.forEach(function (row) {
-                                       var val = column.getFieldValue(row);
-
-                                       if (val !== null && typeof val !== "undefined" && val !== "") {
-                                               output[val] = true;
-                                       }
-                               });
-
-                               if (editorParams.sortValuesList) {
-                                       if (editorParams.sortValuesList == "asc") {
-                                               output = Object.keys(output).sort();
-                                       } else {
-                                               output = Object.keys(output).sort().reverse();
-                                       }
-                               } else {
-                                       output = Object.keys(output);
-                               }
-                       } else {
-                               console.warn("unable to find matching column to create autocomplete lookup list:", field);
-                       }
-
-                       return output;
-               }
-
-               function filterList(term, intialLoad) {
-                       var matches = [],
-                           values,
-                           items,
-                           searchEl;
-
-                       //lookup base values list
-                       if (uniqueColumnValues) {
-                               values = uniqueColumnValues;
-                       } else {
-                               values = editorParams.values || [];
-                       }
-
-                       if (editorParams.searchFunc) {
-                               matches = editorParams.searchFunc(term, values);
-
-                               if (matches instanceof Promise) {
-
-                                       addNotice(typeof editorParams.searchingPlaceholder !== "undefined" ? editorParams.searchingPlaceholder : "Searching...");
-
-                                       matches.then(function (result) {
-                                               fillListIfNotEmpty(parseItems(result), intialLoad);
-                                       }).catch(function (err) {
-                                               console.err("error in autocomplete search promise:", err);
-                                       });
-                               } else {
-                                       fillListIfNotEmpty(parseItems(matches), intialLoad);
-                               }
-                       } else {
-                               items = parseItems(values);
-
-                               if (term === "") {
-                                       if (editorParams.showListOnEmpty) {
-                                               matches = items;
-                                       }
-                               } else {
-                                       items.forEach(function (item) {
-                                               if (item.value !== null || typeof item.value !== "undefined") {
-                                                       if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {
-                                                               matches.push(item);
-                                                       }
-                                               }
-                                       });
-                               }
-
-                               fillListIfNotEmpty(matches, intialLoad);
-                       }
-               }
-
-               function addNotice(notice) {
-                       var searchEl = document.createElement("div");
-
-                       clearList();
-
-                       if (notice !== false) {
-                               searchEl.classList.add("tabulator-edit-select-list-notice");
-                               searchEl.tabIndex = 0;
-
-                               if (notice instanceof Node) {
-                                       searchEl.appendChild(notice);
-                               } else {
-                                       searchEl.innerHTML = notice;
-                               }
-
-                               listEl.appendChild(searchEl);
-                       }
-               }
-
-               function parseItems(inputValues) {
-                       var itemList = [];
-
-                       if (Array.isArray(inputValues)) {
-                               inputValues.forEach(function (value) {
-
-                                       var item = {};
-
-                                       if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object") {
-                                               item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;
-                                               item.value = value.value;
-                                       } else {
-                                               item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;
-                                               item.value = value;
-                                       }
-
-                                       itemList.push(item);
-                               });
-                       } else {
-                               for (var key in inputValues) {
-                                       var item = {
-                                               title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
-                                               value: key
-                                       };
-
-                                       itemList.push(item);
-                               }
-                       }
-
-                       return itemList;
-               }
-
-               function clearList() {
-                       while (listEl.firstChild) {
-                               listEl.removeChild(listEl.firstChild);
-                       }
-               }
-
-               function fillListIfNotEmpty(items, intialLoad) {
-                       if (items.length) {
-                               fillList(items, intialLoad);
-                       } else {
-                               if (editorParams.emptyPlaceholder) {
-                                       addNotice(editorParams.emptyPlaceholder);
-                               }
-                       }
-               }
-
-               function fillList(items, intialLoad) {
-                       var current = false;
-
-                       clearList();
-
-                       displayItems = items;
-
-                       displayItems.forEach(function (item) {
-                               var el = item.element;
-
-                               if (!el) {
-                                       el = document.createElement("div");
-                                       el.classList.add("tabulator-edit-select-list-item");
-                                       el.tabIndex = 0;
-                                       el.innerHTML = item.title;
-
-                                       el.addEventListener("click", function (e) {
-                                               setCurrentItem(item);
-                                               chooseItem();
-                                       });
-
-                                       el.addEventListener("mousedown", function (e) {
-                                               blurable = false;
-
-                                               setTimeout(function () {
-                                                       blurable = true;
-                                               }, 10);
-                                       });
-
-                                       item.element = el;
-
-                                       if (intialLoad && item.value == initialValue) {
-                                               input.value = item.title;
-                                               item.element.classList.add("active");
-                                               current = true;
-                                       }
-
-                                       if (item === currentItem) {
-                                               item.element.classList.add("active");
-                                               current = true;
-                                       }
-                               }
-
-                               listEl.appendChild(el);
-                       });
-
-                       if (!current) {
-                               setCurrentItem(false);
-                       }
-               }
-
-               function chooseItem() {
-                       hideList();
-
-                       if (currentItem) {
-                               if (initialValue !== currentItem.value) {
-                                       initialValue = currentItem.value;
-                                       input.value = currentItem.title;
-                                       success(currentItem.value);
-                               } else {
-                                       cancel();
-                               }
-                       } else {
-                               if (editorParams.freetext) {
-                                       initialValue = input.value;
-                                       success(input.value);
-                               } else {
-                                       if (editorParams.allowEmpty && input.value === "") {
-                                               initialValue = input.value;
-                                               success(input.value);
-                                       } else {
-                                               cancel();
-                                       }
-                               }
-                       }
-               }
-
-               function showList() {
-                       if (!listEl.parentNode) {
-                               while (listEl.firstChild) {
-                                       listEl.removeChild(listEl.firstChild);
-                               }var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                               listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                               listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                               listEl.style.left = offset.left + "px";
-                               document.body.appendChild(listEl);
-                       }
-               }
-
-               function setCurrentItem(item, showInputValue) {
-                       if (currentItem && currentItem.element) {
-                               currentItem.element.classList.remove("active");
-                       }
-
-                       currentItem = item;
-
-                       if (item && item.element) {
-                               item.element.classList.add("active");
-                       }
-
-                       if (item && item.element && item.element.scrollIntoView) {
-                               item.element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });
-                       }
-               }
-
-               function hideList() {
-                       if (listEl.parentNode) {
-                               listEl.parentNode.removeChild(listEl);
-                       }
-
-                       removeScrollListener();
-               }
-
-               function cancelItem() {
-                       hideList();
-                       cancel();
-               }
-
-               function removeScrollListener() {
-                       self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-               }
-
-               //allow key based navigation
-               input.addEventListener("keydown", function (e) {
-                       var index;
-
-                       switch (e.keyCode) {
-                               case 38:
-                                       //up arrow
-                                       index = displayItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index > 0) {
-                                                       setCurrentItem(displayItems[index - 1]);
-                                               } else {
-                                                       setCurrentItem(false);
-                                               }
-                                       }
-                                       break;
-
-                               case 40:
-                                       //down arrow
-
-                                       index = displayItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index < displayItems.length - 1) {
-
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index < displayItems.length - 1) {
-                                                       if (index == -1) {
-                                                               setCurrentItem(displayItems[0]);
-                                                       } else {
-                                                               setCurrentItem(displayItems[index + 1]);
-                                                       }
-                                               }
-                                       }
-                                       break;
-
-                               case 37: //left arrow
-                               case 39:
-                                       //right arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       // e.preventDefault();
-                                       break;
-
-                               case 13:
-                                       //enter
-                                       chooseItem();
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancelItem();
-                                       break;
-
-                               case 36: //home
-                               case 35:
-                                       //end
-                                       //prevent table navigation while using input element
-                                       e.stopImmediatePropagation();
-                                       break;
-                       }
-               });
-
-               input.addEventListener("keyup", function (e) {
-
-                       switch (e.keyCode) {
-                               case 38: //up arrow
-                               case 37: //left arrow
-                               case 39: //up arrow
-                               case 40: //right arrow
-                               case 13: //enter
-                               case 27:
-                                       //escape
-                                       break;
-
-                               default:
-                                       filterList(input.value);
-                       }
-               });
-
-               input.addEventListener("search", function (e) {
-                       filterList(input.value);
-               });
-
-               input.addEventListener("blur", function (e) {
-                       if (blurable) {
-                               chooseItem();
-                       }
-               });
-
-               input.addEventListener("focus", function (e) {
-                       var value = initialDisplayValue;
-                       genUniqueColumnValues();
-                       showList();
-                       input.value = value;
-                       filterList(value, true);
-               });
-
-               onRendered(function () {
-                       input.style.height = "100%";
-                       input.focus({ preventScroll: true });
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               setTimeout(function () {
-                       _this54.table.rowManager.element.addEventListener("scroll", cancelItem);
-               }, 10);
-
-               genUniqueColumnValues();
-               input.value = initialDisplayValue;
-               filterList(initialDisplayValue, true);
-
-               return input;
-       },
-
-       //star rating
-       star: function star(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   element = cell.getElement(),
-                   value = cell.getValue(),
-                   maxStars = element.getElementsByTagName("svg").length || 5,
-                   size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
-                   stars = [],
-                   starsHolder = document.createElement("div"),
-                   star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
-
-               //change star type
-               function starChange(val) {
-                       stars.forEach(function (star, i) {
-                               if (i < val) {
-                                       if (self.table.browser == "ie") {
-                                               star.setAttribute("class", "tabulator-star-active");
-                                       } else {
-                                               star.classList.replace("tabulator-star-inactive", "tabulator-star-active");
-                                       }
-
-                                       star.innerHTML = '<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                               } else {
-                                       if (self.table.browser == "ie") {
-                                               star.setAttribute("class", "tabulator-star-inactive");
-                                       } else {
-                                               star.classList.replace("tabulator-star-active", "tabulator-star-inactive");
-                                       }
-
-                                       star.innerHTML = '<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                               }
-                       });
-               }
-
-               //build stars
-               function buildStar(i) {
-
-                       var starHolder = document.createElement("span");
-                       var nextStar = star.cloneNode(true);
-
-                       stars.push(nextStar);
-
-                       starHolder.addEventListener("mouseenter", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                               starChange(i);
-                       });
-
-                       starHolder.addEventListener("mousemove", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                       });
-
-                       starHolder.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                               success(i);
-                               element.blur();
-                       });
-
-                       starHolder.appendChild(nextStar);
-                       starsHolder.appendChild(starHolder);
-               }
-
-               //handle keyboard navigation value change
-               function changeValue(val) {
-                       value = val;
-                       starChange(val);
-               }
-
-               //style cell
-               element.style.whiteSpace = "nowrap";
-               element.style.overflow = "hidden";
-               element.style.textOverflow = "ellipsis";
-
-               //style holding element
-               starsHolder.style.verticalAlign = "middle";
-               starsHolder.style.display = "inline-block";
-               starsHolder.style.padding = "4px";
-
-               //style star
-               star.setAttribute("width", size);
-               star.setAttribute("height", size);
-               star.setAttribute("viewBox", "0 0 512 512");
-               star.setAttribute("xml:space", "preserve");
-               star.style.padding = "0 1px";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               //create correct number of stars
-               for (var i = 1; i <= maxStars; i++) {
-                       buildStar(i);
-               }
-
-               //ensure value does not exceed number of stars
-               value = Math.min(parseInt(value), maxStars);
-
-               // set initial styling of stars
-               starChange(value);
-
-               starsHolder.addEventListener("mousemove", function (e) {
-                       starChange(0);
-               });
-
-               starsHolder.addEventListener("click", function (e) {
-                       success(0);
-               });
-
-               element.addEventListener("blur", function (e) {
-                       cancel();
-               });
-
-               //allow key based navigation
-               element.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 39:
-                                       //right arrow
-                                       changeValue(value + 1);
-                                       break;
-
-                               case 37:
-                                       //left arrow
-                                       changeValue(value - 1);
-                                       break;
-
-                               case 13:
-                                       //enter
-                                       success(value);
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancel();
-                                       break;
-                       }
-               });
-
-               return starsHolder;
-       },
-
-       //draggable progress bar
-       progress: function progress(cell, onRendered, success, cancel, editorParams) {
-               var element = cell.getElement(),
-                   max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max,
-                   min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min,
-                   percent = (max - min) / 100,
-                   value = cell.getValue() || 0,
-                   handle = document.createElement("div"),
-                   bar = document.createElement("div"),
-                   mouseDrag,
-                   mouseDragWidth;
-
-               //set new value
-               function updateValue() {
-                       var calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;
-                       success(calcVal);
-                       element.setAttribute("aria-valuenow", calcVal);
-                       element.setAttribute("aria-label", value);
-               }
-
-               //style handle
-               handle.style.position = "absolute";
-               handle.style.right = "0";
-               handle.style.top = "0";
-               handle.style.bottom = "0";
-               handle.style.width = "5px";
-               handle.classList.add("tabulator-progress-handle");
-
-               //style bar
-               bar.style.display = "inline-block";
-               bar.style.position = "relative";
-               // bar.style.top = "8px";
-               // bar.style.bottom = "8px";
-               // bar.style.left = "4px";
-               // bar.style.marginRight = "4px";
-               bar.style.height = "100%";
-               bar.style.backgroundColor = "#488CE9";
-               bar.style.maxWidth = "100%";
-               bar.style.minWidth = "0%";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       bar.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               //style cell
-               element.style.padding = "4px 4px";
-
-               //make sure value is in range
-               value = Math.min(parseFloat(value), max);
-               value = Math.max(parseFloat(value), min);
-
-               //workout percentage
-               value = Math.round((value - min) / percent);
-               // bar.style.right = value + "%";
-               bar.style.width = value + "%";
-
-               element.setAttribute("aria-valuemin", min);
-               element.setAttribute("aria-valuemax", max);
-
-               bar.appendChild(handle);
-
-               handle.addEventListener("mousedown", function (e) {
-                       mouseDrag = e.screenX;
-                       mouseDragWidth = bar.offsetWidth;
-               });
-
-               handle.addEventListener("mouseover", function () {
-                       handle.style.cursor = "ew-resize";
-               });
-
-               element.addEventListener("mousemove", function (e) {
-                       if (mouseDrag) {
-                               bar.style.width = mouseDragWidth + e.screenX - mouseDrag + "px";
-                       }
-               });
-
-               element.addEventListener("mouseup", function (e) {
-                       if (mouseDrag) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-
-                               mouseDrag = false;
-                               mouseDragWidth = false;
-
-                               updateValue();
-                       }
-               });
-
-               //allow key based navigation
-               element.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 39:
-                                       //right arrow
-                                       e.preventDefault();
-                                       bar.style.width = bar.clientWidth + element.clientWidth / 100 + "px";
-                                       break;
-
-                               case 37:
-                                       //left arrow
-                                       e.preventDefault();
-                                       bar.style.width = bar.clientWidth - element.clientWidth / 100 + "px";
-                                       break;
-
-                               case 9: //tab
-                               case 13:
-                                       //enter
-                                       updateValue();
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancel();
-                                       break;
-
-                       }
-               });
-
-               element.addEventListener("blur", function () {
-                       cancel();
-               });
-
-               return bar;
-       },
-
-       //checkbox
-       tickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {
-               var value = cell.getValue(),
-                   input = document.createElement("input"),
-                   tristate = editorParams.tristate,
-                   indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
-                   indetermState = false;
-
-               input.setAttribute("type", "checkbox");
-               input.style.marginTop = "5px";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = value;
-
-               if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
-                       indetermState = true;
-                       input.indeterminate = true;
-               }
-
-               if (this.table.browser != "firefox") {
-                       //prevent blur issue on mac firefox
-                       onRendered(function () {
-                               input.focus({ preventScroll: true });
-                       });
-               }
-
-               input.checked = value === true || value === "true" || value === "True" || value === 1;
-
-               onRendered(function () {
-                       input.focus();
-               });
-
-               function setValue(blur) {
-                       if (tristate) {
-                               if (!blur) {
-                                       if (input.checked && !indetermState) {
-                                               input.checked = false;
-                                               input.indeterminate = true;
-                                               indetermState = true;
-                                               return indetermValue;
-                                       } else {
-                                               indetermState = false;
-                                               return input.checked;
-                                       }
-                               } else {
-                                       if (indetermState) {
-                                               return indetermValue;
-                                       } else {
-                                               return input.checked;
-                                       }
-                               }
-                       } else {
-                               return input.checked;
-                       }
-               }
-
-               //submit new value on blur
-               input.addEventListener("change", function (e) {
-                       success(setValue());
-               });
-
-               input.addEventListener("blur", function (e) {
-                       success(setValue(true));
-               });
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       if (e.keyCode == 13) {
-                               success(setValue());
-                       }
-                       if (e.keyCode == 27) {
-                               cancel();
-                       }
-               });
-
-               return input;
-       }
-};
-
-Tabulator.prototype.registerModule("edit", Edit);
-
-var ExportRow = function ExportRow(type, columns, component, indent) {
-       this.type = type;
-       this.columns = columns;
-       this.component = component || false;
-       this.indent = indent || 0;
-};
-
-var ExportColumn = function ExportColumn(value, component, width, height, depth) {
-       this.value = value;
-       this.component = component || false;
-       this.width = width;
-       this.height = height;
-       this.depth = depth;
-};
-
-var Export = function Export(table) {
-       this.table = table; //hold Tabulator object
-       this.config = {};
-       this.cloneTableStyle = true;
-       this.colVisProp = "";
-};
-
-Export.prototype.generateExportList = function (config, style, range, colVisProp) {
-       this.cloneTableStyle = style;
-       this.config = config || {};
-       this.colVisProp = colVisProp;
-
-       var headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];
-       var body = this.bodyToExportRows(this.rowLookup(range));
-
-       return headers.concat(body);
-};
-
-Export.prototype.genereateTable = function (config, style, range, colVisProp) {
-       var list = this.generateExportList(config, style, range, colVisProp);
-
-       return this.genereateTableElement(list);
-};
-
-Export.prototype.rowLookup = function (range) {
-       var _this55 = this;
-
-       var rows = [];
-
-       if (typeof range == "function") {
-               range.call(this.table).forEach(function (row) {
-                       row = _this55.table.rowManager.findRow(row);
-
-                       if (row) {
-                               rows.push(row);
-                       }
-               });
-       } else {
-               switch (range) {
-                       case true:
-                       case "visible":
-                               rows = this.table.rowManager.getVisibleRows(true);
-                               break;
-
-                       case "all":
-                               rows = this.table.rowManager.rows;
-                               break;
-
-                       case "selected":
-                               rows = this.table.modules.selectRow.selectedRows;
-                               break;
-
-                       case "active":
-                       default:
-                               if (this.table.options.pagination) {
-                                       rows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);
-                               } else {
-                                       rows = this.table.rowManager.getDisplayRows();
-                               }
-               }
-       }
-
-       return Object.assign([], rows);
-};
-
-Export.prototype.generateColumnGroupHeaders = function () {
-       var _this56 = this;
-
-       var output = [];
-
-       var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
-
-       columns.forEach(function (column) {
-               var colData = _this56.processColumnGroup(column);
-
-               if (colData) {
-                       output.push(colData);
-               }
-       });
-
-       return output;
-};
-
-Export.prototype.processColumnGroup = function (column) {
-       var _this57 = this;
-
-       var subGroups = column.columns,
-           maxDepth = 0,
-           title = column.definition["title" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;
-
-       var groupData = {
-               title: title,
-               column: column,
-               depth: 1
-       };
-
-       if (subGroups.length) {
-               groupData.subGroups = [];
-               groupData.width = 0;
-
-               subGroups.forEach(function (subGroup) {
-                       var subGroupData = _this57.processColumnGroup(subGroup);
-
-                       if (subGroupData) {
-                               groupData.width += subGroupData.width;
-                               groupData.subGroups.push(subGroupData);
-
-                               if (subGroupData.depth > maxDepth) {
-                                       maxDepth = subGroupData.depth;
-                               }
-                       }
-               });
-
-               groupData.depth += maxDepth;
-
-               if (!groupData.width) {
-                       return false;
-               }
-       } else {
-               if (this.columnVisCheck(column)) {
-                       groupData.width = 1;
-               } else {
-                       return false;
-               }
-       }
-
-       return groupData;
-};
-
-Export.prototype.columnVisCheck = function (column) {
-       return column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);
-};
-
-Export.prototype.headersToExportRows = function (columns) {
-       var headers = [],
-           headerDepth = 0,
-           exportRows = [];
-
-       function parseColumnGroup(column, level) {
-
-               var depth = headerDepth - level;
-
-               if (typeof headers[level] === "undefined") {
-                       headers[level] = [];
-               }
-
-               column.height = column.subGroups ? 1 : depth - column.depth + 1;
-
-               headers[level].push(column);
-
-               if (column.height > 1) {
-                       for (var _i10 = 1; _i10 < column.height; _i10++) {
-
-                               if (typeof headers[level + _i10] === "undefined") {
-                                       headers[level + _i10] = [];
-                               }
-
-                               headers[level + _i10].push(false);
-                       }
-               }
-
-               if (column.width > 1) {
-                       for (var _i11 = 1; _i11 < column.width; _i11++) {
-                               headers[level].push(false);
-                       }
-               }
-
-               if (column.subGroups) {
-                       column.subGroups.forEach(function (subGroup) {
-                               parseColumnGroup(subGroup, level + 1);
-                       });
-               }
-       }
-
-       //calculate maximum header debth
-       columns.forEach(function (column) {
-               if (column.depth > headerDepth) {
-                       headerDepth = column.depth;
-               }
-       });
-
-       columns.forEach(function (column) {
-               parseColumnGroup(column, 0);
-       });
-
-       headers.forEach(function (header) {
-               var columns = [];
-
-               header.forEach(function (col) {
-                       if (col) {
-                               columns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));
-                       } else {
-                               columns.push(null);
-                       }
-               });
-
-               exportRows.push(new ExportRow("header", columns));
-       });
-
-       return exportRows;
-};
-
-Export.prototype.bodyToExportRows = function (rows) {
-       var _this58 = this;
-
-       var columns = [];
-       var exportRows = [];
-
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               if (_this58.columnVisCheck(column)) {
-                       columns.push(column.getComponent());
-               }
-       });
-
-       if (this.config.columnCalcs !== false && this.table.modExists("columnCalcs")) {
-               if (this.table.modules.columnCalcs.topInitialized) {
-                       rows.unshift(this.table.modules.columnCalcs.topRow);
-               }
-
-               if (this.table.modules.columnCalcs.botInitialized) {
-                       rows.push(this.table.modules.columnCalcs.botRow);
-               }
-       }
-
-       rows = rows.filter(function (row) {
-               switch (row.type) {
-                       case "group":
-                               return _this58.config.rowGroups !== false;
-                               break;
-
-                       case "calc":
-                               return _this58.config.columnCalcs !== false;
-                               break;
-
-                       case "row":
-                               return !(_this58.table.options.dataTree && _this58.config.dataTree === false && row.modules.dataTree.parent);
-                               break;
-               }
-
-               return true;
-       });
-
-       rows.forEach(function (row, i) {
-               var rowData = row.getData(_this58.colVisProp);
-               var exportCols = [];
-               var indent = 0;
-
-               switch (row.type) {
-                       case "group":
-                               indent = row.level;
-                               exportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));
-                               break;
-
-                       case "calc":
-                       case "row":
-                               columns.forEach(function (col) {
-                                       exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));
-                               });
-
-                               if (_this58.table.options.dataTree && _this58.config.dataTree !== false) {
-                                       indent = row.modules.dataTree.index;
-                               }
-                               break;
-               }
-
-               exportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));
-       });
-
-       return exportRows;
-};
-
-Export.prototype.genereateTableElement = function (list) {
-       var _this59 = this;
-
-       var table = document.createElement("table"),
-           headerEl = document.createElement("thead"),
-           bodyEl = document.createElement("tbody"),
-           styles = this.lookupTableStyles(),
-           rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],
-           setup = {};
-
-       setup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;
-
-       if (this.table.options.dataTree && this.config.dataTree !== false && this.table.modExists("columnCalcs")) {
-               setup.treeElementField = this.table.modules.dataTree.elementField;
-       }
-
-       //assign group header formatter
-       setup.groupHeader = this.table.options["groupHeader" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];
-
-       if (setup.groupHeader && !Array.isArray(setup.groupHeader)) {
-               setup.groupHeader = [setup.groupHeader];
-       }
-
-       table.classList.add("tabulator-print-table");
-
-       this.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-
-       if (list.length > 1000) {
-               console.warn("It may take a long time to render an HTML table with more than 1000 rows");
-       }
-
-       list.forEach(function (row, i) {
-               switch (row.type) {
-                       case "header":
-                               headerEl.appendChild(_this59.genereateHeaderElement(row, setup, styles));
-                               break;
-
-                       case "group":
-                               bodyEl.appendChild(_this59.genereateGroupElement(row, setup, styles));
-                               break;
-
-                       case "calc":
-                               bodyEl.appendChild(_this59.genereateCalcElement(row, setup, styles));
-                               break;
-
-                       case "row":
-                               var rowEl = _this59.genereateRowElement(row, setup, styles);
-                               _this59.mapElementStyles(i % 2 && styles.evenRow ? styles.evenRow : styles.oddRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-                               bodyEl.appendChild(rowEl);
-                               break;
-               }
-       });
-
-       if (headerEl.innerHTML) {
-               table.appendChild(headerEl);
-       }
-
-       table.appendChild(bodyEl);
-
-       this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]);
-       return table;
-};
-
-Export.prototype.lookupTableStyles = function () {
-       var styles = {};
-
-       //lookup row styles
-       if (this.cloneTableStyle && window.getComputedStyle) {
-               styles.oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
-               styles.evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
-               styles.calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
-               styles.firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
-               styles.firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
-
-               if (styles.firstRow) {
-                       styles.styleCells = styles.firstRow.getElementsByClassName("tabulator-cell");
-                       styles.firstCell = styles.styleCells[0];
-                       styles.lastCell = styles.styleCells[styles.styleCells.length - 1];
-               }
-       }
-
-       return styles;
-};
-
-Export.prototype.genereateHeaderElement = function (row, setup, styles) {
-       var _this60 = this;
-
-       var rowEl = document.createElement("tr");
-
-       row.columns.forEach(function (column) {
-               if (column) {
-                       var cellEl = document.createElement("th");
-                       var classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(" ") : [];
-
-                       cellEl.colSpan = column.width;
-                       cellEl.rowSpan = column.height;
-
-                       cellEl.innerHTML = column.value;
-
-                       if (_this60.cloneTableStyle) {
-                               cellEl.style.boxSizing = "border-box";
-                       }
-
-                       classNames.forEach(function (className) {
-                               cellEl.classList.add(className);
-                       });
-
-                       _this60.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-                       _this60.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-
-                       if (column.component._column.visible) {
-                               _this60.mapElementStyles(column.component.getElement(), cellEl, ["width"]);
-                       } else {
-                               if (column.component._column.definition.width) {
-                                       cellEl.style.width = column.component._column.definition.width + "px";
-                               }
-                       }
-
-                       if (column.component._column.parent) {
-                               _this60.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]);
-                       }
-
-                       rowEl.appendChild(cellEl);
-               }
-       });
-
-       return rowEl;
-};
-
-Export.prototype.genereateGroupElement = function (row, setup, styles) {
-
-       var rowEl = document.createElement("tr"),
-           cellEl = document.createElement("td"),
-           group = row.columns[0];
-
-       rowEl.classList.add("tabulator-print-table-row");
-
-       if (setup.groupHeader && setup.groupHeader[row.indent]) {
-               group.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
-       } else {
-               if (setup.groupHeader === false) {
-                       group.value = group.value;
-               } else {
-                       group.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
-               }
-       }
-
-       cellEl.colSpan = group.width;
-       cellEl.innerHTML = group.value;
-
-       rowEl.classList.add("tabulator-print-table-group");
-       rowEl.classList.add("tabulator-group-level-" + row.indent);
-
-       if (group.component.isVisible()) {
-               rowEl.classList.add("tabulator-group-visible");
-       }
-
-       this.mapElementStyles(styles.firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-       this.mapElementStyles(styles.firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-
-       rowEl.appendChild(cellEl);
-
-       return rowEl;
-};
-
-Export.prototype.genereateCalcElement = function (row, setup, styles) {
-       var rowEl = this.genereateRowElement(row, setup, styles);
-
-       rowEl.classList.add("tabulator-print-table-calcs");
-       this.mapElementStyles(styles.calcRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-
-       return rowEl;
-};
-
-Export.prototype.genereateRowElement = function (row, setup, styles) {
-       var _this61 = this;
-
-       var rowEl = document.createElement("tr");
-
-       rowEl.classList.add("tabulator-print-table-row");
-
-       row.columns.forEach(function (col) {
-
-               if (col) {
-                       var cellEl = document.createElement("td"),
-                           column = col.component._column,
-                           value = col.value;
-
-                       var cellWrapper = {
-                               modules: {},
-                               getValue: function getValue() {
-                                       return value;
-                               },
-                               getField: function getField() {
-                                       return column.definition.field;
-                               },
-                               getElement: function getElement() {
-                                       return cellEl;
-                               },
-                               getColumn: function getColumn() {
-                                       return column.getComponent();
-                               },
-                               getData: function getData() {
-                                       return row.component.getData();
-                               },
-                               getRow: function getRow() {
-                                       return row.component;
-                               },
-                               getComponent: function getComponent() {
-                                       return cellWrapper;
-                               },
-                               column: column
-                       };
-
-                       var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : [];
-
-                       classNames.forEach(function (className) {
-                               cellEl.classList.add(className);
-                       });
-
-                       if (_this61.table.modExists("format") && _this61.config.formatCells !== false) {
-                               value = _this61.table.modules.format.formatExportValue(cellWrapper, _this61.colVisProp);
-                       } else {
-                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                                       case "object":
-                                               value = JSON.stringify(value);
-                                               break;
-
-                                       case "undefined":
-                                       case "null":
-                                               value = "";
-                                               break;
-
-                                       default:
-                                               value = value;
-                               }
-                       }
-
-                       if (value instanceof Node) {
-                               cellEl.appendChild(value);
-                       } else {
-                               cellEl.innerHTML = value;
-                       }
-
-                       if (styles.firstCell) {
-                               _this61.mapElementStyles(styles.firstCell, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
-
-                               if (column.definition.align) {
-                                       cellEl.style.textAlign = column.definition.align;
-                               }
-                       }
-
-                       if (_this61.table.options.dataTree && _this61.config.dataTree !== false) {
-                               if (setup.treeElementField && setup.treeElementField == column.field || !setup.treeElementField && i == 0) {
-                                       if (row.component._row.modules.dataTree.controlEl) {
-                                               cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);
-                                       }
-                                       if (row.component._row.modules.dataTree.branchEl) {
-                                               cellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);
-                                       }
-                               }
-                       }
-
-                       rowEl.appendChild(cellEl);
-
-                       if (cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback) {
-                               cellWrapper.modules.format.renderedCallback();
-                       }
-
-                       if (setup.rowFormatter && _this61.config.formatCells !== false) {
-                               setup.rowFormatter(row.component);
-                       }
-               }
-       });
-
-       return rowEl;
-};
-
-Export.prototype.genereateHTMLTable = function (list) {
-       var holder = document.createElement("div");
-
-       holder.appendChild(this.genereateTableElement(list));
-
-       return holder.innerHTML;
-};
-
-Export.prototype.getHtml = function (visible, style, config, colVisProp) {
-       var list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput");
-
-       return this.genereateHTMLTable(list);
-};
-
-Export.prototype.mapElementStyles = function (from, to, props) {
-       if (this.cloneTableStyle && from && to) {
-
-               var lookup = {
-                       "background-color": "backgroundColor",
-                       "color": "fontColor",
-                       "width": "width",
-                       "font-weight": "fontWeight",
-                       "font-family": "fontFamily",
-                       "font-size": "fontSize",
-                       "text-align": "textAlign",
-                       "border-top": "borderTop",
-                       "border-left": "borderLeft",
-                       "border-right": "borderRight",
-                       "border-bottom": "borderBottom",
-                       "padding-top": "paddingTop",
-                       "padding-left": "paddingLeft",
-                       "padding-right": "paddingRight",
-                       "padding-bottom": "paddingBottom"
-               };
-
-               if (window.getComputedStyle) {
-                       var fromStyle = window.getComputedStyle(from);
-
-                       props.forEach(function (prop) {
-                               to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
-                       });
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("export", Export);
-
-var Filter = function Filter(table) {
-
-       this.table = table; //hold Tabulator object
-
-       this.filterList = []; //hold filter list
-       this.headerFilters = {}; //hold column filters
-       this.headerFilterColumns = []; //hold columns that use header filters
-
-       this.prevHeaderFilterChangeCheck = "";
-       this.prevHeaderFilterChangeCheck = "{}";
-
-       this.changed = false; //has filtering changed since last render
-};
-
-//initialize column header filter
-Filter.prototype.initializeColumn = function (column, value) {
-       var self = this,
-           field = column.getField(),
-           params;
-
-       //handle successfull value change
-       function success(value) {
-               var filterType = column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text" || column.modules.filter.tagType == "textarea" ? "partial" : "match",
-                   type = "",
-                   filterChangeCheck = "",
-                   filterFunc;
-
-               if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
-
-                       column.modules.filter.prevSuccess = value;
-
-                       if (!column.modules.filter.emptyFunc(value)) {
-                               column.modules.filter.value = value;
-
-                               switch (_typeof(column.definition.headerFilterFunc)) {
-                                       case "string":
-                                               if (self.filters[column.definition.headerFilterFunc]) {
-                                                       type = column.definition.headerFilterFunc;
-                                                       filterFunc = function filterFunc(data) {
-                                                               var params = column.definition.headerFilterFuncParams || {};
-                                                               var fieldVal = column.getFieldValue(data);
-
-                                                               params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                               return self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
-                                                       };
-                                               } else {
-                                                       console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
-                                               }
-                                               break;
-
-                                       case "function":
-                                               filterFunc = function filterFunc(data) {
-                                                       var params = column.definition.headerFilterFuncParams || {};
-                                                       var fieldVal = column.getFieldValue(data);
-
-                                                       params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                       return column.definition.headerFilterFunc(value, fieldVal, data, params);
-                                               };
-
-                                               type = filterFunc;
-                                               break;
-                               }
-
-                               if (!filterFunc) {
-                                       switch (filterType) {
-                                               case "partial":
-                                                       filterFunc = function filterFunc(data) {
-                                                               var colVal = column.getFieldValue(data);
-
-                                                               if (typeof colVal !== 'undefined' && colVal !== null) {
-                                                                       return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
-                                                               } else {
-                                                                       return false;
-                                                               }
-                                                       };
-                                                       type = "like";
-                                                       break;
-
-                                               default:
-                                                       filterFunc = function filterFunc(data) {
-                                                               return column.getFieldValue(data) == value;
-                                                       };
-                                                       type = "=";
-                                       }
-                               }
-
-                               self.headerFilters[field] = { value: value, func: filterFunc, type: type, params: params || {} };
-                       } else {
-                               delete self.headerFilters[field];
-                       }
-
-                       filterChangeCheck = JSON.stringify(self.headerFilters);
-
-                       if (self.prevHeaderFilterChangeCheck !== filterChangeCheck) {
-                               self.prevHeaderFilterChangeCheck = filterChangeCheck;
-
-                               self.changed = true;
-                               self.table.rowManager.filterRefresh();
-                       }
-               }
-
-               return true;
-       }
-
-       column.modules.filter = {
-               success: success,
-               attrType: false,
-               tagType: false,
-               emptyFunc: false
-       };
-
-       this.generateHeaderFilterElement(column);
-};
-
-Filter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {
-       var _this62 = this;
-
-       var self = this,
-           success = column.modules.filter.success,
-           field = column.getField(),
-           filterElement,
-           editor,
-           editorElement,
-           cellWrapper,
-           typingTimer,
-           searchTrigger,
-           params;
-
-       //handle aborted edit
-       function cancel() {}
-
-       if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
-               column.contentElement.removeChild(column.modules.filter.headerElement.parentNode);
-       }
-
-       if (field) {
-
-               //set empty value function
-               column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {
-                       return !value && value !== "0";
-               };
-
-               filterElement = document.createElement("div");
-               filterElement.classList.add("tabulator-header-filter");
-
-               //set column editor
-               switch (_typeof(column.definition.headerFilter)) {
-                       case "string":
-                               if (self.table.modules.edit.editors[column.definition.headerFilter]) {
-                                       editor = self.table.modules.edit.editors[column.definition.headerFilter];
-
-                                       if ((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                               column.modules.filter.emptyFunc = function (value) {
-                                                       return value !== true && value !== false;
-                                               };
-                                       }
-                               } else {
-                                       console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
-                               }
-                               break;
-
-                       case "function":
-                               editor = column.definition.headerFilter;
-                               break;
-
-                       case "boolean":
-                               if (column.modules.edit && column.modules.edit.editor) {
-                                       editor = column.modules.edit.editor;
-                               } else {
-                                       if (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {
-                                               editor = self.table.modules.edit.editors[column.definition.formatter];
-
-                                               if ((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                                       column.modules.filter.emptyFunc = function (value) {
-                                                               return value !== true && value !== false;
-                                                       };
-                                               }
-                                       } else {
-                                               editor = self.table.modules.edit.editors["input"];
-                                       }
-                               }
-                               break;
-               }
-
-               if (editor) {
-
-                       cellWrapper = {
-                               getValue: function getValue() {
-                                       return typeof initialValue !== "undefined" ? initialValue : "";
-                               },
-                               getField: function getField() {
-                                       return column.definition.field;
-                               },
-                               getElement: function getElement() {
-                                       return filterElement;
-                               },
-                               getColumn: function getColumn() {
-                                       return column.getComponent();
-                               },
-                               getRow: function getRow() {
-                                       return {
-                                               normalizeHeight: function normalizeHeight() {}
-                                       };
-                               }
-                       };
-
-                       params = column.definition.headerFilterParams || {};
-
-                       params = typeof params === "function" ? params.call(self.table) : params;
-
-                       editorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);
-
-                       if (!editorElement) {
-                               console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
-                               return;
-                       }
-
-                       if (!(editorElement instanceof Node)) {
-                               console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement);
-                               return;
-                       }
-
-                       //set Placeholder Text
-                       if (field) {
-                               self.table.modules.localize.bind("headerFilters|columns|" + column.definition.field, function (value) {
-                                       editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.table.modules.localize.getText("headerFilters|default"));
-                               });
-                       } else {
-                               self.table.modules.localize.bind("headerFilters|default", function (value) {
-                                       editorElement.setAttribute("placeholder", typeof self.column.definition.headerFilterPlaceholder !== "undefined" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);
-                               });
-                       }
-
-                       //focus on element on click
-                       editorElement.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               editorElement.focus();
-                       });
-
-                       editorElement.addEventListener("focus", function (e) {
-                               var left = _this62.table.columnManager.element.scrollLeft;
-
-                               if (left !== _this62.table.rowManager.element.scrollLeft) {
-                                       _this62.table.rowManager.scrollHorizontal(left);
-                                       _this62.table.columnManager.scrollHorizontal(left);
-                               }
-                       });
-
-                       //live update filters as user types
-                       typingTimer = false;
-
-                       searchTrigger = function searchTrigger(e) {
-                               if (typingTimer) {
-                                       clearTimeout(typingTimer);
-                               }
-
-                               typingTimer = setTimeout(function () {
-                                       success(editorElement.value);
-                               }, self.table.options.headerFilterLiveFilterDelay);
-                       };
-
-                       column.modules.filter.headerElement = editorElement;
-                       column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "";
-                       column.modules.filter.tagType = editorElement.tagName.toLowerCase();
-
-                       if (column.definition.headerFilterLiveFilter !== false) {
-
-                               if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
-                                       editorElement.addEventListener("keyup", searchTrigger);
-                                       editorElement.addEventListener("search", searchTrigger);
-
-                                       //update number filtered columns on change
-                                       if (column.modules.filter.attrType == "number") {
-                                               editorElement.addEventListener("change", function (e) {
-                                                       success(editorElement.value);
-                                               });
-                                       }
-
-                                       //change text inputs to search inputs to allow for clearing of field
-                                       if (column.modules.filter.attrType == "text" && this.table.browser !== "ie") {
-                                               editorElement.setAttribute("type", "search");
-                                               // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
-                                       }
-                               }
-
-                               //prevent input and select elements from propegating click to column sorters etc
-                               if (column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea") {
-                                       editorElement.addEventListener("mousedown", function (e) {
-                                               e.stopPropagation();
-                                       });
-                               }
-                       }
-
-                       filterElement.appendChild(editorElement);
-
-                       column.contentElement.appendChild(filterElement);
-
-                       if (!reinitialize) {
-                               self.headerFilterColumns.push(column);
-                       }
-               }
-       } else {
-               console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
-       }
-};
-
-//hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-Filter.prototype.hideHeaderFilterElements = function () {
-       this.headerFilterColumns.forEach(function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       column.modules.filter.headerElement.style.display = 'none';
-               }
-       });
-};
-
-//show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-Filter.prototype.showHeaderFilterElements = function () {
-       this.headerFilterColumns.forEach(function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       column.modules.filter.headerElement.style.display = '';
-               }
-       });
-};
-
-//programatically set focus of header filter
-Filter.prototype.setHeaderFilterFocus = function (column) {
-       if (column.modules.filter && column.modules.filter.headerElement) {
-               column.modules.filter.headerElement.focus();
-       } else {
-               console.warn("Column Filter Focus Error - No header filter set on column:", column.getField());
-       }
-};
-
-//programmatically get value of header filter
-Filter.prototype.getHeaderFilterValue = function (column) {
-       if (column.modules.filter && column.modules.filter.headerElement) {
-               return column.modules.filter.headerElement.value;
-       } else {
-               console.warn("Column Filter Error - No header filter set on column:", column.getField());
-       }
-};
-
-//programatically set value of header filter
-Filter.prototype.setHeaderFilterValue = function (column, value) {
-       if (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       this.generateHeaderFilterElement(column, value, true);
-                       column.modules.filter.success(value);
-               } else {
-                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
-               }
-       }
-};
-
-Filter.prototype.reloadHeaderFilter = function (column) {
-       if (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       this.generateHeaderFilterElement(column, column.modules.filter.value, true);
-               } else {
-                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
-               }
-       }
-};
-
-//check if the filters has changed since last use
-Filter.prototype.hasChanged = function () {
-       var changed = this.changed;
-       this.changed = false;
-       return changed;
-};
-
-//set standard filters
-Filter.prototype.setFilter = function (field, type, value, params) {
-       var self = this;
-
-       self.filterList = [];
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value, params: params }];
-       }
-
-       self.addFilter(field);
-};
-
-//add filter to array
-Filter.prototype.addFilter = function (field, type, value, params) {
-       var self = this;
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value, params: params }];
-       }
-
-       field.forEach(function (filter) {
-
-               filter = self.findFilter(filter);
-
-               if (filter) {
-                       self.filterList.push(filter);
-
-                       self.changed = true;
-               }
-       });
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-               this.table.modules.persistence.save("filter");
-       }
-};
-
-Filter.prototype.findFilter = function (filter) {
-       var self = this,
-           column;
-
-       if (Array.isArray(filter)) {
-               return this.findSubFilters(filter);
-       }
-
-       var filterFunc = false;
-
-       if (typeof filter.field == "function") {
-               filterFunc = function filterFunc(data) {
-                       return filter.field(data, filter.type || {}); // pass params to custom filter function
-               };
-       } else {
-
-               if (self.filters[filter.type]) {
-
-                       column = self.table.columnManager.getColumnByField(filter.field);
-
-                       if (column) {
-                               filterFunc = function filterFunc(data) {
-                                       return self.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});
-                               };
-                       } else {
-                               filterFunc = function filterFunc(data) {
-                                       return self.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});
-                               };
-                       }
-               } else {
-                       console.warn("Filter Error - No such filter type found, ignoring: ", filter.type);
-               }
-       }
-
-       filter.func = filterFunc;
-
-       return filter.func ? filter : false;
-};
-
-Filter.prototype.findSubFilters = function (filters) {
-       var self = this,
-           output = [];
-
-       filters.forEach(function (filter) {
-               filter = self.findFilter(filter);
-
-               if (filter) {
-                       output.push(filter);
-               }
-       });
-
-       return output.length ? output : false;
-};
-
-//get all filters
-Filter.prototype.getFilters = function (all, ajax) {
-       var output = [];
-
-       if (all) {
-               output = this.getHeaderFilters();
-       }
-
-       if (ajax) {
-               output.forEach(function (item) {
-                       if (typeof item.type == "function") {
-                               item.type = "function";
-                       }
-               });
-       }
-
-       output = output.concat(this.filtersToArray(this.filterList, ajax));
-
-       return output;
-};
-
-//filter to Object
-Filter.prototype.filtersToArray = function (filterList, ajax) {
-       var _this63 = this;
-
-       var output = [];
-
-       filterList.forEach(function (filter) {
-               var item;
-
-               if (Array.isArray(filter)) {
-                       output.push(_this63.filtersToArray(filter, ajax));
-               } else {
-                       item = { field: filter.field, type: filter.type, value: filter.value };
-
-                       if (ajax) {
-                               if (typeof item.type == "function") {
-                                       item.type = "function";
-                               }
-                       }
-
-                       output.push(item);
-               }
-       });
-
-       return output;
-};
-
-//get all filters
-Filter.prototype.getHeaderFilters = function () {
-       var self = this,
-           output = [];
-
-       for (var key in this.headerFilters) {
-               output.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });
-       }
-
-       return output;
-};
-
-//remove filter from array
-Filter.prototype.removeFilter = function (field, type, value) {
-       var self = this;
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value }];
-       }
-
-       field.forEach(function (filter) {
-               var index = -1;
-
-               if (_typeof(filter.field) == "object") {
-                       index = self.filterList.findIndex(function (element) {
-                               return filter === element;
-                       });
-               } else {
-                       index = self.filterList.findIndex(function (element) {
-                               return filter.field === element.field && filter.type === element.type && filter.value === element.value;
-                       });
-               }
-
-               if (index > -1) {
-                       self.filterList.splice(index, 1);
-                       self.changed = true;
-               } else {
-                       console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
-               }
-       });
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-               this.table.modules.persistence.save("filter");
-       }
-};
-
-//clear filters
-Filter.prototype.clearFilter = function (all) {
-       this.filterList = [];
-
-       if (all) {
-               this.clearHeaderFilter();
-       }
-
-       this.changed = true;
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-               this.table.modules.persistence.save("filter");
-       }
-};
-
-//clear header filters
-Filter.prototype.clearHeaderFilter = function () {
-       var self = this;
-
-       this.headerFilters = {};
-       self.prevHeaderFilterChangeCheck = "{}";
-
-       this.headerFilterColumns.forEach(function (column) {
-               column.modules.filter.value = null;
-               column.modules.filter.prevSuccess = undefined;
-               self.reloadHeaderFilter(column);
-       });
-
-       this.changed = true;
-};
-
-//search data and return matching rows
-Filter.prototype.search = function (searchType, field, type, value) {
-       var self = this,
-           activeRows = [],
-           filterList = [];
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value }];
-       }
-
-       field.forEach(function (filter) {
-               filter = self.findFilter(filter);
-
-               if (filter) {
-                       filterList.push(filter);
-               }
-       });
-
-       this.table.rowManager.rows.forEach(function (row) {
-               var match = true;
-
-               filterList.forEach(function (filter) {
-                       if (!self.filterRecurse(filter, row.getData())) {
-                               match = false;
-                       }
-               });
-
-               if (match) {
-                       activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent());
-               }
-       });
-
-       return activeRows;
-};
-
-//filter row array
-Filter.prototype.filter = function (rowList, filters) {
-       var self = this,
-           activeRows = [],
-           activeRowComponents = [];
-
-       if (self.table.options.dataFiltering) {
-               self.table.options.dataFiltering.call(self.table, self.getFilters());
-       }
-
-       if (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {
-
-               rowList.forEach(function (row) {
-                       if (self.filterRow(row)) {
-                               activeRows.push(row);
-                       }
-               });
-       } else {
-               activeRows = rowList.slice(0);
-       }
-
-       if (self.table.options.dataFiltered) {
-
-               activeRows.forEach(function (row) {
-                       activeRowComponents.push(row.getComponent());
-               });
-
-               self.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);
-       }
-
-       return activeRows;
-};
-
-//filter individual row
-Filter.prototype.filterRow = function (row, filters) {
-       var self = this,
-           match = true,
-           data = row.getData();
-
-       self.filterList.forEach(function (filter) {
-               if (!self.filterRecurse(filter, data)) {
-                       match = false;
-               }
-       });
-
-       for (var field in self.headerFilters) {
-               if (!self.headerFilters[field].func(data)) {
-                       match = false;
-               }
-       }
-
-       return match;
-};
-
-Filter.prototype.filterRecurse = function (filter, data) {
-       var self = this,
-           match = false;
-
-       if (Array.isArray(filter)) {
-               filter.forEach(function (subFilter) {
-                       if (self.filterRecurse(subFilter, data)) {
-                               match = true;
-                       }
-               });
-       } else {
-               match = filter.func(data);
-       }
-
-       return match;
-};
-
-//list of available filters
-Filter.prototype.filters = {
-
-       //equal to
-       "=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal == filterVal ? true : false;
-       },
-
-       //less than
-       "<": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal < filterVal ? true : false;
-       },
-
-       //less than or equal to
-       "<=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal <= filterVal ? true : false;
-       },
-
-       //greater than
-       ">": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal > filterVal ? true : false;
-       },
-
-       //greater than or equal to
-       ">=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal >= filterVal ? true : false;
-       },
-
-       //not equal to
-       "!=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal != filterVal ? true : false;
-       },
-
-       "regex": function regex(filterVal, rowVal, rowData, filterParams) {
-
-               if (typeof filterVal == "string") {
-                       filterVal = new RegExp(filterVal);
-               }
-
-               return filterVal.test(rowVal);
-       },
-
-       //contains the string
-       "like": function like(filterVal, rowVal, rowData, filterParams) {
-               if (filterVal === null || typeof filterVal === "undefined") {
-                       return rowVal === filterVal ? true : false;
-               } else {
-                       if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                               return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;
-                       } else {
-                               return false;
-                       }
-               }
-       },
-
-       //contains the keywords
-       "keywords": function keywords(filterVal, rowVal, rowData, filterParams) {
-               var keywords = filterVal.toLowerCase().split(typeof filterParams.separator === "undefined" ? " " : filterParams.separator),
-                   value = String(rowVal === null || typeof rowVal === "undefined" ? "" : rowVal).toLowerCase(),
-                   matches = [];
-
-               keywords.forEach(function (keyword) {
-                       if (value.includes(keyword)) {
-                               matches.push(true);
-                       }
-               });
-
-               return filterParams.matchAll ? matches.length === keywords.length : !!matches.length;
-       },
-
-       //starts with the string
-       "starts": function starts(filterVal, rowVal, rowData, filterParams) {
-               if (filterVal === null || typeof filterVal === "undefined") {
-                       return rowVal === filterVal ? true : false;
-               } else {
-                       if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                               return String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());
-                       } else {
-                               return false;
-                       }
-               }
-       },
-
-       //ends with the string
-       "ends": function ends(filterVal, rowVal, rowData, filterParams) {
-               if (filterVal === null || typeof filterVal === "undefined") {
-                       return rowVal === filterVal ? true : false;
-               } else {
-                       if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                               return String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());
-                       } else {
-                               return false;
-                       }
-               }
-       },
-
-       //in array
-       "in": function _in(filterVal, rowVal, rowData, filterParams) {
-               if (Array.isArray(filterVal)) {
-                       return filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;
-               } else {
-                       console.warn("Filter Error - filter value is not an array:", filterVal);
-                       return false;
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("filter", Filter);
-
-var Format = function Format(table) {
-       this.table = table; //hold Tabulator object
-};
-
-//initialize column formatter
-Format.prototype.initializeColumn = function (column) {
-       column.modules.format = this.lookupFormatter(column, "");
-
-       if (typeof column.definition.formatterPrint !== "undefined") {
-               column.modules.format.print = this.lookupFormatter(column, "Print");
-       }
-
-       if (typeof column.definition.formatterClipboard !== "undefined") {
-               column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard");
-       }
-
-       if (typeof column.definition.formatterHtmlOutput !== "undefined") {
-               column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput");
-       }
-};
-
-Format.prototype.lookupFormatter = function (column, type) {
-       var config = { params: column.definition["formatter" + type + "Params"] || {} },
-           formatter = column.definition["formatter" + type];
-
-       //set column formatter
-       switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
-               case "string":
-
-                       if (formatter === "tick") {
-                               formatter = "tickCross";
-
-                               if (typeof config.params.crossElement == "undefined") {
-                                       config.params.crossElement = false;
-                               }
-
-                               console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
-                       }
-
-                       if (this.formatters[formatter]) {
-                               config.formatter = this.formatters[formatter];
-                       } else {
-                               console.warn("Formatter Error - No such formatter found: ", formatter);
-                               config.formatter = this.formatters.plaintext;
-                       }
-                       break;
-
-               case "function":
-                       config.formatter = formatter;
-                       break;
-
-               default:
-                       config.formatter = this.formatters.plaintext;
-                       break;
-       }
-
-       return config;
-};
-
-Format.prototype.cellRendered = function (cell) {
-       if (cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered) {
-               cell.modules.format.renderedCallback();
-               cell.modules.format.rendered = true;
-       }
-};
-
-//return a formatted value for a cell
-Format.prototype.formatValue = function (cell) {
-       var component = cell.getComponent(),
-           params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
-
-       function onRendered(callback) {
-               if (!cell.modules.format) {
-                       cell.modules.format = {};
-               }
-
-               cell.modules.format.renderedCallback = callback;
-               cell.modules.format.rendered = false;
-       }
-
-       return cell.column.modules.format.formatter.call(this, component, params, onRendered);
-};
-
-Format.prototype.formatExportValue = function (cell, type) {
-       var formatter = cell.column.modules.format[type],
-           params;
-
-       if (formatter) {
-               var onRendered = function onRendered(callback) {
-                       if (!cell.modules.format) {
-                               cell.modules.format = {};
-                       }
-
-                       cell.modules.format.renderedCallback = callback;
-                       cell.modules.format.rendered = false;
-               };
-
-               params = typeof formatter.params === "function" ? formatter.params(component) : formatter.params;
-
-               return formatter.formatter.call(this, cell.getComponent(), params, onRendered);
-       } else {
-               return this.formatValue(cell);
-       }
-};
-
-Format.prototype.sanitizeHTML = function (value) {
-       if (value) {
-               var entityMap = {
-                       '&': '&amp;',
-                       '<': '&lt;',
-                       '>': '&gt;',
-                       '"': '&quot;',
-                       "'": '&#39;',
-                       '/': '&#x2F;',
-                       '`': '&#x60;',
-                       '=': '&#x3D;'
-               };
-
-               return String(value).replace(/[&<>"'`=\/]/g, function (s) {
-                       return entityMap[s];
-               });
-       } else {
-               return value;
-       }
-};
-
-Format.prototype.emptyToSpace = function (value) {
-       return value === null || typeof value === "undefined" || value === "" ? "&nbsp;" : value;
-};
-
-//get formatter for cell
-Format.prototype.getFormatter = function (formatter) {
-       var formatter;
-
-       switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
-               case "string":
-                       if (this.formatters[formatter]) {
-                               formatter = this.formatters[formatter];
-                       } else {
-                               console.warn("Formatter Error - No such formatter found: ", formatter);
-                               formatter = this.formatters.plaintext;
-                       }
-                       break;
-
-               case "function":
-                       formatter = formatter;
-                       break;
-
-               default:
-                       formatter = this.formatters.plaintext;
-                       break;
-       }
-
-       return formatter;
-};
-
-//default data formatters
-Format.prototype.formatters = {
-       //plain text value
-       plaintext: function plaintext(cell, formatterParams, onRendered) {
-               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-       },
-
-       //html text value
-       html: function html(cell, formatterParams, onRendered) {
-               return cell.getValue();
-       },
-
-       //multiline text area
-       textarea: function textarea(cell, formatterParams, onRendered) {
-               cell.getElement().style.whiteSpace = "pre-wrap";
-               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-       },
-
-       //currency formatting
-       money: function money(cell, formatterParams, onRendered) {
-               var floatVal = parseFloat(cell.getValue()),
-                   number,
-                   integer,
-                   decimal,
-                   rgx;
-
-               var decimalSym = formatterParams.decimal || ".";
-               var thousandSym = formatterParams.thousand || ",";
-               var symbol = formatterParams.symbol || "";
-               var after = !!formatterParams.symbolAfter;
-               var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
-
-               if (isNaN(floatVal)) {
-                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-               }
-
-               number = precision !== false ? floatVal.toFixed(precision) : floatVal;
-               number = String(number).split(".");
-
-               integer = number[0];
-               decimal = number.length > 1 ? decimalSym + number[1] : "";
-
-               rgx = /(\d+)(\d{3})/;
-
-               while (rgx.test(integer)) {
-                       integer = integer.replace(rgx, "$1" + thousandSym + "$2");
-               }
-
-               return after ? integer + decimal + symbol : symbol + integer + decimal;
-       },
-
-       //clickable anchor tag
-       link: function link(cell, formatterParams, onRendered) {
-               var value = cell.getValue(),
-                   urlPrefix = formatterParams.urlPrefix || "",
-                   download = formatterParams.download,
-                   label = value,
-                   el = document.createElement("a"),
-                   data;
-
-               if (formatterParams.labelField) {
-                       data = cell.getData();
-                       label = data[formatterParams.labelField];
-               }
-
-               if (formatterParams.label) {
-                       switch (_typeof(formatterParams.label)) {
-                               case "string":
-                                       label = formatterParams.label;
-                                       break;
-
-                               case "function":
-                                       label = formatterParams.label(cell);
-                                       break;
-                       }
-               }
-
-               if (label) {
-                       if (formatterParams.urlField) {
-                               data = cell.getData();
-                               value = data[formatterParams.urlField];
-                       }
-
-                       if (formatterParams.url) {
-                               switch (_typeof(formatterParams.url)) {
-                                       case "string":
-                                               value = formatterParams.url;
-                                               break;
-
-                                       case "function":
-                                               value = formatterParams.url(cell);
-                                               break;
-                               }
-                       }
-
-                       el.setAttribute("href", urlPrefix + value);
-
-                       if (formatterParams.target) {
-                               el.setAttribute("target", formatterParams.target);
-                       }
-
-                       if (formatterParams.download) {
-
-                               if (typeof download == "function") {
-                                       download = download(cell);
-                               } else {
-                                       download = download === true ? "" : download;
-                               }
-
-                               el.setAttribute("download", download);
-                       }
-
-                       el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
-
-                       return el;
-               } else {
-                       return "&nbsp;";
-               }
-       },
-
-       //image element
-       image: function image(cell, formatterParams, onRendered) {
-               var el = document.createElement("img");
-               el.setAttribute("src", cell.getValue());
-
-               switch (_typeof(formatterParams.height)) {
-                       case "number":
-                               el.style.height = formatterParams.height + "px";
-                               break;
-
-                       case "string":
-                               el.style.height = formatterParams.height;
-                               break;
-               }
-
-               switch (_typeof(formatterParams.width)) {
-                       case "number":
-                               el.style.width = formatterParams.width + "px";
-                               break;
-
-                       case "string":
-                               el.style.width = formatterParams.width;
-                               break;
-               }
-
-               el.addEventListener("load", function () {
-                       cell.getRow().normalizeHeight();
-               });
-
-               return el;
-       },
-
-       //tick or cross
-       tickCross: function tickCross(cell, formatterParams, onRendered) {
-               var value = cell.getValue(),
-                   element = cell.getElement(),
-                   empty = formatterParams.allowEmpty,
-                   truthy = formatterParams.allowTruthy,
-                   tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
-                   cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-
-               if (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") {
-                       element.setAttribute("aria-checked", true);
-                       return tick || "";
-               } else {
-                       if (empty && (value === "null" || value === "" || value === null || typeof value === "undefined")) {
-                               element.setAttribute("aria-checked", "mixed");
-                               return "";
-                       } else {
-                               element.setAttribute("aria-checked", false);
-                               return cross || "";
-                       }
-               }
-       },
-
-       datetime: function datetime(cell, formatterParams, onRendered) {
-               var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-               var outputFormat = formatterParams.outputFormat || "DD/MM/YYYY hh:mm:ss";
-               var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-               var value = cell.getValue();
-
-               var newDatetime = moment(value, inputFormat);
-
-               if (newDatetime.isValid()) {
-                       return formatterParams.timezone ? newDatetime.tz(formatterParams.timezone).format(outputFormat) : newDatetime.format(outputFormat);
-               } else {
-
-                       if (invalid === true) {
-                               return value;
-                       } else if (typeof invalid === "function") {
-                               return invalid(value);
-                       } else {
-                               return invalid;
-                       }
-               }
-       },
-
-       datetimediff: function datetime(cell, formatterParams, onRendered) {
-               var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-               var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-               var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false;
-               var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : undefined;
-               var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false;
-               var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : moment();
-               var value = cell.getValue();
-
-               var newDatetime = moment(value, inputFormat);
-
-               if (newDatetime.isValid()) {
-                       if (humanize) {
-                               return moment.duration(newDatetime.diff(date)).humanize(suffix);
-                       } else {
-                               return newDatetime.diff(date, unit) + (suffix ? " " + suffix : "");
-                       }
-               } else {
-
-                       if (invalid === true) {
-                               return value;
-                       } else if (typeof invalid === "function") {
-                               return invalid(value);
-                       } else {
-                               return invalid;
-                       }
-               }
-       },
-
-       //select
-       lookup: function lookup(cell, formatterParams, onRendered) {
-               var value = cell.getValue();
-
-               if (typeof formatterParams[value] === "undefined") {
-                       console.warn('Missing display value for ' + value);
-                       return value;
-               }
-
-               return formatterParams[value];
-       },
-
-       //star rating
-       star: function star(cell, formatterParams, onRendered) {
-               var value = cell.getValue(),
-                   element = cell.getElement(),
-                   maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
-                   stars = document.createElement("span"),
-                   star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
-                   starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
-                   starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-
-               //style stars holder
-               stars.style.verticalAlign = "middle";
-
-               //style star
-               star.setAttribute("width", "14");
-               star.setAttribute("height", "14");
-               star.setAttribute("viewBox", "0 0 512 512");
-               star.setAttribute("xml:space", "preserve");
-               star.style.padding = "0 1px";
-
-               value = value && !isNaN(value) ? parseInt(value) : 0;
-
-               value = Math.max(0, Math.min(value, maxStars));
-
-               for (var i = 1; i <= maxStars; i++) {
-                       var nextStar = star.cloneNode(true);
-                       nextStar.innerHTML = i <= value ? starActive : starInactive;
-
-                       stars.appendChild(nextStar);
-               }
-
-               element.style.whiteSpace = "nowrap";
-               element.style.overflow = "hidden";
-               element.style.textOverflow = "ellipsis";
-
-               element.setAttribute("aria-label", value);
-
-               return stars;
-       },
-
-       traffic: function traffic(cell, formatterParams, onRendered) {
-               var value = this.sanitizeHTML(cell.getValue()) || 0,
-                   el = document.createElement("span"),
-                   max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                   min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                   colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"],
-                   color = "#666666",
-                   percent,
-                   percentValue;
-
-               if (isNaN(value) || typeof cell.getValue() === "undefined") {
-                       return;
-               }
-
-               el.classList.add("tabulator-traffic-light");
-
-               //make sure value is in range
-               percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-               percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-               //workout percentage
-               percent = (max - min) / 100;
-               percentValue = Math.round((percentValue - min) / percent);
-
-               //set color
-               switch (typeof colors === 'undefined' ? 'undefined' : _typeof(colors)) {
-                       case "string":
-                               color = colors;
-                               break;
-                       case "function":
-                               color = colors(value);
-                               break;
-                       case "object":
-                               if (Array.isArray(colors)) {
-                                       var unit = 100 / colors.length;
-                                       var index = Math.floor(percentValue / unit);
-
-                                       index = Math.min(index, colors.length - 1);
-                                       index = Math.max(index, 0);
-                                       color = colors[index];
-                                       break;
-                               }
-               }
-
-               el.style.backgroundColor = color;
-
-               return el;
-       },
-
-       //progress bar
-       progress: function progress(cell, formatterParams, onRendered) {
-               //progress bar
-               var value = this.sanitizeHTML(cell.getValue()) || 0,
-                   element = cell.getElement(),
-                   max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                   min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                   legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : "center",
-                   percent,
-                   percentValue,
-                   color,
-                   legend,
-                   legendColor,
-                   top,
-                   left,
-                   right,
-                   bottom;
-
-               //make sure value is in range
-               percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-               percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-               //workout percentage
-               percent = (max - min) / 100;
-               percentValue = Math.round((percentValue - min) / percent);
-
-               //set bar color
-               switch (_typeof(formatterParams.color)) {
-                       case "string":
-                               color = formatterParams.color;
-                               break;
-                       case "function":
-                               color = formatterParams.color(value);
-                               break;
-                       case "object":
-                               if (Array.isArray(formatterParams.color)) {
-                                       var unit = 100 / formatterParams.color.length;
-                                       var index = Math.floor(percentValue / unit);
-
-                                       index = Math.min(index, formatterParams.color.length - 1);
-                                       index = Math.max(index, 0);
-                                       color = formatterParams.color[index];
-                                       break;
-                               }
-                       default:
-                               color = "#2DC214";
-               }
-
-               //generate legend
-               switch (_typeof(formatterParams.legend)) {
-                       case "string":
-                               legend = formatterParams.legend;
-                               break;
-                       case "function":
-                               legend = formatterParams.legend(value);
-                               break;
-                       case "boolean":
-                               legend = value;
-                               break;
-                       default:
-                               legend = false;
-               }
-
-               //set legend color
-               switch (_typeof(formatterParams.legendColor)) {
-                       case "string":
-                               legendColor = formatterParams.legendColor;
-                               break;
-                       case "function":
-                               legendColor = formatterParams.legendColor(value);
-                               break;
-                       case "object":
-                               if (Array.isArray(formatterParams.legendColor)) {
-                                       var unit = 100 / formatterParams.legendColor.length;
-                                       var index = Math.floor(percentValue / unit);
-
-                                       index = Math.min(index, formatterParams.legendColor.length - 1);
-                                       index = Math.max(index, 0);
-                                       legendColor = formatterParams.legendColor[index];
-                               }
-                               break;
-                       default:
-                               legendColor = "#000";
-               }
-
-               element.style.minWidth = "30px";
-               element.style.position = "relative";
-
-               element.setAttribute("aria-label", percentValue);
-
-               var barEl = document.createElement("div");
-               barEl.style.display = "inline-block";
-               barEl.style.position = "relative";
-               barEl.style.width = percentValue + "%";
-               barEl.style.backgroundColor = color;
-               barEl.style.height = "100%";
-
-               barEl.setAttribute('data-max', max);
-               barEl.setAttribute('data-min', min);
-
-               if (legend) {
-                       var legendEl = document.createElement("div");
-                       legendEl.style.position = "absolute";
-                       legendEl.style.top = "4px";
-                       legendEl.style.left = 0;
-                       legendEl.style.textAlign = legendAlign;
-                       legendEl.style.width = "100%";
-                       legendEl.style.color = legendColor;
-                       legendEl.innerHTML = legend;
-               }
-
-               onRendered(function () {
-
-                       //handle custom element needed if formatter is to be included in printed/downloaded output
-                       if (!(cell instanceof CellComponent)) {
-                               var holderEl = document.createElement("div");
-                               holderEl.style.position = "absolute";
-                               holderEl.style.top = "4px";
-                               holderEl.style.bottom = "4px";
-                               holderEl.style.left = "4px";
-                               holderEl.style.right = "4px";
-
-                               element.appendChild(holderEl);
-
-                               element = holderEl;
-                       }
-
-                       element.appendChild(barEl);
-
-                       if (legend) {
-                               element.appendChild(legendEl);
-                       }
-               });
-
-               return "";
-       },
-
-       //background color
-       color: function color(cell, formatterParams, onRendered) {
-               cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
-               return "";
-       },
-
-       //tick icon
-       buttonTick: function buttonTick(cell, formatterParams, onRendered) {
-               return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
-       },
-
-       //cross icon
-       buttonCross: function buttonCross(cell, formatterParams, onRendered) {
-               return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-       },
-
-       //current row number
-       rownum: function rownum(cell, formatterParams, onRendered) {
-               return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;
-       },
-
-       //row handle
-       handle: function handle(cell, formatterParams, onRendered) {
-               cell.getElement().classList.add("tabulator-row-handle");
-               return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
-       },
-
-       responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
-               var self = this,
-                   open = false,
-                   el = document.createElement("div"),
-                   config = cell.getRow()._row.modules.responsiveLayout;
-
-               el.classList.add("tabulator-responsive-collapse-toggle");
-               el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
-
-               cell.getElement().classList.add("tabulator-row-handle");
-
-               function toggleList(isOpen) {
-                       var collapseEl = config.element;
-
-                       config.open = isOpen;
-
-                       if (collapseEl) {
-
-                               if (config.open) {
-                                       el.classList.add("open");
-                                       collapseEl.style.display = '';
-                               } else {
-                                       el.classList.remove("open");
-                                       collapseEl.style.display = 'none';
-                               }
-                       }
-               }
-
-               el.addEventListener("click", function (e) {
-                       e.stopImmediatePropagation();
-                       toggleList(!config.open);
-               });
-
-               toggleList(config.open);
-
-               return el;
-       },
-
-       rowSelection: function rowSelection(cell, formatterParams, onRendered) {
-               var _this64 = this;
-
-               var checkbox = document.createElement("input");
-
-               checkbox.type = 'checkbox';
-
-               if (this.table.modExists("selectRow", true)) {
-
-                       checkbox.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                       });
-
-                       if (typeof cell.getRow == 'function') {
-                               var row = cell.getRow();
-
-                               if (row instanceof RowComponent) {
-
-                                       checkbox.addEventListener("change", function (e) {
-                                               row.toggleSelect();
-                                       });
-
-                                       checkbox.checked = row.isSelected && row.isSelected();
-                                       this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
-                               } else {
-                                       checkbox = "";
-                               }
-                       } else {
-                               checkbox.addEventListener("change", function (e) {
-                                       if (_this64.table.modules.selectRow.selectedRows.length) {
-                                               _this64.table.deselectRow();
-                                       } else {
-                                               _this64.table.selectRow(formatterParams.rowRange);
-                                       }
-                               });
-
-                               this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
-                       }
-               }
-               return checkbox;
-       }
-};
-
-Tabulator.prototype.registerModule("format", Format);
-
-var FrozenColumns = function FrozenColumns(table) {
-       this.table = table; //hold Tabulator object
-       this.leftColumns = [];
-       this.rightColumns = [];
-       this.leftMargin = 0;
-       this.rightMargin = 0;
-       this.rightPadding = 0;
-       this.initializationMode = "left";
-       this.active = false;
-       this.scrollEndTimer = false;
-};
-
-//reset initial state
-FrozenColumns.prototype.reset = function () {
-       this.initializationMode = "left";
-       this.leftColumns = [];
-       this.rightColumns = [];
-       this.leftMargin = 0;
-       this.rightMargin = 0;
-       this.rightMargin = 0;
-       this.active = false;
-
-       this.table.columnManager.headersElement.style.marginLeft = 0;
-       this.table.columnManager.element.style.paddingRight = 0;
-};
-
-//initialize specific column
-FrozenColumns.prototype.initializeColumn = function (column) {
-       var config = { margin: 0, edge: false };
-
-       if (!column.isGroup) {
-
-               if (this.frozenCheck(column)) {
-
-                       config.position = this.initializationMode;
-
-                       if (this.initializationMode == "left") {
-                               this.leftColumns.push(column);
-                       } else {
-                               this.rightColumns.unshift(column);
-                       }
-
-                       this.active = true;
-
-                       column.modules.frozen = config;
-               } else {
-                       this.initializationMode = "right";
-               }
-       }
-};
-
-FrozenColumns.prototype.frozenCheck = function (column) {
-       var frozen = false;
-
-       if (column.parent.isGroup && column.definition.frozen) {
-               console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups");
-       }
-
-       if (column.parent.isGroup) {
-               return this.frozenCheck(column.parent);
-       } else {
-               return column.definition.frozen;
-       }
-
-       return frozen;
-};
-
-//quick layout to smooth horizontal scrolling
-FrozenColumns.prototype.scrollHorizontal = function () {
-       var _this65 = this;
-
-       var rows;
-
-       if (this.active) {
-               clearTimeout(this.scrollEndTimer);
-
-               //layout all rows after scroll is complete
-               this.scrollEndTimer = setTimeout(function () {
-                       _this65.layout();
-               }, 100);
-
-               rows = this.table.rowManager.getVisibleRows();
-
-               this.calcMargins();
-
-               this.layoutColumnPosition();
-
-               this.layoutCalcRows();
-
-               rows.forEach(function (row) {
-                       if (row.type === "row") {
-                               _this65.layoutRow(row);
-                       }
-               });
-
-               this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-       }
-};
-
-//calculate margins for rows
-FrozenColumns.prototype.calcMargins = function () {
-       this.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + "px";
-       this.table.columnManager.headersElement.style.marginLeft = this.leftMargin;
-
-       this.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + "px";
-       this.table.columnManager.element.style.paddingRight = this.rightMargin;
-
-       //calculate right frozen columns
-       this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
-};
-
-//layout calculation rows
-FrozenColumns.prototype.layoutCalcRows = function () {
-       if (this.table.modExists("columnCalcs")) {
-               if (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {
-                       this.layoutRow(this.table.modules.columnCalcs.topRow);
-               }
-               if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
-                       this.layoutRow(this.table.modules.columnCalcs.botRow);
-               }
-       }
-};
-
-//calculate column positions and layout headers
-FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
-       var _this66 = this;
-
-       var leftParents = [];
-
-       this.leftColumns.forEach(function (column, i) {
-               column.modules.frozen.margin = _this66._calcSpace(_this66.leftColumns, i) + _this66.table.columnManager.scrollLeft + "px";
-
-               if (i == _this66.leftColumns.length - 1) {
-                       column.modules.frozen.edge = true;
-               } else {
-                       column.modules.frozen.edge = false;
-               }
-
-               if (column.parent.isGroup) {
-                       var parentEl = _this66.getColGroupParentElement(column);
-                       if (!leftParents.includes(parentEl)) {
-                               _this66.layoutElement(parentEl, column);
-                               leftParents.push(parentEl);
-                       }
-
-                       if (column.modules.frozen.edge) {
-                               parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-                       }
-               } else {
-                       _this66.layoutElement(column.getElement(), column);
-               }
-
-               if (allCells) {
-                       column.cells.forEach(function (cell) {
-                               _this66.layoutElement(cell.getElement(), column);
-                       });
-               }
-       });
-
-       this.rightColumns.forEach(function (column, i) {
-               column.modules.frozen.margin = _this66.rightPadding - _this66._calcSpace(_this66.rightColumns, i + 1) + "px";
-
-               if (i == _this66.rightColumns.length - 1) {
-                       column.modules.frozen.edge = true;
-               } else {
-                       column.modules.frozen.edge = false;
-               }
-
-               if (column.parent.isGroup) {
-                       _this66.layoutElement(_this66.getColGroupParentElement(column), column);
-               } else {
-                       _this66.layoutElement(column.getElement(), column);
-               }
-
-               if (allCells) {
-                       column.cells.forEach(function (cell) {
-                               _this66.layoutElement(cell.getElement(), column);
-                       });
-               }
-       });
-};
-
-FrozenColumns.prototype.getColGroupParentElement = function (column) {
-       return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();
-};
-
-//layout columns appropropriatly
-FrozenColumns.prototype.layout = function () {
-       var self = this,
-           rightMargin = 0;
-
-       if (self.active) {
-
-               //calculate row padding
-               this.calcMargins();
-
-               // self.table.rowManager.activeRows.forEach(function(row){
-               //      self.layoutRow(row);
-               // });
-
-               // if(self.table.options.dataTree){
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if (row.type === "row") {
-                               self.layoutRow(row);
-                       }
-               });
-               // }
-
-               this.layoutCalcRows();
-
-               //calculate left columns
-               this.layoutColumnPosition(true);
-
-               // if(tableHolder.scrollHeight > tableHolder.clientHeight){
-               //      rightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;
-               // }
-
-               this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-       }
-};
-
-FrozenColumns.prototype.layoutRow = function (row) {
-       var _this67 = this;
-
-       var rowEl = row.getElement();
-
-       rowEl.style.paddingLeft = this.leftMargin;
-       // rowEl.style.paddingRight = this.rightMargin + "px";
-
-       this.leftColumns.forEach(function (column) {
-               var cell = row.getCell(column);
-
-               if (cell) {
-                       _this67.layoutElement(cell.getElement(), column);
-               }
-       });
-
-       this.rightColumns.forEach(function (column) {
-               var cell = row.getCell(column);
-
-               if (cell) {
-                       _this67.layoutElement(cell.getElement(), column);
-               }
-       });
-};
-
-FrozenColumns.prototype.layoutElement = function (element, column) {
-
-       if (column.modules.frozen) {
-               element.style.position = "absolute";
-               element.style.left = column.modules.frozen.margin;
-
-               element.classList.add("tabulator-frozen");
-
-               if (column.modules.frozen.edge) {
-                       element.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-               }
-       }
-};
-
-FrozenColumns.prototype._calcSpace = function (columns, index) {
-       var width = 0;
-
-       for (var _i12 = 0; _i12 < index; _i12++) {
-               if (columns[_i12].visible) {
-                       width += columns[_i12].getWidth();
-               }
-       }
-
-       return width;
-};
-
-Tabulator.prototype.registerModule("frozenColumns", FrozenColumns);
-var FrozenRows = function FrozenRows(table) {
-       this.table = table; //hold Tabulator object
-       this.topElement = document.createElement("div");
-       this.rows = [];
-       this.displayIndex = 0; //index in display pipeline
-};
-
-FrozenRows.prototype.initialize = function () {
-       this.rows = [];
-
-       this.topElement.classList.add("tabulator-frozen-rows-holder");
-
-       // this.table.columnManager.element.append(this.topElement);
-       this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-};
-
-FrozenRows.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-FrozenRows.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-FrozenRows.prototype.isFrozen = function () {
-       return !!this.rows.length;
-};
-
-//filter frozen rows out of display data
-FrozenRows.prototype.getRows = function (rows) {
-       var self = this,
-           frozen = [],
-           output = rows.slice(0);
-
-       this.rows.forEach(function (row) {
-               var index = output.indexOf(row);
-
-               if (index > -1) {
-                       output.splice(index, 1);
-               }
-       });
-
-       return output;
-};
-
-FrozenRows.prototype.freezeRow = function (row) {
-       if (!row.modules.frozen) {
-               row.modules.frozen = true;
-               this.topElement.appendChild(row.getElement());
-               row.initialize();
-               row.normalizeHeight();
-               this.table.rowManager.adjustTableSize();
-
-               this.rows.push(row);
-
-               this.table.rowManager.refreshActiveData("display");
-
-               this.styleRows();
-       } else {
-               console.warn("Freeze Error - Row is already frozen");
-       }
-};
-
-FrozenRows.prototype.unfreezeRow = function (row) {
-       var index = this.rows.indexOf(row);
-
-       if (row.modules.frozen) {
-
-               row.modules.frozen = false;
-
-               this.detachRow(row);
-
-               this.table.rowManager.adjustTableSize();
-
-               this.table.rowManager.refreshActiveData("display");
-
-               if (this.rows.length) {
-                       this.styleRows();
-               }
-       } else {
-               console.warn("Freeze Error - Row is already unfrozen");
-       }
-};
-
-FrozenRows.prototype.detachRow = function (row) {
-       var index = this.rows.indexOf(row);
-
-       if (index > -1) {
-               var rowEl = row.getElement();
-               rowEl.parentNode.removeChild(rowEl);
-
-               this.rows.splice(index, 1);
-       }
-};
-
-FrozenRows.prototype.styleRows = function (row) {
-       var self = this;
-
-       this.rows.forEach(function (row, i) {
-               self.table.rowManager.styleRow(row, i);
-       });
-};
-
-Tabulator.prototype.registerModule("frozenRows", FrozenRows);
-
-//public group object
-var GroupComponent = function GroupComponent(group) {
-       this._group = group;
-       this.type = "GroupComponent";
-};
-
-GroupComponent.prototype.getKey = function () {
-       return this._group.key;
-};
-
-GroupComponent.prototype.getField = function () {
-       return this._group.field;
-};
-
-GroupComponent.prototype.getElement = function () {
-       return this._group.element;
-};
-
-GroupComponent.prototype.getRows = function () {
-       return this._group.getRows(true);
-};
-
-GroupComponent.prototype.getSubGroups = function () {
-       return this._group.getSubGroups(true);
-};
-
-GroupComponent.prototype.getParentGroup = function () {
-       return this._group.parent ? this._group.parent.getComponent() : false;
-};
-
-GroupComponent.prototype.getVisibility = function () {
-       console.warn("getVisibility function is deprecated, you should now use the isVisible function");
-       return this._group.visible;
-};
-
-GroupComponent.prototype.isVisible = function () {
-       return this._group.visible;
-};
-
-GroupComponent.prototype.show = function () {
-       this._group.show();
-};
-
-GroupComponent.prototype.hide = function () {
-       this._group.hide();
-};
-
-GroupComponent.prototype.toggle = function () {
-       this._group.toggleVisibility();
-};
-
-GroupComponent.prototype._getSelf = function () {
-       return this._group;
-};
-
-GroupComponent.prototype.getTable = function () {
-       return this._group.groupManager.table;
-};
-
-//////////////////////////////////////////////////
-//////////////// Group Functions /////////////////
-//////////////////////////////////////////////////
-
-var Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {
-
-       this.groupManager = groupManager;
-       this.parent = parent;
-       this.key = key;
-       this.level = level;
-       this.field = field;
-       this.hasSubGroups = level < groupManager.groupIDLookups.length - 1;
-       this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;
-       this.type = "group"; //type of element
-       this.old = oldGroup;
-       this.rows = [];
-       this.groups = [];
-       this.groupList = [];
-       this.generator = generator;
-       this.elementContents = false;
-       this.height = 0;
-       this.outerHeight = 0;
-       this.initialized = false;
-       this.calcs = {};
-       this.initialized = false;
-       this.modules = {};
-       this.arrowElement = false;
-
-       this.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0];
-
-       this.component = null;
-
-       this.createElements();
-       this.addBindings();
-
-       this.createValueGroups();
-};
-
-Group.prototype.wipe = function () {
-       if (this.groupList.length) {
-               this.groupList.forEach(function (group) {
-                       group.wipe();
-               });
-       } else {
-               this.element = false;
-               this.arrowElement = false;
-               this.elementContents = false;
-       }
-};
-
-Group.prototype.createElements = function () {
-       var arrow = document.createElement("div");
-       arrow.classList.add("tabulator-arrow");
-
-       this.element = document.createElement("div");
-       this.element.classList.add("tabulator-row");
-       this.element.classList.add("tabulator-group");
-       this.element.classList.add("tabulator-group-level-" + this.level);
-       this.element.setAttribute("role", "rowgroup");
-
-       this.arrowElement = document.createElement("div");
-       this.arrowElement.classList.add("tabulator-group-toggle");
-       this.arrowElement.appendChild(arrow);
-
-       //setup movable rows
-       if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
-               this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
-       }
-};
-
-Group.prototype.createValueGroups = function () {
-       var _this68 = this;
-
-       var level = this.level + 1;
-       if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-               this.groupManager.allowedValues[level].forEach(function (value) {
-                       _this68._createGroup(value, level);
-               });
-       }
-};
-
-Group.prototype.addBindings = function () {
-       var self = this,
-           dblTap,
-           tapHold,
-           tap,
-           toggleElement;
-
-       //handle group click events
-       if (self.groupManager.table.options.groupClick) {
-               self.element.addEventListener("click", function (e) {
-                       self.groupManager.table.options.groupClick.call(self.groupManager.table, e, self.getComponent());
-               });
-       }
-
-       if (self.groupManager.table.options.groupDblClick) {
-               self.element.addEventListener("dblclick", function (e) {
-                       self.groupManager.table.options.groupDblClick.call(self.groupManager.table, e, self.getComponent());
-               });
-       }
-
-       if (self.groupManager.table.options.groupContext) {
-               self.element.addEventListener("contextmenu", function (e) {
-                       self.groupManager.table.options.groupContext.call(self.groupManager.table, e, self.getComponent());
-               });
-       }
-
-       if ((self.groupManager.table.options.groupContextMenu || self.groupManager.table.options.groupClickMenu) && self.groupManager.table.modExists("menu")) {
-               self.groupManager.table.modules.menu.initializeGroup.call(self.groupManager.table.modules.menu, self);
-       }
-
-       if (self.groupManager.table.options.groupTap) {
-
-               tap = false;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               self.groupManager.table.options.groupTap(e, self.getComponent());
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (self.groupManager.table.options.groupDblTap) {
-
-               dblTap = null;
-
-               self.element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               self.groupManager.table.options.groupDblTap(e, self.getComponent());
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (self.groupManager.table.options.groupTapHold) {
-
-               tapHold = null;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               self.groupManager.table.options.groupTapHold(e, self.getComponent());
-                       }, 1000);
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-
-       if (self.groupManager.table.options.groupToggleElement) {
-               toggleElement = self.groupManager.table.options.groupToggleElement == "arrow" ? self.arrowElement : self.element;
-
-               toggleElement.addEventListener("click", function (e) {
-                       e.stopPropagation();
-                       e.stopImmediatePropagation();
-                       self.toggleVisibility();
-               });
-       }
-};
-
-Group.prototype._createGroup = function (groupID, level) {
-       var groupKey = level + "_" + groupID;
-       var group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);
-
-       this.groups[groupKey] = group;
-       this.groupList.push(group);
-};
-
-Group.prototype._addRowToGroup = function (row) {
-
-       var level = this.level + 1;
-
-       if (this.hasSubGroups) {
-               var groupID = this.groupManager.groupIDLookups[level].func(row.getData()),
-                   groupKey = level + "_" + groupID;
-
-               if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-                       if (this.groups[groupKey]) {
-                               this.groups[groupKey].addRow(row);
-                       }
-               } else {
-                       if (!this.groups[groupKey]) {
-                               this._createGroup(groupID, level);
-                       }
-
-                       this.groups[groupKey].addRow(row);
-               }
-       }
-};
-
-Group.prototype._addRow = function (row) {
-       this.rows.push(row);
-       row.modules.group = this;
-};
-
-Group.prototype.insertRow = function (row, to, after) {
-       var data = this.conformRowData({});
-
-       row.updateData(data);
-
-       var toIndex = this.rows.indexOf(to);
-
-       if (toIndex > -1) {
-               if (after) {
-                       this.rows.splice(toIndex + 1, 0, row);
-               } else {
-                       this.rows.splice(toIndex, 0, row);
-               }
-       } else {
-               if (after) {
-                       this.rows.push(row);
-               } else {
-                       this.rows.unshift(row);
-               }
-       }
-
-       row.modules.group = this;
-
-       this.generateGroupHeaderContents();
-
-       if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-               this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-       }
-
-       this.groupManager.updateGroupRows(true);
-};
-
-Group.prototype.scrollHeader = function (left) {
-       this.arrowElement.style.marginLeft = left;
-
-       this.groupList.forEach(function (child) {
-               child.scrollHeader(left);
-       });
-};
-
-Group.prototype.getRowIndex = function (row) {};
-
-//update row data to match grouping contraints
-Group.prototype.conformRowData = function (data) {
-       if (this.field) {
-               data[this.field] = this.key;
-       } else {
-               console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function");
-       }
-
-       if (this.parent) {
-               data = this.parent.conformRowData(data);
-       }
-
-       return data;
-};
-
-Group.prototype.removeRow = function (row) {
-       var index = this.rows.indexOf(row);
-       var el = row.getElement();
-
-       if (index > -1) {
-               this.rows.splice(index, 1);
-       }
-
-       if (!this.groupManager.table.options.groupValues && !this.rows.length) {
-               if (this.parent) {
-                       this.parent.removeGroup(this);
-               } else {
-                       this.groupManager.removeGroup(this);
-               }
-
-               this.groupManager.updateGroupRows(true);
-       } else {
-
-               if (el.parentNode) {
-                       el.parentNode.removeChild(el);
-               }
-
-               this.generateGroupHeaderContents();
-
-               if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-                       this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-               }
-       }
-};
-
-Group.prototype.removeGroup = function (group) {
-       var groupKey = group.level + "_" + group.key,
-           index;
-
-       if (this.groups[groupKey]) {
-               delete this.groups[groupKey];
-
-               index = this.groupList.indexOf(group);
-
-               if (index > -1) {
-                       this.groupList.splice(index, 1);
-               }
-
-               if (!this.groupList.length) {
-                       if (this.parent) {
-                               this.parent.removeGroup(this);
-                       } else {
-                               this.groupManager.removeGroup(this);
-                       }
-               }
-       }
-};
-
-Group.prototype.getHeadersAndRows = function (noCalc) {
-       var output = [];
-
-       output.push(this);
-
-       this._visSet();
-
-       if (this.visible) {
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               output = output.concat(group.getHeadersAndRows(noCalc));
-                       });
-               } else {
-                       if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                               if (this.calcs.top) {
-                                       this.calcs.top.detachElement();
-                                       this.calcs.top.deleteCells();
-                               }
-
-                               this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                               output.push(this.calcs.top);
-                       }
-
-                       output = output.concat(this.rows);
-
-                       if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                               if (this.calcs.bottom) {
-                                       this.calcs.bottom.detachElement();
-                                       this.calcs.bottom.deleteCells();
-                               }
-
-                               this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                               output.push(this.calcs.bottom);
-                       }
-               }
-       } else {
-               if (!this.groupList.length && this.groupManager.table.options.columnCalcs != "table") {
-
-                       if (this.groupManager.table.modExists("columnCalcs")) {
-
-                               if (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                                       if (this.calcs.top) {
-                                               this.calcs.top.detachElement();
-                                               this.calcs.top.deleteCells();
-                                       }
-
-                                       if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                               this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                                               output.push(this.calcs.top);
-                                       }
-                               }
-
-                               if (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                                       if (this.calcs.bottom) {
-                                               this.calcs.bottom.detachElement();
-                                               this.calcs.bottom.deleteCells();
-                                       }
-
-                                       if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                               this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                                               output.push(this.calcs.bottom);
-                                       }
-                               }
-                       }
-               }
-       }
-
-       return output;
-};
-
-Group.prototype.getData = function (visible, transform) {
-       var self = this,
-           output = [];
-
-       this._visSet();
-
-       if (!visible || visible && this.visible) {
-               this.rows.forEach(function (row) {
-                       output.push(row.getData(transform || "data"));
-               });
-       }
-
-       return output;
-};
-
-// Group.prototype.getRows = function(){
-//     this._visSet();
-
-//     return this.visible ? this.rows : [];
-// };
-
-Group.prototype.getRowCount = function () {
-       var count = 0;
-
-       if (this.groupList.length) {
-               this.groupList.forEach(function (group) {
-                       count += group.getRowCount();
-               });
-       } else {
-               count = this.rows.length;
-       }
-       return count;
-};
-
-Group.prototype.toggleVisibility = function () {
-       if (this.visible) {
-               this.hide();
-       } else {
-               this.show();
-       }
-};
-
-Group.prototype.hide = function () {
-       this.visible = false;
-
-       if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-               this.element.classList.remove("tabulator-group-visible");
-
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-
-                               var rows = group.getHeadersAndRows();
-
-                               rows.forEach(function (row) {
-                                       row.detachElement();
-                               });
-                       });
-               } else {
-                       this.rows.forEach(function (row) {
-                               var rowEl = row.getElement();
-                               rowEl.parentNode.removeChild(rowEl);
-                       });
-               }
-
-               this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-               this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-       } else {
-               this.groupManager.updateGroupRows(true);
-       }
-
-       this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);
-};
-
-Group.prototype.show = function () {
-       var self = this;
-
-       self.visible = true;
-
-       if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-               this.element.classList.add("tabulator-group-visible");
-
-               var prev = self.getElement();
-
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               var rows = group.getHeadersAndRows();
-
-                               rows.forEach(function (row) {
-                                       var rowEl = row.getElement();
-                                       prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                                       row.initialize();
-                                       prev = rowEl;
-                               });
-                       });
-               } else {
-                       self.rows.forEach(function (row) {
-                               var rowEl = row.getElement();
-                               prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                               row.initialize();
-                               prev = rowEl;
-                       });
-               }
-
-               this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-               this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-       } else {
-               this.groupManager.updateGroupRows(true);
-       }
-
-       this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);
-};
-
-Group.prototype._visSet = function () {
-       var data = [];
-
-       if (typeof this.visible == "function") {
-
-               this.rows.forEach(function (row) {
-                       data.push(row.getData());
-               });
-
-               this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());
-       }
-};
-
-Group.prototype.getRowGroup = function (row) {
-       var match = false;
-       if (this.groupList.length) {
-               this.groupList.forEach(function (group) {
-                       var result = group.getRowGroup(row);
-
-                       if (result) {
-                               match = result;
-                       }
-               });
-       } else {
-               if (this.rows.find(function (item) {
-                       return item === row;
-               })) {
-                       match = this;
-               }
-       }
-
-       return match;
-};
-
-Group.prototype.getSubGroups = function (component) {
-       var output = [];
-
-       this.groupList.forEach(function (child) {
-               output.push(component ? child.getComponent() : child);
-       });
-
-       return output;
-};
-
-Group.prototype.getRows = function (compoment) {
-       var output = [];
-
-       this.rows.forEach(function (row) {
-               output.push(compoment ? row.getComponent() : row);
-       });
-
-       return output;
-};
-
-Group.prototype.generateGroupHeaderContents = function () {
-       var data = [];
-
-       this.rows.forEach(function (row) {
-               data.push(row.getData());
-       });
-
-       this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());
-
-       while (this.element.firstChild) {
-               this.element.removeChild(this.element.firstChild);
-       }if (typeof this.elementContents === "string") {
-               this.element.innerHTML = this.elementContents;
-       } else {
-               this.element.appendChild(this.elementContents);
-       }
-
-       this.element.insertBefore(this.arrowElement, this.element.firstChild);
-};
-
-Group.prototype.getPath = function () {
-       var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
-
-       path.unshift(this.key);
-       if (this.parent) {
-               this.parent.getPath(path);
-       }
-       return path;
-};
-////////////// Standard Row Functions //////////////
-
-Group.prototype.getElement = function () {
-       this.addBindingsd = false;
-
-       this._visSet();
-
-       if (this.visible) {
-               this.element.classList.add("tabulator-group-visible");
-       } else {
-               this.element.classList.remove("tabulator-group-visible");
-       }
-
-       for (var i = 0; i < this.element.childNodes.length; ++i) {
-               this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);
-       }
-
-       this.generateGroupHeaderContents();
-
-       // this.addBindings();
-
-       return this.element;
-};
-
-Group.prototype.detachElement = function () {
-       if (this.element && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-};
-
-//normalize the height of elements in the row
-Group.prototype.normalizeHeight = function () {
-       this.setHeight(this.element.clientHeight);
-};
-
-Group.prototype.initialize = function (force) {
-       if (!this.initialized || force) {
-               this.normalizeHeight();
-               this.initialized = true;
-       }
-};
-
-Group.prototype.reinitialize = function () {
-       this.initialized = false;
-       this.height = 0;
-
-       if (Tabulator.prototype.helpers.elVisible(this.element)) {
-               this.initialize(true);
-       }
-};
-
-Group.prototype.setHeight = function (height) {
-       if (this.height != height) {
-               this.height = height;
-               this.outerHeight = this.element.offsetHeight;
-       }
-};
-
-//return rows outer height
-Group.prototype.getHeight = function () {
-       return this.outerHeight;
-};
-
-Group.prototype.getGroup = function () {
-       return this;
-};
-
-Group.prototype.reinitializeHeight = function () {};
-Group.prototype.calcHeight = function () {};
-Group.prototype.setCellHeight = function () {};
-Group.prototype.clearCellHeight = function () {};
-
-//////////////// Object Generation /////////////////
-Group.prototype.getComponent = function () {
-       if (!this.component) {
-               this.component = new GroupComponent(this);
-       }
-
-       return this.component;
-};
-
-//////////////////////////////////////////////////
-////////////// Group Row Extension ///////////////
-//////////////////////////////////////////////////
-
-var GroupRows = function GroupRows(table) {
-
-       this.table = table; //hold Tabulator object
-
-       this.groupIDLookups = false; //enable table grouping and set field to group by
-       this.startOpen = [function () {
-               return false;
-       }]; //starting state of group
-       this.headerGenerator = [function () {
-               return "";
-       }];
-       this.groupList = []; //ordered list of groups
-       this.allowedValues = false;
-       this.groups = {}; //hold row groups
-       this.displayIndex = 0; //index in display pipeline
-};
-
-//initialize group configuration
-GroupRows.prototype.initialize = function () {
-       var self = this,
-           groupBy = self.table.options.groupBy,
-           startOpen = self.table.options.groupStartOpen,
-           groupHeader = self.table.options.groupHeader;
-
-       this.allowedValues = self.table.options.groupValues;
-
-       if (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {
-               console.warn("Error creating group headers, groupHeader array is shorter than groupBy array");
-       }
-
-       self.headerGenerator = [function () {
-               return "";
-       }];
-       this.startOpen = [function () {
-               return false;
-       }]; //starting state of group
-
-       self.table.modules.localize.bind("groups|item", function (langValue, lang) {
-               self.headerGenerator[0] = function (value, count, data) {
-                       //header layout function
-                       return (typeof value === "undefined" ? "" : value) + "<span>(" + count + " " + (count === 1 ? langValue : lang.groups.items) + ")</span>";
-               };
-       });
-
-       this.groupIDLookups = [];
-
-       if (Array.isArray(groupBy) || groupBy) {
-               if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both") {
-                       this.table.modules.columnCalcs.removeCalcs();
-               }
-       } else {
-               if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group") {
-
-                       var cols = this.table.columnManager.getRealColumns();
-
-                       cols.forEach(function (col) {
-                               if (col.definition.topCalc) {
-                                       self.table.modules.columnCalcs.initializeTopRow();
-                               }
-
-                               if (col.definition.bottomCalc) {
-                                       self.table.modules.columnCalcs.initializeBottomRow();
-                               }
-                       });
-               }
-       }
-
-       if (!Array.isArray(groupBy)) {
-               groupBy = [groupBy];
-       }
-
-       groupBy.forEach(function (group, i) {
-               var lookupFunc, column;
-
-               if (typeof group == "function") {
-                       lookupFunc = group;
-               } else {
-                       column = self.table.columnManager.getColumnByField(group);
-
-                       if (column) {
-                               lookupFunc = function lookupFunc(data) {
-                                       return column.getFieldValue(data);
-                               };
-                       } else {
-                               lookupFunc = function lookupFunc(data) {
-                                       return data[group];
-                               };
-                       }
-               }
-
-               self.groupIDLookups.push({
-                       field: typeof group === "function" ? false : group,
-                       func: lookupFunc,
-                       values: self.allowedValues ? self.allowedValues[i] : false
-               });
-       });
-
-       if (startOpen) {
-
-               if (!Array.isArray(startOpen)) {
-                       startOpen = [startOpen];
-               }
-
-               startOpen.forEach(function (level) {
-                       level = typeof level == "function" ? level : function () {
-                               return true;
-                       };
-               });
-
-               self.startOpen = startOpen;
-       }
-
-       if (groupHeader) {
-               self.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
-       }
-
-       this.initialized = true;
-};
-
-GroupRows.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-GroupRows.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-//return appropriate rows with group headers
-GroupRows.prototype.getRows = function (rows) {
-       if (this.groupIDLookups.length) {
-
-               this.table.options.dataGrouping.call(this.table);
-
-               this.generateGroups(rows);
-
-               if (this.table.options.dataGrouped) {
-                       this.table.options.dataGrouped.call(this.table, this.getGroups(true));
-               }
-
-               return this.updateGroupRows();
-       } else {
-               return rows.slice(0);
-       }
-};
-
-GroupRows.prototype.getGroups = function (compoment) {
-       var groupComponents = [];
-
-       this.groupList.forEach(function (group) {
-               groupComponents.push(compoment ? group.getComponent() : group);
-       });
-
-       return groupComponents;
-};
-
-GroupRows.prototype.getChildGroups = function (group) {
-       var _this69 = this;
-
-       var groupComponents = [];
-
-       if (!group) {
-               group = this;
-       }
-
-       group.groupList.forEach(function (child) {
-               if (child.groupList.length) {
-                       groupComponents = groupComponents.concat(_this69.getChildGroups(child));
-               } else {
-                       groupComponents.push(child);
-               }
-       });
-
-       return groupComponents;
-};
-
-GroupRows.prototype.wipe = function () {
-       this.groupList.forEach(function (group) {
-               group.wipe();
-       });
-};
-
-GroupRows.prototype.pullGroupListData = function (groupList) {
-       var self = this;
-       var groupListData = [];
-
-       groupList.forEach(function (group) {
-               var groupHeader = {};
-               groupHeader.level = 0;
-               groupHeader.rowCount = 0;
-               groupHeader.headerContent = "";
-               var childData = [];
-
-               if (group.hasSubGroups) {
-                       childData = self.pullGroupListData(group.groupList);
-
-                       groupHeader.level = group.level;
-                       groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers
-                       groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);
-
-                       groupListData.push(groupHeader);
-                       groupListData = groupListData.concat(childData);
-               } else {
-                       groupHeader.level = group.level;
-                       groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);
-                       groupHeader.rowCount = group.getRows().length;
-
-                       groupListData.push(groupHeader);
-
-                       group.getRows().forEach(function (row) {
-                               groupListData.push(row.getData("data"));
-                       });
-               }
-       });
-
-       return groupListData;
-};
-
-GroupRows.prototype.getGroupedData = function () {
-
-       return this.pullGroupListData(this.groupList);
-};
-
-GroupRows.prototype.getRowGroup = function (row) {
-       var match = false;
-
-       this.groupList.forEach(function (group) {
-               var result = group.getRowGroup(row);
-
-               if (result) {
-                       match = result;
-               }
-       });
-
-       return match;
-};
-
-GroupRows.prototype.countGroups = function () {
-       return this.groupList.length;
-};
-
-GroupRows.prototype.generateGroups = function (rows) {
-       var self = this,
-           oldGroups = self.groups;
-
-       self.groups = {};
-       self.groupList = [];
-
-       if (this.allowedValues && this.allowedValues[0]) {
-               this.allowedValues[0].forEach(function (value) {
-                       self.createGroup(value, 0, oldGroups);
-               });
-
-               rows.forEach(function (row) {
-                       self.assignRowToExistingGroup(row, oldGroups);
-               });
-       } else {
-               rows.forEach(function (row) {
-                       self.assignRowToGroup(row, oldGroups);
-               });
-       }
-};
-
-GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
-       var groupKey = level + "_" + groupID,
-           group;
-
-       oldGroups = oldGroups || [];
-
-       group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);
-
-       this.groups[groupKey] = group;
-       this.groupList.push(group);
-};
-
-// GroupRows.prototype.assignRowToGroup = function(row, oldGroups){
-//     var groupID = this.groupIDLookups[0].func(row.getData()),
-//     groupKey = "0_" + groupID;
-
-//     if(!this.groups[groupKey]){
-//             this.createGroup(groupID, 0, oldGroups);
-//     }
-
-//     this.groups[groupKey].addRow(row);
-// };
-
-GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
-       var groupID = this.groupIDLookups[0].func(row.getData()),
-           groupKey = "0_" + groupID;
-
-       if (this.groups[groupKey]) {
-               this.groups[groupKey].addRow(row);
-       }
-};
-
-GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
-       var groupID = this.groupIDLookups[0].func(row.getData()),
-           newGroupNeeded = !this.groups["0_" + groupID];
-
-       if (newGroupNeeded) {
-               this.createGroup(groupID, 0, oldGroups);
-       }
-
-       this.groups["0_" + groupID].addRow(row);
-
-       return !newGroupNeeded;
-};
-
-GroupRows.prototype.reassignRowToGroup = function (row) {
-       var oldRowGroup = row.getGroup(),
-           oldGroupPath = oldRowGroup.getPath(),
-           newGroupPath = this.getExpectedPath(row),
-           samePath = true;
-       // figure out if new group path is the same as old group path
-       var samePath = oldGroupPath.length == newGroupPath.length && oldGroupPath.every(function (element, index) {
-               return element === newGroupPath[index];
-       });
-       // refresh if they new path and old path aren't the same (aka the row's groupings have changed)
-       if (!samePath) {
-               oldRowGroup.removeRow(row);
-               this.assignRowToGroup(row, self.groups);
-               this.table.rowManager.refreshActiveData("group", false, true);
-       }
-};
-
-GroupRows.prototype.getExpectedPath = function (row) {
-       var groupPath = [],
-           rowData = row.getData();
-       this.groupIDLookups.forEach(function (groupId) {
-               groupPath.push(groupId.func(rowData));
-       });
-       return groupPath;
-};
-
-GroupRows.prototype.updateGroupRows = function (force) {
-       var self = this,
-           output = [],
-           oldRowCount;
-
-       self.groupList.forEach(function (group) {
-               output = output.concat(group.getHeadersAndRows());
-       });
-
-       //force update of table display
-       if (force) {
-
-               var displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());
-
-               if (displayIndex !== true) {
-                       this.setDisplayIndex(displayIndex);
-               }
-
-               self.table.rowManager.refreshActiveData("group", true, true);
-       }
-
-       return output;
-};
-
-GroupRows.prototype.scrollHeaders = function (left) {
-       if (this.table.options.virtualDomHoz) {
-               left -= this.table.vdomHoz.vDomPadLeft;
-       }
-
-       left = left + "px";
-
-       this.groupList.forEach(function (group) {
-               group.scrollHeader(left);
-       });
-};
-
-GroupRows.prototype.removeGroup = function (group) {
-       var groupKey = group.level + "_" + group.key,
-           index;
-
-       if (this.groups[groupKey]) {
-               delete this.groups[groupKey];
-
-               index = this.groupList.indexOf(group);
-
-               if (index > -1) {
-                       this.groupList.splice(index, 1);
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("groupRows", GroupRows);
-var History = function History(table) {
-       this.table = table; //hold Tabulator object
-
-       this.history = [];
-       this.index = -1;
-};
-
-History.prototype.clear = function () {
-       this.history = [];
-       this.index = -1;
-};
-
-History.prototype.action = function (type, component, data) {
-
-       this.history = this.history.slice(0, this.index + 1);
-
-       this.history.push({
-               type: type,
-               component: component,
-               data: data
-       });
-
-       this.index++;
-};
-
-History.prototype.getHistoryUndoSize = function () {
-       return this.index + 1;
-};
-
-History.prototype.getHistoryRedoSize = function () {
-       return this.history.length - (this.index + 1);
-};
-
-History.prototype.clearComponentHistory = function (component) {
-       var index = this.history.findIndex(function (item) {
-               return item.component === component;
-       });
-
-       if (index > -1) {
-               this.history.splice(index, 1);
-               if (index <= this.index) {
-                       this.index--;
-               }
-
-               this.clearComponentHistory(component);
-       }
-};
-
-History.prototype.undo = function () {
-
-       if (this.index > -1) {
-               var action = this.history[this.index];
-
-               this.undoers[action.type].call(this, action);
-
-               this.index--;
-
-               this.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-               return true;
-       } else {
-               console.warn("History Undo Error - No more history to undo");
-               return false;
-       }
-};
-
-History.prototype.redo = function () {
-       if (this.history.length - 1 > this.index) {
-
-               this.index++;
-
-               var action = this.history[this.index];
-
-               this.redoers[action.type].call(this, action);
-
-               this.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-               return true;
-       } else {
-               console.warn("History Redo Error - No more history to redo");
-               return false;
-       }
-};
-
-History.prototype.undoers = {
-       cellEdit: function cellEdit(action) {
-               action.component.setValueProcessData(action.data.oldValue);
-       },
-
-       rowAdd: function rowAdd(action) {
-               action.component.deleteActual();
-       },
-
-       rowDelete: function rowDelete(action) {
-               var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.groupRows.updateGroupRows(true);
-               }
-
-               this._rebindRow(action.component, newRow);
-       },
-
-       rowMove: function rowMove(action) {
-               this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);
-               this.table.rowManager.redraw();
-       }
-};
-
-History.prototype.redoers = {
-       cellEdit: function cellEdit(action) {
-               action.component.setValueProcessData(action.data.newValue);
-       },
-
-       rowAdd: function rowAdd(action) {
-               var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.groupRows.updateGroupRows(true);
-               }
-
-               this._rebindRow(action.component, newRow);
-       },
-
-       rowDelete: function rowDelete(action) {
-               action.component.deleteActual();
-       },
-
-       rowMove: function rowMove(action) {
-               this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);
-               this.table.rowManager.redraw();
-       }
-};
-
-//rebind rows to new element after deletion
-History.prototype._rebindRow = function (oldRow, newRow) {
-       this.history.forEach(function (action) {
-               if (action.component instanceof Row) {
-                       if (action.component === oldRow) {
-                               action.component = newRow;
-                       }
-               } else if (action.component instanceof Cell) {
-                       if (action.component.row === oldRow) {
-                               var field = action.component.column.getField();
-
-                               if (field) {
-                                       action.component = newRow.getCell(field);
-                               }
-                       }
-               }
-       });
-};
-
-Tabulator.prototype.registerModule("history", History);
-var HtmlTableImport = function HtmlTableImport(table) {
-       this.table = table; //hold Tabulator object
-       this.fieldIndex = [];
-       this.hasIndex = false;
-};
-
-HtmlTableImport.prototype.parseTable = function () {
-       var self = this,
-           element = self.table.element,
-           options = self.table.options,
-           columns = options.columns,
-           headers = element.getElementsByTagName("th"),
-           rows = element.getElementsByTagName("tbody")[0],
-           data = [],
-           newTable;
-
-       self.hasIndex = false;
-
-       self.table.options.htmlImporting.call(this.table);
-
-       rows = rows ? rows.getElementsByTagName("tr") : [];
-
-       //check for tablator inline options
-       self._extractOptions(element, options);
-
-       if (headers.length) {
-               self._extractHeaders(headers, rows);
-       } else {
-               self._generateBlankHeaders(headers, rows);
-       }
-
-       //iterate through table rows and build data set
-       for (var index = 0; index < rows.length; index++) {
-               var row = rows[index],
-                   cells = row.getElementsByTagName("td"),
-                   item = {};
-
-               //create index if the dont exist in table
-               if (!self.hasIndex) {
-                       item[options.index] = index;
-               }
-
-               for (var i = 0; i < cells.length; i++) {
-                       var cell = cells[i];
-                       if (typeof this.fieldIndex[i] !== "undefined") {
-                               item[this.fieldIndex[i]] = cell.innerHTML;
-                       }
-               }
-
-               //add row data to item
-               data.push(item);
-       }
-
-       //create new element
-       var newElement = document.createElement("div");
-
-       //transfer attributes to new element
-       var attributes = element.attributes;
-
-       // loop through attributes and apply them on div
-
-       for (var i in attributes) {
-               if (_typeof(attributes[i]) == "object") {
-                       newElement.setAttribute(attributes[i].name, attributes[i].value);
-               }
-       }
-
-       // replace table with div element
-       element.parentNode.replaceChild(newElement, element);
-
-       options.data = data;
-
-       self.table.options.htmlImported.call(this.table);
-
-       // // newElement.tabulator(options);
-
-       this.table.element = newElement;
-};
-
-//extract tabulator attribute options
-HtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {
-       var attributes = element.attributes;
-       var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
-       var optionsList = {};
-
-       optionsArr.forEach(function (item) {
-               optionsList[item.toLowerCase()] = item;
-       });
-
-       for (var index in attributes) {
-               var attrib = attributes[index];
-               var name;
-
-               if (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
-                       name = attrib.name.replace("tabulator-", "");
-
-                       if (typeof optionsList[name] !== "undefined") {
-                               options[optionsList[name]] = this._attribValue(attrib.value);
-                       }
-               }
-       }
-};
-
-//get value of attribute
-HtmlTableImport.prototype._attribValue = function (value) {
-       if (value === "true") {
-               return true;
-       }
-
-       if (value === "false") {
-               return false;
-       }
-
-       return value;
-};
-
-//find column if it has already been defined
-HtmlTableImport.prototype._findCol = function (title) {
-       var match = this.table.options.columns.find(function (column) {
-               return column.title === title;
-       });
-
-       return match || false;
-};
-
-//extract column from headers
-HtmlTableImport.prototype._extractHeaders = function (headers, rows) {
-       for (var index = 0; index < headers.length; index++) {
-               var header = headers[index],
-                   exists = false,
-                   col = this._findCol(header.textContent),
-                   width,
-                   attributes;
-
-               if (col) {
-                       exists = true;
-               } else {
-                       col = { title: header.textContent.trim() };
-               }
-
-               if (!col.field) {
-                       col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
-               }
-
-               width = header.getAttribute("width");
-
-               if (width && !col.width) {
-                       col.width = width;
-               }
-
-               //check for tablator inline options
-               attributes = header.attributes;
-
-               // //check for tablator inline options
-               this._extractOptions(header, col, Column.prototype.defaultOptionList);
-
-               this.fieldIndex[index] = col.field;
-
-               if (col.field == this.table.options.index) {
-                       this.hasIndex = true;
-               }
-
-               if (!exists) {
-                       this.table.options.columns.push(col);
-               }
-       }
-};
-
-//generate blank headers
-HtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {
-       for (var index = 0; index < headers.length; index++) {
-               var header = headers[index],
-                   col = { title: "", field: "col" + index };
-
-               this.fieldIndex[index] = col.field;
-
-               var width = header.getAttribute("width");
-
-               if (width) {
-                       col.width = width;
-               }
-
-               this.table.options.columns.push(col);
-       }
-};
-
-Tabulator.prototype.registerModule("htmlTableImport", HtmlTableImport);
-var Keybindings = function Keybindings(table) {
-       this.table = table; //hold Tabulator object
-       this.watchKeys = null;
-       this.pressedKeys = null;
-       this.keyupBinding = false;
-       this.keydownBinding = false;
-};
-
-Keybindings.prototype.initialize = function () {
-       var bindings = this.table.options.keybindings,
-           mergedBindings = {};
-
-       this.watchKeys = {};
-       this.pressedKeys = [];
-
-       if (bindings !== false) {
-
-               for (var key in this.bindings) {
-                       mergedBindings[key] = this.bindings[key];
-               }
-
-               if (Object.keys(bindings).length) {
-
-                       for (var _key in bindings) {
-                               mergedBindings[_key] = bindings[_key];
-                       }
-               }
-
-               this.mapBindings(mergedBindings);
-               this.bindEvents();
-       }
-};
-
-Keybindings.prototype.mapBindings = function (bindings) {
-       var _this70 = this;
-
-       var self = this;
-
-       var _loop2 = function _loop2(key) {
-
-               if (_this70.actions[key]) {
-
-                       if (bindings[key]) {
-
-                               if (_typeof(bindings[key]) !== "object") {
-                                       bindings[key] = [bindings[key]];
-                               }
-
-                               bindings[key].forEach(function (binding) {
-                                       self.mapBinding(key, binding);
-                               });
-                       }
-               } else {
-                       console.warn("Key Binding Error - no such action:", key);
-               }
-       };
-
-       for (var key in bindings) {
-               _loop2(key);
-       }
-};
-
-Keybindings.prototype.mapBinding = function (action, symbolsList) {
-       var self = this;
-
-       var binding = {
-               action: this.actions[action],
-               keys: [],
-               ctrl: false,
-               shift: false,
-               meta: false
-       };
-
-       var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+");
-
-       symbols.forEach(function (symbol) {
-               switch (symbol) {
-                       case "ctrl":
-                               binding.ctrl = true;
-                               break;
-
-                       case "shift":
-                               binding.shift = true;
-                               break;
-
-                       case "meta":
-                               binding.meta = true;
-                               break;
-
-                       default:
-                               symbol = parseInt(symbol);
-                               binding.keys.push(symbol);
-
-                               if (!self.watchKeys[symbol]) {
-                                       self.watchKeys[symbol] = [];
-                               }
-
-                               self.watchKeys[symbol].push(binding);
-               }
-       });
-};
-
-Keybindings.prototype.bindEvents = function () {
-       var self = this;
-
-       this.keyupBinding = function (e) {
-               var code = e.keyCode;
-               var bindings = self.watchKeys[code];
-
-               if (bindings) {
-
-                       self.pressedKeys.push(code);
-
-                       bindings.forEach(function (binding) {
-                               self.checkBinding(e, binding);
-                       });
-               }
-       };
-
-       this.keydownBinding = function (e) {
-               var code = e.keyCode;
-               var bindings = self.watchKeys[code];
-
-               if (bindings) {
-
-                       var index = self.pressedKeys.indexOf(code);
-
-                       if (index > -1) {
-                               self.pressedKeys.splice(index, 1);
-                       }
-               }
-       };
-
-       this.table.element.addEventListener("keydown", this.keyupBinding);
-
-       this.table.element.addEventListener("keyup", this.keydownBinding);
-};
-
-Keybindings.prototype.clearBindings = function () {
-       if (this.keyupBinding) {
-               this.table.element.removeEventListener("keydown", this.keyupBinding);
-       }
-
-       if (this.keydownBinding) {
-               this.table.element.removeEventListener("keyup", this.keydownBinding);
-       }
-};
-
-Keybindings.prototype.checkBinding = function (e, binding) {
-       var self = this,
-           match = true;
-
-       if (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta) {
-               binding.keys.forEach(function (key) {
-                       var index = self.pressedKeys.indexOf(key);
-
-                       if (index == -1) {
-                               match = false;
-                       }
-               });
-
-               if (match) {
-                       binding.action.call(self, e);
-               }
-
-               return true;
-       }
-
-       return false;
-};
-
-//default bindings
-Keybindings.prototype.bindings = {
-       navPrev: "shift + 9",
-       navNext: 9,
-       navUp: 38,
-       navDown: 40,
-       scrollPageUp: 33,
-       scrollPageDown: 34,
-       scrollToStart: 36,
-       scrollToEnd: 35,
-       undo: "ctrl + 90",
-       redo: "ctrl + 89",
-       copyToClipboard: "ctrl + 67"
-};
-
-//default actions
-Keybindings.prototype.actions = {
-       keyBlock: function keyBlock(e) {
-               e.stopPropagation();
-               e.preventDefault();
-       },
-       scrollPageUp: function scrollPageUp(e) {
-               var rowManager = this.table.rowManager,
-                   newPos = rowManager.scrollTop - rowManager.height,
-                   scrollMax = rowManager.element.scrollHeight;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       if (newPos >= 0) {
-                               rowManager.element.scrollTop = newPos;
-                       } else {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-                       }
-               }
-
-               this.table.element.focus();
-       },
-       scrollPageDown: function scrollPageDown(e) {
-               var rowManager = this.table.rowManager,
-                   newPos = rowManager.scrollTop + rowManager.height,
-                   scrollMax = rowManager.element.scrollHeight;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       if (newPos <= scrollMax) {
-                               rowManager.element.scrollTop = newPos;
-                       } else {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-                       }
-               }
-
-               this.table.element.focus();
-       },
-       scrollToStart: function scrollToStart(e) {
-               var rowManager = this.table.rowManager;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-               }
-
-               this.table.element.focus();
-       },
-       scrollToEnd: function scrollToEnd(e) {
-               var rowManager = this.table.rowManager;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-               }
-
-               this.table.element.focus();
-       },
-       navPrev: function navPrev(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().prev();
-                       }
-               }
-       },
-
-       navNext: function navNext(e) {
-               var cell = false;
-               var newRow = this.table.options.tabEndNewRow;
-               var nav;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-
-                               nav = cell.nav();
-
-                               if (!nav.next()) {
-                                       if (newRow) {
-
-                                               cell.getElement().firstChild.blur();
-
-                                               if (newRow === true) {
-                                                       newRow = this.table.addRow({});
-                                               } else {
-                                                       if (typeof newRow == "function") {
-                                                               newRow = this.table.addRow(newRow(cell.row.getComponent()));
-                                                       } else {
-                                                               newRow = this.table.addRow(Object.assign({}, newRow));
-                                                       }
-                                               }
-
-                                               newRow.then(function () {
-                                                       setTimeout(function () {
-                                                               nav.next();
-                                                       });
-                                               });
-                                       }
-                               }
-                       }
-               }
-       },
-
-       navLeft: function navLeft(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().left();
-                       }
-               }
-       },
-
-       navRight: function navRight(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().right();
-                       }
-               }
-       },
-
-       navUp: function navUp(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().up();
-                       }
-               }
-       },
-
-       navDown: function navDown(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().down();
-                       }
-               }
-       },
-
-       undo: function undo(e) {
-               var cell = false;
-               if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (!cell) {
-                               e.preventDefault();
-                               this.table.modules.history.undo();
-                       }
-               }
-       },
-
-       redo: function redo(e) {
-               var cell = false;
-               if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (!cell) {
-                               e.preventDefault();
-                               this.table.modules.history.redo();
-                       }
-               }
-       },
-
-       copyToClipboard: function copyToClipboard(e) {
-               if (!this.table.modules.edit.currentCell) {
-                       if (this.table.modExists("clipboard", true)) {
-                               this.table.modules.clipboard.copy(false, true);
-                       }
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("keybindings", Keybindings);
-var Menu = function Menu(table) {
-       this.table = table; //hold Tabulator object
-       this.menuEl = false;
-       this.blurEvent = this.hideMenu.bind(this);
-       this.escEvent = this.escMenu.bind(this);
-       this.nestedMenuBlock = false;
-};
-
-Menu.prototype.initializeColumnHeader = function (column) {
-       var _this71 = this;
-
-       var headerMenuEl;
-
-       if (column.definition.headerContextMenu) {
-               column.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));
-               this.tapHold(column, column.definition.headerContextMenu);
-       }
-
-       // if(column.definition.headerClickMenu){
-       //      column.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));
-       // }
-
-       if (column.definition.headerMenu) {
-
-               headerMenuEl = document.createElement("span");
-               headerMenuEl.classList.add("tabulator-header-menu-button");
-               headerMenuEl.innerHTML = "&vellip;";
-
-               headerMenuEl.addEventListener("click", function (e) {
-                       var menu = typeof column.definition.headerMenu == "function" ? column.definition.headerMenu(column.getComponent(), e) : column.definition.headerMenu;
-                       e.stopPropagation();
-                       e.preventDefault();
-
-                       _this71.loadMenu(e, column, menu);
-               });
-
-               column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);
-       }
-};
-
-Menu.prototype.LoadMenuEvent = function (component, menu, e) {
-       menu = typeof menu == "function" ? menu(component.getComponent(), e) : menu;
-
-       // if(component instanceof Cell){
-       //      e.stopImmediatePropagation();
-       // }
-
-       this.loadMenu(e, component, menu);
-};
-
-Menu.prototype.tapHold = function (component, menu) {
-       var _this72 = this;
-
-       var element = component.getElement(),
-           tapHold = null,
-           loaded = false;
-
-       element.addEventListener("touchstart", function (e) {
-               clearTimeout(tapHold);
-               loaded = false;
-
-               tapHold = setTimeout(function () {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-                       loaded = true;
-
-                       _this72.LoadMenuEvent(component, menu, e);
-               }, 1000);
-       }, { passive: true });
-
-       element.addEventListener("touchend", function (e) {
-               clearTimeout(tapHold);
-               tapHold = null;
-
-               if (loaded) {
-                       e.preventDefault();
-               }
-       });
-};
-
-Menu.prototype.initializeCell = function (cell) {
-       if (cell.column.definition.contextMenu) {
-               cell.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));
-               this.tapHold(cell, cell.column.definition.contextMenu);
-       }
-
-       if (cell.column.definition.clickMenu) {
-               cell.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));
-       }
-};
-
-Menu.prototype.initializeRow = function (row) {
-       if (this.table.options.rowContextMenu) {
-               row.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));
-               this.tapHold(row, this.table.options.rowContextMenu);
-       }
-
-       if (this.table.options.rowClickMenu) {
-               row.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));
-       }
-};
-
-Menu.prototype.initializeGroup = function (group) {
-       if (this.table.options.groupContextMenu) {
-               group.getElement().addEventListener("contextmenu", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));
-               this.tapHold(group, this.table.options.groupContextMenu);
-       }
-
-       if (this.table.options.groupClickMenu) {
-               group.getElement().addEventListener("click", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));
-       }
-};
-
-Menu.prototype.loadMenu = function (e, component, menu) {
-       var _this73 = this;
-
-       var docHeight = Math.max(document.body.offsetHeight, window.innerHeight),
-           touch = !(e instanceof MouseEvent);
-
-       if (!touch) {
-               e.preventDefault();
-       }
-
-       //abort if no menu set
-       if (!menu || !menu.length) {
-               return;
-       }
-
-       if (this.nestedMenuBlock) {
-               //abort if child menu already open
-               if (this.isOpen()) {
-                       return;
-               }
-       } else {
-               this.nestedMenuBlock = setTimeout(function () {
-                       _this73.nestedMenuBlock = false;
-               }, 100);
-       }
-
-       this.hideMenu();
-
-       this.menuEl = document.createElement("div");
-       this.menuEl.classList.add("tabulator-menu");
-
-       menu.forEach(function (item) {
-               var itemEl = document.createElement("div");
-               var label = item.label;
-               var disabled = item.disabled;
-
-               if (item.separator) {
-                       itemEl.classList.add("tabulator-menu-separator");
-               } else {
-                       itemEl.classList.add("tabulator-menu-item");
-
-                       if (typeof label == "function") {
-                               label = label(component.getComponent());
-                       }
-
-                       if (label instanceof Node) {
-                               itemEl.appendChild(label);
-                       } else {
-                               itemEl.innerHTML = label;
-                       }
-
-                       if (typeof disabled == "function") {
-                               disabled = disabled(component.getComponent());
-                       }
-
-                       if (disabled) {
-                               itemEl.classList.add("tabulator-menu-item-disabled");
-                               itemEl.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                               });
-                       } else {
-                               itemEl.addEventListener("click", function (e) {
-                                       _this73.hideMenu();
-                                       item.action(e, component.getComponent());
-                               });
-                       }
-               }
-
-               _this73.menuEl.appendChild(itemEl);
-       });
-
-       this.menuEl.style.top = (touch ? e.touches[0].pageY : e.pageY) + "px";
-       this.menuEl.style.left = (touch ? e.touches[0].pageX : e.pageX) + "px";
-
-       setTimeout(function () {
-               _this73.table.rowManager.element.addEventListener("scroll", _this73.blurEvent);
-               document.body.addEventListener("click", _this73.blurEvent);
-               document.body.addEventListener("contextmenu", _this73.blurEvent);
-               document.body.addEventListener("keydown", _this73.escEvent);
-       }, 100);
-
-       document.body.appendChild(this.menuEl);
-
-       //move menu to start on right edge if it is too close to the edge of the screen
-       if (e.pageX + this.menuEl.offsetWidth >= document.body.offsetWidth) {
-               this.menuEl.style.left = "";
-               this.menuEl.style.right = document.body.offsetWidth - e.pageX + "px";
-       }
-
-       //move menu to start on bottom edge if it is too close to the edge of the screen
-       if (e.pageY + this.menuEl.offsetHeight >= docHeight) {
-               this.menuEl.style.top = "";
-               this.menuEl.style.bottom = docHeight - e.pageY + "px";
-       }
-};
-
-Menu.prototype.isOpen = function () {
-       return !!this.menuEl.parentNode;
-};
-
-Menu.prototype.escMenu = function (e) {
-       if (e.keyCode == 27) {
-               this.hideMenu();
-       }
-};
-
-Menu.prototype.hideMenu = function () {
-       if (this.menuEl.parentNode) {
-               this.menuEl.parentNode.removeChild(this.menuEl);
-       }
-
-       if (this.escEvent) {
-               document.body.removeEventListener("keydown", this.escEvent);
-       }
-
-       if (this.blurEvent) {
-               document.body.removeEventListener("click", this.blurEvent);
-               document.body.removeEventListener("contextmenu", this.blurEvent);
-               this.table.rowManager.element.removeEventListener("scroll", this.blurEvent);
-       }
-};
-
-//default accessors
-Menu.prototype.menus = {};
-
-Tabulator.prototype.registerModule("menu", Menu);
-var MoveColumns = function MoveColumns(table) {
-       this.table = table; //hold Tabulator object
-       this.placeholderElement = this.createPlaceholderElement();
-       this.hoverElement = false; //floating column header element
-       this.checkTimeout = false; //click check timeout holder
-       this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click
-       this.moving = false; //currently moving column
-       this.toCol = false; //destination column
-       this.toColAfter = false; //position of moving column relative to the desitnation column
-       this.startX = 0; //starting position within header element
-       this.autoScrollMargin = 40; //auto scroll on edge when within margin
-       this.autoScrollStep = 5; //auto scroll distance in pixels
-       this.autoScrollTimeout = false; //auto scroll timeout
-       this.touchMove = false;
-
-       this.moveHover = this.moveHover.bind(this);
-       this.endMove = this.endMove.bind(this);
-};
-
-MoveColumns.prototype.createPlaceholderElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-col");
-       el.classList.add("tabulator-col-placeholder");
-
-       return el;
-};
-
-MoveColumns.prototype.initializeColumn = function (column) {
-       var self = this,
-           config = {},
-           colEl;
-
-       if (!column.modules.frozen) {
-
-               colEl = column.getElement();
-
-               config.mousemove = function (e) {
-                       if (column.parent === self.moving.parent) {
-                               if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {
-                                       if (self.toCol !== column || !self.toColAfter) {
-                                               colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
-                                               self.moveColumn(column, true);
-                                       }
-                               } else {
-                                       if (self.toCol !== column || self.toColAfter) {
-                                               colEl.parentNode.insertBefore(self.placeholderElement, colEl);
-                                               self.moveColumn(column, false);
-                                       }
-                               }
-                       }
-               }.bind(self);
-
-               colEl.addEventListener("mousedown", function (e) {
-                       self.touchMove = false;
-                       if (e.which === 1) {
-                               self.checkTimeout = setTimeout(function () {
-                                       self.startMove(e, column);
-                               }, self.checkPeriod);
-                       }
-               });
-
-               colEl.addEventListener("mouseup", function (e) {
-                       if (e.which === 1) {
-                               if (self.checkTimeout) {
-                                       clearTimeout(self.checkTimeout);
-                               }
-                       }
-               });
-
-               self.bindTouchEvents(column);
-       }
-
-       column.modules.moveColumn = config;
-};
-
-MoveColumns.prototype.bindTouchEvents = function (column) {
-       var self = this,
-           colEl = column.getElement(),
-           startXMove = false,
-           //shifting center position of the cell
-       dir = false,
-           currentCol,
-           nextCol,
-           prevCol,
-           nextColWidth,
-           prevColWidth,
-           nextColWidthLast,
-           prevColWidthLast;
-
-       colEl.addEventListener("touchstart", function (e) {
-               self.checkTimeout = setTimeout(function () {
-                       self.touchMove = true;
-                       currentCol = column;
-                       nextCol = column.nextColumn();
-                       nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                       prevCol = column.prevColumn();
-                       prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                       nextColWidthLast = 0;
-                       prevColWidthLast = 0;
-                       startXMove = false;
-
-                       self.startMove(e, column);
-               }, self.checkPeriod);
-       }, { passive: true });
-
-       colEl.addEventListener("touchmove", function (e) {
-               var halfCol, diff, moveToCol;
-
-               if (self.moving) {
-                       self.moveHover(e);
-
-                       if (!startXMove) {
-                               startXMove = e.touches[0].pageX;
-                       }
-
-                       diff = e.touches[0].pageX - startXMove;
-
-                       if (diff > 0) {
-                               if (nextCol && diff - nextColWidthLast > nextColWidth) {
-                                       moveToCol = nextCol;
-
-                                       if (moveToCol !== column) {
-                                               startXMove = e.touches[0].pageX;
-                                               moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);
-                                               self.moveColumn(moveToCol, true);
-                                       }
-                               }
-                       } else {
-                               if (prevCol && -diff - prevColWidthLast > prevColWidth) {
-                                       moveToCol = prevCol;
-
-                                       if (moveToCol !== column) {
-                                               startXMove = e.touches[0].pageX;
-                                               moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());
-                                               self.moveColumn(moveToCol, false);
-                                       }
-                               }
-                       }
-
-                       if (moveToCol) {
-                               currentCol = moveToCol;
-                               nextCol = moveToCol.nextColumn();
-                               nextColWidthLast = nextColWidth;
-                               nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                               prevCol = moveToCol.prevColumn();
-                               prevColWidthLast = prevColWidth;
-                               prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                       }
-               }
-       }, { passive: true });
-
-       colEl.addEventListener("touchend", function (e) {
-               if (self.checkTimeout) {
-                       clearTimeout(self.checkTimeout);
-               }
-               if (self.moving) {
-                       self.endMove(e);
-               }
-       });
-};
-
-MoveColumns.prototype.startMove = function (e, column) {
-       var element = column.getElement();
-
-       this.moving = column;
-       this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;
-
-       this.table.element.classList.add("tabulator-block-select");
-
-       //create placeholder
-       this.placeholderElement.style.width = column.getWidth() + "px";
-       this.placeholderElement.style.height = column.getHeight() + "px";
-
-       element.parentNode.insertBefore(this.placeholderElement, element);
-       element.parentNode.removeChild(element);
-
-       //create hover element
-       this.hoverElement = element.cloneNode(true);
-       this.hoverElement.classList.add("tabulator-moving");
-
-       this.table.columnManager.getElement().appendChild(this.hoverElement);
-
-       this.hoverElement.style.left = "0";
-       this.hoverElement.style.bottom = "0";
-
-       if (!this.touchMove) {
-               this._bindMouseMove();
-
-               document.body.addEventListener("mousemove", this.moveHover);
-               document.body.addEventListener("mouseup", this.endMove);
-       }
-
-       this.moveHover(e);
-};
-
-MoveColumns.prototype._bindMouseMove = function () {
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               if (column.modules.moveColumn.mousemove) {
-                       column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove);
-               }
-       });
-};
-
-MoveColumns.prototype._unbindMouseMove = function () {
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               if (column.modules.moveColumn.mousemove) {
-                       column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove);
-               }
-       });
-};
-
-MoveColumns.prototype.moveColumn = function (column, after) {
-       var movingCells = this.moving.getCells();
-
-       this.toCol = column;
-       this.toColAfter = after;
-
-       if (after) {
-               column.getCells().forEach(function (cell, i) {
-                       var cellEl = cell.getElement();
-                       cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
-               });
-       } else {
-               column.getCells().forEach(function (cell, i) {
-                       var cellEl = cell.getElement();
-                       cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
-               });
-       }
-};
-
-MoveColumns.prototype.endMove = function (e) {
-       if (e.which === 1 || this.touchMove) {
-               this._unbindMouseMove();
-
-               this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-               this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-               this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-               this.table.element.classList.remove("tabulator-block-select");
-
-               if (this.toCol) {
-                       this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);
-               }
-
-               this.moving = false;
-               this.toCol = false;
-               this.toColAfter = false;
-
-               if (!this.touchMove) {
-                       document.body.removeEventListener("mousemove", this.moveHover);
-                       document.body.removeEventListener("mouseup", this.endMove);
-               }
-       }
-};
-
-MoveColumns.prototype.moveHover = function (e) {
-       var self = this,
-           columnHolder = self.table.columnManager.getElement(),
-           scrollLeft = columnHolder.scrollLeft,
-           xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,
-           scrollPos;
-
-       self.hoverElement.style.left = xPos - self.startX + "px";
-
-       if (xPos - scrollLeft < self.autoScrollMargin) {
-               if (!self.autoScrollTimeout) {
-                       self.autoScrollTimeout = setTimeout(function () {
-                               scrollPos = Math.max(0, scrollLeft - 5);
-                               self.table.rowManager.getElement().scrollLeft = scrollPos;
-                               self.autoScrollTimeout = false;
-                       }, 1);
-               }
-       }
-
-       if (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {
-               if (!self.autoScrollTimeout) {
-                       self.autoScrollTimeout = setTimeout(function () {
-                               scrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);
-                               self.table.rowManager.getElement().scrollLeft = scrollPos;
-                               self.autoScrollTimeout = false;
-                       }, 1);
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("moveColumn", MoveColumns);
-
-var MoveRows = function MoveRows(table) {
-
-       this.table = table; //hold Tabulator object
-       this.placeholderElement = this.createPlaceholderElement();
-       this.hoverElement = false; //floating row header element
-       this.checkTimeout = false; //click check timeout holder
-       this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click
-       this.moving = false; //currently moving row
-       this.toRow = false; //destination row
-       this.toRowAfter = false; //position of moving row relative to the desitnation row
-       this.hasHandle = false; //row has handle instead of fully movable row
-       this.startY = 0; //starting Y position within header element
-       this.startX = 0; //starting X position within header element
-
-       this.moveHover = this.moveHover.bind(this);
-       this.endMove = this.endMove.bind(this);
-       this.tableRowDropEvent = false;
-
-       this.touchMove = false;
-
-       this.connection = false;
-       this.connectionSelectorsTables = false;
-       this.connectionSelectorsElements = false;
-       this.connectionElements = [];
-       this.connections = [];
-
-       this.connectedTable = false;
-       this.connectedRow = false;
-};
-
-MoveRows.prototype.createPlaceholderElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-row");
-       el.classList.add("tabulator-row-placeholder");
-
-       return el;
-};
-
-MoveRows.prototype.initialize = function (handle) {
-       this.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;
-       this.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;
-
-       this.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;
-};
-
-MoveRows.prototype.setHandle = function (handle) {
-       this.hasHandle = handle;
-};
-
-MoveRows.prototype.initializeGroupHeader = function (group) {
-       var self = this,
-           config = {},
-           rowEl;
-
-       //inter table drag drop
-       config.mouseup = function (e) {
-               self.tableRowDrop(e, row);
-       }.bind(self);
-
-       //same table drag drop
-       config.mousemove = function (e) {
-               if (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {
-                       if (self.toRow !== group || !self.toRowAfter) {
-                               var rowEl = group.getElement();
-                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                               self.moveRow(group, true);
-                       }
-               } else {
-                       if (self.toRow !== group || self.toRowAfter) {
-                               var rowEl = group.getElement();
-                               if (rowEl.previousSibling) {
-                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                                       self.moveRow(group, false);
-                               }
-                       }
-               }
-       }.bind(self);
-
-       group.modules.moveRow = config;
-};
-
-MoveRows.prototype.initializeRow = function (row) {
-       var self = this,
-           config = {},
-           rowEl;
-
-       //inter table drag drop
-       config.mouseup = function (e) {
-               self.tableRowDrop(e, row);
-       }.bind(self);
-
-       //same table drag drop
-       config.mousemove = function (e) {
-               if (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
-                       if (self.toRow !== row || !self.toRowAfter) {
-                               var rowEl = row.getElement();
-                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                               self.moveRow(row, true);
-                       }
-               } else {
-                       if (self.toRow !== row || self.toRowAfter) {
-                               var rowEl = row.getElement();
-                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                               self.moveRow(row, false);
-                       }
-               }
-       }.bind(self);
-
-       if (!this.hasHandle) {
-
-               rowEl = row.getElement();
-
-               rowEl.addEventListener("mousedown", function (e) {
-                       if (e.which === 1) {
-                               self.checkTimeout = setTimeout(function () {
-                                       self.startMove(e, row);
-                               }, self.checkPeriod);
-                       }
-               });
-
-               rowEl.addEventListener("mouseup", function (e) {
-                       if (e.which === 1) {
-                               if (self.checkTimeout) {
-                                       clearTimeout(self.checkTimeout);
-                               }
-                       }
-               });
-
-               this.bindTouchEvents(row, row.getElement());
-       }
-
-       row.modules.moveRow = config;
-};
-
-MoveRows.prototype.initializeCell = function (cell) {
-       var self = this,
-           cellEl = cell.getElement();
-
-       cellEl.addEventListener("mousedown", function (e) {
-               if (e.which === 1) {
-                       self.checkTimeout = setTimeout(function () {
-                               self.startMove(e, cell.row);
-                       }, self.checkPeriod);
-               }
-       });
-
-       cellEl.addEventListener("mouseup", function (e) {
-               if (e.which === 1) {
-                       if (self.checkTimeout) {
-                               clearTimeout(self.checkTimeout);
-                       }
-               }
-       });
-
-       this.bindTouchEvents(cell.row, cell.getElement());
-};
-
-MoveRows.prototype.bindTouchEvents = function (row, element) {
-       var self = this,
-           startYMove = false,
-           //shifting center position of the cell
-       dir = false,
-           currentRow,
-           nextRow,
-           prevRow,
-           nextRowHeight,
-           prevRowHeight,
-           nextRowHeightLast,
-           prevRowHeightLast;
-
-       element.addEventListener("touchstart", function (e) {
-               self.checkTimeout = setTimeout(function () {
-                       self.touchMove = true;
-                       currentRow = row;
-                       nextRow = row.nextRow();
-                       nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                       prevRow = row.prevRow();
-                       prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                       nextRowHeightLast = 0;
-                       prevRowHeightLast = 0;
-                       startYMove = false;
-
-                       self.startMove(e, row);
-               }, self.checkPeriod);
-       }, { passive: true });
-       this.moving, this.toRow, this.toRowAfter;
-       element.addEventListener("touchmove", function (e) {
-
-               var halfCol, diff, moveToRow;
-
-               if (self.moving) {
-                       e.preventDefault();
-
-                       self.moveHover(e);
-
-                       if (!startYMove) {
-                               startYMove = e.touches[0].pageY;
-                       }
-
-                       diff = e.touches[0].pageY - startYMove;
-
-                       if (diff > 0) {
-                               if (nextRow && diff - nextRowHeightLast > nextRowHeight) {
-                                       moveToRow = nextRow;
-
-                                       if (moveToRow !== row) {
-                                               startYMove = e.touches[0].pageY;
-                                               moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);
-                                               self.moveRow(moveToRow, true);
-                                       }
-                               }
-                       } else {
-                               if (prevRow && -diff - prevRowHeightLast > prevRowHeight) {
-                                       moveToRow = prevRow;
-
-                                       if (moveToRow !== row) {
-                                               startYMove = e.touches[0].pageY;
-                                               moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());
-                                               self.moveRow(moveToRow, false);
-                                       }
-                               }
-                       }
-
-                       if (moveToRow) {
-                               currentRow = moveToRow;
-                               nextRow = moveToRow.nextRow();
-                               nextRowHeightLast = nextRowHeight;
-                               nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                               prevRow = moveToRow.prevRow();
-                               prevRowHeightLast = prevRowHeight;
-                               prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                       }
-               }
-       });
-
-       element.addEventListener("touchend", function (e) {
-               if (self.checkTimeout) {
-                       clearTimeout(self.checkTimeout);
-               }
-               if (self.moving) {
-                       self.endMove(e);
-                       self.touchMove = false;
-               }
-       });
-};
-
-MoveRows.prototype._bindMouseMove = function () {
-       var self = this;
-
-       self.table.rowManager.getDisplayRows().forEach(function (row) {
-               if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                       row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove);
-               }
-       });
-};
-
-MoveRows.prototype._unbindMouseMove = function () {
-       var self = this;
-
-       self.table.rowManager.getDisplayRows().forEach(function (row) {
-               if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                       row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove);
-               }
-       });
-};
-
-MoveRows.prototype.startMove = function (e, row) {
-       var element = row.getElement();
-
-       this.setStartPosition(e, row);
-
-       this.moving = row;
-
-       this.table.element.classList.add("tabulator-block-select");
-
-       //create placeholder
-       this.placeholderElement.style.width = row.getWidth() + "px";
-       this.placeholderElement.style.height = row.getHeight() + "px";
-
-       if (!this.connection) {
-               element.parentNode.insertBefore(this.placeholderElement, element);
-               element.parentNode.removeChild(element);
-       } else {
-               this.table.element.classList.add("tabulator-movingrow-sending");
-               this.connectToTables(row);
-       }
-
-       //create hover element
-       this.hoverElement = element.cloneNode(true);
-       this.hoverElement.classList.add("tabulator-moving");
-
-       if (this.connection) {
-               document.body.appendChild(this.hoverElement);
-               this.hoverElement.style.left = "0";
-               this.hoverElement.style.top = "0";
-               this.hoverElement.style.width = this.table.element.clientWidth + "px";
-               this.hoverElement.style.whiteSpace = "nowrap";
-               this.hoverElement.style.overflow = "hidden";
-               this.hoverElement.style.pointerEvents = "none";
-       } else {
-               this.table.rowManager.getTableElement().appendChild(this.hoverElement);
-
-               this.hoverElement.style.left = "0";
-               this.hoverElement.style.top = "0";
-
-               this._bindMouseMove();
-       }
-
-       document.body.addEventListener("mousemove", this.moveHover);
-       document.body.addEventListener("mouseup", this.endMove);
-
-       this.moveHover(e);
-};
-
-MoveRows.prototype.setStartPosition = function (e, row) {
-       var pageX = this.touchMove ? e.touches[0].pageX : e.pageX,
-           pageY = this.touchMove ? e.touches[0].pageY : e.pageY,
-           element,
-           position;
-
-       element = row.getElement();
-       if (this.connection) {
-               position = element.getBoundingClientRect();
-
-               this.startX = position.left - pageX + window.pageXOffset;
-               this.startY = position.top - pageY + window.pageYOffset;
-       } else {
-               this.startY = pageY - element.getBoundingClientRect().top;
-       }
-};
-
-MoveRows.prototype.endMove = function (e) {
-       if (!e || e.which === 1 || this.touchMove) {
-               this._unbindMouseMove();
-
-               if (!this.connection) {
-                       this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-                       this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-               }
-
-               this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-               this.table.element.classList.remove("tabulator-block-select");
-
-               if (this.toRow) {
-                       this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);
-               }
-
-               this.moving = false;
-               this.toRow = false;
-               this.toRowAfter = false;
-
-               document.body.removeEventListener("mousemove", this.moveHover);
-               document.body.removeEventListener("mouseup", this.endMove);
-
-               if (this.connection) {
-                       this.table.element.classList.remove("tabulator-movingrow-sending");
-                       this.disconnectFromTables();
-               }
-       }
-};
-
-MoveRows.prototype.moveRow = function (row, after) {
-       this.toRow = row;
-       this.toRowAfter = after;
-};
-
-MoveRows.prototype.moveHover = function (e) {
-       if (this.connection) {
-               this.moveHoverConnections.call(this, e);
-       } else {
-               this.moveHoverTable.call(this, e);
-       }
-};
-
-MoveRows.prototype.moveHoverTable = function (e) {
-       var rowHolder = this.table.rowManager.getElement(),
-           scrollTop = rowHolder.scrollTop,
-           yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,
-           scrollPos;
-
-       this.hoverElement.style.top = yPos - this.startY + "px";
-};
-
-MoveRows.prototype.moveHoverConnections = function (e) {
-       this.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + "px";
-       this.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + "px";
-};
-
-MoveRows.prototype.elementRowDrop = function (e, element, row) {
-       if (this.table.options.movableRowsElementDrop) {
-               this.table.options.movableRowsElementDrop(e, element, row ? row.getComponent() : false);
-       }
-};
-
-//establish connection with other tables
-MoveRows.prototype.connectToTables = function (row) {
-       var _this74 = this;
-
-       var connectionTables;
-
-       if (this.connectionSelectorsTables) {
-               connectionTables = this.table.modules.comms.getConnections(this.connectionSelectorsTables);
-
-               this.table.options.movableRowsSendingStart.call(this.table, connectionTables);
-
-               this.table.modules.comms.send(this.connectionSelectorsTables, "moveRow", "connect", {
-                       row: row
-               });
-       }
-
-       if (this.connectionSelectorsElements) {
-
-               this.connectionElements = [];
-
-               if (!Array.isArray(this.connectionSelectorsElements)) {
-                       this.connectionSelectorsElements = [this.connectionSelectorsElements];
-               }
-
-               this.connectionSelectorsElements.forEach(function (query) {
-                       if (typeof query === "string") {
-                               _this74.connectionElements = _this74.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));
-                       } else {
-                               _this74.connectionElements.push(query);
-                       }
-               });
-
-               this.connectionElements.forEach(function (element) {
-                       var dropEvent = function dropEvent(e) {
-                               _this74.elementRowDrop(e, element, _this74.moving);
-                       };
-
-                       element.addEventListener("mouseup", dropEvent);
-                       element.tabulatorElementDropEvent = dropEvent;
-
-                       element.classList.add("tabulator-movingrow-receiving");
-               });
-       }
-};
-
-//disconnect from other tables
-MoveRows.prototype.disconnectFromTables = function () {
-       var connectionTables;
-
-       if (this.connectionSelectorsTables) {
-               connectionTables = this.table.modules.comms.getConnections(this.connectionSelectorsTables);
-
-               this.table.options.movableRowsSendingStop.call(this.table, connectionTables);
-
-               this.table.modules.comms.send(this.connectionSelectorsTables, "moveRow", "disconnect");
-       }
-
-       this.connectionElements.forEach(function (element) {
-               element.classList.remove("tabulator-movingrow-receiving");
-               element.removeEventListener("mouseup", element.tabulatorElementDropEvent);
-               delete element.tabulatorElementDropEvent;
-       });
-};
-
-//accept incomming connection
-MoveRows.prototype.connect = function (table, row) {
-       var self = this;
-       if (!this.connectedTable) {
-               this.connectedTable = table;
-               this.connectedRow = row;
-
-               this.table.element.classList.add("tabulator-movingrow-receiving");
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                               row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup);
-                       }
-               });
-
-               self.tableRowDropEvent = self.tableRowDrop.bind(self);
-
-               self.table.element.addEventListener("mouseup", self.tableRowDropEvent);
-
-               this.table.options.movableRowsReceivingStart.call(this.table, row, table);
-
-               return true;
-       } else {
-               console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable);
-               return false;
-       }
-};
-
-//close incomming connection
-MoveRows.prototype.disconnect = function (table) {
-       var self = this;
-       if (table === this.connectedTable) {
-               this.connectedTable = false;
-               this.connectedRow = false;
-
-               this.table.element.classList.remove("tabulator-movingrow-receiving");
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                               row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup);
-                       }
-               });
-
-               self.table.element.removeEventListener("mouseup", self.tableRowDropEvent);
-
-               this.table.options.movableRowsReceivingStop.call(this.table, table);
-       } else {
-               console.warn("Move Row Error - trying to disconnect from non connected table");
-       }
-};
-
-MoveRows.prototype.dropComplete = function (table, row, success) {
-       var sender = false;
-
-       if (success) {
-
-               switch (_typeof(this.table.options.movableRowsSender)) {
-                       case "string":
-                               sender = this.senders[this.table.options.movableRowsSender];
-                               break;
-
-                       case "function":
-                               sender = this.table.options.movableRowsSender;
-                               break;
-               }
-
-               if (sender) {
-                       sender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-               } else {
-                       if (this.table.options.movableRowsSender) {
-                               console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender);
-                       }
-               }
-
-               this.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-       } else {
-               this.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-       }
-
-       this.endMove();
-};
-
-MoveRows.prototype.tableRowDrop = function (e, row) {
-       var receiver = false,
-           success = false;
-
-       console.trace("drop");
-
-       e.stopImmediatePropagation();
-
-       switch (_typeof(this.table.options.movableRowsReceiver)) {
-               case "string":
-                       receiver = this.receivers[this.table.options.movableRowsReceiver];
-                       break;
-
-               case "function":
-                       receiver = this.table.options.movableRowsReceiver;
-                       break;
-       }
-
-       if (receiver) {
-               success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-       } else {
-               console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver);
-       }
-
-       if (success) {
-               this.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-       } else {
-               this.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-       }
-
-       this.table.modules.comms.send(this.connectedTable, "moveRow", "dropcomplete", {
-               row: row,
-               success: success
-       });
-};
-
-MoveRows.prototype.receivers = {
-       insert: function insert(fromRow, toRow, fromTable) {
-               this.table.addRow(fromRow.getData(), undefined, toRow);
-               return true;
-       },
-
-       add: function add(fromRow, toRow, fromTable) {
-               this.table.addRow(fromRow.getData());
-               return true;
-       },
-
-       update: function update(fromRow, toRow, fromTable) {
-               if (toRow) {
-                       toRow.update(fromRow.getData());
-                       return true;
-               }
-
-               return false;
-       },
-
-       replace: function replace(fromRow, toRow, fromTable) {
-               if (toRow) {
-                       this.table.addRow(fromRow.getData(), undefined, toRow);
-                       toRow.delete();
-                       return true;
-               }
-
-               return false;
-       }
-};
-
-MoveRows.prototype.senders = {
-       delete: function _delete(fromRow, toRow, toTable) {
-               fromRow.delete();
-       }
-};
-
-MoveRows.prototype.commsReceived = function (table, action, data) {
-       switch (action) {
-               case "connect":
-                       return this.connect(table, data.row);
-                       break;
-
-               case "disconnect":
-                       return this.disconnect(table);
-                       break;
-
-               case "dropcomplete":
-                       return this.dropComplete(table, data.row, data.success);
-                       break;
-       }
-};
-
-Tabulator.prototype.registerModule("moveRow", MoveRows);
-var Mutator = function Mutator(table) {
-       this.table = table; //hold Tabulator object
-       this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of muatation types
-       this.enabled = true;
-};
-
-//initialize column mutator
-Mutator.prototype.initializeColumn = function (column) {
-       var self = this,
-           match = false,
-           config = {};
-
-       this.allowedTypes.forEach(function (type) {
-               var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                   mutator;
-
-               if (column.definition[key]) {
-                       mutator = self.lookupMutator(column.definition[key]);
-
-                       if (mutator) {
-                               match = true;
-
-                               config[key] = {
-                                       mutator: mutator,
-                                       params: column.definition[key + "Params"] || {}
-                               };
-                       }
-               }
-       });
-
-       if (match) {
-               column.modules.mutate = config;
-       }
-};
-
-Mutator.prototype.lookupMutator = function (value) {
-       var mutator = false;
-
-       //set column mutator
-       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-               case "string":
-                       if (this.mutators[value]) {
-                               mutator = this.mutators[value];
-                       } else {
-                               console.warn("Mutator Error - No such mutator found, ignoring: ", value);
-                       }
-                       break;
-
-               case "function":
-                       mutator = value;
-                       break;
-       }
-
-       return mutator;
-};
-
-//apply mutator to row
-Mutator.prototype.transformRow = function (data, type, updatedData) {
-       var self = this,
-           key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-           value;
-
-       if (this.enabled) {
-
-               self.table.columnManager.traverse(function (column) {
-                       var mutator, params, component;
-
-                       if (column.modules.mutate) {
-                               mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
-
-                               if (mutator) {
-                                       value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data);
-
-                                       if (type == "data" || typeof value !== "undefined") {
-                                               component = column.getComponent();
-                                               params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
-                                               column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
-                                       }
-                               }
-                       }
-               });
-       }
-
-       return data;
-};
-
-//apply mutator to new cell value
-Mutator.prototype.transformCell = function (cell, value) {
-       var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,
-           tempData = {};
-
-       if (mutator) {
-               tempData = Object.assign(tempData, cell.row.getData());
-               cell.column.setFieldValue(tempData, value);
-               return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent());
-       } else {
-               return value;
-       }
-};
-
-Mutator.prototype.enable = function () {
-       this.enabled = true;
-};
-
-Mutator.prototype.disable = function () {
-       this.enabled = false;
-};
-
-//default mutators
-Mutator.prototype.mutators = {};
-
-Tabulator.prototype.registerModule("mutator", Mutator);
-var Page = function Page(table) {
-
-       this.table = table; //hold Tabulator object
-
-       this.mode = "local";
-       this.progressiveLoad = false;
-
-       this.size = 0;
-       this.page = 1;
-       this.count = 5;
-       this.max = 1;
-
-       this.displayIndex = 0; //index in display pipeline
-
-       this.initialLoad = true;
-
-       this.pageSizes = [];
-
-       this.dataReceivedNames = {};
-       this.dataSentNames = {};
-
-       this.createElements();
-};
-
-Page.prototype.createElements = function () {
-
-       var button;
-
-       this.element = document.createElement("span");
-       this.element.classList.add("tabulator-paginator");
-
-       this.pagesElement = document.createElement("span");
-       this.pagesElement.classList.add("tabulator-pages");
-
-       button = document.createElement("button");
-       button.classList.add("tabulator-page");
-       button.setAttribute("type", "button");
-       button.setAttribute("role", "button");
-       button.setAttribute("aria-label", "");
-       button.setAttribute("title", "");
-
-       this.firstBut = button.cloneNode(true);
-       this.firstBut.setAttribute("data-page", "first");
-
-       this.prevBut = button.cloneNode(true);
-       this.prevBut.setAttribute("data-page", "prev");
-
-       this.nextBut = button.cloneNode(true);
-       this.nextBut.setAttribute("data-page", "next");
-
-       this.lastBut = button.cloneNode(true);
-       this.lastBut.setAttribute("data-page", "last");
-
-       if (this.table.options.paginationSizeSelector) {
-               this.pageSizeSelect = document.createElement("select");
-               this.pageSizeSelect.classList.add("tabulator-page-size");
-       }
-};
-
-Page.prototype.generatePageSizeSelectList = function () {
-       var _this75 = this;
-
-       var pageSizes = [];
-
-       if (this.pageSizeSelect) {
-
-               if (Array.isArray(this.table.options.paginationSizeSelector)) {
-                       pageSizes = this.table.options.paginationSizeSelector;
-                       this.pageSizes = pageSizes;
-
-                       if (this.pageSizes.indexOf(this.size) == -1) {
-                               pageSizes.unshift(this.size);
-                       }
-               } else {
-
-                       if (this.pageSizes.indexOf(this.size) == -1) {
-                               pageSizes = [];
-
-                               for (var _i13 = 1; _i13 < 5; _i13++) {
-                                       pageSizes.push(this.size * _i13);
-                               }
-
-                               this.pageSizes = pageSizes;
-                       } else {
-                               pageSizes = this.pageSizes;
-                       }
-               }
-
-               while (this.pageSizeSelect.firstChild) {
-                       this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);
-               }pageSizes.forEach(function (item) {
-                       var itemEl = document.createElement("option");
-                       itemEl.value = item;
-
-                       if (item === true) {
-                               _this75.table.modules.localize.bind("pagination|all", function (value) {
-                                       itemEl.innerHTML = value;
-                               });
-                       } else {
-                               itemEl.innerHTML = item;
-                       }
-
-                       _this75.pageSizeSelect.appendChild(itemEl);
-               });
-
-               this.pageSizeSelect.value = this.size;
-       }
-};
-
-//setup pageination
-Page.prototype.initialize = function (hidden) {
-       var self = this,
-           pageSelectLabel,
-           testElRow,
-           testElCell;
-
-       //update param names
-       this.dataSentNames = Object.assign({}, this.paginationDataSentNames);
-       this.dataSentNames = Object.assign(this.dataSentNames, this.table.options.paginationDataSent);
-
-       this.dataReceivedNames = Object.assign({}, this.paginationDataReceivedNames);
-       this.dataReceivedNames = Object.assign(this.dataReceivedNames, this.table.options.paginationDataReceived);
-
-       //build pagination element
-
-       //bind localizations
-       self.table.modules.localize.bind("pagination|first", function (value) {
-               self.firstBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|first_title", function (value) {
-               self.firstBut.setAttribute("aria-label", value);
-               self.firstBut.setAttribute("title", value);
-       });
-
-       self.table.modules.localize.bind("pagination|prev", function (value) {
-               self.prevBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|prev_title", function (value) {
-               self.prevBut.setAttribute("aria-label", value);
-               self.prevBut.setAttribute("title", value);
-       });
-
-       self.table.modules.localize.bind("pagination|next", function (value) {
-               self.nextBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|next_title", function (value) {
-               self.nextBut.setAttribute("aria-label", value);
-               self.nextBut.setAttribute("title", value);
-       });
-
-       self.table.modules.localize.bind("pagination|last", function (value) {
-               self.lastBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|last_title", function (value) {
-               self.lastBut.setAttribute("aria-label", value);
-               self.lastBut.setAttribute("title", value);
-       });
-
-       //click bindings
-       self.firstBut.addEventListener("click", function () {
-               self.setPage(1).then(function () {}).catch(function () {});
-       });
-
-       self.prevBut.addEventListener("click", function () {
-               self.previousPage().then(function () {}).catch(function () {});
-       });
-
-       self.nextBut.addEventListener("click", function () {
-               self.nextPage().then(function () {}).catch(function () {});
-       });
-
-       self.lastBut.addEventListener("click", function () {
-               self.setPage(self.max).then(function () {}).catch(function () {});
-       });
-
-       if (self.table.options.paginationElement) {
-               self.element = self.table.options.paginationElement;
-       }
-
-       if (this.pageSizeSelect) {
-               pageSelectLabel = document.createElement("label");
-
-               self.table.modules.localize.bind("pagination|page_size", function (value) {
-                       self.pageSizeSelect.setAttribute("aria-label", value);
-                       self.pageSizeSelect.setAttribute("title", value);
-                       pageSelectLabel.innerHTML = value;
-               });
-
-               self.element.appendChild(pageSelectLabel);
-               self.element.appendChild(self.pageSizeSelect);
-
-               self.pageSizeSelect.addEventListener("change", function (e) {
-                       self.setPageSize(self.pageSizeSelect.value == "true" ? true : self.pageSizeSelect.value);
-                       self.setPage(1).then(function () {}).catch(function () {});
-               });
-       }
-
-       //append to DOM
-       self.element.appendChild(self.firstBut);
-       self.element.appendChild(self.prevBut);
-       self.element.appendChild(self.pagesElement);
-       self.element.appendChild(self.nextBut);
-       self.element.appendChild(self.lastBut);
-
-       if (!self.table.options.paginationElement && !hidden) {
-               self.table.footerManager.append(self.element, self);
-       }
-
-       //set default values
-       self.mode = self.table.options.pagination;
-
-       if (self.table.options.paginationSize) {
-               self.size = self.table.options.paginationSize;
-       } else {
-               testElRow = document.createElement("div");
-               testElRow.classList.add("tabulator-row");
-               testElRow.style.visibility = hidden;
-
-               testElCell = document.createElement("div");
-               testElCell.classList.add("tabulator-cell");
-               testElCell.innerHTML = "Page Row Test";
-
-               testElRow.appendChild(testElCell);
-
-               self.table.rowManager.getTableElement().appendChild(testElRow);
-
-               self.size = Math.floor(self.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);
-
-               self.table.rowManager.getTableElement().removeChild(testElRow);
-       }
-
-       // self.page = self.table.options.paginationInitialPage || 1;
-       self.count = self.table.options.paginationButtonCount;
-
-       self.generatePageSizeSelectList();
-};
-
-Page.prototype.initializeProgressive = function (mode) {
-       this.initialize(true);
-       this.mode = "progressive_" + mode;
-       this.progressiveLoad = true;
-};
-
-Page.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-Page.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-//calculate maximum page from number of rows
-Page.prototype.setMaxRows = function (rowCount) {
-       if (!rowCount) {
-               this.max = 1;
-       } else {
-               this.max = this.size === true ? 1 : Math.ceil(rowCount / this.size);
-       }
-
-       if (this.page > this.max) {
-               this.page = this.max;
-       }
-};
-
-//reset to first page without triggering action
-Page.prototype.reset = function (force, columnsChanged) {
-       if (this.mode == "local" || force) {
-               this.page = 1;
-       }
-
-       if (columnsChanged) {
-               this.initialLoad = true;
-       }
-
-       return true;
-};
-
-//set the maxmum page
-Page.prototype.setMaxPage = function (max) {
-
-       max = parseInt(max);
-
-       this.max = max || 1;
-
-       if (this.page > this.max) {
-               this.page = this.max;
-               this.trigger();
-       }
-};
-
-//set current page number
-Page.prototype.setPage = function (page) {
-       var _this76 = this;
-
-       var self = this;
-
-       switch (page) {
-               case "first":
-                       return this.setPage(1);
-                       break;
-
-               case "prev":
-                       return this.previousPage();
-                       break;
-
-               case "next":
-                       return this.nextPage();
-                       break;
-
-               case "last":
-                       return this.setPage(this.max);
-                       break;
-       }
-
-       return new Promise(function (resolve, reject) {
-
-               page = parseInt(page);
-
-               if (page > 0 && page <= _this76.max) {
-                       _this76.page = page;
-                       _this76.trigger().then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-
-                       if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.page) {
-                               self.table.modules.persistence.save("page");
-                       }
-               } else {
-                       console.warn("Pagination Error - Requested page is out of range of 1 - " + _this76.max + ":", page);
-                       reject();
-               }
-       });
-};
-
-Page.prototype.setPageToRow = function (row) {
-       var _this77 = this;
-
-       return new Promise(function (resolve, reject) {
-
-               var rows = _this77.table.rowManager.getDisplayRows(_this77.displayIndex - 1);
-               var index = rows.indexOf(row);
-
-               if (index > -1) {
-                       var page = _this77.size === true ? 1 : Math.ceil((index + 1) / _this77.size);
-
-                       _this77.setPage(page).then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-               } else {
-                       console.warn("Pagination Error - Requested row is not visible");
-                       reject();
-               }
-       });
-};
-
-Page.prototype.setPageSize = function (size) {
-       if (size !== true) {
-               size = parseInt(size);
-       }
-
-       if (size > 0) {
-               this.size = size;
-       }
-
-       if (this.pageSizeSelect) {
-               // this.pageSizeSelect.value = size;
-               this.generatePageSizeSelectList();
-       }
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.page) {
-               this.table.modules.persistence.save("page");
-       }
-};
-
-//setup the pagination buttons
-Page.prototype._setPageButtons = function () {
-       var self = this;
-
-       var leftSize = Math.floor((this.count - 1) / 2);
-       var rightSize = Math.ceil((this.count - 1) / 2);
-       var min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);
-       var max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);
-
-       while (self.pagesElement.firstChild) {
-               self.pagesElement.removeChild(self.pagesElement.firstChild);
-       }if (self.page == 1) {
-               self.firstBut.disabled = true;
-               self.prevBut.disabled = true;
-       } else {
-               self.firstBut.disabled = false;
-               self.prevBut.disabled = false;
-       }
-
-       if (self.page == self.max) {
-               self.lastBut.disabled = true;
-               self.nextBut.disabled = true;
-       } else {
-               self.lastBut.disabled = false;
-               self.nextBut.disabled = false;
-       }
-
-       for (var _i14 = min; _i14 <= max; _i14++) {
-               if (_i14 > 0 && _i14 <= self.max) {
-                       self.pagesElement.appendChild(self._generatePageButton(_i14));
-               }
-       }
-
-       this.footerRedraw();
-};
-
-Page.prototype._generatePageButton = function (page) {
-       var self = this,
-           button = document.createElement("button");
-
-       button.classList.add("tabulator-page");
-       if (page == self.page) {
-               button.classList.add("active");
-       }
-
-       button.setAttribute("type", "button");
-       button.setAttribute("role", "button");
-
-       self.table.modules.localize.bind("pagination|page_title", function (value) {
-               button.setAttribute("aria-label", value + " " + page);
-               button.setAttribute("title", value + " " + page);
-       });
-
-       button.setAttribute("data-page", page);
-       button.textContent = page;
-
-       button.addEventListener("click", function (e) {
-               self.setPage(page).then(function () {}).catch(function () {});
-       });
-
-       return button;
-};
-
-//previous page
-Page.prototype.previousPage = function () {
-       var _this78 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this78.page > 1) {
-                       _this78.page--;
-                       _this78.trigger().then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-
-                       if (_this78.table.options.persistence && _this78.table.modExists("persistence", true) && _this78.table.modules.persistence.config.page) {
-                               _this78.table.modules.persistence.save("page");
-                       }
-               } else {
-                       console.warn("Pagination Error - Previous page would be less than page 1:", 0);
-                       reject();
-               }
-       });
-};
-
-//next page
-Page.prototype.nextPage = function () {
-       var _this79 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this79.page < _this79.max) {
-                       _this79.page++;
-                       _this79.trigger().then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-
-                       if (_this79.table.options.persistence && _this79.table.modExists("persistence", true) && _this79.table.modules.persistence.config.page) {
-                               _this79.table.modules.persistence.save("page");
-                       }
-               } else {
-                       if (!_this79.progressiveLoad) {
-                               console.warn("Pagination Error - Next page would be greater than maximum page of " + _this79.max + ":", _this79.max + 1);
-                       }
-                       reject();
-               }
-       });
-};
-
-//return current page number
-Page.prototype.getPage = function () {
-       return this.page;
-};
-
-//return max page number
-Page.prototype.getPageMax = function () {
-       return this.max;
-};
-
-Page.prototype.getPageSize = function (size) {
-       return this.size;
-};
-
-Page.prototype.getMode = function () {
-       return this.mode;
-};
-
-//return appropriate rows for current page
-Page.prototype.getRows = function (data) {
-       var output, start, end;
-
-       if (this.mode == "local") {
-               output = [];
-
-               if (this.size === true) {
-                       start = 0;
-                       end = data.length;
-               } else {
-                       start = this.size * (this.page - 1);
-                       end = start + parseInt(this.size);
-               }
-
-               this._setPageButtons();
-
-               for (var _i15 = start; _i15 < end; _i15++) {
-                       if (data[_i15]) {
-                               output.push(data[_i15]);
-                       }
-               }
-
-               return output;
-       } else {
-
-               this._setPageButtons();
-
-               return data.slice(0);
-       }
-};
-
-Page.prototype.trigger = function () {
-       var _this80 = this;
-
-       var left;
-
-       return new Promise(function (resolve, reject) {
-
-               switch (_this80.mode) {
-                       case "local":
-                               left = _this80.table.rowManager.scrollLeft;
-
-                               _this80.table.rowManager.refreshActiveData("page");
-                               _this80.table.rowManager.scrollHorizontal(left);
-
-                               _this80.table.options.pageLoaded.call(_this80.table, _this80.getPage());
-                               resolve();
-                               break;
-
-                       case "remote":
-                       case "progressive_load":
-                       case "progressive_scroll":
-                               _this80.table.modules.ajax.blockActiveRequest();
-                               _this80._getRemotePage().then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-                               break;
-
-                       default:
-                               console.warn("Pagination Error - no such pagination mode:", _this80.mode);
-                               reject();
-               }
-       });
-};
-
-Page.prototype._getRemotePage = function () {
-       var _this81 = this;
-
-       var self = this,
-           oldParams,
-           pageParams;
-
-       return new Promise(function (resolve, reject) {
-
-               if (!self.table.modExists("ajax", true)) {
-                       reject();
-               }
-
-               //record old params and restore after request has been made
-               oldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});
-               pageParams = self.table.modules.ajax.getParams();
-
-               //configure request params
-               pageParams[_this81.dataSentNames.page] = self.page;
-
-               //set page size if defined
-               if (_this81.size) {
-                       pageParams[_this81.dataSentNames.size] = _this81.size;
-               }
-
-               //set sort data if defined
-               if (_this81.table.options.ajaxSorting && _this81.table.modExists("sort")) {
-                       var sorters = self.table.modules.sort.getSort();
-
-                       sorters.forEach(function (item) {
-                               delete item.column;
-                       });
-
-                       pageParams[_this81.dataSentNames.sorters] = sorters;
-               }
-
-               //set filter data if defined
-               if (_this81.table.options.ajaxFiltering && _this81.table.modExists("filter")) {
-                       var filters = self.table.modules.filter.getFilters(true, true);
-                       pageParams[_this81.dataSentNames.filters] = filters;
-               }
-
-               self.table.modules.ajax.setParams(pageParams);
-
-               self.table.modules.ajax.sendRequest(_this81.progressiveLoad).then(function (data) {
-                       self._parseRemoteData(data);
-                       resolve();
-               }).catch(function (e) {
-                       reject();
-               });
-
-               self.table.modules.ajax.setParams(oldParams);
-       });
-};
-
-Page.prototype._parseRemoteData = function (data) {
-       var self = this,
-           left,
-           data,
-           margin;
-
-       if (typeof data[this.dataReceivedNames.last_page] === "undefined") {
-               console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.last_page + "' property");
-       }
-
-       if (data[this.dataReceivedNames.data]) {
-               this.max = parseInt(data[this.dataReceivedNames.last_page]) || 1;
-
-               if (this.progressiveLoad) {
-                       switch (this.mode) {
-                               case "progressive_load":
-
-                                       if (this.page == 1) {
-                                               this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-                                       } else {
-                                               this.table.rowManager.addRows(data[this.dataReceivedNames.data]);
-                                       }
-
-                                       if (this.page < this.max) {
-                                               setTimeout(function () {
-                                                       self.nextPage().then(function () {}).catch(function () {});
-                                               }, self.table.options.ajaxProgressiveLoadDelay);
-                                       }
-                                       break;
-
-                               case "progressive_scroll":
-                                       data = this.table.rowManager.getData().concat(data[this.dataReceivedNames.data]);
-
-                                       this.table.rowManager.setData(data, true, this.initialLoad && this.page == 1);
-
-                                       margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;
-
-                                       if (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {
-                                               self.nextPage().then(function () {}).catch(function () {});
-                                       }
-                                       break;
-                       }
-               } else {
-                       left = this.table.rowManager.scrollLeft;
-
-                       this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-
-                       this.table.rowManager.scrollHorizontal(left);
-
-                       this.table.columnManager.scrollHorizontal(left);
-
-                       this.table.options.pageLoaded.call(this.table, this.getPage());
-               }
-
-               this.initialLoad = false;
-       } else {
-               console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.data + "' property");
-       }
-};
-
-//handle the footer element being redrawn
-Page.prototype.footerRedraw = function () {
-       var footer = this.table.footerManager.element;
-
-       if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-               this.pagesElement.style.display = 'none';
-       } else {
-               this.pagesElement.style.display = '';
-
-               if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-                       this.pagesElement.style.display = 'none';
-               }
-       }
-};
-
-//set the paramter names for pagination requests
-Page.prototype.paginationDataSentNames = {
-       "page": "page",
-       "size": "size",
-       "sorters": "sorters",
-       // "sort_dir":"sort_dir",
-       "filters": "filters"
-       // "filter_value":"filter_value",
-       // "filter_type":"filter_type",
-};
-
-//set the property names for pagination responses
-Page.prototype.paginationDataReceivedNames = {
-       "current_page": "current_page",
-       "last_page": "last_page",
-       "data": "data"
-};
-
-Tabulator.prototype.registerModule("page", Page);
-
-var Persistence = function Persistence(table) {
-       this.table = table; //hold Tabulator object
-       this.mode = "";
-       this.id = "";
-       // this.persistProps = ["field", "width", "visible"];
-       this.defWatcherBlock = false;
-       this.config = {};
-       this.readFunc = false;
-       this.writeFunc = false;
-};
-
-// Test for whether localStorage is available for use.
-Persistence.prototype.localStorageTest = function () {
-       var testKey = "_tabulator_test";
-
-       try {
-               window.localStorage.setItem(testKey, testKey);
-               window.localStorage.removeItem(testKey);
-               return true;
-       } catch (e) {
-               return false;
-       }
-};
-
-//setup parameters
-Persistence.prototype.initialize = function () {
-       //determine persistent layout storage type
-
-       var mode = this.table.options.persistenceMode,
-           id = this.table.options.persistenceID,
-           retreivedData;
-
-       this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
-
-       if (this.table.options.persistenceReaderFunc) {
-               if (typeof this.table.options.persistenceReaderFunc === "function") {
-                       this.readFunc = this.table.options.persistenceReaderFunc;
-               } else {
-                       if (this.readers[this.table.options.persistenceReaderFunc]) {
-                               this.readFunc = this.readers[this.table.options.persistenceReaderFunc];
-                       } else {
-                               console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc);
-                       }
-               }
-       } else {
-               if (this.readers[this.mode]) {
-                       this.readFunc = this.readers[this.mode];
-               } else {
-                       console.warn("Persistence Read Error - invalid reader set", this.mode);
-               }
-       }
-
-       if (this.table.options.persistenceWriterFunc) {
-               if (typeof this.table.options.persistenceWriterFunc === "function") {
-                       this.writeFunc = this.table.options.persistenceWriterFunc;
-               } else {
-                       if (this.readers[this.table.options.persistenceWriterFunc]) {
-                               this.writeFunc = this.readers[this.table.options.persistenceWriterFunc];
-                       } else {
-                               console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc);
-                       }
-               }
-       } else {
-               if (this.writers[this.mode]) {
-                       this.writeFunc = this.writers[this.mode];
-               } else {
-                       console.warn("Persistence Write Error - invalid writer set", this.mode);
-               }
-       }
-
-       //set storage tag
-       this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
-
-       this.config = {
-               sort: this.table.options.persistence === true || this.table.options.persistence.sort,
-               filter: this.table.options.persistence === true || this.table.options.persistence.filter,
-               group: this.table.options.persistence === true || this.table.options.persistence.group,
-               page: this.table.options.persistence === true || this.table.options.persistence.page,
-               columns: this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns
-       };
-
-       //load pagination data if needed
-       if (this.config.page) {
-               retreivedData = this.retreiveData("page");
-
-               if (retreivedData) {
-                       if (typeof retreivedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)) {
-                               this.table.options.paginationSize = retreivedData.paginationSize;
-                       }
-
-                       if (typeof retreivedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)) {
-                               this.table.options.paginationInitialPage = retreivedData.paginationInitialPage;
-                       }
-               }
-       }
-
-       //load group data if needed
-       if (this.config.group) {
-               retreivedData = this.retreiveData("group");
-
-               if (retreivedData) {
-                       if (typeof retreivedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)) {
-                               this.table.options.groupBy = retreivedData.groupBy;
-                       }
-                       if (typeof retreivedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)) {
-                               this.table.options.groupStartOpen = retreivedData.groupStartOpen;
-                       }
-                       if (typeof retreivedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)) {
-                               this.table.options.groupHeader = retreivedData.groupHeader;
-                       }
-               }
-       }
-};
-
-Persistence.prototype.initializeColumn = function (column) {
-       var self = this,
-           def,
-           keys;
-
-       if (this.config.columns) {
-               this.defWatcherBlock = true;
-
-               def = column.getDefinition();
-
-               keys = this.config.columns === true ? Object.keys(def) : this.config.columns;
-
-               keys.forEach(function (key) {
-                       var props = Object.getOwnPropertyDescriptor(def, key);
-                       var value = def[key];
-                       if (props) {
-                               Object.defineProperty(def, key, {
-                                       set: function set(newValue) {
-                                               value = newValue;
-
-                                               if (!self.defWatcherBlock) {
-                                                       self.save("columns");
-                                               }
-
-                                               if (props.set) {
-                                                       props.set(newValue);
-                                               }
-                                       },
-                                       get: function get() {
-                                               if (props.get) {
-                                                       props.get();
-                                               }
-                                               return value;
-                                       }
-                               });
-                       }
-               });
-
-               this.defWatcherBlock = false;
-       }
-};
-
-//load saved definitions
-Persistence.prototype.load = function (type, current) {
-       var data = this.retreiveData(type);
-
-       if (current) {
-               data = data ? this.mergeDefinition(current, data) : current;
-       }
-
-       return data;
-};
-
-//retreive data from memory
-Persistence.prototype.retreiveData = function (type) {
-       return this.readFunc ? this.readFunc(this.id, type) : false;
-};
-
-//merge old and new column definitions
-Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
-       var self = this,
-           output = [];
-
-       // oldCols = oldCols || [];
-       newCols = newCols || [];
-
-       newCols.forEach(function (column, to) {
-
-               var from = self._findColumn(oldCols, column),
-                   keys;
-
-               if (from) {
-
-                       if (self.config.columns === true || self.config.columns == undefined) {
-                               keys = Object.keys(from);
-                               keys.push("width");
-                       } else {
-                               keys = self.config.columns;
-                       }
-
-                       keys.forEach(function (key) {
-                               if (typeof column[key] !== "undefined") {
-                                       from[key] = column[key];
-                               }
-                       });
-
-                       if (from.columns) {
-                               from.columns = self.mergeDefinition(from.columns, column.columns);
-                       }
-
-                       output.push(from);
-               }
-       });
-
-       oldCols.forEach(function (column, i) {
-               var from = self._findColumn(newCols, column);
-               if (!from) {
-                       if (output.length > i) {
-                               output.splice(i, 0, column);
-                       } else {
-                               output.push(column);
-                       }
-               }
-       });
-
-       return output;
-};
-
-//find matching columns
-Persistence.prototype._findColumn = function (columns, subject) {
-       var type = subject.columns ? "group" : subject.field ? "field" : "object";
-
-       return columns.find(function (col) {
-               switch (type) {
-                       case "group":
-                               return col.title === subject.title && col.columns.length === subject.columns.length;
-                               break;
-
-                       case "field":
-                               return col.field === subject.field;
-                               break;
-
-                       case "object":
-                               return col === subject;
-                               break;
-               }
-       });
-};
-
-//save data
-Persistence.prototype.save = function (type) {
-       var data = {};
-
-       switch (type) {
-               case "columns":
-                       data = this.parseColumns(this.table.columnManager.getColumns());
-                       break;
-
-               case "filter":
-                       data = this.table.modules.filter.getFilters();
-                       break;
-
-               case "sort":
-                       data = this.validateSorters(this.table.modules.sort.getSort());
-                       break;
-
-               case "group":
-                       data = this.getGroupConfig();
-                       break;
-
-               case "page":
-                       data = this.getPageConfig();
-                       break;
-       }
-
-       if (this.writeFunc) {
-               this.writeFunc(this.id, type, data);
-       }
-};
-
-//ensure sorters contain no function data
-Persistence.prototype.validateSorters = function (data) {
-       data.forEach(function (item) {
-               item.column = item.field;
-               delete item.field;
-       });
-
-       return data;
-};
-
-Persistence.prototype.getGroupConfig = function () {
-       var data = {};
-
-       if (this.config.group) {
-               if (this.config.group === true || this.config.group.groupBy) {
-                       data.groupBy = this.table.options.groupBy;
-               }
-
-               if (this.config.group === true || this.config.group.groupStartOpen) {
-                       data.groupStartOpen = this.table.options.groupStartOpen;
-               }
-
-               if (this.config.group === true || this.config.group.groupHeader) {
-                       data.groupHeader = this.table.options.groupHeader;
-               }
-       }
-
-       return data;
-};
-
-Persistence.prototype.getPageConfig = function () {
-       var data = {};
-
-       if (this.config.page) {
-               if (this.config.page === true || this.config.page.size) {
-                       data.paginationSize = this.table.modules.page.getPageSize();
-               }
-
-               if (this.config.page === true || this.config.page.page) {
-                       data.paginationInitialPage = this.table.modules.page.getPage();
-               }
-       }
-
-       return data;
-};
-
-//parse columns for data to store
-Persistence.prototype.parseColumns = function (columns) {
-       var self = this,
-           definitions = [],
-           excludedKeys = ["headerContextMenu", "headerMenu", "contextMenu", "clickMenu"];
-
-       columns.forEach(function (column) {
-               var defStore = {},
-                   colDef = column.getDefinition(),
-                   keys;
-
-               if (column.isGroup) {
-                       defStore.title = colDef.title;
-                       defStore.columns = self.parseColumns(column.getColumns());
-               } else {
-                       defStore.field = column.getField();
-
-                       if (self.config.columns === true || self.config.columns == undefined) {
-                               keys = Object.keys(colDef);
-                               keys.push("width");
-                       } else {
-                               keys = self.config.columns;
-                       }
-
-                       keys.forEach(function (key) {
-
-                               switch (key) {
-                                       case "width":
-                                               defStore.width = column.getWidth();
-                                               break;
-                                       case "visible":
-                                               defStore.visible = column.visible;
-                                               break;
-
-                                       default:
-                                               if (typeof colDef[key] !== "function" && excludedKeys.indexOf(key) === -1) {
-                                                       defStore[key] = colDef[key];
-                                               }
-                               }
-                       });
-               }
-
-               definitions.push(defStore);
-       });
-
-       return definitions;
-};
-
-// read peristence information from storage
-Persistence.prototype.readers = {
-       local: function local(id, type) {
-               var data = localStorage.getItem(id + "-" + type);
-
-               return data ? JSON.parse(data) : false;
-       },
-       cookie: function cookie(id, type) {
-               var cookie = document.cookie,
-                   key = id + "-" + type,
-                   cookiePos = cookie.indexOf(key + "="),
-                   end,
-                   data;
-
-               //if cookie exists, decode and load column data into tabulator
-               if (cookiePos > -1) {
-                       cookie = cookie.substr(cookiePos);
-
-                       end = cookie.indexOf(";");
-
-                       if (end > -1) {
-                               cookie = cookie.substr(0, end);
-                       }
-
-                       data = cookie.replace(key + "=", "");
-               }
-
-               return data ? JSON.parse(data) : false;
-       }
-};
-
-//write persistence information to storage
-Persistence.prototype.writers = {
-       local: function local(id, type, data) {
-               localStorage.setItem(id + "-" + type, JSON.stringify(data));
-       },
-       cookie: function cookie(id, type, data) {
-               var expireDate = new Date();
-
-               expireDate.setDate(expireDate.getDate() + 10000);
-
-               document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString();
-       }
-};
-
-Tabulator.prototype.registerModule("persistence", Persistence);
-
-var Print = function Print(table) {
-       this.table = table; //hold Tabulator object
-       this.element = false;
-       this.manualBlock = false;
-};
-
-Print.prototype.initialize = function () {
-       window.addEventListener("beforeprint", this.replaceTable.bind(this));
-       window.addEventListener("afterprint", this.cleanup.bind(this));
-};
-
-Print.prototype.replaceTable = function () {
-       if (!this.manualBlock) {
-               this.element = document.createElement("div");
-               this.element.classList.add("tabulator-print-table");
-
-               this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print"));
-
-               this.table.element.style.display = "none";
-
-               this.table.element.parentNode.insertBefore(this.element, this.table.element);
-       }
-};
-
-Print.prototype.cleanup = function () {
-       document.body.classList.remove("tabulator-print-fullscreen-hide");
-
-       if (this.element && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-               this.table.element.style.display = "";
-       }
-};
-
-Print.prototype.printFullscreen = function (visible, style, config) {
-       var scrollX = window.scrollX,
-           scrollY = window.scrollY,
-           headerEl = document.createElement("div"),
-           footerEl = document.createElement("div"),
-           tableEl = this.table.modules.export.genereateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible, "print"),
-           headerContent,
-           footerContent;
-
-       this.manualBlock = true;
-
-       this.element = document.createElement("div");
-       this.element.classList.add("tabulator-print-fullscreen");
-
-       if (this.table.options.printHeader) {
-               headerEl.classList.add("tabulator-print-header");
-
-               headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;
-
-               if (typeof headerContent == "string") {
-                       headerEl.innerHTML = headerContent;
-               } else {
-                       headerEl.appendChild(headerContent);
-               }
-
-               this.element.appendChild(headerEl);
-       }
-
-       this.element.appendChild(tableEl);
-
-       if (this.table.options.printFooter) {
-               footerEl.classList.add("tabulator-print-footer");
-
-               footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;
-
-               if (typeof footerContent == "string") {
-                       footerEl.innerHTML = footerContent;
-               } else {
-                       footerEl.appendChild(footerContent);
-               }
-
-               this.element.appendChild(footerEl);
-       }
-
-       document.body.classList.add("tabulator-print-fullscreen-hide");
-       document.body.appendChild(this.element);
-
-       if (this.table.options.printFormatter) {
-               this.table.options.printFormatter(this.element, tableEl);
-       }
-
-       window.print();
-
-       this.cleanup();
-
-       window.scrollTo(scrollX, scrollY);
-
-       this.manualBlock = false;
-};
-
-Tabulator.prototype.registerModule("print", Print);
-var ReactiveData = function ReactiveData(table) {
-       this.table = table; //hold Tabulator object
-       this.data = false;
-       this.blocked = false; //block reactivity while performing update
-       this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
-       this.currentVersion = 0;
-};
-
-ReactiveData.prototype.watchData = function (data) {
-       var self = this,
-           pushFunc,
-           version;
-
-       this.currentVersion++;
-
-       version = this.currentVersion;
-
-       self.unwatchData();
-
-       self.data = data;
-
-       //override array push function
-       self.origFuncs.push = data.push;
-
-       Object.defineProperty(self.data, "push", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var args = Array.from(arguments);
-
-                       if (!self.blocked && version === self.currentVersion) {
-                               args.forEach(function (arg) {
-                                       self.table.rowManager.addRowActual(arg, false);
-                               });
-                       }
-
-                       return self.origFuncs.push.apply(data, arguments);
-               }
-       });
-
-       //override array unshift function
-       self.origFuncs.unshift = data.unshift;
-
-       Object.defineProperty(self.data, "unshift", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var args = Array.from(arguments);
-
-                       if (!self.blocked && version === self.currentVersion) {
-                               args.forEach(function (arg) {
-                                       self.table.rowManager.addRowActual(arg, true);
-                               });
-                       }
-
-                       return self.origFuncs.unshift.apply(data, arguments);
-               }
-       });
-
-       //override array shift function
-       self.origFuncs.shift = data.shift;
-
-       Object.defineProperty(self.data, "shift", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var row;
-
-                       if (!self.blocked && version === self.currentVersion) {
-                               if (self.data.length) {
-                                       row = self.table.rowManager.getRowFromDataObject(self.data[0]);
-
-                                       if (row) {
-                                               row.deleteActual();
-                                       }
-                               }
-                       }
-
-                       return self.origFuncs.shift.call(data);
-               }
-       });
-
-       //override array pop function
-       self.origFuncs.pop = data.pop;
-
-       Object.defineProperty(self.data, "pop", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var row;
-                       if (!self.blocked && version === self.currentVersion) {
-                               if (self.data.length) {
-                                       row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
-
-                                       if (row) {
-                                               row.deleteActual();
-                                       }
-                               }
-                       }
-                       return self.origFuncs.pop.call(data);
-               }
-       });
-
-       //override array splice function
-       self.origFuncs.splice = data.splice;
-
-       Object.defineProperty(self.data, "splice", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var args = Array.from(arguments),
-                           start = args[0] < 0 ? data.length + args[0] : args[0],
-                           end = args[1],
-                           newRows = args[2] ? args.slice(2) : false,
-                           startRow;
-
-                       if (!self.blocked && version === self.currentVersion) {
-
-                               //add new rows
-                               if (newRows) {
-                                       startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
-
-                                       if (startRow) {
-                                               newRows.forEach(function (rowData) {
-                                                       self.table.rowManager.addRowActual(rowData, true, startRow, true);
-                                               });
-                                       } else {
-                                               newRows = newRows.slice().reverse();
-
-                                               newRows.forEach(function (rowData) {
-                                                       self.table.rowManager.addRowActual(rowData, true, false, true);
-                                               });
-                                       }
-                               }
-
-                               //delete removed rows
-                               if (end !== 0) {
-                                       var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
-
-                                       oldRows.forEach(function (rowData, i) {
-                                               var row = self.table.rowManager.getRowFromDataObject(rowData);
-
-                                               if (row) {
-                                                       row.deleteActual(i !== oldRows.length - 1);
-                                               }
-                                       });
-                               }
-
-                               if (newRows || end !== 0) {
-                                       self.table.rowManager.reRenderInPosition();
-                               }
-                       }
-
-                       return self.origFuncs.splice.apply(data, arguments);
-               }
-       });
-};
-
-ReactiveData.prototype.unwatchData = function () {
-       if (this.data !== false) {
-               for (var key in this.origFuncs) {
-                       Object.defineProperty(this.data, key, {
-                               enumerable: true,
-                               configurable: true,
-                               writable: true,
-                               value: this.origFuncs.key
-                       });
-               }
-       }
-};
-
-ReactiveData.prototype.watchRow = function (row) {
-       var data = row.getData();
-
-       this.blocked = true;
-
-       for (var key in data) {
-               this.watchKey(row, data, key);
-       }
-
-       if (this.table.options.dataTree) {
-               this.watchTreeChildren(row);
-       }
-
-       this.blocked = false;
-};
-
-ReactiveData.prototype.watchTreeChildren = function (row) {
-       var self = this,
-           childField = row.getData()[this.table.options.dataTreeChildField],
-           origFuncs = {};
-
-       function rebuildTree() {
-               self.table.modules.dataTree.initializeRow(row);
-               self.table.modules.dataTree.layoutRow(row);
-               self.table.rowManager.refreshActiveData("tree", false, true);
-       }
-
-       if (childField) {
-
-               origFuncs.push = childField.push;
-
-               Object.defineProperty(childField, "push", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.push.apply(childField, arguments);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-
-               origFuncs.unshift = childField.unshift;
-
-               Object.defineProperty(childField, "unshift", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.unshift.apply(childField, arguments);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-
-               origFuncs.shift = childField.shift;
-
-               Object.defineProperty(childField, "shift", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.shift.call(childField);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-
-               origFuncs.pop = childField.pop;
-
-               Object.defineProperty(childField, "pop", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.pop.call(childField);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-
-               origFuncs.splice = childField.splice;
-
-               Object.defineProperty(childField, "splice", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var result = origFuncs.splice.apply(childField, arguments);
-
-                               rebuildTree();
-
-                               return result;
-                       }
-               });
-       }
-};
-
-ReactiveData.prototype.watchKey = function (row, data, key) {
-       var self = this,
-           props = Object.getOwnPropertyDescriptor(data, key),
-           value = data[key],
-           version = this.currentVersion;
-
-       Object.defineProperty(data, key, {
-               set: function set(newValue) {
-                       value = newValue;
-                       if (!self.blocked && version === self.currentVersion) {
-                               var update = {};
-                               update[key] = newValue;
-                               row.updateData(update);
-                       }
-
-                       if (props.set) {
-                               props.set(newValue);
-                       }
-               },
-               get: function get() {
-
-                       if (props.get) {
-                               props.get();
-                       }
-
-                       return value;
-               }
-       });
-};
-
-ReactiveData.prototype.unwatchRow = function (row) {
-       var data = row.getData();
-
-       for (var key in data) {
-               Object.defineProperty(data, key, {
-                       value: data[key]
-               });
-       }
-};
-
-ReactiveData.prototype.block = function () {
-       this.blocked = true;
-};
-
-ReactiveData.prototype.unblock = function () {
-       this.blocked = false;
-};
-
-Tabulator.prototype.registerModule("reactiveData", ReactiveData);
-
-var ResizeColumns = function ResizeColumns(table) {
-       this.table = table; //hold Tabulator object
-       this.startColumn = false;
-       this.startX = false;
-       this.startWidth = false;
-       this.handle = null;
-       this.prevHandle = null;
-};
-
-ResizeColumns.prototype.initializeColumn = function (type, column, element) {
-       var self = this,
-           variableHeight = false,
-           mode = this.table.options.resizableColumns;
-
-       //set column resize mode
-       if (type === "header") {
-               variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
-               column.modules.resize = { variableHeight: variableHeight };
-       }
-
-       if (mode === true || mode == type) {
-
-               var handle = document.createElement('div');
-               handle.className = "tabulator-col-resize-handle";
-
-               var prevHandle = document.createElement('div');
-               prevHandle.className = "tabulator-col-resize-handle prev";
-
-               handle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var handleDown = function handleDown(e) {
-                       var nearestColumn = column.getLastColumn();
-
-                       if (nearestColumn && self._checkResizability(nearestColumn)) {
-                               self.startColumn = column;
-                               self._mouseDown(e, nearestColumn, handle);
-                       }
-               };
-
-               handle.addEventListener("mousedown", handleDown);
-               handle.addEventListener("touchstart", handleDown, { passive: true });
-
-               //reszie column on  double click
-               handle.addEventListener("dblclick", function (e) {
-                       var col = column.getLastColumn();
-
-                       if (col && self._checkResizability(col)) {
-                               e.stopPropagation();
-                               col.reinitializeWidth(true);
-                       }
-               });
-
-               prevHandle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var prevHandleDown = function prevHandleDown(e) {
-                       var nearestColumn, colIndex, prevColumn;
-
-                       nearestColumn = column.getFirstColumn();
-
-                       if (nearestColumn) {
-                               colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                               prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                               if (prevColumn && self._checkResizability(prevColumn)) {
-                                       self.startColumn = column;
-                                       self._mouseDown(e, prevColumn, prevHandle);
-                               }
-                       }
-               };
-
-               prevHandle.addEventListener("mousedown", prevHandleDown);
-               prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-               //resize column on double click
-               prevHandle.addEventListener("dblclick", function (e) {
-                       var nearestColumn, colIndex, prevColumn;
-
-                       nearestColumn = column.getFirstColumn();
-
-                       if (nearestColumn) {
-                               colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                               prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                               if (prevColumn && self._checkResizability(prevColumn)) {
-                                       e.stopPropagation();
-                                       prevColumn.reinitializeWidth(true);
-                               }
-                       }
-               });
-
-               element.appendChild(handle);
-               element.appendChild(prevHandle);
-       }
-};
-
-ResizeColumns.prototype._checkResizability = function (column) {
-       return typeof column.definition.resizable != "undefined" ? column.definition.resizable : this.table.options.resizableColumns;
-};
-
-ResizeColumns.prototype._mouseDown = function (e, column, handle) {
-       var self = this;
-
-       self.table.element.classList.add("tabulator-block-select");
-
-       function mouseMove(e) {
-               // self.table.columnManager.tempScrollBlock();
-
-               if (self.table.rtl) {
-                       column.setWidth(self.startWidth - ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-               } else {
-                       column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-               }
-
-               if (self.table.options.virtualDomHoz) {
-                       self.table.vdomHoz.reinitialize(true);
-               }
-
-               if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                       column.checkCellHeights();
-               }
-       }
-
-       function mouseUp(e) {
-
-               //block editor from taking action while resizing is taking place
-               if (self.startColumn.modules.edit) {
-                       self.startColumn.modules.edit.blocked = false;
-               }
-
-               if (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                       column.checkCellHeights();
-               }
-
-               document.body.removeEventListener("mouseup", mouseUp);
-               document.body.removeEventListener("mousemove", mouseMove);
-
-               handle.removeEventListener("touchmove", mouseMove);
-               handle.removeEventListener("touchend", mouseUp);
-
-               self.table.element.classList.remove("tabulator-block-select");
-
-               if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.columns) {
-                       self.table.modules.persistence.save("columns");
-               }
-
-               self.table.options.columnResized.call(self.table, column.getComponent());
-       }
-
-       e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-       //block editor from taking action while resizing is taking place
-       if (self.startColumn.modules.edit) {
-               self.startColumn.modules.edit.blocked = true;
-       }
-
-       self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
-       self.startWidth = column.getWidth();
-
-       document.body.addEventListener("mousemove", mouseMove);
-       document.body.addEventListener("mouseup", mouseUp);
-       handle.addEventListener("touchmove", mouseMove, { passive: true });
-       handle.addEventListener("touchend", mouseUp);
-};
-
-Tabulator.prototype.registerModule("resizeColumns", ResizeColumns);
-var ResizeRows = function ResizeRows(table) {
-       this.table = table; //hold Tabulator object
-       this.startColumn = false;
-       this.startY = false;
-       this.startHeight = false;
-       this.handle = null;
-       this.prevHandle = null;
-};
-
-ResizeRows.prototype.initializeRow = function (row) {
-       var self = this,
-           rowEl = row.getElement();
-
-       var handle = document.createElement('div');
-       handle.className = "tabulator-row-resize-handle";
-
-       var prevHandle = document.createElement('div');
-       prevHandle.className = "tabulator-row-resize-handle prev";
-
-       handle.addEventListener("click", function (e) {
-               e.stopPropagation();
-       });
-
-       var handleDown = function handleDown(e) {
-               self.startRow = row;
-               self._mouseDown(e, row, handle);
-       };
-
-       handle.addEventListener("mousedown", handleDown);
-       handle.addEventListener("touchstart", handleDown, { passive: true });
-
-       prevHandle.addEventListener("click", function (e) {
-               e.stopPropagation();
-       });
-
-       var prevHandleDown = function prevHandleDown(e) {
-               var prevRow = self.table.rowManager.prevDisplayRow(row);
-
-               if (prevRow) {
-                       self.startRow = prevRow;
-                       self._mouseDown(e, prevRow, prevHandle);
-               }
-       };
-
-       prevHandle.addEventListener("mousedown", prevHandleDown);
-       prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-       rowEl.appendChild(handle);
-       rowEl.appendChild(prevHandle);
-};
-
-ResizeRows.prototype._mouseDown = function (e, row, handle) {
-       var self = this;
-
-       self.table.element.classList.add("tabulator-block-select");
-
-       function mouseMove(e) {
-               row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
-       }
-
-       function mouseUp(e) {
-
-               // //block editor from taking action while resizing is taking place
-               // if(self.startColumn.modules.edit){
-               //      self.startColumn.modules.edit.blocked = false;
-               // }
-
-               document.body.removeEventListener("mouseup", mouseMove);
-               document.body.removeEventListener("mousemove", mouseMove);
-
-               handle.removeEventListener("touchmove", mouseMove);
-               handle.removeEventListener("touchend", mouseUp);
-
-               self.table.element.classList.remove("tabulator-block-select");
-
-               self.table.options.rowResized.call(this.table, row.getComponent());
-       }
-
-       e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-       //block editor from taking action while resizing is taking place
-       // if(self.startColumn.modules.edit){
-       //      self.startColumn.modules.edit.blocked = true;
-       // }
-
-       self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY;
-       self.startHeight = row.getHeight();
-
-       document.body.addEventListener("mousemove", mouseMove);
-       document.body.addEventListener("mouseup", mouseUp);
-
-       handle.addEventListener("touchmove", mouseMove, { passive: true });
-       handle.addEventListener("touchend", mouseUp);
-};
-
-Tabulator.prototype.registerModule("resizeRows", ResizeRows);
-var ResizeTable = function ResizeTable(table) {
-       this.table = table; //hold Tabulator object
-       this.binding = false;
-       this.observer = false;
-       this.containerObserver = false;
-
-       this.tableHeight = 0;
-       this.tableWidth = 0;
-       this.containerHeight = 0;
-       this.containerWidth = 0;
-
-       this.autoResize = false;
-};
-
-ResizeTable.prototype.initialize = function (row) {
-       var _this82 = this;
-
-       var table = this.table,
-           tableStyle;
-
-       this.tableHeight = table.element.clientHeight;
-       this.tableWidth = table.element.clientWidth;
-
-       if (table.element.parentNode) {
-               this.containerHeight = table.element.parentNode.clientHeight;
-               this.containerWidth = table.element.parentNode.clientWidth;
-       }
-
-       if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
-
-               this.autoResize = true;
-
-               this.observer = new ResizeObserver(function (entry) {
-                       if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                               var nodeHeight = Math.floor(entry[0].contentRect.height);
-                               var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                               if (_this82.tableHeight != nodeHeight || _this82.tableWidth != nodeWidth) {
-                                       _this82.tableHeight = nodeHeight;
-                                       _this82.tableWidth = nodeWidth;
-
-                                       if (table.element.parentNode) {
-                                               _this82.containerHeight = table.element.parentNode.clientHeight;
-                                               _this82.containerWidth = table.element.parentNode.clientWidth;
-                                       }
-
-                                       if (table.options.virtualDomHoz) {
-                                               table.vdomHoz.reinitialize(true);
-                                       }
-
-                                       table.redraw();
-                               }
-                       }
-               });
-
-               this.observer.observe(table.element);
-
-               tableStyle = window.getComputedStyle(table.element);
-
-               if (this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))) {
-
-                       this.containerObserver = new ResizeObserver(function (entry) {
-                               if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                                       var nodeHeight = Math.floor(entry[0].contentRect.height);
-                                       var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                                       if (_this82.containerHeight != nodeHeight || _this82.containerWidth != nodeWidth) {
-                                               _this82.containerHeight = nodeHeight;
-                                               _this82.containerWidth = nodeWidth;
-                                               _this82.tableHeight = table.element.clientHeight;
-                                               _this82.tableWidth = table.element.clientWidth;
-                                       }
-
-                                       if (table.options.virtualDomHoz) {
-                                               table.vdomHoz.reinitialize(true);
-                                       }
-
-                                       table.redraw();
-                               }
-                       });
-
-                       this.containerObserver.observe(this.table.element.parentNode);
-               }
-       } else {
-               this.binding = function () {
-                       if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-                               if (table.options.virtualDomHoz) {
-                                       table.vdomHoz.reinitialize(true);
-                               }
-
-                               table.redraw();
-                       }
-               };
-
-               window.addEventListener("resize", this.binding);
-       }
-};
-
-ResizeTable.prototype.clearBindings = function (row) {
-       if (this.binding) {
-               window.removeEventListener("resize", this.binding);
-       }
-
-       if (this.observer) {
-               this.observer.unobserve(this.table.element);
-       }
-
-       if (this.containerObserver) {
-               this.containerObserver.unobserve(this.table.element.parentNode);
-       }
-};
-
-Tabulator.prototype.registerModule("resizeTable", ResizeTable);
-var ResponsiveLayout = function ResponsiveLayout(table) {
-       this.table = table; //hold Tabulator object
-       this.columns = [];
-       this.hiddenColumns = [];
-       this.mode = "";
-       this.index = 0;
-       this.collapseFormatter = [];
-       this.collapseStartOpen = true;
-       this.collapseHandleColumn = false;
-};
-
-//generate resposive columns list
-ResponsiveLayout.prototype.initialize = function () {
-       var self = this,
-           columns = [];
-
-       this.mode = this.table.options.responsiveLayout;
-       this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;
-       this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
-       this.hiddenColumns = [];
-
-       //detemine level of responsivity for each column
-       this.table.columnManager.columnsByIndex.forEach(function (column, i) {
-               if (column.modules.responsive) {
-                       if (column.modules.responsive.order && column.modules.responsive.visible) {
-                               column.modules.responsive.index = i;
-                               columns.push(column);
-
-                               if (!column.visible && self.mode === "collapse") {
-                                       self.hiddenColumns.push(column);
-                               }
-                       }
-               }
-       });
-
-       //sort list by responsivity
-       columns = columns.reverse();
-       columns = columns.sort(function (a, b) {
-               var diff = b.modules.responsive.order - a.modules.responsive.order;
-               return diff || b.modules.responsive.index - a.modules.responsive.index;
-       });
-
-       this.columns = columns;
-
-       if (this.mode === "collapse") {
-               this.generateCollapsedContent();
-       }
-
-       //assign collapse column
-       for (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i16 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
-               var _ref;
-
-               if (_isArray) {
-                       if (_i16 >= _iterator.length) break;
-                       _ref = _iterator[_i16++];
-               } else {
-                       _i16 = _iterator.next();
-                       if (_i16.done) break;
-                       _ref = _i16.value;
-               }
-
-               var col = _ref;
-
-               if (col.definition.formatter == "responsiveCollapse") {
-                       this.collapseHandleColumn = col;
-                       break;
-               }
-       }
-
-       if (this.collapseHandleColumn) {
-               if (this.hiddenColumns.length) {
-                       this.collapseHandleColumn.show();
-               } else {
-                       this.collapseHandleColumn.hide();
-               }
-       }
-};
-
-//define layout information
-ResponsiveLayout.prototype.initializeColumn = function (column) {
-       var def = column.getDefinition();
-
-       column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
-};
-
-ResponsiveLayout.prototype.initializeRow = function (row) {
-       var el;
-
-       if (row.type !== "calc") {
-               el = document.createElement("div");
-               el.classList.add("tabulator-responsive-collapse");
-
-               row.modules.responsiveLayout = {
-                       element: el,
-                       open: this.collapseStartOpen
-               };
-
-               if (!this.collapseStartOpen) {
-                       el.style.display = 'none';
-               }
-       }
-};
-
-ResponsiveLayout.prototype.layoutRow = function (row) {
-       var rowEl = row.getElement();
-
-       if (row.modules.responsiveLayout) {
-               rowEl.appendChild(row.modules.responsiveLayout.element);
-               this.generateCollapsedRowContent(row);
-       }
-};
-
-//update column visibility
-ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
-       var index;
-       if (column.modules.responsive) {
-               column.modules.responsive.visible = visible;
-               this.initialize();
-       }
-};
-
-ResponsiveLayout.prototype.hideColumn = function (column) {
-       var colCount = this.hiddenColumns.length;
-
-       column.hide(false, true);
-
-       if (this.mode === "collapse") {
-               this.hiddenColumns.unshift(column);
-               this.generateCollapsedContent();
-
-               if (this.collapseHandleColumn && !colCount) {
-                       this.collapseHandleColumn.show();
-               }
-       }
-};
-
-ResponsiveLayout.prototype.showColumn = function (column) {
-       var index;
-
-       column.show(false, true);
-       //set column width to prevent calculation loops on uninitialized columns
-       column.setWidth(column.getWidth());
-
-       if (this.mode === "collapse") {
-               index = this.hiddenColumns.indexOf(column);
-
-               if (index > -1) {
-                       this.hiddenColumns.splice(index, 1);
-               }
-
-               this.generateCollapsedContent();
-
-               if (this.collapseHandleColumn && !this.hiddenColumns.length) {
-                       this.collapseHandleColumn.hide();
-               }
-       }
-};
-
-//redraw columns to fit space
-ResponsiveLayout.prototype.update = function () {
-       var self = this,
-           working = true;
-
-       while (working) {
-
-               var width = self.table.modules.layout.getMode() == "fitColumns" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();
-
-               var diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;
-
-               if (diff < 0) {
-                       //table is too wide
-                       var column = self.columns[self.index];
-
-                       if (column) {
-                               self.hideColumn(column);
-                               self.index++;
-                       } else {
-                               working = false;
-                       }
-               } else {
-
-                       //table has spare space
-                       var _column = self.columns[self.index - 1];
-
-                       if (_column) {
-                               if (diff > 0) {
-                                       if (diff >= _column.getWidth()) {
-                                               self.showColumn(_column);
-                                               self.index--;
-                                       } else {
-                                               working = false;
-                                       }
-                               } else {
-                                       working = false;
-                               }
-                       } else {
-                               working = false;
-                       }
-               }
-
-               if (!self.table.rowManager.activeRowsCount) {
-                       self.table.rowManager.renderEmptyScroll();
-               }
-       }
-};
-
-ResponsiveLayout.prototype.generateCollapsedContent = function () {
-       var self = this,
-           rows = this.table.rowManager.getDisplayRows();
-
-       rows.forEach(function (row) {
-               self.generateCollapsedRowContent(row);
-       });
-};
-
-ResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {
-       var el, contents;
-
-       if (row.modules.responsiveLayout) {
-               el = row.modules.responsiveLayout.element;
-
-               while (el.firstChild) {
-                       el.removeChild(el.firstChild);
-               }contents = this.collapseFormatter(this.generateCollapsedRowData(row));
-               if (contents) {
-                       el.appendChild(contents);
-               }
-       }
-};
-
-ResponsiveLayout.prototype.generateCollapsedRowData = function (row) {
-       var self = this,
-           data = row.getData(),
-           output = [],
-           mockCellComponent;
-
-       this.hiddenColumns.forEach(function (column) {
-               var value = column.getFieldValue(data);
-
-               if (column.definition.title && column.field) {
-                       if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
-
-                               mockCellComponent = {
-                                       value: false,
-                                       data: {},
-                                       getValue: function getValue() {
-                                               return value;
-                                       },
-                                       getData: function getData() {
-                                               return data;
-                                       },
-                                       getElement: function getElement() {
-                                               return document.createElement("div");
-                                       },
-                                       getRow: function getRow() {
-                                               return row.getComponent();
-                                       },
-                                       getColumn: function getColumn() {
-                                               return column.getComponent();
-                                       }
-                               };
-
-                               output.push({
-                                       title: column.definition.title,
-                                       value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
-                               });
-                       } else {
-                               output.push({
-                                       title: column.definition.title,
-                                       value: value
-                               });
-                       }
-               }
-       });
-
-       return output;
-};
-
-ResponsiveLayout.prototype.formatCollapsedData = function (data) {
-       var list = document.createElement("table"),
-           listContents = "";
-
-       data.forEach(function (item) {
-               var div = document.createElement("div");
-
-               if (item.value instanceof Node) {
-                       div.appendChild(item.value);
-                       item.value = div.innerHTML;
-               }
-
-               listContents += "<tr><td><strong>" + item.title + "</strong></td><td>" + item.value + "</td></tr>";
-       });
-
-       list.innerHTML = listContents;
-
-       return Object.keys(data).length ? list : "";
-};
-
-Tabulator.prototype.registerModule("responsiveLayout", ResponsiveLayout);
-
-var SelectRow = function SelectRow(table) {
-       this.table = table; //hold Tabulator object
-       this.selecting = false; //flag selecting in progress
-       this.lastClickedRow = false; //last clicked row
-       this.selectPrev = []; //hold previously selected element for drag drop selection
-       this.selectedRows = []; //hold selected rows
-       this.headerCheckboxElement = null; // hold header select element
-};
-
-SelectRow.prototype.clearSelectionData = function (silent) {
-       this.selecting = false;
-       this.lastClickedRow = false;
-       this.selectPrev = [];
-       this.selectedRows = [];
-
-       if (!silent) {
-               this._rowSelectionChanged();
-       }
-};
-
-SelectRow.prototype.initializeRow = function (row) {
-       var self = this,
-           element = row.getElement();
-
-       // trigger end of row selection
-       var endSelect = function endSelect() {
-
-               setTimeout(function () {
-                       self.selecting = false;
-               }, 50);
-
-               document.body.removeEventListener("mouseup", endSelect);
-       };
-
-       row.modules.select = { selected: false };
-
-       //set row selection class
-       if (self.table.options.selectableCheck.call(this.table, row.getComponent())) {
-               element.classList.add("tabulator-selectable");
-               element.classList.remove("tabulator-unselectable");
-
-               if (self.table.options.selectable && self.table.options.selectable != "highlight") {
-                       if (self.table.options.selectableRangeMode === "click") {
-                               element.addEventListener("click", function (e) {
-                                       if (e.shiftKey) {
-                                               self.table._clearSelection();
-                                               self.lastClickedRow = self.lastClickedRow || row;
-
-                                               var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
-                                               var rowIdx = self.table.rowManager.getDisplayRowIndex(row);
-
-                                               var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;
-                                               var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;
-
-                                               var rows = self.table.rowManager.getDisplayRows().slice(0);
-                                               var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
-
-                                               if (e.ctrlKey || e.metaKey) {
-                                                       toggledRows.forEach(function (toggledRow) {
-                                                               if (toggledRow !== self.lastClickedRow) {
-
-                                                                       if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
-                                                                               if (self.selectedRows.length < self.table.options.selectable) {
-                                                                                       self.toggleRow(toggledRow);
-                                                                               }
-                                                                       } else {
-                                                                               self.toggleRow(toggledRow);
-                                                                       }
-                                                               }
-                                                       });
-                                                       self.lastClickedRow = row;
-                                               } else {
-                                                       self.deselectRows(undefined, true);
-
-                                                       if (self.table.options.selectable !== true) {
-                                                               if (toggledRows.length > self.table.options.selectable) {
-                                                                       toggledRows = toggledRows.slice(0, self.table.options.selectable);
-                                                               }
-                                                       }
-
-                                                       self.selectRows(toggledRows);
-                                               }
-                                               self.table._clearSelection();
-                                       } else if (e.ctrlKey || e.metaKey) {
-                                               self.toggleRow(row);
-                                               self.lastClickedRow = row;
-                                       } else {
-                                               self.deselectRows(undefined, true);
-                                               self.selectRows(row);
-                                               self.lastClickedRow = row;
-                                       }
-                               });
-                       } else {
-                               element.addEventListener("click", function (e) {
-                                       if (!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()) {
-                                               self.table._clearSelection();
-                                       }
-
-                                       if (!self.selecting) {
-                                               self.toggleRow(row);
-                                       }
-                               });
-
-                               element.addEventListener("mousedown", function (e) {
-                                       if (e.shiftKey) {
-                                               self.table._clearSelection();
-
-                                               self.selecting = true;
-
-                                               self.selectPrev = [];
-
-                                               document.body.addEventListener("mouseup", endSelect);
-                                               document.body.addEventListener("keyup", endSelect);
-
-                                               self.toggleRow(row);
-
-                                               return false;
-                                       }
-                               });
-
-                               element.addEventListener("mouseenter", function (e) {
-                                       if (self.selecting) {
-                                               self.table._clearSelection();
-                                               self.toggleRow(row);
-
-                                               if (self.selectPrev[1] == row) {
-                                                       self.toggleRow(self.selectPrev[0]);
-                                               }
-                                       }
-                               });
-
-                               element.addEventListener("mouseout", function (e) {
-                                       if (self.selecting) {
-                                               self.table._clearSelection();
-                                               self.selectPrev.unshift(row);
-                                       }
-                               });
-                       }
-               }
-       } else {
-               element.classList.add("tabulator-unselectable");
-               element.classList.remove("tabulator-selectable");
-       }
-};
-
-//toggle row selection
-SelectRow.prototype.toggleRow = function (row) {
-       if (this.table.options.selectableCheck.call(this.table, row.getComponent())) {
-               if (row.modules.select && row.modules.select.selected) {
-                       this._deselectRow(row);
-               } else {
-                       this._selectRow(row);
-               }
-       }
-};
-
-//select a number of rows
-SelectRow.prototype.selectRows = function (rows) {
-       var _this83 = this;
-
-       var rowMatch;
-
-       switch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {
-               case "undefined":
-                       this.table.rowManager.rows.forEach(function (row) {
-                               _this83._selectRow(row, true, true);
-                       });
-
-                       this._rowSelectionChanged();
-                       break;
-
-               case "string":
-
-                       rowMatch = this.table.rowManager.findRow(rows);
-
-                       if (rowMatch) {
-                               this._selectRow(rowMatch, true, true);
-                       } else {
-                               this.table.rowManager.getRows(rows).forEach(function (row) {
-                                       _this83._selectRow(row, true, true);
-                               });
-                       }
-
-                       this._rowSelectionChanged();
-                       break;
-
-               default:
-                       if (Array.isArray(rows)) {
-                               rows.forEach(function (row) {
-                                       _this83._selectRow(row, true, true);
-                               });
-
-                               this._rowSelectionChanged();
-                       } else {
-                               this._selectRow(rows, false, true);
-                       }
-                       break;
-       }
-};
-
-//select an individual row
-SelectRow.prototype._selectRow = function (rowInfo, silent, force) {
-       var index;
-
-       //handle max row count
-       if (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {
-               if (this.selectedRows.length >= this.table.options.selectable) {
-                       if (this.table.options.selectableRollingSelection) {
-                               this._deselectRow(this.selectedRows[0]);
-                       } else {
-                               return false;
-                       }
-               }
-       }
-
-       var row = this.table.rowManager.findRow(rowInfo);
-
-       if (row) {
-               if (this.selectedRows.indexOf(row) == -1) {
-                       if (!row.modules.select) {
-                               row.modules.select = {};
-                       }
-
-                       row.modules.select.selected = true;
-                       if (row.modules.select.checkboxEl) {
-                               row.modules.select.checkboxEl.checked = true;
-                       }
-                       row.getElement().classList.add("tabulator-selected");
-
-                       this.selectedRows.push(row);
-
-                       if (this.table.options.dataTreeSelectPropagate) {
-                               this.childRowSelection(row, true);
-                       }
-
-                       if (!silent) {
-                               this.table.options.rowSelected.call(this.table, row.getComponent());
-                       }
-
-                       this._rowSelectionChanged(silent);
-               }
-       } else {
-               if (!silent) {
-                       console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo);
-               }
-       }
-};
-
-SelectRow.prototype.isRowSelected = function (row) {
-       return this.selectedRows.indexOf(row) !== -1;
-};
-
-//deselect a number of rows
-SelectRow.prototype.deselectRows = function (rows, silent) {
-       var self = this,
-           rowCount;
-
-       if (typeof rows == "undefined") {
-
-               rowCount = self.selectedRows.length;
-
-               for (var _i17 = 0; _i17 < rowCount; _i17++) {
-                       self._deselectRow(self.selectedRows[0], true);
-               }
-
-               self._rowSelectionChanged(silent);
-       } else {
-               if (Array.isArray(rows)) {
-                       rows.forEach(function (row) {
-                               self._deselectRow(row, true);
-                       });
-
-                       self._rowSelectionChanged(silent);
-               } else {
-                       self._deselectRow(rows, silent);
-               }
-       }
-};
-
-//deselect an individual row
-SelectRow.prototype._deselectRow = function (rowInfo, silent) {
-       var self = this,
-           row = self.table.rowManager.findRow(rowInfo),
-           index;
-
-       if (row) {
-               index = self.selectedRows.findIndex(function (selectedRow) {
-                       return selectedRow == row;
-               });
-
-               if (index > -1) {
-
-                       if (!row.modules.select) {
-                               row.modules.select = {};
-                       }
-
-                       row.modules.select.selected = false;
-                       if (row.modules.select.checkboxEl) {
-                               row.modules.select.checkboxEl.checked = false;
-                       }
-                       row.getElement().classList.remove("tabulator-selected");
-                       self.selectedRows.splice(index, 1);
-
-                       if (this.table.options.dataTreeSelectPropagate) {
-                               this.childRowSelection(row, false);
-                       }
-
-                       if (!silent) {
-                               self.table.options.rowDeselected.call(this.table, row.getComponent());
-                       }
-
-                       self._rowSelectionChanged(silent);
-               }
-       } else {
-               if (!silent) {
-                       console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo);
-               }
-       }
-};
-
-SelectRow.prototype.getSelectedData = function () {
-       var data = [];
-
-       this.selectedRows.forEach(function (row) {
-               data.push(row.getData());
-       });
-
-       return data;
-};
-
-SelectRow.prototype.getSelectedRows = function () {
-
-       var rows = [];
-
-       this.selectedRows.forEach(function (row) {
-               rows.push(row.getComponent());
-       });
-
-       return rows;
-};
-
-SelectRow.prototype._rowSelectionChanged = function (silent) {
-       if (this.headerCheckboxElement) {
-               if (this.selectedRows.length === 0) {
-                       this.headerCheckboxElement.checked = false;
-                       this.headerCheckboxElement.indeterminate = false;
-               } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
-                       this.headerCheckboxElement.checked = true;
-                       this.headerCheckboxElement.indeterminate = false;
-               } else {
-                       this.headerCheckboxElement.indeterminate = true;
-                       this.headerCheckboxElement.checked = false;
-               }
-       }
-
-       if (!silent) {
-               this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
-       }
-};
-
-SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
-       if (!row._row.modules.select) {
-               row._row.modules.select = {};
-       }
-
-       row._row.modules.select.checkboxEl = element;
-};
-
-SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
-       this.headerCheckboxElement = element;
-};
-
-SelectRow.prototype.childRowSelection = function (row, select) {
-       var children = this.table.modules.dataTree.getChildren(row);
-
-       if (select) {
-               for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i18 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
-                       var _ref2;
-
-                       if (_isArray2) {
-                               if (_i18 >= _iterator2.length) break;
-                               _ref2 = _iterator2[_i18++];
-                       } else {
-                               _i18 = _iterator2.next();
-                               if (_i18.done) break;
-                               _ref2 = _i18.value;
-                       }
-
-                       var child = _ref2;
-
-                       this._selectRow(child, true);
-               }
-       } else {
-               for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i19 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
-                       var _ref3;
-
-                       if (_isArray3) {
-                               if (_i19 >= _iterator3.length) break;
-                               _ref3 = _iterator3[_i19++];
-                       } else {
-                               _i19 = _iterator3.next();
-                               if (_i19.done) break;
-                               _ref3 = _i19.value;
-                       }
-
-                       var _child = _ref3;
-
-                       this._deselectRow(_child, true);
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("selectRow", SelectRow);
-
-var Sort = function Sort(table) {
-       this.table = table; //hold Tabulator object
-       this.sortList = []; //holder current sort
-       this.changed = false; //has the sort changed since last render
-};
-
-//initialize column header for sorting
-Sort.prototype.initializeColumn = function (column, content) {
-       var self = this,
-           sorter = false,
-           colEl,
-           arrowEl;
-
-       switch (_typeof(column.definition.sorter)) {
-               case "string":
-                       if (self.sorters[column.definition.sorter]) {
-                               sorter = self.sorters[column.definition.sorter];
-                       } else {
-                               console.warn("Sort Error - No such sorter found: ", column.definition.sorter);
-                       }
-                       break;
-
-               case "function":
-                       sorter = column.definition.sorter;
-                       break;
-       }
-
-       column.modules.sort = {
-               sorter: sorter, dir: "none",
-               params: column.definition.sorterParams || {},
-               startingDir: column.definition.headerSortStartingDir || "asc",
-               tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
-       };
-
-       if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
-
-               colEl = column.getElement();
-
-               colEl.classList.add("tabulator-sortable");
-
-               arrowEl = document.createElement("div");
-               arrowEl.classList.add("tabulator-col-sorter");
-
-               if (_typeof(this.table.options.headerSortElement) == "object") {
-                       arrowEl.appendChild(this.table.options.headerSortElement);
-               } else {
-                       arrowEl.innerHTML = this.table.options.headerSortElement;
-               }
-
-               //create sorter arrow
-               content.appendChild(arrowEl);
-
-               column.modules.sort.element = arrowEl;
-
-               //sort on click
-               colEl.addEventListener("click", function (e) {
-                       var dir = "",
-                           sorters = [],
-                           match = false;
-
-                       if (column.modules.sort) {
-                               if (column.modules.sort.tristate) {
-                                       if (column.modules.sort.dir == "none") {
-                                               dir = column.modules.sort.startingDir;
-                                       } else {
-                                               if (column.modules.sort.dir == column.modules.sort.startingDir) {
-                                                       dir = column.modules.sort.dir == "asc" ? "desc" : "asc";
-                                               } else {
-                                                       dir = "none";
-                                               }
-                                       }
-                               } else {
-                                       switch (column.modules.sort.dir) {
-                                               case "asc":
-                                                       dir = "desc";
-                                                       break;
-
-                                               case "desc":
-                                                       dir = "asc";
-                                                       break;
-
-                                               default:
-                                                       dir = column.modules.sort.startingDir;
-                                       }
-                               }
-
-                               if (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {
-                                       sorters = self.getSort();
-
-                                       match = sorters.findIndex(function (sorter) {
-                                               return sorter.field === column.getField();
-                                       });
-
-                                       if (match > -1) {
-                                               sorters[match].dir = dir;
-
-                                               if (match != sorters.length - 1) {
-                                                       match = sorters.splice(match, 1)[0];
-                                                       if (dir != "none") {
-                                                               sorters.push(match);
-                                                       }
-                                               }
-                                       } else {
-                                               if (dir != "none") {
-                                                       sorters.push({ column: column, dir: dir });
-                                               }
-                                       }
-
-                                       //add to existing sort
-                                       self.setSort(sorters);
-                               } else {
-                                       if (dir == "none") {
-                                               self.clear();
-                                       } else {
-                                               //sort by column only
-                                               self.setSort(column, dir);
-                                       }
-                               }
-
-                               self.table.rowManager.sorterRefresh(!self.sortList.length);
-                       }
-               });
-       }
-};
-
-//check if the sorters have changed since last use
-Sort.prototype.hasChanged = function () {
-       var changed = this.changed;
-       this.changed = false;
-       return changed;
-};
-
-//return current sorters
-Sort.prototype.getSort = function () {
-       var self = this,
-           sorters = [];
-
-       self.sortList.forEach(function (item) {
-               if (item.column) {
-                       sorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });
-               }
-       });
-
-       return sorters;
-};
-
-//change sort list and trigger sort
-Sort.prototype.setSort = function (sortList, dir) {
-       var self = this,
-           newSortList = [];
-
-       if (!Array.isArray(sortList)) {
-               sortList = [{ column: sortList, dir: dir }];
-       }
-
-       sortList.forEach(function (item) {
-               var column;
-
-               column = self.table.columnManager.findColumn(item.column);
-
-               if (column) {
-                       item.column = column;
-                       newSortList.push(item);
-                       self.changed = true;
-               } else {
-                       console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column);
-               }
-       });
-
-       self.sortList = newSortList;
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.sort) {
-               this.table.modules.persistence.save("sort");
-       }
-};
-
-//clear sorters
-Sort.prototype.clear = function () {
-       this.setSort([]);
-};
-
-//find appropriate sorter for column
-Sort.prototype.findSorter = function (column) {
-       var row = this.table.rowManager.activeRows[0],
-           sorter = "string",
-           field,
-           value;
-
-       if (row) {
-               row = row.getData();
-               field = column.getField();
-
-               if (field) {
-
-                       value = column.getFieldValue(row);
-
-                       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                               case "undefined":
-                                       sorter = "string";
-                                       break;
-
-                               case "boolean":
-                                       sorter = "boolean";
-                                       break;
-
-                               default:
-                                       if (!isNaN(value) && value !== "") {
-                                               sorter = "number";
-                                       } else {
-                                               if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-                                                       sorter = "alphanum";
-                                               }
-                                       }
-                                       break;
-                       }
-               }
-       }
-
-       return this.sorters[sorter];
-};
-
-//work through sort list sorting data
-Sort.prototype.sort = function (data) {
-       var self = this,
-           sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,
-           sortListActual = [],
-           rowComponents = [],
-           lastSort;
-
-       if (self.table.options.dataSorting) {
-               self.table.options.dataSorting.call(self.table, self.getSort());
-       }
-
-       self.clearColumnHeaders();
-
-       if (!self.table.options.ajaxSorting) {
-
-               //build list of valid sorters and trigger column specific callbacks before sort begins
-               sortList.forEach(function (item, i) {
-                       var sortObj = item.column.modules.sort;
-
-                       if (item.column && sortObj) {
-
-                               //if no sorter has been defined, take a guess
-                               if (!sortObj.sorter) {
-                                       sortObj.sorter = self.findSorter(item.column);
-                               }
-
-                               item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;
-
-                               sortListActual.push(item);
-                       }
-
-                       self.setColumnHeader(item.column, item.dir);
-               });
-
-               //sort data
-               if (sortListActual.length) {
-                       self._sortItems(data, sortListActual);
-               }
-       } else {
-               sortList.forEach(function (item, i) {
-                       self.setColumnHeader(item.column, item.dir);
-               });
-       }
-
-       if (self.table.options.dataSorted) {
-               data.forEach(function (row) {
-                       rowComponents.push(row.getComponent());
-               });
-
-               self.table.options.dataSorted.call(self.table, self.getSort(), rowComponents);
-       }
-};
-
-//clear sort arrows on columns
-Sort.prototype.clearColumnHeaders = function () {
-       this.table.columnManager.getRealColumns().forEach(function (column) {
-               if (column.modules.sort) {
-                       column.modules.sort.dir = "none";
-                       column.getElement().setAttribute("aria-sort", "none");
-               }
-       });
-};
-
-//set the column header sort direction
-Sort.prototype.setColumnHeader = function (column, dir) {
-       column.modules.sort.dir = dir;
-       column.getElement().setAttribute("aria-sort", dir);
-};
-
-//sort each item in sort list
-Sort.prototype._sortItems = function (data, sortList) {
-       var _this84 = this;
-
-       var sorterCount = sortList.length - 1;
-
-       data.sort(function (a, b) {
-               var result;
-
-               for (var i = sorterCount; i >= 0; i--) {
-                       var sortItem = sortList[i];
-
-                       result = _this84._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);
-
-                       if (result !== 0) {
-                               break;
-                       }
-               }
-
-               return result;
-       });
-};
-
-//process individual rows for a sort function on active data
-Sort.prototype._sortRow = function (a, b, column, dir, params) {
-       var el1Comp, el2Comp, colComp;
-
-       //switch elements depending on search direction
-       var el1 = dir == "asc" ? a : b;
-       var el2 = dir == "asc" ? b : a;
-
-       a = column.getFieldValue(el1.getData());
-       b = column.getFieldValue(el2.getData());
-
-       a = typeof a !== "undefined" ? a : "";
-       b = typeof b !== "undefined" ? b : "";
-
-       el1Comp = el1.getComponent();
-       el2Comp = el2.getComponent();
-
-       return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);
-};
-
-//default data sorters
-Sort.prototype.sorters = {
-
-       //sort numbers
-       number: function number(a, b, aRow, bRow, column, dir, params) {
-               var alignEmptyValues = params.alignEmptyValues;
-               var decimal = params.decimalSeparator || ".";
-               var thousand = params.thousandSeparator || ",";
-               var emptyAlign = 0;
-
-               a = parseFloat(String(a).split(thousand).join("").split(decimal).join("."));
-               b = parseFloat(String(b).split(thousand).join("").split(decimal).join("."));
-
-               //handle non numeric values
-               if (isNaN(a)) {
-                       emptyAlign = isNaN(b) ? 0 : -1;
-               } else if (isNaN(b)) {
-                       emptyAlign = 1;
-               } else {
-                       //compare valid values
-                       return a - b;
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       },
-
-       //sort strings
-       string: function string(a, b, aRow, bRow, column, dir, params) {
-               var alignEmptyValues = params.alignEmptyValues;
-               var emptyAlign = 0;
-               var locale;
-
-               //handle empty values
-               if (!a) {
-                       emptyAlign = !b ? 0 : -1;
-               } else if (!b) {
-                       emptyAlign = 1;
-               } else {
-                       //compare valid values
-                       switch (_typeof(params.locale)) {
-                               case "boolean":
-                                       if (params.locale) {
-                                               locale = this.table.modules.localize.getLocale();
-                                       }
-                                       break;
-                               case "string":
-                                       locale = params.locale;
-                                       break;
-                       }
-
-                       return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       },
-
-       //sort date
-       date: function date(a, b, aRow, bRow, column, dir, params) {
-               if (!params.format) {
-                       params.format = "DD/MM/YYYY";
-               }
-
-               return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-       },
-
-       //sort HH:mm formatted times
-       time: function time(a, b, aRow, bRow, column, dir, params) {
-               if (!params.format) {
-                       params.format = "HH:mm";
-               }
-
-               return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-       },
-
-       //sort datetime
-       datetime: function datetime(a, b, aRow, bRow, column, dir, params) {
-               var format = params.format || "DD/MM/YYYY HH:mm:ss",
-                   alignEmptyValues = params.alignEmptyValues,
-                   emptyAlign = 0;
-
-               if (typeof moment != "undefined") {
-                       a = moment(a, format);
-                       b = moment(b, format);
-
-                       if (!a.isValid()) {
-                               emptyAlign = !b.isValid() ? 0 : -1;
-                       } else if (!b.isValid()) {
-                               emptyAlign = 1;
-                       } else {
-                               //compare valid values
-                               return a - b;
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               } else {
-                       console.error("Sort Error - 'datetime' sorter is dependant on moment.js");
-               }
-       },
-
-       //sort booleans
-       boolean: function boolean(a, b, aRow, bRow, column, dir, params) {
-               var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0;
-               var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0;
-
-               return el1 - el2;
-       },
-
-       //sort if element contains any data
-       array: function array(a, b, aRow, bRow, column, dir, params) {
-               var el1 = 0;
-               var el2 = 0;
-               var type = params.type || "length";
-               var alignEmptyValues = params.alignEmptyValues;
-               var emptyAlign = 0;
-
-               function calc(value) {
-
-                       switch (type) {
-                               case "length":
-                                       return value.length;
-                                       break;
-
-                               case "sum":
-                                       return value.reduce(function (c, d) {
-                                               return c + d;
-                                       });
-                                       break;
-
-                               case "max":
-                                       return Math.max.apply(null, value);
-                                       break;
-
-                               case "min":
-                                       return Math.min.apply(null, value);
-                                       break;
-
-                               case "avg":
-                                       return value.reduce(function (c, d) {
-                                               return c + d;
-                                       }) / value.length;
-                                       break;
-                       }
-               }
-
-               //handle non array values
-               if (!Array.isArray(a)) {
-                       alignEmptyValues = !Array.isArray(b) ? 0 : -1;
-               } else if (!Array.isArray(b)) {
-                       alignEmptyValues = 1;
-               } else {
-
-                       //compare valid values
-                       el1 = a ? calc(a) : 0;
-                       el2 = b ? calc(b) : 0;
-
-                       return el1 - el2;
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       },
-
-       //sort if element contains any data
-       exists: function exists(a, b, aRow, bRow, column, dir, params) {
-               var el1 = typeof a == "undefined" ? 0 : 1;
-               var el2 = typeof b == "undefined" ? 0 : 1;
-
-               return el1 - el2;
-       },
-
-       //sort alpha numeric strings
-       alphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {
-               var a,
-                   b,
-                   a1,
-                   b1,
-                   i = 0,
-                   L,
-                   rx = /(\d+)|(\D+)/g,
-                   rd = /\d/;
-               var alignEmptyValues = params.alignEmptyValues;
-               var emptyAlign = 0;
-
-               //handle empty values
-               if (!as && as !== 0) {
-                       emptyAlign = !bs && bs !== 0 ? 0 : -1;
-               } else if (!bs && bs !== 0) {
-                       emptyAlign = 1;
-               } else {
-
-                       if (isFinite(as) && isFinite(bs)) return as - bs;
-                       a = String(as).toLowerCase();
-                       b = String(bs).toLowerCase();
-                       if (a === b) return 0;
-                       if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;
-                       a = a.match(rx);
-                       b = b.match(rx);
-                       L = a.length > b.length ? b.length : a.length;
-                       while (i < L) {
-                               a1 = a[i];
-                               b1 = b[i++];
-                               if (a1 !== b1) {
-                                       if (isFinite(a1) && isFinite(b1)) {
-                                               if (a1.charAt(0) === "0") a1 = "." + a1;
-                                               if (b1.charAt(0) === "0") b1 = "." + b1;
-                                               return a1 - b1;
-                                       } else return a1 > b1 ? 1 : -1;
-                               }
-                       }
-
-                       return a.length > b.length;
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       }
-};
-
-Tabulator.prototype.registerModule("sort", Sort);
-
-var Validate = function Validate(table) {
-       this.table = table;
-       this.invalidCells = [];
-};
-
-//validate
-Validate.prototype.initializeColumn = function (column) {
-       var self = this,
-           config = [],
-           validator;
-
-       if (column.definition.validator) {
-
-               if (Array.isArray(column.definition.validator)) {
-                       column.definition.validator.forEach(function (item) {
-                               validator = self._extractValidator(item);
-
-                               if (validator) {
-                                       config.push(validator);
-                               }
-                       });
-               } else {
-                       validator = this._extractValidator(column.definition.validator);
-
-                       if (validator) {
-                               config.push(validator);
-                       }
-               }
-
-               column.modules.validate = config.length ? config : false;
-       }
-};
-
-Validate.prototype._extractValidator = function (value) {
-       var type, params, pos;
-
-       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-               case "string":
-                       pos = value.indexOf(':');
-
-                       if (pos > -1) {
-                               type = value.substring(0, pos);
-                               params = value.substring(pos + 1);
-                       } else {
-                               type = value;
-                       }
-
-                       return this._buildValidator(type, params);
-                       break;
-
-               case "function":
-                       return this._buildValidator(value);
-                       break;
-
-               case "object":
-                       return this._buildValidator(value.type, value.parameters);
-                       break;
-       }
-};
-
-Validate.prototype._buildValidator = function (type, params) {
-
-       var func = typeof type == "function" ? type : this.validators[type];
-
-       if (!func) {
-               console.warn("Validator Setup Error - No matching validator found:", type);
-               return false;
-       } else {
-               return {
-                       type: typeof type == "function" ? "function" : type,
-                       func: func,
-                       params: params
-               };
-       }
-};
-
-Validate.prototype.validate = function (validators, cell, value) {
-       var self = this,
-           valid = [],
-           invalidIndex = this.invalidCells.indexOf(cell);
-
-       if (validators) {
-               validators.forEach(function (item) {
-                       if (!item.func.call(self, cell.getComponent(), value, item.params)) {
-                               valid.push({
-                                       type: item.type,
-                                       parameters: item.params
-                               });
-                       }
-               });
-       }
-
-       valid = valid.length ? valid : true;
-
-       if (!cell.modules.validate) {
-               cell.modules.validate = {};
-       }
-
-       if (valid === true) {
-               cell.modules.validate.invalid = false;
-               cell.getElement().classList.remove("tabulator-validation-fail");
-
-               if (invalidIndex > -1) {
-                       this.invalidCells.splice(invalidIndex, 1);
-               }
-       } else {
-               cell.modules.validate.invalid = true;
-
-               if (this.table.options.validationMode !== "manual") {
-                       cell.getElement().classList.add("tabulator-validation-fail");
-               }
-
-               if (invalidIndex == -1) {
-                       this.invalidCells.push(cell);
-               }
-       }
-
-       return valid;
-};
-
-Validate.prototype.getInvalidCells = function () {
-       var output = [];
-
-       this.invalidCells.forEach(function (cell) {
-               output.push(cell.getComponent());
-       });
-
-       return output;
-};
-
-Validate.prototype.clearValidation = function (cell) {
-       var invalidIndex;
-
-       if (cell.modules.validate && cell.modules.validate.invalid) {
-
-               cell.getElement().classList.remove("tabulator-validation-fail");
-               cell.modules.validate.invalid = false;
-
-               invalidIndex = this.invalidCells.indexOf(cell);
-
-               if (invalidIndex > -1) {
-                       this.invalidCells.splice(invalidIndex, 1);
-               }
-       }
-};
-
-Validate.prototype.validators = {
-
-       //is integer
-       integer: function integer(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               value = Number(value);
-               return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
-       },
-
-       //is float
-       float: function float(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               value = Number(value);
-               return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
-       },
-
-       //must be a number
-       numeric: function numeric(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return !isNaN(value);
-       },
-
-       //must be a string
-       string: function string(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return isNaN(value);
-       },
-
-       //maximum value
-       max: function max(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return parseFloat(value) <= parameters;
-       },
-
-       //minimum value
-       min: function min(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return parseFloat(value) >= parameters;
-       },
-
-       //starts with  value
-       starts: function starts(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).toLowerCase().startsWith(String(parameters).toLowerCase());
-       },
-
-       //ends with  value
-       ends: function ends(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).toLowerCase().endsWith(String(parameters).toLowerCase());
-       },
-
-       //minimum string length
-       minLength: function minLength(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).length >= parameters;
-       },
-
-       //maximum string length
-       maxLength: function maxLength(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).length <= parameters;
-       },
-
-       //in provided value list
-       in: function _in(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               if (typeof parameters == "string") {
-                       parameters = parameters.split("|");
-               }
-
-               return value === "" || parameters.indexOf(value) > -1;
-       },
-
-       //must match provided regex
-       regex: function regex(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               var reg = new RegExp(parameters);
-
-               return reg.test(value);
-       },
-
-       //value must be unique in this column
-       unique: function unique(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               var unique = true;
-
-               var cellData = cell.getData();
-               var column = cell.getColumn()._getSelf();
-
-               this.table.rowManager.rows.forEach(function (row) {
-                       var data = row.getData();
-
-                       if (data !== cellData) {
-                               if (value == column.getFieldValue(data)) {
-                                       unique = false;
-                               }
-                       }
-               });
-
-               return unique;
-       },
-
-       //must have a value
-       required: function required(cell, value, parameters) {
-               return value !== "" && value !== null && typeof value !== "undefined";
-       }
-};
-
-Tabulator.prototype.registerModule("validate", Validate);
-
-export default Tabulator;
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/tabulator.min.js b/website/js/vendor/tabulator/js/tabulator.min.js
deleted file mode 100644 (file)
index 314b978..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e,t){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Tabulator=t()}(this,function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),o=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=t[n];if(e.call(i,s,n,t))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),o=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=t[n];if(e.call(i,s,n,t))return s;n++}}}),String.prototype.includes||(String.prototype.includes=function(e,t){if(e instanceof RegExp)throw TypeError("first argument must not be a RegExp");return void 0===t&&(t=0),-1!==this.indexOf(e,t)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),i=o.length>>>0;if(0===i)return!1;for(var n=0|t,s=Math.max(n>=0?n:i-Math.abs(n),0);s<i;){if(function(e,t){return e===t||"number"==typeof e&&"number"==typeof t&&isNaN(e)&&isNaN(t)}(o[s],e))return!0;s++}return!1}}),"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,t){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var o=Object(e),i=1;i<arguments.length;i++){var n=arguments[i];if(null!==n&&void 0!==n)for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(o[s]=n[s])}return o},writable:!0,configurable:!0});var t=function(e){this.table=e,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e},t.prototype.createHeaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-header"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e},t.prototype.initialize=function(){},t.prototype.setRowManager=function(e){this.rowManager=e},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(e){var t=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>o?(t=e-o,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(e){var t,o,i=[],n=this.table.options.autoColumnsDefinitions;if(e&&e.length){t=e[0];for(var s in t){var a={field:s,title:s},r=t[s];switch(void 0===r?"undefined":_typeof(r)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(r)?"array":"string";break;default:o=isNaN(r)||""===r?r.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}a.sorter=o,i.push(a)}if(n)switch(void 0===n?"undefined":_typeof(n)){case"function":this.table.options.columns=n.call(this.table,i);break;case"object":Array.isArray(n)?i.forEach(function(e){var t=n.find(function(t){return t.field===e.field});t&&Object.assign(e,t)}):i.forEach(function(e){n[e.field]&&Object.assign(e,n[e.field])}),this.table.options.columns=i}else this.table.options.columns=i;this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(e,t){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),e.forEach(function(e,t){o._addColumn(e)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),this.table.options.virtualDomHoz&&this.table.vdomHoz.reinitialize(!1,!0),o.redraw(!0)},t.prototype._addColumn=function(e,t,o){var i=new n(e,this),s=i.getElement(),a=o?this.findColumnIndex(o):o;if(o&&a>-1){var r=this.columns.indexOf(o.getTopColumn()),l=o.getElement();t?(this.columns.splice(r,0,i),l.parentNode.insertBefore(s,l)):(this.columns.splice(r+1,0,i),l.parentNode.insertBefore(s,l.nextSibling))}else t?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement())),i.columnRendered();return i},t.prototype.registerColumnField=function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)},t.prototype.registerColumnPosition=function(e){this.columnsByIndex.push(e)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(e){e.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var e=this,t=0;e.columns.forEach(function(e){var o;e.clearVerticalAlign(),(o=e.getHeight())>t&&(t=o)}),e.columns.forEach(function(o){o.verticalAlign(e.table.options.columnHeaderVertAlign,t)}),e.rowManager.adjustTableSize()},t.prototype.findColumn=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e)))return this.columnsByField[e]||!1;if(e instanceof n)return e;if(e instanceof o)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.columns.find(function(t){return t.element===e})||!1}return!1},t.prototype.getColumnByField=function(e){return this.columnsByField[e]},t.prototype.getColumnsByFieldRoot=function(e){var t=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===e&&o.push(t.columnsByField[i])}),o},t.prototype.getColumnByIndex=function(e){return this.columnsByIndex[e]},t.prototype.getFirstVisibileColumn=function(e){var e=this.columnsByIndex.findIndex(function(e){return e.visible});return e>-1&&this.columnsByIndex[e]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(e){return this.columnsByIndex.findIndex(function(t){return e===t})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(e){this.columnsByIndex.forEach(function(t,o){e(t,o)})},t.prototype.getDefinitions=function(e){var t=this,o=[];return t.columnsByIndex.forEach(function(t){(!e||e&&t.visible)&&o.push(t.getDefinition())}),o},t.prototype.getDefinitionTree=function(){var e=this,t=[];return e.columns.forEach(function(e){t.push(e.getDefinition(!0))}),t},t.prototype.getComponents=function(e){var t=this,o=[];return(e?t.columns:t.columnsByIndex).forEach(function(e){o.push(e.getComponent())}),o},t.prototype.getWidth=function(){var e=0;return this.columnsByIndex.forEach(function(t){t.visible&&(e+=t.getWidth())}),e},t.prototype.moveColumn=function(e,t,o){this.moveColumnActual(e,t,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t.element.parentNode.insertBefore(e.element,t.element),o&&t.element.parentNode.insertBefore(t.element,e.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.moveColumnActual=function(e,t,o){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,o):this._moveColumnInArray(this.columns,e,t,o),this._moveColumnInArray(this.columnsByIndex,e,t,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.virtualDomHoz&&this.table.vdomHoz.reinitialize(!0),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,e.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(e,t,o,i,n){var s,a=this,r=e.indexOf(t),l=[];r>-1&&(e.splice(r,1),s=e.indexOf(o),s>-1?i&&(s+=1):s=r,e.splice(s,0,t),n&&(this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.rowManager.rows.forEach(function(e){l=l.concat(a.table.modules.dataTree.getTreeChildren(e,!1,!0))}),l=l.concat(this.table.rowManager.rows),l.forEach(function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(s,0,t)}})))},t.prototype.scrollToColumn=function(e,t,o){var i=this,n=0,s=0,a=0,r=e.getElement();return new Promise(function(l,c){if(void 0===t&&(t=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":a=-i.element.clientWidth/2;break;case"right":a=r.clientWidth-i.headersElement.clientWidth}if(!o&&(s=r.offsetLeft)>0&&s+r.offsetWidth<i.element.clientWidth)return!1;n=r.offsetLeft+a,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),l()}else console.warn("Scroll Error - Column not visible"),c("Scroll Error - Column not visible")})},t.prototype.generateCells=function(e){var t=this,o=[];return t.columnsByIndex.forEach(function(t){o.push(t.generateCell(e))}),o},t.prototype.getFlexBaseWidth=function(){var e=this,t=e.table.element.clientWidth,o=0;return e.rowManager.element.scrollHeight>e.rowManager.element.clientHeight&&(t-=e.rowManager.element.offsetWidth-e.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,a;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?e.table.options.columnMinWidth:parseInt(i.minWidth),a="string"==typeof n?n.indexOf("%")>-1?t/100*parseInt(n):parseInt(n):n,o+=a>s?a:s)}),o},t.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var a=i._addColumn(e,t,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&a.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),i.table.options.virtualDomHoz&&i.table.vdomHoz.reinitialize(),n(a)})},t.prototype.deregisterColumn=function(e){var t,o=e.getField();o&&delete this.columnsByField[o],t=this.columnsByIndex.indexOf(e),t>-1&&this.columnsByIndex.splice(t,1),t=this.columns.indexOf(e),t>-1&&this.columns.splice(t,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this._verticalAlignHeaders(),this.redraw()},t.prototype.redraw=function(e){e&&(h.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():e?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var o=function(e){this._column=e,this.type="ColumnComponent"};o.prototype.getElement=function(){return this._column.getElement()},o.prototype.getDefinition=function(){return this._column.getDefinition()},o.prototype.getField=function(){return this._column.getField()},o.prototype.getCells=function(){var e=[];return this._column.cells.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._column.visible},o.prototype.isVisible=function(){return this._column.visible},o.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.show()}):this._column.show()},o.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.hide()}):this._column.hide()},o.prototype.toggle=function(){this._column.visible?this.hide():this.show()},o.prototype.delete=function(){return this._column.delete()},o.prototype.getSubColumns=function(){var e=[];return this._column.columns.length&&this._column.columns.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getParentColumn=function(){return this._column.parent instanceof n&&this._column.parent.getComponent()},o.prototype._getSelf=function(){return this._column},o.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},o.prototype.getTable=function(){return this._column.table},o.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},o.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},o.prototype.getHeaderFilterValue=function(){if(this._column.table.modExists("filter",!0))return this._column.table.modules.filter.getHeaderFilterValue(this._column)},o.prototype.setHeaderFilterValue=function(e){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,e)},o.prototype.move=function(e,t){var o=this._column.table.columnManager.findColumn(e);o?this._column.table.columnManager.moveColumn(this._column,o,t):console.warn("Move Error - No matching column found:",o)},o.prototype.getNextColumn=function(){var e=this._column.nextColumn();return!!e&&e.getComponent()},o.prototype.getPrevColumn=function(){var e=this._column.prevColumn();return!!e&&e.getComponent()},o.prototype.updateDefinition=function(e){return this._column.updateDefinition(e)},o.prototype.getWidth=function(){return this._column.getWidth()},o.prototype.setWidth=function(e){var t;return t=!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e),this._column.table.options.virtualDomHoz&&this._column.table.vdomHoz.reinitialize(!0),t},o.prototype.validate=function(){return this._column.validate()};var n=function e(t,o){var i=this;this.table=o.table,this.definition=t,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleHolderElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this._mapDepricatedFunctionality(),t.columns?(this.isGroup=!0,t.columns.forEach(function(t,o){var n=new e(t,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),t.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};n.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e},n.prototype.createGroupElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e},n.prototype.checkDefinition=function(){var e=this;Object.keys(this.definition).forEach(function(t){-1===e.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)})},n.prototype.setField=function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},n.prototype.registerColumnPosition=function(e){this.parent.registerColumnPosition(e)},n.prototype.registerColumnField=function(e){this.parent.registerColumnField(e)},n.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(e){e.reRegisterPosition()}):this.registerColumnPosition(this)},n.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign")),void 0!==this.definition.downloadTitle&&(this.definition.titleDownload=this.definition.downloadTitle,console.warn("downloadTitle definition property is deprecated, you should now use titleDownload"))},n.prototype.setTooltip=function(){var e=this,t=e.definition,o=t.headerTooltip||!1===t.tooltip?t.headerTooltip:e.table.options.tooltipsHeader;o?!0===o?t.field?e.table.modules.localize.bind("columns|"+t.field,function(o){e.element.setAttribute("title",o||t.title)}):e.element.setAttribute("title",t.title):("function"==typeof o&&!1===(o=o(e.getComponent()))&&(o=""),e.element.setAttribute("title",o)):e.element.setAttribute("title","")},n.prototype._buildHeader=function(){for(var e=this,t=e.definition;e.element.firstChild;)e.element.removeChild(e.element.firstChild);t.headerVertical&&(e.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&e.element.classList.add("tabulator-col-vertical-flip")),e.contentElement=e._bindEvents(),e.contentElement=e._buildColumnHeaderContent(),e.element.appendChild(e.contentElement),e.isGroup?e._buildGroupHeader():e._buildColumnHeader(),e.setTooltip(),e.table.options.resizableColumns&&e.table.modExists("resizeColumns")&&e.table.modules.resizeColumns.initializeColumn("header",e,e.element),t.headerFilter&&e.table.modExists("filter")&&e.table.modExists("edit")&&(void 0!==t.headerFilterPlaceholder&&t.field&&e.table.modules.localize.setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),e.table.modules.filter.initializeColumn(e)),e.table.modExists("frozenColumns")&&e.table.modules.frozenColumns.initializeColumn(e),e.table.options.movableColumns&&!e.isGroup&&e.table.modExists("moveColumn")&&e.table.modules.moveColumn.initializeColumn(e),(t.topCalc||t.bottomCalc)&&e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.initializeColumn(e),e.table.modExists("persistence")&&e.table.modules.persistence.config.columns&&e.table.modules.persistence.initializeColumn(e),e.element.addEventListener("mouseenter",function(t){e.setTooltip()})},n.prototype._bindEvents=function(){var e,t,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(e){n.headerClick(e,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(e){n.headerDblClick(e,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(e){n.headerContext(e,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&n.headerTap(e,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,n.headerDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),"function"==typeof n.headerTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,n.headerTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},n.prototype._buildColumnHeader=function(){var e=this,t=this.definition,o=this.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(this,this.titleHolderElement),(t.headerContextMenu||t.headerClickMenu||t.headerMenu)&&o.modExists("menu")&&o.modules.menu.initializeColumnHeader(this),o.modExists("format")&&o.modules.format.initializeColumn(this),void 0!==t.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(this),void 0!==t.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(this),o.modExists("mutator")&&o.modules.mutator.initializeColumn(this),o.modExists("accessor")&&o.modules.accessor.initializeColumn(this),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(this),void 0!==t.visible&&(t.visible?this.show(!0):this.hide(!0)),t.cssClass){t.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}t.field&&this.element.setAttribute("tabulator-field",t.field),this.setMinWidth(void 0===t.minWidth?this.table.options.columnMinWidth:parseInt(t.minWidth)),this.reinitializeWidth(),this.tooltip=this.definition.tooltip||!1===this.definition.tooltip?this.definition.tooltip:this.table.options.tooltips,this.hozAlign=void 0===this.definition.hozAlign?this.table.options.cellHozAlign:this.definition.hozAlign,this.vertAlign=void 0===this.definition.vertAlign?this.table.options.cellVertAlign:this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign||this.table.options.headerHozAlign},n.prototype._buildColumnHeaderContent=function(){var e=(this.definition,this.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),e.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),e},n.prototype._buildColumnHeaderTitle=function(){var e=this,t=e.definition,o=e.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),t.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(e){e.stopPropagation(),n.focus()}),n.addEventListener("change",function(){t.title=n.value,o.options.columnTitleChanged.call(e.table,e.getComponent())}),i.appendChild(n),t.field?o.modules.localize.bind("columns|"+t.field,function(e){n.value=e||t.title||"&nbsp;"}):n.value=t.title||"&nbsp;"}else t.field?o.modules.localize.bind("columns|"+t.field,function(o){e._formatColumnHeaderTitle(i,o||t.title||"&nbsp;")}):e._formatColumnHeaderTitle(i,t.title||"&nbsp;");return i},n.prototype._formatColumnHeaderTitle=function(e,t){var o,i,n,s,a,r=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),a=function(e){r.titleFormatterRendered=e},s={getValue:function(){return t},getElement:function(){return e}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n,a),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=i}else e.innerHTML=t},n.prototype._buildGroupHeader=function(){var e=this;if(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass){this.definition.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}(this.definition.headerContextMenu||this.definition.headerMenu)&&this.table.modExists("menu")&&this.table.modules.menu.initializeColumnHeader(this),this.element.appendChild(this.groupElement)},n.prototype._getFlatData=function(e){return e[this.field]},n.prototype._getNestedData=function(e){for(var t,o=e,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],t=o,o);s++);return t},n.prototype._setFlatData=function(e,t){this.field&&(e[this.field]=t)},n.prototype._setNestedData=function(e,t){for(var o=e,i=this.fieldStructure,n=i.length,s=0;s<n;s++)if(s==n-1)o[i[s]]=t;else{if(!o[i[s]]){if(void 0===t)break;o[i[s]]={}}o=o[i[s]]}},n.prototype.attachColumn=function(e){var t=this;t.groupElement?(t.columns.push(e),t.groupElement.appendChild(e.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},n.prototype.verticalAlign=function(e,t){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:t||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===e||(this.element.style.paddingTop="bottom"===e?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(t){t.verticalAlign(e)})},n.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(e){e.clearVerticalAlign()})},n.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},n.prototype.getElement=function(){return this.element},n.prototype.getGroupElement=function(){return this.groupElement},n.prototype.getField=function(){return this.field},n.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},n.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},n.prototype.getColumns=function(){return this.columns},n.prototype.getCells=function(){return this.cells},n.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},n.prototype.getDefinition=function(e){var t=[];return this.isGroup&&e&&(this.columns.forEach(function(e){t.push(e.getDefinition(!0))}),this.definition.columns=t),this.definition},n.prototype.checkColumnVisibility=function(){var e=!1;this.columns.forEach(function(t){t.visible&&(e=!0)}),e?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},n.prototype.show=function(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},n.prototype.hide=function(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},n.prototype.matchChildWidths=function(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}),this.contentElement.style.maxWidth=e-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())},n.prototype.setWidth=function(e){this.widthFixed=!0,this.setWidthActual(e)},n.prototype.setWidthActual=function(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(e){e.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},n.prototype.checkCellHeights=function(){var e=[];this.cells.forEach(function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)}),e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()})},n.prototype.getWidth=function(){var e=0;return this.isGroup?this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}):e=this.width,e},n.prototype.getHeight=function(){return this.element.offsetHeight},n.prototype.setMinWidth=function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(e){e.setMinWidth()})},
-n.prototype.delete=function(){var e=this;return new Promise(function(t,o){e.isGroup&&e.columns.forEach(function(e){e.delete()}),e.table.modExists("edit")&&e.table.modules.edit.currentCell.column===e&&e.table.modules.edit.cancelEdit();for(var i=e.cells.length,n=0;n<i;n++)e.cells[0].delete();e.element.parentNode&&e.element.parentNode.removeChild(e.element),e.element=!1,e.contentElement=!1,e.titleElement=!1,e.groupElement=!1,e.table.columnManager.deregisterColumn(e),e.table.options.virtualDomHoz&&e.table.vdomHoz.reinitialize(!0),t()})},n.prototype.columnRendered=function(){this.titleFormatterRendered&&this.titleFormatterRendered()},n.prototype.validate=function(){var e=[];return this.cells.forEach(function(t){t.validate()||e.push(t.getComponent())}),!e.length||e},n.prototype.generateCell=function(e){var t=this,o=new u(t,e);return this.cells.push(o),o},n.prototype.nextColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._nextVisibleColumn(e+1)},n.prototype._nextVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)},n.prototype.prevColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)},n.prototype._prevVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)},n.prototype.reinitializeWidth=function(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},n.prototype.fitToData=function(){var e=this;this.widthFixed||(this.element.style.width="",e.cells.forEach(function(e){e.clearWidth()}));var t=this.element.offsetWidth;e.width&&this.widthFixed||(e.cells.forEach(function(e){var o=e.getWidth();o>t&&(t=o)}),t&&e.setWidthActual(t+1))},n.prototype.updateDefinition=function(e){var t=this;return new Promise(function(o,i){var n;t.isGroup?(console.warn("Column Update Error - The updateDefinition function is only available on columns, not column groups"),i("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(n=Object.assign({},t.getDefinition()),n=Object.assign(n,e),t.table.columnManager.addColumn(n,!1,t).then(function(e){n.field==t.field&&(t.field=!1),t.delete().then(function(){o(e.getComponent())}).catch(function(e){i(e)})}).catch(function(e){i(e)}))})},n.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},n.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","headerHozAlign","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","clickMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams","titlePrint","titleClipboard","titleHtmlOutput","titleDownload"],n.prototype.getComponent=function(){return this.component||(this.component=new o(this)),this.component};var s=function(e){this.table=e,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};s.prototype.createHolderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-tableHolder"),e.setAttribute("tabindex",0),e},s.prototype.createTableElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e},s.prototype.getElement=function(){return this.element},s.prototype.getTableElement=function(){return this.tableElement},s.prototype.getRowPosition=function(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)},s.prototype.setColumnManager=function(e){this.columnManager=e},s.prototype.initialize=function(){var e=this;e.setRenderMode(),e.element.appendChild(e.tableElement),e.firstRender=!0,e.element.addEventListener("scroll",function(){var t=e.element.scrollLeft;e.scrollLeft!=t&&(e.columnManager.scrollHorizontal(t),e.table.options.groupBy&&e.table.modules.groupRows.scrollHeaders(t),e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.scrollHorizontal(t),e.table.options.scrollHorizontal(t)),e.scrollLeft=t}),"virtual"===this.renderMode&&e.element.addEventListener("scroll",function(){var t=e.element.scrollTop,o=e.scrollTop>t;e.scrollTop!=t?(e.scrollTop=t,e.scrollVertical(o),"scroll"==e.table.options.ajaxProgressiveLoad&&e.table.modules.ajax.nextPage(e.element.scrollHeight-e.element.clientHeight-t),e.table.options.scrollVertical(t)):e.scrollTop=t})},s.prototype.findRow=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e))){if(void 0===e||null===e)return!1;return t.rows.find(function(o){return o.data[t.table.options.index]==e})||!1}if(e instanceof l)return e;if(e instanceof r)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.rows.find(function(t){return t.element===e})||!1}return!1},s.prototype.getRowFromDataObject=function(e){return this.rows.find(function(t){return t.data===e})||!1},s.prototype.getRowFromPosition=function(e,t){return t?this.activeRows[e]:this.rows[e]},s.prototype.scrollToRow=function(e,t,o){var i,n=this,s=this.getDisplayRows().indexOf(e),a=e.getElement(),r=0;return new Promise(function(e,l){if(s>-1){if(void 0===t&&(t=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===t)switch(n.renderMode){case"classic":i=h.prototype.helpers.elOffset(a).top,t=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":t=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&h.prototype.helpers.elVisible(a)&&(r=h.prototype.helpers.elOffset(a).top-h.prototype.helpers.elOffset(n.element).top)>0&&r<n.element.clientHeight-a.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=h.prototype.helpers.elOffset(a).top-h.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(t){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(a.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-a.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-a.offsetTop)+a.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+a.offsetHeight}e()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},s.prototype.setData=function(e,t,o){var i=this,n=this;return new Promise(function(s,a){t&&i.getDisplayRows().length?n.table.options.pagination?n._setDataActual(e,!0):i.reRenderInPosition(function(){n._setDataActual(e)}):(i.table.options.autoColumns&&o&&i.table.columnManager.generateColumnsFromRowData(e),i.resetScroll(),i._setDataActual(e)),s()})},s.prototype._setDataActual=function(e,t){var o=this;o.table.options.dataLoading.call(this.table,e),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(e)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(e),e.forEach(function(e,t){if(e&&"object"===(void 0===e?"undefined":_typeof(e))){var i=new l(e,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)}),o.refreshActiveData(!1,!1,t),o.table.options.dataLoaded.call(this.table,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===e?"undefined":_typeof(e),"\nData:     ",e)},s.prototype._wipeElements=function(){this.rows.forEach(function(e){e.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()},s.prototype.deleteRow=function(e,t){var o=this.rows.indexOf(e),i=this.activeRows.indexOf(e);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(t){var o=t.indexOf(e);o>-1&&t.splice(o,1)}),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,e.getComponent()),this.table.options.dataChanged&&this.table.options.dataChanged.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},s.prototype.addRow=function(e,t,o,i){var n=this.addRowActual(e,t,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:e,pos:t,index:o}),n},s.prototype.addRows=function(e,t,o){var i=this,n=this,s=0,a=[];return new Promise(function(r,l){t=i.findAddRowPos(t),Array.isArray(e)||(e=[e]),s=e.length-1,(void 0===o&&t||void 0!==o&&!t)&&e.reverse(),e.forEach(function(e,i){var s=n.addRow(e,t,o,!0);a.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.regenerateRowNumbers(),r(a)})},s.prototype.findAddRowPos=function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e},s.prototype.addRowActual=function(e,t,o,i){var n,s,a=e instanceof l?e:new l(e||{},this),r=this.findAddRowPos(t),c=-1;if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(s=this.getDisplayRows(),r?s.length?o=s[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],r=!1):s.length&&(o=s[s.length-1],r=!(s.length<this.table.modules.page.getPageSize()))),void 0!==o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(a);var u=a.getGroup().rows;u.length>1&&(!o||o&&-1==u.indexOf(o)?r?u[0]!==a&&(o=u[0],this._moveRowInArray(a.getGroup().rows,a,o,!r)):u[u.length-1]!==a&&(o=u[u.length-1],this._moveRowInArray(a.getGroup().rows,a,o,!r)):this._moveRowInArray(a.getGroup().rows,a,o,!r))}return o&&(c=this.rows.indexOf(o)),o&&c>-1?(n=this.activeRows.indexOf(o),this.displayRowIterator(function(e){var t=e.indexOf(o);t>-1&&e.splice(r?t:t+1,0,a)}),n>-1&&this.activeRows.splice(r?n:n+1,0,a),this.rows.splice(r?c:c+1,0,a)):r?(this.displayRowIterator(function(e){e.unshift(a)}),this.activeRows.unshift(a),this.rows.unshift(a)):(this.displayRowIterator(function(e){e.push(a)}),this.activeRows.push(a),this.rows.push(a)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,a.getComponent()),this.table.options.dataChanged&&this.table.options.dataChanged.call(this.table,this.getData()),i||this.reRenderInPosition(),a},s.prototype.moveRow=function(e,t,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",e,{posFrom:this.getRowPosition(e),posTo:this.getRowPosition(t),to:t,after:o}),this.moveRowActual(e,t,o),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,e.getComponent())},s.prototype.moveRowActual=function(e,t,o){var i=this;if(this._moveRowInArray(this.rows,e,t,o),this._moveRowInArray(this.activeRows,e,t,o),this.displayRowIterator(function(n){i._moveRowInArray(n,e,t,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){!o&&t instanceof H&&(t=this.table.rowManager.prevDisplayRow(e)||t);var n=t.getGroup(),s=e.getGroup();n===s?this._moveRowInArray(n.rows,e,t,o):(s&&s.removeRow(e),n.insertRow(e,t,o))}},s.prototype._moveRowInArray=function(e,t,o,i){var n,s,a,r;if(t!==o&&(n=e.indexOf(t),n>-1&&(e.splice(n,1),s=e.indexOf(o),s>-1?i?e.splice(s+1,0,t):e.splice(s,0,t):e.splice(n,0,t)),e===this.getDisplayRows())){a=n<s?n:s,r=s>n?s:n+1;for(var l=a;l<=r;l++)e[l]&&this.styleRow(e[l],l)}},s.prototype.clearData=function(){this.setData([])},s.prototype.getRowIndex=function(e){return this.findRowIndex(e,this.rows)},s.prototype.getDisplayRowIndex=function(e){var t=this.getDisplayRows().indexOf(e);return t>-1&&t},s.prototype.nextDisplayRow=function(e,t){var o=this.getDisplayRowIndex(e),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof l&&"row"==i.type?i:this.nextDisplayRow(i,t)},s.prototype.prevDisplayRow=function(e,t){var o=this.getDisplayRowIndex(e),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!t||!i||i instanceof l&&"row"==i.type?i:this.prevDisplayRow(i,t)},s.prototype.findRowIndex=function(e,t){var o;return!!((e=this.findRow(e))&&(o=t.indexOf(e))>-1)&&o},s.prototype.getData=function(e,t){var o=[];return this.getRows(e).forEach(function(e){"row"==e.type&&o.push(e.getData(t||"data"))}),o},s.prototype.getComponents=function(e){var t=[];return this.getRows(e).forEach(function(e){t.push(e.getComponent())}),t},s.prototype.getDataCount=function(e){return this.getRows(e).length},s.prototype._genRemoteRequest=function(){var e=this,t=this.table,o=t.options,i={};if(t.modExists("page")){if(o.ajaxSorting){var n=this.table.modules.sort.getSort();n.forEach(function(e){delete e.column}),i[this.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=this.table.modules.filter.getFilters(!0,!0);i[this.table.modules.page.paginationDataSentNames.filters]=s}this.table.modules.ajax.setParams(i,!0)}t.modules.ajax.sendRequest().then(function(t){e._setDataActual(t,!0)}).catch(function(e){})},s.prototype.filterRefresh=function(){var e=this.table,t=e.options,o=this.scrollLeft;t.ajaxFiltering?"remote"==t.pagination&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):t.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},s.prototype.sorterRefresh=function(e){var t=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(e?"filter":"sort"),this.scrollHorizontal(i)},s.prototype.scrollHorizontal=function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(e),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(e)},s.prototype.refreshActiveData=function(e,t,o){var i,n=this,s=this.table,a=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||a.indexOf(e)<a.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:e,skipStage:t,renderInPosition:o}));switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),e||(e="all"),s.options.selectable&&!s.options.selectablePersistence&&s.modExists("selectRow")&&s.modules.selectRow.deselectRows(),e){case"all":case"filter":t?t=!1:s.modExists("filter")?n.setActiveRows(s.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":t?t=!1:s.modExists("sort")&&s.modules.sort.sort(this.activeRows),this.regenerateRowNumbers();case"display":this.resetDisplayRows();case"freeze":t?t=!1:this.table.modExists("frozenRows")&&s.modules.frozenRows.isFrozen()&&(s.modules.frozenRows.getDisplayIndex()||s.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.frozenRows.setDisplayIndex(i));case"group":t?t=!1:s.options.groupBy&&s.modExists("groupRows")&&(s.modules.groupRows.getDisplayIndex()||s.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.groupRows.setDisplayIndex(i));case"tree":t?t=!1:s.options.dataTree&&s.modExists("dataTree")&&(s.modules.dataTree.getDisplayIndex()||s.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&s.modules.dataTree.setDisplayIndex(i)),s.options.pagination&&s.modExists("page")&&!o&&"local"==s.modules.page.getMode()&&s.modules.page.reset();case"page":t?t=!1:s.options.pagination&&s.modExists("page")&&(s.modules.page.getDisplayIndex()||s.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.page.getDisplayIndex(),"local"==s.modules.page.getMode()&&s.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(s.modules.page.getRows(this.getDisplayRows(i-1)),i))&&s.modules.page.setDisplayIndex(i))}h.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():("all"===e&&this.table.options.virtualDomHoz&&this.table.vdomHoz.dataChange(),n.renderTable(),s.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),s.modExists("columnCalcs")&&s.modules.columnCalcs.recalc(this.activeRows)},s.prototype.regenerateRowNumbers=function(){var e=this;this.rowNumColumn&&this.activeRows.forEach(function(t){var o=t.getCell(e.rowNumColumn);o&&o._generateContents()})},s.prototype.setActiveRows=function(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length},s.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},s.prototype.getNextDisplayIndex=function(){return this.displayRows.length},s.prototype.setDisplayRows=function(e,t){var o=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,o=!0):(this.displayRows.push(e),o=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},s.prototype.getDisplayRows=function(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]},s.prototype.getVisibleRows=function(e){var t=this.element.scrollTop,o=this.element.clientHeight+t,i=!1,n=0,s=0,a=this.getDisplayRows();if(e){this.getDisplayRows();for(var r=this.vDomTop;r<=this.vDomBottom;r++)if(a[r])if(i){if(!(o-a[r].getElement().offsetTop>=0))break;s=r}else if(t-a[r].getElement().offsetTop>=0)n=r;else{if(i=!0,!(o-a[r].getElement().offsetTop>=0))break;s=r}}else n=this.vDomTop,s=this.vDomBottom;return a.slice(n,s+1)},s.prototype.displayRowIterator=function(e){this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},s.prototype.getRows=function(e){var t;switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!0);break;case"selected":t=this.table.modules.selectRow.selectedRows;break;default:t=this.rows}return t},s.prototype.reRenderInPosition=function(e){if("virtual"==this.getRenderMode())if(this.redrawBlock)e?e():this.redrawBlockRederInPosition=!0;else{for(var t=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),a=this.vDomTop;a<=this.vDomBottom;a++)if(s[a]){var r=t-s[a].getElement().offsetTop;if(!(!1===i||Math.abs(r)<i))break;i=r,o=a}e&&e(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),e&&e()},s.prototype.setRenderMode=function(){this.table.options.virtualDom?(this.renderMode="virtual",this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):this.renderMode="classic"},s.prototype.getRenderMode=function(){return this.renderMode},s.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px"),this.table.options.renderComplete.call(this.table)},s.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},s.prototype.checkClassicModeGroupHeaderWidth=function(){var e=this,t=this.tableElement,o=!0;e.getDisplayRows().forEach(function(i,n){e.styleRow(i,n),t.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),t.style.minWidth=o?e.table.columnManager.getWidth()+"px":""},s.prototype.renderEmptyScroll=function(){this.table.options.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"},s.prototype._clearVirtualDom=function(){var e=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},s.prototype.styleRow=function(e,t){var o=e.getElement();t%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},s.prototype._virtualRenderFill=function(e,t,o){var i=this,n=i.tableElement,s=i.element,a=0,r=0,l=0,c=0,u=!0,d=i.getDisplayRows();if(e=e||0,o=o||0,e){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-e+1)*i.vDomRowHeight;p<i.height&&(e-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(e=0),a=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),e),e-=a}else i._clearVirtualDom();if(i.displayRowsCount&&h.prototype.helpers.elVisible(i.element)){for(i.vDomTop=e,i.vDomBottom=e-1;(r<=i.height+i.vDomWindowBuffer||c<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var m=i.vDomBottom+1,f=d[m],g=0;i.styleRow(f,m),n.appendChild(f.getElement()),f.initialize(),f.heightInitialized||f.normalizeHeight(!0),g=f.getHeight(),c<a?l+=g:r+=g,g>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*g),"group"!==f.type&&(u=!1),i.vDomBottom++,c++}e?(i.vDomTopPad=t?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-l,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-r-l,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((r+l)/c),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=l+r+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",t&&(this.scrollTop=i.vDomTopPad+l+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&t&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=u?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},s.prototype.scrollVertical=function(e){var t=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-t>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else e?(t<0&&this._addTopRow(-t),o<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(-o):this.vDomScrollPosBottom=this.scrollTop)):(t>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(t):this.vDomScrollPosTop=this.scrollTop),o>=0&&this._addBottomRow(o))},s.prototype._addTopRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],a=s.getHeight()||this.vDomRowHeight;e>=a&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=a,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=a,this.vDomTop--),e=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t<this.vDomMaxRenderChain&&this.vDomTop&&e>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(e,t+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},s.prototype._removeTopRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,t.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,e=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(e)}},s.prototype._addBottomRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],a=s.getHeight()||this.vDomRowHeight;e>=a&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=a,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=a,this.vDomBottom++),e=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&e>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(e,t+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},s.prototype._removeBottomRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),t.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,e=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(e)}},s.prototype._quickNormalizeRowHeight=function(e){e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()}),e.length=0},s.prototype.normalizeHeight=function(){this.activeRows.forEach(function(e){e.normalizeHeight()})},s.prototype.adjustTableSize=function(){var e,t=this.element.clientHeight;if("virtual"===this.renderMode){var o=Math.floor(this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0));this.fixedHeight?(this.element.style.minHeight="calc(100% - "+o+"px)",this.element.style.height="calc(100% - "+o+"px)",this.element.style.maxHeight="calc(100% - "+o+"px)"):(this.element.style.height="",this.element.style.height=Math.floor(this.table.element.clientHeight)-o+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||Math.floor(t)==Math.floor(this.element.clientHeight)||((e=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!e)&&this.redraw()}},s.prototype.reinitialize=function(){this.rows.forEach(function(e){e.reinitialize(!0)})},s.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},s.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),
-this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},s.prototype.redraw=function(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(t)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},s.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))};var a=function(e){this.table=e,this.element=this.table.rowManager.tableElement,this.holderEl=this.table.rowManager.element,this.leftCol=0,this.rightCol=0,this.scrollLeft=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0,this.fitDataColAvg=0,this.window=200,this.initialized=!1,this.columns=[],this.compatabilityCheck()&&this.initialize()};a.prototype.compatabilityCheck=function(){var e=this.table.options,t=!0;return"fitDataTable"==e.layout&&(console.warn("Horizontal Vitrual DOM is not compatible with fitDataTable layout mode"),t=!1),e.responsiveLayout&&(console.warn("Horizontal Vitrual DOM is not compatible with responsive columns"),t=!1),this.table.rtl&&(console.warn("Horizontal Vitrual DOM is not currently compatible with RTL text direction"),t=!1),e.columns&&e.columns.find(function(e){return e.frozen})&&(console.warn("Horizontal Vitrual DOM is not compatible with frozen columns"),t=!1),t||(e.virtualDomHoz=!1),t},a.prototype.initialize=function(){var e=this;this.holderEl.addEventListener("scroll",function(){var t=e.holderEl.scrollLeft;e.scrollLeft!=t&&(e.scrollLeft=t,e.scroll(t-(e.vDomScrollPosLeft+e.window)))})},a.prototype.deinitialize=function(){this.initialized=!1},a.prototype.clear=function(){this.columns=[],this.leftCol=-1,this.rightCol=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0},a.prototype.dataChange=function(){var e,t,o,i=!1,n=0,s=0;if("fitData"===this.table.options.layout){if(this.table.columnManager.columnsByIndex.forEach(function(e){!e.definition.width&&e.visible&&(i=!0)}),i&&i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.holderEl.clientWidth+this.window,this.table.options.groupBy?(e=this.table.modules.groupRows.getGroups(!1)[0],t=e.getRows(!1)[0]):t=this.table.rowManager.getDisplayRows()[0],t)){o=t.getElement(),t.generateCells(),this.element.appendChild(o);for(var s=0;s<t.cells.length;s++){var a=t.cells[s];if(o.appendChild(a.getElement()),a.column.reinitializeWidth(),(n+=a.column.getWidth())>this.vDomScrollPosRight)break}for(o.parentNode.removeChild(o),this.fitDataColAvg=Math.floor(n/(s+1)),s;s<this.table.columnManager.columnsByIndex.length;s++)this.table.columnManager.columnsByIndex[s].setWidth(this.fitDataColAvg);this.reinitialize(!1,!0)}}else"fitColumns"===this.table.options.layout&&(this.table.modules.layout.layout(),this.table.vdomHoz.reinitialize(!1,!0))},a.prototype.fitDataLayoutOverride=function(){for(var e=this.leftCol;e<=this.rightCol;e++)this.columns[e].reinitializeWidth()},a.prototype.reinitialize=function(e,t){var o=this,i={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol};if(!e||this.initialized){this.clear(),this.scrollLeft=this.holderEl.scrollLeft,this.vDomScrollPosLeft=this.scrollLeft-this.window,this.vDomScrollPosRight=this.scrollLeft+this.holderEl.clientWidth+this.window;var n=0;this.table.columnManager.columnsByIndex.forEach(function(e){var t={};if(e.visible){var i=e.getWidth();t.leftPos=n,t.rightPos=n+i,n+i>o.vDomScrollPosLeft&&n<o.vDomScrollPosRight?(-1==o.leftCol&&(o.leftCol=o.columns.length,o.vDomPadLeft=n),o.rightCol=o.columns.length):-1!==o.leftCol&&(o.vDomPadRight+=i),o.columns.push(e),e.modules.vdomHoz=t,n+=i}}),this.element.style.paddingLeft=this.vDomPadLeft+"px",this.element.style.paddingRight=this.vDomPadRight+"px",this.initialized=!0,t||e&&!this.reinitChanged(i)||this.renitializeRows(),this.holderEl.scrollLeft=this.scrollLeft}},a.prototype.reinitChanged=function(e){var t=this,o=!0;return e.cols.length!==this.columns.length||e.leftCol!==this.leftCol||e.rightCol!==this.rightCol||(e.cols.forEach(function(e,i){e!==t.columns[i]&&(o=!1)}),!o)},a.prototype.renitializeRows=function(){var e=this;this.table.rowManager.getVisibleRows().forEach(function(t){e.reinitializeRow(t,!0)})},a.prototype.scroll=function(e){this.vDomScrollPosLeft+=e,this.vDomScrollPosRight+=e,e>.8*this.holderEl.clientWidth?this.reinitialize():e>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())},a.prototype.colPositionAdjust=function(e,t,o){for(var i=e;i<t;i++){var n=this.columns[i];n.modules.vdomHoz.leftPos-=o,n.modules.vdomHoz.rightPos-=o}},a.prototype.addColRight=function(){var e,t,o,i=this.columns[this.rightCol+1];i&&i.modules.vdomHoz.leftPos<=this.vDomScrollPosRight&&(e=this.table.rowManager.getVisibleRows(),e.forEach(function(e){if("group"!==e.type){var t=e.getCell(i);e.getElement().appendChild(t.getElement()),t.cellRendered()}}),this.fitDataColAvg&&(t=i.getWidth())===this.fitDataColAvg&&(i.reinitializeWidth(),(o=t-i.getWidth())&&(i.modules.vdomHoz.rightPos-=o,this.colPositionAdjust(this.rightCol+1,this.columns.length,o))),this.rightCol++,this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=i.getWidth(),this.element.style.paddingRight=this.vDomPadRight+"px",this.addColRight())},a.prototype.addColLeft=function(){var e=this.columns[this.leftCol-1];if(e&&e.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft){this.table.rowManager.getVisibleRows().forEach(function(t){if("group"!==t.type){var o=t.getCell(e);t.getElement().prepend(o.getElement()),o.cellRendered()}}),this.leftCol?this.vDomPadLeft-=e.getWidth():this.vDomPadLeft=0,this.element.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol--,this.addColLeft()}},a.prototype.removeColRight=function(e){var t,e=this.columns[this.rightCol];e&&e.modules.vdomHoz.leftPos>this.vDomScrollPosRight&&(t=this.table.rowManager.getVisibleRows(),e.modules.vdomHoz.visible=!1,t.forEach(function(t){if("group"!==t.type){var o=t.getCell(e);t.getElement().removeChild(o.getElement())}}),this.vDomPadRight+=e.getWidth(),this.element.style.paddingRight=this.vDomPadRight+"px",this.rightCol--,this.removeColRight())},a.prototype.removeColLeft=function(){var e,t=this.columns[this.leftCol];t&&t.modules.vdomHoz.rightPos<this.vDomScrollPosLeft&&(e=this.table.rowManager.getVisibleRows(),e.forEach(function(e){if("group"!==e.type){var o=e.getCell(t);e.getElement().removeChild(o.getElement())}}),this.vDomPadLeft+=t.getWidth(),this.element.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol++,this.removeColLeft())},a.prototype.initializeRow=function(e){if("group"!==e.type){e.modules.vdomHoz={leftCol:this.leftCol,rightCol:this.rightCol};for(var t=this.leftCol;t<=this.rightCol;t++){var o=this.columns[t];if(o.visible){var i=e.getCell(o);e.element.appendChild(i.getElement()),i.cellRendered()}}}},a.prototype.reinitializeRow=function(e,t){if("group"!==e.type&&(t||!e.modules.vdomHoz||e.modules.vdomHoz.leftCol!==this.leftCol||e.modules.vdomHoz.rightCol!==this.rightCol)){for(;e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.initializeRow(e)}};var r=function(e){this._row=e};r.prototype.getData=function(e){return this._row.getData(e)},r.prototype.getElement=function(){return this._row.getElement()},r.prototype.getCells=function(){var e=[];return this._row.getCells().forEach(function(t){e.push(t.getComponent())}),e},r.prototype.getCell=function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()},r.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},r.prototype.getPosition=function(e){return this._row.table.rowManager.getRowPosition(this._row,e)},r.prototype.delete=function(){return this._row.delete()},r.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},r.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},r.prototype.move=function(e,t){this._row.moveToRow(e,t)},r.prototype.update=function(e){return this._row.updateData(e)},r.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},r.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},r.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},r.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},r.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},r.prototype._getSelf=function(){return this._row},r.prototype.validate=function(){return this._row.validate()},r.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},r.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},r.prototype.isFrozen=function(){if(this._row.table.modExists("frozenRows",!0)){return this._row.table.modules.frozenRows.rows.indexOf(this._row)>-1}return!1},r.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},r.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},r.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},r.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},r.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row,!0)},r.prototype.addTreeChild=function(e,t,o){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.addTreeChildRow(this._row,e,t,o)},r.prototype.reformat=function(){return this._row.reinitialize()},r.prototype.getGroup=function(){return this._row.getGroup().getComponent()},r.prototype.getTable=function(){return this._row.table},r.prototype.getNextRow=function(){var e=this._row.nextRow();return e?e.getComponent():e},r.prototype.getPrevRow=function(){var e=this._row.prevRow();return e?e.getComponent():e};var l=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=t.table,this.parent=t,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.component=null,this.setData(e),this.generateElement()};l.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.setAttribute("role","row"),e},l.prototype.getElement=function(){return this.element},l.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},l.prototype.generateElement=function(){var e,t,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),(i.table.options.rowContextMenu||i.table.options.rowClickMenu)&&this.table.modExists("menu")&&i.table.modules.menu.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(e){i.table.options.rowClick(e,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(e){i.table.options.rowDblClick(e,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(e){i.table.options.rowContext(e,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(e){i.table.options.rowMouseEnter(e,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(e){i.table.options.rowMouseLeave(e,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(e){i.table.options.rowMouseOver(e,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(e){i.table.options.rowMouseOut(e,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(e){i.table.options.rowMouseMove(e,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&i.table.options.rowTap(e,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,i.table.options.rowDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),i.table.options.rowTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,i.table.options.rowTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null}))},l.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},l.prototype.initialize=function(e){var t=this;if(!this.initialized||e){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),this.table.options.virtualDomHoz&&this.table.vdomHoz.initialized?this.table.vdomHoz.initializeRow(this):this.cells.forEach(function(e){t.element.appendChild(e.getElement()),e.cellRendered()}),e&&this.normalizeHeight(),this.table.options.dataTree&&this.table.modExists("dataTree")&&this.table.modules.dataTree.layoutRow(this),"collapse"===this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout")&&this.table.modules.responsiveLayout.layoutRow(this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.table.options.resizableRows&&this.table.modExists("resizeRows")&&this.table.modules.resizeRows.initializeRow(this),this.initialized=!0}else this.table.options.virtualDomHoz&&this.table.vdomHoz.reinitializeRow(this)},l.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},l.prototype.reinitialize=function(e){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0),this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.modules.dataTree.getTreeChildren(this,!1,!0).forEach(function(e){e.reinitialize(!0)})},l.prototype.calcHeight=function(e){var t=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(e){var o=e.getHeight();o>t&&(t=o)}),this.height=e?Math.max(t,o):this.manualHeight?this.height:Math.max(t,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},l.prototype.setCellHeight=function(){this.cells.forEach(function(e){e.setHeight()}),this.heightInitialized=!0},l.prototype.clearCellHeight=function(){this.cells.forEach(function(e){e.clearHeight()})},l.prototype.normalizeHeight=function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()},l.prototype.setHeight=function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},l.prototype.getHeight=function(){return this.outerHeight},l.prototype.getWidth=function(){return this.element.offsetWidth},l.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},l.prototype.setData=function(e){this.table.modExists("mutator")&&(e=this.table.modules.mutator.transformRow(e,"data")),this.data=e,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},l.prototype.updateData=function(e){var t,o=this,i=h.prototype.helpers.elVisible(this.element),n={};return new Promise(function(s,a){"string"==typeof e&&(e=JSON.parse(e)),o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.block(),o.table.modExists("mutator")?(n=Object.assign(n,o.data),n=Object.assign(n,e),t=o.table.modules.mutator.transformRow(n,"data",e)):t=e;for(var r in t)o.data[r]=t[r];o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.unblock();for(var r in e){o.table.columnManager.getColumnsByFieldRoot(r).forEach(function(e){var n=o.getCell(e.getField());if(n){var s=e.getFieldValue(t);n.getValue()!=s&&(n.setValueProcessData(s),i&&n.cellRendered())}})}o.table.options.groupUpdateOnCellEdit&&o.table.options.groupBy&&o.table.modExists("groupRows")&&o.table.modules.groupRows.reassignRowToGroup(o.row),i?(o.normalizeHeight(!0),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(o.initialized=!1,o.height=0,o.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.redrawNeeded(e)&&(o.table.modules.dataTree.initializeRow(o),i&&(o.table.modules.dataTree.layoutRow(o),o.table.rowManager.refreshActiveData("tree",!1,!0))),o.table.options.rowUpdated.call(o.table,o.getComponent()),o.table.options.dataChanged&&o.table.options.dataChanged.call(o.table,o.table.rowManager.getData()),s()})},l.prototype.getData=function(e){return e&&this.table.modExists("accessor")?this.table.modules.accessor.transformRow(this,e):this.data},l.prototype.getCell=function(e){return e=this.table.columnManager.findColumn(e),this.cells.find(function(t){return t.column===e})},l.prototype.getCellIndex=function(e){return this.cells.findIndex(function(t){return t===e})},l.prototype.findNextEditableCell=function(e){var t=!1;if(e<this.cells.length-1)for(var o=e+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&h.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){t=i;break}}}return t},l.prototype.findPrevEditableCell=function(e){var t=!1;if(e>0)for(var o=e-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&h.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){t=i;break}}return t},l.prototype.getCells=function(){return this.cells},l.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},l.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},l.prototype.moveToRow=function(e,t){var o=this.table.rowManager.findRow(e);o?(this.table.rowManager.moveRowActual(this,o,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)},l.prototype.validate=function(){var e=[];return this.cells.forEach(function(t){t.validate()||e.push(t.getComponent())}),!e.length||e},l.prototype.delete=function(){var e=this;return new Promise(function(t,o){var i,n;e.table.options.history&&e.table.modExists("history")&&(e.table.options.groupBy&&e.table.modExists("groupRows")?(n=e.getGroup().rows,(i=n.indexOf(e))&&(i=n[i-1])):(i=e.table.rowManager.getRowIndex(e))&&(i=e.table.rowManager.rows[i-1]),e.table.modules.history.action("rowDelete",e,{data:e.getData(),pos:!i,index:i})),e.deleteActual(),t()})},l.prototype.deleteActual=function(e){this.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.modules.dataTree.rowDelete(this),this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},l.prototype.detatchModules=function(){this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.modExists("edit")&&this.table.modules.edit.currentCell.row===this&&this.table.modules.edit.cancelEdit(),this.table.modExists("frozenRows")&&this.table.modules.frozenRows.detachRow(this)},l.prototype.deleteCells=function(){for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete()},l.prototype.wipe=function(){for(this.detatchModules(),this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},l.prototype.getGroup=function(){return this.modules.group||!1},l.prototype.getComponent=function(){return this.component||(this.component=new r(this)),this.component};var c=function(e){this._cell=e};c.prototype.getValue=function(){return this._cell.getValue()},c.prototype.getOldValue=function(){return this._cell.getOldValue()},c.prototype.getInitialValue=function(){return this._cell.initialValue},c.prototype.getElement=function(){return this._cell.getElement()},c.prototype.getRow=function(){return this._cell.row.getComponent()},c.prototype.getData=function(){return this._cell.row.getData()},c.prototype.getField=function(){return this._cell.column.getField()},c.prototype.getColumn=function(){return this._cell.column.getComponent()},c.prototype.setValue=function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)},c.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},c.prototype.restoreInitialValue=function(){this._cell.setValueActual(this._cell.initialValue)},c.prototype.edit=function(e){return this._cell.edit(e)},c.prototype.cancelEdit=function(){this._cell.cancelEdit()},c.prototype.isEdited=function(){return!!this._cell.modules.edit&&this._cell.modules.edit.edited},c.prototype.clearEdited=function(){self.table.modExists("edit",!0)&&this._cell.table.modules.edit.clearEdited(this._cell)},c.prototype.isValid=function(){return!this._cell.modules.validate||!this._cell.modules.validate.invalid},c.prototype.validate=function(){return this._cell.validate()},c.prototype.clearValidation=function(){this._cell.table.modExists("validate",!0)&&this._cell.table.modules.validate.clearValidation(this._cell)},c.prototype.nav=function(){return this._cell.nav()},c.prototype.checkHeight=function(){this._cell.checkHeight()},c.prototype.getTable=function(){return this._cell.table},c.prototype._getSelf=function(){return this._cell};var u=function(e,t){this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.initialValue,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.loaded=!1,this.build()};u.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value},u.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},u.prototype._configureCell=function(){var e=this,t=e.column.cellEvents,o=e.element,i=this.column.getField(),n={top:"flex-start",bottom:"flex-end",middle:"center"},s={left:"flex-start",right:"flex-end",center:"center"};if(o.style.textAlign=e.column.hozAlign,e.column.vertAlign&&(o.style.display="inline-flex",o.style.alignItems=n[e.column.vertAlign]||"",e.column.hozAlign&&(o.style.justifyContent=s[e.column.hozAlign]||"")),i&&o.setAttribute("tabulator-field",i),e.column.definition.cssClass){e.column.definition.cssClass.split(" ").forEach(function(e){o.classList.add(e)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(t){e._generateTooltip()}),e._bindClickEvents(t),e._bindTouchEvents(t),e._bindMouseEvents(t),e.column.modules.edit&&e.table.modules.edit.bindEditor(e),e.column.definition.rowHandle&&!1!==e.table.options.movableRows&&e.table.modExists("moveRow")&&e.table.modules.moveRow.initializeCell(e),e.column.visible||e.hide()},u.prototype._bindClickEvents=function(e){var t=this,o=t.element;(e.cellClick||t.table.options.cellClick)&&o.addEventListener("click",function(o){var i=t.getComponent();e.cellClick&&e.cellClick.call(t.table,o,i),t.table.options.cellClick&&t.table.options.cellClick.call(t.table,o,i)}),e.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=t.getComponent();e.cellDblClick&&e.cellDblClick.call(t.table,o,i),t.table.options.cellDblClick&&t.table.options.cellDblClick.call(t.table,o,i)}):o.addEventListener("dblclick",function(e){if(!t.table.modExists("edit")||t.table.modules.edit.currentCell!==t){e.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(t.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(t.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(e){}}}),(e.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=t.getComponent();e.cellContext&&e.cellContext.call(t.table,o,i),t.table.options.cellContext&&t.table.options.cellContext.call(t.table,o,i)})},u.prototype._bindMouseEvents=function(e){var t=this,o=t.element;(e.cellMouseEnter||t.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=t.getComponent();e.cellMouseEnter&&e.cellMouseEnter.call(t.table,o,i),t.table.options.cellMouseEnter&&t.table.options.cellMouseEnter.call(t.table,o,i)}),(e.cellMouseLeave||t.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=t.getComponent();e.cellMouseLeave&&e.cellMouseLeave.call(t.table,o,i),t.table.options.cellMouseLeave&&t.table.options.cellMouseLeave.call(t.table,o,i)}),(e.cellMouseOver||t.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=t.getComponent();e.cellMouseOver&&e.cellMouseOver.call(t.table,o,i),t.table.options.cellMouseOver&&t.table.options.cellMouseOver.call(t.table,o,i)}),(e.cellMouseOut||t.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=t.getComponent();e.cellMouseOut&&e.cellMouseOut.call(t.table,o,i),t.table.options.cellMouseOut&&t.table.options.cellMouseOut.call(t.table,o,i)}),(e.cellMouseMove||t.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=t.getComponent();e.cellMouseMove&&e.cellMouseMove.call(t.table,o,i),t.table.options.cellMouseMove&&t.table.options.cellMouseMove.call(t.table,o,i)})},u.prototype._bindTouchEvents=function(e){var t,o,i,n=this,s=n.element;(e.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(e){i=!0},{passive:!0}),s.addEventListener("touchend",function(t){if(i){var o=n.getComponent();e.cellTap&&e.cellTap.call(n.table,t,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,t,o)}i=!1})),(e.cellDblTap||this.table.options.cellDblTap)&&(t=null,s.addEventListener("touchend",function(o){if(t){clearTimeout(t),t=null;var i=n.getComponent();e.cellDblTap&&e.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else t=setTimeout(function(){clearTimeout(t),t=null},300)})),(e.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();e.cellTapHold&&e.cellTapHold.call(n.table,t,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,t,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(e){clearTimeout(o),o=null}))},u.prototype._generateContents=function(){var e;switch(e=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===e?"undefined":_typeof(e)){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}},u.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},u.prototype._generateTooltip=function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")},u.prototype.getElement=function(){return this.loaded||(this.loaded=!0,this.layoutElement()),this.element},u.prototype.getValue=function(){return this.value},u.prototype.getOldValue=function(){return this.oldValue},u.prototype.setValue=function(e,t){var o,i=this.setValueProcessData(e,t);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.groupUpdateOnCellEdit&&this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.reassignRowToGroup(this.row),this.cellRendered(),this.table.options.cellEdited.call(this.table,o),this.table.options.dataChanged&&this.table.options.dataChanged.call(this.table,this.table.rowManager.getData()))},u.prototype.setValueProcessData=function(e,t){var o=!1;return this.value!=e&&(o=!0,t&&this.column.modules.mutate&&(e=this.table.modules.mutator.transformCell(this,e))),this.setValueActual(e),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},u.prototype.setValueActual=function(e){this.oldValue=this.value,this.value=e,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,e),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this.loaded&&this.layoutElement()},u.prototype.layoutElement=function(){this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&"row"===this.row.type&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),
-(this.column.definition.contextMenu||this.column.definition.clickMenu)&&this.table.modExists("menu")&&this.table.modules.menu.initializeCell(this),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},u.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},u.prototype.clearWidth=function(){this.width="",this.element.style.width=""},u.prototype.getWidth=function(){return this.width||this.element.offsetWidth},u.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},u.prototype.checkHeight=function(){this.row.reinitializeHeight()},u.prototype.clearHeight=function(){this.element.style.height="",this.height=null},u.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},u.prototype.getHeight=function(){return this.height||this.element.offsetHeight},u.prototype.show=function(){this.element.style.display=this.column.vertAlign?"inline-flex":""},u.prototype.hide=function(){this.element.style.display="none"},u.prototype.edit=function(e){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,e)},u.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var e=this.table.modules.edit.getCurrentCell();e&&e._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},u.prototype.validate=function(){if(this.column.modules.validate&&this.table.modExists("validate",!0)){return!0===this.table.modules.validate.validate(this.column.modules.validate,this,this.getValue())}return!0},u.prototype.delete=function(){!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.modules.validate&&this.modules.validate.invalid&&this.table.modules.validate.clearValidation(this),this.modules.edit&&this.modules.edit.edited&&this.table.modules.edit.clearEdited(this),this.table.options.history&&this.table.modules.history.clearComponentHistory(this),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},u.prototype.nav=function(){var e=this,t=!1,o=this.row.getCellIndex(this);return{next:function(){var t,o=this.right();return!!o||!(!(t=e.table.rowManager.nextDisplayRow(e.row,!0))||!(o=t.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var t,o=this.left();return!!o||!(!(t=e.table.rowManager.prevDisplayRow(e.row,!0))||!(o=t.findPrevEditableCell(t.cells.length)))&&(o.edit(),!0)},left:function(){return!!(t=e.row.findPrevEditableCell(o))&&(t.edit(),!0)},right:function(){return!!(t=e.row.findNextEditableCell(o))&&(t.edit(),!0)},up:function(){var t=e.table.rowManager.prevDisplayRow(e.row,!0);t&&t.cells[o].edit()},down:function(){var t=e.table.rowManager.nextDisplayRow(e.row,!0);t&&t.cells[o].edit()}}},u.prototype.getIndex=function(){this.row.getCellIndex(this)},u.prototype.getComponent=function(){return this.component||(this.component=new c(this)),this.component};var d=function(e){this.table=e,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};d.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e},d.prototype._initialize=function(e){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},d.prototype.getElement=function(){return this.element},d.prototype.append=function(e,t){this.activate(t),this.element.appendChild(e),this.table.rowManager.adjustTableSize()},d.prototype.prepend=function(e,t){this.activate(t),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()},d.prototype.remove=function(e){e.parentNode.removeChild(e),this.deactivate()},d.prototype.deactivate=function(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},d.prototype.activate=function(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)},d.prototype.redraw=function(){this.links.forEach(function(e){e.footerRedraw()})};var h=function e(t,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.vdomHoz=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.modules={},this.initializeElement(t)&&(this.initializeOptions(o||{}),this._create()),e.prototype.comms.register(this)};h.prototype.defaultOptions={height:!1,minHeight:!1,maxHeight:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],cellHozAlign:"",cellVertAlign:"",headerHozAlign:"",data:[],autoColumns:!1,autoColumnsDefinitions:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,headerSortElement:"<div class='tabulator-arrow'></div>",footerElement:!1,index:"id",textDirection:"auto",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopyConfig:!1,clipboardCopyFormatter:!1,clipboardCopyRowRange:"active",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(e,t){return t},downloadComplete:!1,downloadConfig:{},downloadRowRange:"active",dataTree:!1,dataTreeFilter:!0,dataTreeSort:!0,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},dataTreeChildColumnCalcs:!1,dataTreeSelectPropagate:!1,printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printStyled:!0,printVisibleRows:!0,printRowRange:"visible",printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(e,t){return!0},headerFilterLiveFilterDelay:300,headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,virtualDomHoz:!1,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupUpdateOnCellEdit:!1,groupHeader:!1,groupHeaderPrint:null,groupHeaderClipboard:null,groupHeaderHtmlOutput:null,groupHeaderDownload:null,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsConnectedElements:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},movableRowsElementDrop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowContextMenu:!1,rowClickMenu:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:!1,dataChanged:!1,ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupContextMenu:!1,groupClickMenu:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationMode:"blocking",validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},h.prototype.initializeOptions=function(e){if(!1!==e.invalidOptionWarnings)for(var t in e)void 0===this.defaultOptions[t]&&console.warn("Invalid table constructor option:",t);for(var t in this.defaultOptions)t in e?this.options[t]=e[t]:Array.isArray(this.defaultOptions[t])?this.options[t]=Object.assign([],this.defaultOptions[t]):"object"===_typeof(this.defaultOptions[t])&&null!==this.defaultOptions[t]?this.options[t]=Object.assign({},this.defaultOptions[t]):this.options[t]=this.defaultOptions[t]},h.prototype.initializeElement=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)},h.prototype.rtlCheck=function(){var e=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==e.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}},h.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),this.options.dataEdited&&(console.warn("DEPRECATION WARNING - dataEdited option has been deprecated, please use the dataChanged option instead"),this.options.dataChanged=this.options.dataEdited),this.options.downloadDataFormatter&&console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated"),void 0!==this.options.clipboardCopyHeader&&(this.options.columnHeaders=this.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),!0!==this.options.printVisibleRows&&(console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option"),this.options.persistence.printRowRange="active"),!0!==this.options.printCopyStyle&&(console.warn("printCopyStyle option is deprecated, you should now use the printStyled option"),this.options.persistence.printStyled=this.options.printCopyStyle),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},h.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},h.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),this.rtlCheck(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new s(this),this.footerManager=new d(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this.options.virtualDomHoz&&(this.vdomHoz=new a(this)),this._buildElement(),this._loadInitialData()},h.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},h.prototype._buildElement=function(){var e=this,t=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",t.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",t.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",t.style.maxHeight=i.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),o.localize.initialize(),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var a=document.createElement("span");a.innerHTML=i.placeholder,s.appendChild(a),i.placeholder=s}if(t.appendChild(this.columnManager.getElement()),t.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var r=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(r=o.persistence.load("sort"))&&i.initialSort&&(r=i.initialSort):i.initialSort&&(r=i.initialSort),o.sort.setSort(r)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var l=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(l=o.persistence.load("filter"))&&i.initialFilter&&(l=i.initialFilter):i.initialFilter&&(l=i.initialFilter),o.filter.setFilter(l)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(t){var i=e.columnManager.findColumn(t.field);if(!i)return console.warn("Column Filter Error - No matching column found:",t.field),!1;o.filter.setHeaderFilterValue(i,t.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},h.prototype._loadInitialData=function(){var e=this;if(e.options.pagination&&e.modExists("page"))if(e.modules.page.reset(!0,!0),"local"==e.options.pagination){if(e.options.data.length)e.rowManager.setData(e.options.data,!1,!0);else{if((e.options.ajaxURL||e.options.ajaxURLGenerator)&&e.modExists("ajax"))return void e.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){e.options.paginationInitialPage&&e.modules.page.setPage(e.options.paginationInitialPage)});e.rowManager.setData(e.options.data,!1,!0)}e.options.paginationInitialPage&&e.modules.page.setPage(e.options.paginationInitialPage)}else e.options.ajaxURL?e.modules.page.setPage(e.options.paginationInitialPage).then(function(){}).catch(function(){}):e.rowManager.setData([],!1,!0);else e.options.data.length?e.rowManager.setData(e.options.data):(e.options.ajaxURL||e.options.ajaxURLGenerator)&&e.modExists("ajax")?e.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){}):e.rowManager.setData(e.options.data,!1,!0)},h.prototype.destroy=function(){var e=this.element;for(h.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(e){e.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")},h.prototype._detectBrowser=function(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))},h.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},h.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},h.prototype.setDataFromLocalFile=function(e){var t=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=e||".json,application/json",n.addEventListener("change",function(e){var s,a=n.files[0],r=new FileReader;r.readAsText(a),r.onload=function(e){try{s=JSON.parse(r.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void i(e)}t.setData(s).then(function(e){o(e)}).catch(function(e){o(e)})},r.onerror=function(e){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},h.prototype.setData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!1,!0)},h.prototype._setData=function(e,t,o,i,n){var s=this;return"string"!=typeof e?e?s.rowManager.setData(e,i,n):s.modExists("ajax")&&(s.modules.ajax.getUrl||s.options.ajaxURLGenerator)?"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n):s.rowManager.setData([],i,n):0==e.indexOf("{")||0==e.indexOf("[")?s.rowManager.setData(JSON.parse(e),i,n):s.modExists("ajax",!0)?(t&&s.modules.ajax.setParams(t),o&&s.modules.ajax.setConfig(o),s.modules.ajax.setUrl(e),"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n)):void 0},h.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},h.prototype.getData=function(e){return!0===e&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getData(e)},h.prototype.getDataCount=function(e){return!0===e&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getDataCount(e)},h.prototype.searchRows=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",e,t,o)},h.prototype.searchData=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",e,t,o)},h.prototype.getHtml=function(e,t,o){if(this.modExists("export",!0))return this.modules.export.getHtml(e,t,o)},h.prototype.print=function(e,t,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(e,t,o)},h.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},h.prototype.replaceData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!0)},h.prototype.updateData=function(e){var t=this,o=this,i=0;return new Promise(function(n,s){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);t&&(i++,t.updateData(e).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},h.prototype.addData=function(e,t,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?i.rowManager.addRows(e,t,o).then(function(e){var t=[];e.forEach(function(e){t.push(e.getComponent())}),n(t)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},h.prototype.updateOrAddData=function(e){var t=this,o=this,i=[],n=0;return new Promise(function(s,a){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);n++,t?t.updateData(e).then(function(){n--,i.push(t.getComponent()),n||s(i)}):o.rowManager.addRows(e).then(function(e){n--,i.push(e[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),a("Update Error - No data provided"))})},h.prototype.getRow=function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},h.prototype.getRowFromPosition=function(e,t){var o=this.rowManager.getRowFromPosition(e,t);return o?o.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},h.prototype.deleteRow=function(e){var t=this;return new Promise(function(o,i){function n(){++a==e.length&&r&&(s.rowManager.reRenderInPosition(),o())}var s=t,a=0,r=0,l=[];Array.isArray(e)||(e=[e]),e.forEach(function(e){var o=t.rowManager.findRow(e,!0);o?l.push(o):(console.warn("Delete Error - No matching row found:",e),i("Delete Error - No matching row found"),n())}),l.sort(function(e,o){return t.rowManager.rows.indexOf(e)>t.rowManager.rows.indexOf(o)?1:-1}),l.forEach(function(e){e.delete().then(function(){r++,n()}).catch(function(e){n(),i(e)})})})},h.prototype.addRow=function(e,t,o){var i=this;return new Promise(function(n,s){"string"==typeof e&&(e=JSON.parse(e)),i.rowManager.addRows(e,t,o).then(function(e){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(e[0].getComponent())})})},h.prototype.updateOrAddRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(e){n(e)}):s=o.rowManager.addRows(t).then(function(e){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(e[0].getComponent())}).catch(function(e){n(e)})})},h.prototype.updateRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){i(s.getComponent())}).catch(function(e){n(e)}):(console.warn("Update Error - No matching row found:",e),n("Update Error - No matching row found"))})},h.prototype.scrollToRow=function(e,t,o){var i=this;return new Promise(function(n,s){var a=i.rowManager.findRow(e);a?i.rowManager.scrollToRow(a,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching row found:",e),s("Scroll Error - No matching row found"))})},h.prototype.moveRow=function(e,t,o){var i=this.rowManager.findRow(e);i?i.moveToRow(t,o):console.warn("Move Error - No matching row found:",e)},h.prototype.getRows=function(e){return!0===e&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getComponents(e)},h.prototype.getRowPosition=function(e,t){var o=this.rowManager.findRow(e);return o?this.rowManager.getRowPosition(o,t):(console.warn("Position Error - No matching row found:",e),!1)},h.prototype.copyToClipboard=function(e){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(e)},h.prototype.setColumns=function(e){this.columnManager.setColumns(e)},h.prototype.getColumns=function(e){return this.columnManager.getComponents(e)},h.prototype.getColumn=function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)},h.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},h.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},h.prototype.setColumnLayout=function(e){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,e)),!0)},h.prototype.showColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},h.prototype.hideColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},h.prototype.toggleColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()},h.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var a=i.columnManager.findColumn(o);i.columnManager.addColumn(e,t,a).then(function(e){n(e.getComponent())}).catch(function(e){s(e)})})},h.prototype.deleteColumn=function(e){var t=this;return new Promise(function(o,i){var n=t.columnManager.findColumn(e);n?n.delete().then(function(){o()}).catch(function(e){i(e)}):(console.warn("Column Delete Error - No matching column found:",e),i())})},h.prototype.updateColumnDefinition=function(e,t){var o=this;return new Promise(function(i,n){var s=o.columnManager.findColumn(e);s?s.updateDefinition(t).then(function(e){i(e)}).catch(function(e){n(e)}):(console.warn("Column Update Error - No matching column found:",e),n())})},h.prototype.moveColumn=function(e,t,o){var i=this.columnManager.findColumn(e),n=this.columnManager.findColumn(t);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",e)},h.prototype.scrollToColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var a=i.columnManager.findColumn(e);a?i.columnManager.scrollToColumn(a,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching column found:",e),s("Scroll Error - No matching column found"))})},h.prototype.setLocale=function(e){this.modules.localize.setLocale(e)},h.prototype.getLocale=function(){return this.modules.localize.getLocale()},h.prototype.getLang=function(e){return this.modules.localize.getLang(e)},h.prototype.redraw=function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)},h.prototype.setHeight=function(e){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},
-h.prototype.setSort=function(e,t){this.modExists("sort",!0)&&(this.modules.sort.setSort(e,t),this.rowManager.sorterRefresh())},h.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},h.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},h.prototype.setFilter=function(e,t,o,i){this.modExists("filter",!0)&&(this.modules.filter.setFilter(e,t,o,i),this.rowManager.filterRefresh())},h.prototype.addFilter=function(e,t,o,i){this.modExists("filter",!0)&&(this.modules.filter.addFilter(e,t,o,i),this.rowManager.filterRefresh())},h.prototype.getFilters=function(e){if(this.modExists("filter",!0))return this.modules.filter.getFilters(e)},h.prototype.setHeaderFilterFocus=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterFocus(t)}},h.prototype.getHeaderFilterValue=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(t)return this.modules.filter.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}},h.prototype.setHeaderFilterValue=function(e,t){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(e);if(!o)return console.warn("Column Filter Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterValue(o,t)}},h.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},h.prototype.removeFilter=function(e,t,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(e,t,o),this.rowManager.filterRefresh())},h.prototype.clearFilter=function(e){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(e),this.rowManager.filterRefresh())},h.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},h.prototype.selectRow=function(e){this.modExists("selectRow",!0)&&(!0===e&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),e="active"),this.modules.selectRow.selectRows(e))},h.prototype.deselectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(e)},h.prototype.toggleSelectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(e)},h.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},h.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},h.prototype.getInvalidCells=function(){if(this.modExists("validate",!0))return this.modules.validate.getInvalidCells()},h.prototype.clearCellValidation=function(e){var t=this;this.modExists("validate",!0)&&(e||(e=this.modules.validate.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach(function(e){t.modules.validate.clearValidation(e._getSelf())}))},h.prototype.validate=function(e){var t=[];return this.rowManager.rows.forEach(function(e){var o=e.validate();!0!==o&&(t=t.concat(o))}),!t.length||t},h.prototype.setMaxPage=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(e)},h.prototype.setPage=function(e){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(e):new Promise(function(e,t){t()})},h.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){t.options.pagination&&t.modExists("page")?(e=t.rowManager.findRow(e),e?t.modules.page.setPageToRow(e).then(function(){o()}).catch(function(){i()}):i()):i()})},h.prototype.setPageSize=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(e),this.modules.page.setPage(1).then(function(){}).catch(function(){})},h.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},h.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},h.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},h.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},h.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},h.prototype.setGroupBy=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=e,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},h.prototype.setGroupValues=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupValues=e,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},h.prototype.setGroupStartOpen=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},h.prototype.setGroupHeader=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},h.prototype.getGroups=function(e){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},h.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},h.prototype.getEditedCells=function(){if(this.modExists("edit",!0))return this.modules.edit.getEditedCells()},h.prototype.clearCellEdited=function(e){var t=this;this.modExists("edit",!0)&&(e||(e=this.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach(function(e){t.modules.edit.clearEdited(e._getSelf())}))},h.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},h.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},h.prototype.navigatePrev=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().prev()},h.prototype.navigateNext=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().next()},h.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},h.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},h.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},h.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},h.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},h.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},h.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},h.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},h.prototype.download=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i)},h.prototype.downloadToTab=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i,!0)},h.prototype.tableComms=function(e,t,o,i){this.modules.comms.receive(e,t,o,i)},h.prototype.moduleBindings={},h.prototype.extendModule=function(e,t,o){if(h.prototype.moduleBindings[e]){var i=h.prototype.moduleBindings[e].prototype[t];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",t)}else console.warn("Module Error - module does not exist:",e)},h.prototype.registerModule=function(e,t){h.prototype.moduleBindings[e]=t},h.prototype.bindModules=function(){this.modules={};for(var e in h.prototype.moduleBindings)this.modules[e]=new h.prototype.moduleBindings[e](this)},h.prototype.modExists=function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)},h.prototype.helpers={elVisible:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)},elOffset:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(e){var t=Object.assign(Array.isArray(e)?[]:{},e);for(var o in e)null!=e[o]&&"object"===_typeof(e[o])&&(e[o]instanceof Date?t[o]=new Date(e[o]):t[o]=this.deepClone(e[o]));return t}},h.prototype.comms={tables:[],register:function(e){h.prototype.comms.tables.push(e)},deregister:function(e){var t=h.prototype.comms.tables.indexOf(e);t>-1&&h.prototype.comms.tables.splice(t,1)},lookupTable:function(e,t){var o,i,n=[];if("string"==typeof e){if(o=document.querySelectorAll(e),o.length)for(var s=0;s<o.length;s++)(i=h.prototype.comms.matchElement(o[s]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e instanceof h?(i=h.prototype.comms.matchElement(e))&&n.push(i):Array.isArray(e)?e.forEach(function(e){n=n.concat(h.prototype.comms.lookupTable(e))}):t||console.warn("Table Connection Error - Invalid Selector",e);return n},matchElement:function(e){return h.prototype.comms.tables.find(function(t){return e instanceof h?t===e:t.element===e})}},h.prototype.findTable=function(e){var t=h.prototype.comms.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t};var p=function(e){this.table=e,this.mode=null};p.prototype.initialize=function(e){this.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},p.prototype.getMode=function(){return this.mode},p.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},p.prototype.modes={fitData:function(e){this.table.options.virtualDomHoz?this.table.vdomHoz.fitDataLayoutOverride():e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataTable:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(e){var t=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,s=!1;e.forEach(function(e,i){e.widthFixed||e.reinitializeWidth(),(t.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(s=e),e.visible&&(o+=e.getWidth())}),s?(n=i-o+s.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(s.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?s.setWidth(n):s.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){function t(e){return"string"==typeof e?e.indexOf("%")>-1?n/100*parseInt(e):parseInt(e):e}function o(e,i,n,s){function a(e){return n*(e.column.definition.widthGrow||1)}function r(e){return t(e.width)-n*(e.column.definition.widthShrink||0)}var l=[],c=0,u=0,d=0,h=0,p=0,m=[];return e.forEach(function(e,t){var o=s?r(e):a(e);e.column.minWidth>=o?l.push(e):(m.push(e),p+=s?e.column.definition.widthShrink||1:e.column.definition.widthGrow||1)}),l.length?(l.forEach(function(e){c+=s?e.width-e.column.minWidth:e.column.minWidth,e.width=e.column.minWidth}),u=i-c,d=p?Math.floor(u/p):u,h=u-d*p,h+=o(m,u,d,s)):(h=p?i-Math.floor(i/p)*p:i,m.forEach(function(e){e.width=s?r(e):a(e)})),h}var i=this,n=i.table.element.clientWidth,s=0,a=0,r=0,l=0,c=[],u=[],d=0,h=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach(function(e){var o,i,n;e.visible&&(o=e.definition.width,i=parseInt(e.minWidth),o?(n=t(o),s+=n>i?n:i,e.definition.widthShrink&&(u.push({column:e,width:n>i?n:i}),d+=e.definition.widthShrink)):(c.push({column:e,width:0}),r+=e.definition.widthGrow||1))}),a=n-s,l=Math.floor(a/r);var p=o(c,a,l,!1);c.length&&p>0&&(c[c.length-1].width+=+p),c.forEach(function(e){a-=e.width}),h=Math.abs(p)+a,h>0&&d&&(p=o(u,h,Math.floor(h/d),!0)),u.length&&(u[u.length-1].width-=p),c.forEach(function(e){e.column.setWidth(e.width)}),u.forEach(function(e){e.column.setWidth(e.width)})}},h.prototype.registerModule("layout",p);var m=function(e){this.table=e,this.locale="default",this.lang=!1,this.bindings={},this.langList={}};m.prototype.initialize=function(){this.langList=h.prototype.helpers.deepClone(this.langs)},m.prototype.setHeaderFilterPlaceholder=function(e){this.langList.default.headerFilters.default=e},m.prototype.setHeaderFilterColumnPlaceholder=function(e,t){this.langList.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)},m.prototype.installLang=function(e,t){this.langList[e]?this._setLangProp(this.langList[e],t):this.langList[e]=t},m.prototype._setLangProp=function(e,t){for(var o in t)e[o]&&"object"==_typeof(e[o])?this._setLangProp(e[o],t[o]):e[o]=t[o]},m.prototype.setLocale=function(e){function t(e,o){for(var i in e)"object"==_typeof(e[i])?(o[i]||(o[i]={}),t(e[i],o[i])):o[i]=e[i]}var o=this;if(e=e||"default",!0===e&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!o.langList[e]){var i=e.split("-")[0];o.langList[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,i),e=i):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}o.locale=e,o.lang=h.prototype.helpers.deepClone(o.langList.default||{}),"default"!=e&&t(o.langList[e],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},m.prototype.getLocale=function(e){return self.locale},m.prototype.getLang=function(e){return e?this.langList[e]:this.lang},m.prototype.getText=function(e,t){var e=t?e+"|"+t:e,o=e.split("|");return this._getLangElement(o,this.locale)||""},m.prototype._getLangElement=function(e,t){var o=this,i=o.lang;return e.forEach(function(e){var t;i&&(t=i[e],i=void 0!==t&&t)}),i},m.prototype.bind=function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)},m.prototype._executeBindings=function(){var e=this;for(var t in e.bindings)!function(t){e.bindings[t].forEach(function(o){o(e.getText(t),e.lang)})}(t)},m.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}},h.prototype.registerModule("localize",m);var f=function(e){this.table=e};f.prototype.getConnections=function(e){var t,o=this,i=[];return t=h.prototype.comms.lookupTable(e),t.forEach(function(e){o.table!==e&&i.push(e)}),i},f.prototype.send=function(e,t,o,i){var n=this,s=this.getConnections(e);s.forEach(function(e){e.tableComms(n.table.element,t,o,i)}),!s.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)},f.prototype.receive=function(e,t,o,i){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,o,i);console.warn("Inter-table Comms Error - no such module:",t)},h.prototype.registerModule("comms",f);var g=function(e){this.table=e,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};g.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,a="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[a]&&(s=t.lookupAccessor(e.definition[a]))&&(o=!0,i[a]={accessor:s,params:e.definition[a+"Params"]||{}})}),o&&(e.modules.accessor=i)},g.prototype.lookupAccessor=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.accessors[e]?t=this.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t},g.prototype.transformRow=function(e,t){var o="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),i=e.getComponent(),n=h.prototype.helpers.deepClone(e.data||{});return this.table.columnManager.traverse(function(e){var s,a,r,l;e.modules.accessor&&(a=e.modules.accessor[o]||e.modules.accessor.accessor||!1)&&"undefined"!=(s=e.getFieldValue(n))&&(l=e.getComponent(),r="function"==typeof a.params?a.params(s,n,t,l,i):a.params,e.setFieldValue(n,a.accessor(s,n,t,r,l,i)))}),n},g.prototype.accessors={},h.prototype.registerModule("accessor",g);var b=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};b.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},b.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},b.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},b.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},b.prototype.getParams=function(){return this.params||{}},b.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},b.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},b.prototype.setUrl=function(e){this.url=e},b.prototype.getUrl=function(){return this.url},b.prototype.loadData=function(e,t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e,t)},b.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},b.prototype.blockActiveRequest=function(){this.requestOrder++},b.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},b.prototype._loadDataStandard=function(e,t){var o=this;return new Promise(function(i,n){o.sendRequest(e).then(function(s){o.table.rowManager.setData(s,e,t).then(function(){i()}).catch(function(e){n(e)})}).catch(function(e){n(e)})})},b.prototype.generateParamsList=function(e,t){var o=this,i=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,n){i=i.concat(o.generateParamsList(e,t?t+"["+n+"]":n))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var n in e)i=i.concat(o.generateParamsList(e[n],t?t+"["+n+"]":n));else i.push({key:t,value:e});return i},b.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},b.prototype.sendRequest=function(e){var t,o=this,i=this,n=i.url;return i.requestOrder++,t=i.requestOrder,i._loadDefaultConfig(),new Promise(function(s,a){!1!==i.table.options.ajaxRequesting.call(o.table,i.url,i.params)?(i.loading=!0,e||i.showLoader(),o.loaderPromise(n,i.config,i.params).then(function(e){t===i.requestOrder?(i.table.options.ajaxResponse&&(e=i.table.options.ajaxResponse.call(i.table,i.url,i.params,e)),s(e),i.hideLoader(),i.loading=!1):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made")}).catch(function(e){console.error("Ajax Load Error: ",e),i.table.options.ajaxError.call(i.table,e),i.showError(),setTimeout(function(){i.hideLoader()},3e3),i.loading=!1,a()})):a()})},b.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},b.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},b.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},b.prototype.defaultConfig={method:"GET"},b.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+this.serializeParams(o))),e},b.prototype.defaultLoaderPromise=function(e,t,o){var i,n=this;return new Promise(function(s,a){if(e=n.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(i="object"===_typeof(n.table.options.ajaxContentType)?n.table.options.ajaxContentType:n.contentTypeFormatters[n.table.options.ajaxContentType]){for(var r in i.headers)t.headers||(t.headers={}),void 0===t.headers[r]&&(t.headers[r]=i.headers[r]);t.body=i.body.call(n,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",n.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){s(e)}).catch(function(e){a(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),a(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),a(e)})):(console.warn("Ajax Load Error - No URL Set"),s([]))})},b.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var i=this.generateParamsList(o),n=new FormData;return i.forEach(function(e){n.append(e.key,e.value)}),n}}},h.prototype.registerModule("ajax",b);var v=function(e){this._row=e};v.prototype.getData=function(e){return this._row.getData(e)},v.prototype.getElement=function(){return this._row.getElement()},v.prototype.getTable=function(){return this._row.table},v.prototype.getCells=function(){var e=[];return this._row.getCells().forEach(function(t){e.push(t.getComponent())}),e},v.prototype.getCell=function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()},v.prototype._getSelf=function(){return this._row};var y=function(e){this.table=e,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};y.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e},y.prototype.initialize=function(){this.genColumn=new n({field:"value"},this)},y.prototype.registerColumnField=function(){},y.prototype.initializeColumn=function(e){var t=e.definition,o={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(_typeof(t.topCalc)){case"string":this.calculations[t.topCalc]?o.topCalc=this.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":o.topCalc=t.topCalc}o.topCalc&&(e.modules.columnCalcs=o,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(_typeof(t.bottomCalc)){case"string":this.calculations[t.bottomCalc]?o.botCalc=this.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":o.botCalc=t.bottomCalc}o.botCalc&&(e.modules.columnCalcs=o,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},y.prototype.removeCalcs=function(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()},y.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},y.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},y.prototype.scrollHorizontal=function(e){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&this.botRow&&(this.botRow.getElement().style.marginLeft=-e+"px")},y.prototype.recalc=function(e){var t;if(this.topInitialized||this.botInitialized){if(this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),t=this.generateRow("top",this.rowsToData(e)),this.topRow=t;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(t.getElement()),t.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),t=this.generateRow("bottom",this.rowsToData(e)),this.botRow=t;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(t.getElement()),t.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},y.prototype.recalcRowGroup=function(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))},y.prototype.recalcAll=function(){var e=this;if((this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalc(this.table.rowManager.activeRows),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs)){table.modules.groupRows.getChildGroups().forEach(function(t){e.recalcGroup(t)})}},y.prototype.recalcGroup=function(e){var t,o;e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),o=this.generateRowData("bottom",t),e.calcs.bottom.updateData(o),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),o=this.generateRowData("top",t),e.calcs.top.updateData(o),e.calcs.top.reinitialize()))},y.prototype.generateTopRow=function(e){return this.generateRow("top",this.rowsToData(e))},y.prototype.generateBottomRow=function(e){return this.generateRow("bottom",this.rowsToData(e))},y.prototype.rowsToData=function(e){var t=this,o=[];return e.forEach(function(e){if(o.push(e.getData()),t.table.options.dataTree&&t.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree.open){var i=t.rowsToData(t.table.modules.dataTree.getFilteredTreeChildren(e));o=o.concat(i)}}),o},y.prototype.generateRow=function(e,t){var o,i=this,n=this.generateRowData(e,t);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),o=new l(n,this,"calc"),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),o.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),o.component=!1,o.getComponent=function(){return this.component||(this.component=new v(this)),this.component},o.generateCells=function(){var t=[];i.table.columnManager.columnsByIndex.forEach(function(n){i.genColumn.setField(n.getField()),i.genColumn.hozAlign=n.hozAlign,n.definition[e+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(n.definition[e+"CalcFormatter"]),params:n.definition[e+"CalcFormatterParams"]||{}}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=n.definition.cssClass;var s=new u(i.genColumn,o);s.getElement(),s.column=n,s.setWidth(),n.cells.push(s),t.push(s),
-n.visible||s.hide()}),this.cells=t},o},y.prototype.generateRowData=function(e,t){var o,i,n={},s="top"==e?this.topCalcs:this.botCalcs,a="top"==e?"topCalc":"botCalc";return s.forEach(function(e){var s=[];e.modules.columnCalcs&&e.modules.columnCalcs[a]&&(t.forEach(function(t){s.push(e.getFieldValue(t))}),i=a+"Params",o="function"==typeof e.modules.columnCalcs[i]?e.modules.columnCalcs[i](s,t):e.modules.columnCalcs[i],e.setFieldValue(n,e.modules.columnCalcs[a](s,t,o)))}),n},y.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},y.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},y.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},y.prototype.getResults=function(){var e,t=this,o={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(e=this.table.modules.groupRows.getGroups(!0),e.forEach(function(e){o[e.getKey()]=t.getGroupResults(e)})):o={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},o},y.prototype.getGroupResults=function(e){var t=this,o=e._getSelf(),i=e.getSubGroups(),n={};return i.forEach(function(e){n[e.getKey()]=t.getGroupResults(e)}),{top:o.calcs.top?o.calcs.top.getData():{},bottom:o.calcs.bottom?o.calcs.bottom.getData():{},groups:n}},y.prototype.calculations={avg:function(e,t,o){var i=0,n=void 0!==o.precision?o.precision:2;return e.length&&(i=e.reduce(function(e,t){return Number(e)+Number(t)}),i/=e.length,i=!1!==n?i.toFixed(n):i),parseFloat(i).toString()},max:function(e,t,o){var i=null,n=void 0!==o.precision&&o.precision;return e.forEach(function(e){((e=Number(e))>i||null===i)&&(i=e)}),null!==i?!1!==n?i.toFixed(n):i:""},min:function(e,t,o){var i=null,n=void 0!==o.precision&&o.precision;return e.forEach(function(e){((e=Number(e))<i||null===i)&&(i=e)}),null!==i?!1!==n?i.toFixed(n):i:""},sum:function(e,t,o){var i=0,n=void 0!==o.precision&&o.precision;return e.length&&e.forEach(function(e){e=Number(e),i+=isNaN(e)?0:Number(e)}),!1!==n?i.toFixed(n):i},concat:function(e,t,o){var i=0;return e.length&&(i=e.reduce(function(e,t){return String(e)+String(t)})),i},count:function(e,t,o){var i=0;return e.length&&e.forEach(function(e){e&&i++}),i}},h.prototype.registerModule("columnCalcs",y);var w=function(e){this.table=e,this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0};w.prototype.initialize=function(){var e=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(t){var o,i,n;if(!e.blocked){if(t.preventDefault(),e.customSelection)o=e.customSelection,e.table.options.clipboardCopyFormatter&&(o=e.table.options.clipboardCopyFormatter("plain",o));else{var n=e.table.modules.export.generateExportList(e.table.options.clipboardCopyConfig,e.table.options.clipboardCopyStyled,e.rowRange,"clipboard");i=e.table.modules.export.genereateHTMLTable(n),o=i?e.generatePlainContent(n):"",e.table.options.clipboardCopyFormatter&&(o=e.table.options.clipboardCopyFormatter("plain",o),i=e.table.options.clipboardCopyFormatter("html",i))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",o):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",o),i&&t.clipboardData.setData("text/html",i)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",o),i&&t.originalEvent.clipboardData.setData("text/html",i)),e.table.options.clipboardCopied.call(e.table,o,i),e.reset()}}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(t){e.paste(t)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},w.prototype.reset=function(){this.blocked=!0,this.customSelection=!1},w.prototype.generatePlainContent=function(e){var t=[];return e.forEach(function(e){var o=[];e.columns.forEach(function(t){var i="";if(t)if("group"===e.type&&(t.value=t.component.getKey()),null===t.value)i="";else switch(_typeof(t.value)){case"object":i=JSON.stringify(t.value);break;case"undefined":i="";break;default:i=t.value}o.push(i)}),t.push(o.join("\t"))}),t.join("\n")},w.prototype.copy=function(e,t){var e,o,i;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?(e=document.createRange(),e.selectNodeContents(this.table.element),o=window.getSelection(),o.toString()&&t&&(this.customSelection=o.toString()),o.removeAllRanges(),o.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(i=document.body.createTextRange(),i.moveToElementText(this.table.element),i.select()),document.execCommand("copy"),o&&o.removeAllRanges())},w.prototype.setPasteAction=function(e){switch(void 0===e?"undefined":_typeof(e)){case"string":this.pasteAction=this.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}},w.prototype.setPasteParser=function(e){switch(void 0===e?"undefined":_typeof(e)){case"string":this.pasteParser=this.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}},w.prototype.paste=function(e){var t,o,i;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),o=this.pasteParser.call(this,t),o?(e.preventDefault(),this.table.modExists("mutator")&&(o=this.mutateData(o)),i=this.pasteAction.call(this,o),this.table.options.clipboardPasted.call(this.table,t,o,i)):this.table.options.clipboardPasteError.call(this.table,t))},w.prototype.mutateData=function(e){var t=this,o=[];return Array.isArray(e)?e.forEach(function(e){o.push(t.table.modules.mutator.transformRow(e,"clipboard"))}):o=e,o},w.prototype.checkPaseOrigin=function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t},w.prototype.getPasteData=function(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t},w.prototype.pasteParsers={table:function(e){var t=[],o=!0,i=this.table.columnManager.columns,n=[],s=[];return e=e.split("\n"),e.forEach(function(e){t.push(e.split("\t"))}),!(!t.length||1===t.length&&t[0].length<2)&&(!0,t[0].forEach(function(e){var t=i.find(function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()});t?n.push(t):o=!1}),o||(o=!0,n=[],t[0].forEach(function(e){var t=i.find(function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()});t?n.push(t):o=!1}),o||(n=this.table.columnManager.columnsByIndex)),o&&t.shift(),t.forEach(function(e){var t={};e.forEach(function(e,o){n[o]&&(t[n[o].field]=e)}),s.push(t)}),s)}},w.prototype.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},h.prototype.registerModule("clipboard",w);var E=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};E.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),o=this.table.options;switch(this.field=o.dataTreeChildField,this.indent=o.dataTreeChildIndent,this.elementField=o.dataTreeElementColumn||!!t&&t.field,o.dataTreeBranchElement&&(!0===o.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof o.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=o.dataTreeBranchElement),o.dataTreeCollapseElement?"string"==typeof o.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=o.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),o.dataTreeExpandElement?"string"==typeof o.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=o.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(o.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return o.dataTreeStartExpanded};break;case"function":this.startOpen=o.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return o.dataTreeStartExpanded[t]}}},E.prototype.initializeRow=function(e){var t=e.getData()[this.field],o=Array.isArray(t),i=o||!o&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;!i&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!i&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!i&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:i}},E.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],o=t.getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,o),e.element.classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),o.insertBefore(i.branchEl,o.firstChild),this.table.rtl?i.branchEl.style.marginRight=(i.branchEl.offsetWidth+i.branchEl.style.marginLeft)*(i.index-1)+i.index*this.indent+"px":i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):this.table.rtl?o.style.paddingRight=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-right"))+i.index*this.indent+"px":o.style.paddingLeft=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")},E.prototype.generateControlElement=function(e,t){var o=this,i=e.modules.dataTree,t=t||e.getCells()[0].getElement(),n=i.controlEl;!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.collapseRow(e)})):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.expandRow(e)})),i.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),n&&n.parentNode===t?n.parentNode.replaceChild(i.controlEl,n):t.insertBefore(i.controlEl,t.firstChild))},E.prototype.setDisplayIndex=function(e){this.displayIndex=e},E.prototype.getDisplayIndex=function(){return this.displayIndex},E.prototype.getRows=function(e){var t=this,o=[];return e.forEach(function(e,i){var n,s;o.push(e),e instanceof l&&(n=e.modules.dataTree.children,n.index||!1===n.children||(s=t.getChildren(e),s.forEach(function(e){o.push(e)})))}),o},E.prototype.getChildren=function(e){var t=this,o=e.modules.dataTree,i=[],n=[];return!1!==o.children&&o.open&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),i=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(o.children):o.children,this.table.modExists("sort")&&this.table.options.dataTreeSort&&this.table.modules.sort.sort(i),i.forEach(function(e){n.push(e),t.getChildren(e).forEach(function(e){n.push(e)})})),n},E.prototype.generateChildren=function(e){var t=this,o=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach(function(i){var n=new l(i||{},t.table.rowManager);n.modules.dataTree.index=e.modules.dataTree.index+1,n.modules.dataTree.parent=e,n.modules.dataTree.children&&(n.modules.dataTree.open=t.startOpen(n.getComponent(),n.modules.dataTree.index)),o.push(n)}),o},E.prototype.expandRow=function(e,t){var o=e.modules.dataTree;!1!==o.children&&(o.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},E.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},E.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},E.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},E.prototype.getFilteredTreeChildren=function(e){var t,o=e.modules.dataTree,i=[];return o.children&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),t=this.table.modExists("filter")&&this.table.options.dataTreeFilter?this.table.modules.filter.filter(o.children):o.children,t.forEach(function(e){e instanceof l&&i.push(e)})),i},E.prototype.rowDelete=function(e){var t,o=e.modules.dataTree.parent;o&&(t=this.findChildIndex(e,o),!1!==t&&o.data[this.field].splice(t,1),o.data[this.field].length||delete o.data[this.field],this.initializeRow(o),this.layoutRow(o)),this.table.rowManager.refreshActiveData("tree",!1,!0)},E.prototype.addTreeChildRow=function(e,t,o,i){var n=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==i&&!1!==(n=this.findChildIndex(i,e))&&e.data[this.field].splice(o?n:n+1,0,t),!1===n&&(o?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)},E.prototype.findChildIndex=function(e,t){var o=this,i=!1;return"object"==(void 0===e?"undefined":_typeof(e))?e instanceof l?i=e.data:e instanceof r?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(i=t.modules.dataTree.children.find(function(t){return t instanceof l&&t.element===e}))&&(i=i.data):i=void 0!==e&&null!==e&&t.data[this.field].find(function(t){return t.data[o.table.options.index]==e}),i&&(Array.isArray(t.data[this.field])&&(i=t.data[this.field].indexOf(i)),-1==i&&(i=!1)),i},E.prototype.getTreeChildren=function(e,t,o){var i=this,n=e.modules.dataTree,s=[];return n.children&&(Array.isArray(n.children)||(n.children=this.generateChildren(e)),n.children.forEach(function(e){e instanceof l&&(s.push(t?e.getComponent():e),o&&(s=s.concat(i.getTreeChildren(e,t,o))))})),s},E.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||e.row.reinitialize()},E.prototype.getChildField=function(){return this.field},E.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},h.prototype.registerModule("dataTree",E);var C=function(e){this.table=e};C.prototype.download=function(e,t,o,i,n){function s(o,i){n?!0===n?a.triggerDownload(o,i,e,t,!0):n(o):a.triggerDownload(o,i,e,t)}var a=this,r=!1;if("function"==typeof e?r=e:a.downloaders[e]?r=a.downloaders[e]:console.warn("Download Error - No such download type found: ",e),r){var l=this.generateExportList(i);r.call(this.table,l,o||{},s)}},C.prototype.generateExportList=function(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),o=this.table.options.groupHeaderDownload;return o&&!Array.isArray(o)&&(o=[o]),t.forEach(function(e){var t;"group"===e.type&&(t=e.columns[0],o&&o[e.indent]&&(t.value=o[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))}),t},C.prototype.triggerDownload=function(e,t,o,i,n){var s=document.createElement("a"),a=new Blob([e],{type:t}),i=i||"Tabulator."+("function"==typeof o?"txt":o);(a=this.table.options.downloadReady.call(this.table,e,a))&&(n?window.open(window.URL.createObjectURL(a)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(a,i):(s.setAttribute("href",window.URL.createObjectURL(a)),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},C.prototype.commsReceived=function(e,t,o){switch(t){case"intercept":this.download(o.type,"",o.options,o.active,o.intercept)}},C.prototype.downloaders={csv:function(e,t,o){var i=t&&t.delimiter?t.delimiter:",",n=[],s=[];e.forEach(function(e){var t=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(function(e,t){e&&1===e.depth&&(s[t]=void 0===e.value||null===e.value?"":'"'+String(e.value).split('"').join('""')+'"')});break;case"row":e.columns.forEach(function(e){if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}t.push('"'+String(e.value).split('"').join('""')+'"')}}),n.push(t.join(i))}}),s.length&&n.unshift(s.join(i)),n=n.join("\n"),t.bom&&(n="\ufeff"+n),o(n,"text/csv")},json:function(e,t,o){var i=[];e.forEach(function(e){var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach(function(e){e&&(t[e.component.getField()]=e.value)}),i.push(t)}}),i=JSON.stringify(i,null,"\t"),o(i,"application/json")},pdf:function(e,t,o){function i(e,t){var o=[];return e.columns.forEach(function(e){var i;if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}i={content:e.value,colSpan:e.width,rowSpan:e.height},t&&(i.styles=t),o.push(i)}else o.push("")}),o}var n=[],s=[],a={},r=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},l=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},c=t.jsPDF||{},u=t&&t.title?t.title:"";c.orientation||(c.orientation=t.orientation||"landscape"),c.unit||(c.unit="pt"),e.forEach(function(e){switch(e.type){case"header":n.push(i(e));break;case"group":s.push(i(e,r));break;case"calc":s.push(i(e,l));break;case"row":s.push(i(e))}});var d=new jsPDF(c);t&&t.autoTable&&(a="function"==typeof t.autoTable?t.autoTable(d)||{}:t.autoTable),u&&(a.addPageContent=function(e){d.text(u,40,30)}),a.head=n,a.body=s,d.autoTable(a),t&&t.documentProcessing&&t.documentProcessing(d),o(d.output("arraybuffer"),"application/pdf")},xlsx:function(e,t,o){function i(){var t=[],o=[],i={},n={s:{c:0,r:0},e:{c:e[0]?e[0].columns.reduce(function(e,t){return e+(t&&t.width?t.width:1)},0):0,r:e.length}};return e.forEach(function(e,i){var n=[];e.columns.forEach(function(e,t){e?(n.push(e.value instanceof Date||"object"!==_typeof(e.value)?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&o.push({s:{r:i,c:t},e:{r:i+e.height-1,c:t+e.width-1}})):n.push("")}),t.push(n)}),XLSX.utils.sheet_add_aoa(i,t),i["!ref"]=XLSX.utils.encode_range(n),o.length&&(i["!merges"]=o),i}var n,s=this,a=t.sheetName||"Sheet1",r=XLSX.utils.book_new();if(r.SheetNames=[],r.Sheets={},t.sheetOnly)return void o(i());if(t.sheets)for(var l in t.sheets)!0===t.sheets[l]?(r.SheetNames.push(l),r.Sheets[l]=i()):(r.SheetNames.push(l),this.modules.comms.send(t.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:s.active,intercept:function(e){r.Sheets[l]=e}}));else r.SheetNames.push(a),r.Sheets[a]=i();t.documentProcessing&&(r=t.documentProcessing(r)),n=XLSX.write(r,{bookType:"xlsx",bookSST:!0,type:"binary"}),o(function(e){for(var t=new ArrayBuffer(e.length),o=new Uint8Array(t),i=0;i!=e.length;++i)o[i]=255&e.charCodeAt(i);return t}(n),"application/octet-stream")},html:function(e,t,o){this.modExists("export",!0)&&o(this.modules.export.genereateHTMLTable(e),"text/html")}},h.prototype.registerModule("download",C);var R=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[]};R.prototype.initializeColumn=function(e){var t=this,o={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?o.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":o.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?o.editor=t.editors[e.definition.formatter]:o.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}o.editor&&(e.modules.edit=o)},R.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},R.prototype.clearEditor=function(e){var t,o=this.currentCell;if(this.invalidEdit=!1,o){for(this.currentCell=!1,t=o.getElement(),e?o.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);o.row.getElement().classList.remove("tabulator-row-editing")}},R.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),("textarea"==e.column.definition.editor||e.column.definition.variableHeight)&&e.row.normalizeHeight(!0),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},R.prototype.bindEditor=function(e){var t=this,o=e.getElement();o.setAttribute("tabindex",0),o.addEventListener("click",function(e){o.classList.contains("tabulator-editing")||o.focus({preventScroll:!0})}),o.addEventListener("mousedown",function(e){2===e.button?e.preventDefault():t.mouseClick=!0}),o.addEventListener("focus",function(o){t.recursionBlock||t.edit(e,o,!1)})},R.prototype.focusCellNoEvent=function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1},R.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},R.prototype.focusScrollAdjust=function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,o=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,i=e.row.getElement();i.offsetTop;i.offsetTop<t?this.table.rowManager.element.scrollTop-=t-i.offsetTop:i.offsetTop+i.offsetHeight>o&&(this.table.rowManager.element.scrollTop+=i.offsetTop+i.offsetHeight-o);var n=this.table.rowManager.element.scrollLeft,s=this.table.rowManager.element.clientWidth+this.table.rowManager.element.scrollLeft,a=e.getElement();a.offsetLeft;this.table.modExists("frozenColumns")&&(n+=parseInt(this.table.modules.frozenColumns.leftMargin),s-=parseInt(this.table.modules.frozenColumns.rightMargin)),a.offsetLeft<n?this.table.rowManager.element.scrollLeft-=n-a.offsetLeft:a.offsetLeft+a.offsetWidth>s&&(this.table.rowManager.element.scrollLeft+=a.offsetLeft+a.offsetWidth-s)}},R.prototype.edit=function(e,t,o){function i(t){if(c.currentCell===e){var o=!0;return e.column.modules.validate&&c.table.modExists("validate")&&"manual"!=c.table.options.validationMode&&(o=c.table.modules.validate.validate(e.column.modules.validate,e,t)),!0===o||"highlight"===c.table.options.validationMode?(c.clearEditor(),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==c.editedCells.indexOf(e)&&c.editedCells.push(e),e.setValue(t,!0),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(e),!0===o||(h.classList.add("tabulator-validation-fail"),c.table.options.validationFailed.call(c.table,e.getComponent(),t,o),!1)):(c.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),c.focusCellNoEvent(e,!0),d(),c.table.options.validationFailed.call(c.table,e.getComponent(),t,o),!1)}}function n(){c.currentCell===e&&(c.cancelEdit(),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(e))}function s(e){d=e}var a,r,l,c=this,u=!0,d=function(){},h=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":u=e.column.modules.edit.check(e.getComponent());break;case"boolean":u=e.column.modules.edit.check}if(u||o){if(c.cancelEdit(),c.currentCell=e,this.focusScrollAdjust(e),r=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,r)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,r),c.table.options.cellEditing.call(this.table,r),l="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(r):e.column.modules.edit.params,!1===(a=e.column.modules.edit.editor.call(c,r,s,i,n,l)))return h.blur(),!1;if(!(a instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",a),h.blur(),!1;for(h.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(a),d();for(var p=h.children,m=0;m<p.length;m++)p[m].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,h.blur(),!1},R.prototype.maskInput=function(e,t){function o(t){var r=i[t];void 0!==r&&r!==a&&r!==n&&r!==s&&(e.value=e.value+""+r,o(t+1))}var i=t.mask,n=void 0!==t.maskLetterChar?t.maskLetterChar:"A",s=void 0!==t.maskNumberChar?t.maskNumberChar:"9",a=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*",r=!1;e.addEventListener("keydown",function(t){var o=e.value.length,l=t.key;if(t.keyCode>46){if(o>=i.length)return t.preventDefault(),t.stopPropagation(),r=!1,!1;switch(i[o]){case n:if(l.toUpperCase()==l.toLowerCase())return t.preventDefault(),t.stopPropagation(),r=!1,!1;break;case s:if(isNaN(l))return t.preventDefault(),t.stopPropagation(),r=!1,!1;break;case a:break;default:if(l!==i[o])return t.preventDefault(),t.stopPropagation(),r=!1,!1}r=!0}}),e.addEventListener("keyup",function(i){i.keyCode>46&&t.maskAutoFill&&o(e.value.length)}),e.placeholder||(e.placeholder=i),t.maskAutoFill&&o(e.value.length)},R.prototype.getEditedCells=function(){var e=[];return this.editedCells.forEach(function(t){e.push(t.getComponent())}),e},R.prototype.clearEdited=function(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.edit.edited=!1,e.modules.validate&&(e.modules.validate.invalid=!1)),(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1)},R.prototype.editors={input:function(e,t,o,i,n){function s(e){(null===a||void 0===a)&&""!==r.value||r.value!==a?o(r.value)&&(a=r.value):i()}var a=e.getValue(),r=document.createElement("input");if(r.setAttribute("type",n.search?"search":"text"),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),r.setAttribute(l,r.getAttribute(l)+n.elementAttributes["+"+l])):r.setAttribute(l,n.elementAttributes[l]);return r.value=void 0!==a?a:"",t(function(){r.focus({preventScroll:!0}),r.style.height="100%"}),r.addEventListener("change",s),r.addEventListener("blur",s),r.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s(e);break;case 27:i();break;case 35:case 36:e.stopPropagation()}}),n.mask&&this.table.modules.edit.maskInput(r,n),r},textarea:function(e,t,o,i,n){function s(t){(null===a||void 0===a)&&""!==c.value||c.value!==a?(o(c.value)&&(a=c.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):i()}var a=e.getValue(),r=n.verticalNavigation||"hybrid",l=String(null!==a&&void 0!==a?a:""),c=(l.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),u=0;if(c.style.display="block",c.style.padding="2px",c.style.height="100%",c.style.width="100%",c.style.boxSizing="border-box",c.style.whiteSpace="pre-wrap",c.style.resize="none",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),c.setAttribute(d,c.getAttribute(d)+n.elementAttributes["+"+d])):c.setAttribute(d,n.elementAttributes[d]);return c.value=l,t(function(){c.focus({preventScroll:!0}),c.style.height="100%",c.scrollHeight,c.style.height=c.scrollHeight+"px",e.getRow().normalizeHeight()}),c.addEventListener("change",s),c.addEventListener("blur",s),c.addEventListener("keyup",function(){c.style.height="";var t=c.scrollHeight;c.style.height=t+"px",t!=u&&(u=t,e.getRow().normalizeHeight())}),c.addEventListener("keydown",function(e){switch(e.keyCode){case 27:i();break;case 38:("editor"==r||"hybrid"==r&&c.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==r||"hybrid"==r&&c.selectionStart!==c.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}}),n.mask&&this.table.modules.edit.maskInput(c,n),c},number:function(e,t,o,i,n){function s(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!==a?o(e)&&(a=e):i()}var a=e.getValue(),r=n.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==n.max&&l.setAttribute("max",n.max),void 0!==n.min&&l.setAttribute("min",n.min),void 0!==n.step&&l.setAttribute("step",n.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var c in n.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+n.elementAttributes["+"+c])):l.setAttribute(c,n.elementAttributes[c]);l.value=a;var u=function(e){s()};return t(function(){l.removeEventListener("blur",u),l.focus({preventScroll:!0}),l.style.height="100%",l.addEventListener("blur",u)}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s();break;case 27:i();break;case 38:case 40:"editor"==r&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 35:case 36:e.stopPropagation()}}),n.mask&&this.table.modules.edit.maskInput(l,n),l},range:function(e,t,o,i,n){function s(){var e=r.value;isNaN(e)||""===e||(e=Number(e)),e!=a?o(e)&&(a=e):i()}var a=e.getValue(),r=document.createElement("input");if(r.setAttribute("type","range"),void 0!==n.max&&r.setAttribute("max",n.max),
-void 0!==n.min&&r.setAttribute("min",n.min),void 0!==n.step&&r.setAttribute("step",n.step),r.style.padding="4px",r.style.width="100%",r.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),r.setAttribute(l,r.getAttribute(l)+n.elementAttributes["+"+l])):r.setAttribute(l,n.elementAttributes[l]);return r.value=a,t(function(){r.focus({preventScroll:!0}),r.style.height="100%"}),r.addEventListener("blur",function(e){s()}),r.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s();break;case 27:i()}}),r},select:function(e,t,o,i,n){function s(t){var o,i={},s=C.table.getData();return o=t?C.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),o?(s.forEach(function(e){var t=o.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(i[t]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create select lookup list:",t),i}function a(t,o){function i(e){var e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return o.indexOf(e.value)>-1&&c(e),n.push(e),s.push(e),e}var n=[],s=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1},s.push(t),e.options.forEach(function(e){i(e)})):i(e):(t={label:e,value:e,element:!1},o.indexOf(t.value)>-1&&c(t),n.push(t),s.push(t))});else for(var a in t){var l={label:t[a],value:a,element:!1};o.indexOf(l.value)>-1&&c(l),n.push(l),s.push(l)}z=n,H=s,r()}function r(){for(;D.firstChild;)D.removeChild(D.firstChild);H.forEach(function(t){var o=t.element;if(!o){if(o=document.createElement("div"),t.label=n.listItemFormatter?n.listItemFormatter(t.value,t.label,e,o,t.itemParams):t.label,t.group?(o.classList.add("tabulator-edit-select-list-group"),o.tabIndex=0,o.innerHTML=""===t.label?"&nbsp;":t.label):(o.classList.add("tabulator-edit-select-list-item"),o.tabIndex=0,o.innerHTML=""===t.label?"&nbsp;":t.label,o.addEventListener("click",function(){_=!0,setTimeout(function(){_=!1},10),k?(d(t),T.focus()):p(t)}),P.indexOf(t)>-1&&o.classList.add("active")),t.elementAttributes&&"object"==_typeof(t.elementAttributes))for(var i in t.elementAttributes)"+"==i.charAt(0)?(i=i.slice(1),o.setAttribute(i,T.getAttribute(i)+t.elementAttributes["+"+i])):o.setAttribute(i,t.elementAttributes[i]);o.addEventListener("mousedown",function(){A=!1,setTimeout(function(){A=!0},10)}),t.element=o}D.appendChild(o)})}function l(e,t){!k&&S&&S.element&&S.element.classList.remove("active"),S&&S.element&&S.element.classList.remove("focused"),S=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active")),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function c(e){-1==P.indexOf(e)&&(P.push(e),l(e,!0)),f()}function u(e){var t=P[e];e>-1&&(P.splice(e,1),t.element&&t.element.classList.remove("active"))}function d(e){e||(e=S);var t=P.indexOf(e);t>-1?u(t):(!0!==k&&P.length>=k&&u(0),c(e)),f()}function p(e){y(),e||(e=S),e&&(T.value=e.label,o(e.value)),L=T.value}function m(e){e||y();var t=[];P.forEach(function(e){t.push(e.value)}),L=T.value,o(t)}function f(){var e=[];P.forEach(function(t){e.push(t.label)}),T.value=e.join(", "),!1===C.currentCell&&m(!0)}function g(){for(var e=P.length,t=0;t<e;t++)u(0)}function b(){y(),i()}function v(){if(P=[],!D.parentNode){!0===n.values?a(s(),L):"string"==typeof n.values?a(s(n.values),L):a(n.values||[],L);var e=h.prototype.helpers.elOffset(R);D.style.minWidth=R.offsetWidth+"px",D.style.top=e.top+R.offsetHeight+"px",D.style.left=e.left+"px",D.addEventListener("mousedown",function(e){A=!1,setTimeout(function(){A=!0},10)}),document.body.appendChild(D)}}function y(){D.parentNode&&D.parentNode.removeChild(D),w()}function w(){C.table.rowManager.element.removeEventListener("scroll",b)}var E=this,C=this,R=e.getElement(),x=e.getValue(),M=n.verticalNavigation||"editor",L=void 0!==x||null===x?Array.isArray(x)?x:[x]:void 0!==n.defaultValue?n.defaultValue:[],T=document.createElement("input"),D=document.createElement("div"),k=n.multiselect,z=[],S={},H=[],P=[],A=!0,_=!1;if((Array.isArray(n)||!Array.isArray(n)&&"object"===(void 0===n?"undefined":_typeof(n))&&!n.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),n={values:n}),T.setAttribute("type","text"),T.style.padding="4px",T.style.width="100%",T.style.boxSizing="border-box",T.style.cursor="default",T.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var F in n.elementAttributes)"+"==F.charAt(0)?(F=F.slice(1),T.setAttribute(F,T.getAttribute(F)+n.elementAttributes["+"+F])):T.setAttribute(F,n.elementAttributes[F]);return T.value=void 0!==x||null===x?x:"",T.addEventListener("search",function(e){T.value||(g(),m())}),T.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=z.indexOf(S),("editor"==M||"hybrid"==M&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&l(z[t-1],!k));break;case 40:t=z.indexOf(S),("editor"==M||"hybrid"==M&&t<z.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<z.length-1&&(-1==t?l(z[0],!k):l(z[t+1],!k)));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:k?d():p();break;case 27:b();break;case 9:break;default:!1===C.currentCell&&e.preventDefault()}}),T.addEventListener("blur",function(e){A&&(k?m():b())}),T.addEventListener("focus",function(e){_||v()}),D=document.createElement("div"),D.classList.add("tabulator-edit-select-list"),t(function(){T.style.height="100%",T.focus({preventScroll:!0})}),setTimeout(function(){E.table.rowManager.element.addEventListener("scroll",b)},10),T},autocomplete:function(e,t,o,i,n){function s(){!0===n.values?S=a():"string"==typeof n.values&&(S=a(n.values))}function a(t){var o,i={},s=E.table.getData();return o=t?E.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),o?(s.forEach(function(e){var t=o.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(i[t]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create autocomplete lookup list:",t),i}function r(e,t){var o,i,s=[];o=S||(n.values||[]),n.searchFunc?(s=n.searchFunc(e,o),s instanceof Promise?(l(void 0!==n.searchingPlaceholder?n.searchingPlaceholder:"Searching..."),s.then(function(e){d(c(e),t)}).catch(function(e){console.err("error in autocomplete search promise:",e)})):d(c(s),t)):(i=c(o),""===e?n.showListOnEmpty&&(s=i):i.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&s.push(t)}),d(s,t))}function l(e){var t=document.createElement("div");u(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,T.appendChild(t))}function c(e){var t=[];if(Array.isArray(e))e.forEach(function(e){var o={};"object"===(void 0===e?"undefined":_typeof(e))?(o.title=n.listItemFormatter?n.listItemFormatter(e.value,e.label):e.label,o.value=e.value):(o.title=n.listItemFormatter?n.listItemFormatter(e,e):e,o.value=e),t.push(o)});else for(var o in e){var i={title:n.listItemFormatter?n.listItemFormatter(o,e[o]):e[o],value:o};t.push(i)}return t}function u(){for(;T.firstChild;)T.removeChild(T.firstChild)}function d(e,t){e.length?p(e,t):n.emptyPlaceholder&&l(n.emptyPlaceholder)}function p(e,t){var o=!1;u(),D=e,D.forEach(function(e){var i=e.element;i||(i=document.createElement("div"),i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=e.title,i.addEventListener("click",function(t){g(e),m()}),i.addEventListener("mousedown",function(e){z=!1,setTimeout(function(){z=!0},10)}),e.element=i,t&&e.value==R&&(L.value=e.title,e.element.classList.add("active"),o=!0),e===k&&(e.element.classList.add("active"),o=!0)),T.appendChild(i)}),o||g(!1)}function m(){b(),k?R!==k.value?(R=k.value,L.value=k.title,o(k.value)):i():n.freetext?(R=L.value,o(L.value)):n.allowEmpty&&""===L.value?(R=L.value,o(L.value)):i()}function f(){if(!T.parentNode){for(;T.firstChild;)T.removeChild(T.firstChild);var e=h.prototype.helpers.elOffset(C);T.style.minWidth=C.offsetWidth+"px",T.style.top=e.top+C.offsetHeight+"px",T.style.left=e.left+"px",document.body.appendChild(T)}}function g(e,t){k&&k.element&&k.element.classList.remove("active"),k=e,e&&e.element&&e.element.classList.add("active"),e&&e.element&&e.element.scrollIntoView&&e.element.scrollIntoView({behavior:"smooth",block:"nearest",inline:"start"})}function b(){T.parentNode&&T.parentNode.removeChild(T),y()}function v(){b(),i()}function y(){E.table.rowManager.element.removeEventListener("scroll",v)}var w=this,E=this,C=e.getElement(),R=e.getValue(),x=n.verticalNavigation||"editor",M=void 0!==R||null===R?R:void 0!==n.defaultValue?n.defaultValue:"",L=document.createElement("input"),T=document.createElement("div"),D=[],k=!1,z=!0,S=!1;if(L.setAttribute("type","search"),L.style.padding="4px",L.style.width="100%",L.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var H in n.elementAttributes)"+"==H.charAt(0)?(H=H.slice(1),L.setAttribute(H,L.getAttribute(H)+n.elementAttributes["+"+H])):L.setAttribute(H,n.elementAttributes[H]);return T.classList.add("tabulator-edit-select-list"),T.addEventListener("mousedown",function(e){z=!1,setTimeout(function(){z=!0},10)}),L.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=D.indexOf(k),("editor"==x||"hybrid"==x&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),g(t>0?D[t-1]:!1));break;case 40:t=D.indexOf(k),("editor"==x||"hybrid"==x&&t<D.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<D.length-1&&g(-1==t?D[0]:D[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation();break;case 13:m();break;case 27:v();break;case 36:case 35:e.stopImmediatePropagation()}}),L.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:r(L.value)}}),L.addEventListener("search",function(e){r(L.value)}),L.addEventListener("blur",function(e){z&&m()}),L.addEventListener("focus",function(e){var t=M;s(),f(),L.value=t,r(t,!0)}),t(function(){L.style.height="100%",L.focus({preventScroll:!0})}),n.mask&&this.table.modules.edit.maskInput(L,n),setTimeout(function(){w.table.rowManager.element.addEventListener("scroll",v)},10),s(),L.value=M,r(M,!0),L},star:function(e,t,o,i,n){function s(e){h.forEach(function(t,o){o<e?("ie"==r.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==r.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function a(e){c=e,s(e)}var r=this,l=e.getElement(),c=e.getValue(),u=l.getElementsByTagName("svg").length||5,d=l.getElementsByTagName("svg")[0]?l.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],p=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.style.whiteSpace="nowrap",l.style.overflow="hidden",l.style.textOverflow="ellipsis",p.style.verticalAlign="middle",p.style.display="inline-block",p.style.padding="4px",m.setAttribute("width",d),m.setAttribute("height",d),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),p.setAttribute(f,p.getAttribute(f)+n.elementAttributes["+"+f])):p.setAttribute(f,n.elementAttributes[f]);for(var g=1;g<=u;g++)!function(e){var t=document.createElement("span"),i=m.cloneNode(!0);h.push(i),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),s(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e),l.blur()}),t.appendChild(i),p.appendChild(t)}(g);return c=Math.min(parseInt(c),u),s(c),p.addEventListener("mousemove",function(e){s(0)}),p.addEventListener("click",function(e){o(0)}),l.addEventListener("blur",function(e){i()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:a(c+1);break;case 37:a(c-1);break;case 13:o(c);break;case 27:i()}}),p},progress:function(e,t,o,i,n){function s(){var e=d*Math.round(m.offsetWidth/(l.clientWidth/100))+u;o(e),l.setAttribute("aria-valuenow",e),l.setAttribute("aria-label",h)}var a,r,l=e.getElement(),c=void 0===n.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:n.max,u=void 0===n.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:n.min,d=(c-u)/100,h=e.getValue()||0,p=document.createElement("div"),m=document.createElement("div");if(p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.classList.add("tabulator-progress-handle"),m.style.display="inline-block",m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),m.setAttribute(f,m.getAttribute(f)+n.elementAttributes["+"+f])):m.setAttribute(f,n.elementAttributes[f]);return l.style.padding="4px 4px",h=Math.min(parseFloat(h),c),h=Math.max(parseFloat(h),u),h=Math.round((h-u)/d),m.style.width=h+"%",l.setAttribute("aria-valuemin",u),l.setAttribute("aria-valuemax",c),m.appendChild(p),p.addEventListener("mousedown",function(e){a=e.screenX,r=m.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),l.addEventListener("mousemove",function(e){a&&(m.style.width=r+e.screenX-a+"px")}),l.addEventListener("mouseup",function(e){a&&(e.stopPropagation(),e.stopImmediatePropagation(),a=!1,r=!1,s())}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:e.preventDefault(),m.style.width=m.clientWidth+l.clientWidth/100+"px";break;case 37:e.preventDefault(),m.style.width=m.clientWidth-l.clientWidth/100+"px";break;case 9:case 13:s();break;case 27:i()}}),l.addEventListener("blur",function(){i()}),m},tickCross:function(e,t,o,i,n){function s(e){return l?e?u?c:r.checked:r.checked&&!u?(r.checked=!1,r.indeterminate=!0,u=!0,c):(u=!1,r.checked):r.checked}var a=e.getValue(),r=document.createElement("input"),l=n.tristate,c=void 0===n.indeterminateValue?null:n.indeterminateValue,u=!1;if(r.setAttribute("type","checkbox"),r.style.marginTop="5px",r.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),r.setAttribute(d,r.getAttribute(d)+n.elementAttributes["+"+d])):r.setAttribute(d,n.elementAttributes[d]);return r.value=a,!l||void 0!==a&&a!==c&&""!==a||(u=!0,r.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){r.focus({preventScroll:!0})}),r.checked=!0===a||"true"===a||"True"===a||1===a,t(function(){r.focus()}),r.addEventListener("change",function(e){o(s())}),r.addEventListener("blur",function(e){o(s(!0))}),r.addEventListener("keydown",function(e){13==e.keyCode&&o(s()),27==e.keyCode&&i()}),r}},h.prototype.registerModule("edit",R);var x=function(e,t,o,i){this.type=e,this.columns=t,this.component=o||!1,this.indent=i||0},M=function(e,t,o,i,n){this.value=e,this.component=t||!1,this.width=o,this.height=i,this.depth=n},L=function(e){this.table=e,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};L.prototype.generateExportList=function(e,t,o,i){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=i;var n=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],s=this.bodyToExportRows(this.rowLookup(o));return n.concat(s)},L.prototype.genereateTable=function(e,t,o,i){var n=this.generateExportList(e,t,o,i);return this.genereateTableElement(n)},L.prototype.rowLookup=function(e){var t=this,o=[];if("function"==typeof e)e.call(this.table).forEach(function(e){(e=t.table.rowManager.findRow(e))&&o.push(e)});else switch(e){case!0:case"visible":o=this.table.rowManager.getVisibleRows(!0);break;case"all":o=this.table.rowManager.rows;break;case"selected":o=this.table.modules.selectRow.selectedRows;break;case"active":default:o=this.table.options.pagination?this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length-2):this.table.rowManager.getDisplayRows()}return Object.assign([],o)},L.prototype.generateColumnGroupHeaders=function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var i=e.processColumnGroup(o);i&&t.push(i)}),t},L.prototype.processColumnGroup=function(e){var t=this,o=e.columns,i=0,n=e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,s={title:n,column:e,depth:1};if(o.length){if(s.subGroups=[],s.width=0,o.forEach(function(e){var o=t.processColumnGroup(e);o&&(s.width+=o.width,s.subGroups.push(o),o.depth>i&&(i=o.depth))}),s.depth+=i,!s.width)return!1}else{if(!this.columnVisCheck(e))return!1;s.width=1}return s},L.prototype.columnVisCheck=function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])},L.prototype.headersToExportRows=function(e){function t(e,n){var s=i-n;if(void 0===o[n]&&(o[n]=[]),e.height=e.subGroups?1:s-e.depth+1,o[n].push(e),e.height>1)for(var a=1;a<e.height;a++)void 0===o[n+a]&&(o[n+a]=[]),o[n+a].push(!1);if(e.width>1)for(var r=1;r<e.width;r++)o[n].push(!1);e.subGroups&&e.subGroups.forEach(function(e){t(e,n+1)})}var o=[],i=0,n=[];return e.forEach(function(e){e.depth>i&&(i=e.depth)}),e.forEach(function(e){t(e,0)}),o.forEach(function(e){var t=[];e.forEach(function(e){e?t.push(new M(e.title,e.column.getComponent(),e.width,e.height,e.depth)):t.push(null)}),n.push(new x("header",t))}),n},L.prototype.bodyToExportRows=function(e){var t=this,o=[],i=[];return this.table.columnManager.columnsByIndex.forEach(function(e){t.columnVisCheck(e)&&o.push(e.getComponent())}),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),e=e.filter(function(e){switch(e.type){case"group":return!1!==t.config.rowGroups;case"calc":return!1!==t.config.columnCalcs;case"row":return!(t.table.options.dataTree&&!1===t.config.dataTree&&e.modules.dataTree.parent)}return!0}),e.forEach(function(e,n){var s=e.getData(t.colVisProp),a=[],r=0;switch(e.type){case"group":r=e.level,a.push(new M(e.key,e.getComponent(),o.length,1));break;case"calc":case"row":o.forEach(function(e){a.push(new M(e._column.getFieldValue(s),e,1,1))}),t.table.options.dataTree&&!1!==t.config.dataTree&&(r=e.modules.dataTree.index)}i.push(new x(e.type,a,e.getComponent(),r))}),i},L.prototype.genereateTableElement=function(e){var t=this,o=document.createElement("table"),i=document.createElement("thead"),n=document.createElement("tbody"),s=this.lookupTableStyles(),a=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r={};return r.rowFormatter=null!==a?a:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(r.treeElementField=this.table.modules.dataTree.elementField),r.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],r.groupHeader&&!Array.isArray(r.groupHeader)&&(r.groupHeader=[r.groupHeader]),o.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),i,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(function(e,o){switch(e.type){case"header":i.appendChild(t.genereateHeaderElement(e,r,s));break;case"group":n.appendChild(t.genereateGroupElement(e,r,s));break;case"calc":n.appendChild(t.genereateCalcElement(e,r,s));break;case"row":var a=t.genereateRowElement(e,r,s);t.mapElementStyles(o%2&&s.evenRow?s.evenRow:s.oddRow,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n.appendChild(a)}}),i.innerHTML&&o.appendChild(i),o.appendChild(n),this.mapElementStyles(this.table.element,o,["border-top","border-left","border-right","border-bottom"]),o},L.prototype.lookupTableStyles=function(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e},L.prototype.genereateHeaderElement=function(e,t,o){var i=this,n=document.createElement("tr");return e.columns.forEach(function(e){if(e){var t=document.createElement("th"),o=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,i.cloneTableStyle&&(t.style.boxSizing="border-box"),o.forEach(function(e){t.classList.add(e)}),i.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),i.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?i.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&i.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),n.appendChild(t)}}),n},L.prototype.genereateGroupElement=function(e,t,o){var i=document.createElement("tr"),n=document.createElement("td"),s=e.columns[0];return i.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?s.value=t.groupHeader[e.indent](s.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1===t.groupHeader?s.value=s.value:s.value=e.component._group.generator(s.value,e.component._group.getRowCount(),e.component._group.getData(),e.component),n.colSpan=s.width,n.innerHTML=s.value,i.classList.add("tabulator-print-table-group"),i.classList.add("tabulator-group-level-"+e.indent),s.component.isVisible()&&i.classList.add("tabulator-group-visible"),this.mapElementStyles(o.firstGroup,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(o.firstGroup,n,["padding-top","padding-left","padding-right","padding-bottom"]),i.appendChild(n),i},L.prototype.genereateCalcElement=function(e,t,o){var i=this.genereateRowElement(e,t,o);return i.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(o.calcRow,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),i},L.prototype.genereateRowElement=function(e,t,o){var n=this,s=document.createElement("tr");return s.classList.add("tabulator-print-table-row"),e.columns.forEach(function(a){if(a){var r=document.createElement("td"),l=a.component._column,c=a.value,u={modules:{},getValue:function(){return c},getField:function(){return l.definition.field},getElement:function(){return r},getColumn:function(){return l.getComponent()},getData:function(){return e.component.getData()},getRow:function(){return e.component},getComponent:function(){return u},column:l};if((l.definition.cssClass?l.definition.cssClass.split(" "):[]).forEach(function(e){r.classList.add(e)}),n.table.modExists("format")&&!1!==n.config.formatCells)c=n.table.modules.format.formatExportValue(u,n.colVisProp);else switch(void 0===c?"undefined":_typeof(c)){case"object":c=JSON.stringify(c);break;case"undefined":case"null":c="";break;default:c=c}c instanceof Node?r.appendChild(c):r.innerHTML=c,o.firstCell&&(n.mapElementStyles(o.firstCell,r,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),l.definition.align&&(r.style.textAlign=l.definition.align)),n.table.options.dataTree&&!1!==n.config.dataTree&&(t.treeElementField&&t.treeElementField==l.field||!t.treeElementField&&0==i)&&(e.component._row.modules.dataTree.controlEl&&r.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),r.firstChild),e.component._row.modules.dataTree.branchEl&&r.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),r.firstChild)),s.appendChild(r),u.modules.format&&u.modules.format.renderedCallback&&u.modules.format.renderedCallback(),t.rowFormatter&&!1!==n.config.formatCells&&t.rowFormatter(e.component)}}),s},L.prototype.genereateHTMLTable=function(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML},L.prototype.getHtml=function(e,t,o,i){var n=this.generateExportList(o||this.table.options.htmlOutputConfig,t,e,i||"htmlOutput");return this.genereateHTMLTable(n)},L.prototype.mapElementStyles=function(e,t,o){if(this.cloneTableStyle&&e&&t){var i={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(e);o.forEach(function(e){t.style[i[e]]=n.getPropertyValue(e)})}}},h.prototype.registerModule("export",L);var T=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};T.prototype.initializeColumn=function(e,t){function o(t){var o,a="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",r="",l="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete n.headerFilters[s];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":n.filters[e.definition.headerFilterFunc]?(r=e.definition.headerFilterFunc,o=function(o){var i=e.definition.headerFilterFuncParams||{},s=e.getFieldValue(o);return i="function"==typeof i?i(t,s,o):i,n.filters[e.definition.headerFilterFunc](t,s,o,i)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":o=function(o){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(o);return i="function"==typeof i?i(t,n,o):i,e.definition.headerFilterFunc(t,n,o,i)},r=o}if(!o)switch(a){case"partial":o=function(o){var i=e.getFieldValue(o);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";break;default:o=function(o){return e.getFieldValue(o)==t},r="="}n.headerFilters[s]={value:t,func:o,type:r,params:i||{}}}l=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==l&&(n.prevHeaderFilterChangeCheck=l,n.changed=!0,n.table.rowManager.filterRefresh())}return!0}var i,n=this,s=e.getField();e.modules.filter={success:o,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},T.prototype.generateHeaderFilterElement=function(e,t,o){function i(){}var n,s,a,r,l,c,u,d=this,h=this,p=e.modules.filter.success,m=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),m){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":h.table.modules.edit.editors[e.definition.headerFilter]?(s=h.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":s=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?s=e.modules.edit.editor:e.definition.formatter&&h.table.modules.edit.editors[e.definition.formatter]?(s=h.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):s=h.table.modules.edit.editors.input}if(s){if(r={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(h.table):u,!(a=s.call(this.table.modules.edit,r,function(){},p,i,u)))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor returned a value of false");if(!(a instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor should return an instance of Node, the editor returned:",a);m?h.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){a.setAttribute("placeholder",void 0!==e&&e?e:h.table.modules.localize.getText("headerFilters|default"))}):h.table.modules.localize.bind("headerFilters|default",function(e){a.setAttribute("placeholder",void 0!==h.column.definition.headerFilterPlaceholder&&h.column.definition.headerFilterPlaceholder?h.column.definition.headerFilterPlaceholder:e)}),a.addEventListener("click",function(e){e.stopPropagation(),a.focus()}),
-a.addEventListener("focus",function(e){var t=d.table.columnManager.element.scrollLeft;t!==d.table.rowManager.element.scrollLeft&&(d.table.rowManager.scrollHorizontal(t),d.table.columnManager.scrollHorizontal(t))}),l=!1,c=function(e){l&&clearTimeout(l),l=setTimeout(function(){p(a.value)},h.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=a,e.modules.filter.attrType=a.hasAttribute("type")?a.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=a.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(a.addEventListener("keyup",c),a.addEventListener("search",c),"number"==e.modules.filter.attrType&&a.addEventListener("change",function(e){p(a.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&a.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||a.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(a),e.contentElement.appendChild(n),o||h.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},T.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},T.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},T.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},T.prototype.getHeaderFilterValue=function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())},T.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},T.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},T.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},T.prototype.setFilter=function(e,t,o,i){var n=this;n.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:o,params:i}]),n.addFilter(e)},T.prototype.addFilter=function(e,t,o,i){var n=this;Array.isArray(e)||(e=[{field:e,type:t,value:o,params:i}]),e.forEach(function(e){(e=n.findFilter(e))&&(n.filterList.push(e),n.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},T.prototype.findFilter=function(e){var t,o=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:o.filters[e.type]?(t=o.table.columnManager.getColumnByField(e.field),i=t?function(i){return o.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return o.filters[e.type](e.value,t[e.field],t,e.params||{})}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},T.prototype.findSubFilters=function(e){var t=this,o=[];return e.forEach(function(e){(e=t.findFilter(e))&&o.push(e)}),!!o.length&&o},T.prototype.getFilters=function(e,t){var o=[];return e&&(o=this.getHeaderFilters()),t&&o.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),o=o.concat(this.filtersToArray(this.filterList,t))},T.prototype.filtersToArray=function(e,t){var o=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(o.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},T.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},T.prototype.removeFilter=function(e,t,o){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:o}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},T.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},T.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},e.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},T.prototype.search=function(e,t,o,i){var n=this,s=[],a=[];return Array.isArray(t)||(t=[{field:t,type:o,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&a.push(e)}),this.table.rowManager.rows.forEach(function(t){var o=!0;a.forEach(function(e){n.filterRecurse(e,t.getData())||(o=!1)}),o&&s.push("data"===e?t.getData("data"):t.getComponent())}),s},T.prototype.filter=function(e,t){var o=this,i=[],n=[];return o.table.options.dataFiltering&&o.table.options.dataFiltering.call(o.table,o.getFilters()),o.table.options.ajaxFiltering||!o.filterList.length&&!Object.keys(o.headerFilters).length?i=e.slice(0):e.forEach(function(e){o.filterRow(e)&&i.push(e)}),o.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),o.table.options.dataFiltered.call(o.table,o.getFilters(),n)),i},T.prototype.filterRow=function(e,t){var o=this,i=!0,n=e.getData();o.filterList.forEach(function(e){o.filterRecurse(e,n)||(i=!1)});for(var s in o.headerFilters)o.headerFilters[s].func(n)||(i=!1);return i},T.prototype.filterRecurse=function(e,t){var o=this,i=!1;return Array.isArray(e)?e.forEach(function(e){o.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},T.prototype.filters={"=":function(e,t,o,i){return t==e},"<":function(e,t,o,i){return t<e},"<=":function(e,t,o,i){return t<=e},">":function(e,t,o,i){return t>e},">=":function(e,t,o,i){return t>=e},"!=":function(e,t,o,i){return t!=e},regex:function(e,t,o,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,o,i){var n=e.toLowerCase().split(void 0===i.separator?" ":i.separator),s=String(null===t||void 0===t?"":t).toLowerCase(),a=[];return n.forEach(function(e){s.includes(e)&&a.push(!0)}),i.matchAll?a.length===n.length:!!a.length},starts:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,o,i){return Array.isArray(e)?!e.length||e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},h.prototype.registerModule("filter",T);var D=function(e){this.table=e};D.prototype.initializeColumn=function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))},D.prototype.lookupFormatter=function(e,t){var o={params:e.definition["formatter"+t+"Params"]||{}},i=e.definition["formatter"+t];switch(void 0===i?"undefined":_typeof(i)){case"string":"tick"===i&&(i="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[i]?o.formatter=this.formatters[i]:(console.warn("Formatter Error - No such formatter found: ",i),o.formatter=this.formatters.plaintext);break;case"function":o.formatter=i;break;default:o.formatter=this.formatters.plaintext}return o},D.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&!e.modules.format.rendered&&(e.modules.format.renderedCallback(),e.modules.format.rendered=!0)},D.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1}var o=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,i,t)},D.prototype.formatExportValue=function(e,t){var o,i=e.column.modules.format[t];if(i){var n=function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t,e.modules.format.rendered=!1};return o="function"==typeof i.params?i.params(component):i.params,i.formatter.call(this,e.getComponent(),o,n)}return this.formatValue(e)},D.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},D.prototype.emptyToSpace=function(e){return null===e||void 0===e||""===e?"&nbsp;":e},D.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},D.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var i,n,s,a,r=parseFloat(e.getValue()),l=t.decimal||".",c=t.thousand||",",u=t.symbol||"",d=!!t.symbolAfter,h=void 0!==t.precision?t.precision:2;if(isNaN(r))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(i=!1!==h?r.toFixed(h):r,i=String(i).split("."),n=i[0],s=i.length>1?l+i[1]:"",a=/(\d+)(\d{3})/;a.test(n);)n=n.replace(a,"$1"+c+"$2");return d?n+s+u:u+n+s},link:function(e,t,o){var i,n=e.getValue(),s=t.urlPrefix||"",a=t.download,r=n,l=document.createElement("a");if(t.labelField&&(i=e.getData(),r=i[t.labelField]),t.label)switch(_typeof(t.label)){case"string":r=t.label;break;case"function":r=t.label(e)}if(r){if(t.urlField&&(i=e.getData(),n=i[t.urlField]),t.url)switch(_typeof(t.url)){case"string":n=t.url;break;case"function":n=t.url(e)}return l.setAttribute("href",s+n),t.target&&l.setAttribute("target",t.target),t.download&&(a="function"==typeof a?a(e):!0===a?"":a,l.setAttribute("download",a)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(r)),l}return"&nbsp;"},image:function(e,t,o){var i=document.createElement("img");switch(i.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":i.style.height=t.height+"px";break;case"string":i.style.height=t.height}switch(_typeof(t.width)){case"number":i.style.width=t.width+"px";break;case"string":i.style.width=t.width}return i.addEventListener("load",function(){e.getRow().normalizeHeight()}),i},tickCross:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t.allowEmpty,a=t.allowTruthy,r=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return a&&i||!0===i||"true"===i||"True"===i||1===i||"1"===i?(n.setAttribute("aria-checked",!0),r||""):!s||"null"!==i&&""!==i&&null!==i&&void 0!==i?(n.setAttribute("aria-checked",!1),l||""):(n.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=t.outputFormat||"DD/MM/YYYY hh:mm:ss",s=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",a=e.getValue(),r=moment(a,i);return r.isValid()?t.timezone?r.tz(t.timezone).format(n):r.format(n):!0===s?a:"function"==typeof s?s(a):s},datetimediff:function(e,t,o){var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",s=void 0!==t.suffix&&t.suffix,a=void 0!==t.unit?t.unit:void 0,r=void 0!==t.humanize&&t.humanize,l=void 0!==t.date?t.date:moment(),c=e.getValue(),u=moment(c,i);return u.isValid()?r?moment.duration(u.diff(l)).humanize(s):u.diff(l,a)+(s?" "+s:""):!0===n?c:"function"==typeof n?n(c):n},lookup:function(e,t,o){var i=e.getValue();return void 0===t[i]?(console.warn("Missing display value for "+i),i):t[i]},star:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t&&t.stars?t.stars:5,a=document.createElement("span"),r=document.createElementNS("http://www.w3.org/2000/svg","svg");a.style.verticalAlign="middle",r.setAttribute("width","14"),r.setAttribute("height","14"),r.setAttribute("viewBox","0 0 512 512"),r.setAttribute("xml:space","preserve"),r.style.padding="0 1px",i=i&&!isNaN(i)?parseInt(i):0,i=Math.max(0,Math.min(i,s));for(var l=1;l<=s;l++){var c=r.cloneNode(!0);c.innerHTML=l<=i?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',a.appendChild(c)}return n.style.whiteSpace="nowrap",n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.setAttribute("aria-label",i),a},traffic:function(e,t,o){var i,n,s=this.sanitizeHTML(e.getValue())||0,a=document.createElement("span"),r=t&&t.max?t.max:100,l=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],u="#666666";if(!isNaN(s)&&void 0!==e.getValue()){switch(a.classList.add("tabulator-traffic-light"),n=parseFloat(s)<=r?parseFloat(s):r,n=parseFloat(n)>=l?parseFloat(n):l,i=(r-l)/100,n=Math.round((n-l)/i),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(s);break;case"object":if(Array.isArray(c)){var d=100/c.length,h=Math.floor(n/d);h=Math.min(h,c.length-1),h=Math.max(h,0),u=c[h];break}}return a.style.backgroundColor=u,a}},progress:function(e,t,o){var i,n,s,a,r,l=this.sanitizeHTML(e.getValue())||0,u=e.getElement(),d=t&&t.max?t.max:100,h=t&&t.min?t.min:0,p=t&&t.legendAlign?t.legendAlign:"center";switch(n=parseFloat(l)<=d?parseFloat(l):d,n=parseFloat(n)>=h?parseFloat(n):h,i=(d-h)/100,n=Math.round((n-h)/i),_typeof(t.color)){case"string":s=t.color;break;case"function":s=t.color(l);break;case"object":if(Array.isArray(t.color)){var m=100/t.color.length,f=Math.floor(n/m);f=Math.min(f,t.color.length-1),f=Math.max(f,0),s=t.color[f];break}default:s="#2DC214"}switch(_typeof(t.legend)){case"string":a=t.legend;break;case"function":a=t.legend(l);break;case"boolean":a=l;break;default:a=!1}switch(_typeof(t.legendColor)){case"string":r=t.legendColor;break;case"function":r=t.legendColor(l);break;case"object":if(Array.isArray(t.legendColor)){var m=100/t.legendColor.length,f=Math.floor(n/m);f=Math.min(f,t.legendColor.length-1),f=Math.max(f,0),r=t.legendColor[f]}break;default:r="#000"}u.style.minWidth="30px",u.style.position="relative",u.setAttribute("aria-label",n);var g=document.createElement("div");if(g.style.display="inline-block",g.style.position="relative",g.style.width=n+"%",g.style.backgroundColor=s,g.style.height="100%",g.setAttribute("data-max",d),g.setAttribute("data-min",h),a){var b=document.createElement("div");b.style.position="absolute",b.style.top="4px",b.style.left=0,b.style.textAlign=p,b.style.width="100%",b.style.color=r,b.innerHTML=a}return o(function(){if(!(e instanceof c)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",u.appendChild(t),u=t}u.appendChild(g),a&&u.appendChild(b)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function i(e){var t=s.element;s.open=e,t&&(s.open?(n.classList.add("open"),t.style.display=""):(n.classList.remove("open"),t.style.display="none"))}var n=document.createElement("div"),s=e.getRow()._row.modules.responsiveLayout;return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",function(e){e.stopImmediatePropagation(),i(!s.open)}),i(s.open),n},rowSelection:function(e,t,o){var i=this,n=document.createElement("input");if(n.type="checkbox",this.table.modExists("selectRow",!0))if(n.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var s=e.getRow();s instanceof r?(n.addEventListener("change",function(e){s.toggleSelect()}),n.checked=s.isSelected&&s.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(s,n)):n=""}else n.addEventListener("change",function(e){i.table.modules.selectRow.selectedRows.length?i.table.deselectRow():i.table.selectRow(t.rowRange)}),this.table.modules.selectRow.registerHeaderSelectCheckbox(n);return n}},h.prototype.registerModule("format",D);var k=function(e){this.table=e,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};k.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},k.prototype.initializeColumn=function(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")},k.prototype.frozenCheck=function(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen},k.prototype.scrollHorizontal=function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){t.layout()},100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},k.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},k.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},k.prototype.layoutColumnPosition=function(e){var t=this,o=[];this.leftColumns.forEach(function(i,n){if(i.modules.frozen.margin=t._calcSpace(t.leftColumns,n)+t.table.columnManager.scrollLeft+"px",n==t.leftColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup){var s=t.getColGroupParentElement(i);o.includes(s)||(t.layoutElement(s,i),o.push(s)),i.modules.frozen.edge&&s.classList.add("tabulator-frozen-"+i.modules.frozen.position)}else t.layoutElement(i.getElement(),i);e&&i.cells.forEach(function(e){t.layoutElement(e.getElement(),i)})}),this.rightColumns.forEach(function(o,i){o.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,i+1)+"px",i==t.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup?t.layoutElement(t.getColGroupParentElement(o),o):t.layoutElement(o.getElement(),o),e&&o.cells.forEach(function(e){t.layoutElement(e.getElement(),o)})})},k.prototype.getColGroupParentElement=function(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()},k.prototype.layout=function(){var e=this;e.active&&(this.calcMargins(),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},k.prototype.layoutRow=function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)}),this.rightColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)})},k.prototype.layoutElement=function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))},k.prototype._calcSpace=function(e,t){for(var o=0,i=0;i<t;i++)e[i].visible&&(o+=e[i].getWidth());return o},h.prototype.registerModule("frozenColumns",k);var z=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};z.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},z.prototype.setDisplayIndex=function(e){this.displayIndex=e},z.prototype.getDisplayIndex=function(){return this.displayIndex},z.prototype.isFrozen=function(){return!!this.rows.length},z.prototype.getRows=function(e){var t=e.slice(0);return this.rows.forEach(function(e){var o=t.indexOf(e);o>-1&&t.splice(o,1)}),t},z.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},z.prototype.unfreezeRow=function(e){this.rows.indexOf(e);e.modules.frozen?(e.modules.frozen=!1,this.detachRow(e),this.table.rowManager.adjustTableSize(),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()):console.warn("Freeze Error - Row is already unfrozen")},z.prototype.detachRow=function(e){var t=this.rows.indexOf(e);if(t>-1){var o=e.getElement();o.parentNode.removeChild(o),this.rows.splice(t,1)}},z.prototype.styleRows=function(e){var t=this;this.rows.forEach(function(e,o){t.table.rowManager.styleRow(e,o)})},h.prototype.registerModule("frozenRows",z);var S=function(e){this._group=e,this.type="GroupComponent"};S.prototype.getKey=function(){return this._group.key},S.prototype.getField=function(){return this._group.field},S.prototype.getElement=function(){return this._group.element},S.prototype.getRows=function(){return this._group.getRows(!0)},S.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},S.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},S.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._group.visible},S.prototype.isVisible=function(){return this._group.visible},S.prototype.show=function(){this._group.show()},S.prototype.hide=function(){this._group.hide()},S.prototype.toggle=function(){this._group.toggleVisibility()},S.prototype._getSelf=function(){return this._group},S.prototype.getTable=function(){return this._group.groupManager.table};var H=function(e,t,o,i,n,s,a){this.groupManager=e,this.parent=t,this.key=i,this.level=o,this.field=n,this.hasSubGroups=o<e.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=a,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=a?a.visible:void 0!==e.startOpen[o]?e.startOpen[o]:e.startOpen[0],this.component=null,this.createElements(),this.addBindings(),this.createValueGroups()};H.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(e){e.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},H.prototype.createElements=function(){var e=document.createElement("div");e.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(e),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},H.prototype.createValueGroups=function(){var e=this,t=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]&&this.groupManager.allowedValues[t].forEach(function(o){e._createGroup(o,t)})},H.prototype.addBindings=function(){var e,t,o,i,n=this;n.groupManager.table.options.groupClick&&n.element.addEventListener("click",function(e){n.groupManager.table.options.groupClick.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupDblClick&&n.element.addEventListener("dblclick",function(e){n.groupManager.table.options.groupDblClick.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupContext&&n.element.addEventListener("contextmenu",function(e){n.groupManager.table.options.groupContext.call(n.groupManager.table,e,n.getComponent())}),(n.groupManager.table.options.groupContextMenu||n.groupManager.table.options.groupClickMenu)&&n.groupManager.table.modExists("menu")&&n.groupManager.table.modules.menu.initializeGroup.call(n.groupManager.table.modules.menu,n),n.groupManager.table.options.groupTap&&(o=!1,n.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),n.element.addEventListener("touchend",function(e){o&&n.groupManager.table.options.groupTap(e,n.getComponent()),o=!1})),n.groupManager.table.options.groupDblTap&&(e=null,n.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,n.groupManager.table.options.groupDblTap(t,n.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),n.groupManager.table.options.groupTapHold&&(t=null,n.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,n.groupManager.table.options.groupTapHold(e,n.getComponent())},1e3)},{passive:!0}),n.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),n.groupManager.table.options.groupToggleElement&&(i="arrow"==n.groupManager.table.options.groupToggleElement?n.arrowElement:n.element,i.addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),n.toggleVisibility()}))},H.prototype._createGroup=function(e,t){
-var o=t+"_"+e,i=new H(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[o]);this.groups[o]=i,this.groupList.push(i)},H.prototype._addRowToGroup=function(e){var t=this.level+1;if(this.hasSubGroups){var o=this.groupManager.groupIDLookups[t].func(e.getData()),i=t+"_"+o;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[i]&&this.groups[i].addRow(e):(this.groups[i]||this._createGroup(o,t),this.groups[i].addRow(e))}},H.prototype._addRow=function(e){this.rows.push(e),e.modules.group=this},H.prototype.insertRow=function(e,t,o){var i=this.conformRowData({});e.updateData(i);var n=this.rows.indexOf(t);n>-1?o?this.rows.splice(n+1,0,e):this.rows.splice(n,0,e):o?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},H.prototype.scrollHeader=function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach(function(t){t.scrollHeader(e)})},H.prototype.getRowIndex=function(e){},H.prototype.conformRowData=function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e},H.prototype.removeRow=function(e){var t=this.rows.indexOf(e),o=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(o.parentNode&&o.parentNode.removeChild(o),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},H.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],t=this.groupList.indexOf(e),t>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},H.prototype.getHeadersAndRows=function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(o){t=t.concat(o.getHeadersAndRows(e))}):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t},H.prototype.getData=function(e,t){var o=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach(function(e){o.push(e.getData(t||"data"))}),o},H.prototype.getRowCount=function(){var e=0;return this.groupList.length?this.groupList.forEach(function(t){e+=t.getRowCount()}):e=this.rows.length,e},H.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},H.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){e.detachElement()})}):this.rows.forEach(function(e){var t=e.getElement();t.parentNode.removeChild(t)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},H.prototype.show=function(){var e=this;if(e.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var t=e.getElement();this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o})}):e.rows.forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},H.prototype._visSet=function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach(function(t){e.push(t.getData())}),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))},H.prototype.getRowGroup=function(e){var t=!1;return this.groupList.length?this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}):this.rows.find(function(t){return t===e})&&(t=this),t},H.prototype.getSubGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},H.prototype.getRows=function(e){var t=[];return this.rows.forEach(function(o){t.push(e?o.getComponent():o)}),t},H.prototype.generateGroupHeaderContents=function(){var e=[];for(this.rows.forEach(function(t){e.push(t.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},H.prototype.getPath=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.unshift(this.key),this.parent&&this.parent.getPath(e),e},H.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;e<this.element.childNodes.length;++e)this.element.childNodes[e].parentNode.removeChild(this.element.childNodes[e]);return this.generateGroupHeaderContents(),this.element},H.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},H.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},H.prototype.initialize=function(e){this.initialized&&!e||(this.normalizeHeight(),this.initialized=!0)},H.prototype.reinitialize=function(){this.initialized=!1,this.height=0,h.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},H.prototype.setHeight=function(e){this.height!=e&&(this.height=e,this.outerHeight=this.element.offsetHeight)},H.prototype.getHeight=function(){return this.outerHeight},H.prototype.getGroup=function(){return this},H.prototype.reinitializeHeight=function(){},H.prototype.calcHeight=function(){},H.prototype.setCellHeight=function(){},H.prototype.clearCellHeight=function(){},H.prototype.getComponent=function(){return this.component||(this.component=new S(this)),this.component};var P=function(e){this.table=e,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};P.prototype.initialize=function(){var e=this,t=e.table.options.groupBy,o=e.table.options.groupStartOpen,i=e.table.options.groupHeader;if(this.allowedValues=e.table.options.groupValues,Array.isArray(t)&&Array.isArray(i)&&t.length>i.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),e.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],e.table.modules.localize.bind("groups|item",function(t,o){e.headerGenerator[0]=function(e,i,n){return(void 0===e?"":e)+"<span>("+i+" "+(1===i?t:o.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(t)||t)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var n=this.table.columnManager.getRealColumns();n.forEach(function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(t)||(t=[t]),t.forEach(function(t,o){var i,n;"function"==typeof t?i=t:(n=e.table.columnManager.getColumnByField(t),i=n?function(e){return n.getFieldValue(e)}:function(e){return e[t]}),e.groupIDLookups.push({field:"function"!=typeof t&&t,func:i,values:!!e.allowedValues&&e.allowedValues[o]})}),o&&(Array.isArray(o)||(o=[o]),o.forEach(function(e){e="function"==typeof e?e:function(){return!0}}),e.startOpen=o),i&&(e.headerGenerator=Array.isArray(i)?i:[i]),this.initialized=!0},P.prototype.setDisplayIndex=function(e){this.displayIndex=e},P.prototype.getDisplayIndex=function(){return this.displayIndex},P.prototype.getRows=function(e){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(e),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):e.slice(0)},P.prototype.getGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},P.prototype.getChildGroups=function(e){var t=this,o=[];return e||(e=this),e.groupList.forEach(function(e){e.groupList.length?o=o.concat(t.getChildGroups(e)):o.push(e)}),o},P.prototype.wipe=function(){this.groupList.forEach(function(e){e.wipe()})},P.prototype.pullGroupListData=function(e){var t=this,o=[];return e.forEach(function(e){var i={};i.level=0,i.rowCount=0,i.headerContent="";var n=[];e.hasSubGroups?(n=t.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=n.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),o.push(i),o=o.concat(n)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,o.push(i),e.getRows().forEach(function(e){o.push(e.getData("data"))}))}),o},P.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},P.prototype.getRowGroup=function(e){var t=!1;return this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}),t},P.prototype.countGroups=function(){return this.groupList.length},P.prototype.generateGroups=function(e){var t=this,o=t.groups;t.groups={},t.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(e){t.createGroup(e,0,o)}),e.forEach(function(e){t.assignRowToExistingGroup(e,o)})):e.forEach(function(e){t.assignRowToGroup(e,o)})},P.prototype.createGroup=function(e,t,o){var i,n=t+"_"+e;o=o||[],i=new H(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],o[n]),this.groups[n]=i,this.groupList.push(i)},P.prototype.assignRowToExistingGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i="0_"+o;this.groups[i]&&this.groups[i].addRow(e)},P.prototype.assignRowToGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i=!this.groups["0_"+o];return i&&this.createGroup(o,0,t),this.groups["0_"+o].addRow(e),!i},P.prototype.reassignRowToGroup=function(e){var t=e.getGroup(),o=t.getPath(),i=this.getExpectedPath(e);o.length==i.length&&o.every(function(e,t){return e===i[t]})||(t.removeRow(e),this.assignRowToGroup(e,self.groups),this.table.rowManager.refreshActiveData("group",!1,!0))},P.prototype.getExpectedPath=function(e){var t=[],o=e.getData();return this.groupIDLookups.forEach(function(e){t.push(e.func(o))}),t},P.prototype.updateGroupRows=function(e){var t=this,o=[];if(t.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows())}),e){var i=t.table.rowManager.setDisplayRows(o,this.getDisplayIndex());!0!==i&&this.setDisplayIndex(i),t.table.rowManager.refreshActiveData("group",!0,!0)}return o},P.prototype.scrollHeaders=function(e){this.table.options.virtualDomHoz&&(e-=this.table.vdomHoz.vDomPadLeft),e+="px",this.groupList.forEach(function(t){t.scrollHeader(e)})},P.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))},h.prototype.registerModule("groupRows",P);var A=function(e){this.table=e,this.history=[],this.index=-1};A.prototype.clear=function(){this.history=[],this.index=-1},A.prototype.action=function(e,t,o){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:o}),this.index++},A.prototype.getHistoryUndoSize=function(){return this.index+1},A.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},A.prototype.clearComponentHistory=function(e){var t=this.history.findIndex(function(t){return t.component===e});t>-1&&(this.history.splice(t,1),t<=this.index&&this.index--,this.clearComponentHistory(e))},A.prototype.undo=function(){if(this.index>-1){var e=this.history[this.index];return this.undoers[e.type].call(this,e),this.index--,this.table.options.historyUndo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},A.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return this.redoers[e.type].call(this,e),this.table.options.historyRedo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},A.prototype.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},A.prototype.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}},A.prototype._rebindRow=function(e,t){this.history.forEach(function(o){if(o.component instanceof l)o.component===e&&(o.component=t);else if(o.component instanceof u&&o.component.row===e){var i=o.component.column.getField();i&&(o.component=t.getCell(i))}})},h.prototype.registerModule("history",A);var _=function(e){this.table=e,this.fieldIndex=[],this.hasIndex=!1};_.prototype.parseTable=function(){var e=this,t=e.table.element,o=e.table.options,i=(o.columns,t.getElementsByTagName("th")),n=t.getElementsByTagName("tbody")[0],s=[];e.hasIndex=!1,e.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],e._extractOptions(t,o),i.length?e._extractHeaders(i,n):e._generateBlankHeaders(i,n);for(var a=0;a<n.length;a++){var r=n[a],l=r.getElementsByTagName("td"),c={};e.hasIndex||(c[o.index]=a);for(var u=0;u<l.length;u++){var d=l[u];void 0!==this.fieldIndex[u]&&(c[this.fieldIndex[u]]=d.innerHTML)}s.push(c)}var h=document.createElement("div"),p=t.attributes;for(var u in p)"object"==_typeof(p[u])&&h.setAttribute(p[u].name,p[u].value);t.parentNode.replaceChild(h,t),o.data=s,e.table.options.htmlImported.call(this.table),this.table.element=h},_.prototype._extractOptions=function(e,t,o){var i=e.attributes,n=o?Object.assign([],o):Object.keys(t),s={};n.forEach(function(e){s[e.toLowerCase()]=e});for(var a in i){var r,l=i[a];l&&"object"==(void 0===l?"undefined":_typeof(l))&&l.name&&0===l.name.indexOf("tabulator-")&&(r=l.name.replace("tabulator-",""),void 0!==s[r]&&(t[s[r]]=this._attribValue(l.value)))}},_.prototype._attribValue=function(e){return"true"===e||"false"!==e&&e},_.prototype._findCol=function(e){return this.table.options.columns.find(function(t){return t.title===e})||!1},_.prototype._extractHeaders=function(e,t){for(var o=0;o<e.length;o++){var i,s=e[o],a=!1,r=this._findCol(s.textContent);r?a=!0:r={title:s.textContent.trim()},r.field||(r.field=s.textContent.trim().toLowerCase().replace(" ","_")),i=s.getAttribute("width"),i&&!r.width&&(r.width=i),s.attributes,this._extractOptions(s,r,n.prototype.defaultOptionList),this.fieldIndex[o]=r.field,r.field==this.table.options.index&&(this.hasIndex=!0),a||this.table.options.columns.push(r)}},_.prototype._generateBlankHeaders=function(e,t){for(var o=0;o<e.length;o++){var i=e[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var s=i.getAttribute("width");s&&(n.width=s),this.table.options.columns.push(n)}},h.prototype.registerModule("htmlTableImport",_);var F=function(e){this.table=e,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};F.prototype.initialize=function(){var e=this.table.options.keybindings,t={};if(this.watchKeys={},this.pressedKeys=[],!1!==e){for(var o in this.bindings)t[o]=this.bindings[o];if(Object.keys(e).length)for(var i in e)t[i]=e[i];this.mapBindings(t),this.bindEvents()}},F.prototype.mapBindings=function(e){var t=this,o=this;for(var i in e)!function(i){t.actions[i]?e[i]&&("object"!==_typeof(e[i])&&(e[i]=[e[i]]),e[i].forEach(function(e){o.mapBinding(i,e)})):console.warn("Key Binding Error - no such action:",i)}(i)},F.prototype.mapBinding=function(e,t){var o=this,i={action:this.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach(function(e){switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=parseInt(e),i.keys.push(e),o.watchKeys[e]||(o.watchKeys[e]=[]),o.watchKeys[e].push(i)}})},F.prototype.bindEvents=function(){var e=this;this.keyupBinding=function(t){var o=t.keyCode,i=e.watchKeys[o];i&&(e.pressedKeys.push(o),i.forEach(function(o){e.checkBinding(t,o)}))},this.keydownBinding=function(t){var o=t.keyCode;if(e.watchKeys[o]){var i=e.pressedKeys.indexOf(o);i>-1&&e.pressedKeys.splice(i,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},F.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},F.prototype.checkBinding=function(e,t){var o=this,i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach(function(e){-1==o.pressedKeys.indexOf(e)&&(i=!1)}),i&&t.action.call(o,e),!0)},F.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},F.prototype.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,o=t.scrollTop-t.height;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o>=0?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,o=t.scrollTop+t.height,i=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o<=i?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().prev())},navNext:function(e){var t,o=!1,i=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(o=this.table.modules.edit.currentCell)&&(e.preventDefault(),t=o.nav(),t.next()||i&&(o.getElement().firstChild.blur(),i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(o.row.getComponent())):this.table.addRow(Object.assign({},i)),i.then(function(){setTimeout(function(){t.next()})})))},navLeft:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().left())},navRight:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().right())},navUp:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().up())},navDown:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().down())},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},h.prototype.registerModule("keybindings",F);var N=function(e){this.table=e,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1};N.prototype.initializeColumnHeader=function(e){var t,o=this;e.definition.headerContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.definition.headerContextMenu)),this.tapHold(e,e.definition.headerContextMenu)),e.definition.headerMenu&&(t=document.createElement("span"),t.classList.add("tabulator-header-menu-button"),t.innerHTML="&vellip;",t.addEventListener("click",function(t){var i="function"==typeof e.definition.headerMenu?e.definition.headerMenu(e.getComponent(),t):e.definition.headerMenu;t.stopPropagation(),t.preventDefault(),o.loadMenu(t,e,i)}),e.titleElement.insertBefore(t,e.titleElement.firstChild))},N.prototype.LoadMenuEvent=function(e,t,o){t="function"==typeof t?t(e.getComponent(),o):t,this.loadMenu(o,e,t)},N.prototype.tapHold=function(e,t){var o=this,i=e.getElement(),n=null,s=!1;i.addEventListener("touchstart",function(i){clearTimeout(n),s=!1,n=setTimeout(function(){clearTimeout(n),n=null,s=!0,o.LoadMenuEvent(e,t,i)},1e3)},{passive:!0}),i.addEventListener("touchend",function(e){clearTimeout(n),n=null,s&&e.preventDefault()})},N.prototype.initializeCell=function(e){e.column.definition.contextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,e.column.definition.contextMenu)),this.tapHold(e,e.column.definition.contextMenu)),e.column.definition.clickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,e.column.definition.clickMenu))},N.prototype.initializeRow=function(e){this.table.options.rowContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.rowContextMenu)),this.tapHold(e,this.table.options.rowContextMenu)),this.table.options.rowClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.rowClickMenu))},N.prototype.initializeGroup=function(e){this.table.options.groupContextMenu&&(e.getElement().addEventListener("contextmenu",this.LoadMenuEvent.bind(this,e,this.table.options.groupContextMenu)),this.tapHold(e,this.table.options.groupContextMenu)),this.table.options.groupClickMenu&&e.getElement().addEventListener("click",this.LoadMenuEvent.bind(this,e,this.table.options.groupClickMenu))},N.prototype.loadMenu=function(e,t,o){var i=this,n=Math.max(document.body.offsetHeight,window.innerHeight),s=!(e instanceof MouseEvent);if(s||e.preventDefault(),o&&o.length){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout(function(){i.nestedMenuBlock=!1},100);this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),o.forEach(function(e){var o=document.createElement("div"),n=e.label,s=e.disabled;e.separator?o.classList.add("tabulator-menu-separator"):(o.classList.add("tabulator-menu-item"),"function"==typeof n&&(n=n(t.getComponent())),n instanceof Node?o.appendChild(n):o.innerHTML=n,"function"==typeof s&&(s=s(t.getComponent())),s?(o.classList.add("tabulator-menu-item-disabled"),o.addEventListener("click",function(e){e.stopPropagation()})):o.addEventListener("click",function(o){i.hideMenu(),e.action(o,t.getComponent())})),i.menuEl.appendChild(o)}),this.menuEl.style.top=(s?e.touches[0].pageY:e.pageY)+"px",this.menuEl.style.left=(s?e.touches[0].pageX:e.pageX)+"px",setTimeout(function(){i.table.rowManager.element.addEventListener("scroll",i.blurEvent),document.body.addEventListener("click",i.blurEvent),document.body.addEventListener("contextmenu",i.blurEvent),document.body.addEventListener("keydown",i.escEvent)},100),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=n&&(this.menuEl.style.top="",this.menuEl.style.bottom=n-e.pageY+"px")}},N.prototype.isOpen=function(){return!!this.menuEl.parentNode},N.prototype.escMenu=function(e){27==e.keyCode&&this.hideMenu()},N.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.escEvent&&document.body.removeEventListener("keydown",this.escEvent),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},N.prototype.menus={},h.prototype.registerModule("menu",N);var B=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};B.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},B.prototype.initializeColumn=function(e){var t,o=this,i={};e.modules.frozen||(t=e.getElement(),i.mousemove=function(i){e.parent===o.moving.parent&&((o.touchMove?i.touches[0].pageX:i.pageX)-h.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=i},B.prototype.bindTouchEvents=function(e){var t,o,i,n,s,a,r,l=this,c=e.getElement(),u=!1;c.addEventListener("touchstart",function(c){l.checkTimeout=setTimeout(function(){l.touchMove=!0,t=e,o=e.nextColumn(),n=o?o.getWidth()/2:0,i=e.prevColumn(),s=i?i.getWidth()/2:0,a=0,r=0,u=!1,l.startMove(c,e)},l.checkPeriod)},{passive:!0}),c.addEventListener("touchmove",function(c){var d,h;l.moving&&(l.moveHover(c),u||(u=c.touches[0].pageX),d=c.touches[0].pageX-u,d>0?o&&d-a>n&&(h=o)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveColumn(h,!0)):i&&-d-r>s&&(h=i)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveColumn(h,!1)),h&&(t=h,o=h.nextColumn(),a=n,n=o?o.getWidth()/2:0,i=h.prevColumn(),r=s,s=i?i.getWidth()/2:0))},{passive:!0}),c.addEventListener("touchend",function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&l.endMove(e)})},B.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-h.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},B.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},B.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},B.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i.nextSibling)}):e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i)})},B.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),
-this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},B.prototype.moveHover=function(e){var t,o=this,i=o.table.columnManager.getElement(),n=i.scrollLeft,s=(o.touchMove?e.touches[0].pageX:e.pageX)-h.prototype.helpers.elOffset(i).left+n;o.hoverElement.style.left=s-o.startX+"px",s-n<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,n-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),n+i.clientWidth-s<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(i.clientWidth,n+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},h.prototype.registerModule("moveColumn",B);var O=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1};O.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},O.prototype.initialize=function(e){this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements},O.prototype.setHandle=function(e){this.hasHandle=e},O.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-h.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(t.placeholderElement,i.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var i=e.getElement();i.previousSibling&&(i.parentNode.insertBefore(t.placeholderElement,i),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},O.prototype.initializeRow=function(e){var t,o=this,i={};i.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),i.mousemove=function(t){if(t.pageY-h.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=i},O.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},O.prototype.bindTouchEvents=function(e,t){var o,i,n,s,a,r,l,c=this,u=!1;t.addEventListener("touchstart",function(t){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=e,i=e.nextRow(),s=i?i.getHeight()/2:0,n=e.prevRow(),a=n?n.getHeight()/2:0,r=0,l=0,u=!1,c.startMove(t,e)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var d,h;c.moving&&(t.preventDefault(),c.moveHover(t),u||(u=t.touches[0].pageY),d=t.touches[0].pageY-u,d>0?i&&d-r>s&&(h=i)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement().nextSibling),c.moveRow(h,!0)):n&&-d-l>a&&(h=n)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement()),c.moveRow(h,!1)),h&&(o=h,i=h.nextRow(),r=s,s=i?i.getHeight()/2:0,n=h.prevRow(),l=a,a=n?n.getHeight()/2:0))}),t.addEventListener("touchend",function(e){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(e),c.touchMove=!1)})},O.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},O.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},O.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},O.prototype.setStartPosition=function(e,t){var o,i,n=this.touchMove?e.touches[0].pageX:e.pageX,s=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(i=o.getBoundingClientRect(),this.startX=i.left-n+window.pageXOffset,this.startY=i.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},O.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},O.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},O.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},O.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,i=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=i-this.startY+"px"},O.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},O.prototype.elementRowDrop=function(e,t,o){this.table.options.movableRowsElementDrop&&this.table.options.movableRowsElementDrop(e,t,!!o&&o.getComponent())},O.prototype.connectToTables=function(e){var t,o=this;this.connectionSelectorsTables&&(t=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach(function(e){"string"==typeof e?o.connectionElements=o.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):o.connectionElements.push(e)}),this.connectionElements.forEach(function(e){var t=function(t){o.elementRowDrop(t,e,o.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")}))},O.prototype.disconnectFromTables=function(){var e;this.connectionSelectorsTables&&(e=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach(function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent})},O.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},O.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},O.prototype.dropComplete=function(e,t,o){var i=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":i=this.senders[this.table.options.movableRowsSender];break;case"function":i=this.table.options.movableRowsSender}i?i.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},O.prototype.tableRowDrop=function(e,t){var o=!1,i=!1;switch(console.trace("drop"),e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?i=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),i?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:i})},O.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},O.prototype.senders={delete:function(e,t,o){e.delete()}},O.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},h.prototype.registerModule("moveRow",O);var I=function(e){this.table=e,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};I.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,a="mutator"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[a]&&(s=t.lookupMutator(e.definition[a]))&&(o=!0,i[a]={mutator:s,params:e.definition[a+"Params"]||{}})}),o&&(e.modules.mutate=i)},I.prototype.lookupMutator=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.mutators[e]?t=this.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t},I.prototype.transformRow=function(e,t,o){var i,n=this,s="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&n.table.columnManager.traverse(function(n){var a,r,l;n.modules.mutate&&(a=n.modules.mutate[s]||n.modules.mutate.mutator||!1)&&(i=n.getFieldValue(void 0!==o?o:e),"data"!=t&&void 0===i||(l=n.getComponent(),r="function"==typeof a.params?a.params(i,e,t,l):a.params,n.setFieldValue(e,a.mutator(i,e,t,r,l))))}),e},I.prototype.transformCell=function(e,t){var o=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,i={};return o?(i=Object.assign(i,e.row.getData()),e.column.setFieldValue(i,t),o.mutator(t,i,"edit",o.params,e.getComponent())):t},I.prototype.enable=function(){this.enabled=!0},I.prototype.disable=function(){this.enabled=!1},I.prototype.mutators={},h.prototype.registerModule("mutator",I);var V=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.createElements()};V.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},V.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var o=1;o<5;o++)t.push(this.size*o);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var o=document.createElement("option");o.value=t,!0===t?e.table.modules.localize.bind("pagination|all",function(e){o.innerHTML=e}):o.innerHTML=t,e.pageSizeSelect.appendChild(o)}),this.pageSizeSelect.value=this.size}},V.prototype.initialize=function(e){var t,o,i,n=this;this.dataSentNames=Object.assign({},this.paginationDataSentNames),this.dataSentNames=Object.assign(this.dataSentNames,this.table.options.paginationDataSent),this.dataReceivedNames=Object.assign({},this.paginationDataReceivedNames),this.dataReceivedNames=Object.assign(this.dataReceivedNames,this.table.options.paginationDataReceived),n.table.modules.localize.bind("pagination|first",function(e){n.firstBut.innerHTML=e}),n.table.modules.localize.bind("pagination|first_title",function(e){n.firstBut.setAttribute("aria-label",e),n.firstBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|prev",function(e){n.prevBut.innerHTML=e}),n.table.modules.localize.bind("pagination|prev_title",function(e){n.prevBut.setAttribute("aria-label",e),n.prevBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|next",function(e){n.nextBut.innerHTML=e}),n.table.modules.localize.bind("pagination|next_title",function(e){n.nextBut.setAttribute("aria-label",e),n.nextBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|last",function(e){n.lastBut.innerHTML=e}),n.table.modules.localize.bind("pagination|last_title",function(e){n.lastBut.setAttribute("aria-label",e),n.lastBut.setAttribute("title",e)}),n.firstBut.addEventListener("click",function(){n.setPage(1).then(function(){}).catch(function(){})}),n.prevBut.addEventListener("click",function(){n.previousPage().then(function(){}).catch(function(){})}),n.nextBut.addEventListener("click",function(){n.nextPage().then(function(){}).catch(function(){})}),n.lastBut.addEventListener("click",function(){n.setPage(n.max).then(function(){}).catch(function(){})}),n.table.options.paginationElement&&(n.element=n.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),n.table.modules.localize.bind("pagination|page_size",function(e){n.pageSizeSelect.setAttribute("aria-label",e),n.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),n.element.appendChild(t),n.element.appendChild(n.pageSizeSelect),n.pageSizeSelect.addEventListener("change",function(e){n.setPageSize("true"==n.pageSizeSelect.value||n.pageSizeSelect.value),n.setPage(1).then(function(){}).catch(function(){})})),n.element.appendChild(n.firstBut),n.element.appendChild(n.prevBut),n.element.appendChild(n.pagesElement),n.element.appendChild(n.nextBut),n.element.appendChild(n.lastBut),n.table.options.paginationElement||e||n.table.footerManager.append(n.element,n),n.mode=n.table.options.pagination,n.table.options.paginationSize?n.size=n.table.options.paginationSize:(o=document.createElement("div"),o.classList.add("tabulator-row"),o.style.visibility=e,i=document.createElement("div"),i.classList.add("tabulator-cell"),i.innerHTML="Page Row Test",o.appendChild(i),n.table.rowManager.getTableElement().appendChild(o),n.size=Math.floor(n.table.rowManager.getElement().clientHeight/o.offsetHeight),n.table.rowManager.getTableElement().removeChild(o)),n.count=n.table.options.paginationButtonCount,n.generatePageSizeSelectList()},V.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},V.prototype.setDisplayIndex=function(e){this.displayIndex=e},V.prototype.getDisplayIndex=function(){return this.displayIndex},V.prototype.setMaxRows=function(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},V.prototype.reset=function(e,t){return("local"==this.mode||e)&&(this.page=1),t&&(this.initialLoad=!0),!0},V.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},V.prototype.setPage=function(e){var t=this,o=this;switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return new Promise(function(i,n){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){n()}),o.table.options.persistence&&o.table.modExists("persistence",!0)&&o.table.modules.persistence.config.page&&o.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),n())})},V.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){var n=t.table.rowManager.getDisplayRows(t.displayIndex-1),s=n.indexOf(e);if(s>-1){var a=!0===t.size?1:Math.ceil((s+1)/t.size);t.setPage(a).then(function(){o()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},V.prototype.setPageSize=function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},V.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),o=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),n=this.page<=o?Math.min(this.count,this.max):Math.min(this.page+o,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=e.max&&e.pagesElement.appendChild(e._generatePageButton(s));this.footerRedraw()},V.prototype._generatePageButton=function(e){var t=this,o=document.createElement("button");return o.classList.add("tabulator-page"),e==t.page&&o.classList.add("active"),o.setAttribute("type","button"),o.setAttribute("role","button"),t.table.modules.localize.bind("pagination|page_title",function(t){o.setAttribute("aria-label",t+" "+e),o.setAttribute("title",t+" "+e)}),o.setAttribute("data-page",e),o.textContent=e,o.addEventListener("click",function(o){t.setPage(e).then(function(){}).catch(function(){})}),o},V.prototype.previousPage=function(){var e=this;return new Promise(function(t,o){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){o()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),o())})},V.prototype.nextPage=function(){var e=this;return new Promise(function(t,o){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){o()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),o())})},V.prototype.getPage=function(){return this.page},V.prototype.getPageMax=function(){return this.max},V.prototype.getPageSize=function(e){return this.size},V.prototype.getMode=function(){return this.mode},V.prototype.getRows=function(e){var t,o,i;if("local"==this.mode){t=[],!0===this.size?(o=0,i=e.length):(o=this.size*(this.page-1),i=o+parseInt(this.size)),this._setPageButtons();for(var n=o;n<i;n++)e[n]&&t.push(e[n]);return t}return this._setPageButtons(),e.slice(0)},V.prototype.trigger=function(){var e,t=this;return new Promise(function(o,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),o();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){o()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},V.prototype._getRemotePage=function(){var e,t,o=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),e=h.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[o.dataSentNames.page]=i.page,o.size&&(t[o.dataSentNames.size]=o.size),o.table.options.ajaxSorting&&o.table.modExists("sort")){var a=i.table.modules.sort.getSort();a.forEach(function(e){delete e.column}),t[o.dataSentNames.sorters]=a}if(o.table.options.ajaxFiltering&&o.table.modExists("filter")){var r=i.table.modules.filter.getFilters(!0,!0);t[o.dataSentNames.filters]=r}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(o.progressiveLoad).then(function(e){i._parseRemoteData(e),n()}).catch(function(e){s()}),i.table.modules.ajax.setParams(e)})},V.prototype._parseRemoteData=function(e){var t,e,o,i=this;if(void 0===e[this.dataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e[this.dataReceivedNames.data]){if(this.max=parseInt(e[this.dataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page):this.table.rowManager.addRows(e[this.dataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.dataReceivedNames.data]),this.table.rowManager.setData(e,!0,this.initialLoad&&1==this.page),o=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+o&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());this.initialLoad=!1}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property")},V.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},V.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},V.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},h.prototype.registerModule("page",V);var j=function(e){this.table=e,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};j.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},j.prototype.initialize=function(){var e,t=this.table.options.persistenceMode,o=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(o||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader))},j.prototype.initializeColumn=function(e){var t,o,i=this;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),o=!0===this.config.columns?Object.keys(t):this.config.columns,o.forEach(function(e){var o=Object.getOwnPropertyDescriptor(t,e),n=t[e];o&&Object.defineProperty(t,e,{set:function(e){n=e,i.defWatcherBlock||i.save("columns"),o.set&&o.set(e)},get:function(){return o.get&&o.get(),n}})}),this.defWatcherBlock=!1)},j.prototype.load=function(e,t){var o=this.retreiveData(e);return t&&(o=o?this.mergeDefinition(t,o):t),o},j.prototype.retreiveData=function(e){return!!this.readFunc&&this.readFunc(this.id,e)},j.prototype.mergeDefinition=function(e,t){var o=this,i=[];return t=t||[],t.forEach(function(t,n){var s,a=o._findColumn(e,t);a&&(!0===o.config.columns||void 0==o.config.columns?(s=Object.keys(a),s.push("width")):s=o.config.columns,s.forEach(function(e){void 0!==t[e]&&(a[e]=t[e])}),a.columns&&(a.columns=o.mergeDefinition(a.columns,t.columns)),i.push(a))}),e.forEach(function(e,n){o._findColumn(t,e)||(i.length>n?i.splice(n,0,e):i.push(e))}),i},j.prototype._findColumn=function(e,t){var o=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(o){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},j.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)},j.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},j.prototype.getGroupConfig=function(){var e={}
-;return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(e.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(e.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(e.groupHeader=this.table.options.groupHeader)),e},j.prototype.getPageConfig=function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e},j.prototype.parseColumns=function(e){var t=this,o=[],i=["headerContextMenu","headerMenu","contextMenu","clickMenu"];return e.forEach(function(e){var n,s={},a=e.getDefinition();e.isGroup?(s.title=a.title,s.columns=t.parseColumns(e.getColumns())):(s.field=e.getField(),!0===t.config.columns||void 0==t.config.columns?(n=Object.keys(a),n.push("width")):n=t.config.columns,n.forEach(function(t){switch(t){case"width":s.width=e.getWidth();break;case"visible":s.visible=e.visible;break;default:"function"!=typeof a[t]&&-1===i.indexOf(t)&&(s[t]=a[t])}})),o.push(s)}),o},j.prototype.readers={local:function(e,t){var o=localStorage.getItem(e+"-"+t);return!!o&&JSON.parse(o)},cookie:function(e,t){var o,i,n=document.cookie,s=e+"-"+t,a=n.indexOf(s+"=");return a>-1&&(n=n.substr(a),o=n.indexOf(";"),o>-1&&(n=n.substr(0,o)),i=n.replace(s+"=","")),!!i&&JSON.parse(i)}},j.prototype.writers={local:function(e,t,o){localStorage.setItem(e+"-"+t,JSON.stringify(o))},cookie:function(e,t,o){var i=new Date;i.setDate(i.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(o)+"; expires="+i.toUTCString()}},h.prototype.registerModule("persistence",j);var W=function(e){this.table=e,this.element=!1,this.manualBlock=!1};W.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},W.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},W.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},W.prototype.printFullscreen=function(e,t,o){var i,n,s=window.scrollX,a=window.scrollY,r=document.createElement("div"),l=document.createElement("div"),c=this.table.modules.export.genereateTable(void 0!==o?o:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(r.classList.add("tabulator-print-header"),i="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof i?r.innerHTML=i:r.appendChild(i),this.element.appendChild(r)),this.element.appendChild(c),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),n="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof n?l.innerHTML=n:l.appendChild(n),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,c),window.print(),this.cleanup(),window.scrollTo(s,a),this.manualBlock=!1},h.prototype.registerModule("print",W);var G=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};G.prototype.watchData=function(e){var t,o=this;this.currentVersion++,t=this.currentVersion,o.unwatchData(),o.data=e,o.origFuncs.push=e.push,Object.defineProperty(o.data,"push",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!1)}),o.origFuncs.push.apply(e,arguments)}}),o.origFuncs.unshift=e.unshift,Object.defineProperty(o.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!0)}),o.origFuncs.unshift.apply(e,arguments)}}),o.origFuncs.shift=e.shift,Object.defineProperty(o.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[0]))&&i.deleteActual(),o.origFuncs.shift.call(e)}}),o.origFuncs.pop=e.pop,Object.defineProperty(o.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[o.data.length-1]))&&i.deleteActual(),o.origFuncs.pop.call(e)}}),o.origFuncs.splice=e.splice,Object.defineProperty(o.data,"splice",{enumerable:!1,configurable:!0,value:function(){var i,n=Array.from(arguments),s=n[0]<0?e.length+n[0]:n[0],a=n[1],r=!!n[2]&&n.slice(2);if(!o.blocked&&t===o.currentVersion){if(r&&(i=!!e[s]&&o.table.rowManager.getRowFromDataObject(e[s]),i?r.forEach(function(e){o.table.rowManager.addRowActual(e,!0,i,!0)}):(r=r.slice().reverse(),r.forEach(function(e){o.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==a){var l=e.slice(s,void 0===n[1]?n[1]:s+a);l.forEach(function(e,t){var i=o.table.rowManager.getRowFromDataObject(e);i&&i.deleteActual(t!==l.length-1)})}(r||0!==a)&&o.table.rowManager.reRenderInPosition()}return o.origFuncs.splice.apply(e,arguments)}})},G.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},G.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var o in t)this.watchKey(e,t,o);this.table.options.dataTree&&this.watchTreeChildren(e),this.blocked=!1},G.prototype.watchTreeChildren=function(e){function t(){o.table.modules.dataTree.initializeRow(e),o.table.modules.dataTree.layoutRow(e),o.table.rowManager.refreshActiveData("tree",!1,!0)}var o=this,i=e.getData()[this.table.options.dataTreeChildField],n={};i&&(n.push=i.push,Object.defineProperty(i,"push",{enumerable:!1,configurable:!0,value:function(){var e=n.push.apply(i,arguments);return t(),e}}),n.unshift=i.unshift,Object.defineProperty(i,"unshift",{enumerable:!1,configurable:!0,value:function(){var e=n.unshift.apply(i,arguments);return t(),e}}),n.shift=i.shift,Object.defineProperty(i,"shift",{enumerable:!1,configurable:!0,value:function(){var e=n.shift.call(i);return t(),e}}),n.pop=i.pop,Object.defineProperty(i,"pop",{enumerable:!1,configurable:!0,value:function(){var e=n.pop.call(i);return t(),e}}),n.splice=i.splice,Object.defineProperty(i,"splice",{enumerable:!1,configurable:!0,value:function(){var e=n.splice.apply(i,arguments);return t(),e}}))},G.prototype.watchKey=function(e,t,o){var i=this,n=Object.getOwnPropertyDescriptor(t,o),s=t[o],a=this.currentVersion;Object.defineProperty(t,o,{set:function(t){if(s=t,!i.blocked&&a===i.currentVersion){var r={};r[o]=t,e.updateData(r)}n.set&&n.set(t)},get:function(){return n.get&&n.get(),s}})},G.prototype.unwatchRow=function(e){var t=e.getData();for(var o in t)Object.defineProperty(t,o,{value:t[o]})},G.prototype.block=function(){this.blocked=!0},G.prototype.unblock=function(){this.blocked=!1},h.prototype.registerModule("reactiveData",G);var U=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};U.prototype.initializeColumn=function(e,t,o){var i=this,n=!1,s=this.table.options.resizableColumns;if("header"===e&&(n="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:n}),!0===s||s==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var r=document.createElement("div");r.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var l=function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(i.startColumn=t,i._mouseDown(e,o,a))};a.addEventListener("mousedown",l),a.addEventListener("touchstart",l,{passive:!0}),a.addEventListener("dblclick",function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(e.stopPropagation(),o.reinitializeWidth(!0))}),r.addEventListener("click",function(e){e.stopPropagation()});var c=function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(i.startColumn=t,i._mouseDown(e,s,r)))};r.addEventListener("mousedown",c),r.addEventListener("touchstart",c,{passive:!0}),r.addEventListener("dblclick",function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),o.appendChild(a),o.appendChild(r)}},U.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},U.prototype._mouseDown=function(e,t,o){function i(e){s.table.rtl?t.setWidth(s.startWidth-((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)):t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),s.table.options.virtualDomHoz&&s.table.vdomHoz.reinitialize(!0),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},h.prototype.registerModule("resizeColumns",U);var X=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};X.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=document.createElement("div");i.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",i.addEventListener("click",function(e){e.stopPropagation()});var s=function(o){t.startRow=e,t._mouseDown(o,e,i)};i.addEventListener("mousedown",s),i.addEventListener("touchstart",s,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var a=function(o){var i=t.table.rowManager.prevDisplayRow(e);i&&(t.startRow=i,t._mouseDown(o,i,n))};n.addEventListener("mousedown",a),n.addEventListener("touchstart",a,{passive:!0}),o.appendChild(i),o.appendChild(n)},X.prototype._mouseDown=function(e,t,o){function i(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.rowResized.call(this.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},h.prototype.registerModule("resizeRows",X);var Y=function(e){this.table=e,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};Y.prototype.initialize=function(e){var t,o=this,i=this.table;this.tableHeight=i.element.clientHeight,this.tableWidth=i.element.clientWidth,i.element.parentNode&&(this.containerHeight=i.element.parentNode.clientHeight,this.containerWidth=i.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.tableHeight==t&&o.tableWidth==n||(o.tableHeight=t,o.tableWidth=n,i.element.parentNode&&(o.containerHeight=i.element.parentNode.clientHeight,o.containerWidth=i.element.parentNode.clientWidth),i.options.virtualDomHoz&&i.vdomHoz.reinitialize(!0),i.redraw())}}),this.observer.observe(i.element),t=window.getComputedStyle(i.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.containerHeight==t&&o.containerWidth==n||(o.containerHeight=t,o.containerWidth=n,o.tableHeight=i.element.clientHeight,o.tableWidth=i.element.clientWidth),i.options.virtualDomHoz&&i.vdomHoz.reinitialize(!0),i.redraw()}}),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell)&&(i.options.virtualDomHoz&&i.vdomHoz.reinitialize(!0),i.redraw())},window.addEventListener("resize",this.binding))},Y.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},h.prototype.registerModule("resizeTable",Y);var q=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};q.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,i){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=i,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,i=Array.isArray(o),n=0,o=i?o:o[Symbol.iterator]();;){var s;if(i){if(n>=o.length)break;s=o[n++]}else{if(n=o.next(),n.done)break;s=n.value}var a=s;if("responsiveCollapse"==a.definition.formatter){this.collapseHandleColumn=a;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},q.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},q.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},q.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},q.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},q.prototype.hideColumn=function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())},q.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},q.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),i=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-o;if(i<0){var n=e.columns[e.index];n?(e.hideColumn(n),e.index++):t=!1}else{var s=e.columns[e.index-1];s&&i>0&&i>=s.getWidth()?(e.showColumn(s),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},q.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},q.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},q.prototype.generateCollapsedRowData=function(e){var t,o=this,i=e.getData(),n=[];return this.hiddenColumns.forEach(function(s){var a=s.getFieldValue(i);s.definition.title&&s.field&&(s.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return a},getData:function(){return i},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return s.getComponent()}},n.push({title:s.definition.title,value:s.modules.format.formatter.call(o.table.modules.format,t,s.modules.format.params)})):n.push({title:s.definition.title,value:a}))}),n},q.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},h.prototype.registerModule("responsiveLayout",q);var K=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};K.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},K.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var i=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),n=t.table.rowManager.getDisplayRowIndex(e),s=i<=n?i:n,a=i>=n?i:n,r=t.table.rowManager.getDisplayRows().slice(0),l=r.splice(s,a-s+1);o.ctrlKey||o.metaKey?(l.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(void 0,!0),!0!==t.table.options.selectable&&l.length>t.table.options.selectable&&(l=l.slice(0,t.table.options.selectable)),t.selectRows(l)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",i),document.body.addEventListener("keyup",i),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},K.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},K.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=this.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},K.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var i=this.table.rowManager.findRow(e);i?-1==this.selectedRows.indexOf(i)&&(i.modules.select||(i.modules.select={}),i.modules.select.selected=!0,i.modules.select.checkboxEl&&(i.modules.select.checkboxEl.checked=!0),i.getElement().classList.add("tabulator-selected"),this.selectedRows.push(i),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(i,!0),t||this.table.options.rowSelected.call(this.table,i.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},K.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},K.prototype.deselectRows=function(e,t){var o,i=this;if(void 0===e){o=i.selectedRows.length;for(var n=0;n<o;n++)i._deselectRow(i.selectedRows[0],!0);i._rowSelectionChanged(t)}else Array.isArray(e)?(e.forEach(function(e){i._deselectRow(e,!0)}),i._rowSelectionChanged(t)):i._deselectRow(e,t)},K.prototype._deselectRow=function(e,t){var o,i=this,n=i.table.rowManager.findRow(e);n?(o=i.selectedRows.findIndex(function(e){return e==n}))>-1&&(n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),n.getElement().classList.remove("tabulator-selected"),i.selectedRows.splice(o,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!1),t||i.table.options.rowDeselected.call(this.table,n.getComponent()),i._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},K.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},K.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},K.prototype._rowSelectionChanged=function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},K.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},K.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},K.prototype.childRowSelection=function(e,t){var o=this.table.modules.dataTree.getChildren(e);if(t)for(var i=o,n=Array.isArray(i),s=0,i=n?i:i[Symbol.iterator]();;){var a;if(n){if(s>=i.length)break;a=i[s++]}else{if(s=i.next(),s.done)break;a=s.value}var r=a;this._selectRow(r,!0)}else for(var l=o,c=Array.isArray(l),u=0,l=c?l:l[Symbol.iterator]();;){var d;if(c){if(u>=l.length)break;d=l[u++]}else{if(u=l.next(),u.done)break;d=u.value}var h=d;this._deselectRow(h,!0)}},h.prototype.registerModule("selectRow",K);var J=function(e){this.table=e,this.sortList=[],this.changed=!1};J.prototype.initializeColumn=function(e,t){var o,i,n=this,s=!1;switch(_typeof(e.definition.sorter)){case"string":n.sorters[e.definition.sorter]?s=n.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:void 0!==e.definition.headerSortTristate?e.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===e.definition.headerSort?!1!==this.table.options.headerSort:!1!==e.definition.headerSort)&&(o=e.getElement(),o.classList.add("tabulator-sortable"),i=document.createElement("div"),i.classList.add("tabulator-col-sorter"),"object"==_typeof(this.table.options.headerSortElement)?i.appendChild(this.table.options.headerSortElement):i.innerHTML=this.table.options.headerSortElement,t.appendChild(i),e.modules.sort.element=i,o.addEventListener("click",function(t){var o="",i=[],s=!1;if(e.modules.sort){if(e.modules.sort.tristate)o="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":o="desc";break;case"desc":o="asc";break;default:o=e.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?(i=n.getSort(),s=i.findIndex(function(t){return t.field===e.getField()}),s>-1?(i[s].dir=o,s!=i.length-1&&(s=i.splice(s,1)[0],"none"!=o&&i.push(s))):"none"!=o&&i.push({column:e,dir:o}),n.setSort(i)):"none"==o?n.clear():n.setSort(e,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},J.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},J.prototype.getSort=function(){var e=this,t=[];return e.sortList.forEach(function(e){e.column&&t.push({column:e.column.getComponent(),field:e.column.getField(),dir:e.dir})}),t},J.prototype.setSort=function(e,t){var o=this,i=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach(function(e){var t;t=o.table.columnManager.findColumn(e.column),t?(e.column=t,i.push(e),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)}),o.sortList=i,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},J.prototype.clear=function(){this.setSort([])},J.prototype.findSorter=function(e){var t,o=this.table.rowManager.activeRows[0],i="string";if(o&&(o=o.getData(),e.getField()))switch(t=e.getFieldValue(o),void 0===t?"undefined":_typeof(t)){case"undefined":i="string";break;case"boolean":i="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(i="alphanum"):i="number"}return this.sorters[i]},J.prototype.sort=function(e){var t=this,o=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,i=[],n=[];t.table.options.dataSorting&&t.table.options.dataSorting.call(t.table,t.getSort()),t.clearColumnHeaders(),t.table.options.ajaxSorting?o.forEach(function(e,o){t.setColumnHeader(e.column,e.dir)}):(o.forEach(function(e,o){var n=e.column.modules.sort;e.column&&n&&(n.sorter||(n.sorter=t.findSorter(e.column)),e.params="function"==typeof n.params?n.params(e.column.getComponent(),e.dir):n.params,i.push(e)),t.setColumnHeader(e.column,e.dir)}),i.length&&t._sortItems(e,i)),t.table.options.dataSorted&&(e.forEach(function(e){n.push(e.getComponent())}),t.table.options.dataSorted.call(t.table,t.getSort(),n))},J.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))})},J.prototype.setColumnHeader=function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)},J.prototype._sortItems=function(e,t){var o=this,i=t.length-1;e.sort(function(e,n){for(var s,a=i;a>=0;a--){var r=t[a];if(0!==(s=o._sortRow(e,n,r.column,r.dir,r.params)))break}return s})},J.prototype._sortRow=function(e,t,o,i,n){var s,a,r="asc"==i?e:t,l="asc"==i?t:e;return e=o.getFieldValue(r.getData()),t=o.getFieldValue(l.getData()),e=void 0!==e?e:"",t=void 0!==t?t:"",s=r.getComponent(),a=l.getComponent(),o.modules.sort.sorter.call(this,e,t,s,a,o.getComponent(),i,n)},J.prototype.sorters={number:function(e,t,o,i,n,s,a){var r=a.alignEmptyValues,l=a.decimalSeparator||".",c=a.thousandSeparator||",",u=0;if(e=parseFloat(String(e).split(c).join("").split(l).join(".")),t=parseFloat(String(t).split(c).join("").split(l).join(".")),isNaN(e))u=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;u=1}return("top"===r&&"desc"===s||"bottom"===r&&"asc"===s)&&(u*=-1),u},string:function(e,t,o,i,n,s,a){var r,l=a.alignEmptyValues,c=0;if(e){if(t){switch(_typeof(a.locale)){case"boolean":a.locale&&(r=this.table.modules.localize.getLocale());break;case"string":r=a.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),r)}c=1}else c=t?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c},date:function(e,t,o,i,n,s,a){return a.format||(a.format="DD/MM/YYYY"),this.sorters.datetime.call(this,e,t,o,i,n,s,a)},time:function(e,t,o,i,n,s,a){return a.format||(a.format="HH:mm"),this.sorters.datetime.call(this,e,t,o,i,n,s,a)},datetime:function(e,t,o,i,n,s,a){var r=a.format||"DD/MM/YYYY HH:mm:ss",l=a.alignEmptyValues,c=0;if("undefined"!=typeof moment){if(e=moment(e,r),t=moment(t,r),e.isValid()){if(t.isValid())return e-t;c=1}else c=t.isValid()?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(e,t,o,i,n,s,a){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,o,i,n,s,a){function r(e){switch(u){case"length":return e.length;case"sum":return e.reduce(function(e,t){return e+t});case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce(function(e,t){return e+t})/e.length}}
-var l=0,c=0,u=a.type||"length",d=a.alignEmptyValues,h=0;if(Array.isArray(e)){if(Array.isArray(t))return l=e?r(e):0,c=t?r(t):0,l-c;d=1}else d=Array.isArray(t)?-1:0;return("top"===d&&"desc"===s||"bottom"===d&&"asc"===s)&&(h*=-1),h},exists:function(e,t,o,i,n,s,a){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,o,i,n,s,a){var r,l,c,u,d,h=0,p=/(\d+)|(\D+)/g,m=/\d/,f=a.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if(r=String(e).toLowerCase(),l=String(t).toLowerCase(),r===l)return 0;if(!m.test(r)||!m.test(l))return r>l?1:-1;for(r=r.match(p),l=l.match(p),d=r.length>l.length?l.length:r.length;h<d;)if(c=r[h],u=l[h++],c!==u)return isFinite(c)&&isFinite(u)?("0"===c.charAt(0)&&(c="."+c),"0"===u.charAt(0)&&(u="."+u),c-u):c>u?1:-1;return r.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===f&&"desc"===s||"bottom"===f&&"asc"===s)&&(g*=-1),g}},h.prototype.registerModule("sort",J);var $=function(e){this.table=e,this.invalidCells=[]};return $.prototype.initializeColumn=function(e){var t,o=this,i=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach(function(e){(t=o._extractValidator(e))&&i.push(t)}):(t=this._extractValidator(e.definition.validator))&&i.push(t),e.modules.validate=!!i.length&&i)},$.prototype._extractValidator=function(e){var t,o,i;switch(void 0===e?"undefined":_typeof(e)){case"string":return i=e.indexOf(":"),i>-1?(t=e.substring(0,i),o=e.substring(i+1)):t=e,this._buildValidator(t,o);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}},$.prototype._buildValidator=function(e,t){var o="function"==typeof e?e:this.validators[e];return o?{type:"function"==typeof e?"function":e,func:o,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)},$.prototype.validate=function(e,t,o){var i=this,n=[],s=this.invalidCells.indexOf(t);return e&&e.forEach(function(e){e.func.call(i,t.getComponent(),o,e.params)||n.push({type:e.type,parameters:e.params})}),n=!n.length||n,t.modules.validate||(t.modules.validate={}),!0===n?(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),s>-1&&this.invalidCells.splice(s,1)):(t.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==s&&this.invalidCells.push(t)),n},$.prototype.getInvalidCells=function(){var e=[];return this.invalidCells.forEach(function(t){e.push(t.getComponent())}),e},$.prototype.clearValidation=function(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.getElement().classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))},$.prototype.validators={integer:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,o){return""===t||null===t||void 0===t||!isNaN(t)},string:function(e,t,o){return""===t||null===t||void 0===t||isNaN(t)},max:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)<=o},min:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)>=o},starts:function(e,t,o){return""===t||null===t||void 0===t||String(t).toLowerCase().startsWith(String(o).toLowerCase())},ends:function(e,t,o){return""===t||null===t||void 0===t||String(t).toLowerCase().endsWith(String(o).toLowerCase())},minLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length>=o},maxLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length<=o},in:function(e,t,o){return""===t||null===t||void 0===t||("string"==typeof o&&(o=o.split("|")),""===t||o.indexOf(t)>-1)},regex:function(e,t,o){return""===t||null===t||void 0===t||new RegExp(o).test(t)},unique:function(e,t,o){if(""===t||null===t||void 0===t)return!0;var i=!0,n=e.getData(),s=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(e){var o=e.getData();o!==n&&t==s.getFieldValue(o)&&(i=!1)}),i},required:function(e,t,o){return""!==t&&null!==t&&void 0!==t}},h.prototype.registerModule("validate",$),h});
\ No newline at end of file
diff --git a/website/js/vendor/tabulator/js/tabulator_core.min.js b/website/js/vendor/tabulator/js/tabulator_core.min.js
deleted file mode 100644 (file)
index 87986ad..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Tabulator v4.8.3 (c) Oliver Folkerd */
-"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return l;n++}}}),String.prototype.includes||(String.prototype.includes=function(t,e){if(t instanceof RegExp)throw TypeError("first argument must not be a RegExp");return void 0===e&&(e=0),-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),i=o.length>>>0;if(0===i)return!1;for(var n=0|e,l=Math.max(n>=0?n:i-Math.abs(n),0);l<i;){if(function(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}(o[l],t))return!0;l++}return!1}}),"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(t,e){if(null===t||void 0===t)throw new TypeError("Cannot convert undefined or null to object");for(var o=Object(t),i=1;i<arguments.length;i++){var n=arguments[i];if(null!==n&&void 0!==n)for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(o[l]=n[l])}return o},writable:!0,configurable:!0});var ColumnManager=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};ColumnManager.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},ColumnManager.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},ColumnManager.prototype.initialize=function(){},ColumnManager.prototype.setRowManager=function(t){this.rowManager=t},ColumnManager.prototype.getElement=function(){return this.element},ColumnManager.prototype.getHeadersElement=function(){return this.headersElement},ColumnManager.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},ColumnManager.prototype.generateColumnsFromRowData=function(t){var e,o,i=[],n=this.table.options.autoColumnsDefinitions;if(t&&t.length){e=t[0];for(var l in e){var s={field:l,title:l},a=e[l];switch(void 0===a?"undefined":_typeof(a)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(a)?"array":"string";break;default:o=isNaN(a)||""===a?a.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}if(n)switch(void 0===n?"undefined":_typeof(n)){case"function":this.table.options.columns=n.call(this.table,i);break;case"object":Array.isArray(n)?i.forEach(function(t){var e=n.find(function(e){return e.field===t.field});e&&Object.assign(t,e)}):i.forEach(function(t){n[t.field]&&Object.assign(t,n[t.field])}),this.table.options.columns=i}else this.table.options.columns=i;this.setColumns(this.table.options.columns)}},ColumnManager.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),this.table.options.virtualDomHoz&&this.table.vdomHoz.reinitialize(!1,!0),o.redraw(!0)},ColumnManager.prototype._addColumn=function(t,e,o){var i=new Column(t,this),n=i.getElement(),l=o?this.findColumnIndex(o):o;if(o&&l>-1){var s=this.columns.indexOf(o.getTopColumn()),a=o.getElement();e?(this.columns.splice(s,0,i),a.parentNode.insertBefore(n,a)):(this.columns.splice(s+1,0,i),a.parentNode.insertBefore(n,a.nextSibling))}else e?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement())),i.columnRendered();return i},ColumnManager.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},ColumnManager.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},ColumnManager.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},ColumnManager.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnHeaderVertAlign,e)}),t.rowManager.adjustTableSize()},ColumnManager.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof Column)return t;if(t instanceof ColumnComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},ColumnManager.prototype.getColumnByField=function(t){return this.columnsByField[t]},ColumnManager.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},ColumnManager.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},ColumnManager.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},ColumnManager.prototype.getColumns=function(){return this.columns},ColumnManager.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},ColumnManager.prototype.getRealColumns=function(){return this.columnsByIndex},ColumnManager.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},ColumnManager.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},ColumnManager.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},ColumnManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},ColumnManager.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},ColumnManager.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.moveColumnActual=function(t,e,o){t.parent.isGroup?this._moveColumnInArray(t.parent.columns,t,e,o):this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.virtualDomHoz&&this.table.vdomHoz.reinitialize(!0),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},ColumnManager.prototype._moveColumnInArray=function(t,e,o,i,n){var l,s=this,a=t.indexOf(e),r=[];a>-1&&(t.splice(a,1),l=t.indexOf(o),l>-1?i&&(l+=1):l=a,t.splice(l,0,e),n&&(this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.rowManager.rows.forEach(function(t){r=r.concat(s.table.modules.dataTree.getTreeChildren(t,!1,!0))}),r=r.concat(this.table.rowManager.rows),r.forEach(function(t){if(t.cells.length){var e=t.cells.splice(a,1)[0];t.cells.splice(l,0,e)}})))},ColumnManager.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,l=0,s=0,a=t.getElement();return new Promise(function(r,u){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":s=-i.element.clientWidth/2;break;case"right":s=a.clientWidth-i.headersElement.clientWidth}if(!o&&(l=a.offsetLeft)>0&&l+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+s,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),r()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},ColumnManager.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},ColumnManager.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,l,s;i.visible&&(n=i.definition.width||0,l=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),s="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=s>l?s:l)}),o},ColumnManager.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i._addColumn(t,e,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&s.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),i.table.options.virtualDomHoz&&i.table.vdomHoz.reinitialize(),n(s)})},ColumnManager.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this._verticalAlignHeaders(),this.redraw()},ColumnManager.prototype.redraw=function(t){t&&(Tabulator.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var ColumnComponent=function(t){this._column=t,this.type="ColumnComponent"};ColumnComponent.prototype.getElement=function(){return this._column.getElement()},ColumnComponent.prototype.getDefinition=function(){return this._column.getDefinition()},ColumnComponent.prototype.getField=function(){return this._column.getField()},ColumnComponent.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._column.visible},ColumnComponent.prototype.isVisible=function(){return this._column.visible},ColumnComponent.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},ColumnComponent.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},ColumnComponent.prototype.toggle=function(){this._column.visible?this.hide():this.show()},ColumnComponent.prototype.delete=function(){return this._column.delete()},ColumnComponent.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getParentColumn=function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()},ColumnComponent.prototype._getSelf=function(){return this._column},ColumnComponent.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},ColumnComponent.prototype.getTable=function(){return this._column.table},ColumnComponent.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},ColumnComponent.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},ColumnComponent.prototype.getHeaderFilterValue=function(){if(this._column.table.modExists("filter",!0))return this._column.table.modules.filter.getHeaderFilterValue(this._column)},ColumnComponent.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},ColumnComponent.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},ColumnComponent.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.updateDefinition=function(t){return this._column.updateDefinition(t)},ColumnComponent.prototype.getWidth=function(){return this._column.getWidth()},ColumnComponent.prototype.setWidth=function(t){var e;return e=!0===t?this._column.reinitializeWidth(!0):this._column.setWidth(t),this._column.table.options.virtualDomHoz&&this._column.table.vdomHoz.reinitialize(!0),e},ColumnComponent.prototype.validate=function(){return this._column.validate()};var Column=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleHolderElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};Column.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},Column.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},Column.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},Column.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},Column.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},Column.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},Column.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},Column.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign")),void 0!==this.definition.downloadTitle&&(this.definition.titleDownload=this.definition.downloadTitle,console.warn("downloadTitle definition property is deprecated, you should now use titleDownload"))},Column.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},Column.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.table.modExists("persistence")&&t.table.modules.persistence.config.columns&&t.table.modules.persistence.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},Column.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},Column.prototype._buildColumnHeader=function(){var t=this,e=this.definition,o=this.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(this,this.titleHolderElement),(e.headerContextMenu||e.headerClickMenu||e.headerMenu)&&o.modExists("menu")&&o.modules.menu.initializeColumnHeader(this),o.modExists("format")&&o.modules.format.initializeColumn(this),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(this),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(this),o.modExists("mutator")&&o.modules.mutator.initializeColumn(this),o.modExists("accessor")&&o.modules.accessor.initializeColumn(this),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(this),void 0!==e.visible&&(e.visible?this.show(!0):this.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),this.setMinWidth(void 0===e.minWidth?this.table.options.columnMinWidth:parseInt(e.minWidth)),this.reinitializeWidth(),this.tooltip=this.definition.tooltip||!1===this.definition.tooltip?this.definition.tooltip:this.table.options.tooltips,this.hozAlign=void 0===this.definition.hozAlign?this.table.options.cellHozAlign:this.definition.hozAlign,this.vertAlign=void 0===this.definition.vertAlign?this.table.options.cellVertAlign:this.definition.vertAlign,this.titleElement.style.textAlign=this.definition.headerHozAlign||this.table.options.headerHozAlign},Column.prototype._buildColumnHeaderContent=function(){var t=(this.definition,this.table,document.createElement("div"));return t.classList.add("tabulator-col-content"),this.titleHolderElement=document.createElement("div"),this.titleHolderElement.classList.add("tabulator-col-title-holder"),t.appendChild(this.titleHolderElement),this.titleElement=this._buildColumnHeaderTitle(),this.titleHolderElement.appendChild(this.titleElement),t},Column.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},Column.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,l,s,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),s=function(t){a.titleFormatterRendered=t},l={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,l,n,s),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(t.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},Column.prototype._buildGroupHeader=function(){var t=this;if(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass){this.definition.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}(this.definition.headerContextMenu||this.definition.headerMenu)&&this.table.modExists("menu")&&this.table.modules.menu.initializeColumnHeader(this),this.element.appendChild(this.groupElement)},Column.prototype._getFlatData=function(t){return t[this.field]},Column.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,l=0;l<n&&(o=o[i[l]],e=o,o);l++);return e},Column.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},Column.prototype._setNestedData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,l=0;l<n;l++)if(l==n-1)o[i[l]]=e;else{if(!o[i[l]]){if(void 0===e)break;o[i[l]]={}}o=o[i[l]]}},Column.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},Column.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},Column.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},Column.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},Column.prototype.getElement=function(){return this.element},Column.prototype.getGroupElement=function(){return this.groupElement},Column.prototype.getField=function(){return this.field},Column.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},Column.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},Column.prototype.getColumns=function(){return this.columns},Column.prototype.getCells=function(){return this.cells},Column.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},Column.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},Column.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},Column.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},Column.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){
-t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},Column.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},Column.prototype.getWidth=function(){var t=0;return this.isGroup?this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}):t=this.width,t},Column.prototype.getHeight=function(){return this.element.offsetHeight},Column.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},Column.prototype.delete=function(){var t=this;return new Promise(function(e,o){t.isGroup&&t.columns.forEach(function(t){t.delete()}),t.table.modExists("edit")&&t.table.modules.edit.currentCell.column===t&&t.table.modules.edit.cancelEdit();for(var i=t.cells.length,n=0;n<i;n++)t.cells[0].delete();t.element.parentNode&&t.element.parentNode.removeChild(t.element),t.element=!1,t.contentElement=!1,t.titleElement=!1,t.groupElement=!1,t.table.columnManager.deregisterColumn(t),t.table.options.virtualDomHoz&&t.table.vdomHoz.reinitialize(!0),e()})},Column.prototype.columnRendered=function(){this.titleFormatterRendered&&this.titleFormatterRendered()},Column.prototype.validate=function(){var t=[];return this.cells.forEach(function(e){e.validate()||t.push(e.getComponent())}),!t.length||t},Column.prototype.generateCell=function(t){var e=this,o=new Cell(e,t);return this.cells.push(o),o},Column.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},Column.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},Column.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},Column.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},Column.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},Column.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},Column.prototype.updateDefinition=function(t){var e=this;return new Promise(function(o,i){var n;e.isGroup?(console.warn("Column Update Error - The updateDefinition function is only available on columns, not column groups"),i("Column Update Error - The updateDefinition function is only available on columns, not column groups")):(n=Object.assign({},e.getDefinition()),n=Object.assign(n,t),e.table.columnManager.addColumn(n,!1,e).then(function(t){n.field==e.field&&(e.field=!1),e.delete().then(function(){o(t.getComponent())}).catch(function(t){i(t)})}).catch(function(t){i(t)}))})},Column.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Column.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","headerHozAlign","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","clickMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams","titlePrint","titleClipboard","titleHtmlOutput","titleDownload"],Column.prototype.getComponent=function(){return this.component||(this.component=new ColumnComponent(this)),this.component};var RowManager=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};RowManager.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},RowManager.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},RowManager.prototype.getElement=function(){return this.element},RowManager.prototype.getTableElement=function(){return this.tableElement},RowManager.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},RowManager.prototype.setColumnManager=function(t){this.columnManager=t},RowManager.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e),t.table.options.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e),t.table.options.scrollVertical(e)):t.scrollTop=e})},RowManager.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof Row)return t;if(t instanceof RowComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},RowManager.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},RowManager.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},RowManager.prototype.scrollToRow=function(t,e,o){var i,n=this,l=this.getDisplayRows().indexOf(t),s=t.getElement(),a=0;return new Promise(function(t,r){if(l>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=Tabulator.prototype.helpers.elOffset(s).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-l)>Math.abs(n.vDomBottom-l)?"bottom":"top"}if(!o&&Tabulator.prototype.helpers.elVisible(s)&&(a=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-s.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(l,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(s.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-s.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-s.offsetTop)+s.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+s.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),r("Scroll Error - Row not visible")})},RowManager.prototype.setData=function(t,e,o){var i=this,n=this;return new Promise(function(l,s){e&&i.getDisplayRows().length?n.table.options.pagination?n._setDataActual(t,!0):i.reRenderInPosition(function(){n._setDataActual(t)}):(i.table.options.autoColumns&&o&&i.table.columnManager.generateColumnsFromRowData(t),i.resetScroll(),i._setDataActual(t)),l()})},RowManager.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new Row(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.refreshActiveData(!1,!1,e),o.table.options.dataLoaded.call(this.table,t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},RowManager.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.adjustTableSize()},RowManager.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataChanged&&this.table.options.dataChanged.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},RowManager.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},RowManager.prototype.addRows=function(t,e,o){var i=this,n=this,l=0,s=[];return new Promise(function(a,r){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),l=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var l=n.addRow(t,e,o,!0);s.push(l)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.regenerateRowNumbers(),a(s)})},RowManager.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},RowManager.prototype.addRowActual=function(t,e,o,i){var n,l,s=t instanceof Row?t:new Row(t||{},this),a=this.findAddRowPos(e),r=-1;if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(l=this.getDisplayRows(),a?l.length?o=l[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],a=!1):l.length&&(o=l[l.length-1],a=!(l.length<this.table.modules.page.getPageSize()))),void 0!==o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(s);var u=s.getGroup().rows;u.length>1&&(!o||o&&-1==u.indexOf(o)?a?u[0]!==s&&(o=u[0],this._moveRowInArray(s.getGroup().rows,s,o,!a)):u[u.length-1]!==s&&(o=u[u.length-1],this._moveRowInArray(s.getGroup().rows,s,o,!a)):this._moveRowInArray(s.getGroup().rows,s,o,!a))}return o&&(r=this.rows.indexOf(o)),o&&r>-1?(n=this.activeRows.indexOf(o),this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(a?e:e+1,0,s)}),n>-1&&this.activeRows.splice(a?n:n+1,0,s),this.rows.splice(a?r:r+1,0,s)):a?(this.displayRowIterator(function(t){t.unshift(s)}),this.activeRows.unshift(s),this.rows.unshift(s)):(this.displayRowIterator(function(t){t.push(s)}),this.activeRows.push(s),this.rows.push(s)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,s.getComponent()),this.table.options.dataChanged&&this.table.options.dataChanged.call(this.table,this.getData()),i||this.reRenderInPosition(),s},RowManager.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{posFrom:this.getRowPosition(t),posTo:this.getRowPosition(e),to:e,after:o}),this.moveRowActual(t,e,o),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,t.getComponent())},RowManager.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){!o&&e instanceof Group&&(e=this.table.rowManager.prevDisplayRow(t)||e);var n=e.getGroup(),l=t.getGroup();n===l?this._moveRowInArray(n.rows,t,e,o):(l&&l.removeRow(t),n.insertRow(t,e,o))}},RowManager.prototype._moveRowInArray=function(t,e,o,i){var n,l,s,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),l=t.indexOf(o),l>-1?i?t.splice(l+1,0,e):t.splice(l,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){s=n<l?n:l,a=l>n?l:n+1;for(var r=s;r<=a;r++)t[r]&&this.styleRow(t[r],r)}},RowManager.prototype.clearData=function(){this.setData([])},RowManager.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},RowManager.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},RowManager.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof Row&&"row"==i.type?i:this.nextDisplayRow(i,e)},RowManager.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!e||!i||i instanceof Row&&"row"==i.type?i:this.prevDisplayRow(i,e)},RowManager.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},RowManager.prototype.getData=function(t,e){var o=[];return this.getRows(t).forEach(function(t){"row"==t.type&&o.push(t.getData(e||"data"))}),o},RowManager.prototype.getComponents=function(t){var e=[];return this.getRows(t).forEach(function(t){e.push(t.getComponent())}),e},RowManager.prototype.getDataCount=function(t){return this.getRows(t).length},RowManager.prototype._genRemoteRequest=function(){var t=this,e=this.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=this.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[this.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var l=this.table.modules.filter.getFilters(!0,!0);i[this.table.modules.page.paginationDataSentNames.filters]=l}this.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t._setDataActual(e,!0)}).catch(function(t){})},RowManager.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},RowManager.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},RowManager.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},RowManager.prototype.refreshActiveData=function(t,e,o){var i,n=this,l=this.table,s=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||s.indexOf(t)<s.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:t,skipStage:e,renderInPosition:o}));switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),l.options.selectable&&!l.options.selectablePersistence&&l.modExists("selectRow")&&l.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:l.modExists("filter")?n.setActiveRows(l.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:l.modExists("sort")&&l.modules.sort.sort(this.activeRows),this.regenerateRowNumbers();case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&l.modules.frozenRows.isFrozen()&&(l.modules.frozenRows.getDisplayIndex()||l.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:l.options.groupBy&&l.modExists("groupRows")&&(l.modules.groupRows.getDisplayIndex()||l.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:l.options.dataTree&&l.modExists("dataTree")&&(l.modules.dataTree.getDisplayIndex()||l.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&l.modules.dataTree.setDisplayIndex(i)),l.options.pagination&&l.modExists("page")&&!o&&"local"==l.modules.page.getMode()&&l.modules.page.reset();case"page":e?e=!1:l.options.pagination&&l.modExists("page")&&(l.modules.page.getDisplayIndex()||l.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.page.getDisplayIndex(),"local"==l.modules.page.getMode()&&l.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(l.modules.page.getRows(this.getDisplayRows(i-1)),i))&&l.modules.page.setDisplayIndex(i))}Tabulator.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():("all"===t&&this.table.options.virtualDomHoz&&this.table.vdomHoz.dataChange(),n.renderTable(),l.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),l.modExists("columnCalcs")&&l.modules.columnCalcs.recalc(this.activeRows)},RowManager.prototype.regenerateRowNumbers=function(){var t=this;this.rowNumColumn&&this.activeRows.forEach(function(e){var o=e.getCell(t.rowNumColumn);o&&o._generateContents()})},RowManager.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},RowManager.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},RowManager.prototype.getNextDisplayIndex=function(){return this.displayRows.length},RowManager.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},RowManager.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},RowManager.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,l=0,s=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(s[a])if(i){if(!(o-s[a].getElement().offsetTop>=0))break;l=a}else if(e-s[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-s[a].getElement().offsetTop>=0))break;l=a}}else n=this.vDomTop,l=this.vDomBottom;return s.slice(n,l+1)},RowManager.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},RowManager.prototype.getRows=function(t){var e;switch(t){case"active":e=this.activeRows;break;case"display":e=this.table.rowManager.getDisplayRows();break;case"visible":e=this.getVisibleRows(!0);break;case"selected":e=this.table.modules.selectRow.selectedRows;break;default:e=this.rows}return e},RowManager.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode())if(this.redrawBlock)t?t():this.redrawBlockRederInPosition=!0;else{for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,l=this.getDisplayRows(),s=this.vDomTop;s<=this.vDomBottom;s++)if(l[s]){var a=e-l[s].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=s}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},RowManager.prototype.setRenderMode=function(){this.table.options.virtualDom?(this.renderMode="virtual",this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):this.renderMode="classic"},RowManager.prototype.getRenderMode=function(){return this.renderMode},RowManager.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px"),this.table.options.renderComplete.call(this.table)},RowManager.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},RowManager.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},RowManager.prototype.renderEmptyScroll=function(){this.table.options.placeholder?this.tableElement.style.display="none":this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px"},RowManager.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.display="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},RowManager.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},RowManager.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,l=i.element,s=0,a=0,r=0,u=0,h=!0,c=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var d=(i.displayRowsCount-t+1)*i.vDomRowHeight;d<i.height&&(t-=Math.ceil((i.height-d)/i.vDomRowHeight))<0&&(t=0),s=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=s}else i._clearVirtualDom();if(i.displayRowsCount&&Tabulator.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||u<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var p=i.vDomBottom+1,m=c[p],f=0;i.styleRow(m,p),n.appendChild(m.getElement()),m.initialize(),m.heightInitialized||m.normalizeHeight(!0),f=m.getHeight(),u<s?r+=f:a+=f,f>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*f),"group"!==m.type&&(h=!1),i.vDomBottom++,u++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-r,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-r,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+r)/u),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=r+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+r+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,l.scrollTop=this.scrollTop,n.style.minWidth=h?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},RowManager.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(-o):this.vDomScrollPosBottom=this.scrollTop)):(e>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(e):this.vDomScrollPosTop=this.scrollTop),o>=0&&this._addBottomRow(o))},RowManager.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.insertBefore(l.getElement(),o.firstChild),l.initialized&&l.heightInitialized||(this.vDomTopNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomTopPad-=s,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=s,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},RowManager.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},RowManager.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.appendChild(l.getElement()),l.initialized&&l.heightInitialized||(this.vDomBottomNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomBottomPad-=s,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=s,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},RowManager.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)
-}},RowManager.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},RowManager.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},RowManager.prototype.adjustTableSize=function(){var t,e=this.element.clientHeight;if("virtual"===this.renderMode){var o=Math.floor(this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0));this.fixedHeight?(this.element.style.minHeight="calc(100% - "+o+"px)",this.element.style.height="calc(100% - "+o+"px)",this.element.style.maxHeight="calc(100% - "+o+"px)"):(this.element.style.height="",this.element.style.height=Math.floor(this.table.element.clientHeight)-o+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||Math.floor(e)==Math.floor(this.element.clientHeight)||((t=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!t)&&this.redraw()}},RowManager.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize(!0)})},RowManager.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},RowManager.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},RowManager.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},RowManager.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var VDomHoz=function(t){this.table=t,this.element=this.table.rowManager.tableElement,this.holderEl=this.table.rowManager.element,this.leftCol=0,this.rightCol=0,this.scrollLeft=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0,this.fitDataColAvg=0,this.window=200,this.initialized=!1,this.columns=[],this.compatabilityCheck()&&this.initialize()};VDomHoz.prototype.compatabilityCheck=function(){var t=this.table.options,e=!0;return"fitDataTable"==t.layout&&(console.warn("Horizontal Vitrual DOM is not compatible with fitDataTable layout mode"),e=!1),t.responsiveLayout&&(console.warn("Horizontal Vitrual DOM is not compatible with responsive columns"),e=!1),this.table.rtl&&(console.warn("Horizontal Vitrual DOM is not currently compatible with RTL text direction"),e=!1),t.columns&&t.columns.find(function(t){return t.frozen})&&(console.warn("Horizontal Vitrual DOM is not compatible with frozen columns"),e=!1),e||(t.virtualDomHoz=!1),e},VDomHoz.prototype.initialize=function(){var t=this;this.holderEl.addEventListener("scroll",function(){var e=t.holderEl.scrollLeft;t.scrollLeft!=e&&(t.scrollLeft=e,t.scroll(e-(t.vDomScrollPosLeft+t.window)))})},VDomHoz.prototype.deinitialize=function(){this.initialized=!1},VDomHoz.prototype.clear=function(){this.columns=[],this.leftCol=-1,this.rightCol=0,this.vDomScrollPosLeft=0,this.vDomScrollPosRight=0,this.vDomPadLeft=0,this.vDomPadRight=0},VDomHoz.prototype.dataChange=function(){var t,e,o,i=!1,n=0,l=0;if("fitData"===this.table.options.layout){if(this.table.columnManager.columnsByIndex.forEach(function(t){!t.definition.width&&t.visible&&(i=!0)}),i&&i&&this.table.rowManager.getDisplayRows().length&&(this.vDomScrollPosRight=this.scrollLeft+this.holderEl.clientWidth+this.window,this.table.options.groupBy?(t=this.table.modules.groupRows.getGroups(!1)[0],e=t.getRows(!1)[0]):e=this.table.rowManager.getDisplayRows()[0],e)){o=e.getElement(),e.generateCells(),this.element.appendChild(o);for(var l=0;l<e.cells.length;l++){var s=e.cells[l];if(o.appendChild(s.getElement()),s.column.reinitializeWidth(),(n+=s.column.getWidth())>this.vDomScrollPosRight)break}for(o.parentNode.removeChild(o),this.fitDataColAvg=Math.floor(n/(l+1)),l;l<this.table.columnManager.columnsByIndex.length;l++)this.table.columnManager.columnsByIndex[l].setWidth(this.fitDataColAvg);this.reinitialize(!1,!0)}}else"fitColumns"===this.table.options.layout&&(this.table.modules.layout.layout(),this.table.vdomHoz.reinitialize(!1,!0))},VDomHoz.prototype.fitDataLayoutOverride=function(){for(var t=this.leftCol;t<=this.rightCol;t++)this.columns[t].reinitializeWidth()},VDomHoz.prototype.reinitialize=function(t,e){var o=this,i={cols:this.columns,leftCol:this.leftCol,rightCol:this.rightCol};if(!t||this.initialized){this.clear(),this.scrollLeft=this.holderEl.scrollLeft,this.vDomScrollPosLeft=this.scrollLeft-this.window,this.vDomScrollPosRight=this.scrollLeft+this.holderEl.clientWidth+this.window;var n=0;this.table.columnManager.columnsByIndex.forEach(function(t){var e={};if(t.visible){var i=t.getWidth();e.leftPos=n,e.rightPos=n+i,n+i>o.vDomScrollPosLeft&&n<o.vDomScrollPosRight?(-1==o.leftCol&&(o.leftCol=o.columns.length,o.vDomPadLeft=n),o.rightCol=o.columns.length):-1!==o.leftCol&&(o.vDomPadRight+=i),o.columns.push(t),t.modules.vdomHoz=e,n+=i}}),this.element.style.paddingLeft=this.vDomPadLeft+"px",this.element.style.paddingRight=this.vDomPadRight+"px",this.initialized=!0,e||t&&!this.reinitChanged(i)||this.renitializeRows(),this.holderEl.scrollLeft=this.scrollLeft}},VDomHoz.prototype.reinitChanged=function(t){var e=this,o=!0;return t.cols.length!==this.columns.length||t.leftCol!==this.leftCol||t.rightCol!==this.rightCol||(t.cols.forEach(function(t,i){t!==e.columns[i]&&(o=!1)}),!o)},VDomHoz.prototype.renitializeRows=function(){var t=this;this.table.rowManager.getVisibleRows().forEach(function(e){t.reinitializeRow(e,!0)})},VDomHoz.prototype.scroll=function(t){this.vDomScrollPosLeft+=t,this.vDomScrollPosRight+=t,t>.8*this.holderEl.clientWidth?this.reinitialize():t>0?(this.addColRight(),this.removeColLeft()):(this.addColLeft(),this.removeColRight())},VDomHoz.prototype.colPositionAdjust=function(t,e,o){for(var i=t;i<e;i++){var n=this.columns[i];n.modules.vdomHoz.leftPos-=o,n.modules.vdomHoz.rightPos-=o}},VDomHoz.prototype.addColRight=function(){var t,e,o,i=this.columns[this.rightCol+1];i&&i.modules.vdomHoz.leftPos<=this.vDomScrollPosRight&&(t=this.table.rowManager.getVisibleRows(),t.forEach(function(t){if("group"!==t.type){var e=t.getCell(i);t.getElement().appendChild(e.getElement()),e.cellRendered()}}),this.fitDataColAvg&&(e=i.getWidth())===this.fitDataColAvg&&(i.reinitializeWidth(),(o=e-i.getWidth())&&(i.modules.vdomHoz.rightPos-=o,this.colPositionAdjust(this.rightCol+1,this.columns.length,o))),this.rightCol++,this.rightCol>=this.columns.length-1?this.vDomPadRight=0:this.vDomPadRight-=i.getWidth(),this.element.style.paddingRight=this.vDomPadRight+"px",this.addColRight())},VDomHoz.prototype.addColLeft=function(){var t=this.columns[this.leftCol-1];if(t&&t.modules.vdomHoz.rightPos>=this.vDomScrollPosLeft){this.table.rowManager.getVisibleRows().forEach(function(e){if("group"!==e.type){var o=e.getCell(t);e.getElement().prepend(o.getElement()),o.cellRendered()}}),this.leftCol?this.vDomPadLeft-=t.getWidth():this.vDomPadLeft=0,this.element.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol--,this.addColLeft()}},VDomHoz.prototype.removeColRight=function(t){var e,t=this.columns[this.rightCol];t&&t.modules.vdomHoz.leftPos>this.vDomScrollPosRight&&(e=this.table.rowManager.getVisibleRows(),t.modules.vdomHoz.visible=!1,e.forEach(function(e){if("group"!==e.type){var o=e.getCell(t);e.getElement().removeChild(o.getElement())}}),this.vDomPadRight+=t.getWidth(),this.element.style.paddingRight=this.vDomPadRight+"px",this.rightCol--,this.removeColRight())},VDomHoz.prototype.removeColLeft=function(){var t,e=this.columns[this.leftCol];e&&e.modules.vdomHoz.rightPos<this.vDomScrollPosLeft&&(t=this.table.rowManager.getVisibleRows(),t.forEach(function(t){if("group"!==t.type){var o=t.getCell(e);t.getElement().removeChild(o.getElement())}}),this.vDomPadLeft+=e.getWidth(),this.element.style.paddingLeft=this.vDomPadLeft+"px",this.leftCol++,this.removeColLeft())},VDomHoz.prototype.initializeRow=function(t){if("group"!==t.type){t.modules.vdomHoz={leftCol:this.leftCol,rightCol:this.rightCol};for(var e=this.leftCol;e<=this.rightCol;e++){var o=this.columns[e];if(o.visible){var i=t.getCell(o);t.element.appendChild(i.getElement()),i.cellRendered()}}}},VDomHoz.prototype.reinitializeRow=function(t,e){if("group"!==t.type&&(e||!t.modules.vdomHoz||t.modules.vdomHoz.leftCol!==this.leftCol||t.modules.vdomHoz.rightCol!==this.rightCol)){for(;t.element.firstChild;)t.element.removeChild(t.element.firstChild);this.initializeRow(t)}};var RowComponent=function(t){this._row=t};RowComponent.prototype.getData=function(t){return this._row.getData(t)},RowComponent.prototype.getElement=function(){return this._row.getElement()},RowComponent.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},RowComponent.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},RowComponent.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},RowComponent.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},RowComponent.prototype.delete=function(){return this._row.delete()},RowComponent.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},RowComponent.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},RowComponent.prototype.move=function(t,e){this._row.moveToRow(t,e)},RowComponent.prototype.update=function(t){return this._row.updateData(t)},RowComponent.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},RowComponent.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},RowComponent.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},RowComponent.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},RowComponent.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},RowComponent.prototype._getSelf=function(){return this._row},RowComponent.prototype.validate=function(){return this._row.validate()},RowComponent.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},RowComponent.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},RowComponent.prototype.isFrozen=function(){if(this._row.table.modExists("frozenRows",!0)){return this._row.table.modules.frozenRows.rows.indexOf(this._row)>-1}return!1},RowComponent.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},RowComponent.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},RowComponent.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},RowComponent.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},RowComponent.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row,!0)},RowComponent.prototype.addTreeChild=function(t,e,o){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.addTreeChildRow(this._row,t,e,o)},RowComponent.prototype.reformat=function(){return this._row.reinitialize()},RowComponent.prototype.getGroup=function(){return this._row.getGroup().getComponent()},RowComponent.prototype.getTable=function(){return this._row.table},RowComponent.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},RowComponent.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var Row=function(t,e){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=e.table,this.parent=e,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.component=null,this.setData(t),this.generateElement()};Row.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},Row.prototype.getElement=function(){return this.element},Row.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),(i.table.options.rowContextMenu||i.table.options.rowClickMenu)&&this.table.modExists("menu")&&i.table.modules.menu.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},Row.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},Row.prototype.initialize=function(t){var e=this;if(!this.initialized||t){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),this.table.options.virtualDomHoz&&this.table.vdomHoz.initialized?this.table.vdomHoz.initializeRow(this):this.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&this.normalizeHeight(),this.table.options.dataTree&&this.table.modExists("dataTree")&&this.table.modules.dataTree.layoutRow(this),"collapse"===this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout")&&this.table.modules.responsiveLayout.layoutRow(this),this.table.options.rowFormatter&&this.table.options.rowFormatter(this.getComponent()),this.table.options.resizableRows&&this.table.modExists("resizeRows")&&this.table.modules.resizeRows.initializeRow(this),this.initialized=!0}else this.table.options.virtualDomHoz&&this.table.vdomHoz.reinitializeRow(this)},Row.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},Row.prototype.reinitialize=function(t){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0),this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.modules.dataTree.getTreeChildren(this,!1,!0).forEach(function(t){t.reinitialize(!0)})},Row.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},Row.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},Row.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},Row.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},Row.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},Row.prototype.getHeight=function(){return this.outerHeight},Row.prototype.getWidth=function(){return this.element.offsetWidth},Row.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Row.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},Row.prototype.updateData=function(t){var e,o=this,i=Tabulator.prototype.helpers.elVisible(this.element),n={};return new Promise(function(l,s){"string"==typeof t&&(t=JSON.parse(t)),o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.block(),o.table.modExists("mutator")?(n=Object.assign(n,o.data),n=Object.assign(n,t),e=o.table.modules.mutator.transformRow(n,"data",t)):e=t;for(var a in e)o.data[a]=e[a];o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.unblock();for(var a in t){o.table.columnManager.getColumnsByFieldRoot(a).forEach(function(t){var n=o.getCell(t.getField());if(n){var l=t.getFieldValue(e);n.getValue()!=l&&(n.setValueProcessData(l),i&&n.cellRendered())}})}o.table.options.groupUpdateOnCellEdit&&o.table.options.groupBy&&o.table.modExists("groupRows")&&o.table.modules.groupRows.reassignRowToGroup(o.row),i?(o.normalizeHeight(!0),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(o.initialized=!1,o.height=0,o.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.redrawNeeded(t)&&(o.table.modules.dataTree.initializeRow(o),i&&(o.table.modules.dataTree.layoutRow(o),o.table.rowManager.refreshActiveData("tree",!1,!0))),o.table.options.rowUpdated.call(o.table,o.getComponent()),o.table.options.dataChanged&&o.table.options.dataChanged.call(o.table,o.table.rowManager.getData()),l()})},Row.prototype.getData=function(t){return t&&this.table.modExists("accessor")?this.table.modules.accessor.transformRow(this,t):this.data},Row.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},Row.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},Row.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},Row.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},Row.prototype.getCells=function(){return this.cells},Row.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},Row.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},Row.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},Row.prototype.validate=function(){var t=[];return this.cells.forEach(function(e){e.validate()||t.push(e.getComponent())}),!t.length||t},Row.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},Row.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.detatchModules(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.element=!1,this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.modules.dataTree.rowDelete(this),this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},Row.prototype.detatchModules=function(){this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.modExists("edit")&&this.table.modules.edit.currentCell.row===this&&this.table.modules.edit.cancelEdit(),this.table.modExists("frozenRows")&&this.table.modules.frozenRows.detachRow(this)},Row.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},Row.prototype.wipe=function(){for(this.detatchModules(),this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.getGroup=function(){return this.modules.group||!1},Row.prototype.getComponent=function(){return this.component||(this.component=new RowComponent(this)),this.component};var CellComponent=function(t){this._cell=t};CellComponent.prototype.getValue=function(){return this._cell.getValue()},CellComponent.prototype.getOldValue=function(){return this._cell.getOldValue()},CellComponent.prototype.getInitialValue=function(){return this._cell.initialValue},CellComponent.prototype.getElement=function(){return this._cell.getElement()},CellComponent.prototype.getRow=function(){return this._cell.row.getComponent()},CellComponent.prototype.getData=function(){return this._cell.row.getData()},CellComponent.prototype.getField=function(){return this._cell.column.getField()},CellComponent.prototype.getColumn=function(){return this._cell.column.getComponent()},CellComponent.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},CellComponent.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},CellComponent.prototype.restoreInitialValue=function(){this._cell.setValueActual(this._cell.initialValue)},CellComponent.prototype.edit=function(t){return this._cell.edit(t)},CellComponent.prototype.cancelEdit=function(){this._cell.cancelEdit()},CellComponent.prototype.isEdited=function(){return!!this._cell.modules.edit&&this._cell.modules.edit.edited},CellComponent.prototype.clearEdited=function(){self.table.modExists("edit",!0)&&this._cell.table.modules.edit.clearEdited(this._cell)},CellComponent.prototype.isValid=function(){return!this._cell.modules.validate||!this._cell.modules.validate.invalid},CellComponent.prototype.validate=function(){return this._cell.validate()},CellComponent.prototype.clearValidation=function(){this._cell.table.modExists("validate",!0)&&this._cell.table.modules.validate.clearValidation(this._cell)},CellComponent.prototype.nav=function(){return this._cell.nav()},CellComponent.prototype.checkHeight=function(){this._cell.checkHeight()},CellComponent.prototype.getTable=function(){return this._cell.table},CellComponent.prototype._getSelf=function(){return this._cell};var Cell=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.initialValue,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.loaded=!1,this.build()};Cell.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data)),this.initialValue=this.value},Cell.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},Cell.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField(),n={top:"flex-start",bottom:"flex-end",middle:"center"},l={left:"flex-start",right:"flex-end",center:"center"};if(o.style.textAlign=t.column.hozAlign,t.column.vertAlign&&(o.style.display="inline-flex",o.style.alignItems=n[t.column.vertAlign]||"",t.column.hozAlign&&(o.style.justifyContent=l[t.column.hozAlign]||"")),i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},Cell.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){if(!e.table.modExists("edit")||e.table.modules.edit.currentCell!==e){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},Cell.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},Cell.prototype._bindTouchEvents=function(t){var e,o,i,n=this,l=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,l.addEventListener("touchstart",function(t){i=!0},{passive:!0}),l.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,l.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,l.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var l=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,l),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,l)},1e3)},{passive:!0}),l.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},Cell.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}},Cell.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},
-Cell.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},Cell.prototype.getElement=function(){return this.loaded||(this.loaded=!0,this.layoutElement()),this.element},Cell.prototype.getValue=function(){return this.value},Cell.prototype.getOldValue=function(){return this.oldValue},Cell.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.groupUpdateOnCellEdit&&this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.reassignRowToGroup(this.row),this.cellRendered(),this.table.options.cellEdited.call(this.table,o),this.table.options.dataChanged&&this.table.options.dataChanged.call(this.table,this.table.rowManager.getData()))},Cell.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},Cell.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this.loaded&&this.layoutElement()},Cell.prototype.layoutElement=function(){this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&"row"===this.row.type&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),(this.column.definition.contextMenu||this.column.definition.clickMenu)&&this.table.modExists("menu")&&this.table.modules.menu.initializeCell(this),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},Cell.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},Cell.prototype.clearWidth=function(){this.width="",this.element.style.width=""},Cell.prototype.getWidth=function(){return this.width||this.element.offsetWidth},Cell.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},Cell.prototype.checkHeight=function(){this.row.reinitializeHeight()},Cell.prototype.clearHeight=function(){this.element.style.height="",this.height=null},Cell.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},Cell.prototype.getHeight=function(){return this.height||this.element.offsetHeight},Cell.prototype.show=function(){this.element.style.display=this.column.vertAlign?"inline-flex":""},Cell.prototype.hide=function(){this.element.style.display="none"},Cell.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},Cell.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},Cell.prototype.validate=function(){if(this.column.modules.validate&&this.table.modExists("validate",!0)){return!0===this.table.modules.validate.validate(this.column.modules.validate,this,this.getValue())}return!0},Cell.prototype.delete=function(){!this.table.rowManager.redrawBlock&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.modules.validate&&this.modules.validate.invalid&&this.table.modules.validate.clearValidation(this),this.modules.edit&&this.modules.edit.edited&&this.table.modules.edit.clearEdited(this),this.table.options.history&&this.table.modules.history.clearComponentHistory(this),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},Cell.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},Cell.prototype.getIndex=function(){this.row.getCellIndex(this)},Cell.prototype.getComponent=function(){return this.component||(this.component=new CellComponent(this)),this.component};var FooterManager=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};FooterManager.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},FooterManager.prototype._initialize=function(t){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},FooterManager.prototype.getElement=function(){return this.element},FooterManager.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},FooterManager.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},FooterManager.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},FooterManager.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},FooterManager.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},FooterManager.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var Tabulator=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.vdomHoz=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.rtl=!1,this.modules={},this.initializeElement(e)&&(this.initializeOptions(o||{}),this._create()),t.prototype.comms.register(this)};Tabulator.prototype.defaultOptions={height:!1,minHeight:!1,maxHeight:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],cellHozAlign:"",cellVertAlign:"",headerHozAlign:"",data:[],autoColumns:!1,autoColumnsDefinitions:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,headerSortElement:"<div class='tabulator-arrow'></div>",footerElement:!1,index:"id",textDirection:"auto",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopyConfig:!1,clipboardCopyFormatter:!1,clipboardCopyRowRange:"active",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:{},downloadRowRange:"active",dataTree:!1,dataTreeFilter:!0,dataTreeSort:!0,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},dataTreeChildColumnCalcs:!1,dataTreeSelectPropagate:!1,printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printStyled:!0,printVisibleRows:!0,printRowRange:"visible",printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterLiveFilterDelay:300,headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,virtualDomHoz:!1,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupUpdateOnCellEdit:!1,groupHeader:!1,groupHeaderPrint:null,groupHeaderClipboard:null,groupHeaderHtmlOutput:null,groupHeaderDownload:null,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsConnectedElements:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},movableRowsElementDrop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowContextMenu:!1,rowClickMenu:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:!1,dataChanged:!1,ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupContextMenu:!1,groupClickMenu:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationMode:"blocking",validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},Tabulator.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=Object.assign([],this.defaultOptions[e]):"object"===_typeof(this.defaultOptions[e])&&null!==this.defaultOptions[e]?this.options[e]=Object.assign({},this.defaultOptions[e]):this.options[e]=this.defaultOptions[e]},Tabulator.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},Tabulator.prototype.rtlCheck=function(){var t=window.getComputedStyle(this.element);switch(this.options.textDirection){case"auto":if("rtl"!==t.direction)break;case"rtl":this.element.classList.add("tabulator-rtl"),this.rtl=!0;break;case"ltr":this.element.classList.add("tabulator-ltr");default:this.rtl=!1}},Tabulator.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),this.options.dataEdited&&(console.warn("DEPRECATION WARNING - dataEdited option has been deprecated, please use the dataChanged option instead"),this.options.dataChanged=this.options.dataEdited),this.options.downloadDataFormatter&&console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated"),void 0!==this.options.clipboardCopyHeader&&(this.options.columnHeaders=this.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),!0!==this.options.printVisibleRows&&(console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option"),this.options.persistence.printRowRange="active"),!0!==this.options.printCopyStyle&&(console.warn("printCopyStyle option is deprecated, you should now use the printStyled option"),this.options.persistence.printStyled=this.options.printCopyStyle),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},Tabulator.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},Tabulator.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),this.rtlCheck(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new ColumnManager(this),this.rowManager=new RowManager(this),this.footerManager=new FooterManager(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this.options.virtualDomHoz&&(this.vdomHoz=new VDomHoz(this)),this._buildElement(),this._loadInitialData()},Tabulator.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},Tabulator.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",e.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",e.style.maxHeight=i.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),o.localize.initialize(),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var l=document.createElement("div");l.classList.add("tabulator-placeholder");var s=document.createElement("span");s.innerHTML=i.placeholder,l.appendChild(s),i.placeholder=l}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var r=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(r=o.persistence.load("filter"))&&i.initialFilter&&(r=i.initialFilter):i.initialFilter&&(r=i.initialFilter),o.filter.setFilter(r)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},Tabulator.prototype._loadInitialData=function(){var t=this;if(t.options.pagination&&t.modExists("page"))if(t.modules.page.reset(!0,!0),"local"==t.options.pagination){if(t.options.data.length)t.rowManager.setData(t.options.data,!1,!0);else{if((t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax"))return void t.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)});t.rowManager.setData(t.options.data,!1,!0)}t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)}else t.options.ajaxURL?t.modules.page.setPage(t.options.paginationInitialPage).then(function(){}).catch(function(){}):t.rowManager.setData([],!1,!0);else t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data,!1,!0)},Tabulator.prototype.destroy=function(){var t=this.element;for(Tabulator.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},Tabulator.prototype._detectBrowser=function(){var t=navigator.userAgent||navigator.vendor||window.opera;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))},Tabulator.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},Tabulator.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},Tabulator.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var l,s=n.files[0],a=new FileReader;a.readAsText(s),a.onload=function(t){try{l=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e.setData(l).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},Tabulator.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!1,!0)},Tabulator.prototype._setData=function(t,e,o,i,n){var l=this;return"string"!=typeof t?t?l.rowManager.setData(t,i,n):l.modExists("ajax")&&(l.modules.ajax.getUrl||l.options.ajaxURLGenerator)?"remote"==l.options.pagination&&l.modExists("page",!0)?(l.modules.page.reset(!0,!0),l.modules.page.setPage(1)):l.modules.ajax.loadData(i,n):l.rowManager.setData([],i,n):0==t.indexOf("{")||0==t.indexOf("[")?l.rowManager.setData(JSON.parse(t),i,n):l.modExists("ajax",!0)?(e&&l.modules.ajax.setParams(e),o&&l.modules.ajax.setConfig(o),l.modules.ajax.setUrl(t),"remote"==l.options.pagination&&l.modExists("page",!0)?(l.modules.page.reset(!0,!0),l.modules.page.setPage(1)):l.modules.ajax.loadData(i,n)):void 0},Tabulator.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},Tabulator.prototype.getData=function(t){return!0===t&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getData(t)},Tabulator.prototype.getDataCount=function(t){return!0===t&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getDataCount(t)},Tabulator.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},Tabulator.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},Tabulator.prototype.getHtml=function(t,e,o){if(this.modExists("export",!0))return this.modules.export.getHtml(t,e,o)},Tabulator.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},Tabulator.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},Tabulator.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},Tabulator.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,l){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,l){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(l,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||l(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||l(i)})}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){function n(){++s==t.length&&a&&(l.rowManager.reRenderInPosition(),o())}var l=e,s=0,a=0,r=[];Array.isArray(t)||(t=[t]),t.forEach(function(t){var o=e.rowManager.findRow(t,!0);o?r.push(o):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"),n())}),r.sort(function(t,o){return e.rowManager.rows.indexOf(t)>e.rowManager.rows.indexOf(o)?1:-1}),r.forEach(function(t){t.delete().then(function(){a++,n()}).catch(function(t){n(),i(t)})})})},Tabulator.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,l){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},Tabulator.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(l.getComponent())}).catch(function(t){n(t)}):l=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},Tabulator.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){i(l.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},Tabulator.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.rowManager.findRow(t);s?i.rowManager.scrollToRow(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching row found:",t),l("Scroll Error - No matching row found"))})},Tabulator.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},Tabulator.prototype.getRows=function(t){return!0===t&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getComponents(t)},Tabulator.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},Tabulator.prototype.copyToClipboard=function(t){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t)},Tabulator.prototype.setColumns=function(t){this.columnManager.setColumns(t)},Tabulator.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},Tabulator.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},
-Tabulator.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},Tabulator.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},Tabulator.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},Tabulator.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},Tabulator.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.columnManager.findColumn(o);i.columnManager.addColumn(t,e,s).then(function(t){n(t.getComponent())}).catch(function(t){l(t)})})},Tabulator.prototype.deleteColumn=function(t){var e=this;return new Promise(function(o,i){var n=e.columnManager.findColumn(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Column Delete Error - No matching column found:",t),i())})},Tabulator.prototype.updateColumnDefinition=function(t,e){var o=this;return new Promise(function(i,n){var l=o.columnManager.findColumn(t);l?l.updateDefinition(e).then(function(t){i(t)}).catch(function(t){n(t)}):(console.warn("Column Update Error - No matching column found:",t),n())})},Tabulator.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},Tabulator.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.columnManager.findColumn(t);s?i.columnManager.scrollToColumn(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching column found:",t),l("Scroll Error - No matching column found"))})},Tabulator.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},Tabulator.prototype.getLocale=function(){return this.modules.localize.getLocale()},Tabulator.prototype.getLang=function(t){return this.modules.localize.getLang(t)},Tabulator.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},Tabulator.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},Tabulator.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},Tabulator.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},Tabulator.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},Tabulator.prototype.setFilter=function(t,e,o,i){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o,i),this.rowManager.filterRefresh())},Tabulator.prototype.addFilter=function(t,e,o,i){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o,i),this.rowManager.filterRefresh())},Tabulator.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},Tabulator.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},Tabulator.prototype.getHeaderFilterValue=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(e)return this.modules.filter.getHeaderFilterValue(e);console.warn("Column Filter Error - No matching column found:",t)}},Tabulator.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},Tabulator.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},Tabulator.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},Tabulator.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},Tabulator.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&(!0===t&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),t="active"),this.modules.selectRow.selectRows(t))},Tabulator.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},Tabulator.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},Tabulator.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},Tabulator.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},Tabulator.prototype.getInvalidCells=function(){if(this.modExists("validate",!0))return this.modules.validate.getInvalidCells()},Tabulator.prototype.clearCellValidation=function(t){var e=this;this.modExists("validate",!0)&&(t||(t=this.modules.validate.getInvalidCells()),Array.isArray(t)||(t=[t]),t.forEach(function(t){e.modules.validate.clearValidation(t._getSelf())}))},Tabulator.prototype.validate=function(t){var e=[];return this.rowManager.rows.forEach(function(t){var o=t.validate();!0!==o&&(e=e.concat(o))}),!e.length||e},Tabulator.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},Tabulator.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},Tabulator.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},Tabulator.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},Tabulator.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},Tabulator.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},Tabulator.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},Tabulator.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},Tabulator.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},Tabulator.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},Tabulator.prototype.setGroupValues=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupValues=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},Tabulator.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},Tabulator.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},Tabulator.prototype.getEditedCells=function(){if(this.modExists("edit",!0))return this.modules.edit.getEditedCells()},Tabulator.prototype.clearCellEdited=function(t){var e=this;this.modExists("edit",!0)&&(t||(t=this.modules.edit.getEditedCells()),Array.isArray(t)||(t=[t]),t.forEach(function(t){e.modules.edit.clearEdited(t._getSelf())}))},Tabulator.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},Tabulator.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},Tabulator.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},Tabulator.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},Tabulator.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},Tabulator.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},Tabulator.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},Tabulator.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},Tabulator.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},Tabulator.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},Tabulator.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},Tabulator.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},Tabulator.prototype.download=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i)},Tabulator.prototype.downloadToTab=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i,!0)},Tabulator.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},Tabulator.prototype.moduleBindings={},Tabulator.prototype.extendModule=function(t,e,o){if(Tabulator.prototype.moduleBindings[t]){var i=Tabulator.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},Tabulator.prototype.registerModule=function(t,e){Tabulator.prototype.moduleBindings[t]=e},Tabulator.prototype.bindModules=function(){this.modules={};for(var t in Tabulator.prototype.moduleBindings)this.modules[t]=new Tabulator.prototype.moduleBindings[t](this)},Tabulator.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},Tabulator.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Object.assign(Array.isArray(t)?[]:{},t);for(var o in t)null!=t[o]&&"object"===_typeof(t[o])&&(t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]));return e}},Tabulator.prototype.comms={tables:[],register:function(t){Tabulator.prototype.comms.tables.push(t)},deregister:function(t){var e=Tabulator.prototype.comms.tables.indexOf(t);e>-1&&Tabulator.prototype.comms.tables.splice(e,1)},lookupTable:function(t,e){var o,i,n=[];if("string"==typeof t){if(o=document.querySelectorAll(t),o.length)for(var l=0;l<o.length;l++)(i=Tabulator.prototype.comms.matchElement(o[l]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof Tabulator?(i=Tabulator.prototype.comms.matchElement(t))&&n.push(i):Array.isArray(t)?t.forEach(function(t){n=n.concat(Tabulator.prototype.comms.lookupTable(t))}):e||console.warn("Table Connection Error - Invalid Selector",t);return n},matchElement:function(t){return Tabulator.prototype.comms.tables.find(function(e){return t instanceof Tabulator?e===t:e.element===t})}},Tabulator.prototype.findTable=function(t){var e=Tabulator.prototype.comms.lookupTable(t,!0);return!(Array.isArray(e)&&!e.length)&&e};var Layout=function(t){this.table=t,this.mode=null};Layout.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},Layout.prototype.getMode=function(){return this.mode},Layout.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},Layout.prototype.modes={fitData:function(t){this.table.options.virtualDomHoz?this.table.vdomHoz.fitDataLayoutOverride():t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataTable:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(t){var e=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,l=!1;t.forEach(function(t,i){t.widthFixed||t.reinitializeWidth(),(e.table.options.responsiveLayout?t.modules.responsive.visible:t.visible)&&(l=t),t.visible&&(o+=t.getWidth())}),l?(n=i-o+l.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(l.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?l.setWidth(n):l.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,l){function s(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var r=[],u=0,h=0,c=0,d=0,p=0,m=[];return t.forEach(function(t,e){var o=l?a(t):s(t);t.column.minWidth>=o?r.push(t):(m.push(t),p+=l?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),r.length?(r.forEach(function(t){u+=l?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),h=i-u,c=p?Math.floor(h/p):h,d=h-c*p,d+=o(m,h,c,l)):(d=p?i-Math.floor(i/p)*p:i,m.forEach(function(t){t.width=l?a(t):s(t)})),d}var i=this,n=i.table.element.clientWidth,l=0,s=0,a=0,r=0,u=[],h=[],c=0,d=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),l+=n>i?n:i,t.definition.widthShrink&&(h.push({column:t,width:n>i?n:i}),c+=t.definition.widthShrink)):(u.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),s=n-l,r=Math.floor(s/a);var p=o(u,s,r,!1);u.length&&p>0&&(u[u.length-1].width+=+p),u.forEach(function(t){s-=t.width}),d=Math.abs(p)+s,d>0&&c&&(p=o(h,d,Math.floor(d/c),!0)),h.length&&(h[h.length-1].width-=p),u.forEach(function(t){t.column.setWidth(t.width)}),h.forEach(function(t){t.column.setWidth(t.width)})}},Tabulator.prototype.registerModule("layout",Layout);var Localize=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={},this.langList={}};Localize.prototype.initialize=function(){this.langList=Tabulator.prototype.helpers.deepClone(this.langs)},Localize.prototype.setHeaderFilterPlaceholder=function(t){this.langList.default.headerFilters.default=t},Localize.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langList.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},Localize.prototype.installLang=function(t,e){this.langList[t]?this._setLangProp(this.langList[t],e):this.langList[t]=e},Localize.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},Localize.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langList[t]){var i=t.split("-")[0];o.langList[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}o.locale=t,o.lang=Tabulator.prototype.helpers.deepClone(o.langList.default||{}),"default"!=t&&e(o.langList[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},Localize.prototype.getLocale=function(t){return self.locale},Localize.prototype.getLang=function(t){return t?this.langList[t]:this.lang},Localize.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},Localize.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},Localize.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},Localize.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},Localize.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}},Tabulator.prototype.registerModule("localize",Localize);var Comms=function(t){this.table=t};Comms.prototype.getConnections=function(t){var e,o=this,i=[];return e=Tabulator.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},Comms.prototype.send=function(t,e,o,i){var n=this,l=this.getConnections(t);l.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!l.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},Comms.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},Tabulator.prototype.registerModule("comms",Comms);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/changelog.txt b/website/js/vendor/tinymce/changelog.txt
deleted file mode 100644 (file)
index aa08a58..0000000
+++ /dev/null
@@ -1,1479 +0,0 @@
-Version 5.1.5 (2019-12-19)
-    Fixed the UI not working with hybrid devices that accept both touch and mouse events #TNY-4521
-    Fixed the `charmap` dialog initially focusing the first tab of the dialog instead of the search input field #TINY-4342
-    Fixed an exception being raised when inserting content if the caret was directly before or after a `contenteditable="false"` element #TINY-4528
-    Fixed a bug with pasting image URLs when paste as text is enabled #TINY-4523
-Version 5.1.4 (2019-12-11)
-    Fixed dialog contents disappearing when clicking a checkbox for right-to-left languages #TINY-4518
-    Fixed the `legacyoutput` plugin registering legacy formats after editior initialization, causing legacy content to be stripped on the initial load #TINY-4447
-    Fixed search and replace not cycling through results when searching using special characters #TINY-4506
-    Fixed the `visualchars` plugin converting HTML-like text to DOM elements in certain cases #TINY-4507
-    Fixed an issue with the `paste` plugin not sanitizing content in some cases #TINY-4510
-    Fixed HTML comments incorrectly being parsed in certain cases #TINY-4511
-Version 5.1.3 (2019-12-04)
-    Fixed sticky toolbar not undocking when fullscreen mode is activated #TINY-4390
-    Fixed the "Current Window" target not applying when updating links using the link dialog #TINY-4063
-    Fixed disabled menu items not highlighting when focused #TINY-4339
-    Fixed touch events passing through dialog collection items to the content underneath on Android devices #TINY-4431
-    Fixed keyboard navigation of the Help dialog's Keyboard Navigation tab #TINY-4391
-    Fixed search and replace dialog disappearing when finding offscreen matches on iOS devices #TINY-4350
-    Fixed performance issues where sticky toolbar was jumping while scrolling on slower browsers #TINY-4475
-Version 5.1.2 (2019-11-19)
-    Fixed desktop touch devices using `mobile` configuration overrides #TINY-4345
-    Fixed unable to disable the new scrolling toolbar feature #TINY-4345
-    Fixed touch events passing through any pop-up items to the content underneath on Android devices #TINY-4367
-    Fixed the table selector handles throwing JavaScript exceptions for non-table selections #TINY-4338
-    Fixed `cut` operations not removing selected content on Android devices when the `paste` plugin is enabled #TINY-4362
-    Fixed inline toolbar not constrained to the window width by default #TINY-4314
-    Fixed context toolbar split button chevrons pointing right when they should be pointing down #TINY-4257
-    Fixed unable to access the dialog footer in tabbed dialogs on small screens #TINY-4360
-    Fixed mobile table selectors were hard to select with touch by increasing the size #TINY-4366
-    Fixed mobile table selectors moving when moving outside the editor #TINY-4366
-    Fixed inline toolbars collapsing when using sliding toolbars #TINY-4389
-    Fixed block textpatterns not treating NBSPs as spaces #TINY-4378
-    Fixed backspace not merging blocks when the last element in the preceding block was a `contenteditable="false"` element #TINY-4235
-    Fixed toolbar buttons that only contain text labels overlapping on mobile devices #TINY-4395
-    Fixed quickbars quickimage picker not working on mobile #TINY-4377
-    Fixed fullscreen not resizing in an iOS WKWebView component #TINY-4413
-Version 5.1.1 (2019-10-28)
-    Fixed font formats containing spaces being wrapped in `&quot;` entities instead of single quotes #TINY-4275
-    Fixed alert and confirm dialogs losing focus when clicked #TINY-4248
-    Fixed clicking outside a modal dialog focusing on the document body #TINY-4249
-    Fixed the context toolbar not hiding when scrolled out of view #TINY-4265
-Version 5.1.0 (2019-10-17)
-    Added touch selector handles for table selections on touch devices #TINY-4097
-    Added border width field to Table Cell dialog #TINY-4028
-    Added touch event listener to media plugin to make embeds playable #TINY-4093
-    Added oxide styling options to notifications and tweaked the default variables #TINY-4153
-    Added additional padding to split button chevrons on touch devices, to make them easier to interact with #TINY-4223
-    Added new platform detection functions to `Env` and deprecated older detection properties #TINY-4184
-    Added `inputMode` config field to specify inputmode attribute of `input` dialog components #TINY-4062
-    Added new `inputMode` property to relevant plugins/dialogs #TINY-4102
-    Added new `toolbar_sticky` setting to allow the iframe menubar/toolbar to stick to the top of the window when scrolling #TINY-3982
-    Changed default setting for `toolbar_drawer` to `floating` #TINY-3634
-    Changed mobile phones to use the `silver` theme by default #TINY-3634
-    Changed some editor settings to default to `false` on touch devices:
-        - `menubar`(phones only) #TINY-4077
-        - `table_grid` #TINY-4075
-        - `resize` #TINY-4157
-        - `object_resizing` #TINY-4157
-    Changed toolbars and context toolbars to sidescroll on mobile #TINY-3894 #TINY-4107
-    Changed context menus to render as horizontal menus on touch devices #TINY-4107
-    Changed the editor to use the `VisualViewport` API of the browser where possible #TINY-4078
-    Changed visualblocks toolbar button icon and renamed `paragraph` icon to `visualchars` #TINY-4074
-    Changed Oxide default for `@toolbar-button-chevron-color` to follow toolbar button icon color #TINY-4153
-    Changed the `urlinput` dialog component to use the `url` type attribute #TINY-4102
-    Fixed Safari desktop visual viewport fires resize on fullscreen breaking the restore function #TINY-3976
-    Fixed scroll issues on mobile devices #TINY-3976
-    Fixed context toolbar unable to refresh position on iOS12 #TINY-4107
-    Fixed ctrl+left click not opening links on readonly mode and the preview dialog #TINY-4138
-    Fixed Slider UI component not firing `onChange` event on touch devices #TINY-4092
-    Fixed notifications overlapping instead of stacking #TINY-3478
-    Fixed inline dialogs positioning incorrectly when the page is scrolled #TINY-4018
-    Fixed inline dialogs and menus not repositioning when resizing #TINY-3227
-    Fixed inline toolbar incorrectly stretching to the full width when a width value was provided #TINY-4066
-    Fixed menu chevrons color to follow the menu text color #TINY-4153
-    Fixed table menu selection grid from staying black when using dark skins, now follows border color #TINY-4153
-    Fixed Oxide using the wrong text color variable for menubar button focused state #TINY-4146
-    Fixed the autoresize plugin not keeping the selection in view when resizing #TINY-4094
-    Fixed textpattern plugin throwing exceptions when using `forced_root_block: false` #TINY-4172
-    Fixed missing CSS fill styles for toolbar button icon active state #TINY-4147
-    Fixed an issue where the editor selection could end up inside a short ended element (such as `br`) #TINY-3999
-    Fixed browser selection being lost in inline mode when opening split dropdowns #TINY-4197
-    Fixed backspace throwing an exception when using `forced_root_block: false` #TINY-4099
-    Fixed floating toolbar drawer expanding outside the bounds of the editor #TINY-3941
-    Fixed the autocompleter not activating immediately after a `br` or `contenteditable=false` element #TINY-4194
-    Fixed an issue where the autocompleter would incorrectly close on IE 11 in certain edge cases #TINY-4205
-Version 5.0.16 (2019-09-24)
-    Added new `referrer_policy` setting to add the `referrerpolicy` attribute when loading scripts or stylesheets #TINY-3978
-    Added a slight background color to dialog tab links when focused to aid keyboard navigation #TINY-3877
-    Fixed media poster value not updating on change #TINY-4013
-    Fixed openlink was not registered as a toolbar button #TINY-4024
-    Fixed failing to initialize if a script tag was used inside a SVG #TINY-4087
-    Fixed double top border showing on toolbar without menubar when toolbar_drawer is enabled #TINY-4118
-    Fixed unable to drag inline dialogs to the bottom of the screen when scrolled #TINY-4154
-    Fixed notifications appearing on top of the toolbar when scrolled in inline mode #TINY-4159
-    Fixed notifications displaying incorrectly on IE 11 #TINY-4169
-Version 5.0.15 (2019-09-02)
-    Added a dark `content_css` skin to go with the dark UI skin #TINY-3743
-    Changed the enabled state on toolbar buttons so they don't get the hover effect #TINY-3974
-    Fixed missing CSS active state on toolbar buttons #TINY-3966
-    Fixed `onChange` callback not firing for the colorinput dialog component #TINY-3968
-    Fixed context toolbars not showing in fullscreen mode #TINY-4023
-Version 5.0.14 (2019-08-19)
-    Added an API to reload the autocompleter menu with additional fetch metadata #MENTIONS-17
-    Fixed missing toolbar button border styling options #TINY-3965
-    Fixed image upload progress notification closing before the upload is complete #TINY-3963
-    Fixed inline dialogs not closing on escape when no dialog component is in focus #TINY-3936
-    Fixed plugins not being filtered when defaulting to mobile on phones #TINY-3537
-    Fixed toolbar more drawer showing the content behind it when transitioning between opened and closed states #TINY-3878
-    Fixed focus not returning to the dialog after pressing the "Replace all" button in the search and replace dialog #TINY-3961
-    Removed Oxide variable `@menubar-select-disabled-border-color` and replaced it with `@menubar-select-disabled-border` #TINY-3965
-Version 5.0.13 (2019-08-06)
-    Changed modal dialogs to prevent dragging by default and added new `draggable_modal` setting to restore dragging #TINY-3873
-    Changed the nonbreaking plugin to insert nbsp characters wrapped in spans to aid in filtering. This can be disabled using the `nonbreaking_wrap` setting #TINY-3647
-    Changed backspace behaviour in lists to outdent nested list items when the cursor is at the start of the list item #TINY-3651
-    Fixed sidebar growing beyond editor bounds in IE 11 #TINY-3937
-    Fixed issue with being unable to keyboard navigate disabled toolbar buttons #TINY-3350
-    Fixed issues with backspace and delete in nested contenteditable true and false elements #TINY-3868
-    Fixed issue with losing keyboard navigation in dialogs due to disabled buttons #TINY-3914
-    Fixed `MouseEvent.mozPressure is deprecated` warning in Firefox #TINY-3919
-    Fixed `default_link_target` not being respected when `target_list` is disabled #TINY-3757
-    Fixed mobile plugin filter to only apply to the mobile theme, rather than all mobile platforms #TINY-3405
-    Fixed focus switching to another editor during mode changes #TINY-3852
-    Fixed an exception being thrown when clicking on an uninitialized inline editor #TINY-3925
-    Fixed unable to keyboard navigate to dialog menu buttons #TINY-3933
-    Fixed dialogs being able to be dragged outside the window viewport #TINY-3787
-    Fixed inline dialogs appearing above modal dialogs #TINY-3932
-Version 5.0.12 (2019-07-18)
-    Added ability to utilize UI dialog panels inside other panels #TINY-3305
-    Added help dialog tab explaining keyboard navigation of the editor #TINY-3603
-    Changed the "Find and Replace" design to an inline dialog #TINY-3054
-    Fixed issue where autolink spacebar event was not being fired on Edge #TINY-3891
-    Fixed table selection missing the background color #TINY-3892
-    Fixed removing shortcuts not working for function keys #TINY-3871
-    Fixed non-descriptive UI component type names #TINY-3349
-    Fixed UI registry components rendering as the wrong type when manually specifying a different type #TINY-3385
-    Fixed an issue where dialog checkbox, input, selectbox, textarea and urlinput components couldn't be disabled #TINY-3708
-    Fixed the context toolbar not using viable screen space in inline/distraction free mode #TINY-3717
-    Fixed the context toolbar overlapping the toolbar in various conditions #TINY-3205
-    Fixed IE11 edge case where items were being inserted into the wrong location #TINY-3884
-Version 5.0.11 (2019-07-04)
-    Fixed packaging errors caused by a rollup treeshaking bug (https://github.com/rollup/rollup/issues/2970) #TINY-3866
-    Fixed the customeditor component not able to get data from the dialog api #TINY-3866
-    Fixed collection component tooltips not being translated #TINY-3855
-Version 5.0.10 (2019-07-02)
-    Added support for all HTML color formats in `color_map` setting #TINY-3837
-    Changed backspace key handling to outdent content in appropriate circumstances #TINY-3685
-    Changed default palette for forecolor and backcolor to include some lighter colors suitable for highlights #TINY-2865
-    Changed the search and replace plugin to cycle through results #TINY-3800
-    Fixed inconsistent types causing some properties to be unable to be used in dialog components #TINY-3778
-    Fixed an issue in the Oxide skin where dialog content like outlines and shadows were clipped because of overflow hidden #TINY-3566
-    Fixed the search and replace plugin not resetting state when changing the search query #TINY-3800
-    Fixed backspace in lists not creating an undo level #TINY-3814
-    Fixed the editor to cancel loading in quirks mode where the UI is not supported #TINY-3391
-    Fixed applying fonts not working when the name contained spaces and numbers #TINY-3801
-    Fixed so that initial content is retained when initializing on list items #TINY-3796
-    Fixed inefficient font name and font size current value lookup during rendering #TINY-3813
-    Fixed mobile font copied into the wrong folder for the oxide-dark skin #TINY-3816
-    Fixed an issue where resizing the width of tables would produce inaccurate results #TINY-3827
-    Fixed a memory leak in the Silver theme #TINY-3797
-    Fixed alert and confirm dialogs using incorrect markup causing inconsistent padding #TINY-3835
-    Fixed an issue in the Table plugin with `table_responsive_width` not enforcing units when resizing #TINY-3790
-    Fixed leading, trailing and sequential spaces being lost when pasting plain text #TINY-3726
-    Fixed exception being thrown when creating relative URIs #TINY-3851
-    Fixed focus is no longer set to the editor content during mode changes unless the editor already had focus #TINY-3852
-Version 5.0.9 (2019-06-26)
-    Fixed print plugin not working in Firefox #TINY-3834
-Version 5.0.8 (2019-06-18)
-    Added back support for multiple toolbars #TINY-2195
-    Added support for .m4a files to the media plugin #TINY-3750
-    Added new base_url and suffix editor init options #TINY-3681
-    Fixed incorrect padding for select boxes with visible values #TINY-3780
-    Fixed selection incorrectly changing when programmatically setting selection on contenteditable false elements #TINY-3766
-    Fixed sidebar background being transparent #TINY-3727
-    Fixed the build to remove duplicate iife wrappers #TINY-3689
-    Fixed bogus autocompleter span appearing in content when the autocompleter menu is shown #TINY-3752
-    Fixed toolbar font size select not working with legacyoutput plugin #TINY-2921
-    Fixed the legacyoutput plugin incorrectly aligning images #TINY-3660
-    Fixed remove color not working when using the legacyoutput plugin #TINY-3756
-    Fixed the font size menu applying incorrect sizes when using the legacyoutput plugin #TINY-3773
-    Fixed scrollIntoView not working when the parent window was out of view #TINY-3663
-    Fixed the print plugin printing from the wrong window in IE11 #TINY-3762
-    Fixed content CSS loaded over CORS not loading in the preview plugin with content_css_cors enabled #TINY-3769
-    Fixed the link plugin missing the default "None" option for link list #TINY-3738
-    Fixed small dot visible with menubar and toolbar disabled in inline mode #TINY-3623
-    Fixed space key properly inserts a nbsp before/after block elements #TINY-3745
-    Fixed native context menu not showing with images in IE11 #TINY-3392
-    Fixed inconsistent browser context menu image selection #TINY-3789
-Version 5.0.7 (2019-06-05)
-    Added new toolbar button and menu item for inserting tables via dialog #TINY-3636
-    Added new API for adding/removing/changing tabs in the Help dialog #TINY-3535
-    Added highlighting of matched text in autocompleter items #TINY-3687
-    Added the ability for autocompleters to work with matches that include spaces #TINY-3704
-    Added new `imagetools_fetch_image` callback to allow custom implementations for cors loading of images #TINY-3658
-    Added `'http'` and `https` options to `link_assume_external_targets` to prepend `http://` or `https://` prefixes when URL does not contain a protocol prefix. Patch contributed by francoisfreitag. #GH-4335
-    Changed annotations navigation to work the same as inline boundaries #TINY-3396
-    Changed tabpanel API by adding a `name` field and changing relevant methods to use it #TINY-3535
-    Fixed text color not updating all color buttons when choosing a color #TINY-3602
-    Fixed the autocompleter not working with fragmented text #TINY-3459
-    Fixed the autosave plugin no longer overwrites window.onbeforeunload #TINY-3688
-    Fixed infinite loop in the paste plugin when IE11 takes a long time to process paste events. Patch contributed by lRawd. #GH-4987
-    Fixed image handle locations when using `fixed_toolbar_container`. Patch contributed by t00. #GH-4966
-    Fixed the autoresize plugin not firing `ResizeEditor` events #TINY-3587
-    Fixed editor in fullscreen mode not extending to the bottom of the screen #TINY-3701
-    Fixed list removal when pressing backspace after the start of the list item #TINY-3697
-    Fixed autocomplete not triggering from compositionend events #TINY-3711
-    Fixed `file_picker_callback` could not set the caption field on the insert image dialog #TINY-3172
-    Fixed the autocompleter menu showing up after a selection had been made #TINY-3718
-    Fixed an exception being thrown when a file or number input has focus during initialization. Patch contributed by t00 #GH-2194
-Version 5.0.6 (2019-05-22)
-    Added `icons_url` editor settings to enable icon packs to be loaded from a custom url #TINY-3585
-    Added `image_uploadtab` editor setting to control the visibility of the upload tab in the image dialog #TINY-3606
-    Added new api endpoints to the wordcount plugin and improved character count logic #TINY-3578
-    Changed plugin, language and icon loading errors to log in the console instead of a notification #TINY-3585
-    Fixed the textpattern plugin not working with fragmented text #TINY-3089
-    Fixed various toolbar drawer accessibility issues and added an animation #TINY-3554
-    Fixed issues with selection and ui components when toggling readonly mode #TINY-3592
-    Fixed so readonly mode works with inline editors #TINY-3592
-    Fixed docked inline toolbar positioning when scrolled #TINY-3621
-    Fixed initial value not being set on bespoke select in quickbars and toolbar drawer #TINY-3591
-    Fixed so that nbsp entities aren't trimmed in white-space: pre-line elements #TINY-3642
-    Fixed `mceInsertLink` command inserting spaces instead of url encoded characters #GH-4990
-    Fixed text content floating on top of dialogs in IE11 #TINY-3640
-Version 5.0.5 (2019-05-09)
-    Added menu items to match the forecolor/backcolor toolbar buttons #TINY-2878
-    Added default directionality based on the configured language #TINY-2621
-    Added styles, icons and tests for rtl mode #TINY-2621
-    Fixed autoresize not working with floating elements or when media elements finished loading #TINY-3545
-    Fixed incorrect vertical caret positioning in IE 11 #TINY-3188
-    Fixed submenu anchoring hiding overflowed content #TINY-3564
-    Removed unused and hidden validation icons to avoid displaying phantom tooltips #TINY-2329
-Version 5.0.4 (2019-04-23)
-    Added back URL dialog functionality, which is now available via `editor.windowManager.openUrl()` #TINY-3382
-    Added the missing throbber functionality when calling `editor.setProgressState(true)` #TINY-3453
-    Added function to reset the editor content and undo/dirty state via `editor.resetContent()` #TINY-3435
-    Added the ability to set menu buttons as active #TINY-3274
-    Added `editor.mode` API, featuring a custom editor mode API #TINY-3406
-    Added better styling to floating toolbar drawer #TINY-3479
-    Added the new premium plugins to the Help dialog plugins tab #TINY-3496
-    Added the linkchecker context menu items to the default configuration #TINY-3543
-    Fixed image context menu items showing on placeholder images #TINY-3280
-    Fixed dialog labels and text color contrast within notifications/alert banners to satisfy WCAG 4.5:1 contrast ratio for accessibility #TINY-3351
-    Fixed selectbox and colorpicker items not being translated #TINY-3546
-    Fixed toolbar drawer sliding mode to correctly focus the editor when tabbing via keyboard navigation #TINY-3533
-    Fixed positioning of the styleselect menu in iOS while using the mobile theme #TINY-3505
-    Fixed the menubutton `onSetup` callback to be correctly executed when rendering the menu buttons #TINY-3547
-    Fixed `default_link_target` setting to be correctly utilized when creating a link #TINY-3508
-    Fixed colorpicker floating marginally outside its container #TINY-3026
-    Fixed disabled menu items displaying as active when hovered #TINY-3027
-    Removed redundant mobile wrapper #TINY-3480
-Version 5.0.3 (2019-03-19)
-    Changed empty nested-menu items within the style formats menu to be disabled or hidden if the value of `style_formats_autohide` is `true` #TINY-3310
-    Changed the entire phrase 'Powered by Tiny' in the status bar to be a link instead of just the word 'Tiny' #TINY-3366
-    Changed `formatselect`, `styleselect` and `align` menus to use the `mceToggleFormat` command internally #TINY-3428
-    Fixed toolbar keyboard navigation to work as expected when `toolbar_drawer` is configured #TINY-3432
-    Fixed text direction buttons to display the correct pressed state in selections that have no explicit `dir` property #TINY-3138
-    Fixed the mobile editor to clean up properly when removed #TINY-3445
-    Fixed quickbar toolbars to add an empty box to the screen when it is set to `false` #TINY-3439
-    Fixed an issue where pressing the **Delete/Backspace** key at the edge of tables was creating incorrect selections #TINY-3371
-    Fixed an issue where dialog collection items (emoticon and special character dialogs) couldn't be selected with touch devices #TINY-3444
-    Fixed a type error introduced in TinyMCE version 5.0.2 when calling `editor.getContent()` with nested bookmarks #TINY-3400
-    Fixed an issue that prevented default icons from being overridden #TINY-3449
-    Fixed an issue where **Home/End** keys wouldn't move the caret correctly before or after `contenteditable=false` inline elements #TINY-2995
-    Fixed styles to be preserved in IE 11 when editing via the `fullpage` plugin #TINY-3464
-    Fixed the `link` plugin context toolbar missing the open link button #TINY-3461
-    Fixed inconsistent dialog component spacing #TINY-3436
-Version 5.0.2 (2019-03-05)
-    Added presentation and document presets to `htmlpanel` dialog component #TINY-2694
-    Added missing fixed_toolbar_container setting has been reimplemented in the Silver theme #TINY-2712
-    Added a new toolbar setting `toolbar_drawer` that moves toolbar groups which overflow the editor width into either a `sliding` or `floating` toolbar section #TINY-2874
-    Updated the build process to include package lock files in the dev distribution archive #TINY-2870
-    Fixed inline dialogs did not have aria attributes #TINY-2694
-    Fixed default icons are now available in the UI registry, allowing use outside of toolbar buttons #TINY-3307
-    Fixed a memory leak related to select toolbar items #TINY-2874
-    Fixed a memory leak due to format changed listeners that were never unbound #TINY-3191
-    Fixed an issue where content may have been lost when using permanent bookmarks #TINY-3400
-    Fixed the quicklink toolbar button not rendering in the quickbars plugin #TINY-3125
-    Fixed an issue where menus were generating invalid HTML in some cases #TINY-3323
-    Fixed an issue that could cause the mobile theme to show a blank white screen when the editor was inside an `overflow:hidden` element #TINY-3407
-    Fixed mobile theme using a transparent background and not taking up the full width on iOS #TINY-3414
-    Fixed the template plugin dialog missing the description field #TINY-3337
-    Fixed input dialog components using an invalid default type attribute #TINY-3424
-    Fixed an issue where backspace/delete keys after/before pagebreak elements wouldn't move the caret #TINY-3097
-    Fixed an issue in the table plugin where menu items and toolbar buttons weren't showing correctly based on the selection #TINY-3423
-    Fixed inconsistent button focus styles in Firefox #TINY-3377
-    Fixed the resize icon floating left when all status bar elements were disabled #TINY-3340
-    Fixed the resize handle to not show in fullscreen mode #TINY-3404
-Version 5.0.1 (2019-02-21)
-    Removed paste as text notification banner and paste_plaintext_inform setting #POW-102
-    Fixed an issue where adding links to images would replace the image with text #TINY-3356
-    Fixed an issue where the inline editor could use fractional pixels for positioning #TINY-3202
-    Fixed an issue where uploading non-image files in the Image Plugin upload tab threw an error. #TINY-3244
-    Added H1-H6 toggle button registration to the silver theme #TINY-3070
-    Fixed an issue in the media plugin that was causing the source url and height/width to be lost in certain circumstances #TINY-2858
-    Fixed an issue with the Context Toolbar not being removed when clicking outside of the editor #TINY-2804
-    Fixed an issue where clicking 'Remove link' wouldn't remove the link in certain circumstances #TINY-3199
-    Added code sample toolbar button will now toggle on when the cursor is in a code section #TINY-3040
-    Fixed an issue where the media plugin would fail when parsing dialog data #TINY-3218
-    Fixed an issue where retrieving the selected content as text didn't create newlines #TINY-3197
-    Fixed incorrect keyboard shortcuts in the Help dialog for Windows #TINY-3292
-    Fixed an issue where JSON serialization could produce invalid JSON #TINY-3281
-    Fixed production CSS including references to source maps #TINY-3920
-    Fixed development CSS was not included in the development zip #TINY-3920
-    Fixed the autocompleter matches predicate not matching on the start of words by default #TINY-3306
-    Added new settings to the emoticons plugin to allow additional emoticons to be added #TINY-3088
-    Fixed an issue where the page could be scrolled with modal dialogs open #TINY-2252
-    Fixed an issue where autocomplete menus would show an icon margin when no items had icons #TINY-3329
-    Fixed an issue in the quickbars plugin where images incorrectly showed the text selection toolbar #TINY-3338
-    Fixed an issue that caused the inline editor to fail to render when the target element already had focus #TINY-3353
-Version 5.0.0 (2019-02-04)
-    Full documentation for the version 5 features and changes is available at https://www.tiny.cloud/docs/release-notes/
-
-    Changes since RC2:
-    Fixed an issue where tab panel heights weren't sizing properly on smaller screens and weren't updating on resize #TINY-3242
-    Added links and registered names with * to denote premium plugins in Plugins tab of Help dialog #TINY-3223
-    Changed Tiny 5 mobile skin to look more uniform with desktop #TINY-2650
-    Fixed image tools not having any padding between the label and slider #TINY-3220
-    Blacklisted table, th and td as inline editor target #TINY-717
-    Fixed context toolbar toggle buttons not showing the correct state #TINY-3022
-    Fixed missing separators in the spellchecker context menu between the suggestions and actions #TINY-3217
-    Fixed notification icon positioning in alert banners #TINY-2196
-    Fixed a typo in the word count plugin name #TINY-3062
-    Fixed charmap and emoticons dialogs not having a primary button #TINY-3233
-    Fixed an issue where resizing wouldn't work correctly depending on the box-sizing model #TINY-3278
-Version 5.0.0-rc-2 (2019-01-22)
-    Fixed the link dialog such that it will now retain class attributes when updating links #TINY-2825
-    Added screen reader accessibility for sidebar and statusbar #TINY-2699
-    Updated Emoticons and Charmap dialogs to be screen reader accessible #TINY-2693
-    Fixed "Find and replace" not showing in the "Edit" menu by default #TINY-3061
-    Updated the textpattern plugin to properly support nested patterns and to allow running a command with a value for a pattern with a start and an end #TINY-2991
-    Removed unnecessary 'flex' and unused 'colspan' properties from the new dialog APIs #TINY-2973
-    Changed checkboxes to use a boolean for its state, instead of a string #TINY-2848
-    Fixed dropdown buttons missing the 'type' attribute, which could cause forms to be incorrectly submitted #TINY-2826
-    Fixed emoticon and charmap search not returning expected results in certain cases #TINY-3084
-    Changed formatting menus so they are registered and made the align toolbar button use an icon instead of text #TINY-2880
-    Fixed blank rel_list values throwing an exception in the link plugin #TINY-3149
-Version 5.0.0-rc-1 (2019-01-08)
-    Updated the font select dropdown logic to try to detect the system font stack and show "System Font" as the font name #TINY-2710
-    Fixed readonly mode not fully disabling editing content #TINY-2287
-    Updated the autocompleter to only show when it has matched items #TINY-2350
-    Added editor settings functionality to specify title attributes for toolbar groups #TINY-2690
-    Added icons instead of button text to improve Search and Replace dialog footer appearance #TINY-2654
-    Added `tox-dialog__table` instead of `mce-table-striped` class to enhance Help dialog appearance #TINY-2360
-    Added title attribute to iframes so, screen readers can announce iframe labels #TINY-2692
-    Updated SizeInput labels to "Height" and "Width" instead of Dimensions #TINY-2833
-    Fixed accessibility issues with the font select, font size, style select and format select toolbar dropdowns #TINY-2713
-    Fixed accessibility issues with split dropdowns #TINY-2697
-    Added a wordcount menu item, that defaults to appearing in the tools menu #TINY-2877
-    Fixed the legacyoutput plugin to be compatible with TinyMCE 5.0 #TINY-2301
-    Updated the build process to minify and generate ASCII only output for the emoticons database #TINY-2744
-    Fixed icons not showing correctly in the autocompleter popup #TINY-3029
-    Fixed an issue where preview wouldn't show anything in Edge under certain circumstances #TINY-3035
-    Fixed the height being incorrectly calculated for the autoresize plugin #TINY-2807
-Version 5.0.0-beta-1 (2018-11-30)
-    Changed the name of the "inlite" plugin to "quickbars" #TINY-2831
-    Fixed an inline mode issue where the save plugin upon saving can cause content loss #TINY-2659
-    Changed the background color icon to highlight background icon #TINY-2258
-    Added a new `addNestedMenuItem()` UI registry function and changed all nested menu items to use the new registry functions #TINY-2230
-    Changed Help dialog to be accessible to screen readers #TINY-2687
-    Changed the color swatch to save selected custom colors to local storage for use across sessions #TINY-2722
-    Added title attribute to color swatch colors #TINY-2669
-    Added anchorbar component to anchor inline toolbar dialogs to instead of the toolbar #TINY-2040
-    Added support for toolbar<n> and toolbar array config options to be squashed into a single toolbar and not create multiple toolbars #TINY-2195
-    Added error handling for when forced_root_block config option is set to true #TINY-2261
-    Added functionality for the removed_menuitems config option #TINY-2184
-    Fixed an issue in IE 11 where calling selection.getContent() would return an empty string when the editor didn't have focus #TINY-2325
-    Added the ability to use a string to reference menu items in menu buttons and submenu items #TINY-2253
-    Removed compat3x plugin #TINY-2815
-    Changed `WindowManager` API - methods `getParams`, `setParams` and `getWindows`, and the legacy `windows` property, have been removed. `alert` and `confirm` dialogs are no longer tracked in the window list. #TINY-2603
-Version 5.0.0-preview-4 (2018-11-12)
-    Fixed distraction free plugin #AP-470
-    Removed the tox-custom-editor class that was added to the wrapping element of codemirror #TINY-2211
-    Fixed contents of the input field being selected on focus instead of just recieving an outline highlight #AP-464
-    Added width and height placeholder text to image and media dialog dimensions input #AP-296
-    Fixed styling issues with dialogs and menus in IE 11 #AP-456
-    Fixed custom style format control not honoring custom formats #AP-393
-    Fixed context menu not appearing when clicking an image with a caption #AP-382
-    Fixed directionality of UI when using an RTL language #AP-423
-    Fixed page responsiveness with multiple inline editors #AP-430
-    Added the ability to keyboard navigate through menus, toolbars, sidebar and the status bar sequentially #AP-381
-    Fixed empty toolbar groups appearing through invalid configuration of the `toolbar` property #AP-450
-    Fixed text not being retained when updating links through the link dialog #AP-293
-    Added translation capability back to the editor's UI #AP-282
-    Fixed edit image context menu, context toolbar and toolbar items being incorrectly enabled when selecting invalid images #AP-323
-    Fixed emoji type ahead being shown when typing URLs #AP-366
-    Fixed toolbar configuration properties incorrectly expecting string arrays instead of strings #AP-342
-    Changed the editor resize handle so that it should be disabled when the autoresize plugin is turned on #AP-424
-    Fixed the block formatting toolbar item not showing a "Formatting" title when there is no selection #AP-321
-    Fixed clicking disabled toolbar buttons hiding the toolbar in inline mode #AP-380
-    Fixed `EditorResize` event not being fired upon editor resize #AP-327
-    Fixed tables losing styles when updating through the dialog #AP-368
-    Fixed context toolbar positioning to be more consistent near the edges of the editor #AP-318
-    Added `label` component type for dialogs to group components under a label
-    Fixed table of contents plugin now works with v5 toolbar APIs correctly #AP-347
-    Fixed the `link_context_toolbar` configuration not disabling the context toolbar #AP-458
-    Fixed the link context toolbar showing incorrect relative links #AP-435
-    Fixed the alignment of the icon in alert banner dialog components #TINY-2220
-    Changed UI text for microcopy improvements #TINY-2281
-    Fixed the visual blocks and visual char menu options not displaying their toggled state #TINY-2238
-    Fixed the editor not displaying as fullscreen when toggled #TINY-2237
-Version 5.0.0-preview-3 (2018-10-18)
-    Changed editor layout to use modern CSS properties over manually calculating dimensions #AP-324
-    Changed `autoresize_min_height` and `autoresize_max_height` configurations to `min_height` and `max_height` #AP-324
-    Fixed bugs with editor width jumping when resizing and the iframe not resizing to smaller than 150px in height #AP-324
-    Fixed mobile theme bug that prevented the editor from loading #AP-404
-    Fixed long toolbar groups extending outside of the editor instead of wrapping
-    Changed `Whole word` label in Search and Replace dialog to `Find whole words only` #AP-387
-    Fixed dialog titles so they are now proper case #AP-384
-    Fixed color picker default to be #000000 instead of #ff00ff #AP-216
-    Fixed "match case" option on the Find and Replace dialog is no longer selected by default #AP-298
-    Fixed vertical alignment of toolbar icons #DES-134
-    Fixed toolbar icons not appearing on IE11 #DES-133
-Version 5.0.0-preview-2 (2018-10-10)
-    Changed configuration of color options has been simplified to `color_map`, `color_cols`, and `custom_colors` #AP-328
-    Added swatch is now shown for colorinput fields, instead of the colorpicker directly #AP-328
-    Removed `colorpicker` plugin, it is now in the theme #AP-328
-    Removed `textcolor` plugin, it is now in the theme #AP-328
-    Fixed styleselect not updating the displayed item as the cursor moved #AP-388
-    Changed `height` configuration to apply to the editor frame (including menubar, toolbar, status bar) instead of the content area #AP-324
-    Added fontformats and fontsizes menu items #AP-390
-    Fixed preview iframe not expanding to the dialog size #AP-252
-    Fixed 'meta' shortcuts not translated into platform-specific text #AP-270
-    Fixed tabbed dialogs (Charmap and Emoticons) shrinking when no search results returned
-    Fixed a bug where alert banner icons were not retrieved from icon pack. #AP-330
-    Fixed component styles to flex so they fill large dialogs. #AP-252
-    Fixed editor flashing unstyled during load (still in progress). #AP-349
-Version 5.0.0-preview-1 (2018-10-01)
-    Developer preview 1
-    Initial list of features and changes is available at https://tiny.cloud/docs-preview/release-notes/new-features/
-Version 4.9.3 (2019-01-31)
-    Added a visualchars_default_state setting to the Visualchars Plugin. Patch contributed by mat3e.
-    Fixed a bug where scrolling on a page with more than one editor would cause a ResizeWindow event to fire. #TINY-3247
-    Fixed a bug where if a plugin threw an error during initialisation the whole editor would fail to load. #TINY-3243
-    Fixed a bug where getContent would include bogus elements when valid_elements setting was set up in a specific way. #TINY-3213
-    Fixed a bug where only a few function key names could be used when creating keyboard shortcuts. #TINY-3146
-    Fixed a bug where it wasn't possible to enter spaces into an editor after pressing shift+enter. #TINY-3099
-    Fixed a bug where no caret would be rendered after backspacing to a contenteditable false element. #TINY-2998
-    Fixed a bug where deletion to/from indented lists would leave list fragments in the editor. #TINY-2981
-Version 4.9.2 (2018-12-17)
-    Fixed a bug with pressing the space key on IE 11 would result in nbsp characters being inserted between words at the end of a block. #TINY-2996
-    Fixed a bug where character composition using quote and space on US International keyboards would produce a space instead of a quote. #TINY-2999
-    Fixed a bug where remove format wouldn't remove the inner most inline element in some situations. #TINY-2982
-    Fixed a bug where outdenting an list item would affect attributes on other list items within the same list. #TINY-2971
-    Fixed a bug where the DomParser filters wouldn't be applied for elements created when parsing invalid html. #TINY-2978
-    Fixed a bug where setProgressState wouldn't automatically close floating ui elements like menus. #TINY-2896
-    Fixed a bug where it wasn't possible to navigate out of a figcaption element using the arrow keys. #TINY-2894
-    Fixed a bug where enter key before an image inside a link would remove the image. #TINY-2780
-Version 4.9.1 (2018-12-04)
-    Added functionality to insert html to the replacement feature of the Textpattern Plugin. #TINY-2839
-    Fixed a bug where `editor.selection.getContent({format: 'text'})` didn't work as expected in IE11 on an unfocused editor. #TINY-2862
-    Fixed a bug in the Textpattern Plugin where the editor would get an incorrect selection after inserting a text pattern on Safari. #TINY-2838
-    Fixed a bug where the space bar didn't work correctly in editors with the forced_root_block setting set to false. #TINY-2816
-Version 4.9.0 (2018-11-27)
-    Added a replace feature to the Textpattern Plugin. #TINY-1908
-    Added functionality to the Lists Plugin that improves the indentation logic. #TINY-1790
-    Fixed a bug where it wasn't possible to delete/backspace when the caret was between a contentEditable=false element and a BR. #TINY-2372
-    Fixed a bug where copying table cells without a text selection would fail to copy anything. #TINY-1789
-    Implemented missing `autosave_restore_when_empty` functionality in the Autosave Plugin. Patch contributed by gzzo. #GH-4447
-    Reduced insertion of unnecessary nonbreaking spaces in the editor. #TINY-1879
-Version 4.8.5 (2018-10-30)
-    Added a content_css_cors setting to the editor that adds the crossorigin="anonymous" attribute to link tags added by the StyleSheetLoader. #TINY-1909
-    Fixed a bug where trying to remove formatting with a collapsed selection range would throw an exception. #GH-4636
-    Fixed a bug in the image plugin that caused updating figures to split contenteditable elements. #GH-4563
-    Fixed a bug that was causing incorrect viewport calculations for fixed position UI elements. #TINY-1897
-    Fixed a bug where inline formatting would cause the delete key to do nothing. #TINY-1900
-Version 4.8.4 (2018-10-23)
-    Added support for the HTML5 `main` element. #TINY-1877
-    Changed the keyboard shortcut to move focus to contextual toolbars to Ctrl+F9. #TINY-1812
-    Fixed a bug where content css could not be loaded from another domain. #TINY-1891
-    Fixed a bug on FireFox where the cursor would get stuck between two contenteditable false inline elements located inside of the same block element divided by a BR. #TINY-1878
-    Fixed a bug with the insertContent method where nonbreaking spaces would be inserted incorrectly. #TINY-1868
-    Fixed a bug where the toolbar of the inline editor would not be visible in some scenarios. #TINY-1862
-    Fixed a bug where removing the editor while more than one notification was open would throw an error. #TINY-1845
-    Fixed a bug where the menubutton would be rendered on top of the menu if the viewport didn't have enough height. #TINY-1678
-    Fixed a bug with the annotations api where annotating collapsed selections caused problems. #TBS-2449
-    Fixed a bug where wbr elements were being transformed into whitespace when using the Paste Plugin's paste as text setting. #GH-4638
-    Fixed a bug where the Search and Replace didn't replace spaces correctly. #GH-4632
-    Fixed a bug with sublist items not persisting selection. #GH-4628
-    Fixed a bug with mceInsertRawHTML command not working as expected. #GH-4625
-Version 4.8.3 (2018-09-13)
-    Fixed a bug where the Wordcount Plugin didn't correctly count words within tables on IE11. #TINY-1770
-    Fixed a bug where it wasn't possible to move the caret out of a table on IE11 and Firefox. #TINY-1682
-    Fixed a bug where merging empty blocks didn't work as expected, sometimes causing content to be deleted. #TINY-1781
-    Fixed a bug where the Textcolor Plugin didn't show the correct current color. #TINY-1810
-    Fixed a bug where clear formatting with a collapsed selection would sometimes clear formatting from more content than expected. #TINY-1813 #TINY-1821
-    Fixed a bug with the Table Plugin where it wasn't possible to keyboard navigate to the caption. #TINY-1818
-Version 4.8.2 (2018-08-09)
-    Moved annotator from "experimental" to "annotator" object on editor. #TBS-2398
-    Improved the multiclick normalization across browsers. #TINY-1788
-    Fixed a bug where running getSelectedBlocks with a collapsed selection between block elements would produce incorrect results. #TINY-1787
-    Fixed a bug where the ScriptLoaders loadScript method would not work as expected in FireFox when loaded on the same page as a ShadowDOM polyfill. #TINY-1786
-    Removed reference to ShadowDOM event.path as Blink based browsers now support event.composedPath. #TINY-1785
-    Fixed a bug where a reference to localStorage would throw an "access denied" error in IE11 with strict security settings. #TINY-1782
-    Fixed a bug where pasting using the toolbar button on an inline editor in IE11 would cause a looping behaviour. #TINY-1768
-Version 4.8.1 (2018-07-26)
-    Fixed a bug where the content of inline editors was being cleaned on every call of `editor.save()`. #TINY-1783
-    Fixed a bug where the arrow of the Inlite Theme toolbar was being rendered incorrectly in RTL mode. #TINY-1776
-    Fixed a bug with the Paste Plugin where pasting after inline contenteditable false elements moved the caret to the end of the line. #TINY-1758
-Version 4.8.0 (2018-06-27)
-    Added new "experimental" object in editor, with initial Annotator API. #TBS-2374
-    Fixed a bug where deleting paragraphs inside of table cells would delete the whole table cell. #TINY-1759
-    Fixed a bug in the Table Plugin where removing row height set on the row properties dialog did not update the table. #TINY-1730
-    Fixed a bug with the font select toolbar item didn't update correctly. #TINY-1683
-    Fixed a bug where all bogus elements would not be deleted when removing an inline editor. #TINY-1669
-Version 4.7.13 (2018-05-16)
-    Fixed a bug where Edge 17 wouldn't be able to select images or tables. #TINY-1679
-    Fixed issue where whitespace wasn't preserved when the editor was initialized on pre elements. #TINY-1649
-    Fixed a bug with the fontselect dropdowns throwing an error if the editor was hidden in Firefox. #TINY-1664
-    Fixed a bug where it wasn't possible to merge table cells on IE 11. #TINY-1671
-    Fixed a bug where textcolor wasn't applying properly on IE 11 in some situations. #TINY-1663
-    Fixed a bug where the justifyfull command state wasn't working correctly. #TINY-1677
-    Fixed a bug where the styles wasn't updated correctly when resizing some tables. #TINY-1668
-    Added missing code menu item from the default menu config. #TINY-1648
-    Added new align button for combining the separate align buttons into a menu button. #TINY-1652
-Version 4.7.12 (2018-05-03)
-    Added an option to filter out image svg data urls.
-    Added support for html5 details and summary elements.
-    Changed so the mce-abs-layout-item css rule targets html instead of body. Patch contributed by nazar-pc.
-    Fixed a bug where the "read" step on the mobile theme was still present on android mobile browsers.
-    Fixed a bug where all images in the editor document would reload on any editor change.
-    Fixed a bug with the Table Plugin where ObjectResized event wasn't being triggered on column resize.
-    Fixed so the selection is set to the first suitable caret position after editor.setContent called.
-    Fixed so links with xlink:href attributes are filtered correctly to prevent XSS.
-    Fixed a bug on IE11 where pasting content into an inline editor initialized on a heading element would create new editable elements.
-    Fixed a bug where readonly mode would not work as expected when the editor contained contentEditable=true elements.
-    Fixed a bug where the Link Plugin would throw an error when used together with the webcomponents polyfill. Patch contributed by 4esnog.
-    Fixed a bug where the "Powered by TinyMCE" branding link would break on XHTML pages. Patch contributed by tistre.
-    Fixed a bug where the same id would be used in the blobcache for all pasted images. Patch contributed by thorn0.
-Version 4.7.11 (2018-04-11)
-    Added a new imagetools_credentials_hosts option to the Imagetools Plugin.
-    Fixed a bug where toggling a list containing empty LIs would throw an error. Patch contributed by bradleyke.
-    Fixed a bug where applying block styles to a text with the caret at the end of the paragraph would select all text in the paragraph.
-    Fixed a bug where toggling on the Spellchecker Plugin would trigger isDirty on the editor.
-    Fixed a bug where it was possible to enter content into selection bookmark spans.
-    Fixed a bug where if a non paragraph block was configured in forced_root_block the editor.getContent method would return incorrect values with an empty editor.
-    Fixed a bug where dropdown menu panels stayed open and fixed in position when dragging dialog windows.
-    Fixed a bug where it wasn't possible to extend table cells with the space button in Safari.
-    Fixed a bug where the setupeditor event would thrown an error when using the Compat3x Plugin.
-    Fixed a bug where an error was thrown in FontInfo when called on a detached element.
-Version 4.7.10 (2018-04-03)
-    Removed the "read" step from the mobile theme.
-    Added normalization of triple clicks across browsers in the editor.
-    Added a `hasFocus` method to the editor that checks if the editor has focus.
-    Added correct icon to the Nonbreaking Plugin menu item.
-    Fixed so the `getContent`/`setContent` methods work even if the editor is not initialized.
-    Fixed a bug with the Media Plugin where query strings were being stripped from youtube links.
-    Fixed a bug where image styles were changed/removed when opening and closing the Image Plugin dialog.
-    Fixed a bug in the Table Plugin where some table cell styles were not correctly added to the content html.
-    Fixed a bug in the Spellchecker Plugin where it wasn't possible to change the spellchecker language.
-    Fixed so the the unlink action in the Link Plugin has a menu item and can be added to the contextmenu.
-    Fixed a bug where it wasn't possible to keyboard navigate to the start of an inline element on a new line within the same block element.
-    Fixed a bug with the Text Color Plugin where if used with an inline editor located at the bottom of the screen the colorpicker could appear off screen.
-    Fixed a bug with the UndoManager where undo levels were being added for nbzwsp characters.
-    Fixed a bug with the Table Plugin where the caret would sometimes be lost when keyboard navigating up through a table.
-    Fixed a bug where FontInfo.getFontFamily would throw an error when called on a removed editor.
-    Fixed a bug in Firefox where undo levels were not being added correctly for some specific operations.
-    Fixed a bug where initializing an inline editor inside of a table would make the whole table resizeable.
-    Fixed a bug where the fake cursor that appears next to tables on Firefox was positioned incorrectly when switching to fullscreen.
-    Fixed a bug where zwsp's weren't trimmed from the output from `editor.getContent({ format: 'text' })`.
-    Fixed a bug where the fontsizeselect/fontselect toolbar items showed the body info rather than the first possible caret position info on init.
-    Fixed a bug where it wasn't possible to select all content if the editor only contained an inline boundary element.
-    Fixed a bug where `content_css` urls with query strings wasn't working.
-    Fixed a bug in the Table Plugin where some table row styles were removed when changing other styles in the row properties dialog.
-Version 4.7.9 (2018-02-27)
-    Fixed a bug where the editor target element didn't get the correct style when removing the editor.
-Version 4.7.8 (2018-02-26)
-    Fixed an issue with the Help Plugin where the menuitem name wasn't lowercase.
-    Fixed an issue on MacOS where text and bold text did not have the same line-height in the autocomplete dropdown in the Link Plugin dialog.
-    Fixed a bug where the "paste as text" option in the Paste Plugin didn't work.
-    Fixed a bug where dialog list boxes didn't get positioned correctly in documents with scroll.
-    Fixed a bug where the Inlite Theme didn't use the Table Plugin api to insert correct tables.
-    Fixed a bug where the Inlite Theme panel didn't hide on blur in a correct way.
-    Fixed a bug where placing the cursor before a table in Firefox would scroll to the bottom of the table.
-    Fixed a bug where selecting partial text in table cells with rowspans and deleting would produce faulty tables.
-    Fixed a bug where the Preview Plugin didn't work on Safari due to sandbox security.
-    Fixed a bug where table cell selection using the keyboard threw an error.
-    Fixed so the font size and font family doesn't toggle the text but only sets the selected format on the selected text.
-    Fixed so the built-in spellchecking on Chrome and Safari creates an undo level when replacing words.
-Version 4.7.7 (2018-02-19)
-    Added a border style selector to the advanced tab of the Image Plugin.
-    Added better controls for default table inserted by the Table Plugin.
-    Added new `table_responsive_width` option to the Table Plugin that controls whether to use pixel or percentage widths.
-    Fixed a bug where the Link Plugin text didn't update when a URL was pasted using the context menu.
-    Fixed a bug with the Spellchecker Plugin where using "Add to dictionary" in the context menu threw an error.
-    Fixed a bug in the Media Plugin where the preview node for iframes got default width and height attributes that interfered with width/height styles.
-    Fixed a bug where backslashes were being added to some font family names in Firefox in the fontselect toolbar item.
-    Fixed a bug where errors would be thrown when trying to remove an editor that had not yet been fully initialized.
-    Fixed a bug where the Imagetools Plugin didn't update the images atomically.
-    Fixed a bug where the Fullscreen Plugin was throwing errors when being used on an inline editor.
-    Fixed a bug where drop down menus weren't positioned correctly in inline editors on scroll.
-    Fixed a bug with a semicolon missing at the end of the bundled javascript files.
-    Fixed a bug in the Table Plugin with cursor navigation inside of tables where the cursor would sometimes jump into an incorrect table cells.
-    Fixed a bug where indenting a table that is a list item using the "Increase indent" button would create a nested table.
-    Fixed a bug where text nodes containing only whitespace were being wrapped by paragraph elements.
-    Fixed a bug where whitespace was being inserted after br tags inside of paragraph tags.
-    Fixed a bug where converting an indented paragraph to a list item would cause the list item to have extra padding.
-    Fixed a bug where Copy/Paste in an editor with a lot of content would cause the editor to scroll to the top of the content in IE11.
-    Fixed a bug with a memory leak in the DragHelper. Path contributed by ben-mckernan.
-    Fixed a bug where the advanced tab in the Media Plugin was being shown even if it didn't contain anything. Patch contributed by gabrieeel.
-    Fixed an outdated eventname in the EventUtils. Patch contributed by nazar-pc.
-    Fixed an issue where the Json.parse function would throw an error when being used on a page with strict CSP settings.
-    Fixed so you can place the curser before and after table elements within the editor in Firefox and Edge/IE.
-Version 4.7.6 (2018-01-29)
-    Fixed a bug in the jquery integration where it threw an error saying that "global is not defined".
-    Fixed a bug where deleting a table cell whose previous sibling was set to contenteditable false would create a corrupted table.
-    Fixed a bug where highlighting text in an unfocused editor did not work correctly in IE11/Edge.
-    Fixed a bug where the table resize handles were not being repositioned when activating the Fullscreen Plugin.
-    Fixed a bug where the Imagetools Plugin dialog didn't honor editor RTL settings.
-    Fixed a bug where block elements weren't being merged correctly if you deleted from after a contenteditable false element to the beginning of another block element.
-    Fixed a bug where TinyMCE didn't work with module loaders like webpack.
-Version 4.7.5 (2018-01-22)
-    Fixed bug with the Codesample Plugin where it wasn't possible to edit codesamples when the editor was in inline mode.
-    Fixed bug where focusing on the status bar broke the keyboard navigation functionality.
-    Fixed bug where an error would be thrown on Edge by the Table Plugin when pasting using the PowerPaste Plugin.
-    Fixed bug in the Table Plugin where selecting row border style from the dropdown menu in advanced row properties would throw an error.
-    Fixed bug with icons being rendered incorrectly on Chrome on Mac OS.
-    Fixed bug in the Textcolor Plugin where the font color and background color buttons wouldn't trigger an ExecCommand event.
-    Fixed bug in the Link Plugin where the url field wasn't forced LTR.
-    Fixed bug where the Nonbreaking Plugin incorrectly inserted spaces into tables.
-    Fixed bug with the inline theme where the toolbar wasn't repositioned on window resize.
-Version 4.7.4 (2017-12-05)
-    Fixed bug in the Nonbreaking Plugin where the nonbreaking_force_tab setting was being ignored.
-    Fixed bug in the Table Plugin where changing row height incorrectly converted column widths to pixels.
-    Fixed bug in the Table Plugin on Edge and IE11 where resizing the last column after resizing the table would cause invalid column heights.
-    Fixed bug in the Table Plugin where keyboard navigation was not normalized between browsers.
-    Fixed bug in the Table Plugin where the colorpicker button would show even without defining the colorpicker_callback.
-    Fixed bug in the Table Plugin where it wasn't possible to set the cell background color.
-    Fixed bug where Firefox would throw an error when intialising an editor on an element that is hidden or not yet added to the DOM.
-    Fixed bug where Firefox would throw an error when intialising an editor inside of a hidden iframe.
-Version 4.7.3 (2017-11-23)
-    Added functionality to open the Codesample Plugin dialog when double clicking on a codesample. Patch contributed by dakuzen.
-    Fixed bug where undo/redo didn't work correctly with some formats and caret positions.
-    Fixed bug where the color picker didn't show up in Table Plugin dialogs.
-    Fixed bug where it wasn't possible to change the width of a table through the Table Plugin dialog.
-    Fixed bug where the Charmap Plugin couldn't insert some special characters.
-    Fixed bug where editing a newly inserted link would not actually edit the link but insert a new link next to it.
-    Fixed bug where deleting all content in a table cell made it impossible to place the caret into it.
-    Fixed bug where the vertical alignment field in the Table Plugin cell properties dialog didn't do anything.
-    Fixed bug where an image with a caption showed two sets of resize handles in IE11.
-    Fixed bug where pressing the enter button inside of an h1 with contenteditable set to true would sometimes produce a p tag.
-    Fixed bug with backspace not working as expected before a noneditable element.
-    Fixed bug where operating on tables with invalid rowspans would cause an error to be thrown.
-    Fixed so a real base64 representation of the image is available on the blobInfo that the images_upload_handler gets called with.
-    Fixed so the image upload tab is available when the images_upload_handler is defined (and not only when the images_upload_url is defined).
-Version 4.7.2 (2017-11-07)
-    Added newly rewritten Table Plugin.
-    Added support for attributes with colon in valid_elements and addValidElements.
-    Added support for dailymotion short url in the Media Plugin. Patch contributed by maat8.
-    Added support for converting to half pt when converting font size from px to pt. Patch contributed by danny6514.
-    Added support for location hash to the Autosave plugin to make it work better with SPAs using hash routing.
-    Added support for merging table cells when pasting a table into another table.
-    Changed so the language packs are only loaded once. Patch contributed by 0xor1.
-    Simplified the css for inline boundaries selection by switching to an attribute selector.
-    Fixed bug where an error would be thrown on editor initialization if the window.getSelection() returned null.
-    Fixed bug where holding down control or alt keys made the keyboard navigation inside an inline boundary not work as expected.
-    Fixed bug where applying formats in IE11 produced extra, empty paragraphs in the editor.
-    Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly.
-    Fixed bug where removing an inline editor removed the element that the editor had been initialized on.
-    Fixed bug where setting the selection to the end of an editable container caused some formatting problems.
-    Fixed bug where an error would be thrown sometimes when an editor was removed because of the selection bookmark was being stored asynchronously.
-    Fixed a bug where an editor initialized on an empty list did not contain any valid cursor positions.
-    Fixed a bug with the Context Menu Plugin and webkit browsers on Mac where right-clicking inside a table would produce an incorrect selection.
-    Fixed bug where the Image Plugin constrain proportions setting wasn't working as expected.
-    Fixed bug where deleting the last character in a span with decorations produced an incorrect element when typing.
-    Fixed bug where focusing on inline editors made the toolbar flicker when moving between elements quickly.
-    Fixed bug where the selection would be stored incorrectly in inline editors when the mouseup event was fired outside the editor body.
-    Fixed bug where toggling bold at the end of an inline boundary would toggle off the whole word.
-    Fixed bug where setting the skin to false would not stop the loading of some skin css files.
-    Fixed bug in mobile theme where pinch-to-zoom would break after exiting the editor.
-    Fixed bug where sublists of a fully selected list would not be switched correctly when changing list style.
-    Fixed bug where inserting media by source would break the UndoManager.
-    Fixed bug where inserting some content into the editor with a specific selection would replace some content incorrectly.
-    Fixed bug where selecting all content with ctrl+a in IE11 caused problems with untoggling some formatting.
-    Fixed bug where the Search and Replace Plugin left some marker spans in the editor when undoing and redoing after replacing some content.
-    Fixed bug where the editor would not get a scrollbar when using the Fullscreen and Autoresize plugins together.
-    Fixed bug where the font selector would stop working correctly after selecting fonts three times.
-    Fixed so pressing the enter key inside of an inline boundary inserts a br after the inline boundary element.
-    Fixed a bug where it wasn't possible to use tab navigation inside of a table that was inside of a list.
-    Fixed bug where end_container_on_empty_block would incorrectly remove elements.
-    Fixed bug where content_styles weren't added to the Preview Plugin iframe.
-    Fixed so the beforeSetContent/beforeGetContent events are preventable.
-    Fixed bug where changing height value in Table Plugin advanced tab didn't do anything.
-    Fixed bug where it wasn't possible to remove formatting from content in beginning of table cell.
-Version 4.7.1 (2017-10-09)
-    Fixed bug where theme set to false on an inline editor produced an extra div element after the target element.
-    Fixed bug where the editor drag icon was misaligned with the branding set to false.
-    Fixed bug where doubled menu items were not being removed as expected with the removed_menuitems setting.
-    Fixed bug where the Table of contents plugin threw an error when initialized.
-    Fixed bug where it wasn't possible to add inline formats to text selected right to left.
-    Fixed bug where the paste from plain text mode did not work as expected.
-    Fixed so the style previews do not set color and background color when selected.
-    Fixed bug where the Autolink plugin didn't work as expected with some formats applied on an empty editor.
-    Fixed bug where the Textpattern plugin were throwing errors on some patterns.
-    Fixed bug where the Save plugin saved all editors instead of only the active editor. Patch contributed by dannoe.
-Version 4.7.0 (2017-10-03)
-    Added new mobile ui that is specifically designed for mobile devices.
-    Updated the default skin to be more modern and white since white is preferred by most implementations.
-    Restructured the default menus to be more similar to common office suites like Google Docs.
-    Fixed so theme can be set to false on both inline and iframe editor modes.
-    Fixed bug where inline editor would add/remove the visualblocks css multiple times.
-    Fixed bug where selection wouldn't be properly restored when editor lost focus and commands where invoked.
-    Fixed bug where toc plugin would generate id:s for headers even though a toc wasn't inserted into the content.
-    Fixed bug where is wasn't possible to drag/drop contents within the editor if paste_data_images where set to true.
-    Fixed bug where getParam and close in WindowManager would get the first opened window instead of the last opened window.
-    Fixed bug where delete would delete between cells inside a table in Firefox.
-Version 4.6.7 (2017-09-18)
-    Fixed bug where paste wasn't working in IOS.
-    Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly.
-    Fixed bug where inserting a list in a table caused the cell to expand in height.
-    Fixed bug where pressing enter in a list located inside of a table deleted list items instead of inserting new list item.
-    Fixed bug where copy and pasting table cells produced inconsistent results.
-    Fixed bug where initializing an editor with an ID of 'length' would throw an exception.
-    Fixed bug where it was possible to split a non merged table cell.
-    Fixed bug where copy and pasting a list with a very specific selection into another list would produce a nested list.
-    Fixed bug where copy and pasting ordered lists sometimes produced unordered lists.
-    Fixed bug where padded elements inside other elements would be treated as empty.
-    Added some missing translations to Image, Link and Help plugins.
-    Fixed so you can resize images inside a figure element.
-    Fixed bug where an inline TinyMCE editor initialized on a table did not set selection on load in Chrome.
-    Fixed the positioning of the inlite toolbar when the target element wasn't big enough to fit the toolbar.
-Version 4.6.6 (2017-08-30)
-    Fixed so that notifications wrap long text content instead of bleeding outside the notification element.
-    Fixed so the content_style css is added after the skin and custom stylesheets.
-    Fixed bug where it wasn't possible to remove a table with the Cut button.
-    Fixed bug where the center format wasn't getting the same font size as the other formats in the format preview.
-    Fixed bug where the wordcount plugin wasn't counting hyphenated words correctly.
-    Fixed bug where all content pasted into the editor was added to the end of the editor.
-    Fixed bug where enter keydown on list item selection only deleted content and didn't create a new line.
-    Fixed bug where destroying the editor while the content css was still loading caused error notifications on Firefox.
-    Fixed bug where undoing cut operation in IE11 left some unwanted html in the editor content.
-    Fixed bug where enter keydown would throw an error in IE11.
-    Fixed bug where duplicate instances of an editor were added to the editors array when using the createEditor API.
-    Fixed bug where the formatter applied formats on the wrong content when spellchecker was activated.
-    Fixed bug where switching formats would reset font size on child nodes.
-    Fixed bug where the table caption element weren't always the first descendant to the table tag.
-    Fixed bug where pasting some content into the editor on chrome some newlines were removed.
-    Fixed bug where it wasn't possible to remove a list if a list item was a table element.
-    Fixed bug where copy/pasting partial selections of tables wouldn't produce a proper table.
-    Fixed bug where the searchreplace plugin could not find consecutive spaces.
-    Fixed bug where background color wasn't applied correctly on some partially selected contents.
-Version 4.6.5 (2017-08-02)
-    Added new inline_boundaries_selector that allows you to specify the elements that should have boundaries.
-    Added new local upload feature this allows the user to upload images directly from the image dialog.
-    Added a new api for providing meta data for plugins. It will show up in the help dialog if it's provided.
-    Fixed so that the notifications created by the notification manager are more screen reader accessible.
-    Fixed bug where changing the list format on multiple selected lists didn't change all of the lists.
-    Fixed bug where the nonbreaking plugin would insert multiple undo levels when pressing the tab key.
-    Fixed bug where delete/backspace wouldn't render a caret when all editor contents where deleted.
-    Fixed bug where delete/backspace wouldn't render a caret if the deleted element was a single contentEditable false element.
-    Fixed bug where the wordcount plugin wouldn't count words correctly if word where typed after applying a style format.
-    Fixed bug where the wordcount plugin would count mathematical formulas as multiple words for example 1+1=2.
-    Fixed bug where formatting of triple clicked blocks on Chrome/Safari would result in styles being added outside the visual selection.
-    Fixed bug where paste would add the contents to the end of the editor area when inline mode was used.
-    Fixed bug where toggling off bold formatting on text entered in a new paragraph would add an extra line break.
-    Fixed bug where autolink plugin would only produce a link on every other consecutive link on Firefox.
-    Fixed bug where it wasn't possible to select all contents if the content only had one pre element.
-    Fixed bug where sizzle would produce lagging behavior on some sites due to repaints caused by feature detection.
-    Fixed bug where toggling off inline formats wouldn't include the space on selected contents with leading or trailing spaces.
-    Fixed bug where the cut operation in UI wouldn't work in Chrome.
-    Fixed bug where some legacy editor initialization logic would throw exceptions about editor settings not being defined.
-    Fixed bug where it wasn't possible to apply text color to links if they where part of a non collapsed selection.
-    Fixed bug where an exception would be thrown if the user selected a video element and then moved the focus outside the editor.
-    Fixed bug where list operations didn't work if there where block elements inside the list items.
-    Fixed bug where applying block formats to lists wrapped in block elements would apply to all elements in that wrapped block.
-Version 4.6.4 (2017-06-13)
-    Fixed bug where the editor would move the caret when clicking on the scrollbar next to a content editable false block.
-    Fixed bug where the text color select dropdowns wasn't placed correctly when they didn't fit the width of the screen.
-    Fixed bug where the default editor line height wasn't working for mixed font size contents.
-    Fixed bug where the content css files for inline editors were loaded multiple times for multiple editor instances.
-    Fixed bug where the initial value of the font size/font family dropdowns wasn't displayed.
-    Fixed bug where the I18n api was not supporting arrays as the translation replacement values.
-    Fixed bug where chrome would display "The given range isn't in document." errors for invalid ranges passed to setRng.
-    Fixed bug where the compat3x plugin wasn't working since the global tinymce references wasn't resolved correctly.
-    Fixed bug where the preview plugin wasn't encoding the base url passed into the iframe contents producing a xss bug.
-    Fixed bug where the dom parser/serializer wasn't handling some special elements like noframes, title and xmp.
-    Fixed bug where the dom parser/serializer wasn't handling cdata sections with comments inside.
-    Fixed bug where the editor would scroll to the top of the editable area if a dialog was closed in inline mode.
-    Fixed bug where the link dialog would not display the right rel value if rel_list was configured.
-    Fixed bug where the context menu would select images on some platforms but not others.
-    Fixed bug where the filenames of images were not retained on dragged and drop into the editor from the desktop.
-    Fixed bug where the paste plugin would misrepresent newlines when pasting plain text and having forced_root_block configured.
-    Fixed so that the error messages for the imagetools plugin is more human readable.
-    Fixed so the internal validate setting for the parser/serializer can't be set from editor initialization settings.
-Version 4.6.3 (2017-05-30)
-    Fixed bug where the arrow keys didn't work correctly when navigating on nested inline boundary elements.
-    Fixed bug where delete/backspace didn't work correctly on nested inline boundary elements.
-    Fixed bug where image editing didn't work on subsequent edits of the same image.
-    Fixed bug where charmap descriptions wouldn't properly wrap if they exceeded the width of the box.
-    Fixed bug where the default image upload handler only accepted 200 as a valid http status code.
-    Fixed so rel on target=_blank links gets forced with only noopener instead of both noopener and noreferrer.
-Version 4.6.2 (2017-05-23)
-    Fixed bug where the SaxParser would run out of memory on very large documents.
-    Fixed bug with formatting like font size wasn't applied to del elements.
-    Fixed bug where various api calls would be throwing exceptions if they where invoked on a removed editor instance.
-    Fixed bug where the branding position would be incorrect if the editor was inside a hidden tab and then later showed.
-    Fixed bug where the color levels feature in the imagetools dialog wasn't working properly.
-    Fixed bug where imagetools dialog wouldn't pre-load images from CORS domains, before trying to prepare them for editing.
-    Fixed bug where the tab key would move the caret to the next table cell if being pressed inside a list inside a table.
-    Fixed bug where the cut/copy operations would loose parent context like the current format etc.
-    Fixed bug with format preview not working on invalid elements excluded by valid_elements.
-    Fixed bug where blocks would be merged in incorrect order on backspace/delete.
-    Fixed bug where zero length text nodes would cause issues with the undo logic if there where iframes present.
-    Fixed bug where the font size/family select lists would throw errors if the first node was a comment.
-    Fixed bug with csp having to allow local script evaluation since it was used to detect global scope.
-    Fixed bug where CSP required a relaxed option for javascript: URLs in unsupported legacy browsers.
-    Fixed bug where a fake caret would be rendered for td with the contenteditable=false.
-    Fixed bug where typing would be blocked on IE 11 when within a nested contenteditable=true/false structure.
-Version 4.6.1 (2017-05-10)
-    Added configuration option to list plugin to disable tab indentation.
-    Fixed bug where format change on very specific content could cause the selection to change.
-    Fixed bug where TinyMCE could not be lazyloaded through jquery integration.
-    Fixed bug where entities in style attributes weren't decoded correctly on paste in webkit.
-    Fixed bug where fontsize_formats option had been renamed incorrectly.
-    Fixed bug with broken backspace/delete behaviour between contenteditable=false blocks.
-    Fixed bug where it wasn't possible to backspace to the previous line with the inline boundaries functionality turned on.
-    Fixed bug where is wasn't possible to move caret left and right around a linked image with the inline boundaries functionality turned on.
-    Fixed bug where pressing enter after/before hr element threw exception. Patch contributed bradleyke.
-    Fixed so the CSS in the visualblocks plugin doesn't overwrite background color. Patch contributed by Christian Rank.
-    Fixed bug where multibyte characters weren't encoded correctly. Patch contributed by James Tarkenton.
-    Fixed bug where shift-click to select within contenteditable=true fields wasn't working.
-Version 4.6.0 (2017-05-04)
-    Dropped support for IE 8-10 due to market share and lack of support from Microsoft. See tinymce docs for details.
-    Added an inline boundary caret position feature that makes it easier to type at the beginning/end of links/code elements.
-    Added a help plugin that adds a button and a dialog showing the editor shortcuts and loaded plugins.
-    Added an inline_boundaries option that allows you to disable the inline boundary feature if it's not desired.
-    Added a new ScrollIntoView event that allows you to override the default scroll to element behavior.
-    Added role and aria- attributes as valid elements in the default valid elements config.
-    Added new internal flag for PastePreProcess/PastePostProcess this is useful to know if the paste was coming from an external source.
-    Added new ignore function to UndoManager this works similar to transact except that it doesn't add an undo level by default.
-    Fixed so that urls gets retained for images when being edited. This url is then passed on to the upload handler.
-    Fixed so that the editors would be initialized on readyState interactive instead of complete.
-    Fixed so that the init event of the editor gets fired once all contentCSS files have been properly loaded.
-    Fixed so that width/height of the editor gets taken from the textarea element if it's explicitly specified in styles.
-    Fixed so that keep_styles set to false no longer clones class/style from the previous paragraph on enter.
-    Fixed so that the default line-height is 1.2em to avoid zwnbsp characters from producing text rendering glitches on Windows.
-    Fixed so that loading errors of content css gets presented by a notification message.
-    Fixed so figure image elements can be linked when selected this wraps the figure image in a anchor element.
-    Fixed bug where it wasn't possible to copy/paste rows with colspans by using the table copy/paste feature.
-    Fixed bug where the protect setting wasn't properly applied to header/footer parts when using the fullpage plugin.
-    Fixed bug where custom formats that specified upper case element names where not applied correctly.
-    Fixed bug where some screen readers weren't reading buttons due to an aria specific fix for IE 8.
-    Fixed bug where cut wasn't working correctly on iOS due to it's clipboard API not working correctly.
-    Fixed bug where Edge would paste div elements instead of paragraphs when pasting plain text.
-    Fixed bug where the textpattern plugin wasn't dealing with trailing punctuations correctly.
-    Fixed bug where image editing would some times change the image format from jpg to png.
-    Fixed bug where some UI elements could be inserted into the toolbar even if they where not registered.
-    Fixed bug where it was possible to click the TD instead of the character in the character map and that caused an exception.
-    Fixed bug where the font size/font family dropdowns would sometimes show an incorrect value due to css not being loaded in time.
-    Fixed bug with the media plugin inserting undefined instead of retaining size when media_dimensions was set to false.
-    Fixed bug with deleting images when forced_root_blocks where set to false.
-    Fixed bug where input focus wasn't properly handled on nested content editable elements.
-    Fixed bug where Chrome/Firefox would throw an exception when selecting images due to recent change of setBaseAndExtent support.
-    Fixed bug where malformed blobs would throw exceptions now they are simply ignored.
-    Fixed bug where backspace/delete wouldn't work properly in some cases where all contents was selected in WebKit.
-    Fixed bug with Angular producing errors since it was expecting events objects to be patched with their custom properties.
-    Fixed bug where the formatter would apply formatting to spellchecker errors now all bogus elements are excluded.
-    Fixed bug with backspace/delete inside table caption elements wouldn't behave properly on IE 11.
-    Fixed bug where typing after a contenteditable false inline element could move the caret to the end of that element.
-    Fixed bug where backspace before/after contenteditable false blocks wouldn't properly remove the right element.
-    Fixed bug where backspace before/after contenteditable false inline elements wouldn't properly empty the current block element.
-    Fixed bug where vertical caret navigation with a custom line-height would sometimes match incorrect positions.
-    Fixed bug with paste on Edge where character encoding wasn't handled properly due to a browser bug.
-    Fixed bug with paste on Edge where extra fragment data was inserted into the contents when pasting.
-    Fixed bug with pasting contents when having a whole block element selected on WebKit could cause WebKit spans to appear.
-    Fixed bug where the visualchars plugin wasn't working correctly showing invisible nbsp characters.
-    Fixed bug where browsers would hang if you tried to load some malformed html contents.
-    Fixed bug where the init call promise wouldn't resolve if the specified selector didn't find any matching elements.
-    Fixed bug where the Schema isValidChild function was case sensitive.
-Version 4.5.3 (2017-02-01)
-    Added keyboard navigation for menu buttons when the menu is in focus.
-    Added api to the list plugin for setting custom classes/attributes on lists.
-    Added validation for the anchor plugin input field according to W3C id naming specifications.
-    Fixed bug where media placeholders were removed after resize with the forced_root_block setting set to false.
-    Fixed bug where deleting selections with similar sibling nodes sometimes deleted the whole document.
-    Fixed bug with inlite theme where several toolbars would appear scrolling when more than one instance of the editor was in use.
-    Fixed bug where the editor would throw error with the fontselect plugin on hidden editor instances in Firefox.
-    Fixed bug where the background color would not stretch to the font size.
-    Fixed bug where font size would be removed when changing background color.
-    Fixed bug where the undomanager trimmed away whitespace between nodes on undo/redo.
-    Fixed bug where media_dimensions=false in media plugin caused the editor to throw an error.
-    Fixed bug where IE was producing font/u elements within links on paste.
-    Fixed bug where some button tooltips were broken when compat3x was in use.
-    Fixed bug where backspace/delete/typeover would remove the caption element.
-    Fixed bug where powerspell failed to function when compat3x was enabled.
-    Fixed bug where it wasn't possible to apply sub/sup on text with large font size.
-    Fixed bug where pre tags with spaces weren't treated as content.
-    Fixed bug where Meta+A would select the entire document instead of all contents in nested ce=true elements.
-Version 4.5.2 (2017-01-04)
-    Added missing keyboard shortcut description for the underline menu item in the format menu.
-    Fixed bug where external blob urls wasn't properly handled by editor upload logic. Patch contributed by David Oviedo.
-    Fixed bug where urls wasn't treated as a single word by the wordcount plugin.
-    Fixed bug where nbsp characters wasn't treated as word delimiters by the wordcount plugin.
-    Fixed bug where editor instance wasn't properly passed to the format preview logic. Patch contributed by NullQuery.
-    Fixed bug where the fake caret wasn't hidden when you moved selection to a cE=false element.
-    Fixed bug where it wasn't possible to edit existing code sample blocks.
-    Fixed bug where it wasn't possible to delete editor contents if the selection included an empty block.
-    Fixed bug where the formatter wasn't expanding words on some international characters. Patch contributed by Martin Larochelle.
-    Fixed bug where the open link feature wasn't working correctly on IE 11.
-    Fixed bug where enter before/after a cE=false block wouldn't properly padd the paragraph with an br element.
-    Fixed so font size and font family select boxes always displays a value by using the runtime style as a fallback.
-    Fixed so missing plugins will be logged to console as warnings rather than halting the initialization of the editor.
-    Fixed so splitbuttons become normal buttons in advlist plugin if styles are empty. Patch contributed by René Schleusner.
-    Fixed so you can multi insert rows/cols by selecting table cells and using insert rows/columns.
-Version 4.5.1 (2016-12-07)
-    Fixed bug where the lists plugin wouldn't initialize without the advlist plugins if served from cdn.
-    Fixed bug where selectors with "*" would cause the style format preview to throw an error.
-    Fixed bug with toggling lists off on lists with empty list items would throw an error.
-    Fixed bug where editing images would produce non existing blob uris.
-    Fixed bug where the offscreen toc selection would be treated as the real toc element.
-    Fixed bug where the aria level attribute for element path would have an incorrect start index.
-    Fixed bug where the offscreen selection of cE=false that where very wide would be shown onscreen. Patch contributed by Steven Bufton.
-    Fixed so the default_link_target gets applied to links created by the autolink plugin.
-    Fixed so that the name attribute gets removed by the anchor plugin if editing anchors.
-Version 4.5.0 (2016-11-23)
-    Added new toc plugin allows you to insert table of contents based on editor headings.
-    Added new auto complete menu to all url fields. Adds history, link to anchors etc.
-    Added new sidebar api that allows you to add custom sidebar panels and buttons to toggle these.
-    Added new insert menu button that allows you to have multiple insert functions under the same menu button.
-    Added new open link feature to ctrl+click, alt+enter and context menu.
-    Added new media_embed_handler option to allow the media plugin to be populated with custom embeds.
-    Added new support for editing transparent images using the image tools dialog.
-    Added new images_reuse_filename option to allow filenames of images to be retained for upload.
-    Added new security feature where links with target="_blank" will by default get rel="noopener noreferrer".
-    Added new allow_unsafe_link_target to allow you to opt-out of the target="_blank" security feature.
-    Added new style_formats_autohide option to automatically hide styles based on context.
-    Added new codesample_content_css option to specify where the code sample prism css is loaded from.
-    Added new support for Japanese/Chinese word count following the unicode standards on this.
-    Added new fragmented undo levels this dramatically reduces flicker on contents with iframes.
-    Added new live previews for complex elements like table or lists.
-    Fixed bug where it wasn't possible to properly tab between controls in a dialog with a disabled form item control.
-    Fixed bug where firefox would generate a rectangle on elements produced after/before a cE=false elements.
-    Fixed bug with advlist plugin not switching list element format properly in some edge cases.
-    Fixed bug where col/rowspans wasn't correctly computed by the table plugin in some cases.
-    Fixed bug where the table plugin would thrown an error if object_resizing was disabled.
-    Fixed bug where some invalid markup would cause issues when running in XHTML mode. Patch contributed by Charles Bourasseau.
-    Fixed bug where the fullscreen class wouldn't be removed properly when closing dialogs.
-    Fixed bug where the PastePlainTextToggle event wasn't fired by the paste plugin when the state changed.
-    Fixed bug where table the row type wasn't properly updated in table row dialog. Patch contributed by Matthias Balmer.
-    Fixed bug where select all and cut wouldn't place caret focus back to the editor in WebKit. Patch contributed by Daniel Jalkut.
-    Fixed bug where applying cell/row properties to multiple cells/rows would reset other unchanged properties.
-    Fixed bug where some elements in the schema would have redundant/incorrect children.
-    Fixed bug where selector and target options would cause issues if used together.
-    Fixed bug where drag/drop of images from desktop on chrome would thrown an error.
-    Fixed bug where cut on WebKit/Blink wouldn't add an undo level.
-    Fixed bug where IE 11 would scroll to the cE=false elements when they where selected.
-    Fixed bug where keys like F5 wouldn't work when a cE=false element was selected.
-    Fixed bug where the undo manager wouldn't stop the typing state when commands where executed.
-    Fixed bug where unlink on wrapped links wouldn't work properly.
-    Fixed bug with drag/drop of images on WebKit where the image would be deleted form the source editor.
-    Fixed bug where the visual characters mode would be disabled when contents was extracted from the editor.
-    Fixed bug where some browsers would toggle of formats applied to the caret when clicking in the editor toolbar.
-    Fixed bug where the custom theme function wasn't working correctly.
-    Fixed bug where image option for custom buttons required you to have icon specified as well.
-    Fixed bug where the context menu and contextual toolbars would be visible at the same time and sometimes overlapping.
-    Fixed bug where the noneditable plugin would double wrap elements when using the noneditable_regexp option.
-    Fixed bug where tables would get padding instead of margin when you used the indent button.
-    Fixed bug where the charmap plugin wouldn't properly insert non breaking spaces.
-    Fixed bug where the color previews in color input boxes wasn't properly updated.
-    Fixed bug where the list items of previous lists wasn't merged in the right order.
-    Fixed bug where it wasn't possible to drag/drop inline-block cE=false elements on IE 11.
-    Fixed bug where some table cell merges would produce incorrect rowspan/colspan.
-    Fixed so the font size of the editor defaults to 14px instead of 11px this can be overridden by custom css.
-    Fixed so wordcount is debounced to reduce cpu hogging on larger texts.
-    Fixed so tinymce global gets properly exported as a module when used with some module bundlers.
-    Fixed so it's possible to specify what css properties you want to preview on specific formats.
-    Fixed so anchors are contentEditable=false while within the editor.
-    Fixed so selected contents gets wrapped in a inline code element by the codesample plugin.
-    Fixed so conditional comments gets properly stripped independent of case. Patch contributed by Georgii Dolzhykov.
-    Fixed so some escaped css sequences gets properly handled. Patch contributed by Georgii Dolzhykov.
-    Fixed so notifications with the same message doesn't get displayed at the same time.
-    Fixed so F10 can be used as an alternative key to focus to the toolbar.
-    Fixed various api documentation issues and typos.
-    Removed layer plugin since it wasn't really ported from 3.x and there doesn't seem to be much use for it.
-    Removed moxieplayer.swf from the media plugin since it wasn't used by the media plugin.
-    Removed format state from the advlist plugin to be more consistent with common word processors.
-Version 4.4.3 (2016-09-01)
-    Fixed bug where copy would produce an exception on Chrome.
-    Fixed bug where deleting lists on IE 11 would merge in correct text nodes.
-    Fixed bug where deleting partial lists with indentation wouldn't cause proper normalization.
-Version 4.4.2 (2016-08-25)
-    Added new importcss_exclusive option to disable unique selectors per group.
-    Added new group specific selector_converter option to importcss plugin.
-    Added new codesample_languages option to apply custom languages to codesample plugin.
-    Added new codesample_dialog_width/codesample_dialog_height options.
-    Fixed bug where fullscreen button had an incorrect keyboard shortcut.
-    Fixed bug where backspace/delete wouldn't work correctly from a block to a cE=false element.
-    Fixed bug where smartpaste wasn't detecting links with special characters in them like tilde.
-    Fixed bug where the editor wouldn't get proper focus if you clicked on a cE=false element.
-    Fixed bug where it wasn't possible to copy/paste table rows that had merged cells.
-    Fixed bug where merging cells could some times produce invalid col/rowspan attibute values.
-    Fixed bug where getBody would sometimes thrown an exception now it just returns null if the iframe is clobbered.
-    Fixed bug where drag/drop of cE=false element wasn't properly constrained to viewport.
-    Fixed bug where contextmenu on Mac would collapse any selection to a caret.
-    Fixed bug where rtl mode wasn't rendered properly when loading a language pack with the rtl flag.
-    Fixed bug where Kamer word bounderies would be stripped from contents.
-    Fixed bug where lists would sometimes render two dots or numbers on the same line.
-    Fixed bug where the skin_url wasn't used by the inlite theme.
-    Fixed so data attributes are ignored when comparing formats in the formatter.
-    Fixed so it's possible to disable inline toolbars in the inlite theme.
-    Fixed so template dialog gets resized if it doesn't fit the window viewport.
-Version 4.4.1 (2016-07-26)
-    Added smart_paste option to paste plugin to allow disabling the paste behavior if needed.
-    Fixed bug where png urls wasn't properly detected by the smart paste logic.
-    Fixed bug where the element path wasn't working properly when multiple editor instances where used.
-    Fixed bug with creating lists out of multiple paragraphs would just create one list item instead of multiple.
-    Fixed bug where scroll position wasn't properly handled by the inlite theme to place the toolbar properly.
-    Fixed bug where multiple instances of the editor using the inlite theme didn't render the toolbar properly.
-    Fixed bug where the shortcut label for fullscreen mode didn't match the actual shortcut key.
-    Fixed bug where it wasn't possible to select cE=false blocks using touch devices on for example iOS.
-    Fixed bug where it was possible to select the child image within a cE=false on IE 11.
-    Fixed so inserts of html containing lists doesn't merge with any existing lists unless it's a paste operation.
-Version 4.4.0 (2016-06-30)
-    Added new inlite theme this is a more lightweight inline UI.
-    Added smarter paste logic that auto detects urls in the clipboard and inserts images/links based on that.
-    Added a better image resize algorithm for better image quality in the imagetools plugin.
-    Fixed bug where it wasn't possible to drag/dropping cE=false elements on FF.
-    Fixed bug where backspace/delete before/after a cE=false block would produce a new paragraph.
-    Fixed bug where list style type css property wasn't preserved when indenting lists.
-    Fixed bug where merging of lists where done even if the list style type was different.
-    Fixed bug where the image_dataimg_filter function wasn't used when pasting images.
-    Fixed bug where nested editable within a non editable element would cause scroll on focus in Chrome.
-    Fixed so invalid targets for inline mode is blocked on initialization. We only support elements that can have children.
-Version 4.3.13 (2016-06-08)
-    Added characters with a diacritical mark to charmap plugin. Patch contributed by Dominik Schilling.
-    Added better error handling if the image proxy service would produce errors.
-    Fixed issue with pasting list items into list items would produce nested list rather than a merged list.
-    Fixed bug where table selection could get stuck in selection mode for inline editors.
-    Fixed bug where it was possible to place the caret inside the resize grid elements.
-    Fixed bug where it wasn't possible to place in elements horizontally adjacent cE=false blocks.
-    Fixed bug where multiple notifications wouldn't be properly placed on screen.
-    Fixed bug where multiple editor instance of the same id could be produces in some specific integrations.
-Version 4.3.12 (2016-05-10)
-    Fixed bug where focus calls couldn't be made inside the editors PostRender event handler.
-    Fixed bug where some translations wouldn't work as expected due to a bug in editor.translate.
-    Fixed bug where the node change event could fire with a node out side the root of the editor.
-    Fixed bug where Chrome wouldn't properly present the keyboard paste clipboard details when paste was clicked.
-    Fixed bug where merged cells in tables couldn't be selected from right to left.
-    Fixed bug where insert row wouldn't properly update a merged cells rowspan property.
-    Fixed bug where the color input boxes preview field wasn't properly set on initialization.
-    Fixed bug where IME composition inside table cells wouldn't work as expected on IE 11.
-    Fixed so all shadow dom support is under and experimental flag due to flaky browser support.
-Version 4.3.11 (2016-04-25)
-    Fixed bug where it wasn't possible to insert empty blocks though the API unless they where padded.
-    Fixed bug where you couldn't type the Euro character on Windows.
-    Fixed bug where backspace/delete from a cE=false element to a text block didn't work properly.
-    Fixed bug where the text color default grid would render incorrectly.
-    Fixed bug where the codesample plugin wouldn't load the css in the editor for multiple editors.
-    Fixed so the codesample plugin textarea gets focused by default.
-Version 4.3.10 (2016-04-12)
-    Fixed bug where the key "y" on WebKit couldn't be entered due to conflict with keycode for F10 on keypress.
-Version 4.3.9 (2016-04-12)
-    Added support for focusing the contextual toolbars using keyboard.
-    Added keyboard support for slider UI controls. You can no increase/decrease using arrow keys.
-    Added url pattern matching for Dailymotion to media plugin. Patch contributed by Bertrand Darbon.
-    Added body_class to template plugin preview. Patch contributed by Milen Petrinski.
-    Added options to better override textcolor pickers with custom colors. Patch contributed by Xavier Boubert.
-    Added visual arrows to inline contextual toolbars so that they point to the element being active.
-    Fixed so toolbars for tables or other larger elements get better positioned below the scrollable viewport.
-    Fixed bug where it was possible to click links inside cE=false blocks.
-    Fixed bug where event targets wasn't properly handled in Safari Technical Preview.
-    Fixed bug where drag/drop text in FF 45 would make the editor caret invisible.
-    Fixed bug where the remove state wasn't properly set on editor instances when detected as clobbered.
-    Fixed bug where offscreen selection of some cE=false elements would render onscreen. Patch contributed by Steven Bufton
-    Fixed bug where enter would clone styles out side the root on editors inside a span. Patch contributed by ChristophKaser.
-    Fixed bug where drag/drop of images into the editor didn't work correctly in FF.
-    Fixed so the first item in panels for the imagetools dialog gets proper keyboard focus.
-    Changed the Meta+Shift+F shortcut to Ctrl+Shift+F since Czech, Slovak, Polish languages used the first one for input.
-Version 4.3.8 (2016-03-15)
-    Fixed bug where inserting HR at the end of a block element would produce an extra empty block.
-    Fixed bug where links would be clickable when readonly mode was enabled.
-    Fixed bug where the formatter would normalize to the wrong node on very specific content.
-    Fixed bug where some nested list items couldn't be indented properly.
-    Fixed bug where links where clickable in the preview dialog.
-    Fixed so the alt attribute doesn't get padded with an empty value by default.
-    Fixed so nested alignment works more correctly. You will now alter the alignment to the closest block parent.
-Version 4.3.7 (2016-03-02)
-    Fixed bug where incorrect icons would be rendered for imagetools edit and color levels.
-    Fixed bug where navigation using arrow keys inside a SelectBox didn't move up/down.
-    Fixed bug where the visualblocks plugin would render borders round internal UI elements.
-Version 4.3.6 (2016-03-01)
-    Added new paste_remember_plaintext_info option to allow a global disable of the plain text mode notification.
-    Added new PastePlainTextToggle event that fires when plain text mode toggles on/off.
-    Fixed bug where it wasn't possible to select media elements since the drag logic would snap it to mouse cursor.
-    Fixed bug where it was hard to place the caret inside nested cE=true elements when the outer cE=false element was focused.
-    Fixed bug where editors wouldn't properly initialize if both selector and mode where used.
-    Fixed bug where IME input inside table cells would switch the IME off.
-    Fixed bug where selection inside the first table cell would cause the whole table cell to get selected.
-    Fixed bug where error handling of images being uploaded wouldn't properly handle faulty statuses.
-    Fixed bug where inserting contents before a HR would cause an exception to be thrown.
-    Fixed bug where copy/paste of Excel data would be inserted as an image.
-    Fixed caret position issues with copy/paste of inline block cE=false elements.
-    Fixed issues with various menu item focus bugs in Chrome. Where the focused menu bar item wasn't properly blurred.
-    Fixed so the notifications have a solid background since it would be hard to read if there where text under it.
-    Fixed so notifications gets animated similar to the ones used by dialogs.
-    Fixed so larger images that gets pasted is handled better.
-    Fixed so the window close button is more uniform on various platform and also increased it's hit area.
-Version 4.3.5 (2016-02-11)
-    Npm version bump due to package not being fully updated.
-Version 4.3.4 (2016-02-11)
-    Added new OpenWindow/CloseWindow events that gets fired when windows open/close.
-    Added new NewCell/NewRow events that gets fired when table cells/rows are created.
-    Added new Promise return value to tinymce.init makes it easier to handle initialization.
-    Removed the jQuery version the jQuery plugin is now moved into the main package.
-    Removed jscs from build process since eslint can now handle code style checking.
-    Fixed various bugs with drag/drop of contentEditable:false elements.
-    Fixed bug where deleting of very specific nested list items would result in an odd list.
-    Fixed bug where lists would get merged with adjacent lists outside the editable inline root.
-    Fixed bug where MS Edge would crash when closing a dialog then clicking a menu item.
-    Fixed bug where table cell selection would add undo levels.
-    Fixed bug where table cell selection wasn't removed when inline editor where removed.
-    Fixed bug where table cell selection wouldn't work properly on nested tables.
-    Fixed bug where table merge menu would be available when merging between thead and tbody.
-    Fixed bug where table row/column resize wouldn't get properly removed when the editor was removed.
-    Fixed bug where Chrome would scroll to the editor if there where a empty hash value in document url.
-    Fixed bug where the cache suffix wouldn't work correctly with the importcss plugin.
-    Fixed bug where selection wouldn't work properly on MS Edge on Windows Phone 10.
-    Fixed so adjacent pre blocks gets joined into one pre block since that seems like the user intent.
-    Fixed so events gets properly dispatched in shadow dom. Patch provided by Nazar Mokrynskyi.
-Version 4.3.3 (2016-01-14)
-    Added new table_resize_bars configuration setting.  This setting allows you to disable the table resize bars.
-    Added new beforeInitialize event to tinymce.util.XHR lets you modify XHR properties before open. Patch contributed by Brent Clintel.
-    Added new autolink_pattern setting to autolink plugin. Enables you to override the default autolink formats. Patch contributed by Ben Tiedt.
-    Added new charmap option that lets you override the default charmap of the charmap plugin.
-    Added new charmap_append option that lets you add new characters to the default charmap of the charmap plugin.
-    Added new insertCustomChar event that gets fired when a character is inserted by the charmap plugin.
-    Fixed bug where table cells started with a superfluous &nbsp; in IE10+.
-    Fixed bug where table plugin would retain all BR tags when cells were merged.
-    Fixed bug where media plugin would strip underscores from youtube urls.
-    Fixed bug where IME input would fail on IE 11 if you typed within a table.
-    Fixed bug where double click selection of a word would remove the space before the word on insert contents.
-    Fixed bug where table plugin would produce exceptions when hovering tables with invalid structure.
-    Fixed bug where fullscreen wouldn't scroll back to it's original position when untoggled.
-    Fixed so the template plugins templates setting can be a function that gets a callback that can provide templates.
-Version 4.3.2 (2015-12-14)
-    Fixed bug where the resize bars for table cells were not affected by the object_resizing property.
-    Fixed bug where the contextual table toolbar would appear incorrectly if TinyMCE was initialized inline inside a table.
-    Fixed bug where resizing table cells did not fire a node change event or add an undo level.
-    Fixed bug where double click selection of text on IE 11 wouldn't work properly.
-    Fixed bug where codesample plugin would incorrectly produce br elements inside code elements.
-    Fixed bug where media plugin would strip dashes from youtube urls.
-    Fixed bug where it was possible to move the caret into the table resize bars.
-    Fixed bug where drag/drop into a cE=false element was possible on IE.
-Version 4.3.1 (2015-11-30)
-    Fixed so it's possible to disable the table inline toolbar by setting it to false or an empty string.
-    Fixed bug where it wasn't possible to resize some tables using the drag handles.
-    Fixed bug where unique id:s would clash for multiple editor instances and cE=false selections.
-    Fixed bug where the same plugin could be initialized multiple times.
-    Fixed bug where the table inline toolbars would be displayed at the same time as the image toolbars.
-    Fixed bug where the table selection rect wouldn't be removed when selecting another control element.
-Version 4.3.0 (2015-11-23)
-    Added new table column/row resize support. Makes it a lot more easy to resize the columns/rows in a table.
-    Added new table inline toolbar. Makes it easier to for example add new rows or columns to a table.
-    Added new notification API. Lets you display floating notifications to the end user.
-    Added new codesample plugin that lets you insert syntax highlighted pre elements into the editor.
-    Added new image_caption to images. Lets you create images with captions using a HTML5 figure/figcaption elements.
-    Added new live previews of embeded videos. Lets you play the video right inside the editor.
-    Added new setDirty method and "dirty" event to the editor. Makes it easier to track the dirty state change.
-    Added new setMode method to Editor instances that lets you dynamically switch between design/readonly.
-    Added new core support for contentEditable=false elements within the editor overrides the browsers broken behavior.
-    Rewrote the noneditable plugin to use the new contentEditable false core logic.
-    Fixed so the dirty state doesn't set to false automatically when the undo index is set to 0.
-    Fixed the Selection.placeCaretAt so it works better on IE when the coordinate is between paragraphs.
-    Fixed bug where data-mce-bogus="all" element contents where counted by the word count plugin.
-    Fixed bug where contentEditable=false elements would be indented by the indent buttons.
-    Fixed bug where images within contentEditable=false would be selected in WebKit on mouse click.
-    Fixed bug in DOMUntils split method where the replacement parameter wouldn't work on specific cases.
-    Fixed bug where the importcss plugin would import classes from the skin content css file.
-    Fixed so all button variants have a wrapping span for it's text to make it easier to skin.
-    Fixed so it's easier to exit pre block using the arrow keys.
-    Fixed bug where listboxes with fix widths didn't render correctly.
-Version 4.2.8 (2015-11-13)
-    Fixed bug where it was possible to delete tables as the inline root element if all columns where selected.
-    Fixed bug where the UI buttons active state wasn't properly updated due to recent refactoring of that logic.
-Version 4.2.7 (2015-10-27)
-    Fixed bug where backspace/delete would remove all formats on the last paragraph character in WebKit/Blink.
-    Fixed bug where backspace within a inline format element with a bogus caret container would move the caret.
-    Fixed bug where backspace/delete on selected table cells wouldn't add an undo level.
-    Fixed bug where script tags embedded within the editor could sometimes get a mce- prefix prepended to them
-    Fixed bug where validate: false option could produce an error to be thrown from the Serialization step.
-    Fixed bug where inline editing of a table as the root element could let the user delete that table.
-    Fixed bug where inline editing of a table as the root element wouldn't properly handle enter key.
-    Fixed bug where inline editing of a table as the root element would normalize the selection incorrectly.
-    Fixed bug where inline editing of a list as the root element could let the user delete that list.
-    Fixed bug where inline editing of a list as the root element could let the user split that list.
-    Fixed bug where resize handles would be rendered on editable root elements such as table.
-Version 4.2.6 (2015-09-28)
-    Added capability to set request headers when using XHRs.
-    Added capability to upload local images automatically default delay is set to 30 seconds after editing images.
-    Added commands ids mceEditImage, mceAchor and mceMedia to be avaiable from execCommand.
-    Added Edge browser to saucelabs grunt task. Patch contributed by John-David Dalton.
-    Fixed bug where blob uris not produced by tinymce would produce HTML invalid markup.
-    Fixed bug where selection of contents of a nearly empty editor in Edge would sometimes fail.
-    Fixed bug where color styles woudln't be retained on copy/paste in Blink/Webkit.
-    Fixed bug where the table plugin would throw an error when inserting rows after a child table.
-    Fixed bug where the template plugin wouldn't handle functions as variable replacements.
-    Fixed bug where undo/redo sometimes wouldn't work properly when applying formatting collapsed ranges.
-    Fixed bug where shift+delete wouldn't do a cut operation on Blink/WebKit.
-    Fixed bug where cut action wouldn't properly store the before selection bookmark for the undo level.
-    Fixed bug where backspace in side an empty list element on IE would loose editor focus.
-    Fixed bug where the save plugin wouldn't enable the buttons when a change occurred.
-    Fixed bug where Edge wouldn't initialize the editor if a document.domain was specified.
-    Fixed bug where enter key before nested images would sometimes not properly expand the previous block.
-    Fixed bug where the inline toolbars wouldn't get properly hidden when blurring the editor instance.
-    Fixed bug where Edge would paste Chinese characters on some Windows 10 installations.
-    Fixed bug where IME would loose focus on IE 11 due to the double trailing br bug fix.
-    Fixed bug where the proxy url in imagetools was incorrect. Patch contributed by Wong Ho Wang.
-Version 4.2.5 (2015-08-31)
-    Added fullscreen capability to embedded youtube and vimeo videos.
-    Fixed bug where the uploadImages call didn't work on IE 10.
-    Fixed bug where image place holders would be uploaded by uploadImages call.
-    Fixed bug where images marked with bogus would be uploaded by the uploadImages call.
-    Fixed bug where multiple calls to uploadImages would result in decreased performance.
-    Fixed bug where pagebreaks were editable to imagetools patch contributed by Rasmus Wallin.
-    Fixed bug where the element path could cause too much recursion exception.
-    Fixed bug for domains containing ".min". Patch contributed by Loïc Février.
-    Fixed so validation of external links to accept a number after www. Patch contributed by Victor Carvalho.
-    Fixed so the charmap is exposed though execCommand. Patch contributed by Matthew Will.
-    Fixed so that the image uploads are concurrent for improved performance.
-    Fixed various grammar problems in inline documentation. Patches provided by nikolas.
-Version 4.2.4 (2015-08-17)
-    Added picture as a valid element to the HTML 5 schema. Patch contributed by Adam Taylor.
-    Fixed bug where contents would be duplicated on drag/drop within the same editor.
-    Fixed bug where floating/alignment of images on Edge wouldn't work properly.
-    Fixed bug where it wasn't possible to drag images on IE 11.
-    Fixed bug where image selection on Edge would sometimes fail.
-    Fixed bug where contextual toolbars icons wasn't rendered properly when using the toolbar_items_size.
-    Fixed bug where searchreplace dialog doesn't get prefilled with the selected text.
-    Fixed bug where fragmented matches wouldn't get properly replaced by the searchreplace plugin.
-    Fixed bug where enter key wouldn't place the caret if was after a trailing space within an inline element.
-    Fixed bug where the autolink plugin could produce multiple links for the same text on Gecko.
-    Fixed bug where EditorUpload could sometimes throw an exception if the blob wasn't found.
-    Fixed xss issues with media plugin not properly filtering out some script attributes.
-Version 4.2.3 (2015-07-30)
-    Fixed bug where image selection wasn't possible on Edge due to incompatible setBaseAndExtend API.
-    Fixed bug where image blobs urls where not properly destroyed by the imagetools plugin.
-    Fixed bug where keyboard shortcuts wasn't working correctly on IE 8.
-    Fixed skin issue where the borders of panels where not visible on IE 8.
-Version 4.2.2 (2015-07-22)
-    Fixed bug where float panels were not being hidden on inline editor blur when fixed_toolbar_container config option was in use.
-    Fixed bug where combobox states wasn't properly updated if contents where updated without keyboard.
-    Fixed bug where pasting into textbox or combobox would move the caret to the end of text.
-    Fixed bug where removal of bogus span elements before block elements would remove whitespace between nodes.
-    Fixed bug where repositioning of inline toolbars where async and producing errors if the editor was removed from DOM to early. Patch by iseulde.
-    Fixed bug where element path wasn't working correctly. Patch contributed by iseulde.
-    Fixed bug where menus wasn't rendered correctly when custom images where added to a menu. Patch contributed by Naim Hammadi.
-Version 4.2.1 (2015-06-29)
-    Fixed bug where back/forward buttons in the browser would render blob images as broken images.
-    Fixed bug where Firefox would throw regexp to big error when replacing huge base64 chunks.
-    Fixed bug rendering issues with resize and context toolbars not being placed properly until next animation frame.
-    Fixed bug where the rendering of the image while cropping would some times not be centered correctly.
-    Fixed bug where listbox items with submenus would me selected as active.
-    Fixed bug where context menu where throwing an error when rendering.
-    Fixed bug where resize both option wasn't working due to resent addClass API change. Patch contributed by Jogai.
-    Fixed bug where a hideAll call for container rendered inline toolbars would throw an error.
-    Fixed bug where onclick event handler on combobox could cause issues if element.id was a function by some polluting libraries.
-    Fixed bug where listboxes wouldn't get proper selected sub menu item when using link_list or image_list.
-    Fixed so the UI controls are as wide as 4.1.x to avoid wrapping controls in toolbars.
-    Fixed so the imagetools dialog is adaptive for smaller screen sizes.
-Version 4.2.0 (2015-06-25)
-    Added new flat default skin to make the UI more modern.
-    Added new imagetools plugin, lets you crop/resize and apply filters to images.
-    Added new contextual toolbars support to the API lets you add floating toolbars for specific CSS selectors.
-    Added new promise feature fill as tinymce.util.Promise.
-    Added new built in image upload feature lets you upload any base64 encoded image within the editor as files.
-    Fixed bug where resize handles would appear in the right position in the wrong editor when switching between resizable content in different inline editors.
-    Fixed bug where tables would not be inserted in inline mode due to previous float panel fix.
-    Fixed bug where floating panels would remain open when focus was lost on inline editors.
-    Fixed bug where cut command on Chrome would thrown a browser security exception.
-    Fixed bug where IE 11 sometimes would report an incorrect size for images in the image dialog.
-    Fixed bug where it wasn't possible to remove inline formatting at the end of block elements.
-    Fixed bug where it wasn't possible to delete table cell contents when cell selection was vertical.
-    Fixed bug where table cell wasn't emptied from block elements if delete/backspace where pressed in empty cell.
-    Fixed bug where cmd+shift+arrow didn't work correctly on Firefox mac when selecting to start/end of line.
-    Fixed bug where removal of bogus elements would sometimes remove whitespace between nodes.
-    Fixed bug where the resize handles wasn't updated when the main window was resized.
-    Fixed so script elements gets removed by default to prevent possible XSS issues in default config implementations.
-    Fixed so the UI doesn't need manual reflows when using non native layout managers.
-    Fixed so base64 encoded images doesn't slow down the editor on modern browsers while editing.
-    Fixed so all UI elements uses touch events to improve mobile device support.
-    Removed the touch click quirks patch for iOS since it did more harm than good.
-    Removed the non proportional resize handles since. Unproportional resize can still be done by holding the shift key.
-Version 4.1.10 (2015-05-05)
-    Fixed bug where plugins loaded with compat3x would sometimes throw errors when loading using the jQuery version.
-    Fixed bug where extra empty paragraphs would get deleted in WebKit/Blink due to recent Quriks fix.
-    Fixed bug where the editor wouldn't work properly on IE 12 due to some required browser sniffing.
-    Fixed bug where formatting shortcut keys where interfering with Mac OS X screenshot keys.
-    Fixed bug where the caret wouldn't move to the next/previous line boundary on Cmd+Left/Right on Gecko.
-    Fixed bug where it wasn't possible to remove formats from very specific nested contents.
-    Fixed bug where undo levels wasn't produced when typing letters using the shift or alt+ctrl modifiers.
-    Fixed bug where the dirty state wasn't properly updated when typing using the shift or alt+ctrl modifiers.
-    Fixed bug where an error would be thrown if an autofocused editor was destroyed quickly after its initialization. Patch provided by thorn0.
-    Fixed issue with dirty state not being properly updated on redo operation.
-    Fixed issue with entity decoder not handling incorrectly written numeric entities.
-    Fixed issue where some PI element values wouldn't be properly encoded.
-Version 4.1.9 (2015-03-10)
-    Fixed bug where indentation wouldn't work properly for non list elements.
-    Fixed bug with image plugin not pulling the image dimensions out correctly if a custom document_base_url was used.
-    Fixed bug where ctrl+alt+[1-9] would conflict with the AltGr+[1-9] on Windows. New shortcuts is ctrl+shift+[1-9].
-    Fixed bug with removing formatting on nodes in inline mode would sometimes include nodes outside the editor body.
-    Fixed bug where extra nbsp:s would be inserted when you replaced a word surrounded by spaces using insertContent.
-    Fixed bug with pasting from Google Docs would produce extra strong elements and line feeds.
-Version 4.1.8 (2015-03-05)
-    Added new html5 sizes attribute to img elements used together with srcset.
-    Added new elementpath option that makes it possible to disable the element path but keep the statusbar.
-    Added new option table_style_by_css for the table plugin to set table styling with css rather than table attributes.
-    Added new link_assume_external_targets option to prompt the user to prepend http:// prefix if the supplied link does not contain a protocol prefix.
-    Added new image_prepend_url option to allow a custom base path/url to be added to images.
-    Added new table_appearance_options option to make it possible to disable some options.
-    Added new image_title option to make it possible to alter the title of the image, disabled by default.
-    Fixed bug where selection starting from out side of the body wouldn't produce a proper selection range on IE 11.
-    Fixed bug where pressing enter twice before a table moves the cursor in the table and causes a javascript error.
-    Fixed bug where advanced image styles were not respected.
-    Fixed bug where the less common Shift+Delete didn't produce a proper cut operation on WebKit browsers.
-    Fixed bug where image/media size constrain logic would produce NaN when handling non number values.
-    Fixed bug where internal classes where removed by the removeformat command.
-    Fixed bug with creating links table cell contents with a specific selection would throw a exceptions on WebKit/Blink.
-    Fixed bug where valid_classes option didn't work as expected according to docs. Patch provided by thorn0.
-    Fixed bug where jQuery plugin would patch the internal methods multiple times. Patch provided by Drew Martin.
-    Fixed bug where backspace key wouldn't delete the current selection of newly formatted content.
-    Fixed bug where type over of inline formatting elements wouldn't properly keep the format on WebKit/Blink.
-    Fixed bug where selection needed to be properly normalized on modern IE versions.
-    Fixed bug where Command+Backspace didn't properly delete the whole line of text but the previous word.
-    Fixed bug where UI active states wheren't properly updated on IE if you placed caret within the current range.
-    Fixed bug where delete/backspace on WebKit/Blink would remove span elements created by the user.
-    Fixed bug where delete/backspace would produce incorrect results when deleting between two text blocks with br elements.
-    Fixed bug where captions where removed when pasting from MS Office.
-    Fixed bug where lists plugin wouldn't properly remove fully selected nested lists.
-    Fixed bug where the ttf font used for icons would throw an warning message on Gecko on Mac OS X.
-    Fixed a bug where applying a color to text did not update the undo/redo history.
-    Fixed so shy entities gets displayed when using the visualchars plugin.
-    Fixed so removeformat removes ins/del by default since these might be used for strikethough.
-    Fixed so multiple language packs can be loaded and added to the global I18n data structure.
-    Fixed so transparent color selection gets treated as a normal color selection. Patch contributed by Alexander Hofbauer.
-    Fixed so it's possible to disable autoresize_overflow_padding, autoresize_bottom_margin options by setting them to false.
-    Fixed so the charmap plugin shows the description of the character in the dialog. Patch contributed by Jelle Hissink.
-    Removed address from the default list of block formats since it tends to be missused.
-    Fixed so the pre block format is called preformatted to make it more verbose.
-    Fixed so it's possible to context scope translation strings this isn't needed most of the time.
-    Fixed so the max length of the width/height input fields of the media dialog is 5 instead of 3.
-    Fixed so drag/dropped contents gets properly processed by paste plugin since it's basically a paste. Patch contributed by Greg Fairbanks.
-    Fixed so shortcut keys for headers is ctrl+alt+[1-9] instead of ctrl+[1-9] since these are for switching tabs in the browsers.
-    Fixed so "u" doesn't get converted into a span element by the legacy input filter. Since this is now a valid HTML5 element.
-    Fixed font families in order to provide appropriate web-safe fonts.
-Version 4.1.7 (2014-11-27)
-    Added HTML5 schema support for srcset, source and picture. Patch contributed by mattheu.
-    Added new cache_suffix setting to enable cache busting by producing unique urls.
-    Added new paste_convert_word_fake_lists option to enable users to disable the fake lists convert logic.
-    Fixed so advlist style changes adds undo levels for each change.
-    Fixed bug where WebKit would sometimes produce an exception when the autolink plugin where looking for URLs.
-    Fixed bug where IE 7 wouldn't be rendered properly due to aggressive css compression.
-    Fixed bug where DomQuery wouldn't accept window as constructor element.
-    Fixed bug where the color picker in 3.x dialogs wouldn't work properly. Patch contributed by Callidior.
-    Fixed bug where the image plugin wouldn't respect the document_base_url.
-    Fixed bug where the jQuery plugin would fail to append to elements named array prototype names.
-Version 4.1.6 (2014-10-08)
-    Fixed bug with clicking on the scrollbar of the iframe would cause a JS error to be thrown.
-    Fixed bug where null would produce an exception if you passed it to selection.setRng.
-    Fixed bug where Ctrl/Cmd+Tab would indent the current list item if you switched tabs in the browser.
-    Fixed bug where pasting empty cells from Excel would result in a broken table.
-    Fixed bug where it wasn't possible to switch back to default list style type.
-    Fixed issue where the select all quirk fix would fire for other modifiers than Ctrl/Cmd combinations.
-    Replaced jake with grunt since it is more mainstream and has better plugin support.
-Version 4.1.5 (2014-09-09)
-    Fixed bug where sometimes the resize rectangles wouldn't properly render on images on WebKit/Blink.
-    Fixed bug in list plugin where delete/backspace would merge empty LI elements in lists incorrectly.
-    Fixed bug where empty list elements would result in empty LI elements without it's parent container.
-    Fixed bug where backspace in empty caret formatted element could produce an type error exception of Gecko.
-    Fixed bug where lists pasted from word with a custom start index above 9 wouldn't be properly handled.
-    Fixed bug where tabfocus plugin would tab out of the editor instance even if the default action was prevented.
-    Fixed bug where tabfocus wouldn't tab properly to other adjacent editor instances.
-    Fixed bug where the DOMUtils setStyles wouldn't properly removed or update the data-mce-style attribute.
-    Fixed bug where dialog select boxes would be placed incorrectly if document.body wasn't statically positioned.
-    Fixed bug where pasting would sometimes scroll to the top of page if the user was using the autoresize plugin.
-    Fixed bug where caret wouldn't be properly rendered by Chrome when clicking on the iframes documentElement.
-    Fixed so custom images for menubutton/splitbutton can be provided. Patch contributed by Naim Hammadi.
-    Fixed so the default action of windows closing can be prevented by blocking the default action of the close event.
-    Fixed so nodeChange and focus of the editor isn't automatically performed when opening sub dialogs.
-Version 4.1.4 (2014-08-21)
-    Added new media_filter_html option to media plugin that blocks any conditional comments, scripts etc within a video element.
-    Added new content_security_policy option allows you to set custom policy for iframe contents. Patch contributed by Francois Chagnon.
-    Fixed bug where activate/deactivate events wasn't firing properly when switching between editors.
-    Fixed bug where placing the caret on iOS was difficult due to a WebKit bug with touch events.
-    Fixed bug where the resize helper wouldn't render properly on older IE versions.
-    Fixed bug where resizing images inside tables on older IE versions would sometimes fail depending mouse position.
-    Fixed bug where editor.insertContent would produce an exception when inserting select/option elements.
-    Fixed bug where extra empty paragraphs would be produced if block elements where inserted inside span elements.
-    Fixed bug where the spellchecker menu item wouldn't be properly checked if spell checking was started before it was rendered.
-    Fixed bug where the DomQuery filter function wouldn't remove non elements from collection.
-    Fixed bug where document with custom document.domain wouldn't properly render the editor.
-    Fixed bug where IE 8 would throw exception when trying to enter invalid color values into colorboxes.
-    Fixed bug where undo manager could incorrectly add an extra undo level when custom resize handles was removed.
-    Fixed bug where it wouldn't be possible to alter cell properties properly on table cells on IE 8.
-    Fixed so the color picker button in table dialog isn't shown unless you include the colorpicker plugin or add your own custom color picker.
-    Fixed so activate/deactivate events fire when windowManager opens a window since.
-    Fixed so the table advtab options isn't separated by an underscore to normalize naming with image_advtab option.
-    Fixed so the table cell dialog has proper padding when the advanced tab in disabled.
-Version 4.1.3 (2014-07-29)
-    Added event binding logic to tinymce.util.XHR making it possible to override headers and settings before any request is made.
-    Fixed bug where drag events wasn't fireing properly on older IE versions since the event handlers where bound to document.
-    Fixed bug where drag/dropping contents within the editor on IE would force the contents into plain text mode even if it was internal content.
-    Fixed bug where IE 7 wouldn't open menus properly due to a resize bug in the browser auto closing them immediately.
-    Fixed bug where the DOMUtils getPos logic wouldn't produce a valid coordinate inside the body if the body was positioned non static.
-    Fixed bug where the element path and format state wasn't properly updated if you had the wordcount plugin enabled.
-    Fixed bug where a comment at the beginning of source would produce an exception in the formatter logic.
-    Fixed bug where setAttrib/getAttrib on null would throw exception together with any hooked attributes like style.
-    Fixed bug where table sizes wasn't properly retained when copy/pasting on WebKit/Blink.
-    Fixed bug where WebKit/Blink would produce colors in RGB format instead of the forced HEX format when deleting contents.
-    Fixed bug where the width attribute wasn't updated on tables if you changed the size inside the table dialog.
-    Fixed bug where control selection wasn't properly handled when the caret was placed directly after an image.
-    Fixed bug where selecting the contents of table cells using the selection.select method wouldn't place the caret properly.
-    Fixed bug where the selection state for images wasn't removed when placing the caret right after an image on WebKit/Blink.
-    Fixed bug where all events wasn't properly unbound when and editor instance was removed or destroyed by some external innerHTML call.
-    Fixed bug where it wasn't possible or very hard to select images on iOS when the onscreen keyboard was visible.
-    Fixed so auto_focus can take a boolean argument this will auto focus the last initialized editor might be useful for single inits.
-    Fixed so word auto detect lists logic works better for faked lists that doesn't have specific markup.
-    Fixed so nodeChange gets fired on mouseup as it used to before 4.1.1 we optimized that event to fire less often.
-    Removed the finish menu item from spellchecker menu since it's redundant you can stop spellchecking by toggling menu item or button.
-Version 4.1.2 (2014-07-15)
-    Added offset/grep to DomQuery class works basically the same as it's jQuery equivalent.
-    Fixed bug where backspace/delete or setContent with an empty string would remove header data when using the fullpage plugin.
-    Fixed bug where tinymce.remove with a selector not matching any editors would remove all editors.
-    Fixed bug where resizing of the editor didn't work since the theme was calling setStyles instead of setStyle.
-    Fixed bug where IE 7 would fail to append html fragments to iframe document when using DomQuery.
-    Fixed bug where the getStyle DOMUtils method would produce an exception if it was called with null as it's element.
-    Fixed bug where the paste plugin would remove the element if the none of the paste_webkit_styles rules matched the current style.
-    Fixed bug where contextmenu table items wouldn't work properly on IE since it would some times fire an incorrect selection change.
-    Fixed bug where the padding/border values wasn't used in the size calculation for the body size when using autoresize. Patch contributed by Matt Whelan.
-    Fixed bug where conditional word comments wouldn't be properly removed when pasting plain text.
-    Fixed bug where resizing would sometime fail on IE 11 when the mouseup occurred inside the resizable element.
-    Fixed so the iframe gets initialized without any inline event handlers for better CSP support. Patch contributed by Matt Whelan.
-    Fixed so the tinymce.dom.Sizzle is the latest version of sizzle this resolves the document context bug.
-Version 4.1.1 (2014-07-08)
-    Fixed bug where pasting plain text on some WebKit versions would result in an empty line.
-    Fixed bug where resizing images inside tables on IE 11 wouldn't work properly.
-    Fixed bug where IE 11 would sometimes throw "Invalid argument" exception when editor contents was set to an empty string.
-    Fixed bug where document.activeElement would throw exceptions on IE 9 when that element was hidden or removed from dom.
-    Fixed bug where WebKit/Blink sometimes produced br elements with the Apple-interchange-newline class.
-    Fixed bug where table cell selection wasn't properly removed when copy/pasting table cells.
-    Fixed bug where pasting nested list items from Word wouldn't produce proper semantic nested lists.
-    Fixed bug where right clicking using the contextmenu plugin on WebKit/Blink on Mac OS X would select the target current word or line.
-    Fixed bug where it wasn't possible to alter table cell properties on IE 8 using the context menu.
-    Fixed bug where the resize helper wouldn't be correctly positioned on older IE versions.
-    Fixed bug where fullpage plugin would produce an error if you didn't specify a doctype encoding.
-    Fixed bug where anchor plugin would get the name/id of the current element even if it wasn't anchor element.
-    Fixed bug where visual aids for tables wouldn't be properly disabled when changing the border size.
-    Fixed bug where some control selection events wasn't properly fired on older IE versions.
-    Fixed bug where table cell selection on older IE versions would prevent resizing of images.
-    Fixed bug with paste_data_images paste option not working properly on modern IE versions.
-    Fixed bug where custom elements with underscores in the name wasn't properly parsed/serialized.
-    Fixed bug where applying inline formats to nested list elements would produce an incorrect formatting result.
-    Fixed so it's possible to hide items from elements path by using preventDefault/stopPropagation.
-    Fixed so inline mode toolbar gets rendered right aligned if the editable element positioned to the documents right edge.
-    Fixed so empty inline elements inside empty block elements doesn't get removed if configured to be kept intact.
-    Fixed so DomQuery parentsUntil/prevUntil/nextUntil supports selectors/elements/filters etc.
-    Fixed so legacyoutput plugin overrides fontselect and fontsizeselect controls and handles font elements properly.
-Version 4.1.0 (2014-06-18)
-    Added new file_picker_callback option to replace the old file_browser_callback the latter will still work though.
-    Added new custom colors to textcolor plugin will be displayed if a color picker is provided also shows the latest colors.
-    Added new color_picker_callback option to enable you to add custom color pickers to the editor.
-    Added new advanced tabs to table/cell/row dialogs to enable you to select colors for border/background.
-    Added new colorpicker plugin that lets you select colors from a hsv color picker.
-    Added new tinymce.util.Color class to handle color parsing and converting.
-    Added new colorpicker UI widget element lets you add a hsv color picker to any form/window.
-    Added new textpattern plugin that allows you to use markdown like text patterns to format contents.
-    Added new resize helper element that shows the current width & height while resizing.
-    Added new "once" method to Editor and EventDispatcher enables since callback execution events.
-    Added new jQuery like class under tinymce.dom.DomQuery it's exposed on editor instances (editor.$) and globally under (tinymce.$).
-    Fixed so the default resize method for images are proportional shift/ctrl can be used to make an unproportional size.
-    Fixed bug where the image_dimensions option of the image plugin would cause exceptions when it tried to update the size.
-    Fixed bug where table cell dialog class field wasn't properly updated when editing an a table cell with an existing class.
-    Fixed bug where Safari on Mac would produce webkit-fake-url for pasted images so these are now removed.
-    Fixed bug where the nodeChange event would get fired before the selection was changed when clicking inside the current selection range.
-    Fixed bug where valid_classes option would cause exception when it removed internal prefixed classes like mce-item-.
-    Fixed bug where backspace would cause navigation in IE 8 on an inline element and after a caret formatting was applied.
-    Fixed so placeholder images produced by the media plugin gets selected when inserted/edited.
-    Fixed so it's possible to drag in images when the paste_data_images option is enabled. Might be useful for mail clients.
-    Fixed so images doesn't get a width/height applied if the image_dimensions option is set to false useful for responsive contents.
-    Fixed so it's possible to pass in an optional arguments object for the nodeChanged function to be passed to all nodechange event listeners.
-    Fixed bug where media plugin embed code didn't update correctly.
diff --git a/website/js/vendor/tinymce/js/tinymce/jquery.tinymce.min.js b/website/js/vendor/tinymce/js/tinymce/jquery.tinymce.min.js
deleted file mode 100644 (file)
index 5a6ef56..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-/**
- * Jquery integration plugin.
- *
- * @class tinymce.core.JqueryIntegration
- * @private
- */
-!function(){var f,c,u,p,d,s=[];d="undefined"!=typeof global?global:window,p=d.jQuery;function v(){
-// Reference to tinymce needs to be lazily evaluated since tinymce
-// might be loaded through the compressor or other means
-return d.tinymce}p.fn.tinymce=function(o){var e,t,i,l=this,r="";
-// No match then just ignore the call
-if(!l.length)return l;
-// Get editor instance
-if(!o)return v()?v().get(l[0].id):null;l.css("visibility","hidden");function n(){var a=[],c=0;
-// Apply patches to the jQuery object, only once
-u||(m(),u=!0),
-// Create an editor instance for each matched node
-l.each(function(e,t){var n,i=t.id,r=o.oninit;
-// Generate unique id for target element if needed
-i||(t.id=i=v().DOM.uniqueId()),
-// Only init the editor once
-v().get(i)||(
-// Create editor instance and render it
-n=v().createEditor(i,o),a.push(n),n.on("init",function(){var e,t=r;l.css("visibility",""),
-// Run this if the oninit setting is defined
-// this logic will fire the oninit callback ones each
-// matched editor instance is initialized
-r&&++c==a.length&&("string"==typeof t&&(e=-1===t.indexOf(".")?null:v().resolve(t.replace(/\.\w+$/,"")),t=v().resolve(t)),
-// Call the oninit function with the object
-t.apply(e||v(),a))}))}),
-// Render the editor instances in a separate loop since we
-// need to have the full editors array used in the onInit calls
-p.each(a,function(e,t){t.render()})}
-// Load TinyMCE on demand, if we need to
-if(d.tinymce||c||!(e=o.script_url))
-// Delay the init call until tinymce is loaded
-1===c?s.push(n):n();else{c=1,t=e.substring(0,e.lastIndexOf("/")),
-// Check if it's a dev/src version they want to load then
-// make sure that all plugins, themes etc are loaded in source mode as well
--1!=e.indexOf(".min")&&(r=".min"),
-// Setup tinyMCEPreInit object this will later be used by the TinyMCE
-// core script to locate other resources like CSS files, dialogs etc
-// You can also predefined a tinyMCEPreInit object and then it will use that instead
-d.tinymce=d.tinyMCEPreInit||{base:t,suffix:r},
-// url contains gzip then we assume it's a compressor
--1!=e.indexOf("gzip")&&(i=o.language||"en",e=e+(/\?/.test(e)?"&":"?")+"js=true&core=true&suffix="+escape(r)+"&themes="+escape(o.theme||"modern")+"&plugins="+escape(o.plugins||"")+"&languages="+(i||""),
-// Check if compressor script is already loaded otherwise setup a basic one
-d.tinyMCE_GZ||(d.tinyMCE_GZ={start:function(){function n(e){v().ScriptLoader.markDone(v().baseURI.toAbsolute(e))}
-// Add core languages
-n("langs/"+i+".js"),
-// Add themes with languages
-n("themes/"+o.theme+"/theme"+r+".js"),n("themes/"+o.theme+"/langs/"+i+".js"),
-// Add plugins with languages
-p.each(o.plugins.split(","),function(e,t){t&&(n("plugins/"+t+"/plugin"+r+".js"),n("plugins/"+t+"/langs/"+i+".js"))})},end:function(){}}));var a=document.createElement("script");a.type="text/javascript",a.onload=a.onreadystatechange=function(e){e=e||window.event,2===c||"load"!=e.type&&!/complete|loaded/.test(a.readyState)||(v().dom.Event.domLoaded=1,c=2,
-// Execute callback after mainscript has been loaded and before the initialization occurs
-o.script_loaded&&o.script_loaded(),n(),p.each(s,function(e,t){t()}))},a.src=e,document.body.appendChild(a)}return l},
-// Add :tinymce pseudo selector this will select elements that has been converted into editor instances
-// it's now possible to use things like $('*:tinymce') to get all TinyMCE bound elements.
-p.extend(p.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in d&&(t=v().get(e.id))&&t.editorManager===v())}});
-// This function patches internal jQuery functions so that if
-// you for example remove an div element containing an editor it's
-// automatically destroyed by the TinyMCE API
-var m=function(){function r(e){
-// If the function is remove
-"remove"===e&&this.each(function(e,t){var n=u(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=v().get(t.id.replace(/_parent$/,""));n&&n.remove()})}function o(i){var e,t=this;
-// Handle set value
-/*jshint eqnull:true */if(null!=i)r.call(t),
-// Saves the contents before get/set value of textarea/div
-t.each(function(e,t){var n;(n=v().get(t.id))&&n.setContent(i)});else if(0<t.length&&(e=v().get(t[0].id)))return e.getContent()}function l(e){return!!(e&&e.length&&d.tinymce&&e.is(":tinymce"))}
-// Removes any child editor instances by looking for editor wrapper elements
-var u=function(e){var t=null;return e&&e.id&&d.tinymce&&(t=v().get(e.id)),t},s={};
-// Loads or saves contents from/to textarea if the value
-// argument is defined it will set the TinyMCE internal contents
-// Patch some setter/getter functions these will
-// now be able to set/get the contents of editor instances for
-// example $('#editorid').html('Content'); will update the TinyMCE iframe instance
-p.each(["text","html","val"],function(e,t){var a=s[t]=p.fn[t],c="text"===t;p.fn[t]=function(e){var t=this;if(!l(t))return a.apply(t,arguments);if(e!==f)return o.call(t.filter(":tinymce"),e),a.apply(t.not(":tinymce"),arguments),t;// return original set for chaining
-var i="",r=arguments;return(c?t:t.eq(0)).each(function(e,t){var n=u(t);i+=n?c?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):a.apply(p(t),r)}),i}}),
-// Makes it possible to use $('#id').append("content"); to append contents to the TinyMCE editor iframe
-p.each(["append","prepend"],function(e,t){var n=s[t]=p.fn[t],r="prepend"===t;p.fn[t]=function(i){var e=this;return l(e)?i!==f?("string"==typeof i&&e.filter(":tinymce").each(function(e,t){var n=u(t);n&&n.setContent(r?i+n.getContent():n.getContent()+i)}),n.apply(e.not(":tinymce"),arguments),e):void 0:n.apply(e,arguments)}}),
-// Makes sure that the editor instance gets properly destroyed when the parent element is removed
-p.each(["remove","replaceWith","replaceAll","empty"],function(e,t){var n=s[t]=p.fn[t];p.fn[t]=function(){return r.call(this,t),n.apply(this,arguments)}}),s.attr=p.fn.attr,
-// Makes sure that $('#tinymce_id').attr('value') gets the editors current HTML contents
-p.fn.attr=function(e,t){var n=this,i=arguments;if(!e||"value"!==e||!l(n))return s.attr.apply(n,i);if(t!==f)return o.call(n.filter(":tinymce"),t),s.attr.apply(n.not(":tinymce"),i),n;// return original set for chaining
-var r=n[0],a=u(r);return a?a.getContent({save:!0}):s.attr.apply(p(r),i)}}}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/langs/de.js b/website/js/vendor/tinymce/js/tinymce/langs/de.js
deleted file mode 100644 (file)
index f7a5b00..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-tinymce.addI18n('de',{
-"Redo": "Wiederholen",
-"Undo": "R\u00fcckg\u00e4ngig machen",
-"Cut": "Ausschneiden",
-"Copy": "Kopieren",
-"Paste": "Einf\u00fcgen",
-"Select all": "Alles ausw\u00e4hlen",
-"New document": "Neues Dokument",
-"Ok": "Ok",
-"Cancel": "Abbrechen",
-"Visual aids": "Visuelle Hilfen",
-"Bold": "Fett",
-"Italic": "Kursiv",
-"Underline": "Unterstrichen",
-"Strikethrough": "Durchgestrichen",
-"Superscript": "Hochgestellt",
-"Subscript": "Tiefgestellt",
-"Clear formatting": "Formatierung entfernen",
-"Align left": "Linksb\u00fcndig ausrichten",
-"Align center": "Zentrieren",
-"Align right": "Rechtsb\u00fcndig ausrichten",
-"Justify": "Blocksatz",
-"Bullet list": "Aufz\u00e4hlung",
-"Numbered list": "Nummerierte Liste",
-"Decrease indent": "Einzug verkleinern",
-"Increase indent": "Einzug vergr\u00f6\u00dfern",
-"Close": "Schlie\u00dfen",
-"Formats": "Formate",
-"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Tastenkombinationen Strg+X\/C\/V.",
-"Headers": "\u00dcberschriften",
-"Header 1": "\u00dcberschrift 1",
-"Header 2": "\u00dcberschrift 2",
-"Header 3": "\u00dcberschrift 3",
-"Header 4": "\u00dcberschrift 4",
-"Header 5": "\u00dcberschrift 5",
-"Header 6": "\u00dcberschrift 6",
-"Headings": "\u00dcberschriften",
-"Heading 1": "Kopfzeile 1",
-"Heading 2": "Kopfzeile 2",
-"Heading 3": "Kopfzeile 3",
-"Heading 4": "Kopfzeile 4",
-"Heading 5": "Kopfzeile 5",
-"Heading 6": "Kopfzeile 6",
-"Preformatted": "Vorformatiert",
-"Div": "Div",
-"Pre": "Pre",
-"Code": "Code",
-"Paragraph": "Absatz",
-"Blockquote": "Blockquote",
-"Inline": "Zeichenformate",
-"Blocks": "Bl\u00f6cke",
-"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!",
-"Fonts": "Schriftarten",
-"Font Sizes": "Schriftgr\u00f6\u00dfe",
-"Class": "Klasse",
-"Browse for an image": "Bild...",
-"OR": "ODER",
-"Drop an image here": "Bild hier ablegen",
-"Upload": "Hochladen",
-"Block": "Blocksatz",
-"Align": "Ausrichten",
-"Default": "Standard",
-"Circle": "Kreis",
-"Disc": "Punkt",
-"Square": "Quadrat",
-"Lower Alpha": "Kleinbuchstaben",
-"Lower Greek": "Griechische Kleinbuchstaben",
-"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)",
-"Upper Alpha": "Gro\u00dfbuchstaben",
-"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)",
-"Anchor...": "Textmarke",
-"Name": "Name",
-"Id": "Kennung",
-"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Die Kennung sollte mit einem Buchstaben anfangen. Nachfolgend nur Buchstaben, Zahlen, Striche (Minus), Punkte, Kommas und Unterstriche.",
-"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?",
-"Restore last draft": "Letzten Entwurf wiederherstellen",
-"Special characters...": "Sonderzeichen...",
-"Source code": "Quelltext",
-"Insert\/Edit code sample": "Codebeispiel einf\u00fcgen\/bearbeiten",
-"Language": "Sprache",
-"Code sample...": "Codebeispiel...",
-"Color Picker": "Farbwahl",
-"R": "R",
-"G": "G",
-"B": "B",
-"Left to right": "Von links nach rechts",
-"Right to left": "Von rechts nach links",
-"Emoticons...": "Emoticons...",
-"Metadata and Document Properties": "Dokument-Eigenschaften und -Metadaten",
-"Title": "Titel",
-"Keywords": "Sch\u00fcsselw\u00f6rter",
-"Description": "Beschreibung",
-"Robots": "Robots",
-"Author": "Verfasser",
-"Encoding": "Zeichenkodierung",
-"Fullscreen": "Vollbild",
-"Action": "Aktion",
-"Shortcut": "Shortcut",
-"Help": "Hilfe",
-"Address": "Adresse",
-"Focus to menubar": "Fokus auf Men\u00fcleiste",
-"Focus to toolbar": "Fokus auf Werkzeugleiste",
-"Focus to element path": "Fokus auf Elementpfad",
-"Focus to contextual toolbar": "Fokus auf kontextbezogene Werkzeugleiste",
-"Insert link (if link plugin activated)": "Link einf\u00fcgen (wenn Link-Plugin aktiviert ist)",
-"Save (if save plugin activated)": "Speichern (wenn Save-Plugin aktiviert ist)",
-"Find (if searchreplace plugin activated)": "Suchen einf\u00fcgen (wenn Suchen\/Ersetzen-Plugin aktiviert ist)",
-"Plugins installed ({0}):": "installierte Plugins ({0}):",
-"Premium plugins:": "Premium Plugins:",
-"Learn more...": "Erfahren Sie mehr dazu...",
-"You are using {0}": "Sie verwenden {0}",
-"Plugins": "Plugins",
-"Handy Shortcuts": "Praktische Tastenkombinationen",
-"Horizontal line": "Horizontale Linie",
-"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
-"Image description": "Bildbeschreibung",
-"Source": "Quelle",
-"Dimensions": "Abmessungen",
-"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
-"General": "Allgemein",
-"Advanced": "Erweitert",
-"Style": "Stil",
-"Vertical space": "Vertikaler Abstand",
-"Horizontal space": "Horizontaler Abstand",
-"Border": "Rahmen",
-"Insert image": "Bild einf\u00fcgen",
-"Image...": "Bild...",
-"Image list": "Bildliste",
-"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen",
-"Rotate clockwise": "Im Uhrzeigersinn drehen",
-"Flip vertically": "Vertikal spiegeln",
-"Flip horizontally": "Horizontal spiegeln",
-"Edit image": "Bild bearbeiten",
-"Image options": "Bildeigenschaften",
-"Zoom in": "Ansicht vergr\u00f6\u00dfern",
-"Zoom out": "Ansicht verkleinern",
-"Crop": "Bescheiden",
-"Resize": "Skalieren",
-"Orientation": "Ausrichtung",
-"Brightness": "Helligkeit",
-"Sharpen": "Sch\u00e4rfen",
-"Contrast": "Kontrast",
-"Color levels": "Farbwerte",
-"Gamma": "Gamma",
-"Invert": "Invertieren",
-"Apply": "Anwenden",
-"Back": "Zur\u00fcck",
-"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ",
-"Date\/time": "Datum\/Uhrzeit",
-"Insert\/Edit Link": "Link einf\u00fcgen\/bearbeiten",
-"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
-"Text to display": "Anzuzeigender Text",
-"Url": "URL",
-"Open link in...": "Link \u00f6ffnen in...",
-"Current window": "Aktuelles Fenster",
-"None": "Keine",
-"New window": "Neues Fenster",
-"Remove link": "Link entfernen",
-"Anchors": "Textmarken",
-"Link...": "Link...",
-"Paste or type a link": "Link einf\u00fcgen oder eintippen",
-"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",
-"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?",
-"Link list": "Linkliste",
-"Insert video": "Video einf\u00fcgen",
-"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
-"Insert\/edit media": "Medien einf\u00fcgen\/bearbeiten",
-"Alternative source": "Alternative Quelle",
-"Alternative source URL": "URL der alternativen Quelle",
-"Media poster (Image URL)": "Medienposter (Bild-URL)",
-"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:",
-"Embed": "Einbetten",
-"Media...": "Medien...",
-"Nonbreaking space": "Gesch\u00fctztes Leerzeichen",
-"Page break": "Seitenumbruch",
-"Paste as text": "Als Text einf\u00fcgen",
-"Preview": "Vorschau",
-"Print...": "Drucken...",
-"Save": "Speichern",
-"Find": "Suchen",
-"Replace with": "Ersetzen durch",
-"Replace": "Ersetzen",
-"Replace all": "Alles ersetzen",
-"Previous": "Vorherige",
-"Next": "Weiter",
-"Find and replace...": "Suchen und ersetzen...",
-"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.",
-"Match case": "Gro\u00df-\/Kleinschreibung beachten",
-"Find whole words only": "Nur ganze W\u00f6rter suchen",
-"Spell check": "Rechschreibpr\u00fcfung",
-"Ignore": "Ignorieren",
-"Ignore all": "Alles Ignorieren",
-"Finish": "Ende",
-"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen",
-"Insert table": "Tabelle einf\u00fcgen",
-"Table properties": "Tabelleneigenschaften",
-"Delete table": "Tabelle l\u00f6schen",
-"Cell": "Zelle",
-"Row": "Zeile",
-"Column": "Spalte",
-"Cell properties": "Zelleneigenschaften",
-"Merge cells": "Zellen verbinden",
-"Split cell": "Zelle aufteilen",
-"Insert row before": "Neue Zeile davor einf\u00fcgen ",
-"Insert row after": "Neue Zeile danach einf\u00fcgen",
-"Delete row": "Zeile l\u00f6schen",
-"Row properties": "Zeileneigenschaften",
-"Cut row": "Zeile ausschneiden",
-"Copy row": "Zeile kopieren",
-"Paste row before": "Zeile davor einf\u00fcgen",
-"Paste row after": "Zeile danach einf\u00fcgen",
-"Insert column before": "Neue Spalte davor einf\u00fcgen",
-"Insert column after": "Neue Spalte danach einf\u00fcgen",
-"Delete column": "Spalte l\u00f6schen",
-"Cols": "Spalten",
-"Rows": "Zeilen",
-"Width": "Breite",
-"Height": "H\u00f6he",
-"Cell spacing": "Zellenabstand",
-"Cell padding": "Zelleninnenabstand",
-"Show caption": "Beschriftung anzeigen",
-"Left": "Linksb\u00fcndig",
-"Center": "Zentriert",
-"Right": "Rechtsb\u00fcndig",
-"Cell type": "Zellentyp",
-"Scope": "G\u00fcltigkeitsbereich",
-"Alignment": "Ausrichtung",
-"H Align": "Horizontale Ausrichtung",
-"V Align": "Vertikale Ausrichtung",
-"Top": "Oben",
-"Middle": "Mitte",
-"Bottom": "Unten",
-"Header cell": "Kopfzelle",
-"Row group": "Zeilengruppe",
-"Column group": "Spaltengruppe",
-"Row type": "Zeilentyp",
-"Header": "Kopfzeile",
-"Body": "Inhalt",
-"Footer": "Fu\u00dfzeile",
-"Border color": "Rahmenfarbe",
-"Insert template...": "Vorlage einf\u00fcgen...",
-"Templates": "Vorlagen",
-"Template": "Vorlage",
-"Text color": "Textfarbe",
-"Background color": "Hintergrundfarbe",
-"Custom...": "Benutzerdefiniert...",
-"Custom color": "Benutzerdefinierte Farbe",
-"No color": "Keine Farbe",
-"Remove color": "Farbauswahl aufheben",
-"Table of Contents": "Inhaltsverzeichnis",
-"Show blocks": "Bl\u00f6cke anzeigen",
-"Show invisible characters": "Unsichtbare Zeichen anzeigen",
-"Word count": "Anzahl der W\u00f6rter",
-"Words: {0}": "W\u00f6rter: {0}",
-"{0} words": "{0} W\u00f6rter",
-"File": "Datei",
-"Edit": "Bearbeiten",
-"Insert": "Einf\u00fcgen",
-"View": "Ansicht",
-"Format": "Format",
-"Table": "Tabelle",
-"Tools": "Werkzeuge",
-"Powered by {0}": "Betrieben von {0}",
-"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
-"Image title": "Bildtitel",
-"Border width": "Rahmenbreite",
-"Border style": "Rahmenstil",
-"Error": "Fehler",
-"Warn": "Warnung",
-"Valid": "G\u00fcltig",
-"To open the popup, press Shift+Enter": "Dr\u00fccken Sie Umschalt+Eingabe, um das Popup-Fenster zu \u00f6ffnen.",
-"Rich Text Area. Press ALT-0 for help.": "Rich-Text-Bereich. Dr\u00fccken Sie Alt+0 f\u00fcr Hilfe.",
-"System Font": "Betriebssystemschriftart",
-"Failed to upload image: {0}": "Bild konnte nicht hochgeladen werden: {0}",
-"Failed to load plugin: {0} from url {1}": "Plugin konnte nicht geladen werden: {0} von URL {1}",
-"Failed to load plugin url: {0}": "Plugin-URL konnte nicht geladen werden: {0}",
-"Failed to initialize plugin: {0}": "Plugin konnte nicht initialisiert werden: {0}",
-"example": "Beispiel",
-"Search": "Suchen",
-"All": "Alles",
-"Currency": "W\u00e4hrung",
-"Text": "Text",
-"Quotations": "Anf\u00fchrungszeichen",
-"Mathematical": "Mathematisch",
-"Extended Latin": "Erweitertes Latein",
-"Symbols": "Symbole",
-"Arrows": "Pfeile",
-"User Defined": "Benutzerdefiniert",
-"dollar sign": "Dollarzeichen",
-"currency sign": "W\u00e4hrungssymbol",
-"euro-currency sign": "Eurozeichen",
-"colon sign": "Doppelpunkt",
-"cruzeiro sign": "Cruzeirozeichen",
-"french franc sign": "Franczeichen",
-"lira sign": "Lirezeichen",
-"mill sign": "Millzeichen",
-"naira sign": "Nairazeichen",
-"peseta sign": "Pesetazeichen",
-"rupee sign": "Rupiezeichen",
-"won sign": "Wonzeichen",
-"new sheqel sign": "Schekelzeichen",
-"dong sign": "Dongzeichen",
-"kip sign": "Kipzeichen",
-"tugrik sign": "Tugrikzeichen",
-"drachma sign": "Drachmezeichen",
-"german penny symbol": "Pfennigzeichen",
-"peso sign": "Pesozeichen",
-"guarani sign": "Guaranizeichen",
-"austral sign": "Australzeichen",
-"hryvnia sign": "Hrywnjazeichen",
-"cedi sign": "Cedizeichen",
-"livre tournois sign": "Livrezeichen",
-"spesmilo sign": "Spesmilozeichen",
-"tenge sign": "Tengezeichen",
-"indian rupee sign": "Indisches Rupiezeichen",
-"turkish lira sign": "T\u00fcrkisches Lirazeichen",
-"nordic mark sign": "Zeichen nordische Mark",
-"manat sign": "Manatzeichen",
-"ruble sign": "Rubelzeichen",
-"yen character": "Yenzeichen",
-"yuan character": "Yuanzeichen",
-"yuan character, in hong kong and taiwan": "Yuanzeichen in Hongkong und Taiwan",
-"yen\/yuan character variant one": "Yen-\/Yuanzeichen Variante 1",
-"Loading emoticons...": "Emoticons werden geladen...",
-"Could not load emoticons": "Emoticons konnten nicht geladen werden",
-"People": "Menschen",
-"Animals and Nature": "Tiere und Natur",
-"Food and Drink": "Essen und Trinken",
-"Activity": "Aktivit\u00e4t",
-"Travel and Places": "Reisen und Orte",
-"Objects": "Objekte",
-"Flags": "Flaggen",
-"Characters": "Zeichen",
-"Characters (no spaces)": "Zeichen (ohne Leerzeichen)",
-"Error: Form submit field collision.": "Fehler: Kollision der Formularbest\u00e4tigungsfelder.",
-"Error: No form element found.": "Fehler: Kein Formularelement gefunden.",
-"Update": "Aktualisieren",
-"Color swatch": "Farbpalette",
-"Turquoise": "T\u00fcrkis",
-"Green": "Gr\u00fcn",
-"Blue": "Blau",
-"Purple": "Violett",
-"Navy Blue": "Marineblau",
-"Dark Turquoise": "Dunkelt\u00fcrkis",
-"Dark Green": "Dunkelgr\u00fcn",
-"Medium Blue": "Mittleres Blau",
-"Medium Purple": "Mittelviolett",
-"Midnight Blue": "Mitternachtsblau",
-"Yellow": "Gelb",
-"Orange": "Orange",
-"Red": "Rot",
-"Light Gray": "Hellgrau",
-"Gray": "Grau",
-"Dark Yellow": "Dunkelgelb",
-"Dark Orange": "Dunkelorange",
-"Dark Red": "Dunkelrot",
-"Medium Gray": "Mittelgrau",
-"Dark Gray": "Dunkelgrau",
-"Black": "Schwarz",
-"White": "Wei\u00df",
-"Switch to or from fullscreen mode": "Vollbildmodus umschalten",
-"Open help dialog": "Hilfe-Dialog \u00f6ffnen",
-"history": "Historie",
-"styles": "Stile",
-"formatting": "Formatierung",
-"alignment": "Ausrichtung",
-"indentation": "Einr\u00fcckungen",
-"permanent pen": "Textmarker",
-"comments": "Anmerkungen",
-"Anchor": "Textmarke",
-"Special character": "Sonderzeichen",
-"Code sample": "Codebeispiel",
-"Color": "Farbe",
-"Emoticons": "Emoticons",
-"Document properties": "Dokumenteigenschaften",
-"Image": "Bild",
-"Insert link": "Link einf\u00fcgen",
-"Target": "Ziel",
-"Link": "Link",
-"Poster": "Poster",
-"Media": "Medium",
-"Print": "Drucken",
-"Prev": "Zur\u00fcck",
-"Find and replace": "Suchen und ersetzen",
-"Whole words": "Nur ganze W\u00f6rter",
-"Spellcheck": "Rechtschreibpr\u00fcfung",
-"Caption": "Beschriftung",
-"Insert template": "Vorlage einf\u00fcgen "
-});
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/langs/fr_FR.js b/website/js/vendor/tinymce/js/tinymce/langs/fr_FR.js
deleted file mode 100644 (file)
index 2d074f8..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-tinymce.addI18n('fr_FR',{
-"Redo": "R\u00e9tablir",
-"Undo": "Annuler",
-"Cut": "Couper",
-"Copy": "Copier",
-"Paste": "Coller",
-"Select all": "S\u00e9lectionner tout",
-"New document": "Nouveau document",
-"Ok": "OK",
-"Cancel": "Annuler",
-"Visual aids": "Aides visuelles",
-"Bold": "Gras",
-"Italic": "Italique",
-"Underline": "Soulign\u00e9",
-"Strikethrough": "Barr\u00e9",
-"Superscript": "Exposant",
-"Subscript": "Indice",
-"Clear formatting": "Effacer la mise en forme",
-"Align left": "Aligner \u00e0 gauche",
-"Align center": "Centrer",
-"Align right": "Aligner \u00e0 droite",
-"Justify": "Justifier",
-"Bullet list": "Liste \u00e0 puces",
-"Numbered list": "Liste num\u00e9rot\u00e9e",
-"Decrease indent": "R\u00e9duire le retrait",
-"Increase indent": "Augmenter le retrait",
-"Close": "Fermer",
-"Formats": "Formats",
-"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas l\u2019acc\u00e8s direct au presse-papiers. Merci d'utiliser les raccourcis clavier Ctrl+X\/C\/V.",
-"Headers": "En-t\u00eates",
-"Header 1": "En-t\u00eate 1",
-"Header 2": "En-t\u00eate 2",
-"Header 3": "En-t\u00eate 3",
-"Header 4": "En-t\u00eate 4",
-"Header 5": "En-t\u00eate 5",
-"Header 6": "En-t\u00eate 6",
-"Headings": "Titres",
-"Heading 1": "Titre\u00a01",
-"Heading 2": "Titre\u00a02",
-"Heading 3": "Titre\u00a03",
-"Heading 4": "Titre\u00a04",
-"Heading 5": "Titre\u00a05",
-"Heading 6": "Titre\u00a06",
-"Preformatted": "Pr\u00e9format\u00e9",
-"Div": "Div",
-"Pre": "Pre",
-"Code": "Code",
-"Paragraph": "Paragraphe",
-"Blockquote": "Blockquote",
-"Inline": "En ligne",
-"Blocks": "Blocs",
-"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
-"Fonts": "Polices",
-"Font Sizes": "Tailles de police",
-"Class": "Classe",
-"Browse for an image": "Rechercher une image",
-"OR": "OU",
-"Drop an image here": "D\u00e9poser une image ici",
-"Upload": "T\u00e9l\u00e9charger",
-"Block": "Bloc",
-"Align": "Aligner",
-"Default": "Par d\u00e9faut",
-"Circle": "Cercle",
-"Disc": "Disque",
-"Square": "Carr\u00e9",
-"Lower Alpha": "Alpha minuscule",
-"Lower Greek": "Grec minuscule",
-"Lower Roman": "Romain minuscule",
-"Upper Alpha": "Alpha majuscule",
-"Upper Roman": "Romain majuscule",
-"Anchor...": "Ancre...",
-"Name": "Nom",
-"Id": "Id",
-"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'Id doit commencer par une lettre suivi par des lettres, nombres, tirets, points, deux-points ou underscores",
-"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
-"Restore last draft": "Restaurer le dernier brouillon",
-"Special characters...": "Caract\u00e8res sp\u00e9ciaux...",
-"Source code": "Code source",
-"Insert\/Edit code sample": "Ins\u00e9rer \/ modifier une exemple de code",
-"Language": "Langue",
-"Code sample...": "Exemple de code...",
-"Color Picker": "S\u00e9lecteur de couleurs",
-"R": "R",
-"G": "V",
-"B": "B",
-"Left to right": "Gauche \u00e0 droite",
-"Right to left": "Droite \u00e0 gauche",
-"Emoticons...": "\u00c9motic\u00f4nes...",
-"Metadata and Document Properties": "M\u00e9tadonn\u00e9es et propri\u00e9t\u00e9s du document",
-"Title": "Titre",
-"Keywords": "Mots-cl\u00e9s",
-"Description": "Description",
-"Robots": "Robots",
-"Author": "Auteur",
-"Encoding": "Encodage",
-"Fullscreen": "Plein \u00e9cran",
-"Action": "Action",
-"Shortcut": "Raccourci",
-"Help": "Aide",
-"Address": "Adresse",
-"Focus to menubar": "Cibler la barre de menu",
-"Focus to toolbar": "Cibler la barre d'outils",
-"Focus to element path": "Cibler le chemin vers l'\u00e9l\u00e9ment",
-"Focus to contextual toolbar": "Cibler la barre d'outils contextuelle",
-"Insert link (if link plugin activated)": "Ins\u00e9rer un lien (si le module link est activ\u00e9)",
-"Save (if save plugin activated)": "Enregistrer (si le module save est activ\u00e9)",
-"Find (if searchreplace plugin activated)": "Rechercher (si le module searchreplace est activ\u00e9)",
-"Plugins installed ({0}):": "Modules install\u00e9s ({0}) : ",
-"Premium plugins:": "Modules premium :",
-"Learn more...": "En savoir plus...",
-"You are using {0}": "Vous utilisez {0}",
-"Plugins": "Plugins",
-"Handy Shortcuts": "Raccourcis utiles",
-"Horizontal line": "Ligne horizontale",
-"Insert\/edit image": "Ins\u00e9rer\/modifier une image",
-"Image description": "Description de l'image",
-"Source": "Source",
-"Dimensions": "Dimensions",
-"Constrain proportions": "Conserver les proportions",
-"General": "G\u00e9n\u00e9ral",
-"Advanced": "Avanc\u00e9",
-"Style": "Style",
-"Vertical space": "Espacement vertical",
-"Horizontal space": "Espacement horizontal",
-"Border": "Bordure",
-"Insert image": "Ins\u00e9rer une image",
-"Image...": "Image...",
-"Image list": "Liste d'images",
-"Rotate counterclockwise": "Rotation anti-horaire",
-"Rotate clockwise": "Rotation horaire",
-"Flip vertically": "Retournement vertical",
-"Flip horizontally": "Retournement horizontal",
-"Edit image": "Modifier l'image",
-"Image options": "Options de l'image",
-"Zoom in": "Zoomer",
-"Zoom out": "D\u00e9zoomer",
-"Crop": "Rogner",
-"Resize": "Redimensionner",
-"Orientation": "Orientation",
-"Brightness": "Luminosit\u00e9",
-"Sharpen": "Affiner",
-"Contrast": "Contraste",
-"Color levels": "Niveaux de couleur",
-"Gamma": "Gamma",
-"Invert": "Inverser",
-"Apply": "Appliquer",
-"Back": "Retour",
-"Insert date\/time": "Ins\u00e9rer date\/heure",
-"Date\/time": "Date\/heure",
-"Insert\/Edit Link": "Ins\u00e9rer\/Modifier lien",
-"Insert\/edit link": "Ins\u00e9rer\/modifier un lien",
-"Text to display": "Texte \u00e0 afficher",
-"Url": "Url",
-"Open link in...": "Ouvrir le lien dans...",
-"Current window": "Fen\u00eatre active",
-"None": "n\/a",
-"New window": "Nouvelle fen\u00eatre",
-"Remove link": "Enlever le lien",
-"Anchors": "Ancres",
-"Link...": "Lien...",
-"Paste or type a link": "Coller ou taper un lien",
-"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?",
-"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
-"Link list": "Liste de liens",
-"Insert video": "Ins\u00e9rer une vid\u00e9o",
-"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o",
-"Insert\/edit media": "Ins\u00e9rer\/modifier un m\u00e9dia",
-"Alternative source": "Source alternative",
-"Alternative source URL": "URL de la source alternative",
-"Media poster (Image URL)": "Affiche de m\u00e9dia (URL de l'image)",
-"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
-"Embed": "Int\u00e9grer",
-"Media...": "M\u00e9dia...",
-"Nonbreaking space": "Espace ins\u00e9cable",
-"Page break": "Saut de page",
-"Paste as text": "Coller comme texte",
-"Preview": "Pr\u00e9visualiser",
-"Print...": "Imprimer...",
-"Save": "Enregistrer",
-"Find": "Chercher",
-"Replace with": "Remplacer par",
-"Replace": "Remplacer",
-"Replace all": "Tout remplacer",
-"Previous": "Pr\u00e9c\u00e9dente",
-"Next": "Suiv",
-"Find and replace...": "Trouver et remplacer...",
-"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
-"Match case": "Respecter la casse",
-"Find whole words only": "Mot entier",
-"Spell check": "V\u00e9rification de l'orthographe",
-"Ignore": "Ignorer",
-"Ignore all": "Tout ignorer",
-"Finish": "Finie",
-"Add to Dictionary": "Ajouter au dictionnaire",
-"Insert table": "Ins\u00e9rer un tableau",
-"Table properties": "Propri\u00e9t\u00e9s du tableau",
-"Delete table": "Supprimer le tableau",
-"Cell": "Cellule",
-"Row": "Ligne",
-"Column": "Colonne",
-"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
-"Merge cells": "Fusionner les cellules",
-"Split cell": "Diviser la cellule",
-"Insert row before": "Ins\u00e9rer une ligne avant",
-"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
-"Delete row": "Effacer la ligne",
-"Row properties": "Propri\u00e9t\u00e9s de la ligne",
-"Cut row": "Couper la ligne",
-"Copy row": "Copier la ligne",
-"Paste row before": "Coller la ligne avant",
-"Paste row after": "Coller la ligne apr\u00e8s",
-"Insert column before": "Ins\u00e9rer une colonne avant",
-"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
-"Delete column": "Effacer la colonne",
-"Cols": "Colonnes",
-"Rows": "Lignes",
-"Width": "Largeur",
-"Height": "Hauteur",
-"Cell spacing": "Espacement inter-cellulles",
-"Cell padding": "Espacement interne cellule",
-"Show caption": "Afficher le sous-titrage",
-"Left": "Gauche",
-"Center": "Centr\u00e9",
-"Right": "Droite",
-"Cell type": "Type de cellule",
-"Scope": "Etendue",
-"Alignment": "Alignement",
-"H Align": "Alignement H",
-"V Align": "Alignement V",
-"Top": "Haut",
-"Middle": "Milieu",
-"Bottom": "Bas",
-"Header cell": "Cellule d'en-t\u00eate",
-"Row group": "Groupe de lignes",
-"Column group": "Groupe de colonnes",
-"Row type": "Type de ligne",
-"Header": "En-t\u00eate",
-"Body": "Corps",
-"Footer": "Pied",
-"Border color": "Couleur de la bordure",
-"Insert template...": "Ins\u00e9rer un mod\u00e8le...",
-"Templates": "Th\u00e8mes",
-"Template": "Mod\u00e8le",
-"Text color": "Couleur du texte",
-"Background color": "Couleur d'arri\u00e8re-plan",
-"Custom...": "Personnalis\u00e9...",
-"Custom color": "Couleur personnalis\u00e9e",
-"No color": "Aucune couleur",
-"Remove color": "Supprimer la couleur",
-"Table of Contents": "Table des mati\u00e8res",
-"Show blocks": "Afficher les blocs",
-"Show invisible characters": "Afficher les caract\u00e8res invisibles",
-"Word count": "Nombre de mots",
-"Words: {0}": "Mots : {0}",
-"{0} words": "{0} mots",
-"File": "Fichier",
-"Edit": "Editer",
-"Insert": "Ins\u00e9rer",
-"View": "Voir",
-"Format": "Format",
-"Table": "Tableau",
-"Tools": "Outils",
-"Powered by {0}": "Propuls\u00e9 par {0}",
-"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
-"Image title": "Titre d'image",
-"Border width": "\u00c9paisseur de la bordure",
-"Border style": "Style de la bordure",
-"Error": "Erreur",
-"Warn": "Avertir",
-"Valid": "Valide",
-"To open the popup, press Shift+Enter": "Pour ouvrir la popup, appuyez sur Maj+Entr\u00e9e",
-"Rich Text Area. Press ALT-0 for help.": "Zone de texte riche. Appuyez sur ALT-0 pour l'aide.",
-"System Font": "Police syst\u00e8me",
-"Failed to upload image: {0}": "\u00c9chec d'envoi de l'image\u00a0: {0}",
-"Failed to load plugin: {0} from url {1}": "\u00c9chec de chargement du plug-in\u00a0: {0} \u00e0 partir de l\u2019URL {1} ",
-"Failed to load plugin url: {0}": "\u00c9chec de chargement de l'URL du plug-in\u00a0: {0}",
-"Failed to initialize plugin: {0}": "\u00c9chec d'initialisation du plug-in\u00a0: {0}",
-"example": "exemple",
-"Search": "Rechercher",
-"All": "Tout",
-"Currency": "Devise",
-"Text": "Texte",
-"Quotations": "Citations",
-"Mathematical": "Op\u00e9rateurs math\u00e9matiques",
-"Extended Latin": "Latin \u00e9tendu",
-"Symbols": "Symboles",
-"Arrows": "Fl\u00e8ches",
-"User Defined": "D\u00e9fini par l'utilisateur",
-"dollar sign": "Symbole dollar",
-"currency sign": "Symbole devise",
-"euro-currency sign": "Symbole euro",
-"colon sign": "Symbole col\u00f3n",
-"cruzeiro sign": "Symbole cruzeiro",
-"french franc sign": "Symbole franc fran\u00e7ais",
-"lira sign": "Symbole lire",
-"mill sign": "Symbole milli\u00e8me",
-"naira sign": "Symbole naira",
-"peseta sign": "Symbole peseta",
-"rupee sign": "Symbole roupie",
-"won sign": "Symbole won",
-"new sheqel sign": "Symbole nouveau ch\u00e9kel",
-"dong sign": "Symbole dong",
-"kip sign": "Symbole kip",
-"tugrik sign": "Symbole tougrik",
-"drachma sign": "Symbole drachme",
-"german penny symbol": "Symbole pfennig",
-"peso sign": "Symbole peso",
-"guarani sign": "Symbole guarani",
-"austral sign": "Symbole austral",
-"hryvnia sign": "Symbole hryvnia",
-"cedi sign": "Symbole cedi",
-"livre tournois sign": "Symbole livre tournois",
-"spesmilo sign": "Symbole spesmilo",
-"tenge sign": "Symbole tenge",
-"indian rupee sign": "Symbole roupie indienne",
-"turkish lira sign": "Symbole lire turque",
-"nordic mark sign": "Symbole du mark nordique",
-"manat sign": "Symbole manat",
-"ruble sign": "Symbole rouble",
-"yen character": "Sinogramme Yen",
-"yuan character": "Sinogramme Yuan",
-"yuan character, in hong kong and taiwan": "Sinogramme Yuan, Hong Kong et Taiwan",
-"yen\/yuan character variant one": "Sinogramme Yen\/Yuan, premi\u00e8re variante",
-"Loading emoticons...": "Chargement des \u00e9motic\u00f4nes en cours...",
-"Could not load emoticons": "\u00c9chec de chargement des \u00e9motic\u00f4nes",
-"People": "Personnes",
-"Animals and Nature": "Animaux & nature",
-"Food and Drink": "Nourriture & boissons",
-"Activity": "Activit\u00e9",
-"Travel and Places": "Voyages & lieux",
-"Objects": "Objets",
-"Flags": "Drapeaux",
-"Characters": "Caract\u00e8res",
-"Characters (no spaces)": "Caract\u00e8res (espaces non compris)",
-"Error: Form submit field collision.": "Erreur : conflit de champs lors de la soumission du formulaire",
-"Error: No form element found.": "Erreur : aucun \u00e9l\u00e9ment de formulaire trouv\u00e9.",
-"Update": "Mettre \u00e0 jour",
-"Color swatch": "\u00c9chantillon de couleurs",
-"Turquoise": "Turquoise",
-"Green": "Vert",
-"Blue": "Bleu",
-"Purple": "Violet",
-"Navy Blue": "Bleu marine",
-"Dark Turquoise": "Turquoise fonc\u00e9",
-"Dark Green": "Vert fonc\u00e9",
-"Medium Blue": "Bleu moyen",
-"Medium Purple": "Violet moyen",
-"Midnight Blue": "Bleu de minuit",
-"Yellow": "Jaune",
-"Orange": "Orange",
-"Red": "Rouge",
-"Light Gray": "Gris clair",
-"Gray": "Gris",
-"Dark Yellow": "Jaune fonc\u00e9",
-"Dark Orange": "Orange fonc\u00e9",
-"Dark Red": "Rouge fonc\u00e9",
-"Medium Gray": "Gris moyen",
-"Dark Gray": "Gris fonc\u00e9",
-"Black": "Noir",
-"White": "Blanc",
-"Switch to or from fullscreen mode": "Passer en ou quitter le mode plein \u00e9cran",
-"Open help dialog": "Ouvrir la bo\u00eete de dialogue d'aide",
-"history": "historique",
-"styles": "styles",
-"formatting": "mise en forme",
-"alignment": "alignement",
-"indentation": "retrait",
-"permanent pen": "feutre ind\u00e9l\u00e9bile",
-"comments": "commentaires",
-"Anchor": "Ancre",
-"Special character": "Caract\u00e8res sp\u00e9ciaux",
-"Code sample": "Extrait de code",
-"Color": "Couleur",
-"Emoticons": "Emotic\u00f4nes",
-"Document properties": "Propri\u00e9t\u00e9 du document",
-"Image": "Image",
-"Insert link": "Ins\u00e9rer un lien",
-"Target": "Cible",
-"Link": "Lien",
-"Poster": "Publier",
-"Media": "M\u00e9dia",
-"Print": "Imprimer",
-"Prev": "Pr\u00e9c ",
-"Find and replace": "Trouver et remplacer",
-"Whole words": "Mots entiers",
-"Spellcheck": "V\u00e9rification orthographique",
-"Caption": "Titre",
-"Insert template": "Ajouter un th\u00e8me"
-});
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/langs/readme.md b/website/js/vendor/tinymce/js/tinymce/langs/readme.md
deleted file mode 100644 (file)
index a52bf03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-This is where language files should be placed.
-
-Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/advlist/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/advlist/plugin.min.js
deleted file mode 100644 (file)
index f11035d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function n(){}function o(n){return function(){return n}}function t(){return d}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(n,t,e){var r="UL"===t?"InsertUnorderedList":"InsertOrderedList";n.execCommand(r,!1,!1===e?null:{"list-style-type":e})},i=function(e){e.addCommand("ApplyUnorderedListStyle",function(n,t){l(e,"UL",t["list-style-type"])}),e.addCommand("ApplyOrderedListStyle",function(n,t){l(e,"OL",t["list-style-type"])})},c=function(n){var t=n.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");return t?t.split(/[ ,]/):[]},s=function(n){var t=n.getParam("advlist_bullet_styles","default,circle,square");return t?t.split(/[ ,]/):[]},f=o(!1),a=o(!0),d=(e={fold:function(n,t){return n()},is:f,isSome:f,isNone:a,getOr:m,getOrThunk:p,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:m,orThunk:p,map:t,each:n,bind:t,exists:f,forall:a,filter:t,equals:g,equals_:g,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(e),e);function g(n){return n.isNone()}function p(n){return n()}function m(n){return n}function y(n,t,e){var r=function(n,t){for(var e=0;e<n.length;e++){if(t(n[e]))return e}return-1}(t.parents,L),i=-1!==r?t.parents.slice(0,r):t.parents,o=u.grep(i,N(n));return 0<o.length&&o[0].nodeName===e}function O(n,t,e,r,i,o){0<o.length?function(e,n,t,r,i,o){e.ui.registry.addSplitButton(n,{tooltip:t,icon:"OL"===i?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:function(n){n(u.map(o,function(n){return{type:"choiceitem",value:"default"===n?"":n,icon:"list-"+("OL"===i?"num":"bull")+"-"+("disc"===n||"decimal"===n?"default":n),text:function(n){return n.replace(/\-/g," ").replace(/\b\w/g,function(n){return n.toUpperCase()})}(n)}}))},onAction:function(){return e.execCommand(r)},onItemAction:function(n,t){l(e,i,t)},select:function(t){return S(e).map(function(n){return t===n}).getOr(!1)},onSetup:function(t){function n(n){t.setActive(y(e,n,i))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}})}(n,t,e,r,i,o):function(e,n,t,r,i){e.ui.registry.addToggleButton(n,{active:!1,tooltip:t,icon:"OL"===i?"ordered-list":"unordered-list",onSetup:function(t){function n(n){t.setActive(y(e,n,i))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}},onAction:function(){return e.execCommand(r)}})}(n,t,e,r,i)}var v=function(e){function n(){return i}function t(n){return n(e)}var r=o(e),i={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:a,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return v(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?i:d},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return i},h=function(n){return null===n||n===undefined?d:v(n)},L=function(n){return n&&/^(TH|TD)$/.test(n.nodeName)},N=function(t){return function(n){return n&&/^(OL|UL|DL)$/.test(n.nodeName)&&function(n,t){return n.$.contains(n.getBody(),t)}(t,n)}},S=function(n){var t=n.dom.getParent(n.selection.getNode(),"ol,ul"),e=n.dom.getStyle(t,"listStyleType");return h(e)},T=function(n){O(n,"numlist","Numbered list","InsertOrderedList","OL",c(n)),O(n,"bullist","Bullet list","InsertUnorderedList","UL",s(n))};!function b(){r.add("advlist",function(n){var t,e,r;e="lists",r=(t=n).settings.plugins?t.settings.plugins:"",-1!==u.inArray(r.split(/[ ,]/),e)&&(T(n),i(n))})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/anchor/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/anchor/plugin.min.js
deleted file mode 100644 (file)
index eac9ace..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function e(o){return function(t){for(var e=0;e<t.length;e++)(n=t[e]).attr("href")||!n.attr("id")&&!n.attr("name")||n.firstChild||t[e].attr("contenteditable",o);var n}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},o=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.getAttribute("id")||e.getAttribute("name"):""},r=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e,t.undoManager.add()):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},a=function(e){var t=o(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:function(t){!function(t,e){return n(e)?(r(t,e),!1):(t.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!0)}(e,t.getData().id)&&t.close()}})},i=function(t){t.addCommand("mceAnchor",function(){a(t)})},c=function(t){t.on("PreInit",function(){t.parser.addNodeFilter("a",e("false")),t.serializer.addNodeFilter("a",e(null))})},d=function(e){e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:function(){return e.execCommand("mceAnchor")},onSetup:function(t){return e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind}}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:function(){return e.execCommand("mceAnchor")}})};!function u(){t.add("anchor",function(t){c(t),i(t),d(t)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/autolink/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/autolink/plugin.min.js
deleted file mode 100644 (file)
index c12a0a7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function i(t,e){if(e<0&&(e=0),3===t.nodeType){var n=t.data.length;n<e&&(e=n)}return e}function C(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setStart(e,i(e,n)):t.setStartBefore(e)}function m(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setEnd(e,i(e,n)):t.setEndAfter(e)}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),y=function(t){return t.getParam("autolink_pattern",/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i)},k=function(t){return t.getParam("default_link_target",!1)},r=function(t,e,n){var i,o,r,f,a,s,d,c,l,u,g=y(t),h=k(t);if("A"!==t.selection.getNode().tagName){if((i=t.selection.getRng(!0).cloneRange()).startOffset<5){if(!(c=i.endContainer.previousSibling)){if(!i.endContainer.firstChild||!i.endContainer.firstChild.nextSibling)return;c=i.endContainer.firstChild.nextSibling}if(l=c.length,C(i,c,l),m(i,c,l),i.endOffset<5)return;o=i.endOffset,f=c}else{if(3!==(f=i.endContainer).nodeType&&f.firstChild){for(;3!==f.nodeType&&f.firstChild;)f=f.firstChild;3===f.nodeType&&(C(i,f,0),m(i,f,f.nodeValue.length))}o=1===i.endOffset?2:i.endOffset-1-e}for(r=o;C(i,f,2<=o?o-2:0),m(i,f,1<=o?o-1:0),o-=1," "!==(u=i.toString())&&""!==u&&160!==u.charCodeAt(0)&&0<=o-2&&u!==n;);!function(t,e){return t===e||" "===t||160===t.charCodeAt(0)}(i.toString(),n)?(0===i.startOffset?C(i,f,0):C(i,f,o),m(i,f,r)):(C(i,f,o),m(i,f,r),o+=1),"."===(s=i.toString()).charAt(s.length-1)&&m(i,f,r-1),(d=(s=i.toString().trim()).match(g))&&("www."===d[1]?d[1]="http://www.":/@$/.test(d[1])&&!/^mailto:/.test(d[1])&&(d[1]="mailto:"+d[1]),a=t.selection.getBookmark(),t.selection.setRng(i),t.execCommand("createlink",!1,d[1]+d[2]),!1!==h&&t.dom.setAttrib(t.selection.getNode(),"target",h),t.selection.moveToBookmark(a),t.nodeChanged())}},e=function(e){var n;e.on("keydown",function(t){if(13===t.keyCode)return function(t){r(t,-1,"")}(e)}),o.browser.isIE()?e.on("focus",function(){if(!n){n=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(e.on("keypress",function(t){if(41===t.keyCode)return function(t){r(t,-1,"(")}(e)}),e.on("keyup",function(t){if(32===t.keyCode)return function(t){r(t,0,"")}(e)}))};!function n(){t.add("autolink",function(t){e(t)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/autoresize/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/autoresize/plugin.min.js
deleted file mode 100644 (file)
index 8d76967..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function d(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))}function h(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o}var i=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),p=function(e){return e.fire("ResizeEditor")},y=function(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")},z=function(e){return e.getParam("max_height",0,"number")},n=function(e){return e.getParam("autoresize_overflow_padding",1,"number")},b=function(e){return e.getParam("autoresize_bottom_margin",50,"number")},o=function(e){return e.getParam("autoresize_on_init",!0,"boolean")},u=function(e,t,n,i,o){r.setEditorTimeout(e,function(){C(e,t),n--?u(e,t,n,i,o):o&&o()},i)},C=function(e,t){var n,i,o,r=e.dom,u=e.getDoc();if(u)if(function(e){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}(e))d(e,!0);else{var s=u.documentElement,a=b(e);i=y(e);var f=h(r,s,"margin-top",!0),c=h(r,s,"margin-bottom",!0);(o=s.offsetHeight+f+c+a)<0&&(o=0);var g=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;o+g>y(e)&&(i=o+g);var l=z(e);if(l&&l<i?(i=l,d(e,!0)):d(e,!1),i!==t.get()){if(n=i-t.get(),r.setStyle(e.getContainer(),"height",i+"px"),t.set(i),p(e),v.browser.isSafari()&&v.mac){var m=e.getWin();m.scrollTo(m.pageXOffset,m.pageYOffset)}e.hasFocus()&&e.selection.scrollIntoView(e.selection.getNode()),v.webkit&&n<0&&C(e,t)}}},s={setup:function(t,e){t.on("init",function(){var e=n(t);t.dom.setStyles(t.getBody(),{paddingLeft:e,paddingRight:e,"min-height":0})}),t.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",function(){C(t,e)}),o(t)&&t.on("init",function(){u(t,e,20,100,function(){u(t,e,5,1e3)})})},resize:C},a=function(e,t){e.addCommand("mceAutoResize",function(){s.resize(e,t)})};!function t(){e.add("autoresize",function(e){if(e.settings.hasOwnProperty("resize")||(e.settings.resize=!1),!e.inline){var t=i(0);a(e,t),s.setup(e,t)}})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/autosave/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/autosave/plugin.min.js
deleted file mode 100644 (file)
index c3683e7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(n){"use strict";function r(t,e){var n=t||e,r=/^(\d+)([ms]?)$/.exec(""+n);return(r[2]?{s:1e3,m:6e4}[r[2]]:1)*parseInt(n,10)}function o(t){var e=t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-");return e=(e=(e=(e=e.replace(/\{path\}/g,n.document.location.pathname)).replace(/\{query\}/g,n.document.location.search)).replace(/\{hash\}/g,n.document.location.hash)).replace(/\{id\}/g,t.id)}function a(t,e){var n=t.settings.forced_root_block;return""===(e=d.trim(void 0===e?t.getBody().innerHTML:e))||new RegExp("^<"+n+"[^>]*>((\xa0|&nbsp;|[ \t]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(e)}function i(t){var e=parseInt(v.getItem(o(t)+"time"),10)||0;return!((new Date).getTime()-e>function(t){return r(t.settings.autosave_retention,"20m")}(t))||(g(t,!1),!1)}function u(t){var e=o(t);!a(t)&&t.isDirty()&&(v.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),v.setItem(e+"time",(new Date).getTime().toString()),function(t){t.fire("StoreDraft")}(t))}function s(t){var e=o(t);i(t)&&(t.setContent(v.getItem(e+"draft"),{format:"raw"}),function(t){t.fire("RestoreDraft")}(t))}function c(t,e){var n=function(t){return r(t.settings.autosave_interval,"30s")}(t);e.get()||(m.setInterval(function(){t.removed||u(t)},n),e.set(!0))}function f(t){t.undoManager.transact(function(){s(t),g(t)}),t.focus()}var l=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return l(e())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=tinymce.util.Tools.resolve("tinymce.util.Delay"),v=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,e){var n=o(t);v.removeItem(n+"draft"),v.removeItem(n+"time"),!1!==e&&function(t){t.fire("RemoveDraft")}(t)};function y(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}function p(n,t){return function(t){t.setDisabled(!i(n));function e(){return t.setDisabled(!i(n))}return n.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return n.off("StoreDraft RestoreDraft RemoveDraft",e)}}}var D=tinymce.util.Tools.resolve("tinymce.EditorManager");!function e(){t.add("autosave",function(t){var e=l(!1);return function(t){t.editorManager.on("BeforeUnload",function(t){var e;d.each(D.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&function(t){return t.getParam("autosave_ask_before_unload",!0)}(t)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)})}(t),function(t,e){c(t,e),t.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){f(t)},onSetup:p(t)}),t.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){f(t)},onSetup:p(t)})}(t,e),t.on("init",function(){(function(t){return t.getParam("autosave_restore_when_empty",!1)})(t)&&t.dom.isEmpty(t.getBody())&&s(t)}),function(t){return{hasDraft:y(i,t),storeDraft:y(u,t),restoreDraft:y(s,t),removeDraft:y(g,t),isEmpty:y(a,t)}}(t)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/bbcode/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/bbcode/plugin.min.js
deleted file mode 100644 (file)
index 3b5119f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(t){t=e.trim(t);function o(o,e){t=t.replace(o,e)}return o(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/<font>(.*?)<\/font>/gi,"$1"),o(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),o(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),o(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),o(/<u>/gi,"[u]"),o(/<blockquote[^>]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/<br \/>/gi,"\n"),o(/<br\/>/gi,"\n"),o(/<br>/gi,"\n"),o(/<p>/gi,""),o(/<\/p>/gi,"\n"),o(/&nbsp;|\u00a0/gi," "),o(/&quot;/gi,'"'),o(/&lt;/gi,"<"),o(/&gt;/gi,">"),o(/&amp;/gi,"&"),t},i=function(t){t=e.trim(t);function o(o,e){t=t.replace(o,e)}return o(/\n/gi,"<br />"),o(/\[b\]/gi,"<strong>"),o(/\[\/b\]/gi,"</strong>"),o(/\[i\]/gi,"<em>"),o(/\[\/i\]/gi,"</em>"),o(/\[u\]/gi,"<u>"),o(/\[\/u\]/gi,"</u>"),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),o(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),o(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),o(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),t};!function n(){o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=i(o.content)}),o.on("PostProcess",function(o){o.set&&(o.content=i(o.content)),o.get&&(o.content=t(o.content))})})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/charmap/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/charmap/plugin.min.js
deleted file mode 100644 (file)
index b1623c9..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(c){"use strict";function n(){}function i(n){return function(){return n}}function e(){return m}var r,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(n,e){return n.fire("insertCustomChar",{chr:e})},u=function(n,e){var r=a(n,e).chr;n.execCommand("mceInsertContent",!1,r)},o=tinymce.util.Tools.resolve("tinymce.util.Tools"),s=function(n){return n.settings.charmap},l=function(n){return n.settings.charmap_append},f=i(!1),g=i(!0),m=(r={fold:function(n,e){return n()},is:f,isSome:f,isNone:g,getOr:p,getOrThunk:d,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:p,orThunk:d,map:e,each:n,bind:e,exists:f,forall:g,filter:e,equals:h,equals_:h,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(r),r);function h(n){return n.isNone()}function d(n){return n()}function p(n){return n}function y(e){return function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===e}}function w(n,e){for(var r=n.length,t=new Array(r),a=0;a<r;a++){var i=n[a];t[a]=e(i,a)}return t}function b(n,e){return function(n){for(var e=[],r=0,t=n.length;r<t;++r){if(!O(n[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+n);S.apply(e,n[r])}return e}(w(n,e))}function v(n){return T(n)?[].concat(function(n){return o.grep(n,function(n){return T(n)&&2===n.length})}(n)):"function"==typeof n?n():[]}function k(n,e){return-1!==n.indexOf(e)}var C=function(r){function n(){return a}function e(n){return n(r)}var t=i(r),a={fold:function(n,e){return e(r)},is:function(n){return r===n},isSome:g,isNone:f,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:n,orThunk:n,map:function(n){return C(n(r))},each:function(n){n(r)},bind:e,exists:e,forall:e,filter:function(n){return n(r)?a:m},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(n){return n.is(r)},equals_:function(n,e){return n.fold(f,function(n){return e(r,n)})}};return a},A={some:C,none:e,from:function(n){return null===n||n===undefined?m:C(n)}},O=y("array"),x=y("function"),q=Array.prototype.slice,S=Array.prototype.push,T=(x(Array.from)&&Array.from,o.isArray),E="User Defined",z=function(n){var e=function(n,e){var r=s(n);r&&(e=[{name:E,characters:v(r)}]);var t=l(n);if(t){var a=o.grep(e,function(n){return n.name===E});return a.length?(a[0].characters=[].concat(a[0].characters).concat(v(t)),e):[].concat(e).concat({name:E,characters:v(t)})}return e}(n,[{name:"Currency",characters:[[36,"dollar sign"],[162,"cent sign"],[8364,"euro sign"],[163,"pound sign"],[165,"yen sign"],[164,"currency sign"],[8352,"euro-currency sign"],[8353,"colon sign"],[8354,"cruzeiro sign"],[8355,"french franc sign"],[8356,"lira sign"],[8357,"mill sign"],[8358,"naira sign"],[8359,"peseta sign"],[8360,"rupee sign"],[8361,"won sign"],[8362,"new sheqel sign"],[8363,"dong sign"],[8365,"kip sign"],[8366,"tugrik sign"],[8367,"drachma sign"],[8368,"german penny symbol"],[8369,"peso sign"],[8370,"guarani sign"],[8371,"austral sign"],[8372,"hryvnia sign"],[8373,"cedi sign"],[8374,"livre tournois sign"],[8375,"spesmilo sign"],[8376,"tenge sign"],[8377,"indian rupee sign"],[8378,"turkish lira sign"],[8379,"nordic mark sign"],[8380,"manat sign"],[8381,"ruble sign"],[20870,"yen character"],[20803,"yuan character"],[22291,"yuan character, in hong kong and taiwan"],[22278,"yen/yuan character variant one"]]},{name:"Text",characters:[[169,"copyright sign"],[174,"registered sign"],[8482,"trade mark sign"],[8240,"per mille sign"],[181,"micro sign"],[183,"middle dot"],[8226,"bullet"],[8230,"three dot leader"],[8242,"minutes / feet"],[8243,"seconds / inches"],[167,"section sign"],[182,"paragraph sign"],[223,"sharp s / ess-zed"]]},{name:"Quotations",characters:[[8249,"single left-pointing angle quotation mark"],[8250,"single right-pointing angle quotation mark"],[171,"left pointing guillemet"],[187,"right pointing guillemet"],[8216,"left single quotation mark"],[8217,"right single quotation mark"],[8220,"left double quotation mark"],[8221,"right double quotation mark"],[8218,"single low-9 quotation mark"],[8222,"double low-9 quotation mark"],[60,"less-than sign"],[62,"greater-than sign"],[8804,"less-than or equal to"],[8805,"greater-than or equal to"],[8211,"en dash"],[8212,"em dash"],[175,"macron"],[8254,"overline"],[164,"currency sign"],[166,"broken bar"],[168,"diaeresis"],[161,"inverted exclamation mark"],[191,"turned question mark"],[710,"circumflex accent"],[732,"small tilde"],[176,"degree sign"],[8722,"minus sign"],[177,"plus-minus sign"],[247,"division sign"],[8260,"fraction slash"],[215,"multiplication sign"],[185,"superscript one"],[178,"superscript two"],[179,"superscript three"],[188,"fraction one quarter"],[189,"fraction one half"],[190,"fraction three quarters"]]},{name:"Mathematical",characters:[[402,"function / florin"],[8747,"integral"],[8721,"n-ary sumation"],[8734,"infinity"],[8730,"square root"],[8764,"similar to"],[8773,"approximately equal to"],[8776,"almost equal to"],[8800,"not equal to"],[8801,"identical to"],[8712,"element of"],[8713,"not an element of"],[8715,"contains as member"],[8719,"n-ary product"],[8743,"logical and"],[8744,"logical or"],[172,"not sign"],[8745,"intersection"],[8746,"union"],[8706,"partial differential"],[8704,"for all"],[8707,"there exists"],[8709,"diameter"],[8711,"backward difference"],[8727,"asterisk operator"],[8733,"proportional to"],[8736,"angle"]]},{name:"Extended Latin",characters:[[192,"A - grave"],[193,"A - acute"],[194,"A - circumflex"],[195,"A - tilde"],[196,"A - diaeresis"],[197,"A - ring above"],[256,"A - macron"],[198,"ligature AE"],[199,"C - cedilla"],[200,"E - grave"],[201,"E - acute"],[202,"E - circumflex"],[203,"E - diaeresis"],[274,"E - macron"],[204,"I - grave"],[205,"I - acute"],[206,"I - circumflex"],[207,"I - diaeresis"],[298,"I - macron"],[208,"ETH"],[209,"N - tilde"],[210,"O - grave"],[211,"O - acute"],[212,"O - circumflex"],[213,"O - tilde"],[214,"O - diaeresis"],[216,"O - slash"],[332,"O - macron"],[338,"ligature OE"],[352,"S - caron"],[217,"U - grave"],[218,"U - acute"],[219,"U - circumflex"],[220,"U - diaeresis"],[362,"U - macron"],[221,"Y - acute"],[376,"Y - diaeresis"],[562,"Y - macron"],[222,"THORN"],[224,"a - grave"],[225,"a - acute"],[226,"a - circumflex"],[227,"a - tilde"],[228,"a - diaeresis"],[229,"a - ring above"],[257,"a - macron"],[230,"ligature ae"],[231,"c - cedilla"],[232,"e - grave"],[233,"e - acute"],[234,"e - circumflex"],[235,"e - diaeresis"],[275,"e - macron"],[236,"i - grave"],[237,"i - acute"],[238,"i - circumflex"],[239,"i - diaeresis"],[299,"i - macron"],[240,"eth"],[241,"n - tilde"],[242,"o - grave"],[243,"o - acute"],[244,"o - circumflex"],[245,"o - tilde"],[246,"o - diaeresis"],[248,"o slash"],[333,"o macron"],[339,"ligature oe"],[353,"s - caron"],[249,"u - grave"],[250,"u - acute"],[251,"u - circumflex"],[252,"u - diaeresis"],[363,"u - macron"],[253,"y - acute"],[254,"thorn"],[255,"y - diaeresis"],[563,"y - macron"],[913,"Alpha"],[914,"Beta"],[915,"Gamma"],[916,"Delta"],[917,"Epsilon"],[918,"Zeta"],[919,"Eta"],[920,"Theta"],[921,"Iota"],[922,"Kappa"],[923,"Lambda"],[924,"Mu"],[925,"Nu"],[926,"Xi"],[927,"Omicron"],[928,"Pi"],[929,"Rho"],[931,"Sigma"],[932,"Tau"],[933,"Upsilon"],[934,"Phi"],[935,"Chi"],[936,"Psi"],[937,"Omega"],[945,"alpha"],[946,"beta"],[947,"gamma"],[948,"delta"],[949,"epsilon"],[950,"zeta"],[951,"eta"],[952,"theta"],[953,"iota"],[954,"kappa"],[955,"lambda"],[956,"mu"],[957,"nu"],[958,"xi"],[959,"omicron"],[960,"pi"],[961,"rho"],[962,"final sigma"],[963,"sigma"],[964,"tau"],[965,"upsilon"],[966,"phi"],[967,"chi"],[968,"psi"],[969,"omega"]]},{name:"Symbols",characters:[[8501,"alef symbol"],[982,"pi symbol"],[8476,"real part symbol"],[978,"upsilon - hook symbol"],[8472,"Weierstrass p"],[8465,"imaginary part"]]},{name:"Arrows",characters:[[8592,"leftwards arrow"],[8593,"upwards arrow"],[8594,"rightwards arrow"],[8595,"downwards arrow"],[8596,"left right arrow"],[8629,"carriage return"],[8656,"leftwards double arrow"],[8657,"upwards double arrow"],[8658,"rightwards double arrow"],[8659,"downwards double arrow"],[8660,"left right double arrow"],[8756,"therefore"],[8834,"subset of"],[8835,"superset of"],[8836,"not a subset of"],[8838,"subset of or equal to"],[8839,"superset of or equal to"],[8853,"circled plus"],[8855,"circled times"],[8869,"perpendicular"],[8901,"dot operator"],[8968,"left ceiling"],[8969,"right ceiling"],[8970,"left floor"],[8971,"right floor"],[9001,"left-pointing angle bracket"],[9002,"right-pointing angle bracket"],[9674,"lozenge"],[9824,"black spade suit"],[9827,"black club suit"],[9829,"black heart suit"],[9830,"black diamond suit"],[8194,"en space"],[8195,"em space"],[8201,"thin space"],[8204,"zero width non-joiner"],[8205,"zero width joiner"],[8206,"left-to-right mark"],[8207,"right-to-left mark"]]}]);return 1<e.length?[{name:"All",characters:b(e,function(n){return n.characters})}].concat(e):e},N=function(e){return{getCharMap:function(){return z(e)},insertChar:function(n){u(e,n)}}},U=function(n){function e(){return r}var r=n;return{get:e,set:function(n){r=n},clone:function(){return U(e())}}},D=function(n,e){var r=[],t=e.toLowerCase();return function(n,e){for(var r=0,t=n.length;r<t;r++){e(n[r],r)}}(n.characters,function(n){!function(n,e,r){return!!k(String.fromCharCode(n).toLowerCase(),r)||(k(e.toLowerCase(),r)||k(e.toLowerCase().replace(/\s+/g,""),r))}(n[0],n[1],t)||r.push(n)}),w(r,function(n){return{text:n[1],value:String.fromCharCode(n[0]),icon:String.fromCharCode(n[0])}})},I="pattern",P=function(r,n){function e(){return[{label:"Search",type:"input",name:I},{type:"collection",name:"results"}]}function t(r,t){(function(n,e){for(var r=0,t=n.length;r<t;r++){var a=n[r];if(e(a,r))return A.some(a)}return A.none()})(n,function(n){return n.name===a.get()}).each(function(n){var e=D(n,t);r.setData({results:e})})}var a=1===n.length?U(E):U("All"),i=function(r,t){var a=null;return{cancel:function(){null!==a&&(c.clearTimeout(a),a=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];null!==a&&c.clearTimeout(a),a=c.setTimeout(function(){r.apply(null,n),a=null},t)}}}(function(n){var e=n.getData().pattern;t(n,e)},40),o={title:"Special Character",size:"normal",body:1===n.length?{type:"panel",items:e()}:{type:"tabpanel",tabs:w(n,function(n){return{title:n.name,name:n.name,items:e()}})},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{pattern:"",results:D(n[0],"")},onAction:function(n,e){"results"===e.name&&(u(r,e.value),n.close())},onTabChange:function(n,e){a.set(e.newTabName),i.throttle(n)},onChange:function(n,e){e.name===I&&i.throttle(n)}};r.windowManager.open(o).focus(I)},j=function(n,e){n.addCommand("mceShowCharmap",function(){P(n,e)})},L=tinymce.util.Tools.resolve("tinymce.util.Promise"),M=function(n){n.ui.registry.addButton("charmap",{icon:"insert-character",tooltip:"Special character",onAction:function(){return n.execCommand("mceShowCharmap")}}),n.ui.registry.addMenuItem("charmap",{icon:"insert-character",text:"Special character...",onAction:function(){return n.execCommand("mceShowCharmap")}})};!function R(){t.add("charmap",function(n){var e=z(n);return j(n,e),M(n),function(t,a){t.ui.registry.addAutocompleter("charmap",{ch:":",columns:"auto",minChars:2,fetch:function(r,n){return new L(function(n,e){n(D(a,r))})},onAction:function(n,e,r){t.selection.setRng(e),t.insertContent(r),n.hide()}})}(n,e[0]),N(n)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/code/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/code/plugin.min.js
deleted file mode 100644 (file)
index f0db72f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e,n){e.focus(),e.undoManager.transact(function(){e.setContent(n)}),e.selection.setCursorLocation(),e.nodeChanged()},o=function(e){return e.getContent({source_view:!0})},n=function(n){var e=o(n);n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){t(n,e.getData().code),e.close()}})},c=function(e){e.addCommand("mceCodeEditor",function(){n(e)})},i=function(e){e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:function(){return n(e)}}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:function(){return n(e)}})};!function u(){e.add("code",function(e){return c(e),i(e),{}})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/codesample/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/codesample/plugin.min.js
deleted file mode 100644 (file)
index 95f8588..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(c){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),t={},n=t,g=void 0!==t?t:"undefined"!=typeof WorkerGlobalScope&&c.self instanceof WorkerGlobalScope?c.self:{},i=function(){var u=/\blang(?:uage)?-(?!\*)(\w+)\b/i,S=g.Prism={util:{encode:function(e){return e instanceof s?new s(e.type,S.util.encode(e.content),e.alias):"Array"===S.util.type(e)?e.map(S.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){switch(S.util.type(e)){case"Object":var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=S.util.clone(e[n]));return t;case"Array":return e.map&&e.map(function(e){return S.util.clone(e)})}return e}},languages:{extend:function(e,t){var n=S.util.clone(S.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(n,e,t,a){var r=(a=a||S.languages)[n];if(2===arguments.length){for(var i in t=e)t.hasOwnProperty(i)&&(r[i]=t[i]);return r}var o={};for(var s in r)if(r.hasOwnProperty(s)){if(s===e)for(var i in t)t.hasOwnProperty(i)&&(o[i]=t[i]);o[s]=r[s]}return S.languages.DFS(S.languages,function(e,t){t===a[n]&&e!==n&&(this[e]=o)}),a[n]=o},DFS:function(e,t,n){for(var a in e)e.hasOwnProperty(a)&&(t.call(e,a,e[a],n||a),"Object"===S.util.type(e[a])?S.languages.DFS(e[a],t):"Array"===S.util.type(e[a])&&S.languages.DFS(e[a],t,a))}},plugins:{},highlightAll:function(e,t){for(var n=c.document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'),a=0,r=void 0;r=n[a++];)S.highlightElement(r,!0===e,t)},highlightElement:function(e,t,n){for(var a,r,i=e;i&&!u.test(i.className);)i=i.parentNode;i&&(a=(i.className.match(u)||[,""])[1],r=S.languages[a]),e.className=e.className.replace(u,"").replace(/\s+/g," ")+" language-"+a,i=e.parentNode,/pre/i.test(i.nodeName)&&(i.className=i.className.replace(u,"").replace(/\s+/g," ")+" language-"+a);var o=e.textContent,s={element:e,language:a,grammar:r,code:o};if(o&&r)if(S.hooks.run("before-highlight",s),t&&g.Worker){var l=new c.Worker(S.filename);l.onmessage=function(e){s.highlightedCode=e.data,S.hooks.run("before-insert",s),s.element.innerHTML=s.highlightedCode,n&&n.call(s.element),S.hooks.run("after-highlight",s),S.hooks.run("complete",s)},l.postMessage(JSON.stringify({language:s.language,code:s.code,immediateClose:!0}))}else s.highlightedCode=S.highlight(s.code,s.grammar,s.language),S.hooks.run("before-insert",s),s.element.innerHTML=s.highlightedCode,n&&n.call(e),S.hooks.run("after-highlight",s),S.hooks.run("complete",s);else S.hooks.run("complete",s)},highlight:function(e,t,n){var a=S.tokenize(e,t);return s.stringify(S.util.encode(a),n)},tokenize:function(e,t,n){var a=S.Token,r=[e],i=t.rest;if(i){for(var o in i)t[o]=i[o];delete t.rest}e:for(var o in t)if(t.hasOwnProperty(o)&&t[o]){var s=t[o];s="Array"===S.util.type(s)?s:[s];for(var l=0;l<s.length;++l){var u=s[l],c=u.inside,g=!!u.lookbehind,d=0,p=u.alias;u=u.pattern||u;for(var f=0;f<r.length;f++){var h=r[f];if(r.length>e.length)break e;if(!(h instanceof a)){u.lastIndex=0;var m=u.exec(h);if(m){g&&(d=m[1].length);var b=m.index-1+d,y=b+(m=m[0].slice(d)).length,v=h.slice(0,b+1),k=h.slice(y+1),w=[f,1];v&&w.push(v);var x=new a(o,c?S.tokenize(m,c):m,p);w.push(x),k&&w.push(k),Array.prototype.splice.apply(r,w)}}}}}return r},hooks:{all:{},add:function(e,t){var n=S.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=S.hooks.all[e];if(n&&n.length)for(var a=0,r=void 0;r=n[a++];)r(t)}}},s=S.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(s.stringify=function(t,n,e){if("string"==typeof t)return t;if("Array"===S.util.type(t))return t.map(function(e){return s.stringify(e,n,t)}).join("");var a={type:t.type,content:s.stringify(t.content,n,e),tag:"span",classes:["token",t.type],attributes:{},language:n,parent:e};if("comment"===a.type&&(a.attributes.spellcheck="true"),t.alias){var r="Array"===S.util.type(t.alias)?t.alias:[t.alias];Array.prototype.push.apply(a.classes,r)}S.hooks.run("wrap",a);var i="";for(var o in a.attributes)i+=(i?" ":"")+o+'="'+(a.attributes[o]||"")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'" '+i+">"+a.content+"</"+a.tag+">"},!g.document)return g.addEventListener&&g.addEventListener("message",function(e){var t=JSON.parse(e.data),n=t.language,a=t.code,r=t.immediateClose;g.postMessage(S.highlight(a,S.languages[n],n)),r&&g.close()},!1),g.Prism}();void 0!==n&&(n.Prism=i),i.languages.markup={comment:/<!--[\w\W]*?-->/,prolog:/<\?[\w\W]+?\?>/,doctype:/<!DOCTYPE[\w\W]+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},i.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),i.languages.xml=i.languages.markup,i.languages.html=i.languages.markup,i.languages.mathml=i.languages.markup,i.languages.svg=i.languages.markup,i.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},i.languages.css.atrule.inside.rest=i.util.clone(i.languages.css),i.languages.markup&&(i.languages.insertBefore("markup","tag",{style:{pattern:/<style[\w\W]*?>[\w\W]*?<\/style>/i,inside:{tag:{pattern:/<style[\w\W]*?>|<\/style>/i,inside:i.languages.markup.tag.inside},rest:i.languages.css},alias:"language-css"}}),i.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:i.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:i.languages.css}},alias:"language-css"}},i.languages.markup.tag)),i.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},i.languages.javascript=i.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),i.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),i.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:i.languages.javascript}},string:/[\s\S]+/}}}),i.languages.markup&&i.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/i,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/i,inside:i.languages.markup.tag.inside},rest:i.languages.javascript},alias:"language-javascript"}}),i.languages.js=i.languages.javascript,i.languages.c=i.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),i.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete i.languages.c["class-name"],delete i.languages.c["boolean"],i.languages.csharp=i.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),i.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}),i.languages.cpp=i.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),i.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}}),i.languages.java=i.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),i.languages.php=i.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),i.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),i.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),i.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),i.languages.markup&&(i.hooks.add("before-highlight",function(t){"php"===t.language&&(t.tokenStack=[],t.backupCode=t.code,t.code=t.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(e){return t.tokenStack.push(e),"{{{PHP"+t.tokenStack.length+"}}}"}))}),i.hooks.add("before-insert",function(e){"php"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),i.hooks.add("after-highlight",function(e){if("php"===e.language){for(var t=0,n=void 0;n=e.tokenStack[t];t++)e.highlightedCode=e.highlightedCode.replace("{{{PHP"+(t+1)+"}}}",i.highlight(n,e.grammar,"php").replace(/\$/g,"$$$$"));e.element.innerHTML=e.highlightedCode}}),i.hooks.add("wrap",function(e){"php"===e.language&&"markup"===e.type&&(e.content=e.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'<span class="token php">$1</span>'))}),i.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:i.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})),i.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/},function(e){e.languages.ruby=e.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var t={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:t}},{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:t}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:t}}]}(i);function a(){}function o(e){return function(){return e}}function s(){return f}var l,u={isCodeSample:function B(e){return e&&"PRE"===e.nodeName&&-1!==e.className.indexOf("language-")},trimArg:function M(n){return function(e,t){return n(t)}}},d=o(!1),p=o(!0),f=(l={fold:function(e,t){return e()},is:d,isSome:d,isNone:p,getOr:b,getOrThunk:m,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:b,orThunk:m,map:s,each:a,bind:s,exists:d,forall:p,filter:s,equals:h,equals_:h,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(l),l);function h(e){return e.isNone()}function m(e){return e()}function b(e){return e}function y(e){var t=e.selection?e.selection.getNode():null;return u.isCodeSample(t)?w.some(t):w.none()}var v,k=function(n){function e(){return r}function t(e){return e(n)}var a=o(n),r={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:p,isNone:d,getOr:a,getOrThunk:a,getOrDie:a,getOrNull:a,getOrUndefined:a,or:e,orThunk:e,map:function(e){return k(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?r:f},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(d,function(e){return t(n,e)})}};return r},w={some:k,none:s,from:function(e){return null===e||e===undefined?f:k(e)}},x=y,S=function(t,n,a){t.undoManager.transact(function(){var e=y(t);return a=r.DOM.encode(a),e.fold(function(){t.insertContent('<pre id="__new" class="language-'+n+'">'+a+"</pre>"),t.selection.select(t.$("#__new").removeAttr("id")[0])},function(e){t.dom.setAttrib(e,"class","language-"+n),e.innerHTML=a,i.highlightElement(e),t.selection.select(e)})})},A=function(e){return y(e).fold(function(){return""},function(e){return e.textContent})},C=function(e){return e.settings.codesample_languages},_=function(e){var t=C(e);return t||[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}]},N=function(e,n){return x(e).fold(function(){return n},function(e){var t=e.className.match(/language-(\w+)/);return t?t[1]:n})},O=(v="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===v}),z=Array.prototype.slice,P=(O(Array.from)&&Array.from,function(n){var e=_(n),t=function(e){return 0===e.length?w.none():w.some(e[0])}(e).fold(function(){return""},function(e){return e.value}),a=N(n,t),r=A(n);n.windowManager.open({title:"Insert/Edit Code Sample",size:"large",body:{type:"panel",items:[{type:"selectbox",name:"language",label:"Language",items:e},{type:"textarea",name:"code",label:"Code view"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{language:a,code:r},onSubmit:function(e){var t=e.getData();S(n,t.language,t.code),e.close()}})}),W=function(t){t.addCommand("codesample",function(){var e=t.selection.getNode();t.selection.isCollapsed()||u.isCodeSample(e)?P(t):t.formatter.toggle("code")})},j=function(n){var r=n.$;n.on("PreProcess",function(e){r("pre[contenteditable=false]",e.node).filter(u.trimArg(u.isCodeSample)).each(function(e,t){var n=r(t),a=t.textContent;n.attr("class",r.trim(n.attr("class"))),n.removeAttr("contentEditable"),n.empty().append(r("<code></code>").each(function(){this.textContent=a}))})}),n.on("SetContent",function(){var e=r("pre").filter(u.trimArg(u.isCodeSample)).filter(function(e,t){return"false"!==t.contentEditable});e.length&&n.undoManager.transact(function(){e.each(function(e,t){r(t).find("br").each(function(e,t){t.parentNode.replaceChild(n.getDoc().createTextNode("\n"),t)}),t.contentEditable="false",t.innerHTML=n.dom.encode(t.textContent),i.highlightElement(t),t.className=r.trim(t.className)})})})},T=function(n){n.ui.registry.addToggleButton("codesample",{icon:"code-sample",tooltip:"Insert/edit code sample",onAction:function(){return P(n)},onSetup:function(e){function t(){e.setActive(function(e){var t=e.selection.getStart();return e.dom.is(t,"pre.language-markup")}(n))}return n.on("NodeChange",t),function(){return n.off("NodeChange",t)}}}),n.ui.registry.addMenuItem("codesample",{text:"Code sample...",icon:"code-sample",onAction:function(){return P(n)}})};!function F(){e.add("codesample",function(t){j(t),T(t),W(t),t.on("dblclick",function(e){u.isCodeSample(e.target)&&P(t)})})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js
deleted file mode 100644 (file)
index 51e2463..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("colorpicker",function(){o.console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js
deleted file mode 100644 (file)
index b9a9522..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(n){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager");!function e(){o.add("contextmenu",function(){n.console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/directionality/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/directionality/plugin.min.js
deleted file mode 100644 (file)
index 0105327..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(i){"use strict";function n(){}function u(n){return function(){return n}}function t(){return a}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=function(n,t){var e,r=n.dom,o=n.selection.getSelectedBlocks();o.length&&(e=r.getAttrib(o[0],"dir"),c.each(o,function(n){r.getParent(n.parentNode,'*[dir="'+t+'"]',r.getRoot())||r.setAttrib(n,"dir",e!==t?t:null)}),n.nodeChanged())},d=function(n){n.addCommand("mceDirectionLTR",function(){o(n,"ltr")}),n.addCommand("mceDirectionRTL",function(){o(n,"rtl")})},f=u(!1),l=u(!0),a=(e={fold:function(n,t){return n()},is:f,isSome:f,isNone:l,getOr:s,getOrThunk:N,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:s,orThunk:N,map:t,each:n,bind:t,exists:f,forall:l,filter:t,equals:m,equals_:m,toArray:function(){return[]},toString:u("none()")},Object.freeze&&Object.freeze(e),e);function m(n){return n.isNone()}function N(n){return n()}function s(n){return n}function g(n,t){var e=n.dom(),r=i.window.getComputedStyle(e).getPropertyValue(t),o=""!==r||function(n){var t=A(n)?n.dom().parentNode:n.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}(n)?r:w(e,t);return null===o?undefined:o}function T(t,r){return function(e){function n(n){var t=p.fromDom(n.element);e.setActive(function(n){return"rtl"===g(n,"direction")?"rtl":"ltr"}(t)===r)}return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}}var E,O,y=function(e){function n(){return o}function t(n){return n(e)}var r=u(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:l,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return y(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:a},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return o},D=function(n){return null===n||n===undefined?a:y(n)},h=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:u(n)}},p={fromHtml:function(n,t){var e=(t||i.document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw i.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return h(e.childNodes[0])},fromTag:function(n,t){var e=(t||i.document).createElement(n);return h(e)},fromText:function(n,t){var e=(t||i.document).createTextNode(n);return h(e)},fromDom:h,fromPoint:function(n,t,e){var r=n.dom();return D(r.elementFromPoint(t,e)).map(h)}},_=(E="function",function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===E}),v=Array.prototype.slice,C=(_(Array.from)&&Array.from,i.Node.ATTRIBUTE_NODE,i.Node.CDATA_SECTION_NODE,i.Node.COMMENT_NODE,i.Node.DOCUMENT_NODE,i.Node.DOCUMENT_TYPE_NODE,i.Node.DOCUMENT_FRAGMENT_NODE,i.Node.ELEMENT_NODE,i.Node.TEXT_NODE),A=(i.Node.PROCESSING_INSTRUCTION_NODE,i.Node.ENTITY_REFERENCE_NODE,i.Node.ENTITY_NODE,i.Node.NOTATION_NODE,"undefined"!=typeof i.window?i.window:Function("return this;")(),O=C,function(n){return function(n){return n.dom().nodeType}(n)===O}),w=function(n,t){return function(n){return n.style!==undefined&&_(n.style.getPropertyValue)}(n)?n.style.getPropertyValue(t):""},S=function(n){n.ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:function(){return n.execCommand("mceDirectionLTR")},onSetup:T(n,"ltr")}),n.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:function(){return n.execCommand("mceDirectionRTL")},onSetup:T(n,"rtl")})};!function R(){r.add("directionality",function(n){d(n),S(n)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/emoticons/js/emojis.js b/website/js/vendor/tinymce/js/tinymce/plugins/emoticons/js/emojis.js
deleted file mode 100644 (file)
index 5f8c249..0000000
+++ /dev/null
@@ -1,9015 +0,0 @@
-// NOTE: Source: npm package: emojilib, file:emojis.json
-window.tinymce.Resource.add("tinymce.plugins.emoticons", {
-  grinning: {
-    keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ],
-    "char": "\ud83d\ude00",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  grimacing: {
-    keywords: [ "face", "grimace", "teeth" ],
-    "char": "\ud83d\ude2c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  grin: {
-    keywords: [ "face", "happy", "smile", "joy", "kawaii" ],
-    "char": "\ud83d\ude01",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  joy: {
-    keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ],
-    "char": "\ud83d\ude02",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  rofl: {
-    keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ],
-    "char": "\ud83e\udd23",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smiley: {
-    keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ],
-    "char": "\ud83d\ude03",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smile: {
-    keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ],
-    "char": "\ud83d\ude04",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sweat_smile: {
-    keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ],
-    "char": "\ud83d\ude05",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  laughing: {
-    keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ],
-    "char": "\ud83d\ude06",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  innocent: {
-    keywords: [ "face", "angel", "heaven", "halo" ],
-    "char": "\ud83d\ude07",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  wink: {
-    keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ],
-    "char": "\ud83d\ude09",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  blush: {
-    keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ],
-    "char": "\ud83d\ude0a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  slightly_smiling_face: {
-    keywords: [ "face", "smile" ],
-    "char": "\ud83d\ude42",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  upside_down_face: {
-    keywords: [ "face", "flipped", "silly", "smile" ],
-    "char": "\ud83d\ude43",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  relaxed: {
-    keywords: [ "face", "blush", "massage", "happiness" ],
-    "char": "\u263a\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  yum: {
-    keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ],
-    "char": "\ud83d\ude0b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  relieved: {
-    keywords: [ "face", "relaxed", "phew", "massage", "happiness" ],
-    "char": "\ud83d\ude0c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  heart_eyes: {
-    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ],
-    "char": "\ud83d\ude0d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing_heart: {
-    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
-    "char": "\ud83d\ude18",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing: {
-    keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ],
-    "char": "\ud83d\ude17",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing_smiling_eyes: {
-    keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ],
-    "char": "\ud83d\ude19",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing_closed_eyes: {
-    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
-    "char": "\ud83d\ude1a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  stuck_out_tongue_winking_eye: {
-    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ],
-    "char": "\ud83d\ude1c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  zany: {
-    keywords: [ "face", "goofy", "crazy" ],
-    "char": "\ud83e\udd2a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  raised_eyebrow: {
-    keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ],
-    "char": "\ud83e\udd28",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  monocle: {
-    keywords: [ "face", "stuffy", "wealthy" ],
-    "char": "\ud83e\uddd0",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  stuck_out_tongue_closed_eyes: {
-    keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ],
-    "char": "\ud83d\ude1d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  stuck_out_tongue: {
-    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ],
-    "char": "\ud83d\ude1b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  money_mouth_face: {
-    keywords: [ "face", "rich", "dollar", "money" ],
-    "char": "\ud83e\udd11",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  nerd_face: {
-    keywords: [ "face", "nerdy", "geek", "dork" ],
-    "char": "\ud83e\udd13",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sunglasses: {
-    keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ],
-    "char": "\ud83d\ude0e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  star_struck: {
-    keywords: [ "face", "smile", "starry", "eyes", "grinning" ],
-    "char": "\ud83e\udd29",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  clown_face: {
-    keywords: [ "face" ],
-    "char": "\ud83e\udd21",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  cowboy_hat_face: {
-    keywords: [ "face", "cowgirl", "hat" ],
-    "char": "\ud83e\udd20",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  hugs: {
-    keywords: [ "face", "smile", "hug" ],
-    "char": "\ud83e\udd17",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smirk: {
-    keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ],
-    "char": "\ud83d\ude0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  no_mouth: {
-    keywords: [ "face", "hellokitty" ],
-    "char": "\ud83d\ude36",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  neutral_face: {
-    keywords: [ "indifference", "meh", ":|", "neutral" ],
-    "char": "\ud83d\ude10",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  expressionless: {
-    keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ],
-    "char": "\ud83d\ude11",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  unamused: {
-    keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ],
-    "char": "\ud83d\ude12",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  roll_eyes: {
-    keywords: [ "face", "eyeroll", "frustrated" ],
-    "char": "\ud83d\ude44",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  thinking: {
-    keywords: [ "face", "hmmm", "think", "consider" ],
-    "char": "\ud83e\udd14",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  lying_face: {
-    keywords: [ "face", "lie", "pinocchio" ],
-    "char": "\ud83e\udd25",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  hand_over_mouth: {
-    keywords: [ "face", "whoops", "shock", "surprise" ],
-    "char": "\ud83e\udd2d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  shushing: {
-    keywords: [ "face", "quiet", "shhh" ],
-    "char": "\ud83e\udd2b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  symbols_over_mouth: {
-    keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ],
-    "char": "\ud83e\udd2c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  exploding_head: {
-    keywords: [ "face", "shocked", "mind", "blown" ],
-    "char": "\ud83e\udd2f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  flushed: {
-    keywords: [ "face", "blush", "shy", "flattered" ],
-    "char": "\ud83d\ude33",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  disappointed: {
-    keywords: [ "face", "sad", "upset", "depressed", ":(" ],
-    "char": "\ud83d\ude1e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  worried: {
-    keywords: [ "face", "concern", "nervous", ":(" ],
-    "char": "\ud83d\ude1f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  angry: {
-    keywords: [ "mad", "face", "annoyed", "frustrated" ],
-    "char": "\ud83d\ude20",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  rage: {
-    keywords: [ "angry", "mad", "hate", "despise" ],
-    "char": "\ud83d\ude21",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  pensive: {
-    keywords: [ "face", "sad", "depressed", "upset" ],
-    "char": "\ud83d\ude14",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  confused: {
-    keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ],
-    "char": "\ud83d\ude15",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  slightly_frowning_face: {
-    keywords: [ "face", "frowning", "disappointed", "sad", "upset" ],
-    "char": "\ud83d\ude41",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  frowning_face: {
-    keywords: [ "face", "sad", "upset", "frown" ],
-    "char": "\u2639",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  persevere: {
-    keywords: [ "face", "sick", "no", "upset", "oops" ],
-    "char": "\ud83d\ude23",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  confounded: {
-    keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ],
-    "char": "\ud83d\ude16",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  tired_face: {
-    keywords: [ "sick", "whine", "upset", "frustrated" ],
-    "char": "\ud83d\ude2b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  weary: {
-    keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ],
-    "char": "\ud83d\ude29",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  triumph: {
-    keywords: [ "face", "gas", "phew", "proud", "pride" ],
-    "char": "\ud83d\ude24",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  open_mouth: {
-    keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ],
-    "char": "\ud83d\ude2e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  scream: {
-    keywords: [ "face", "munch", "scared", "omg" ],
-    "char": "\ud83d\ude31",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  fearful: {
-    keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ],
-    "char": "\ud83d\ude28",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  cold_sweat: {
-    keywords: [ "face", "nervous", "sweat" ],
-    "char": "\ud83d\ude30",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  hushed: {
-    keywords: [ "face", "woo", "shh" ],
-    "char": "\ud83d\ude2f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  frowning: {
-    keywords: [ "face", "aw", "what" ],
-    "char": "\ud83d\ude26",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  anguished: {
-    keywords: [ "face", "stunned", "nervous" ],
-    "char": "\ud83d\ude27",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  cry: {
-    keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ],
-    "char": "\ud83d\ude22",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  disappointed_relieved: {
-    keywords: [ "face", "phew", "sweat", "nervous" ],
-    "char": "\ud83d\ude25",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  drooling_face: {
-    keywords: [ "face" ],
-    "char": "\ud83e\udd24",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sleepy: {
-    keywords: [ "face", "tired", "rest", "nap" ],
-    "char": "\ud83d\ude2a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sweat: {
-    keywords: [ "face", "hot", "sad", "tired", "exercise" ],
-    "char": "\ud83d\ude13",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sob: {
-    keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ],
-    "char": "\ud83d\ude2d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dizzy_face: {
-    keywords: [ "spent", "unconscious", "xox", "dizzy" ],
-    "char": "\ud83d\ude35",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  astonished: {
-    keywords: [ "face", "xox", "surprised", "poisoned" ],
-    "char": "\ud83d\ude32",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  zipper_mouth_face: {
-    keywords: [ "face", "sealed", "zipper", "secret" ],
-    "char": "\ud83e\udd10",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  nauseated_face: {
-    keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ],
-    "char": "\ud83e\udd22",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sneezing_face: {
-    keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ],
-    "char": "\ud83e\udd27",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  vomiting: {
-    keywords: [ "face", "sick" ],
-    "char": "\ud83e\udd2e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  mask: {
-    keywords: [ "face", "sick", "ill", "disease" ],
-    "char": "\ud83d\ude37",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  face_with_thermometer: {
-    keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ],
-    "char": "\ud83e\udd12",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  face_with_head_bandage: {
-    keywords: [ "injured", "clumsy", "bandage", "hurt" ],
-    "char": "\ud83e\udd15",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sleeping: {
-    keywords: [ "face", "tired", "sleepy", "night", "zzz" ],
-    "char": "\ud83d\ude34",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  zzz: {
-    keywords: [ "sleepy", "tired", "dream" ],
-    "char": "\ud83d\udca4",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  poop: {
-    keywords: [ "hankey", "shitface", "fail", "turd", "shit" ],
-    "char": "\ud83d\udca9",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smiling_imp: {
-    keywords: [ "devil", "horns" ],
-    "char": "\ud83d\ude08",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  imp: {
-    keywords: [ "devil", "angry", "horns" ],
-    "char": "\ud83d\udc7f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  japanese_ogre: {
-    keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ],
-    "char": "\ud83d\udc79",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  japanese_goblin: {
-    keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ],
-    "char": "\ud83d\udc7a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  skull: {
-    keywords: [ "dead", "skeleton", "creepy", "death" ],
-    "char": "\ud83d\udc80",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  ghost: {
-    keywords: [ "halloween", "spooky", "scary" ],
-    "char": "\ud83d\udc7b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  alien: {
-    keywords: [ "UFO", "paul", "weird", "outer_space" ],
-    "char": "\ud83d\udc7d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  robot: {
-    keywords: [ "computer", "machine", "bot" ],
-    "char": "\ud83e\udd16",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smiley_cat: {
-    keywords: [ "animal", "cats", "happy", "smile" ],
-    "char": "\ud83d\ude3a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smile_cat: {
-    keywords: [ "animal", "cats", "smile" ],
-    "char": "\ud83d\ude38",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  joy_cat: {
-    keywords: [ "animal", "cats", "haha", "happy", "tears" ],
-    "char": "\ud83d\ude39",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  heart_eyes_cat: {
-    keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ],
-    "char": "\ud83d\ude3b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smirk_cat: {
-    keywords: [ "animal", "cats", "smirk" ],
-    "char": "\ud83d\ude3c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing_cat: {
-    keywords: [ "animal", "cats", "kiss" ],
-    "char": "\ud83d\ude3d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  scream_cat: {
-    keywords: [ "animal", "cats", "munch", "scared", "scream" ],
-    "char": "\ud83d\ude40",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  crying_cat_face: {
-    keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ],
-    "char": "\ud83d\ude3f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  pouting_cat: {
-    keywords: [ "animal", "cats" ],
-    "char": "\ud83d\ude3e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  palms_up: {
-    keywords: [ "hands", "gesture", "cupped", "prayer" ],
-    "char": "\ud83e\udd32",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raised_hands: {
-    keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ],
-    "char": "\ud83d\ude4c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  clap: {
-    keywords: [ "hands", "praise", "applause", "congrats", "yay" ],
-    "char": "\ud83d\udc4f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  wave: {
-    keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ],
-    "char": "\ud83d\udc4b",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  call_me_hand: {
-    keywords: [ "hands", "gesture" ],
-    "char": "\ud83e\udd19",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  "+1": {
-    keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ],
-    "char": "\ud83d\udc4d",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  "-1": {
-    keywords: [ "thumbsdown", "no", "dislike", "hand" ],
-    "char": "\ud83d\udc4e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  facepunch: {
-    keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ],
-    "char": "\ud83d\udc4a",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  fist: {
-    keywords: [ "fingers", "hand", "grasp" ],
-    "char": "\u270a",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  fist_left: {
-    keywords: [ "hand", "fistbump" ],
-    "char": "\ud83e\udd1b",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  fist_right: {
-    keywords: [ "hand", "fistbump" ],
-    "char": "\ud83e\udd1c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  v: {
-    keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ],
-    "char": "\u270c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  ok_hand: {
-    keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ],
-    "char": "\ud83d\udc4c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raised_hand: {
-    keywords: [ "fingers", "stop", "highfive", "palm", "ban" ],
-    "char": "\u270b",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raised_back_of_hand: {
-    keywords: [ "fingers", "raised", "backhand" ],
-    "char": "\ud83e\udd1a",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  open_hands: {
-    keywords: [ "fingers", "butterfly", "hands", "open" ],
-    "char": "\ud83d\udc50",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  muscle: {
-    keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ],
-    "char": "\ud83d\udcaa",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  pray: {
-    keywords: [ "please", "hope", "wish", "namaste", "highfive" ],
-    "char": "\ud83d\ude4f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  handshake: {
-    keywords: [ "agreement", "shake" ],
-    "char": "\ud83e\udd1d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  point_up: {
-    keywords: [ "hand", "fingers", "direction", "up" ],
-    "char": "\u261d",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  point_up_2: {
-    keywords: [ "fingers", "hand", "direction", "up" ],
-    "char": "\ud83d\udc46",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  point_down: {
-    keywords: [ "fingers", "hand", "direction", "down" ],
-    "char": "\ud83d\udc47",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  point_left: {
-    keywords: [ "direction", "fingers", "hand", "left" ],
-    "char": "\ud83d\udc48",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  point_right: {
-    keywords: [ "fingers", "hand", "direction", "right" ],
-    "char": "\ud83d\udc49",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  fu: {
-    keywords: [ "hand", "fingers", "rude", "middle", "flipping" ],
-    "char": "\ud83d\udd95",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raised_hand_with_fingers_splayed: {
-    keywords: [ "hand", "fingers", "palm" ],
-    "char": "\ud83d\udd90",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  love_you: {
-    keywords: [ "hand", "fingers", "gesture" ],
-    "char": "\ud83e\udd1f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  metal: {
-    keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ],
-    "char": "\ud83e\udd18",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  crossed_fingers: {
-    keywords: [ "good", "lucky" ],
-    "char": "\ud83e\udd1e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  vulcan_salute: {
-    keywords: [ "hand", "fingers", "spock", "star trek" ],
-    "char": "\ud83d\udd96",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  writing_hand: {
-    keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ],
-    "char": "\u270d",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  selfie: {
-    keywords: [ "camera", "phone" ],
-    "char": "\ud83e\udd33",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  nail_care: {
-    keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ],
-    "char": "\ud83d\udc85",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  lips: {
-    keywords: [ "mouth", "kiss" ],
-    "char": "\ud83d\udc44",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  tongue: {
-    keywords: [ "mouth", "playful" ],
-    "char": "\ud83d\udc45",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  ear: {
-    keywords: [ "face", "hear", "sound", "listen" ],
-    "char": "\ud83d\udc42",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  nose: {
-    keywords: [ "smell", "sniff" ],
-    "char": "\ud83d\udc43",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  eye: {
-    keywords: [ "face", "look", "see", "watch", "stare" ],
-    "char": "\ud83d\udc41",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  eyes: {
-    keywords: [ "look", "watch", "stalk", "peek", "see" ],
-    "char": "\ud83d\udc40",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  brain: {
-    keywords: [ "smart", "intelligent" ],
-    "char": "\ud83e\udde0",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  bust_in_silhouette: {
-    keywords: [ "user", "person", "human" ],
-    "char": "\ud83d\udc64",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  busts_in_silhouette: {
-    keywords: [ "user", "person", "human", "group", "team" ],
-    "char": "\ud83d\udc65",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  speaking_head: {
-    keywords: [ "user", "person", "human", "sing", "say", "talk" ],
-    "char": "\ud83d\udde3",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  baby: {
-    keywords: [ "child", "boy", "girl", "toddler" ],
-    "char": "\ud83d\udc76",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  child: {
-    keywords: [ "gender-neutral", "young" ],
-    "char": "\ud83e\uddd2",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  boy: {
-    keywords: [ "man", "male", "guy", "teenager" ],
-    "char": "\ud83d\udc66",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  girl: {
-    keywords: [ "female", "woman", "teenager" ],
-    "char": "\ud83d\udc67",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  adult: {
-    keywords: [ "gender-neutral", "person" ],
-    "char": "\ud83e\uddd1",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man: {
-    keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ],
-    "char": "\ud83d\udc68",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman: {
-    keywords: [ "female", "girls", "lady" ],
-    "char": "\ud83d\udc69",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  blonde_woman: {
-    keywords: [ "woman", "female", "girl", "blonde", "person" ],
-    "char": "\ud83d\udc71\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  blonde_man: {
-    keywords: [ "man", "male", "boy", "blonde", "guy", "person" ],
-    "char": "\ud83d\udc71",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  bearded_person: {
-    keywords: [ "person", "bewhiskered" ],
-    "char": "\ud83e\uddd4",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  older_adult: {
-    keywords: [ "human", "elder", "senior", "gender-neutral" ],
-    "char": "\ud83e\uddd3",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  older_man: {
-    keywords: [ "human", "male", "men", "old", "elder", "senior" ],
-    "char": "\ud83d\udc74",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  older_woman: {
-    keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ],
-    "char": "\ud83d\udc75",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_with_gua_pi_mao: {
-    keywords: [ "male", "boy", "chinese" ],
-    "char": "\ud83d\udc72",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_with_headscarf: {
-    keywords: [ "female", "hijab", "mantilla", "tichel" ],
-    "char": "\ud83e\uddd5",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_with_turban: {
-    keywords: [ "female", "indian", "hinduism", "arabs", "woman" ],
-    "char": "\ud83d\udc73\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_with_turban: {
-    keywords: [ "male", "indian", "hinduism", "arabs" ],
-    "char": "\ud83d\udc73",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  policewoman: {
-    keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ],
-    "char": "\ud83d\udc6e\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  policeman: {
-    keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ],
-    "char": "\ud83d\udc6e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  construction_worker_woman: {
-    keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ],
-    "char": "\ud83d\udc77\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  construction_worker_man: {
-    keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ],
-    "char": "\ud83d\udc77",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  guardswoman: {
-    keywords: [ "uk", "gb", "british", "female", "royal", "woman" ],
-    "char": "\ud83d\udc82\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  guardsman: {
-    keywords: [ "uk", "gb", "british", "male", "guy", "royal" ],
-    "char": "\ud83d\udc82",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  female_detective: {
-    keywords: [ "human", "spy", "detective", "female", "woman" ],
-    "char": "\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  male_detective: {
-    keywords: [ "human", "spy", "detective" ],
-    "char": "\ud83d\udd75",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_health_worker: {
-    keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\u2695\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_health_worker: {
-    keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\u2695\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_farmer: {
-    keywords: [ "rancher", "gardener", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udf3e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_farmer: {
-    keywords: [ "rancher", "gardener", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udf3e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_cook: {
-    keywords: [ "chef", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udf73",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_cook: {
-    keywords: [ "chef", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udf73",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_student: {
-    keywords: [ "graduate", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udf93",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_student: {
-    keywords: [ "graduate", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udf93",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_singer: {
-    keywords: [ "rockstar", "entertainer", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udfa4",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_singer: {
-    keywords: [ "rockstar", "entertainer", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udfa4",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_teacher: {
-    keywords: [ "instructor", "professor", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udfeb",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_teacher: {
-    keywords: [ "instructor", "professor", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udfeb",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_factory_worker: {
-    keywords: [ "assembly", "industrial", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udfed",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_factory_worker: {
-    keywords: [ "assembly", "industrial", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udfed",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_technologist: {
-    keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udcbb",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_technologist: {
-    keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udcbb",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_office_worker: {
-    keywords: [ "business", "manager", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udcbc",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_office_worker: {
-    keywords: [ "business", "manager", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udcbc",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_mechanic: {
-    keywords: [ "plumber", "woman", "human", "wrench" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udd27",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_mechanic: {
-    keywords: [ "plumber", "man", "human", "wrench" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udd27",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_scientist: {
-    keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udd2c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_scientist: {
-    keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udd2c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_artist: {
-    keywords: [ "painter", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udfa8",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_artist: {
-    keywords: [ "painter", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udfa8",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_firefighter: {
-    keywords: [ "fireman", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83d\ude92",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_firefighter: {
-    keywords: [ "fireman", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83d\ude92",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_pilot: {
-    keywords: [ "aviator", "plane", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\u2708\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_pilot: {
-    keywords: [ "aviator", "plane", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\u2708\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_astronaut: {
-    keywords: [ "space", "rocket", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83d\ude80",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_astronaut: {
-    keywords: [ "space", "rocket", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83d\ude80",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_judge: {
-    keywords: [ "justice", "court", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\u2696\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_judge: {
-    keywords: [ "justice", "court", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\u2696\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  mrs_claus: {
-    keywords: [ "woman", "female", "xmas", "mother christmas" ],
-    "char": "\ud83e\udd36",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  santa: {
-    keywords: [ "festival", "man", "male", "xmas", "father christmas" ],
-    "char": "\ud83c\udf85",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  sorceress: {
-    keywords: [ "woman", "female", "mage", "witch" ],
-    "char": "\ud83e\uddd9\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  wizard: {
-    keywords: [ "man", "male", "mage", "sorcerer" ],
-    "char": "\ud83e\uddd9\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_elf: {
-    keywords: [ "woman", "female" ],
-    "char": "\ud83e\udddd\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_elf: {
-    keywords: [ "man", "male" ],
-    "char": "\ud83e\udddd\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_vampire: {
-    keywords: [ "woman", "female" ],
-    "char": "\ud83e\udddb\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_vampire: {
-    keywords: [ "man", "male", "dracula" ],
-    "char": "\ud83e\udddb\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_zombie: {
-    keywords: [ "woman", "female", "undead", "walking dead" ],
-    "char": "\ud83e\udddf\u200d\u2640\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  man_zombie: {
-    keywords: [ "man", "male", "dracula", "undead", "walking dead" ],
-    "char": "\ud83e\udddf\u200d\u2642\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  woman_genie: {
-    keywords: [ "woman", "female" ],
-    "char": "\ud83e\uddde\u200d\u2640\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  man_genie: {
-    keywords: [ "man", "male" ],
-    "char": "\ud83e\uddde\u200d\u2642\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  mermaid: {
-    keywords: [ "woman", "female", "merwoman", "ariel" ],
-    "char": "\ud83e\udddc\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  merman: {
-    keywords: [ "man", "male", "triton" ],
-    "char": "\ud83e\udddc\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_fairy: {
-    keywords: [ "woman", "female" ],
-    "char": "\ud83e\uddda\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_fairy: {
-    keywords: [ "man", "male" ],
-    "char": "\ud83e\uddda\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  angel: {
-    keywords: [ "heaven", "wings", "halo" ],
-    "char": "\ud83d\udc7c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  pregnant_woman: {
-    keywords: [ "baby" ],
-    "char": "\ud83e\udd30",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  breastfeeding: {
-    keywords: [ "nursing", "baby" ],
-    "char": "\ud83e\udd31",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  princess: {
-    keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ],
-    "char": "\ud83d\udc78",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  prince: {
-    keywords: [ "boy", "man", "male", "crown", "royal", "king" ],
-    "char": "\ud83e\udd34",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  bride_with_veil: {
-    keywords: [ "couple", "marriage", "wedding", "woman", "bride" ],
-    "char": "\ud83d\udc70",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_in_tuxedo: {
-    keywords: [ "couple", "marriage", "wedding", "groom" ],
-    "char": "\ud83e\udd35",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  running_woman: {
-    keywords: [ "woman", "walking", "exercise", "race", "running", "female" ],
-    "char": "\ud83c\udfc3\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  running_man: {
-    keywords: [ "man", "walking", "exercise", "race", "running" ],
-    "char": "\ud83c\udfc3",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  walking_woman: {
-    keywords: [ "human", "feet", "steps", "woman", "female" ],
-    "char": "\ud83d\udeb6\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  walking_man: {
-    keywords: [ "human", "feet", "steps" ],
-    "char": "\ud83d\udeb6",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  dancer: {
-    keywords: [ "female", "girl", "woman", "fun" ],
-    "char": "\ud83d\udc83",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_dancing: {
-    keywords: [ "male", "boy", "fun", "dancer" ],
-    "char": "\ud83d\udd7a",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  dancing_women: {
-    keywords: [ "female", "bunny", "women", "girls" ],
-    "char": "\ud83d\udc6f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dancing_men: {
-    keywords: [ "male", "bunny", "men", "boys" ],
-    "char": "\ud83d\udc6f\u200d\u2642\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couple: {
-    keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ],
-    "char": "\ud83d\udc6b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  two_men_holding_hands: {
-    keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ],
-    "char": "\ud83d\udc6c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  two_women_holding_hands: {
-    keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ],
-    "char": "\ud83d\udc6d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  bowing_woman: {
-    keywords: [ "woman", "female", "girl" ],
-    "char": "\ud83d\ude47\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  bowing_man: {
-    keywords: [ "man", "male", "boy" ],
-    "char": "\ud83d\ude47",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_facepalming: {
-    keywords: [ "man", "male", "boy", "disbelief" ],
-    "char": "\ud83e\udd26",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_facepalming: {
-    keywords: [ "woman", "female", "girl", "disbelief" ],
-    "char": "\ud83e\udd26\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_shrugging: {
-    keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ],
-    "char": "\ud83e\udd37",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_shrugging: {
-    keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ],
-    "char": "\ud83e\udd37\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  tipping_hand_woman: {
-    keywords: [ "female", "girl", "woman", "human", "information" ],
-    "char": "\ud83d\udc81",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  tipping_hand_man: {
-    keywords: [ "male", "boy", "man", "human", "information" ],
-    "char": "\ud83d\udc81\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  no_good_woman: {
-    keywords: [ "female", "girl", "woman", "nope" ],
-    "char": "\ud83d\ude45",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  no_good_man: {
-    keywords: [ "male", "boy", "man", "nope" ],
-    "char": "\ud83d\ude45\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  ok_woman: {
-    keywords: [ "women", "girl", "female", "pink", "human", "woman" ],
-    "char": "\ud83d\ude46",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  ok_man: {
-    keywords: [ "men", "boy", "male", "blue", "human", "man" ],
-    "char": "\ud83d\ude46\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raising_hand_woman: {
-    keywords: [ "female", "girl", "woman" ],
-    "char": "\ud83d\ude4b",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raising_hand_man: {
-    keywords: [ "male", "boy", "man" ],
-    "char": "\ud83d\ude4b\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  pouting_woman: {
-    keywords: [ "female", "girl", "woman" ],
-    "char": "\ud83d\ude4e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  pouting_man: {
-    keywords: [ "male", "boy", "man" ],
-    "char": "\ud83d\ude4e\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  frowning_woman: {
-    keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ],
-    "char": "\ud83d\ude4d",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  frowning_man: {
-    keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ],
-    "char": "\ud83d\ude4d\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  haircut_woman: {
-    keywords: [ "female", "girl", "woman" ],
-    "char": "\ud83d\udc87",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  haircut_man: {
-    keywords: [ "male", "boy", "man" ],
-    "char": "\ud83d\udc87\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  massage_woman: {
-    keywords: [ "female", "girl", "woman", "head" ],
-    "char": "\ud83d\udc86",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  massage_man: {
-    keywords: [ "male", "boy", "man", "head" ],
-    "char": "\ud83d\udc86\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_in_steamy_room: {
-    keywords: [ "female", "woman", "spa", "steamroom", "sauna" ],
-    "char": "\ud83e\uddd6\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_in_steamy_room: {
-    keywords: [ "male", "man", "spa", "steamroom", "sauna" ],
-    "char": "\ud83e\uddd6\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  couple_with_heart_woman_man: {
-    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
-    "char": "\ud83d\udc91",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couple_with_heart_woman_woman: {
-    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
-    "char": "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couple_with_heart_man_man: {
-    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
-    "char": "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couplekiss_man_woman: {
-    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
-    "char": "\ud83d\udc8f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couplekiss_woman_woman: {
-    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
-    "char": "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couplekiss_man_man: {
-    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
-    "char": "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_boy: {
-    keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ],
-    "char": "\ud83d\udc6a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_girl: {
-    keywords: [ "home", "parents", "people", "human", "child" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_girl_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_boy_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_girl_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_girl_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_boy_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_girl_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_girl_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_boy_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_girl_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_boy: {
-    keywords: [ "home", "parent", "people", "human", "child" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_girl: {
-    keywords: [ "home", "parent", "people", "human", "child" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_girl_boy: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_boy_boy: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_girl_girl: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_boy: {
-    keywords: [ "home", "parent", "people", "human", "child" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_girl: {
-    keywords: [ "home", "parent", "people", "human", "child" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_girl_boy: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_boy_boy: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_girl_girl: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  coat: {
-    keywords: [ "jacket" ],
-    "char": "\ud83e\udde5",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  womans_clothes: {
-    keywords: [ "fashion", "shopping_bags", "female" ],
-    "char": "\ud83d\udc5a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  tshirt: {
-    keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ],
-    "char": "\ud83d\udc55",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  jeans: {
-    keywords: [ "fashion", "shopping" ],
-    "char": "\ud83d\udc56",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  necktie: {
-    keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ],
-    "char": "\ud83d\udc54",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dress: {
-    keywords: [ "clothes", "fashion", "shopping" ],
-    "char": "\ud83d\udc57",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  bikini: {
-    keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ],
-    "char": "\ud83d\udc59",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kimono: {
-    keywords: [ "dress", "fashion", "women", "female", "japanese" ],
-    "char": "\ud83d\udc58",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  lipstick: {
-    keywords: [ "female", "girl", "fashion", "woman" ],
-    "char": "\ud83d\udc84",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kiss: {
-    keywords: [ "face", "lips", "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc8b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  footprints: {
-    keywords: [ "feet", "tracking", "walking", "beach" ],
-    "char": "\ud83d\udc63",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  high_heel: {
-    keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ],
-    "char": "\ud83d\udc60",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sandal: {
-    keywords: [ "shoes", "fashion", "flip flops" ],
-    "char": "\ud83d\udc61",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  boot: {
-    keywords: [ "shoes", "fashion" ],
-    "char": "\ud83d\udc62",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  mans_shoe: {
-    keywords: [ "fashion", "male" ],
-    "char": "\ud83d\udc5e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  athletic_shoe: {
-    keywords: [ "shoes", "sports", "sneakers" ],
-    "char": "\ud83d\udc5f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  socks: {
-    keywords: [ "stockings", "clothes" ],
-    "char": "\ud83e\udde6",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  gloves: {
-    keywords: [ "hands", "winter", "clothes" ],
-    "char": "\ud83e\udde4",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  scarf: {
-    keywords: [ "neck", "winter", "clothes" ],
-    "char": "\ud83e\udde3",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  womans_hat: {
-    keywords: [ "fashion", "accessories", "female", "lady", "spring" ],
-    "char": "\ud83d\udc52",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  tophat: {
-    keywords: [ "magic", "gentleman", "classy", "circus" ],
-    "char": "\ud83c\udfa9",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  billed_hat: {
-    keywords: [ "cap", "baseball" ],
-    "char": "\ud83e\udde2",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  rescue_worker_helmet: {
-    keywords: [ "construction", "build" ],
-    "char": "\u26d1",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  mortar_board: {
-    keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ],
-    "char": "\ud83c\udf93",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  crown: {
-    keywords: [ "king", "kod", "leader", "royalty", "lord" ],
-    "char": "\ud83d\udc51",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  school_satchel: {
-    keywords: [ "student", "education", "bag", "backpack" ],
-    "char": "\ud83c\udf92",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  pouch: {
-    keywords: [ "bag", "accessories", "shopping" ],
-    "char": "\ud83d\udc5d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  purse: {
-    keywords: [ "fashion", "accessories", "money", "sales", "shopping" ],
-    "char": "\ud83d\udc5b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  handbag: {
-    keywords: [ "fashion", "accessory", "accessories", "shopping" ],
-    "char": "\ud83d\udc5c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  briefcase: {
-    keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ],
-    "char": "\ud83d\udcbc",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  eyeglasses: {
-    keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ],
-    "char": "\ud83d\udc53",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dark_sunglasses: {
-    keywords: [ "face", "cool", "accessories" ],
-    "char": "\ud83d\udd76",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  ring: {
-    keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ],
-    "char": "\ud83d\udc8d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  closed_umbrella: {
-    keywords: [ "weather", "rain", "drizzle" ],
-    "char": "\ud83c\udf02",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dog: {
-    keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ],
-    "char": "\ud83d\udc36",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cat: {
-    keywords: [ "animal", "meow", "nature", "pet", "kitten" ],
-    "char": "\ud83d\udc31",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  mouse: {
-    keywords: [ "animal", "nature", "cheese_wedge", "rodent" ],
-    "char": "\ud83d\udc2d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hamster: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc39",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rabbit: {
-    keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ],
-    "char": "\ud83d\udc30",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fox_face: {
-    keywords: [ "animal", "nature", "face" ],
-    "char": "\ud83e\udd8a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bear: {
-    keywords: [ "animal", "nature", "wild" ],
-    "char": "\ud83d\udc3b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  panda_face: {
-    keywords: [ "animal", "nature", "panda" ],
-    "char": "\ud83d\udc3c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  koala: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc28",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tiger: {
-    keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ],
-    "char": "\ud83d\udc2f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  lion: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83e\udd81",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cow: {
-    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
-    "char": "\ud83d\udc2e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  pig: {
-    keywords: [ "animal", "oink", "nature" ],
-    "char": "\ud83d\udc37",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  pig_nose: {
-    keywords: [ "animal", "oink" ],
-    "char": "\ud83d\udc3d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  frog: {
-    keywords: [ "animal", "nature", "croak", "toad" ],
-    "char": "\ud83d\udc38",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  squid: {
-    keywords: [ "animal", "nature", "ocean", "sea" ],
-    "char": "\ud83e\udd91",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  octopus: {
-    keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ],
-    "char": "\ud83d\udc19",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  shrimp: {
-    keywords: [ "animal", "ocean", "nature", "seafood" ],
-    "char": "\ud83e\udd90",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  monkey_face: {
-    keywords: [ "animal", "nature", "circus" ],
-    "char": "\ud83d\udc35",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  gorilla: {
-    keywords: [ "animal", "nature", "circus" ],
-    "char": "\ud83e\udd8d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  see_no_evil: {
-    keywords: [ "monkey", "animal", "nature", "haha" ],
-    "char": "\ud83d\ude48",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hear_no_evil: {
-    keywords: [ "animal", "monkey", "nature" ],
-    "char": "\ud83d\ude49",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  speak_no_evil: {
-    keywords: [ "monkey", "animal", "nature", "omg" ],
-    "char": "\ud83d\ude4a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  monkey: {
-    keywords: [ "animal", "nature", "banana", "circus" ],
-    "char": "\ud83d\udc12",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  chicken: {
-    keywords: [ "animal", "cluck", "nature", "bird" ],
-    "char": "\ud83d\udc14",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  penguin: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc27",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bird: {
-    keywords: [ "animal", "nature", "fly", "tweet", "spring" ],
-    "char": "\ud83d\udc26",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  baby_chick: {
-    keywords: [ "animal", "chicken", "bird" ],
-    "char": "\ud83d\udc24",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hatching_chick: {
-    keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ],
-    "char": "\ud83d\udc23",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hatched_chick: {
-    keywords: [ "animal", "chicken", "baby", "bird" ],
-    "char": "\ud83d\udc25",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  duck: {
-    keywords: [ "animal", "nature", "bird", "mallard" ],
-    "char": "\ud83e\udd86",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  eagle: {
-    keywords: [ "animal", "nature", "bird" ],
-    "char": "\ud83e\udd85",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  owl: {
-    keywords: [ "animal", "nature", "bird", "hoot" ],
-    "char": "\ud83e\udd89",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bat: {
-    keywords: [ "animal", "nature", "blind", "vampire" ],
-    "char": "\ud83e\udd87",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  wolf: {
-    keywords: [ "animal", "nature", "wild" ],
-    "char": "\ud83d\udc3a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  boar: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc17",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  horse: {
-    keywords: [ "animal", "brown", "nature" ],
-    "char": "\ud83d\udc34",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  unicorn: {
-    keywords: [ "animal", "nature", "mystical" ],
-    "char": "\ud83e\udd84",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  honeybee: {
-    keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ],
-    "char": "\ud83d\udc1d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bug: {
-    keywords: [ "animal", "insect", "nature", "worm" ],
-    "char": "\ud83d\udc1b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  butterfly: {
-    keywords: [ "animal", "insect", "nature", "caterpillar" ],
-    "char": "\ud83e\udd8b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snail: {
-    keywords: [ "slow", "animal", "shell" ],
-    "char": "\ud83d\udc0c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  beetle: {
-    keywords: [ "animal", "insect", "nature", "ladybug" ],
-    "char": "\ud83d\udc1e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ant: {
-    keywords: [ "animal", "insect", "nature", "bug" ],
-    "char": "\ud83d\udc1c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  grasshopper: {
-    keywords: [ "animal", "cricket", "chirp" ],
-    "char": "\ud83e\udd97",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  spider: {
-    keywords: [ "animal", "arachnid" ],
-    "char": "\ud83d\udd77",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  scorpion: {
-    keywords: [ "animal", "arachnid" ],
-    "char": "\ud83e\udd82",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  crab: {
-    keywords: [ "animal", "crustacean" ],
-    "char": "\ud83e\udd80",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snake: {
-    keywords: [ "animal", "evil", "nature", "hiss", "python" ],
-    "char": "\ud83d\udc0d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  lizard: {
-    keywords: [ "animal", "nature", "reptile" ],
-    "char": "\ud83e\udd8e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  "t-rex": {
-    keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ],
-    "char": "\ud83e\udd96",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sauropod: {
-    keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ],
-    "char": "\ud83e\udd95",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  turtle: {
-    keywords: [ "animal", "slow", "nature", "tortoise" ],
-    "char": "\ud83d\udc22",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tropical_fish: {
-    keywords: [ "animal", "swim", "ocean", "beach", "nemo" ],
-    "char": "\ud83d\udc20",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fish: {
-    keywords: [ "animal", "food", "nature" ],
-    "char": "\ud83d\udc1f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  blowfish: {
-    keywords: [ "animal", "nature", "food", "sea", "ocean" ],
-    "char": "\ud83d\udc21",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dolphin: {
-    keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ],
-    "char": "\ud83d\udc2c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  shark: {
-    keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ],
-    "char": "\ud83e\udd88",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  whale: {
-    keywords: [ "animal", "nature", "sea", "ocean" ],
-    "char": "\ud83d\udc33",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  whale2: {
-    keywords: [ "animal", "nature", "sea", "ocean" ],
-    "char": "\ud83d\udc0b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  crocodile: {
-    keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ],
-    "char": "\ud83d\udc0a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  leopard: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc06",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  zebra: {
-    keywords: [ "animal", "nature", "stripes", "safari" ],
-    "char": "\ud83e\udd93",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tiger2: {
-    keywords: [ "animal", "nature", "roar" ],
-    "char": "\ud83d\udc05",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  water_buffalo: {
-    keywords: [ "animal", "nature", "ox", "cow" ],
-    "char": "\ud83d\udc03",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ox: {
-    keywords: [ "animal", "cow", "beef" ],
-    "char": "\ud83d\udc02",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cow2: {
-    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
-    "char": "\ud83d\udc04",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  deer: {
-    keywords: [ "animal", "nature", "horns", "venison" ],
-    "char": "\ud83e\udd8c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dromedary_camel: {
-    keywords: [ "animal", "hot", "desert", "hump" ],
-    "char": "\ud83d\udc2a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  camel: {
-    keywords: [ "animal", "nature", "hot", "desert", "hump" ],
-    "char": "\ud83d\udc2b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  giraffe: {
-    keywords: [ "animal", "nature", "spots", "safari" ],
-    "char": "\ud83e\udd92",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  elephant: {
-    keywords: [ "animal", "nature", "nose", "th", "circus" ],
-    "char": "\ud83d\udc18",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rhinoceros: {
-    keywords: [ "animal", "nature", "horn" ],
-    "char": "\ud83e\udd8f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  goat: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc10",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ram: {
-    keywords: [ "animal", "sheep", "nature" ],
-    "char": "\ud83d\udc0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sheep: {
-    keywords: [ "animal", "nature", "wool", "shipit" ],
-    "char": "\ud83d\udc11",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  racehorse: {
-    keywords: [ "animal", "gamble", "luck" ],
-    "char": "\ud83d\udc0e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  pig2: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc16",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rat: {
-    keywords: [ "animal", "mouse", "rodent" ],
-    "char": "\ud83d\udc00",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  mouse2: {
-    keywords: [ "animal", "nature", "rodent" ],
-    "char": "\ud83d\udc01",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rooster: {
-    keywords: [ "animal", "nature", "chicken" ],
-    "char": "\ud83d\udc13",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  turkey: {
-    keywords: [ "animal", "bird" ],
-    "char": "\ud83e\udd83",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dove: {
-    keywords: [ "animal", "bird" ],
-    "char": "\ud83d\udd4a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dog2: {
-    keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ],
-    "char": "\ud83d\udc15",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  poodle: {
-    keywords: [ "dog", "animal", "101", "nature", "pet" ],
-    "char": "\ud83d\udc29",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cat2: {
-    keywords: [ "animal", "meow", "pet", "cats" ],
-    "char": "\ud83d\udc08",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rabbit2: {
-    keywords: [ "animal", "nature", "pet", "magic", "spring" ],
-    "char": "\ud83d\udc07",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  chipmunk: {
-    keywords: [ "animal", "nature", "rodent", "squirrel" ],
-    "char": "\ud83d\udc3f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hedgehog: {
-    keywords: [ "animal", "nature", "spiny" ],
-    "char": "\ud83e\udd94",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  paw_prints: {
-    keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ],
-    "char": "\ud83d\udc3e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dragon: {
-    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
-    "char": "\ud83d\udc09",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dragon_face: {
-    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
-    "char": "\ud83d\udc32",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cactus: {
-    keywords: [ "vegetable", "plant", "nature" ],
-    "char": "\ud83c\udf35",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  christmas_tree: {
-    keywords: [ "festival", "vacation", "december", "xmas", "celebration" ],
-    "char": "\ud83c\udf84",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  evergreen_tree: {
-    keywords: [ "plant", "nature" ],
-    "char": "\ud83c\udf32",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  deciduous_tree: {
-    keywords: [ "plant", "nature" ],
-    "char": "\ud83c\udf33",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  palm_tree: {
-    keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ],
-    "char": "\ud83c\udf34",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  seedling: {
-    keywords: [ "plant", "nature", "grass", "lawn", "spring" ],
-    "char": "\ud83c\udf31",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  herb: {
-    keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ],
-    "char": "\ud83c\udf3f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  shamrock: {
-    keywords: [ "vegetable", "plant", "nature", "irish", "clover" ],
-    "char": "\u2618",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  four_leaf_clover: {
-    keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ],
-    "char": "\ud83c\udf40",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bamboo: {
-    keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ],
-    "char": "\ud83c\udf8d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tanabata_tree: {
-    keywords: [ "plant", "nature", "branch", "summer" ],
-    "char": "\ud83c\udf8b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  leaves: {
-    keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ],
-    "char": "\ud83c\udf43",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fallen_leaf: {
-    keywords: [ "nature", "plant", "vegetable", "leaves" ],
-    "char": "\ud83c\udf42",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  maple_leaf: {
-    keywords: [ "nature", "plant", "vegetable", "ca", "fall" ],
-    "char": "\ud83c\udf41",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ear_of_rice: {
-    keywords: [ "nature", "plant" ],
-    "char": "\ud83c\udf3e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hibiscus: {
-    keywords: [ "plant", "vegetable", "flowers", "beach" ],
-    "char": "\ud83c\udf3a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sunflower: {
-    keywords: [ "nature", "plant", "fall" ],
-    "char": "\ud83c\udf3b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rose: {
-    keywords: [ "flowers", "valentines", "love", "spring" ],
-    "char": "\ud83c\udf39",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  wilted_flower: {
-    keywords: [ "plant", "nature", "flower" ],
-    "char": "\ud83e\udd40",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tulip: {
-    keywords: [ "flowers", "plant", "nature", "summer", "spring" ],
-    "char": "\ud83c\udf37",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  blossom: {
-    keywords: [ "nature", "flowers", "yellow" ],
-    "char": "\ud83c\udf3c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cherry_blossom: {
-    keywords: [ "nature", "plant", "spring", "flower" ],
-    "char": "\ud83c\udf38",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bouquet: {
-    keywords: [ "flowers", "nature", "spring" ],
-    "char": "\ud83d\udc90",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  mushroom: {
-    keywords: [ "plant", "vegetable" ],
-    "char": "\ud83c\udf44",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  chestnut: {
-    keywords: [ "food", "squirrel" ],
-    "char": "\ud83c\udf30",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  jack_o_lantern: {
-    keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ],
-    "char": "\ud83c\udf83",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  shell: {
-    keywords: [ "nature", "sea", "beach" ],
-    "char": "\ud83d\udc1a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  spider_web: {
-    keywords: [ "animal", "insect", "arachnid", "silk" ],
-    "char": "\ud83d\udd78",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  earth_americas: {
-    keywords: [ "globe", "world", "USA", "international" ],
-    "char": "\ud83c\udf0e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  earth_africa: {
-    keywords: [ "globe", "world", "international" ],
-    "char": "\ud83c\udf0d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  earth_asia: {
-    keywords: [ "globe", "world", "east", "international" ],
-    "char": "\ud83c\udf0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  full_moon: {
-    keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf15",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  waning_gibbous_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ],
-    "char": "\ud83c\udf16",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  last_quarter_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf17",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  waning_crescent_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf18",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  new_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf11",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  waxing_crescent_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf12",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  first_quarter_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf13",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  waxing_gibbous_moon: {
-    keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ],
-    "char": "\ud83c\udf14",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  new_moon_with_face: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf1a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  full_moon_with_face: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf1d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  first_quarter_moon_with_face: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf1b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  last_quarter_moon_with_face: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf1c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sun_with_face: {
-    keywords: [ "nature", "morning", "sky" ],
-    "char": "\ud83c\udf1e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  crescent_moon: {
-    keywords: [ "night", "sleep", "sky", "evening", "magic" ],
-    "char": "\ud83c\udf19",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  star: {
-    keywords: [ "night", "yellow" ],
-    "char": "\u2b50",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  star2: {
-    keywords: [ "night", "sparkle", "awesome", "good", "magic" ],
-    "char": "\ud83c\udf1f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dizzy: {
-    keywords: [ "star", "sparkle", "shoot", "magic" ],
-    "char": "\ud83d\udcab",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sparkles: {
-    keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ],
-    "char": "\u2728",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  comet: {
-    keywords: [ "space" ],
-    "char": "\u2604",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sunny: {
-    keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ],
-    "char": "\u2600\ufe0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sun_behind_small_cloud: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf24",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  partly_sunny: {
-    keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ],
-    "char": "\u26c5",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sun_behind_large_cloud: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf25",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sun_behind_rain_cloud: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf26",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud: {
-    keywords: [ "weather", "sky" ],
-    "char": "\u2601\ufe0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud_with_rain: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf27",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud_with_lightning_and_rain: {
-    keywords: [ "weather", "lightning" ],
-    "char": "\u26c8",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud_with_lightning: {
-    keywords: [ "weather", "thunder" ],
-    "char": "\ud83c\udf29",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  zap: {
-    keywords: [ "thunder", "weather", "lightning bolt", "fast" ],
-    "char": "\u26a1",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fire: {
-    keywords: [ "hot", "cook", "flame" ],
-    "char": "\ud83d\udd25",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  boom: {
-    keywords: [ "bomb", "explode", "explosion", "collision", "blown" ],
-    "char": "\ud83d\udca5",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snowflake: {
-    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ],
-    "char": "\u2744\ufe0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud_with_snow: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf28",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snowman: {
-    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ],
-    "char": "\u26c4",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snowman_with_snow: {
-    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ],
-    "char": "\u2603",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  wind_face: {
-    keywords: [ "gust", "air" ],
-    "char": "\ud83c\udf2c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dash: {
-    keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ],
-    "char": "\ud83d\udca8",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tornado: {
-    keywords: [ "weather", "cyclone", "twister" ],
-    "char": "\ud83c\udf2a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fog: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf2b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  open_umbrella: {
-    keywords: [ "weather", "spring" ],
-    "char": "\u2602",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  umbrella: {
-    keywords: [ "rainy", "weather", "spring" ],
-    "char": "\u2614",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  droplet: {
-    keywords: [ "water", "drip", "faucet", "spring" ],
-    "char": "\ud83d\udca7",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sweat_drops: {
-    keywords: [ "water", "drip", "oops" ],
-    "char": "\ud83d\udca6",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ocean: {
-    keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ],
-    "char": "\ud83c\udf0a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  green_apple: {
-    keywords: [ "fruit", "nature" ],
-    "char": "\ud83c\udf4f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  apple: {
-    keywords: [ "fruit", "mac", "school" ],
-    "char": "\ud83c\udf4e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pear: {
-    keywords: [ "fruit", "nature", "food" ],
-    "char": "\ud83c\udf50",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tangerine: {
-    keywords: [ "food", "fruit", "nature", "orange" ],
-    "char": "\ud83c\udf4a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  lemon: {
-    keywords: [ "fruit", "nature" ],
-    "char": "\ud83c\udf4b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  banana: {
-    keywords: [ "fruit", "food", "monkey" ],
-    "char": "\ud83c\udf4c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  watermelon: {
-    keywords: [ "fruit", "food", "picnic", "summer" ],
-    "char": "\ud83c\udf49",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  grapes: {
-    keywords: [ "fruit", "food", "wine" ],
-    "char": "\ud83c\udf47",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  strawberry: {
-    keywords: [ "fruit", "food", "nature" ],
-    "char": "\ud83c\udf53",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  melon: {
-    keywords: [ "fruit", "nature", "food" ],
-    "char": "\ud83c\udf48",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cherries: {
-    keywords: [ "food", "fruit" ],
-    "char": "\ud83c\udf52",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  peach: {
-    keywords: [ "fruit", "nature", "food" ],
-    "char": "\ud83c\udf51",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pineapple: {
-    keywords: [ "fruit", "nature", "food" ],
-    "char": "\ud83c\udf4d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  coconut: {
-    keywords: [ "fruit", "nature", "food", "palm" ],
-    "char": "\ud83e\udd65",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  kiwi_fruit: {
-    keywords: [ "fruit", "food" ],
-    "char": "\ud83e\udd5d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  avocado: {
-    keywords: [ "fruit", "food" ],
-    "char": "\ud83e\udd51",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  broccoli: {
-    keywords: [ "fruit", "food", "vegetable" ],
-    "char": "\ud83e\udd66",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tomato: {
-    keywords: [ "fruit", "vegetable", "nature", "food" ],
-    "char": "\ud83c\udf45",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  eggplant: {
-    keywords: [ "vegetable", "nature", "food", "aubergine" ],
-    "char": "\ud83c\udf46",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cucumber: {
-    keywords: [ "fruit", "food", "pickle" ],
-    "char": "\ud83e\udd52",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  carrot: {
-    keywords: [ "vegetable", "food", "orange" ],
-    "char": "\ud83e\udd55",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  hot_pepper: {
-    keywords: [ "food", "spicy", "chilli", "chili" ],
-    "char": "\ud83c\udf36",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  potato: {
-    keywords: [ "food", "tuber", "vegatable", "starch" ],
-    "char": "\ud83e\udd54",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  corn: {
-    keywords: [ "food", "vegetable", "plant" ],
-    "char": "\ud83c\udf3d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  sweet_potato: {
-    keywords: [ "food", "nature" ],
-    "char": "\ud83c\udf60",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  peanuts: {
-    keywords: [ "food", "nut" ],
-    "char": "\ud83e\udd5c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  honey_pot: {
-    keywords: [ "bees", "sweet", "kitchen" ],
-    "char": "\ud83c\udf6f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  croissant: {
-    keywords: [ "food", "bread", "french" ],
-    "char": "\ud83e\udd50",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  bread: {
-    keywords: [ "food", "wheat", "breakfast", "toast" ],
-    "char": "\ud83c\udf5e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  baguette_bread: {
-    keywords: [ "food", "bread", "french" ],
-    "char": "\ud83e\udd56",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pretzel: {
-    keywords: [ "food", "bread", "twisted" ],
-    "char": "\ud83e\udd68",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cheese: {
-    keywords: [ "food", "chadder" ],
-    "char": "\ud83e\uddc0",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  egg: {
-    keywords: [ "food", "chicken", "breakfast" ],
-    "char": "\ud83e\udd5a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  bacon: {
-    keywords: [ "food", "breakfast", "pork", "pig", "meat" ],
-    "char": "\ud83e\udd53",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  steak: {
-    keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ],
-    "char": "\ud83e\udd69",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pancakes: {
-    keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ],
-    "char": "\ud83e\udd5e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  poultry_leg: {
-    keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ],
-    "char": "\ud83c\udf57",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  meat_on_bone: {
-    keywords: [ "good", "food", "drumstick" ],
-    "char": "\ud83c\udf56",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fried_shrimp: {
-    keywords: [ "food", "animal", "appetizer", "summer" ],
-    "char": "\ud83c\udf64",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fried_egg: {
-    keywords: [ "food", "breakfast", "kitchen", "egg" ],
-    "char": "\ud83c\udf73",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  hamburger: {
-    keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ],
-    "char": "\ud83c\udf54",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fries: {
-    keywords: [ "chips", "snack", "fast food" ],
-    "char": "\ud83c\udf5f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  stuffed_flatbread: {
-    keywords: [ "food", "flatbread", "stuffed", "gyro" ],
-    "char": "\ud83e\udd59",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  hotdog: {
-    keywords: [ "food", "frankfurter" ],
-    "char": "\ud83c\udf2d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pizza: {
-    keywords: [ "food", "party" ],
-    "char": "\ud83c\udf55",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  sandwich: {
-    keywords: [ "food", "lunch", "bread" ],
-    "char": "\ud83e\udd6a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  canned_food: {
-    keywords: [ "food", "soup" ],
-    "char": "\ud83e\udd6b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  spaghetti: {
-    keywords: [ "food", "italian", "noodle" ],
-    "char": "\ud83c\udf5d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  taco: {
-    keywords: [ "food", "mexican" ],
-    "char": "\ud83c\udf2e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  burrito: {
-    keywords: [ "food", "mexican" ],
-    "char": "\ud83c\udf2f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  green_salad: {
-    keywords: [ "food", "healthy", "lettuce" ],
-    "char": "\ud83e\udd57",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  shallow_pan_of_food: {
-    keywords: [ "food", "cooking", "casserole", "paella" ],
-    "char": "\ud83e\udd58",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  ramen: {
-    keywords: [ "food", "japanese", "noodle", "chopsticks" ],
-    "char": "\ud83c\udf5c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  stew: {
-    keywords: [ "food", "meat", "soup" ],
-    "char": "\ud83c\udf72",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fish_cake: {
-    keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ],
-    "char": "\ud83c\udf65",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fortune_cookie: {
-    keywords: [ "food", "prophecy" ],
-    "char": "\ud83e\udd60",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  sushi: {
-    keywords: [ "food", "fish", "japanese", "rice" ],
-    "char": "\ud83c\udf63",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  bento: {
-    keywords: [ "food", "japanese", "box" ],
-    "char": "\ud83c\udf71",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  curry: {
-    keywords: [ "food", "spicy", "hot", "indian" ],
-    "char": "\ud83c\udf5b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  rice_ball: {
-    keywords: [ "food", "japanese" ],
-    "char": "\ud83c\udf59",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  rice: {
-    keywords: [ "food", "china", "asian" ],
-    "char": "\ud83c\udf5a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  rice_cracker: {
-    keywords: [ "food", "japanese" ],
-    "char": "\ud83c\udf58",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  oden: {
-    keywords: [ "food", "japanese" ],
-    "char": "\ud83c\udf62",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  dango: {
-    keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ],
-    "char": "\ud83c\udf61",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  shaved_ice: {
-    keywords: [ "hot", "dessert", "summer" ],
-    "char": "\ud83c\udf67",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  ice_cream: {
-    keywords: [ "food", "hot", "dessert" ],
-    "char": "\ud83c\udf68",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  icecream: {
-    keywords: [ "food", "hot", "dessert", "summer" ],
-    "char": "\ud83c\udf66",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pie: {
-    keywords: [ "food", "dessert", "pastry" ],
-    "char": "\ud83e\udd67",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cake: {
-    keywords: [ "food", "dessert" ],
-    "char": "\ud83c\udf70",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  birthday: {
-    keywords: [ "food", "dessert", "cake" ],
-    "char": "\ud83c\udf82",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  custard: {
-    keywords: [ "dessert", "food" ],
-    "char": "\ud83c\udf6e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  candy: {
-    keywords: [ "snack", "dessert", "sweet", "lolly" ],
-    "char": "\ud83c\udf6c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  lollipop: {
-    keywords: [ "food", "snack", "candy", "sweet" ],
-    "char": "\ud83c\udf6d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  chocolate_bar: {
-    keywords: [ "food", "snack", "dessert", "sweet" ],
-    "char": "\ud83c\udf6b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  popcorn: {
-    keywords: [ "food", "movie theater", "films", "snack" ],
-    "char": "\ud83c\udf7f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  dumpling: {
-    keywords: [ "food", "empanada", "pierogi", "potsticker" ],
-    "char": "\ud83e\udd5f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  doughnut: {
-    keywords: [ "food", "dessert", "snack", "sweet", "donut" ],
-    "char": "\ud83c\udf69",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cookie: {
-    keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ],
-    "char": "\ud83c\udf6a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  milk_glass: {
-    keywords: [ "beverage", "drink", "cow" ],
-    "char": "\ud83e\udd5b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  beer: {
-    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
-    "char": "\ud83c\udf7a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  beers: {
-    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
-    "char": "\ud83c\udf7b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  clinking_glasses: {
-    keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ],
-    "char": "\ud83e\udd42",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  wine_glass: {
-    keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ],
-    "char": "\ud83c\udf77",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tumbler_glass: {
-    keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ],
-    "char": "\ud83e\udd43",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cocktail: {
-    keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ],
-    "char": "\ud83c\udf78",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tropical_drink: {
-    keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ],
-    "char": "\ud83c\udf79",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  champagne: {
-    keywords: [ "drink", "wine", "bottle", "celebration" ],
-    "char": "\ud83c\udf7e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  sake: {
-    keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ],
-    "char": "\ud83c\udf76",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tea: {
-    keywords: [ "drink", "bowl", "breakfast", "green", "british" ],
-    "char": "\ud83c\udf75",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cup_with_straw: {
-    keywords: [ "drink", "soda" ],
-    "char": "\ud83e\udd64",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  coffee: {
-    keywords: [ "beverage", "caffeine", "latte", "espresso" ],
-    "char": "\u2615",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  baby_bottle: {
-    keywords: [ "food", "container", "milk" ],
-    "char": "\ud83c\udf7c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  spoon: {
-    keywords: [ "cutlery", "kitchen", "tableware" ],
-    "char": "\ud83e\udd44",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fork_and_knife: {
-    keywords: [ "cutlery", "kitchen" ],
-    "char": "\ud83c\udf74",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  plate_with_cutlery: {
-    keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ],
-    "char": "\ud83c\udf7d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  bowl_with_spoon: {
-    keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ],
-    "char": "\ud83e\udd63",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  takeout_box: {
-    keywords: [ "food", "leftovers" ],
-    "char": "\ud83e\udd61",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  chopsticks: {
-    keywords: [ "food" ],
-    "char": "\ud83e\udd62",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  soccer: {
-    keywords: [ "sports", "football" ],
-    "char": "\u26bd",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  basketball: {
-    keywords: [ "sports", "balls", "NBA" ],
-    "char": "\ud83c\udfc0",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  football: {
-    keywords: [ "sports", "balls", "NFL" ],
-    "char": "\ud83c\udfc8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  baseball: {
-    keywords: [ "sports", "balls" ],
-    "char": "\u26be",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  tennis: {
-    keywords: [ "sports", "balls", "green" ],
-    "char": "\ud83c\udfbe",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  volleyball: {
-    keywords: [ "sports", "balls" ],
-    "char": "\ud83c\udfd0",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  rugby_football: {
-    keywords: [ "sports", "team" ],
-    "char": "\ud83c\udfc9",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  "8ball": {
-    keywords: [ "pool", "hobby", "game", "luck", "magic" ],
-    "char": "\ud83c\udfb1",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  golf: {
-    keywords: [ "sports", "business", "flag", "hole", "summer" ],
-    "char": "\u26f3",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  golfing_woman: {
-    keywords: [ "sports", "business", "woman", "female" ],
-    "char": "\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  golfing_man: {
-    keywords: [ "sports", "business" ],
-    "char": "\ud83c\udfcc",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  ping_pong: {
-    keywords: [ "sports", "pingpong" ],
-    "char": "\ud83c\udfd3",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  badminton: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udff8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  goal_net: {
-    keywords: [ "sports" ],
-    "char": "\ud83e\udd45",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  ice_hockey: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udfd2",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  field_hockey: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udfd1",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  cricket: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udfcf",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  ski: {
-    keywords: [ "sports", "winter", "cold", "snow" ],
-    "char": "\ud83c\udfbf",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  skier: {
-    keywords: [ "sports", "winter", "snow" ],
-    "char": "\u26f7",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  snowboarder: {
-    keywords: [ "sports", "winter" ],
-    "char": "\ud83c\udfc2",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  person_fencing: {
-    keywords: [ "sports", "fencing", "sword" ],
-    "char": "\ud83e\udd3a",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  women_wrestling: {
-    keywords: [ "sports", "wrestlers" ],
-    "char": "\ud83e\udd3c\u200d\u2640\ufe0f",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  men_wrestling: {
-    keywords: [ "sports", "wrestlers" ],
-    "char": "\ud83e\udd3c\u200d\u2642\ufe0f",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  woman_cartwheeling: {
-    keywords: [ "gymnastics" ],
-    "char": "\ud83e\udd38\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_cartwheeling: {
-    keywords: [ "gymnastics" ],
-    "char": "\ud83e\udd38\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  woman_playing_handball: {
-    keywords: [ "sports" ],
-    "char": "\ud83e\udd3e\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_playing_handball: {
-    keywords: [ "sports" ],
-    "char": "\ud83e\udd3e\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  ice_skate: {
-    keywords: [ "sports" ],
-    "char": "\u26f8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  curling_stone: {
-    keywords: [ "sports" ],
-    "char": "\ud83e\udd4c",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  sled: {
-    keywords: [ "sleigh", "luge", "toboggan" ],
-    "char": "\ud83d\udef7",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  bow_and_arrow: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udff9",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  fishing_pole_and_fish: {
-    keywords: [ "food", "hobby", "summer" ],
-    "char": "\ud83c\udfa3",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  boxing_glove: {
-    keywords: [ "sports", "fighting" ],
-    "char": "\ud83e\udd4a",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  martial_arts_uniform: {
-    keywords: [ "judo", "karate", "taekwondo" ],
-    "char": "\ud83e\udd4b",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  rowing_woman: {
-    keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ],
-    "char": "\ud83d\udea3\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  rowing_man: {
-    keywords: [ "sports", "hobby", "water", "ship" ],
-    "char": "\ud83d\udea3",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  climbing_woman: {
-    keywords: [ "sports", "hobby", "woman", "female", "rock" ],
-    "char": "\ud83e\uddd7\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  climbing_man: {
-    keywords: [ "sports", "hobby", "man", "male", "rock" ],
-    "char": "\ud83e\uddd7\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  swimming_woman: {
-    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ],
-    "char": "\ud83c\udfca\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  swimming_man: {
-    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ],
-    "char": "\ud83c\udfca",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  woman_playing_water_polo: {
-    keywords: [ "sports", "pool" ],
-    "char": "\ud83e\udd3d\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_playing_water_polo: {
-    keywords: [ "sports", "pool" ],
-    "char": "\ud83e\udd3d\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  woman_in_lotus_position: {
-    keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
-    "char": "\ud83e\uddd8\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_in_lotus_position: {
-    keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
-    "char": "\ud83e\uddd8\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  surfing_woman: {
-    keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ],
-    "char": "\ud83c\udfc4\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  surfing_man: {
-    keywords: [ "sports", "ocean", "sea", "summer", "beach" ],
-    "char": "\ud83c\udfc4",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  bath: {
-    keywords: [ "clean", "shower", "bathroom" ],
-    "char": "\ud83d\udec0",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  basketball_woman: {
-    keywords: [ "sports", "human", "woman", "female" ],
-    "char": "\u26f9\ufe0f\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  basketball_man: {
-    keywords: [ "sports", "human" ],
-    "char": "\u26f9",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  weight_lifting_woman: {
-    keywords: [ "sports", "training", "exercise", "woman", "female" ],
-    "char": "\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  weight_lifting_man: {
-    keywords: [ "sports", "training", "exercise" ],
-    "char": "\ud83c\udfcb",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  biking_woman: {
-    keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ],
-    "char": "\ud83d\udeb4\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  biking_man: {
-    keywords: [ "sports", "bike", "exercise", "hipster" ],
-    "char": "\ud83d\udeb4",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  mountain_biking_woman: {
-    keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ],
-    "char": "\ud83d\udeb5\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  mountain_biking_man: {
-    keywords: [ "transportation", "sports", "human", "race", "bike" ],
-    "char": "\ud83d\udeb5",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  horse_racing: {
-    keywords: [ "animal", "betting", "competition", "gambling", "luck" ],
-    "char": "\ud83c\udfc7",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  business_suit_levitating: {
-    keywords: [ "suit", "business", "levitate", "hover", "jump" ],
-    "char": "\ud83d\udd74",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  trophy: {
-    keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ],
-    "char": "\ud83c\udfc6",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  running_shirt_with_sash: {
-    keywords: [ "play", "pageant" ],
-    "char": "\ud83c\udfbd",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  medal_sports: {
-    keywords: [ "award", "winning" ],
-    "char": "\ud83c\udfc5",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  medal_military: {
-    keywords: [ "award", "winning", "army" ],
-    "char": "\ud83c\udf96",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  "1st_place_medal": {
-    keywords: [ "award", "winning", "first" ],
-    "char": "\ud83e\udd47",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  "2nd_place_medal": {
-    keywords: [ "award", "second" ],
-    "char": "\ud83e\udd48",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  "3rd_place_medal": {
-    keywords: [ "award", "third" ],
-    "char": "\ud83e\udd49",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  reminder_ribbon: {
-    keywords: [ "sports", "cause", "support", "awareness" ],
-    "char": "\ud83c\udf97",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  rosette: {
-    keywords: [ "flower", "decoration", "military" ],
-    "char": "\ud83c\udff5",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  ticket: {
-    keywords: [ "event", "concert", "pass" ],
-    "char": "\ud83c\udfab",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  tickets: {
-    keywords: [ "sports", "concert", "entrance" ],
-    "char": "\ud83c\udf9f",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  performing_arts: {
-    keywords: [ "acting", "theater", "drama" ],
-    "char": "\ud83c\udfad",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  art: {
-    keywords: [ "design", "paint", "draw", "colors" ],
-    "char": "\ud83c\udfa8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  circus_tent: {
-    keywords: [ "festival", "carnival", "party" ],
-    "char": "\ud83c\udfaa",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  woman_juggling: {
-    keywords: [ "juggle", "balance", "skill", "multitask" ],
-    "char": "\ud83e\udd39\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_juggling: {
-    keywords: [ "juggle", "balance", "skill", "multitask" ],
-    "char": "\ud83e\udd39\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  microphone: {
-    keywords: [ "sound", "music", "PA", "sing", "talkshow" ],
-    "char": "\ud83c\udfa4",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  headphones: {
-    keywords: [ "music", "score", "gadgets" ],
-    "char": "\ud83c\udfa7",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  musical_score: {
-    keywords: [ "treble", "clef", "compose" ],
-    "char": "\ud83c\udfbc",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  musical_keyboard: {
-    keywords: [ "piano", "instrument", "compose" ],
-    "char": "\ud83c\udfb9",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  drum: {
-    keywords: [ "music", "instrument", "drumsticks", "snare" ],
-    "char": "\ud83e\udd41",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  saxophone: {
-    keywords: [ "music", "instrument", "jazz", "blues" ],
-    "char": "\ud83c\udfb7",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  trumpet: {
-    keywords: [ "music", "brass" ],
-    "char": "\ud83c\udfba",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  guitar: {
-    keywords: [ "music", "instrument" ],
-    "char": "\ud83c\udfb8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  violin: {
-    keywords: [ "music", "instrument", "orchestra", "symphony" ],
-    "char": "\ud83c\udfbb",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  clapper: {
-    keywords: [ "movie", "film", "record" ],
-    "char": "\ud83c\udfac",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  video_game: {
-    keywords: [ "play", "console", "PS4", "controller" ],
-    "char": "\ud83c\udfae",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  space_invader: {
-    keywords: [ "game", "arcade", "play" ],
-    "char": "\ud83d\udc7e",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  dart: {
-    keywords: [ "game", "play", "bar", "target", "bullseye" ],
-    "char": "\ud83c\udfaf",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  game_die: {
-    keywords: [ "dice", "random", "tabletop", "play", "luck" ],
-    "char": "\ud83c\udfb2",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  slot_machine: {
-    keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ],
-    "char": "\ud83c\udfb0",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  bowling: {
-    keywords: [ "sports", "fun", "play" ],
-    "char": "\ud83c\udfb3",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  red_car: {
-    keywords: [ "red", "transportation", "vehicle" ],
-    "char": "\ud83d\ude97",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  taxi: {
-    keywords: [ "uber", "vehicle", "cars", "transportation" ],
-    "char": "\ud83d\ude95",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  blue_car: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude99",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bus: {
-    keywords: [ "car", "vehicle", "transportation" ],
-    "char": "\ud83d\ude8c",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  trolleybus: {
-    keywords: [ "bart", "transportation", "vehicle" ],
-    "char": "\ud83d\ude8e",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  racing_car: {
-    keywords: [ "sports", "race", "fast", "formula", "f1" ],
-    "char": "\ud83c\udfce",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  police_car: {
-    keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ],
-    "char": "\ud83d\ude93",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  ambulance: {
-    keywords: [ "health", "911", "hospital" ],
-    "char": "\ud83d\ude91",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  fire_engine: {
-    keywords: [ "transportation", "cars", "vehicle" ],
-    "char": "\ud83d\ude92",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  minibus: {
-    keywords: [ "vehicle", "car", "transportation" ],
-    "char": "\ud83d\ude90",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  truck: {
-    keywords: [ "cars", "transportation" ],
-    "char": "\ud83d\ude9a",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  articulated_lorry: {
-    keywords: [ "vehicle", "cars", "transportation", "express" ],
-    "char": "\ud83d\ude9b",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  tractor: {
-    keywords: [ "vehicle", "car", "farming", "agriculture" ],
-    "char": "\ud83d\ude9c",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  kick_scooter: {
-    keywords: [ "vehicle", "kick", "razor" ],
-    "char": "\ud83d\udef4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  motorcycle: {
-    keywords: [ "race", "sports", "fast" ],
-    "char": "\ud83c\udfcd",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bike: {
-    keywords: [ "sports", "bicycle", "exercise", "hipster" ],
-    "char": "\ud83d\udeb2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  motor_scooter: {
-    keywords: [ "vehicle", "vespa", "sasha" ],
-    "char": "\ud83d\udef5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  rotating_light: {
-    keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ],
-    "char": "\ud83d\udea8",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  oncoming_police_car: {
-    keywords: [ "vehicle", "law", "legal", "enforcement", "911" ],
-    "char": "\ud83d\ude94",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  oncoming_bus: {
-    keywords: [ "vehicle", "transportation" ],
-    "char": "\ud83d\ude8d",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  oncoming_automobile: {
-    keywords: [ "car", "vehicle", "transportation" ],
-    "char": "\ud83d\ude98",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  oncoming_taxi: {
-    keywords: [ "vehicle", "cars", "uber" ],
-    "char": "\ud83d\ude96",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  aerial_tramway: {
-    keywords: [ "transportation", "vehicle", "ski" ],
-    "char": "\ud83d\udea1",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mountain_cableway: {
-    keywords: [ "transportation", "vehicle", "ski" ],
-    "char": "\ud83d\udea0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  suspension_railway: {
-    keywords: [ "vehicle", "transportation" ],
-    "char": "\ud83d\ude9f",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  railway_car: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude83",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  train: {
-    keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ],
-    "char": "\ud83d\ude8b",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  monorail: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude9d",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bullettrain_side: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude84",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bullettrain_front: {
-    keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ],
-    "char": "\ud83d\ude85",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  light_rail: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude88",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mountain_railway: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude9e",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  steam_locomotive: {
-    keywords: [ "transportation", "vehicle", "train" ],
-    "char": "\ud83d\ude82",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  train2: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude86",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  metro: {
-    keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ],
-    "char": "\ud83d\ude87",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  tram: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude8a",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  station: {
-    keywords: [ "transportation", "vehicle", "public" ],
-    "char": "\ud83d\ude89",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  flying_saucer: {
-    keywords: [ "transportation", "vehicle", "ufo" ],
-    "char": "\ud83d\udef8",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  helicopter: {
-    keywords: [ "transportation", "vehicle", "fly" ],
-    "char": "\ud83d\ude81",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  small_airplane: {
-    keywords: [ "flight", "transportation", "fly", "vehicle" ],
-    "char": "\ud83d\udee9",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  airplane: {
-    keywords: [ "vehicle", "transportation", "flight", "fly" ],
-    "char": "\u2708\ufe0f",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  flight_departure: {
-    keywords: [ "airport", "flight", "landing" ],
-    "char": "\ud83d\udeeb",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  flight_arrival: {
-    keywords: [ "airport", "flight", "boarding" ],
-    "char": "\ud83d\udeec",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  sailboat: {
-    keywords: [ "ship", "summer", "transportation", "water", "sailing" ],
-    "char": "\u26f5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  motor_boat: {
-    keywords: [ "ship" ],
-    "char": "\ud83d\udee5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  speedboat: {
-    keywords: [ "ship", "transportation", "vehicle", "summer" ],
-    "char": "\ud83d\udea4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  ferry: {
-    keywords: [ "boat", "ship", "yacht" ],
-    "char": "\u26f4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  passenger_ship: {
-    keywords: [ "yacht", "cruise", "ferry" ],
-    "char": "\ud83d\udef3",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  rocket: {
-    keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ],
-    "char": "\ud83d\ude80",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  artificial_satellite: {
-    keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ],
-    "char": "\ud83d\udef0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  seat: {
-    keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ],
-    "char": "\ud83d\udcba",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  canoe: {
-    keywords: [ "boat", "paddle", "water", "ship" ],
-    "char": "\ud83d\udef6",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  anchor: {
-    keywords: [ "ship", "ferry", "sea", "boat" ],
-    "char": "\u2693",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  construction: {
-    keywords: [ "wip", "progress", "caution", "warning" ],
-    "char": "\ud83d\udea7",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  fuelpump: {
-    keywords: [ "gas station", "petroleum" ],
-    "char": "\u26fd",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  busstop: {
-    keywords: [ "transportation", "wait" ],
-    "char": "\ud83d\ude8f",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  vertical_traffic_light: {
-    keywords: [ "transportation", "driving" ],
-    "char": "\ud83d\udea6",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  traffic_light: {
-    keywords: [ "transportation", "signal" ],
-    "char": "\ud83d\udea5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  checkered_flag: {
-    keywords: [ "contest", "finishline", "race", "gokart" ],
-    "char": "\ud83c\udfc1",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  ship: {
-    keywords: [ "transportation", "titanic", "deploy" ],
-    "char": "\ud83d\udea2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  ferris_wheel: {
-    keywords: [ "photo", "carnival", "londoneye" ],
-    "char": "\ud83c\udfa1",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  roller_coaster: {
-    keywords: [ "carnival", "playground", "photo", "fun" ],
-    "char": "\ud83c\udfa2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  carousel_horse: {
-    keywords: [ "photo", "carnival" ],
-    "char": "\ud83c\udfa0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  building_construction: {
-    keywords: [ "wip", "working", "progress" ],
-    "char": "\ud83c\udfd7",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  foggy: {
-    keywords: [ "photo", "mountain" ],
-    "char": "\ud83c\udf01",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  tokyo_tower: {
-    keywords: [ "photo", "japanese" ],
-    "char": "\ud83d\uddfc",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  factory: {
-    keywords: [ "building", "industry", "pollution", "smoke" ],
-    "char": "\ud83c\udfed",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  fountain: {
-    keywords: [ "photo", "summer", "water", "fresh" ],
-    "char": "\u26f2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  rice_scene: {
-    keywords: [ "photo", "japan", "asia", "tsukimi" ],
-    "char": "\ud83c\udf91",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mountain: {
-    keywords: [ "photo", "nature", "environment" ],
-    "char": "\u26f0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mountain_snow: {
-    keywords: [ "photo", "nature", "environment", "winter", "cold" ],
-    "char": "\ud83c\udfd4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mount_fuji: {
-    keywords: [ "photo", "mountain", "nature", "japanese" ],
-    "char": "\ud83d\uddfb",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  volcano: {
-    keywords: [ "photo", "nature", "disaster" ],
-    "char": "\ud83c\udf0b",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  japan: {
-    keywords: [ "nation", "country", "japanese", "asia" ],
-    "char": "\ud83d\uddfe",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  camping: {
-    keywords: [ "photo", "outdoors", "tent" ],
-    "char": "\ud83c\udfd5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  tent: {
-    keywords: [ "photo", "camping", "outdoors" ],
-    "char": "\u26fa",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  national_park: {
-    keywords: [ "photo", "environment", "nature" ],
-    "char": "\ud83c\udfde",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  motorway: {
-    keywords: [ "road", "cupertino", "interstate", "highway" ],
-    "char": "\ud83d\udee3",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  railway_track: {
-    keywords: [ "train", "transportation" ],
-    "char": "\ud83d\udee4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  sunrise: {
-    keywords: [ "morning", "view", "vacation", "photo" ],
-    "char": "\ud83c\udf05",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  sunrise_over_mountains: {
-    keywords: [ "view", "vacation", "photo" ],
-    "char": "\ud83c\udf04",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  desert: {
-    keywords: [ "photo", "warm", "saharah" ],
-    "char": "\ud83c\udfdc",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  beach_umbrella: {
-    keywords: [ "weather", "summer", "sunny", "sand", "mojito" ],
-    "char": "\ud83c\udfd6",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  desert_island: {
-    keywords: [ "photo", "tropical", "mojito" ],
-    "char": "\ud83c\udfdd",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  city_sunrise: {
-    keywords: [ "photo", "good morning", "dawn" ],
-    "char": "\ud83c\udf07",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  city_sunset: {
-    keywords: [ "photo", "evening", "sky", "buildings" ],
-    "char": "\ud83c\udf06",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  cityscape: {
-    keywords: [ "photo", "night life", "urban" ],
-    "char": "\ud83c\udfd9",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  night_with_stars: {
-    keywords: [ "evening", "city", "downtown" ],
-    "char": "\ud83c\udf03",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bridge_at_night: {
-    keywords: [ "photo", "sanfrancisco" ],
-    "char": "\ud83c\udf09",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  milky_way: {
-    keywords: [ "photo", "space", "stars" ],
-    "char": "\ud83c\udf0c",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  stars: {
-    keywords: [ "night", "photo" ],
-    "char": "\ud83c\udf20",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  sparkler: {
-    keywords: [ "stars", "night", "shine" ],
-    "char": "\ud83c\udf87",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  fireworks: {
-    keywords: [ "photo", "festival", "carnival", "congratulations" ],
-    "char": "\ud83c\udf86",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  rainbow: {
-    keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ],
-    "char": "\ud83c\udf08",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  houses: {
-    keywords: [ "buildings", "photo" ],
-    "char": "\ud83c\udfd8",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  european_castle: {
-    keywords: [ "building", "royalty", "history" ],
-    "char": "\ud83c\udff0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  japanese_castle: {
-    keywords: [ "photo", "building" ],
-    "char": "\ud83c\udfef",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  stadium: {
-    keywords: [ "photo", "place", "sports", "concert", "venue" ],
-    "char": "\ud83c\udfdf",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  statue_of_liberty: {
-    keywords: [ "american", "newyork" ],
-    "char": "\ud83d\uddfd",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  house: {
-    keywords: [ "building", "home" ],
-    "char": "\ud83c\udfe0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  house_with_garden: {
-    keywords: [ "home", "plant", "nature" ],
-    "char": "\ud83c\udfe1",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  derelict_house: {
-    keywords: [ "abandon", "evict", "broken", "building" ],
-    "char": "\ud83c\udfda",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  office: {
-    keywords: [ "building", "bureau", "work" ],
-    "char": "\ud83c\udfe2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  department_store: {
-    keywords: [ "building", "shopping", "mall" ],
-    "char": "\ud83c\udfec",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  post_office: {
-    keywords: [ "building", "envelope", "communication" ],
-    "char": "\ud83c\udfe3",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  european_post_office: {
-    keywords: [ "building", "email" ],
-    "char": "\ud83c\udfe4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  hospital: {
-    keywords: [ "building", "health", "surgery", "doctor" ],
-    "char": "\ud83c\udfe5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bank: {
-    keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ],
-    "char": "\ud83c\udfe6",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  hotel: {
-    keywords: [ "building", "accomodation", "checkin" ],
-    "char": "\ud83c\udfe8",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  convenience_store: {
-    keywords: [ "building", "shopping", "groceries" ],
-    "char": "\ud83c\udfea",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  school: {
-    keywords: [ "building", "student", "education", "learn", "teach" ],
-    "char": "\ud83c\udfeb",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  love_hotel: {
-    keywords: [ "like", "affection", "dating" ],
-    "char": "\ud83c\udfe9",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  wedding: {
-    keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ],
-    "char": "\ud83d\udc92",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  classical_building: {
-    keywords: [ "art", "culture", "history" ],
-    "char": "\ud83c\udfdb",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  church: {
-    keywords: [ "building", "religion", "christ" ],
-    "char": "\u26ea",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mosque: {
-    keywords: [ "islam", "worship", "minaret" ],
-    "char": "\ud83d\udd4c",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  synagogue: {
-    keywords: [ "judaism", "worship", "temple", "jewish" ],
-    "char": "\ud83d\udd4d",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  kaaba: {
-    keywords: [ "mecca", "mosque", "islam" ],
-    "char": "\ud83d\udd4b",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  shinto_shrine: {
-    keywords: [ "temple", "japan", "kyoto" ],
-    "char": "\u26e9",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  watch: {
-    keywords: [ "time", "accessories" ],
-    "char": "\u231a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  iphone: {
-    keywords: [ "technology", "apple", "gadgets", "dial" ],
-    "char": "\ud83d\udcf1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  calling: {
-    keywords: [ "iphone", "incoming" ],
-    "char": "\ud83d\udcf2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  computer: {
-    keywords: [ "technology", "laptop", "screen", "display", "monitor" ],
-    "char": "\ud83d\udcbb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  keyboard: {
-    keywords: [ "technology", "computer", "type", "input", "text" ],
-    "char": "\u2328",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  desktop_computer: {
-    keywords: [ "technology", "computing", "screen" ],
-    "char": "\ud83d\udda5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  printer: {
-    keywords: [ "paper", "ink" ],
-    "char": "\ud83d\udda8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  computer_mouse: {
-    keywords: [ "click" ],
-    "char": "\ud83d\uddb1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  trackball: {
-    keywords: [ "technology", "trackpad" ],
-    "char": "\ud83d\uddb2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  joystick: {
-    keywords: [ "game", "play" ],
-    "char": "\ud83d\udd79",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  clamp: {
-    keywords: [ "tool" ],
-    "char": "\ud83d\udddc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  minidisc: {
-    keywords: [ "technology", "record", "data", "disk", "90s" ],
-    "char": "\ud83d\udcbd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  floppy_disk: {
-    keywords: [ "oldschool", "technology", "save", "90s", "80s" ],
-    "char": "\ud83d\udcbe",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  cd: {
-    keywords: [ "technology", "dvd", "disk", "disc", "90s" ],
-    "char": "\ud83d\udcbf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  dvd: {
-    keywords: [ "cd", "disk", "disc" ],
-    "char": "\ud83d\udcc0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  vhs: {
-    keywords: [ "record", "video", "oldschool", "90s", "80s" ],
-    "char": "\ud83d\udcfc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  camera: {
-    keywords: [ "gadgets", "photography" ],
-    "char": "\ud83d\udcf7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  camera_flash: {
-    keywords: [ "photography", "gadgets" ],
-    "char": "\ud83d\udcf8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  video_camera: {
-    keywords: [ "film", "record" ],
-    "char": "\ud83d\udcf9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  movie_camera: {
-    keywords: [ "film", "record" ],
-    "char": "\ud83c\udfa5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  film_projector: {
-    keywords: [ "video", "tape", "record", "movie" ],
-    "char": "\ud83d\udcfd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  film_strip: {
-    keywords: [ "movie" ],
-    "char": "\ud83c\udf9e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  telephone_receiver: {
-    keywords: [ "technology", "communication", "dial" ],
-    "char": "\ud83d\udcde",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  phone: {
-    keywords: [ "technology", "communication", "dial", "telephone" ],
-    "char": "\u260e\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pager: {
-    keywords: [ "bbcall", "oldschool", "90s" ],
-    "char": "\ud83d\udcdf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  fax: {
-    keywords: [ "communication", "technology" ],
-    "char": "\ud83d\udce0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  tv: {
-    keywords: [ "technology", "program", "oldschool", "show", "television" ],
-    "char": "\ud83d\udcfa",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  radio: {
-    keywords: [ "communication", "music", "podcast", "program" ],
-    "char": "\ud83d\udcfb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  studio_microphone: {
-    keywords: [ "sing", "recording", "artist", "talkshow" ],
-    "char": "\ud83c\udf99",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  level_slider: {
-    keywords: [ "scale" ],
-    "char": "\ud83c\udf9a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  control_knobs: {
-    keywords: [ "dial" ],
-    "char": "\ud83c\udf9b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  stopwatch: {
-    keywords: [ "time", "deadline" ],
-    "char": "\u23f1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  timer_clock: {
-    keywords: [ "alarm" ],
-    "char": "\u23f2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  alarm_clock: {
-    keywords: [ "time", "wake" ],
-    "char": "\u23f0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mantelpiece_clock: {
-    keywords: [ "time" ],
-    "char": "\ud83d\udd70",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hourglass_flowing_sand: {
-    keywords: [ "oldschool", "time", "countdown" ],
-    "char": "\u23f3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hourglass: {
-    keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ],
-    "char": "\u231b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  satellite: {
-    keywords: [ "communication", "future", "radio", "space" ],
-    "char": "\ud83d\udce1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  battery: {
-    keywords: [ "power", "energy", "sustain" ],
-    "char": "\ud83d\udd0b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  electric_plug: {
-    keywords: [ "charger", "power" ],
-    "char": "\ud83d\udd0c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bulb: {
-    keywords: [ "light", "electricity", "idea" ],
-    "char": "\ud83d\udca1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  flashlight: {
-    keywords: [ "dark", "camping", "sight", "night" ],
-    "char": "\ud83d\udd26",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  candle: {
-    keywords: [ "fire", "wax" ],
-    "char": "\ud83d\udd6f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  wastebasket: {
-    keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ],
-    "char": "\ud83d\uddd1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  oil_drum: {
-    keywords: [ "barrell" ],
-    "char": "\ud83d\udee2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  money_with_wings: {
-    keywords: [ "dollar", "bills", "payment", "sale" ],
-    "char": "\ud83d\udcb8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  dollar: {
-    keywords: [ "money", "sales", "bill", "currency" ],
-    "char": "\ud83d\udcb5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  yen: {
-    keywords: [ "money", "sales", "japanese", "dollar", "currency" ],
-    "char": "\ud83d\udcb4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  euro: {
-    keywords: [ "money", "sales", "dollar", "currency" ],
-    "char": "\ud83d\udcb6",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pound: {
-    keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ],
-    "char": "\ud83d\udcb7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  moneybag: {
-    keywords: [ "dollar", "payment", "coins", "sale" ],
-    "char": "\ud83d\udcb0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  credit_card: {
-    keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ],
-    "char": "\ud83d\udcb3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  gem: {
-    keywords: [ "blue", "ruby", "diamond", "jewelry" ],
-    "char": "\ud83d\udc8e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  balance_scale: {
-    keywords: [ "law", "fairness", "weight" ],
-    "char": "\u2696",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  wrench: {
-    keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ],
-    "char": "\ud83d\udd27",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hammer: {
-    keywords: [ "tools", "build", "create" ],
-    "char": "\ud83d\udd28",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hammer_and_pick: {
-    keywords: [ "tools", "build", "create" ],
-    "char": "\u2692",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hammer_and_wrench: {
-    keywords: [ "tools", "build", "create" ],
-    "char": "\ud83d\udee0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pick: {
-    keywords: [ "tools", "dig" ],
-    "char": "\u26cf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  nut_and_bolt: {
-    keywords: [ "handy", "tools", "fix" ],
-    "char": "\ud83d\udd29",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  gear: {
-    keywords: [ "cog" ],
-    "char": "\u2699",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  chains: {
-    keywords: [ "lock", "arrest" ],
-    "char": "\u26d3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  gun: {
-    keywords: [ "violence", "weapon", "pistol", "revolver" ],
-    "char": "\ud83d\udd2b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bomb: {
-    keywords: [ "boom", "explode", "explosion", "terrorism" ],
-    "char": "\ud83d\udca3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hocho: {
-    keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ],
-    "char": "\ud83d\udd2a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  dagger: {
-    keywords: [ "weapon" ],
-    "char": "\ud83d\udde1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  crossed_swords: {
-    keywords: [ "weapon" ],
-    "char": "\u2694",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  shield: {
-    keywords: [ "protection", "security" ],
-    "char": "\ud83d\udee1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  smoking: {
-    keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ],
-    "char": "\ud83d\udeac",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  skull_and_crossbones: {
-    keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ],
-    "char": "\u2620",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  coffin: {
-    keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ],
-    "char": "\u26b0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  funeral_urn: {
-    keywords: [ "dead", "die", "death", "rip", "ashes" ],
-    "char": "\u26b1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  amphora: {
-    keywords: [ "vase", "jar" ],
-    "char": "\ud83c\udffa",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  crystal_ball: {
-    keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ],
-    "char": "\ud83d\udd2e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  prayer_beads: {
-    keywords: [ "dhikr", "religious" ],
-    "char": "\ud83d\udcff",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  barber: {
-    keywords: [ "hair", "salon", "style" ],
-    "char": "\ud83d\udc88",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  alembic: {
-    keywords: [ "distilling", "science", "experiment", "chemistry" ],
-    "char": "\u2697",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  telescope: {
-    keywords: [ "stars", "space", "zoom", "science", "astronomy" ],
-    "char": "\ud83d\udd2d",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  microscope: {
-    keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ],
-    "char": "\ud83d\udd2c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hole: {
-    keywords: [ "embarrassing" ],
-    "char": "\ud83d\udd73",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pill: {
-    keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ],
-    "char": "\ud83d\udc8a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  syringe: {
-    keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ],
-    "char": "\ud83d\udc89",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  thermometer: {
-    keywords: [ "weather", "temperature", "hot", "cold" ],
-    "char": "\ud83c\udf21",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  label: {
-    keywords: [ "sale", "tag" ],
-    "char": "\ud83c\udff7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bookmark: {
-    keywords: [ "favorite", "label", "save" ],
-    "char": "\ud83d\udd16",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  toilet: {
-    keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ],
-    "char": "\ud83d\udebd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  shower: {
-    keywords: [ "clean", "water", "bathroom" ],
-    "char": "\ud83d\udebf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bathtub: {
-    keywords: [ "clean", "shower", "bathroom" ],
-    "char": "\ud83d\udec1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  key: {
-    keywords: [ "lock", "door", "password" ],
-    "char": "\ud83d\udd11",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  old_key: {
-    keywords: [ "lock", "door", "password" ],
-    "char": "\ud83d\udddd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  couch_and_lamp: {
-    keywords: [ "read", "chill" ],
-    "char": "\ud83d\udecb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  sleeping_bed: {
-    keywords: [ "bed", "rest" ],
-    "char": "\ud83d\udecc",
-    fitzpatrick_scale: true,
-    category: "objects"
-  },
-  bed: {
-    keywords: [ "sleep", "rest" ],
-    "char": "\ud83d\udecf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  door: {
-    keywords: [ "house", "entry", "exit" ],
-    "char": "\ud83d\udeaa",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bellhop_bell: {
-    keywords: [ "service" ],
-    "char": "\ud83d\udece",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  framed_picture: {
-    keywords: [ "photography" ],
-    "char": "\ud83d\uddbc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  world_map: {
-    keywords: [ "location", "direction" ],
-    "char": "\ud83d\uddfa",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  parasol_on_ground: {
-    keywords: [ "weather", "summer" ],
-    "char": "\u26f1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  moyai: {
-    keywords: [ "rock", "easter island", "moai" ],
-    "char": "\ud83d\uddff",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  shopping: {
-    keywords: [ "mall", "buy", "purchase" ],
-    "char": "\ud83d\udecd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  shopping_cart: {
-    keywords: [ "trolley" ],
-    "char": "\ud83d\uded2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  balloon: {
-    keywords: [ "party", "celebration", "birthday", "circus" ],
-    "char": "\ud83c\udf88",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  flags: {
-    keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ],
-    "char": "\ud83c\udf8f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  ribbon: {
-    keywords: [ "decoration", "pink", "girl", "bowtie" ],
-    "char": "\ud83c\udf80",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  gift: {
-    keywords: [ "present", "birthday", "christmas", "xmas" ],
-    "char": "\ud83c\udf81",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  confetti_ball: {
-    keywords: [ "festival", "party", "birthday", "circus" ],
-    "char": "\ud83c\udf8a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  tada: {
-    keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ],
-    "char": "\ud83c\udf89",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  dolls: {
-    keywords: [ "japanese", "toy", "kimono" ],
-    "char": "\ud83c\udf8e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  wind_chime: {
-    keywords: [ "nature", "ding", "spring", "bell" ],
-    "char": "\ud83c\udf90",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  crossed_flags: {
-    keywords: [ "japanese", "nation", "country", "border" ],
-    "char": "\ud83c\udf8c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  izakaya_lantern: {
-    keywords: [ "light", "paper", "halloween", "spooky" ],
-    "char": "\ud83c\udfee",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  email: {
-    keywords: [ "letter", "postal", "inbox", "communication" ],
-    "char": "\u2709\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  envelope_with_arrow: {
-    keywords: [ "email", "communication" ],
-    "char": "\ud83d\udce9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  incoming_envelope: {
-    keywords: [ "email", "inbox" ],
-    "char": "\ud83d\udce8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  "e-mail": {
-    keywords: [ "communication", "inbox" ],
-    "char": "\ud83d\udce7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  love_letter: {
-    keywords: [ "email", "like", "affection", "envelope", "valentines" ],
-    "char": "\ud83d\udc8c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  postbox: {
-    keywords: [ "email", "letter", "envelope" ],
-    "char": "\ud83d\udcee",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mailbox_closed: {
-    keywords: [ "email", "communication", "inbox" ],
-    "char": "\ud83d\udcea",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mailbox: {
-    keywords: [ "email", "inbox", "communication" ],
-    "char": "\ud83d\udceb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mailbox_with_mail: {
-    keywords: [ "email", "inbox", "communication" ],
-    "char": "\ud83d\udcec",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mailbox_with_no_mail: {
-    keywords: [ "email", "inbox" ],
-    "char": "\ud83d\udced",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  "package": {
-    keywords: [ "mail", "gift", "cardboard", "box", "moving" ],
-    "char": "\ud83d\udce6",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  postal_horn: {
-    keywords: [ "instrument", "music" ],
-    "char": "\ud83d\udcef",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  inbox_tray: {
-    keywords: [ "email", "documents" ],
-    "char": "\ud83d\udce5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  outbox_tray: {
-    keywords: [ "inbox", "email" ],
-    "char": "\ud83d\udce4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  scroll: {
-    keywords: [ "documents", "ancient", "history", "paper" ],
-    "char": "\ud83d\udcdc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  page_with_curl: {
-    keywords: [ "documents", "office", "paper" ],
-    "char": "\ud83d\udcc3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bookmark_tabs: {
-    keywords: [ "favorite", "save", "order", "tidy" ],
-    "char": "\ud83d\udcd1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bar_chart: {
-    keywords: [ "graph", "presentation", "stats" ],
-    "char": "\ud83d\udcca",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  chart_with_upwards_trend: {
-    keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ],
-    "char": "\ud83d\udcc8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  chart_with_downwards_trend: {
-    keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ],
-    "char": "\ud83d\udcc9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  page_facing_up: {
-    keywords: [ "documents", "office", "paper", "information" ],
-    "char": "\ud83d\udcc4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  date: {
-    keywords: [ "calendar", "schedule" ],
-    "char": "\ud83d\udcc5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  calendar: {
-    keywords: [ "schedule", "date", "planning" ],
-    "char": "\ud83d\udcc6",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  spiral_calendar: {
-    keywords: [ "date", "schedule", "planning" ],
-    "char": "\ud83d\uddd3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  card_index: {
-    keywords: [ "business", "stationery" ],
-    "char": "\ud83d\udcc7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  card_file_box: {
-    keywords: [ "business", "stationery" ],
-    "char": "\ud83d\uddc3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  ballot_box: {
-    keywords: [ "election", "vote" ],
-    "char": "\ud83d\uddf3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  file_cabinet: {
-    keywords: [ "filing", "organizing" ],
-    "char": "\ud83d\uddc4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  clipboard: {
-    keywords: [ "stationery", "documents" ],
-    "char": "\ud83d\udccb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  spiral_notepad: {
-    keywords: [ "memo", "stationery" ],
-    "char": "\ud83d\uddd2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  file_folder: {
-    keywords: [ "documents", "business", "office" ],
-    "char": "\ud83d\udcc1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  open_file_folder: {
-    keywords: [ "documents", "load" ],
-    "char": "\ud83d\udcc2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  card_index_dividers: {
-    keywords: [ "organizing", "business", "stationery" ],
-    "char": "\ud83d\uddc2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  newspaper_roll: {
-    keywords: [ "press", "headline" ],
-    "char": "\ud83d\uddde",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  newspaper: {
-    keywords: [ "press", "headline" ],
-    "char": "\ud83d\udcf0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  notebook: {
-    keywords: [ "stationery", "record", "notes", "paper", "study" ],
-    "char": "\ud83d\udcd3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  closed_book: {
-    keywords: [ "read", "library", "knowledge", "textbook", "learn" ],
-    "char": "\ud83d\udcd5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  green_book: {
-    keywords: [ "read", "library", "knowledge", "study" ],
-    "char": "\ud83d\udcd7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  blue_book: {
-    keywords: [ "read", "library", "knowledge", "learn", "study" ],
-    "char": "\ud83d\udcd8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  orange_book: {
-    keywords: [ "read", "library", "knowledge", "textbook", "study" ],
-    "char": "\ud83d\udcd9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  notebook_with_decorative_cover: {
-    keywords: [ "classroom", "notes", "record", "paper", "study" ],
-    "char": "\ud83d\udcd4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  ledger: {
-    keywords: [ "notes", "paper" ],
-    "char": "\ud83d\udcd2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  books: {
-    keywords: [ "literature", "library", "study" ],
-    "char": "\ud83d\udcda",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  open_book: {
-    keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ],
-    "char": "\ud83d\udcd6",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  link: {
-    keywords: [ "rings", "url" ],
-    "char": "\ud83d\udd17",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  paperclip: {
-    keywords: [ "documents", "stationery" ],
-    "char": "\ud83d\udcce",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  paperclips: {
-    keywords: [ "documents", "stationery" ],
-    "char": "\ud83d\udd87",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  scissors: {
-    keywords: [ "stationery", "cut" ],
-    "char": "\u2702\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  triangular_ruler: {
-    keywords: [ "stationery", "math", "architect", "sketch" ],
-    "char": "\ud83d\udcd0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  straight_ruler: {
-    keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ],
-    "char": "\ud83d\udccf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pushpin: {
-    keywords: [ "stationery", "mark", "here" ],
-    "char": "\ud83d\udccc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  round_pushpin: {
-    keywords: [ "stationery", "location", "map", "here" ],
-    "char": "\ud83d\udccd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  triangular_flag_on_post: {
-    keywords: [ "mark", "milestone", "place" ],
-    "char": "\ud83d\udea9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  white_flag: {
-    keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ],
-    "char": "\ud83c\udff3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  black_flag: {
-    keywords: [ "pirate" ],
-    "char": "\ud83c\udff4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  rainbow_flag: {
-    keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ],
-    "char": "\ud83c\udff3\ufe0f\u200d\ud83c\udf08",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  closed_lock_with_key: {
-    keywords: [ "security", "privacy" ],
-    "char": "\ud83d\udd10",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  lock: {
-    keywords: [ "security", "password", "padlock" ],
-    "char": "\ud83d\udd12",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  unlock: {
-    keywords: [ "privacy", "security" ],
-    "char": "\ud83d\udd13",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  lock_with_ink_pen: {
-    keywords: [ "security", "secret" ],
-    "char": "\ud83d\udd0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pen: {
-    keywords: [ "stationery", "writing", "write" ],
-    "char": "\ud83d\udd8a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  fountain_pen: {
-    keywords: [ "stationery", "writing", "write" ],
-    "char": "\ud83d\udd8b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  black_nib: {
-    keywords: [ "pen", "stationery", "writing", "write" ],
-    "char": "\u2712\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  memo: {
-    keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ],
-    "char": "\ud83d\udcdd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pencil2: {
-    keywords: [ "stationery", "write", "paper", "writing", "school", "study" ],
-    "char": "\u270f\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  crayon: {
-    keywords: [ "drawing", "creativity" ],
-    "char": "\ud83d\udd8d",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  paintbrush: {
-    keywords: [ "drawing", "creativity", "art" ],
-    "char": "\ud83d\udd8c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mag: {
-    keywords: [ "search", "zoom", "find", "detective" ],
-    "char": "\ud83d\udd0d",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mag_right: {
-    keywords: [ "search", "zoom", "find", "detective" ],
-    "char": "\ud83d\udd0e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  heart: {
-    keywords: [ "love", "like", "valentines" ],
-    "char": "\u2764\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  orange_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83e\udde1",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  yellow_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc9b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  green_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc9a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  blue_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc99",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  purple_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc9c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_heart: {
-    keywords: [ "evil" ],
-    "char": "\ud83d\udda4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  broken_heart: {
-    keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ],
-    "char": "\ud83d\udc94",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_heart_exclamation: {
-    keywords: [ "decoration", "love" ],
-    "char": "\u2763",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  two_hearts: {
-    keywords: [ "love", "like", "affection", "valentines", "heart" ],
-    "char": "\ud83d\udc95",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  revolving_hearts: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc9e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heartbeat: {
-    keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ],
-    "char": "\ud83d\udc93",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heartpulse: {
-    keywords: [ "like", "love", "affection", "valentines", "pink" ],
-    "char": "\ud83d\udc97",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sparkling_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc96",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cupid: {
-    keywords: [ "love", "like", "heart", "affection", "valentines" ],
-    "char": "\ud83d\udc98",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  gift_heart: {
-    keywords: [ "love", "valentines" ],
-    "char": "\ud83d\udc9d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heart_decoration: {
-    keywords: [ "purple-square", "love", "like" ],
-    "char": "\ud83d\udc9f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  peace_symbol: {
-    keywords: [ "hippie" ],
-    "char": "\u262e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  latin_cross: {
-    keywords: [ "christianity" ],
-    "char": "\u271d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  star_and_crescent: {
-    keywords: [ "islam" ],
-    "char": "\u262a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  om: {
-    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
-    "char": "\ud83d\udd49",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  wheel_of_dharma: {
-    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
-    "char": "\u2638",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  star_of_david: {
-    keywords: [ "judaism" ],
-    "char": "\u2721",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  six_pointed_star: {
-    keywords: [ "purple-square", "religion", "jewish", "hexagram" ],
-    "char": "\ud83d\udd2f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  menorah: {
-    keywords: [ "hanukkah", "candles", "jewish" ],
-    "char": "\ud83d\udd4e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  yin_yang: {
-    keywords: [ "balance" ],
-    "char": "\u262f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  orthodox_cross: {
-    keywords: [ "suppedaneum", "religion" ],
-    "char": "\u2626",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  place_of_worship: {
-    keywords: [ "religion", "church", "temple", "prayer" ],
-    "char": "\ud83d\uded0",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ophiuchus: {
-    keywords: [ "sign", "purple-square", "constellation", "astrology" ],
-    "char": "\u26ce",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  aries: {
-    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
-    "char": "\u2648",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  taurus: {
-    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
-    "char": "\u2649",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  gemini: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u264a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cancer: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u264b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  leo: {
-    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
-    "char": "\u264c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  virgo: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u264d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  libra: {
-    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
-    "char": "\u264e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  scorpius: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ],
-    "char": "\u264f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sagittarius: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u2650",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  capricorn: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u2651",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  aquarius: {
-    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
-    "char": "\u2652",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  pisces: {
-    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
-    "char": "\u2653",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  id: {
-    keywords: [ "purple-square", "words" ],
-    "char": "\ud83c\udd94",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  atom_symbol: {
-    keywords: [ "science", "physics", "chemistry" ],
-    "char": "\u269b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u7a7a: {
-    keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ],
-    "char": "\ud83c\ude33",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u5272: {
-    keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ],
-    "char": "\ud83c\ude39",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  radioactive: {
-    keywords: [ "nuclear", "danger" ],
-    "char": "\u2622",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  biohazard: {
-    keywords: [ "danger" ],
-    "char": "\u2623",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mobile_phone_off: {
-    keywords: [ "mute", "orange-square", "silence", "quiet" ],
-    "char": "\ud83d\udcf4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  vibration_mode: {
-    keywords: [ "orange-square", "phone" ],
-    "char": "\ud83d\udcf3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u6709: {
-    keywords: [ "orange-square", "chinese", "have", "kanji" ],
-    "char": "\ud83c\ude36",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u7121: {
-    keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ],
-    "char": "\ud83c\ude1a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u7533: {
-    keywords: [ "chinese", "japanese", "kanji", "orange-square" ],
-    "char": "\ud83c\ude38",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u55b6: {
-    keywords: [ "japanese", "opening hours", "orange-square" ],
-    "char": "\ud83c\ude3a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u6708: {
-    keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ],
-    "char": "\ud83c\ude37\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  eight_pointed_black_star: {
-    keywords: [ "orange-square", "shape", "polygon" ],
-    "char": "\u2734\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  vs: {
-    keywords: [ "words", "orange-square" ],
-    "char": "\ud83c\udd9a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  accept: {
-    keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ],
-    "char": "\ud83c\ude51",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_flower: {
-    keywords: [ "japanese", "spring" ],
-    "char": "\ud83d\udcae",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ideograph_advantage: {
-    keywords: [ "chinese", "kanji", "obtain", "get", "circle" ],
-    "char": "\ud83c\ude50",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  secret: {
-    keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ],
-    "char": "\u3299\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  congratulations: {
-    keywords: [ "chinese", "kanji", "japanese", "red-circle" ],
-    "char": "\u3297\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u5408: {
-    keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ],
-    "char": "\ud83c\ude34",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u6e80: {
-    keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ],
-    "char": "\ud83c\ude35",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u7981: {
-    keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ],
-    "char": "\ud83c\ude32",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  a: {
-    keywords: [ "red-square", "alphabet", "letter" ],
-    "char": "\ud83c\udd70\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  b: {
-    keywords: [ "red-square", "alphabet", "letter" ],
-    "char": "\ud83c\udd71\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ab: {
-    keywords: [ "red-square", "alphabet" ],
-    "char": "\ud83c\udd8e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cl: {
-    keywords: [ "alphabet", "words", "red-square" ],
-    "char": "\ud83c\udd91",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  o2: {
-    keywords: [ "alphabet", "red-square", "letter" ],
-    "char": "\ud83c\udd7e\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sos: {
-    keywords: [ "help", "red-square", "words", "emergency", "911" ],
-    "char": "\ud83c\udd98",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_entry: {
-    keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ],
-    "char": "\u26d4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  name_badge: {
-    keywords: [ "fire", "forbid" ],
-    "char": "\ud83d\udcdb",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_entry_sign: {
-    keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ],
-    "char": "\ud83d\udeab",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  x: {
-    keywords: [ "no", "delete", "remove", "cancel" ],
-    "char": "\u274c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  o: {
-    keywords: [ "circle", "round" ],
-    "char": "\u2b55",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  stop_sign: {
-    keywords: [ "stop" ],
-    "char": "\ud83d\uded1",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  anger: {
-    keywords: [ "angry", "mad" ],
-    "char": "\ud83d\udca2",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  hotsprings: {
-    keywords: [ "bath", "warm", "relax" ],
-    "char": "\u2668\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_pedestrians: {
-    keywords: [ "rules", "crossing", "walking", "circle" ],
-    "char": "\ud83d\udeb7",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  do_not_litter: {
-    keywords: [ "trash", "bin", "garbage", "circle" ],
-    "char": "\ud83d\udeaf",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_bicycles: {
-    keywords: [ "cyclist", "prohibited", "circle" ],
-    "char": "\ud83d\udeb3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  "non-potable_water": {
-    keywords: [ "drink", "faucet", "tap", "circle" ],
-    "char": "\ud83d\udeb1",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  underage: {
-    keywords: [ "18", "drink", "pub", "night", "minor", "circle" ],
-    "char": "\ud83d\udd1e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_mobile_phones: {
-    keywords: [ "iphone", "mute", "circle" ],
-    "char": "\ud83d\udcf5",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  exclamation: {
-    keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ],
-    "char": "\u2757",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  grey_exclamation: {
-    keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ],
-    "char": "\u2755",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  question: {
-    keywords: [ "doubt", "confused" ],
-    "char": "\u2753",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  grey_question: {
-    keywords: [ "doubts", "gray", "huh", "confused" ],
-    "char": "\u2754",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  bangbang: {
-    keywords: [ "exclamation", "surprise" ],
-    "char": "\u203c\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  interrobang: {
-    keywords: [ "wat", "punctuation", "surprise" ],
-    "char": "\u2049\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  100: {
-    keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ],
-    "char": "\ud83d\udcaf",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  low_brightness: {
-    keywords: [ "sun", "afternoon", "warm", "summer" ],
-    "char": "\ud83d\udd05",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  high_brightness: {
-    keywords: [ "sun", "light" ],
-    "char": "\ud83d\udd06",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  trident: {
-    keywords: [ "weapon", "spear" ],
-    "char": "\ud83d\udd31",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  fleur_de_lis: {
-    keywords: [ "decorative", "scout" ],
-    "char": "\u269c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  part_alternation_mark: {
-    keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ],
-    "char": "\u303d\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  warning: {
-    keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ],
-    "char": "\u26a0\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  children_crossing: {
-    keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ],
-    "char": "\ud83d\udeb8",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  beginner: {
-    keywords: [ "badge", "shield" ],
-    "char": "\ud83d\udd30",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  recycle: {
-    keywords: [ "arrow", "environment", "garbage", "trash" ],
-    "char": "\u267b\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u6307: {
-    keywords: [ "chinese", "point", "green-square", "kanji" ],
-    "char": "\ud83c\ude2f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  chart: {
-    keywords: [ "green-square", "graph", "presentation", "stats" ],
-    "char": "\ud83d\udcb9",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sparkle: {
-    keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ],
-    "char": "\u2747\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  eight_spoked_asterisk: {
-    keywords: [ "star", "sparkle", "green-square" ],
-    "char": "\u2733\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  negative_squared_cross_mark: {
-    keywords: [ "x", "green-square", "no", "deny" ],
-    "char": "\u274e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_check_mark: {
-    keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ],
-    "char": "\u2705",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  diamond_shape_with_a_dot_inside: {
-    keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ],
-    "char": "\ud83d\udca0",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cyclone: {
-    keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ],
-    "char": "\ud83c\udf00",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  loop: {
-    keywords: [ "tape", "cassette" ],
-    "char": "\u27bf",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  globe_with_meridians: {
-    keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ],
-    "char": "\ud83c\udf10",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  m: {
-    keywords: [ "alphabet", "blue-circle", "letter" ],
-    "char": "\u24c2\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  atm: {
-    keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ],
-    "char": "\ud83c\udfe7",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sa: {
-    keywords: [ "japanese", "blue-square", "katakana" ],
-    "char": "\ud83c\ude02\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  passport_control: {
-    keywords: [ "custom", "blue-square" ],
-    "char": "\ud83d\udec2",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  customs: {
-    keywords: [ "passport", "border", "blue-square" ],
-    "char": "\ud83d\udec3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  baggage_claim: {
-    keywords: [ "blue-square", "airport", "transport" ],
-    "char": "\ud83d\udec4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  left_luggage: {
-    keywords: [ "blue-square", "travel" ],
-    "char": "\ud83d\udec5",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  wheelchair: {
-    keywords: [ "blue-square", "disabled", "a11y", "accessibility" ],
-    "char": "\u267f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_smoking: {
-    keywords: [ "cigarette", "blue-square", "smell", "smoke" ],
-    "char": "\ud83d\udead",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  wc: {
-    keywords: [ "toilet", "restroom", "blue-square" ],
-    "char": "\ud83d\udebe",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  parking: {
-    keywords: [ "cars", "blue-square", "alphabet", "letter" ],
-    "char": "\ud83c\udd7f\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  potable_water: {
-    keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ],
-    "char": "\ud83d\udeb0",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mens: {
-    keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ],
-    "char": "\ud83d\udeb9",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  womens: {
-    keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ],
-    "char": "\ud83d\udeba",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  baby_symbol: {
-    keywords: [ "orange-square", "child" ],
-    "char": "\ud83d\udebc",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  restroom: {
-    keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ],
-    "char": "\ud83d\udebb",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  put_litter_in_its_place: {
-    keywords: [ "blue-square", "sign", "human", "info" ],
-    "char": "\ud83d\udeae",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cinema: {
-    keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ],
-    "char": "\ud83c\udfa6",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  signal_strength: {
-    keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ],
-    "char": "\ud83d\udcf6",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  koko: {
-    keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ],
-    "char": "\ud83c\ude01",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ng: {
-    keywords: [ "blue-square", "words", "shape", "icon" ],
-    "char": "\ud83c\udd96",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ok: {
-    keywords: [ "good", "agree", "yes", "blue-square" ],
-    "char": "\ud83c\udd97",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  up: {
-    keywords: [ "blue-square", "above", "high" ],
-    "char": "\ud83c\udd99",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cool: {
-    keywords: [ "words", "blue-square" ],
-    "char": "\ud83c\udd92",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  "new": {
-    keywords: [ "blue-square", "words", "start" ],
-    "char": "\ud83c\udd95",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  free: {
-    keywords: [ "blue-square", "words" ],
-    "char": "\ud83c\udd93",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  zero: {
-    keywords: [ "0", "numbers", "blue-square", "null" ],
-    "char": "0\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  one: {
-    keywords: [ "blue-square", "numbers", "1" ],
-    "char": "1\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  two: {
-    keywords: [ "numbers", "2", "prime", "blue-square" ],
-    "char": "2\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  three: {
-    keywords: [ "3", "numbers", "prime", "blue-square" ],
-    "char": "3\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  four: {
-    keywords: [ "4", "numbers", "blue-square" ],
-    "char": "4\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  five: {
-    keywords: [ "5", "numbers", "blue-square", "prime" ],
-    "char": "5\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  six: {
-    keywords: [ "6", "numbers", "blue-square" ],
-    "char": "6\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  seven: {
-    keywords: [ "7", "numbers", "blue-square", "prime" ],
-    "char": "7\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  eight: {
-    keywords: [ "8", "blue-square", "numbers" ],
-    "char": "8\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  nine: {
-    keywords: [ "blue-square", "numbers", "9" ],
-    "char": "9\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  keycap_ten: {
-    keywords: [ "numbers", "10", "blue-square" ],
-    "char": "\ud83d\udd1f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  asterisk: {
-    keywords: [ "star", "keycap" ],
-    "char": "*\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  1234: {
-    keywords: [ "numbers", "blue-square" ],
-    "char": "\ud83d\udd22",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  eject_button: {
-    keywords: [ "blue-square" ],
-    "char": "\u23cf\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_forward: {
-    keywords: [ "blue-square", "right", "direction", "play" ],
-    "char": "\u25b6\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  pause_button: {
-    keywords: [ "pause", "blue-square" ],
-    "char": "\u23f8",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  next_track_button: {
-    keywords: [ "forward", "next", "blue-square" ],
-    "char": "\u23ed",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  stop_button: {
-    keywords: [ "blue-square" ],
-    "char": "\u23f9",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  record_button: {
-    keywords: [ "blue-square" ],
-    "char": "\u23fa",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  play_or_pause_button: {
-    keywords: [ "blue-square", "play", "pause" ],
-    "char": "\u23ef",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  previous_track_button: {
-    keywords: [ "backward" ],
-    "char": "\u23ee",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  fast_forward: {
-    keywords: [ "blue-square", "play", "speed", "continue" ],
-    "char": "\u23e9",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  rewind: {
-    keywords: [ "play", "blue-square" ],
-    "char": "\u23ea",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  twisted_rightwards_arrows: {
-    keywords: [ "blue-square", "shuffle", "music", "random" ],
-    "char": "\ud83d\udd00",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  repeat: {
-    keywords: [ "loop", "record" ],
-    "char": "\ud83d\udd01",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  repeat_one: {
-    keywords: [ "blue-square", "loop" ],
-    "char": "\ud83d\udd02",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_backward: {
-    keywords: [ "blue-square", "left", "direction" ],
-    "char": "\u25c0\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_up_small: {
-    keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ],
-    "char": "\ud83d\udd3c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_down_small: {
-    keywords: [ "blue-square", "direction", "bottom" ],
-    "char": "\ud83d\udd3d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_double_up: {
-    keywords: [ "blue-square", "direction", "top" ],
-    "char": "\u23eb",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_double_down: {
-    keywords: [ "blue-square", "direction", "bottom" ],
-    "char": "\u23ec",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_right: {
-    keywords: [ "blue-square", "next" ],
-    "char": "\u27a1\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_left: {
-    keywords: [ "blue-square", "previous", "back" ],
-    "char": "\u2b05\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_up: {
-    keywords: [ "blue-square", "continue", "top", "direction" ],
-    "char": "\u2b06\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_down: {
-    keywords: [ "blue-square", "direction", "bottom" ],
-    "char": "\u2b07\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_upper_right: {
-    keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ],
-    "char": "\u2197\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_lower_right: {
-    keywords: [ "blue-square", "direction", "diagonal", "southeast" ],
-    "char": "\u2198\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_lower_left: {
-    keywords: [ "blue-square", "direction", "diagonal", "southwest" ],
-    "char": "\u2199\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_upper_left: {
-    keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ],
-    "char": "\u2196\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_up_down: {
-    keywords: [ "blue-square", "direction", "way", "vertical" ],
-    "char": "\u2195\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  left_right_arrow: {
-    keywords: [ "shape", "direction", "horizontal", "sideways" ],
-    "char": "\u2194\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrows_counterclockwise: {
-    keywords: [ "blue-square", "sync", "cycle" ],
-    "char": "\ud83d\udd04",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_right_hook: {
-    keywords: [ "blue-square", "return", "rotate", "direction" ],
-    "char": "\u21aa\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  leftwards_arrow_with_hook: {
-    keywords: [ "back", "return", "blue-square", "undo", "enter" ],
-    "char": "\u21a9\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_heading_up: {
-    keywords: [ "blue-square", "direction", "top" ],
-    "char": "\u2934\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_heading_down: {
-    keywords: [ "blue-square", "direction", "bottom" ],
-    "char": "\u2935\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  hash: {
-    keywords: [ "symbol", "blue-square", "twitter" ],
-    "char": "#\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  information_source: {
-    keywords: [ "blue-square", "alphabet", "letter" ],
-    "char": "\u2139\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  abc: {
-    keywords: [ "blue-square", "alphabet" ],
-    "char": "\ud83d\udd24",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  abcd: {
-    keywords: [ "blue-square", "alphabet" ],
-    "char": "\ud83d\udd21",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  capital_abcd: {
-    keywords: [ "alphabet", "words", "blue-square" ],
-    "char": "\ud83d\udd20",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  symbols: {
-    keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ],
-    "char": "\ud83d\udd23",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  musical_note: {
-    keywords: [ "score", "tone", "sound" ],
-    "char": "\ud83c\udfb5",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  notes: {
-    keywords: [ "music", "score" ],
-    "char": "\ud83c\udfb6",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  wavy_dash: {
-    keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ],
-    "char": "\u3030\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  curly_loop: {
-    keywords: [ "scribble", "draw", "shape", "squiggle" ],
-    "char": "\u27b0",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_check_mark: {
-    keywords: [ "ok", "nike", "answer", "yes", "tick" ],
-    "char": "\u2714\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrows_clockwise: {
-    keywords: [ "sync", "cycle", "round", "repeat" ],
-    "char": "\ud83d\udd03",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_plus_sign: {
-    keywords: [ "math", "calculation", "addition", "more", "increase" ],
-    "char": "\u2795",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_minus_sign: {
-    keywords: [ "math", "calculation", "subtract", "less" ],
-    "char": "\u2796",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_division_sign: {
-    keywords: [ "divide", "math", "calculation" ],
-    "char": "\u2797",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_multiplication_x: {
-    keywords: [ "math", "calculation" ],
-    "char": "\u2716\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_dollar_sign: {
-    keywords: [ "money", "sales", "payment", "currency", "buck" ],
-    "char": "\ud83d\udcb2",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  currency_exchange: {
-    keywords: [ "money", "sales", "dollar", "travel" ],
-    "char": "\ud83d\udcb1",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  copyright: {
-    keywords: [ "ip", "license", "circle", "law", "legal" ],
-    "char": "\xa9\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  registered: {
-    keywords: [ "alphabet", "circle" ],
-    "char": "\xae\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  tm: {
-    keywords: [ "trademark", "brand", "law", "legal" ],
-    "char": "\u2122\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  end: {
-    keywords: [ "words", "arrow" ],
-    "char": "\ud83d\udd1a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  back: {
-    keywords: [ "arrow", "words", "return" ],
-    "char": "\ud83d\udd19",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  on: {
-    keywords: [ "arrow", "words" ],
-    "char": "\ud83d\udd1b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  top: {
-    keywords: [ "words", "blue-square" ],
-    "char": "\ud83d\udd1d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  soon: {
-    keywords: [ "arrow", "words" ],
-    "char": "\ud83d\udd1c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ballot_box_with_check: {
-    keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ],
-    "char": "\u2611\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  radio_button: {
-    keywords: [ "input", "old", "music", "circle" ],
-    "char": "\ud83d\udd18",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_circle: {
-    keywords: [ "shape", "round" ],
-    "char": "\u26aa",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_circle: {
-    keywords: [ "shape", "button", "round" ],
-    "char": "\u26ab",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  red_circle: {
-    keywords: [ "shape", "error", "danger" ],
-    "char": "\ud83d\udd34",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  large_blue_circle: {
-    keywords: [ "shape", "icon", "button" ],
-    "char": "\ud83d\udd35",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  small_orange_diamond: {
-    keywords: [ "shape", "jewel", "gem" ],
-    "char": "\ud83d\udd38",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  small_blue_diamond: {
-    keywords: [ "shape", "jewel", "gem" ],
-    "char": "\ud83d\udd39",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  large_orange_diamond: {
-    keywords: [ "shape", "jewel", "gem" ],
-    "char": "\ud83d\udd36",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  large_blue_diamond: {
-    keywords: [ "shape", "jewel", "gem" ],
-    "char": "\ud83d\udd37",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  small_red_triangle: {
-    keywords: [ "shape", "direction", "up", "top" ],
-    "char": "\ud83d\udd3a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_small_square: {
-    keywords: [ "shape", "icon" ],
-    "char": "\u25aa\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_small_square: {
-    keywords: [ "shape", "icon" ],
-    "char": "\u25ab\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_large_square: {
-    keywords: [ "shape", "icon", "button" ],
-    "char": "\u2b1b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_large_square: {
-    keywords: [ "shape", "icon", "stone", "button" ],
-    "char": "\u2b1c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  small_red_triangle_down: {
-    keywords: [ "shape", "direction", "bottom" ],
-    "char": "\ud83d\udd3b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_medium_square: {
-    keywords: [ "shape", "button", "icon" ],
-    "char": "\u25fc\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_medium_square: {
-    keywords: [ "shape", "stone", "icon" ],
-    "char": "\u25fb\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_medium_small_square: {
-    keywords: [ "icon", "shape", "button" ],
-    "char": "\u25fe",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_medium_small_square: {
-    keywords: [ "shape", "stone", "icon", "button" ],
-    "char": "\u25fd",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_square_button: {
-    keywords: [ "shape", "input", "frame" ],
-    "char": "\ud83d\udd32",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_square_button: {
-    keywords: [ "shape", "input" ],
-    "char": "\ud83d\udd33",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  speaker: {
-    keywords: [ "sound", "volume", "silence", "broadcast" ],
-    "char": "\ud83d\udd08",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sound: {
-    keywords: [ "volume", "speaker", "broadcast" ],
-    "char": "\ud83d\udd09",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  loud_sound: {
-    keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ],
-    "char": "\ud83d\udd0a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mute: {
-    keywords: [ "sound", "volume", "silence", "quiet" ],
-    "char": "\ud83d\udd07",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mega: {
-    keywords: [ "sound", "speaker", "volume" ],
-    "char": "\ud83d\udce3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  loudspeaker: {
-    keywords: [ "volume", "sound" ],
-    "char": "\ud83d\udce2",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  bell: {
-    keywords: [ "sound", "notification", "christmas", "xmas", "chime" ],
-    "char": "\ud83d\udd14",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_bell: {
-    keywords: [ "sound", "volume", "mute", "quiet", "silent" ],
-    "char": "\ud83d\udd15",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_joker: {
-    keywords: [ "poker", "cards", "game", "play", "magic" ],
-    "char": "\ud83c\udccf",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mahjong: {
-    keywords: [ "game", "play", "chinese", "kanji" ],
-    "char": "\ud83c\udc04",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  spades: {
-    keywords: [ "poker", "cards", "suits", "magic" ],
-    "char": "\u2660\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clubs: {
-    keywords: [ "poker", "cards", "magic", "suits" ],
-    "char": "\u2663\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  hearts: {
-    keywords: [ "poker", "cards", "magic", "suits" ],
-    "char": "\u2665\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  diamonds: {
-    keywords: [ "poker", "cards", "magic", "suits" ],
-    "char": "\u2666\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  flower_playing_cards: {
-    keywords: [ "game", "sunset", "red" ],
-    "char": "\ud83c\udfb4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  thought_balloon: {
-    keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ],
-    "char": "\ud83d\udcad",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  right_anger_bubble: {
-    keywords: [ "caption", "speech", "thinking", "mad" ],
-    "char": "\ud83d\uddef",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  speech_balloon: {
-    keywords: [ "bubble", "words", "message", "talk", "chatting" ],
-    "char": "\ud83d\udcac",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  left_speech_bubble: {
-    keywords: [ "words", "message", "talk", "chatting" ],
-    "char": "\ud83d\udde8",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock1: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd50",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock2: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd51",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock3: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd52",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock4: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd53",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock5: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd54",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock6: {
-    keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ],
-    "char": "\ud83d\udd55",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock7: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd56",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock8: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd57",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock9: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd58",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock10: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd59",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock11: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock12: {
-    keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock130: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock230: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock330: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock430: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock530: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd60",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock630: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd61",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock730: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd62",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock830: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd63",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock930: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd64",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock1030: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd65",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock1130: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd66",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock1230: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd67",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  afghanistan: {
-    keywords: [ "af", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  aland_islands: {
-    keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddfd",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  albania: {
-    keywords: [ "al", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  algeria: {
-    keywords: [ "dz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  american_samoa: {
-    keywords: [ "american", "ws", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  andorra: {
-    keywords: [ "ad", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  angola: {
-    keywords: [ "ao", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  anguilla: {
-    keywords: [ "ai", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  antarctica: {
-    keywords: [ "aq", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  antigua_barbuda: {
-    keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  argentina: {
-    keywords: [ "ar", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  armenia: {
-    keywords: [ "am", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  aruba: {
-    keywords: [ "aw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  australia: {
-    keywords: [ "au", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  austria: {
-    keywords: [ "at", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  azerbaijan: {
-    keywords: [ "az", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bahamas: {
-    keywords: [ "bs", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bahrain: {
-    keywords: [ "bh", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bangladesh: {
-    keywords: [ "bd", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  barbados: {
-    keywords: [ "bb", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\udde7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  belarus: {
-    keywords: [ "by", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  belgium: {
-    keywords: [ "be", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  belize: {
-    keywords: [ "bz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  benin: {
-    keywords: [ "bj", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddef",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bermuda: {
-    keywords: [ "bm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bhutan: {
-    keywords: [ "bt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bolivia: {
-    keywords: [ "bo", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  caribbean_netherlands: {
-    keywords: [ "bonaire", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bosnia_herzegovina: {
-    keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  botswana: {
-    keywords: [ "bw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  brazil: {
-    keywords: [ "br", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  british_indian_ocean_territory: {
-    keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  british_virgin_islands: {
-    keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  brunei: {
-    keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bulgaria: {
-    keywords: [ "bg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  burkina_faso: {
-    keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  burundi: {
-    keywords: [ "bi", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cape_verde: {
-    keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cambodia: {
-    keywords: [ "kh", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cameroon: {
-    keywords: [ "cm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  canada: {
-    keywords: [ "ca", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  canary_islands: {
-    keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cayman_islands: {
-    keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  central_african_republic: {
-    keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  chad: {
-    keywords: [ "td", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  chile: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cn: {
-    keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  christmas_island: {
-    keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfd",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cocos_islands: {
-    keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  colombia: {
-    keywords: [ "co", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  comoros: {
-    keywords: [ "km", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  congo_brazzaville: {
-    keywords: [ "congo", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  congo_kinshasa: {
-    keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cook_islands: {
-    keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  costa_rica: {
-    keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  croatia: {
-    keywords: [ "hr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cuba: {
-    keywords: [ "cu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  curacao: {
-    keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cyprus: {
-    keywords: [ "cy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  czech_republic: {
-    keywords: [ "cz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  denmark: {
-    keywords: [ "dk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  djibouti: {
-    keywords: [ "dj", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddef",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  dominica: {
-    keywords: [ "dm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  dominican_republic: {
-    keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ecuador: {
-    keywords: [ "ec", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  egypt: {
-    keywords: [ "eg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  el_salvador: {
-    keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  equatorial_guinea: {
-    keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  eritrea: {
-    keywords: [ "er", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  estonia: {
-    keywords: [ "ee", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ethiopia: {
-    keywords: [ "et", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  eu: {
-    keywords: [ "european", "union", "flag", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  falkland_islands: {
-    keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  faroe_islands: {
-    keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  fiji: {
-    keywords: [ "fj", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddef",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  finland: {
-    keywords: [ "fi", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  fr: {
-    keywords: [ "banner", "flag", "nation", "france", "french", "country" ],
-    "char": "\ud83c\uddeb\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  french_guiana: {
-    keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  french_polynesia: {
-    keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  french_southern_territories: {
-    keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  gabon: {
-    keywords: [ "ga", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  gambia: {
-    keywords: [ "gm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  georgia: {
-    keywords: [ "ge", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  de: {
-    keywords: [ "german", "nation", "flag", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ghana: {
-    keywords: [ "gh", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  gibraltar: {
-    keywords: [ "gi", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  greece: {
-    keywords: [ "gr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  greenland: {
-    keywords: [ "gl", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  grenada: {
-    keywords: [ "gd", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guadeloupe: {
-    keywords: [ "gp", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guam: {
-    keywords: [ "gu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guatemala: {
-    keywords: [ "gt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guernsey: {
-    keywords: [ "gg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guinea: {
-    keywords: [ "gn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guinea_bissau: {
-    keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guyana: {
-    keywords: [ "gy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  haiti: {
-    keywords: [ "ht", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  honduras: {
-    keywords: [ "hn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  hong_kong: {
-    keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  hungary: {
-    keywords: [ "hu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  iceland: {
-    keywords: [ "is", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  india: {
-    keywords: [ "in", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  indonesia: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  iran: {
-    keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  iraq: {
-    keywords: [ "iq", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ireland: {
-    keywords: [ "ie", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  isle_of_man: {
-    keywords: [ "isle", "man", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  israel: {
-    keywords: [ "il", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  it: {
-    keywords: [ "italy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cote_divoire: {
-    keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  jamaica: {
-    keywords: [ "jm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddef\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  jp: {
-    keywords: [ "japanese", "nation", "flag", "country", "banner" ],
-    "char": "\ud83c\uddef\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  jersey: {
-    keywords: [ "je", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddef\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  jordan: {
-    keywords: [ "jo", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddef\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kazakhstan: {
-    keywords: [ "kz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kenya: {
-    keywords: [ "ke", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kiribati: {
-    keywords: [ "ki", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kosovo: {
-    keywords: [ "xk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfd\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kuwait: {
-    keywords: [ "kw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kyrgyzstan: {
-    keywords: [ "kg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  laos: {
-    keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  latvia: {
-    keywords: [ "lv", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  lebanon: {
-    keywords: [ "lb", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\udde7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  lesotho: {
-    keywords: [ "ls", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  liberia: {
-    keywords: [ "lr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  libya: {
-    keywords: [ "ly", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  liechtenstein: {
-    keywords: [ "li", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  lithuania: {
-    keywords: [ "lt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  luxembourg: {
-    keywords: [ "lu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  macau: {
-    keywords: [ "macao", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  macedonia: {
-    keywords: [ "macedonia,", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  madagascar: {
-    keywords: [ "mg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  malawi: {
-    keywords: [ "mw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  malaysia: {
-    keywords: [ "my", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  maldives: {
-    keywords: [ "mv", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mali: {
-    keywords: [ "ml", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  malta: {
-    keywords: [ "mt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  marshall_islands: {
-    keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  martinique: {
-    keywords: [ "mq", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mauritania: {
-    keywords: [ "mr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mauritius: {
-    keywords: [ "mu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mayotte: {
-    keywords: [ "yt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfe\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mexico: {
-    keywords: [ "mx", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfd",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  micronesia: {
-    keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  moldova: {
-    keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  monaco: {
-    keywords: [ "mc", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mongolia: {
-    keywords: [ "mn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  montenegro: {
-    keywords: [ "me", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  montserrat: {
-    keywords: [ "ms", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  morocco: {
-    keywords: [ "ma", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mozambique: {
-    keywords: [ "mz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  myanmar: {
-    keywords: [ "mm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  namibia: {
-    keywords: [ "na", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  nauru: {
-    keywords: [ "nr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  nepal: {
-    keywords: [ "np", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  netherlands: {
-    keywords: [ "nl", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  new_caledonia: {
-    keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  new_zealand: {
-    keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  nicaragua: {
-    keywords: [ "ni", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  niger: {
-    keywords: [ "ne", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  nigeria: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  niue: {
-    keywords: [ "nu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  norfolk_island: {
-    keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  northern_mariana_islands: {
-    keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  north_korea: {
-    keywords: [ "north", "korea", "nation", "flag", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  norway: {
-    keywords: [ "no", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  oman: {
-    keywords: [ "om_symbol", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf4\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  pakistan: {
-    keywords: [ "pk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  palau: {
-    keywords: [ "pw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  palestinian_territories: {
-    keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  panama: {
-    keywords: [ "pa", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  papua_new_guinea: {
-    keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  paraguay: {
-    keywords: [ "py", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  peru: {
-    keywords: [ "pe", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  philippines: {
-    keywords: [ "ph", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  pitcairn_islands: {
-    keywords: [ "pitcairn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  poland: {
-    keywords: [ "pl", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  portugal: {
-    keywords: [ "pt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  puerto_rico: {
-    keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  qatar: {
-    keywords: [ "qa", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf6\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  reunion: {
-    keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  romania: {
-    keywords: [ "ro", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ru: {
-    keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  rwanda: {
-    keywords: [ "rw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_barthelemy: {
-    keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_helena: {
-    keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_kitts_nevis: {
-    keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_lucia: {
-    keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_pierre_miquelon: {
-    keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_vincent_grenadines: {
-    keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  samoa: {
-    keywords: [ "ws", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfc\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  san_marino: {
-    keywords: [ "san", "marino", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sao_tome_principe: {
-    keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  saudi_arabia: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  senegal: {
-    keywords: [ "sn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  serbia: {
-    keywords: [ "rs", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  seychelles: {
-    keywords: [ "sc", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sierra_leone: {
-    keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  singapore: {
-    keywords: [ "sg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sint_maarten: {
-    keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddfd",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  slovakia: {
-    keywords: [ "sk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  slovenia: {
-    keywords: [ "si", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  solomon_islands: {
-    keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udde7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  somalia: {
-    keywords: [ "so", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  south_africa: {
-    keywords: [ "south", "africa", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddff\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  south_georgia_south_sandwich_islands: {
-    keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kr: {
-    keywords: [ "south", "korea", "nation", "flag", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  south_sudan: {
-    keywords: [ "south", "sd", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  es: {
-    keywords: [ "spain", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sri_lanka: {
-    keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sudan: {
-    keywords: [ "sd", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  suriname: {
-    keywords: [ "sr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  swaziland: {
-    keywords: [ "sz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sweden: {
-    keywords: [ "se", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  switzerland: {
-    keywords: [ "ch", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  syria: {
-    keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  taiwan: {
-    keywords: [ "tw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tajikistan: {
-    keywords: [ "tj", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddef",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tanzania: {
-    keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  thailand: {
-    keywords: [ "th", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  timor_leste: {
-    keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  togo: {
-    keywords: [ "tg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tokelau: {
-    keywords: [ "tk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tonga: {
-    keywords: [ "to", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  trinidad_tobago: {
-    keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tunisia: {
-    keywords: [ "tn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tr: {
-    keywords: [ "turkey", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  turkmenistan: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  turks_caicos_islands: {
-    keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tuvalu: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  uganda: {
-    keywords: [ "ug", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ukraine: {
-    keywords: [ "ua", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  united_arab_emirates: {
-    keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  uk: {
-    keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ],
-    "char": "\ud83c\uddec\ud83c\udde7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  england: {
-    keywords: [ "flag", "english" ],
-    "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  scotland: {
-    keywords: [ "flag", "scottish" ],
-    "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  wales: {
-    keywords: [ "flag", "welsh" ],
-    "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  us: {
-    keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  us_virgin_islands: {
-    keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  uruguay: {
-    keywords: [ "uy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  uzbekistan: {
-    keywords: [ "uz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  vanuatu: {
-    keywords: [ "vu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  vatican_city: {
-    keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  venezuela: {
-    keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  vietnam: {
-    keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  wallis_futuna: {
-    keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfc\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  western_sahara: {
-    keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  yemen: {
-    keywords: [ "ye", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfe\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  zambia: {
-    keywords: [ "zm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddff\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  zimbabwe: {
-    keywords: [ "zw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddff\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  }
-});
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js
deleted file mode 100644 (file)
index 5e59213..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-// NOTE: Source: npm package: emojilib, file:emojis.json
-window.tinymce.Resource.add("tinymce.plugins.emoticons",{grinning:{keywords:["face","smile","happy","joy",":D","grin"],"char":"\ud83d\ude00",fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],"char":"\ud83d\ude2c",fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],"char":"\ud83d\ude01",fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],"char":"\ud83d\ude02",fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],"char":"\ud83e\udd23",fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],"char":"\ud83d\ude03",fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],"char":"\ud83d\ude04",fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],"char":"\ud83d\ude05",fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"char":"\ud83d\ude06",fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],"char":"\ud83d\ude07",fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],"char":"\ud83d\ude09",fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],"char":"\ud83d\ude0a",fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],"char":"\ud83d\ude42",fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],"char":"\ud83d\ude43",fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],"char":"\u263a\ufe0f",fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"char":"\ud83d\ude0b",fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],"char":"\ud83d\ude0c",fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],"char":"\ud83d\ude0d",fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude18",fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],"char":"\ud83d\ude17",fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude19",fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude1a",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],"char":"\ud83d\ude1c",fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],"char":"\ud83e\udd2a",fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],"char":"\ud83e\udd28",fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],"char":"\ud83e\uddd0",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1d",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1b",fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],"char":"\ud83e\udd11",fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],"char":"\ud83e\udd13",fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],"char":"\ud83d\ude0e",fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],"char":"\ud83e\udd29",fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],"char":"\ud83e\udd21",fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],"char":"\ud83e\udd20",fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],"char":"\ud83e\udd17",fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],"char":"\ud83d\ude0f",fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],"char":"\ud83d\ude36",fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],"char":"\ud83d\ude10",fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],"char":"\ud83d\ude11",fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],"char":"\ud83d\ude12",fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],"char":"\ud83d\ude44",fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],"char":"\ud83e\udd14",fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],"char":"\ud83e\udd25",fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],"char":"\ud83e\udd2d",fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],"char":"\ud83e\udd2b",fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],"char":"\ud83e\udd2c",fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],"char":"\ud83e\udd2f",fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],"char":"\ud83d\ude33",fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],"char":"\ud83d\ude1e",fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],"char":"\ud83d\ude1f",fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],"char":"\ud83d\ude20",fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],"char":"\ud83d\ude21",fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],"char":"\ud83d\ude14",fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],"char":"\ud83d\ude15",fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],"char":"\ud83d\ude41",fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],"char":"\u2639",fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],"char":"\ud83d\ude23",fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],"char":"\ud83d\ude16",fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],"char":"\ud83d\ude2b",fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],"char":"\ud83d\ude29",fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],"char":"\ud83d\ude24",fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],"char":"\ud83d\ude2e",fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],"char":"\ud83d\ude31",fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],"char":"\ud83d\ude28",fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],"char":"\ud83d\ude30",fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],"char":"\ud83d\ude2f",fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],"char":"\ud83d\ude26",fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],"char":"\ud83d\ude27",fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],"char":"\ud83d\ude22",fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],"char":"\ud83d\ude25",fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],"char":"\ud83e\udd24",fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],"char":"\ud83d\ude2a",fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],"char":"\ud83d\ude13",fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],"char":"\ud83d\ude2d",fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],"char":"\ud83d\ude35",fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],"char":"\ud83d\ude32",fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],"char":"\ud83e\udd10",fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],"char":"\ud83e\udd22",fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],"char":"\ud83e\udd27",fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],"char":"\ud83e\udd2e",fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],"char":"\ud83d\ude37",fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],"char":"\ud83e\udd12",fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],"char":"\ud83e\udd15",fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],"char":"\ud83d\ude34",fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],"char":"\ud83d\udca4",fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],"char":"\ud83d\udca9",fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],"char":"\ud83d\ude08",fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],"char":"\ud83d\udc7f",fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],"char":"\ud83d\udc79",fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],"char":"\ud83d\udc7a",fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],"char":"\ud83d\udc80",fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],"char":"\ud83d\udc7b",fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],"char":"\ud83d\udc7d",fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],"char":"\ud83e\udd16",fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],"char":"\ud83d\ude3a",fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],"char":"\ud83d\ude38",fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],"char":"\ud83d\ude39",fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],"char":"\ud83d\ude3b",fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],"char":"\ud83d\ude3c",fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],"char":"\ud83d\ude3d",fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],"char":"\ud83d\ude40",fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],"char":"\ud83d\ude3f",fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],"char":"\ud83d\ude3e",fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],"char":"\ud83e\udd32",fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],"char":"\ud83d\ude4c",fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],"char":"\ud83d\udc4f",fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"char":"\ud83d\udc4b",fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],"char":"\ud83e\udd19",fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"char":"\ud83d\udc4d",fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],"char":"\ud83d\udc4e",fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],"char":"\ud83d\udc4a",fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],"char":"\u270a",fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],"char":"\ud83e\udd1b",fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],"char":"\ud83e\udd1c",fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],"char":"\u270c",fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],"char":"\ud83d\udc4c",fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],"char":"\u270b",fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],"char":"\ud83e\udd1a",fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],"char":"\ud83d\udc50",fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],"char":"\ud83d\udcaa",fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],"char":"\ud83d\ude4f",fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],"char":"\ud83e\udd1d",fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],"char":"\u261d",fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],"char":"\ud83d\udc46",fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],"char":"\ud83d\udc47",fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],"char":"\ud83d\udc48",fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],"char":"\ud83d\udc49",fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],"char":"\ud83d\udd95",fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],"char":"\ud83d\udd90",fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],"char":"\ud83e\udd1f",fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],"char":"\ud83e\udd18",fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],"char":"\ud83e\udd1e",fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],"char":"\ud83d\udd96",fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],"char":"\u270d",fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],"char":"\ud83e\udd33",fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],"char":"\ud83d\udc85",fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],"char":"\ud83d\udc44",fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],"char":"\ud83d\udc45",fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],"char":"\ud83d\udc42",fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],"char":"\ud83d\udc43",fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],"char":"\ud83d\udc41",fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],"char":"\ud83d\udc40",fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],"char":"\ud83e\udde0",fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],"char":"\ud83d\udc64",fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],"char":"\ud83d\udc65",fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],"char":"\ud83d\udde3",fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],"char":"\ud83d\udc76",fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],"char":"\ud83e\uddd2",fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],"char":"\ud83d\udc66",fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],"char":"\ud83d\udc67",fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],"char":"\ud83e\uddd1",fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],"char":"\ud83d\udc68",fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],"char":"\ud83d\udc69",fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],"char":"\ud83d\udc71\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],"char":"\ud83d\udc71",fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],"char":"\ud83e\uddd4",fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],"char":"\ud83e\uddd3",fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],"char":"\ud83d\udc74",fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],"char":"\ud83d\udc75",fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],"char":"\ud83d\udc72",fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],"char":"\ud83e\uddd5",fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],"char":"\ud83d\udc73\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],"char":"\ud83d\udc73",fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],"char":"\ud83d\udc6e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],"char":"\ud83d\udc6e",fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],"char":"\ud83d\udc77\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],"char":"\ud83d\udc77",fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],"char":"\ud83d\udc82\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],"char":"\ud83d\udc82",fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],"char":"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],"char":"\ud83d\udd75",fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],"char":"\ud83d\udc69\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],"char":"\ud83d\udc68\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"char":"\ud83d\udc69\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],"char":"\ud83d\udc68\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],"char":"\ud83d\udc69\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],"char":"\ud83d\udc68\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],"char":"\ud83d\udc69\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],"char":"\ud83d\udc68\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],"char":"\ud83d\udc69\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],"char":"\ud83d\udc68\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],"char":"\ud83e\udd36",fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],"char":"\ud83c\udf85",fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],"char":"\ud83e\uddd9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],"char":"\ud83e\uddd9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],"char":"\ud83e\udddd\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],"char":"\ud83e\udddd\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],"char":"\ud83e\udddb\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],"char":"\ud83e\udddb\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],"char":"\ud83e\uddde\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],"char":"\ud83e\uddde\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],"char":"\ud83e\udddc\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],"char":"\ud83e\udddc\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],"char":"\ud83e\uddda\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],"char":"\ud83e\uddda\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],"char":"\ud83d\udc7c",fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],"char":"\ud83e\udd30",fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],"char":"\ud83e\udd31",fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],"char":"\ud83d\udc78",fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],"char":"\ud83e\udd34",fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],"char":"\ud83d\udc70",fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],"char":"\ud83e\udd35",fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],"char":"\ud83c\udfc3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],"char":"\ud83c\udfc3",fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],"char":"\ud83d\udeb6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],"char":"\ud83d\udeb6",fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],"char":"\ud83d\udc83",fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],"char":"\ud83d\udd7a",fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],"char":"\ud83d\udc6f",fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],"char":"\ud83d\udc6f\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],"char":"\ud83d\udc6b",fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],"char":"\ud83d\udc6c",fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],"char":"\ud83d\udc6d",fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],"char":"\ud83d\ude47\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],"char":"\ud83d\ude47",fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],"char":"\ud83e\udd26",fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],"char":"\ud83e\udd26\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],"char":"\ud83e\udd37",fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],"char":"\ud83e\udd37\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],"char":"\ud83d\udc81",fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],"char":"\ud83d\udc81\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],"char":"\ud83d\ude45",fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],"char":"\ud83d\ude45\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],"char":"\ud83d\ude46",fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],"char":"\ud83d\ude46\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4b",fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4b\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4e",fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d",fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],"char":"\ud83d\udc87",fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],"char":"\ud83d\udc87\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],"char":"\ud83d\udc86",fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],"char":"\ud83d\udc86\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc91",fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc8f",fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],"char":"\ud83d\udc6a",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],"char":"\ud83e\udde5",fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],"char":"\ud83d\udc5a",fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],"char":"\ud83d\udc55",fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],"char":"\ud83d\udc56",fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],"char":"\ud83d\udc54",fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],"char":"\ud83d\udc57",fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],"char":"\ud83d\udc59",fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],"char":"\ud83d\udc58",fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],"char":"\ud83d\udc84",fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],"char":"\ud83d\udc8b",fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],"char":"\ud83d\udc63",fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],"char":"\ud83d\udc60",fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],"char":"\ud83d\udc61",fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],"char":"\ud83d\udc62",fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],"char":"\ud83d\udc5e",fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],"char":"\ud83d\udc5f",fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],"char":"\ud83e\udde6",fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],"char":"\ud83e\udde4",fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],"char":"\ud83e\udde3",fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],"char":"\ud83d\udc52",fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],"char":"\ud83c\udfa9",fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],"char":"\ud83e\udde2",fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],"char":"\u26d1",fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],"char":"\ud83c\udf93",fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],"char":"\ud83d\udc51",fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],"char":"\ud83c\udf92",fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],"char":"\ud83d\udc5d",fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],"char":"\ud83d\udc5b",fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],"char":"\ud83d\udc5c",fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],"char":"\ud83d\udcbc",fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],"char":"\ud83d\udc53",fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],"char":"\ud83d\udd76",fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"char":"\ud83d\udc8d",fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],"char":"\ud83c\udf02",fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],"char":"\ud83d\udc36",fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],"char":"\ud83d\udc31",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],"char":"\ud83d\udc2d",fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],"char":"\ud83d\udc39",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],"char":"\ud83d\udc30",fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],"char":"\ud83e\udd8a",fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3b",fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],"char":"\ud83d\udc3c",fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],"char":"\ud83d\udc28",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],"char":"\ud83d\udc2f",fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],"char":"\ud83e\udd81",fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc2e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],"char":"\ud83d\udc37",fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],"char":"\ud83d\udc3d",fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],"char":"\ud83d\udc38",fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],"char":"\ud83e\udd91",fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],"char":"\ud83d\udc19",fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],"char":"\ud83e\udd90",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],"char":"\ud83d\udc35",fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],"char":"\ud83e\udd8d",fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],"char":"\ud83d\ude48",fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],"char":"\ud83d\ude49",fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],"char":"\ud83d\ude4a",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],"char":"\ud83d\udc12",fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],"char":"\ud83d\udc14",fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],"char":"\ud83d\udc27",fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],"char":"\ud83d\udc26",fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],"char":"\ud83d\udc24",fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],"char":"\ud83d\udc23",fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],"char":"\ud83d\udc25",fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],"char":"\ud83e\udd86",fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],"char":"\ud83e\udd85",fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],"char":"\ud83e\udd89",fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],"char":"\ud83e\udd87",fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3a",fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],"char":"\ud83d\udc17",fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],"char":"\ud83d\udc34",fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],"char":"\ud83e\udd84",fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],"char":"\ud83d\udc1d",fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],"char":"\ud83d\udc1b",fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],"char":"\ud83e\udd8b",fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],"char":"\ud83d\udc0c",fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],"char":"\ud83d\udc1e",fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],"char":"\ud83d\udc1c",fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],"char":"\ud83e\udd97",fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],"char":"\ud83d\udd77",fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],"char":"\ud83e\udd82",fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],"char":"\ud83e\udd80",fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],"char":"\ud83d\udc0d",fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],"char":"\ud83e\udd8e",fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],"char":"\ud83e\udd96",fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"char":"\ud83e\udd95",fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],"char":"\ud83d\udc22",fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],"char":"\ud83d\udc20",fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],"char":"\ud83d\udc1f",fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],"char":"\ud83d\udc21",fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],"char":"\ud83d\udc2c",fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],"char":"\ud83e\udd88",fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc33",fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc0b",fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],"char":"\ud83d\udc0a",fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],"char":"\ud83d\udc06",fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],"char":"\ud83e\udd93",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],"char":"\ud83d\udc05",fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],"char":"\ud83d\udc03",fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],"char":"\ud83d\udc02",fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc04",fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],"char":"\ud83e\udd8c",fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],"char":"\ud83d\udc2a",fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],"char":"\ud83d\udc2b",fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],"char":"\ud83e\udd92",fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],"char":"\ud83d\udc18",fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],"char":"\ud83e\udd8f",fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],"char":"\ud83d\udc10",fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],"char":"\ud83d\udc0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],"char":"\ud83d\udc11",fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],"char":"\ud83d\udc0e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],"char":"\ud83d\udc16",fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],"char":"\ud83d\udc00",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],"char":"\ud83d\udc01",fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],"char":"\ud83d\udc13",fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],"char":"\ud83e\udd83",fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],"char":"\ud83d\udd4a",fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],"char":"\ud83d\udc15",fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],"char":"\ud83d\udc29",fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],"char":"\ud83d\udc08",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],"char":"\ud83d\udc07",fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],"char":"\ud83d\udc3f",fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],"char":"\ud83e\udd94",fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],"char":"\ud83d\udc3e",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc09",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc32",fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],"char":"\ud83c\udf35",fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],"char":"\ud83c\udf84",fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],"char":"\ud83c\udf32",fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],"char":"\ud83c\udf33",fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],"char":"\ud83c\udf34",fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],"char":"\ud83c\udf31",fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],"char":"\ud83c\udf3f",fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],"char":"\u2618",fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],"char":"\ud83c\udf40",fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],"char":"\ud83c\udf8d",fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],"char":"\ud83c\udf8b",fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],"char":"\ud83c\udf43",fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],"char":"\ud83c\udf42",fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],"char":"\ud83c\udf41",fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],"char":"\ud83c\udf3e",fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],"char":"\ud83c\udf3a",fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],"char":"\ud83c\udf3b",fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],"char":"\ud83c\udf39",fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],"char":"\ud83e\udd40",fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],"char":"\ud83c\udf37",fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],"char":"\ud83c\udf3c",fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],"char":"\ud83c\udf38",fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],"char":"\ud83d\udc90",fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],"char":"\ud83c\udf44",fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],"char":"\ud83c\udf30",fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],"char":"\ud83c\udf83",fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],"char":"\ud83d\udc1a",fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],"char":"\ud83d\udd78",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],"char":"\ud83c\udf0e",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],"char":"\ud83c\udf0d",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],"char":"\ud83c\udf0f",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf15",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"char":"\ud83c\udf16",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf17",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf18",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf11",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf12",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf13",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"char":"\ud83c\udf14",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1a",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1d",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1b",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1c",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],"char":"\ud83c\udf1e",fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],"char":"\ud83c\udf19",fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],"char":"\u2b50",fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],"char":"\ud83c\udf1f",fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],"char":"\ud83d\udcab",fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],"char":"\u2728",fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],"char":"\u2604",fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],"char":"\u2600\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],"char":"\ud83c\udf24",fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],"char":"\u26c5",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],"char":"\ud83c\udf25",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],"char":"\ud83c\udf26",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],"char":"\u2601\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],"char":"\ud83c\udf27",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],"char":"\u26c8",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],"char":"\ud83c\udf29",fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],"char":"\u26a1",fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],"char":"\ud83d\udd25",fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],"char":"\ud83d\udca5",fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],"char":"\u2744\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],"char":"\ud83c\udf28",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"char":"\u26c4",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],"char":"\u2603",fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],"char":"\ud83c\udf2c",fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],"char":"\ud83d\udca8",fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],"char":"\ud83c\udf2a",fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],"char":"\ud83c\udf2b",fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],"char":"\u2602",fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],"char":"\u2614",fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],"char":"\ud83d\udca7",fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],"char":"\ud83d\udca6",fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],"char":"\ud83c\udf0a",fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],"char":"\ud83c\udf4f",fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],"char":"\ud83c\udf4e",fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],"char":"\ud83c\udf50",fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],"char":"\ud83c\udf4a",fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],"char":"\ud83c\udf4b",fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],"char":"\ud83c\udf4c",fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],"char":"\ud83c\udf49",fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],"char":"\ud83c\udf47",fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],"char":"\ud83c\udf53",fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],"char":"\ud83c\udf48",fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],"char":"\ud83c\udf52",fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],"char":"\ud83c\udf51",fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],"char":"\ud83c\udf4d",fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],"char":"\ud83e\udd65",fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],"char":"\ud83e\udd5d",fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],"char":"\ud83e\udd51",fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],"char":"\ud83e\udd66",fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],"char":"\ud83c\udf45",fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],"char":"\ud83c\udf46",fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],"char":"\ud83e\udd52",fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],"char":"\ud83e\udd55",fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],"char":"\ud83c\udf36",fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],"char":"\ud83e\udd54",fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],"char":"\ud83c\udf3d",fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],"char":"\ud83c\udf60",fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],"char":"\ud83e\udd5c",fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],"char":"\ud83c\udf6f",fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],"char":"\ud83e\udd50",fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],"char":"\ud83c\udf5e",fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],"char":"\ud83e\udd56",fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],"char":"\ud83e\udd68",fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],"char":"\ud83e\uddc0",fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],"char":"\ud83e\udd5a",fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],"char":"\ud83e\udd53",fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],"char":"\ud83e\udd69",fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],"char":"\ud83e\udd5e",fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],"char":"\ud83c\udf57",fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],"char":"\ud83c\udf56",fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],"char":"\ud83c\udf64",fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],"char":"\ud83c\udf73",fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"char":"\ud83c\udf54",fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],"char":"\ud83c\udf5f",fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],"char":"\ud83e\udd59",fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],"char":"\ud83c\udf2d",fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],"char":"\ud83c\udf55",fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],"char":"\ud83e\udd6a",fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],"char":"\ud83e\udd6b",fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],"char":"\ud83c\udf5d",fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],"char":"\ud83c\udf2e",fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],"char":"\ud83c\udf2f",fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],"char":"\ud83e\udd57",fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],"char":"\ud83e\udd58",fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],"char":"\ud83c\udf5c",fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],"char":"\ud83c\udf72",fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"char":"\ud83c\udf65",fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],"char":"\ud83e\udd60",fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],"char":"\ud83c\udf63",fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],"char":"\ud83c\udf71",fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],"char":"\ud83c\udf5b",fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],"char":"\ud83c\udf59",fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],"char":"\ud83c\udf5a",fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],"char":"\ud83c\udf58",fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],"char":"\ud83c\udf62",fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],"char":"\ud83c\udf61",fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],"char":"\ud83c\udf67",fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],"char":"\ud83c\udf68",fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],"char":"\ud83c\udf66",fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],"char":"\ud83e\udd67",fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],"char":"\ud83c\udf70",fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],"char":"\ud83c\udf82",fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],"char":"\ud83c\udf6e",fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],"char":"\ud83c\udf6c",fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],"char":"\ud83c\udf6d",fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],"char":"\ud83c\udf6b",fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],"char":"\ud83c\udf7f",fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],"char":"\ud83e\udd5f",fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],"char":"\ud83c\udf69",fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],"char":"\ud83c\udf6a",fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],"char":"\ud83e\udd5b",fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7a",fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7b",fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"char":"\ud83e\udd42",fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],"char":"\ud83c\udf77",fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"char":"\ud83e\udd43",fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],"char":"\ud83c\udf78",fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"char":"\ud83c\udf79",fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],"char":"\ud83c\udf7e",fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],"char":"\ud83c\udf76",fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],"char":"\ud83c\udf75",fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],"char":"\ud83e\udd64",fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],"char":"\u2615",fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],"char":"\ud83c\udf7c",fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],"char":"\ud83e\udd44",fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],"char":"\ud83c\udf74",fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],"char":"\ud83c\udf7d",fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],"char":"\ud83e\udd63",fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],"char":"\ud83e\udd61",fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],"char":"\ud83e\udd62",fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],"char":"\u26bd",fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],"char":"\ud83c\udfc0",fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],"char":"\ud83c\udfc8",fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],"char":"\u26be",fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],"char":"\ud83c\udfbe",fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],"char":"\ud83c\udfd0",fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],"char":"\ud83c\udfc9",fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],"char":"\ud83c\udfb1",fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],"char":"\u26f3",fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],"char":"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],"char":"\ud83c\udfcc",fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],"char":"\ud83c\udfd3",fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],"char":"\ud83c\udff8",fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],"char":"\ud83e\udd45",fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],"char":"\ud83c\udfd2",fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],"char":"\ud83c\udfd1",fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],"char":"\ud83c\udfcf",fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],"char":"\ud83c\udfbf",fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],"char":"\u26f7",fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],"char":"\ud83c\udfc2",fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],"char":"\ud83e\udd3a",fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],"char":"\u26f8",fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],"char":"\ud83e\udd4c",fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],"char":"\ud83d\udef7",fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],"char":"\ud83c\udff9",fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],"char":"\ud83c\udfa3",fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],"char":"\ud83e\udd4a",fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],"char":"\ud83e\udd4b",fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],"char":"\ud83d\udea3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],"char":"\ud83d\udea3",fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],"char":"\ud83e\uddd7\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],"char":"\ud83e\uddd7\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],"char":"\ud83c\udfca\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],"char":"\ud83c\udfca",fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],"char":"\ud83c\udfc4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],"char":"\ud83c\udfc4",fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec0",fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],"char":"\u26f9\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],"char":"\u26f9",fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],"char":"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],"char":"\ud83c\udfcb",fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],"char":"\ud83d\udeb4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],"char":"\ud83d\udeb4",fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],"char":"\ud83d\udeb5\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],"char":"\ud83d\udeb5",fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],"char":"\ud83c\udfc7",fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],"char":"\ud83d\udd74",fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],"char":"\ud83c\udfc6",fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],"char":"\ud83c\udfbd",fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],"char":"\ud83c\udfc5",fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],"char":"\ud83c\udf96",fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],"char":"\ud83e\udd47",fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],"char":"\ud83e\udd48",fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],"char":"\ud83e\udd49",fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],"char":"\ud83c\udf97",fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],"char":"\ud83c\udff5",fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],"char":"\ud83c\udfab",fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],"char":"\ud83c\udf9f",fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],"char":"\ud83c\udfad",fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],"char":"\ud83c\udfa8",fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],"char":"\ud83c\udfaa",fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],"char":"\ud83c\udfa4",fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],"char":"\ud83c\udfa7",fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],"char":"\ud83c\udfbc",fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],"char":"\ud83c\udfb9",fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],"char":"\ud83e\udd41",fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],"char":"\ud83c\udfb7",fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],"char":"\ud83c\udfba",fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],"char":"\ud83c\udfb8",fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],"char":"\ud83c\udfbb",fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],"char":"\ud83c\udfac",fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],"char":"\ud83c\udfae",fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],"char":"\ud83d\udc7e",fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],"char":"\ud83c\udfaf",fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],"char":"\ud83c\udfb2",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],"char":"\ud83c\udfb0",fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],"char":"\ud83c\udfb3",fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],"char":"\ud83d\ude97",fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],"char":"\ud83d\ude95",fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude99",fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude8c",fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],"char":"\ud83d\ude8e",fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],"char":"\ud83c\udfce",fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],"char":"\ud83d\ude93",fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],"char":"\ud83d\ude91",fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],"char":"\ud83d\ude92",fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],"char":"\ud83d\ude90",fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],"char":"\ud83d\ude9a",fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],"char":"\ud83d\ude9b",fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],"char":"\ud83d\ude9c",fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],"char":"\ud83d\udef4",fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],"char":"\ud83c\udfcd",fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],"char":"\ud83d\udeb2",fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],"char":"\ud83d\udef5",fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],"char":"\ud83d\udea8",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],"char":"\ud83d\ude94",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],"char":"\ud83d\ude8d",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude98",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],"char":"\ud83d\ude96",fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea1",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea0",fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],"char":"\ud83d\ude9f",fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude83",fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],"char":"\ud83d\ude8b",fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9d",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],"char":"\ud83d\ude84",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],"char":"\ud83d\ude85",fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude88",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9e",fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],"char":"\ud83d\ude82",fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],"char":"\ud83d\ude86",fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],"char":"\ud83d\ude87",fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],"char":"\ud83d\ude8a",fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],"char":"\ud83d\ude89",fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],"char":"\ud83d\udef8",fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],"char":"\ud83d\ude81",fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],"char":"\ud83d\udee9",fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],"char":"\u2708\ufe0f",fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],"char":"\ud83d\udeeb",fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],"char":"\ud83d\udeec",fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],"char":"\u26f5",fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],"char":"\ud83d\udee5",fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],"char":"\ud83d\udea4",fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],"char":"\u26f4",fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],"char":"\ud83d\udef3",fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],"char":"\ud83d\ude80",fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],"char":"\ud83d\udef0",fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],"char":"\ud83d\udcba",fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],"char":"\ud83d\udef6",fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],"char":"\u2693",fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],"char":"\ud83d\udea7",fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],"char":"\u26fd",fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],"char":"\ud83d\ude8f",fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],"char":"\ud83d\udea6",fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],"char":"\ud83d\udea5",fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],"char":"\ud83c\udfc1",fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],"char":"\ud83d\udea2",fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],"char":"\ud83c\udfa1",fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],"char":"\ud83c\udfa2",fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],"char":"\ud83c\udfa0",fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],"char":"\ud83c\udfd7",fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],"char":"\ud83c\udf01",fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],"char":"\ud83d\uddfc",fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],"char":"\ud83c\udfed",fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],"char":"\u26f2",fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],"char":"\ud83c\udf91",fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],"char":"\u26f0",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],"char":"\ud83c\udfd4",fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],"char":"\ud83d\uddfb",fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],"char":"\ud83c\udf0b",fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],"char":"\ud83d\uddfe",fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],"char":"\ud83c\udfd5",fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],"char":"\u26fa",fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],"char":"\ud83c\udfde",fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],"char":"\ud83d\udee3",fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],"char":"\ud83d\udee4",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],"char":"\ud83c\udf05",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],"char":"\ud83c\udf04",fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],"char":"\ud83c\udfdc",fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],"char":"\ud83c\udfd6",fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],"char":"\ud83c\udfdd",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],"char":"\ud83c\udf07",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],"char":"\ud83c\udf06",fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],"char":"\ud83c\udfd9",fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],"char":"\ud83c\udf03",fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],"char":"\ud83c\udf09",fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],"char":"\ud83c\udf0c",fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],"char":"\ud83c\udf20",fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],"char":"\ud83c\udf87",fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],"char":"\ud83c\udf86",fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],"char":"\ud83c\udf08",fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],"char":"\ud83c\udfd8",fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],"char":"\ud83c\udff0",fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],"char":"\ud83c\udfef",fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],"char":"\ud83c\udfdf",fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],"char":"\ud83d\uddfd",fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],"char":"\ud83c\udfe0",fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],"char":"\ud83c\udfe1",fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],"char":"\ud83c\udfda",fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],"char":"\ud83c\udfe2",fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],"char":"\ud83c\udfec",fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],"char":"\ud83c\udfe3",fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],"char":"\ud83c\udfe4",fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],"char":"\ud83c\udfe5",fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],"char":"\ud83c\udfe6",fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],"char":"\ud83c\udfe8",fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],"char":"\ud83c\udfea",fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],"char":"\ud83c\udfeb",fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],"char":"\ud83c\udfe9",fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],"char":"\ud83d\udc92",fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],"char":"\ud83c\udfdb",fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],"char":"\u26ea",fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],"char":"\ud83d\udd4c",fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],"char":"\ud83d\udd4d",fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],"char":"\ud83d\udd4b",fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],"char":"\u26e9",fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],"char":"\u231a",fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],"char":"\ud83d\udcf1",fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],"char":"\ud83d\udcf2",fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],"char":"\ud83d\udcbb",fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],"char":"\u2328",fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],"char":"\ud83d\udda5",fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],"char":"\ud83d\udda8",fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],"char":"\ud83d\uddb1",fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],"char":"\ud83d\uddb2",fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],"char":"\ud83d\udd79",fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],"char":"\ud83d\udddc",fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],"char":"\ud83d\udcbd",fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],"char":"\ud83d\udcbe",fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],"char":"\ud83d\udcbf",fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],"char":"\ud83d\udcc0",fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],"char":"\ud83d\udcfc",fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],"char":"\ud83d\udcf7",fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],"char":"\ud83d\udcf8",fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],"char":"\ud83d\udcf9",fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],"char":"\ud83c\udfa5",fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],"char":"\ud83d\udcfd",fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],"char":"\ud83c\udf9e",fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],"char":"\ud83d\udcde",fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],"char":"\u260e\ufe0f",fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],"char":"\ud83d\udcdf",fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],"char":"\ud83d\udce0",fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],"char":"\ud83d\udcfa",fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],"char":"\ud83d\udcfb",fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],"char":"\ud83c\udf99",fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],"char":"\ud83c\udf9a",fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],"char":"\ud83c\udf9b",fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],"char":"\u23f1",fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],"char":"\u23f2",fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],"char":"\u23f0",fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],"char":"\ud83d\udd70",fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],"char":"\u23f3",fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],"char":"\u231b",fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],"char":"\ud83d\udce1",fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],"char":"\ud83d\udd0b",fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],"char":"\ud83d\udd0c",fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],"char":"\ud83d\udca1",fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],"char":"\ud83d\udd26",fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],"char":"\ud83d\udd6f",fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],"char":"\ud83d\uddd1",fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],"char":"\ud83d\udee2",fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],"char":"\ud83d\udcb8",fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],"char":"\ud83d\udcb5",fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],"char":"\ud83d\udcb4",fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],"char":"\ud83d\udcb6",fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],"char":"\ud83d\udcb7",fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],"char":"\ud83d\udcb0",fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],"char":"\ud83d\udcb3",fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],"char":"\ud83d\udc8e",fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],"char":"\u2696",fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],"char":"\ud83d\udd27",fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],"char":"\ud83d\udd28",fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],"char":"\u2692",fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],"char":"\ud83d\udee0",fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],"char":"\u26cf",fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],"char":"\ud83d\udd29",fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],"char":"\u2699",fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],"char":"\u26d3",fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],"char":"\ud83d\udd2b",fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],"char":"\ud83d\udca3",fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],"char":"\ud83d\udd2a",fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],"char":"\ud83d\udde1",fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],"char":"\u2694",fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],"char":"\ud83d\udee1",fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],"char":"\ud83d\udeac",fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],"char":"\u2620",fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"char":"\u26b0",fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],"char":"\u26b1",fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],"char":"\ud83c\udffa",fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],"char":"\ud83d\udd2e",fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],"char":"\ud83d\udcff",fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],"char":"\ud83d\udc88",fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],"char":"\u2697",fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],"char":"\ud83d\udd2d",fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],"char":"\ud83d\udd2c",fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],"char":"\ud83d\udd73",fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],"char":"\ud83d\udc8a",fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"char":"\ud83d\udc89",fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],"char":"\ud83c\udf21",fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],"char":"\ud83c\udff7",fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],"char":"\ud83d\udd16",fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],"char":"\ud83d\udebd",fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],"char":"\ud83d\udebf",fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec1",fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],"char":"\ud83d\udd11",fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],"char":"\ud83d\udddd",fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],"char":"\ud83d\udecb",fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],"char":"\ud83d\udecc",fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],"char":"\ud83d\udecf",fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],"char":"\ud83d\udeaa",fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],"char":"\ud83d\udece",fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],"char":"\ud83d\uddbc",fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],"char":"\ud83d\uddfa",fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],"char":"\u26f1",fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],"char":"\ud83d\uddff",fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],"char":"\ud83d\udecd",fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],"char":"\ud83d\uded2",fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],"char":"\ud83c\udf88",fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],"char":"\ud83c\udf8f",fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],"char":"\ud83c\udf80",fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],"char":"\ud83c\udf81",fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],"char":"\ud83c\udf8a",fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],"char":"\ud83c\udf89",fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],"char":"\ud83c\udf8e",fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],"char":"\ud83c\udf90",fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],"char":"\ud83c\udf8c",fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],"char":"\ud83c\udfee",fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],"char":"\u2709\ufe0f",fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],"char":"\ud83d\udce9",fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],"char":"\ud83d\udce8",fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],"char":"\ud83d\udce7",fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],"char":"\ud83d\udc8c",fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],"char":"\ud83d\udcee",fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],"char":"\ud83d\udcea",fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],"char":"\ud83d\udceb",fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],"char":"\ud83d\udcec",fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],"char":"\ud83d\udced",fitzpatrick_scale:!1,category:"objects"},"package":{keywords:["mail","gift","cardboard","box","moving"],"char":"\ud83d\udce6",fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],"char":"\ud83d\udcef",fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],"char":"\ud83d\udce5",fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],"char":"\ud83d\udce4",fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],"char":"\ud83d\udcdc",fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],"char":"\ud83d\udcc3",fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],"char":"\ud83d\udcd1",fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],"char":"\ud83d\udcca",fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"char":"\ud83d\udcc8",fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"char":"\ud83d\udcc9",fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],"char":"\ud83d\udcc4",fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],"char":"\ud83d\udcc5",fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],"char":"\ud83d\udcc6",fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],"char":"\ud83d\uddd3",fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],"char":"\ud83d\udcc7",fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],"char":"\ud83d\uddc3",fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],"char":"\ud83d\uddf3",fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],"char":"\ud83d\uddc4",fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],"char":"\ud83d\udccb",fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],"char":"\ud83d\uddd2",fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],"char":"\ud83d\udcc1",fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],"char":"\ud83d\udcc2",fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],"char":"\ud83d\uddc2",fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],"char":"\ud83d\uddde",fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],"char":"\ud83d\udcf0",fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],"char":"\ud83d\udcd3",fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],"char":"\ud83d\udcd5",fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],"char":"\ud83d\udcd7",fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],"char":"\ud83d\udcd8",fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],"char":"\ud83d\udcd9",fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],"char":"\ud83d\udcd4",fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],"char":"\ud83d\udcd2",fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],"char":"\ud83d\udcda",fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],"char":"\ud83d\udcd6",fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],"char":"\ud83d\udd17",fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],"char":"\ud83d\udcce",fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],"char":"\ud83d\udd87",fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],"char":"\u2702\ufe0f",fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],"char":"\ud83d\udcd0",fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],"char":"\ud83d\udccf",fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],"char":"\ud83d\udccc",fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],"char":"\ud83d\udccd",fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],"char":"\ud83d\udea9",fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],"char":"\ud83c\udff3",fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],"char":"\ud83c\udff4",fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"char":"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],"char":"\ud83d\udd10",fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],"char":"\ud83d\udd12",fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],"char":"\ud83d\udd13",fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],"char":"\ud83d\udd0f",fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8a",fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8b",fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],"char":"\u2712\ufe0f",fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"char":"\ud83d\udcdd",fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],"char":"\u270f\ufe0f",fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],"char":"\ud83d\udd8d",fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],"char":"\ud83d\udd8c",fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0d",fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0e",fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],"char":"\u2764\ufe0f",fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83e\udde1",fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9b",fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9a",fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc99",fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9c",fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],"char":"\ud83d\udda4",fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],"char":"\ud83d\udc94",fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],"char":"\u2763",fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],"char":"\ud83d\udc95",fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9e",fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],"char":"\ud83d\udc93",fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],"char":"\ud83d\udc97",fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc96",fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],"char":"\ud83d\udc98",fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],"char":"\ud83d\udc9d",fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],"char":"\ud83d\udc9f",fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],"char":"\u262e",fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],"char":"\u271d",fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],"char":"\u262a",fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\ud83d\udd49",fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\u2638",fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],"char":"\u2721",fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],"char":"\ud83d\udd2f",fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],"char":"\ud83d\udd4e",fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],"char":"\u262f",fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],"char":"\u2626",fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],"char":"\ud83d\uded0",fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],"char":"\u26ce",fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2648",fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2649",fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264a",fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264b",fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264c",fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264d",fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264e",fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],"char":"\u264f",fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2650",fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2651",fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2652",fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2653",fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],"char":"\ud83c\udd94",fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],"char":"\u269b",fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],"char":"\ud83c\ude33",fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],"char":"\ud83c\ude39",fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],"char":"\u2622",fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],"char":"\u2623",fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],"char":"\ud83d\udcf4",fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],"char":"\ud83d\udcf3",fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],"char":"\ud83c\ude36",fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],"char":"\ud83c\ude1a",fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],"char":"\ud83c\ude38",fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],"char":"\ud83c\ude3a",fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],"char":"\ud83c\ude37\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],"char":"\u2734\ufe0f",fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],"char":"\ud83c\udd9a",fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],"char":"\ud83c\ude51",fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],"char":"\ud83d\udcae",fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],"char":"\ud83c\ude50",fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],"char":"\u3299\ufe0f",fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],"char":"\u3297\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],"char":"\ud83c\ude34",fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],"char":"\ud83c\ude35",fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"char":"\ud83c\ude32",fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd70\ufe0f",fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd71\ufe0f",fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],"char":"\ud83c\udd8e",fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],"char":"\ud83c\udd91",fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],"char":"\ud83c\udd7e\ufe0f",fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],"char":"\ud83c\udd98",fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],"char":"\u26d4",fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],"char":"\ud83d\udcdb",fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],"char":"\ud83d\udeab",fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel"],"char":"\u274c",fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],"char":"\u2b55",fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],"char":"\ud83d\uded1",fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],"char":"\ud83d\udca2",fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],"char":"\u2668\ufe0f",fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],"char":"\ud83d\udeb7",fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],"char":"\ud83d\udeaf",fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],"char":"\ud83d\udeb3",fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],"char":"\ud83d\udeb1",fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],"char":"\ud83d\udd1e",fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],"char":"\ud83d\udcf5",fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"char":"\u2757",fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],"char":"\u2755",fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],"char":"\u2753",fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],"char":"\u2754",fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],"char":"\u203c\ufe0f",fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],"char":"\u2049\ufe0f",fitzpatrick_scale:!1,category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],"char":"\ud83d\udcaf",fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],"char":"\ud83d\udd05",fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],"char":"\ud83d\udd06",fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],"char":"\ud83d\udd31",fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],"char":"\u269c",fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],"char":"\u303d\ufe0f",fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],"char":"\u26a0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],"char":"\ud83d\udeb8",fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],"char":"\ud83d\udd30",fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],"char":"\u267b\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],"char":"\ud83c\ude2f",fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],"char":"\ud83d\udcb9",fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],"char":"\u2747\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],"char":"\u2733\ufe0f",fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],"char":"\u274e",fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],"char":"\u2705",fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],"char":"\ud83d\udca0",fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"char":"\ud83c\udf00",fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],"char":"\u27bf",fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],"char":"\ud83c\udf10",fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],"char":"\u24c2\ufe0f",fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],"char":"\ud83c\udfe7",fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],"char":"\ud83c\ude02\ufe0f",fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],"char":"\ud83d\udec2",fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],"char":"\ud83d\udec3",fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],"char":"\ud83d\udec4",fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],"char":"\ud83d\udec5",fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],"char":"\u267f",fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],"char":"\ud83d\udead",fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],"char":"\ud83d\udebe",fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],"char":"\ud83c\udd7f\ufe0f",fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],"char":"\ud83d\udeb0",fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],"char":"\ud83d\udeb9",fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],"char":"\ud83d\udeba",fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],"char":"\ud83d\udebc",fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],"char":"\ud83d\udebb",fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],"char":"\ud83d\udeae",fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],"char":"\ud83c\udfa6",fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"char":"\ud83d\udcf6",fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],"char":"\ud83c\ude01",fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],"char":"\ud83c\udd96",fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],"char":"\ud83c\udd97",fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],"char":"\ud83c\udd99",fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],"char":"\ud83c\udd92",fitzpatrick_scale:!1,category:"symbols"},"new":{keywords:["blue-square","words","start"],"char":"\ud83c\udd95",fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],"char":"\ud83c\udd93",fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],"char":"0\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],"char":"1\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],"char":"2\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],"char":"3\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],"char":"4\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],"char":"5\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],"char":"6\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],"char":"7\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],"char":"8\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],"char":"9\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],"char":"\ud83d\udd1f",fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],"char":"*\u20e3",fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],"char":"\ud83d\udd22",fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],"char":"\u23cf\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],"char":"\u25b6\ufe0f",fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],"char":"\u23f8",fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],"char":"\u23ed",fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],"char":"\u23f9",fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],"char":"\u23fa",fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],"char":"\u23ef",fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],"char":"\u23ee",fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],"char":"\u23e9",fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],"char":"\u23ea",fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],"char":"\ud83d\udd00",fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],"char":"\ud83d\udd01",fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],"char":"\ud83d\udd02",fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],"char":"\u25c0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],"char":"\ud83d\udd3c",fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],"char":"\ud83d\udd3d",fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],"char":"\u23eb",fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],"char":"\u23ec",fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],"char":"\u27a1\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],"char":"\u2b05\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],"char":"\u2b06\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],"char":"\u2b07\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],"char":"\u2197\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],"char":"\u2198\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],"char":"\u2199\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],"char":"\u2196\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],"char":"\u2195\ufe0f",fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],"char":"\u2194\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],"char":"\ud83d\udd04",fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],"char":"\u21aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],"char":"\u21a9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],"char":"\u2934\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],"char":"\u2935\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],"char":"#\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],"char":"\u2139\ufe0f",fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd24",fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd21",fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],"char":"\ud83d\udd20",fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],"char":"\ud83d\udd23",fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],"char":"\ud83c\udfb5",fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],"char":"\ud83c\udfb6",fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],"char":"\u3030\ufe0f",fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],"char":"\u27b0",fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],"char":"\u2714\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],"char":"\ud83d\udd03",fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],"char":"\u2795",fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],"char":"\u2796",fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],"char":"\u2797",fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],"char":"\u2716\ufe0f",fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],"char":"\ud83d\udcb2",fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],"char":"\ud83d\udcb1",fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],"char":"\xa9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],"char":"\xae\ufe0f",fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],"char":"\u2122\ufe0f",fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],"char":"\ud83d\udd1a",fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],"char":"\ud83d\udd19",fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],"char":"\ud83d\udd1b",fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],"char":"\ud83d\udd1d",fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],"char":"\ud83d\udd1c",fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],"char":"\u2611\ufe0f",fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],"char":"\ud83d\udd18",fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],"char":"\u26aa",fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],"char":"\u26ab",fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],"char":"\ud83d\udd34",fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],"char":"\ud83d\udd35",fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd38",fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd39",fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd36",fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd37",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],"char":"\ud83d\udd3a",fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],"char":"\u25aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],"char":"\u25ab\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],"char":"\u2b1b",fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],"char":"\u2b1c",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],"char":"\ud83d\udd3b",fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],"char":"\u25fc\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],"char":"\u25fb\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],"char":"\u25fe",fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],"char":"\u25fd",fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],"char":"\ud83d\udd32",fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],"char":"\ud83d\udd33",fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],"char":"\ud83d\udd08",fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],"char":"\ud83d\udd09",fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],"char":"\ud83d\udd0a",fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],"char":"\ud83d\udd07",fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],"char":"\ud83d\udce3",fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],"char":"\ud83d\udce2",fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],"char":"\ud83d\udd14",fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],"char":"\ud83d\udd15",fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],"char":"\ud83c\udccf",fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],"char":"\ud83c\udc04",fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],"char":"\u2660\ufe0f",fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],"char":"\u2663\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],"char":"\u2665\ufe0f",fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],"char":"\u2666\ufe0f",fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],"char":"\ud83c\udfb4",fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],"char":"\ud83d\udcad",fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],"char":"\ud83d\uddef",fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],"char":"\ud83d\udcac",fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],"char":"\ud83d\udde8",fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd50",fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd51",fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd52",fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd53",fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd54",fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],"char":"\ud83d\udd55",fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd56",fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd57",fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd58",fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd59",fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5a",fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],"char":"\ud83d\udd5b",fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5c",fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5d",fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5e",fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5f",fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd60",fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd61",fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd62",fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd63",fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd64",fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd65",fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd66",fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd67",fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],"char":"\ud83c\udde8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],"char":"\ud83c\uddea\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],"char":"\ud83c\uddeb\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],"char":"\ud83c\udde9\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],"char":"\ud83c\uddef\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],"char":"\ud83c\uddfd\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],"char":"\ud83c\uddf4\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],"char":"\ud83c\uddf6\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],"char":"\ud83c\uddec\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"}});
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/emoticons/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/emoticons/plugin.min.js
deleted file mode 100644 (file)
index 20630dc..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(l){"use strict";function n(){}function i(n){return function(){return n}}function t(){return a}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=i(!1),u=i(!0),a=(e={fold:function(n,t){return n()},is:c,isSome:c,isNone:u,getOr:f,getOrThunk:s,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:f,orThunk:s,map:t,each:n,bind:t,exists:c,forall:u,filter:t,equals:o,equals_:o,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(e),e);function o(n){return n.isNone()}function s(n){return n()}function f(n){return n}function m(n,t){return-1!==n.indexOf(t)}function g(n,t){return m(n.title.toLowerCase(),t)||function(n,t){for(var e=0,r=n.length;e<r;e++){if(t(n[e],e))return!0}return!1}(n.keywords,function(n){return m(n.toLowerCase(),t)})}function d(n,t,e){for(var r=[],o=t.toLowerCase(),i=e.fold(function(){return c},function(t){return function(n){return t<=n}}),u=0;u<n.length&&(0!==t.length&&!g(n[u],o)||(r.push({value:n[u]["char"],text:n[u].title,icon:n[u]["char"]}),!i(r.length)));u++);return r}function y(n,t){for(var e=P(n),r=0,o=e.length;r<o;r++){var i=e[r];t(n[i],i)}}function p(n,t){return function(n,t){return D.call(n,t)}(n,t)?n[t]:t}function v(n){return function(n,e){return S(n,function(n,t){return{k:t,v:e(n,t)}})}(q(n),function(n){return _({keywords:[],category:"user"},n)})}function h(e,o,n){var r=k(A.none()),u=k(A.none());e.on("init",function(){x.load(n,o).then(function(n){var t=v(e);!function(n){var o={},i=[];y(n,function(n,t){var e={title:t,keywords:n.keywords,"char":n["char"],category:p(I,n.category)},r=o[e.category]!==undefined?o[e.category]:[];o[e.category]=r.concat([e]),i.push(e)}),r.set(A.some(o)),u.set(A.some(i))}(_(n,t))},function(n){l.console.log("Failed to load emoticons: "+n),r.set(A.some({})),u.set(A.some([]))})});var i=function(){return u.get().getOr([])},c=function(){return r.get().isSome()&&u.get().isSome()};return{listCategories:function(){return[z].concat(P(r.get().getOr({})))},hasLoaded:c,waitForLoad:function(){return c()?N.resolve(!0):new N(function(n,t){var e=15,r=L.setInterval(function(){c()?(L.clearInterval(r),n(!0)):--e<0&&(l.console.log("Could not load emojis from url: "+o),L.clearInterval(r),t(!1))},100)})},listAll:i,listCategory:function(t){return t===z?i():r.get().bind(function(n){return A.from(n[t])}).getOr([])}}}var b,w,O=function(e){function n(){return o}function t(n){return n(e)}var r=i(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:u,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return O(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:a},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(c,function(n){return t(e,n)})}};return o},A={some:O,none:t,from:function(n){return null===n||n===undefined?a:O(n)}},j=(b="function",function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===b}),C=Array.prototype.slice,k=(j(Array.from)&&Array.from,function(n){function t(){return e}var e=n;return{get:t,set:function(n){e=n},clone:function(){return k(t())}}}),T=Object.prototype.hasOwnProperty,_=(w=function(n,t){return t},function(){for(var n=new Array(arguments.length),t=0;t<n.length;t++)n[t]=arguments[t];if(0===n.length)throw new Error("Can't merge zero objects");for(var e={},r=0;r<n.length;r++){var o=n[r];for(var i in o)T.call(o,i)&&(e[i]=w(e[i],o[i]))}return e}),P=Object.keys,D=Object.hasOwnProperty,S=function(n,r){var o={};return y(n,function(n,t){var e=r(n,t);o[e.k]=e.v}),o},x=tinymce.util.Tools.resolve("tinymce.Resource"),L=tinymce.util.Tools.resolve("tinymce.util.Delay"),N=tinymce.util.Tools.resolve("tinymce.util.Promise"),E=function(n,t){return n.getParam("emoticons_database_url",t+"/js/emojis"+n.suffix+".js")},F=function(n){return n.getParam("emoticons_database_id","tinymce.plugins.emoticons","string")},q=function(n){return n.getParam("emoticons_append",{},"object")},z="All",I={symbols:"Symbols",people:"People",animals_and_nature:"Animals and Nature",food_and_drink:"Food and Drink",activity:"Activity",travel_and_places:"Travel and Places",objects:"Objects",flags:"Flags",user:"User Defined"},M="pattern",U=function(e,i){function n(){return{title:"Emoticons",size:"normal",body:{type:"tabpanel",tabs:function(n,t){for(var e=n.length,r=new Array(e),o=0;o<e;o++){var i=n[o];r[o]=t(i,o)}return r}(i.listCategories(),function(n){return{title:n,name:n,items:[o,c]}})},initialData:t,onTabChange:function(n,t){u.set(t.newTabName),r.throttle(n)},onChange:r.throttle,onAction:function(n,t){"results"===t.name&&(function(n,t){n.insertContent(t)}(e,t.value),n.close())},buttons:[{type:"cancel",text:"Close",primary:!0}]}}var t={pattern:"",results:d(i.listAll(),"",A.some(300))},u=k(z),r=function(e,r){var o=null;return{cancel:function(){null!==o&&(l.clearTimeout(o),o=null)},throttle:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];null!==o&&l.clearTimeout(o),o=l.setTimeout(function(){e.apply(null,n),o=null},r)}}}(function(n){!function(n){var t=n.getData(),e=u.get(),r=i.listCategory(e),o=d(r,t[M],e===z?A.some(300):A.none());n.setData({results:o})}(n)},200),o={label:"Search",type:"input",name:M},c={type:"collection",name:"results"},a=e.windowManager.open(n());a.focus(M),i.hasLoaded()||(a.block("Loading emoticons..."),i.waitForLoad().then(function(){a.redial(n()),r.throttle(a),a.focus(M),a.unblock()})["catch"](function(n){a.redial({title:"Emoticons",body:{type:"panel",items:[{type:"alertbanner",level:"error",icon:"warning",text:"<p>Could not load emoticons</p>"}]},buttons:[{type:"cancel",text:"Close",primary:!0}],initialData:{pattern:"",results:[]}}),a.focus(M),a.unblock()}))},R=function(n,t){function e(){return U(n,t)}n.ui.registry.addButton("emoticons",{tooltip:"Emoticons",icon:"emoji",onAction:e}),n.ui.registry.addMenuItem("emoticons",{text:"Emoticons...",icon:"emoji",onAction:e})};!function B(){r.add("emoticons",function(n,t){var e=E(n,t),r=F(n),o=h(n,e,r);R(n,o),function(r,o){r.ui.registry.addAutocompleter("emoticons",{ch:":",columns:"auto",minChars:2,fetch:function(t,e){return o.waitForLoad().then(function(){var n=o.listAll();return d(n,t,A.some(e))})},onAction:function(n,t,e){r.selection.setRng(t),r.insertContent(e),n.hide()}})}(n,o)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/fullpage/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/fullpage/plugin.min.js
deleted file mode 100644 (file)
index 2e5e160..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(m){"use strict";function f(t){return e({validate:!1,root_name:"#document"}).parse(t)}function g(t){return t.replace(/<\/?[A-Z]+/g,function(t){return t.toLowerCase()})}var o,i=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return i(e())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),p=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=tinymce.util.Tools.resolve("tinymce.html.DomParser"),h=tinymce.util.Tools.resolve("tinymce.html.Node"),y=tinymce.util.Tools.resolve("tinymce.html.Serializer"),v=function(t){return t.getParam("fullpage_hide_in_source_view")},r=function(t){return t.getParam("fullpage_default_xml_pi")},a=function(t){return t.getParam("fullpage_default_encoding")},c=function(t){return t.getParam("fullpage_default_font_family")},u=function(t){return t.getParam("fullpage_default_font_size")},s=function(t){return t.getParam("fullpage_default_text_color")},d=function(t){return t.getParam("fullpage_default_title")},_=function(t){return t.getParam("fullpage_default_doctype","<!DOCTYPE html>")},b=f,n=function(t,e){var n,i,l=f(e),r={};function o(t,e){return t.attr(e)||""}return r.fontface=c(t),r.fontsize=u(t),7===(n=l.firstChild).type&&(r.xml_pi=!0,(i=/encoding="([^"]+)"/.exec(n.value))&&(r.docencoding=i[1])),(n=l.getAll("#doctype")[0])&&(r.doctype="<!DOCTYPE"+n.value+">"),(n=l.getAll("title")[0])&&n.firstChild&&(r.title=n.firstChild.value),p.each(l.getAll("meta"),function(t){var e,n=t.attr("name"),i=t.attr("http-equiv");n?r[n.toLowerCase()]=t.attr("content"):"Content-Type"===i&&(e=/charset\s*=\s*(.*)\s*/gi.exec(t.attr("content")))&&(r.docencoding=e[1])}),(n=l.getAll("html")[0])&&(r.langcode=o(n,"lang")||o(n,"xml:lang")),r.stylesheets=[],p.each(l.getAll("link"),function(t){"stylesheet"===t.attr("rel")&&r.stylesheets.push(t.attr("href"))}),(n=l.getAll("body")[0])&&(r.langdir=o(n,"dir"),r.style=o(n,"style"),r.visited_color=o(n,"vlink"),r.link_color=o(n,"link"),r.active_color=o(n,"alink")),r},x=function(t,r,e){var o,n,i,a,l,c=t.dom;function u(t,e,n){t.attr(e,n||undefined)}function s(t){n.firstChild?n.insert(t,n.firstChild):n.append(t)}o=f(e),(n=o.getAll("head")[0])||(a=o.getAll("html")[0],n=new h("head",1),a.firstChild?a.insert(n,a.firstChild,!0):a.append(n)),a=o.firstChild,r.xml_pi?(l='version="1.0"',r.docencoding&&(l+=' encoding="'+r.docencoding+'"'),7!==a.type&&(a=new h("xml",7),o.insert(a,o.firstChild,!0)),a.value=l):a&&7===a.type&&a.remove(),a=o.getAll("#doctype")[0],r.doctype?(a||(a=new h("#doctype",10),r.xml_pi?o.insert(a,o.firstChild):s(a)),a.value=r.doctype.substring(9,r.doctype.length-1)):a&&a.remove(),a=null,p.each(o.getAll("meta"),function(t){"Content-Type"===t.attr("http-equiv")&&(a=t)}),r.docencoding?(a||((a=new h("meta",1)).attr("http-equiv","Content-Type"),a.shortEnded=!0,s(a)),a.attr("content","text/html; charset="+r.docencoding)):a&&a.remove(),a=o.getAll("title")[0],r.title?(a?a.empty():s(a=new h("title",1)),a.append(new h("#text",3)).value=r.title):a&&a.remove(),p.each("keywords,description,author,copyright,robots".split(","),function(t){var e,n,i=o.getAll("meta"),l=r[t];for(e=0;e<i.length;e++)if((n=i[e]).attr("name")===t)return void(l?n.attr("content",l):n.remove());l&&((a=new h("meta",1)).attr("name",t),a.attr("content",l),a.shortEnded=!0,s(a))});var d={};return p.each(o.getAll("link"),function(t){"stylesheet"===t.attr("rel")&&(d[t.attr("href")]=t)}),p.each(r.stylesheets,function(t){d[t]||((a=new h("link",1)).attr({rel:"stylesheet",text:"text/css",href:t}),a.shortEnded=!0,s(a)),delete d[t]}),p.each(d,function(t){t.remove()}),(a=o.getAll("body")[0])&&(u(a,"dir",r.langdir),u(a,"style",r.style),u(a,"vlink",r.visited_color),u(a,"link",r.link_color),u(a,"alink",r.active_color),c.setAttribs(t.getBody(),{style:r.style,dir:r.dir,vLink:r.visited_color,link:r.link_color,aLink:r.active_color})),(a=o.getAll("html")[0])&&(u(a,"lang",r.langcode),u(a,"xml:lang",r.langcode)),n.firstChild||n.remove(),(i=y({validate:!1,indent:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(o)).substring(0,i.indexOf("</body>"))},C=Object.prototype.hasOwnProperty,k=(o=function(t,e){return e},function(){for(var t=new Array(arguments.length),e=0;e<t.length;e++)t[e]=arguments[e];if(0===t.length)throw new Error("Can't merge zero objects");for(var n={},i=0;i<t.length;i++){var l=t[i];for(var r in l)C.call(l,r)&&(n[r]=o(n[r],l[r]))}return n}),l=function(i,l){var r=n(i,l.get()),t=k({title:"",keywords:"",description:"",robots:"",author:"",docencoding:""},r);i.windowManager.open({title:"Metadata and Document Properties",size:"normal",body:{type:"panel",items:[{name:"title",type:"input",label:"Title"},{name:"keywords",type:"input",label:"Keywords"},{name:"description",type:"input",label:"Description"},{name:"robots",type:"input",label:"Robots"},{name:"author",type:"input",label:"Author"},{name:"docencoding",type:"input",label:"Encoding"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:t,onSubmit:function(t){var e=t.getData(),n=x(i,p.extend(r,e),l.get());l.set(n),t.close()}})},w=function(t,e){t.addCommand("mceFullPageProperties",function(){l(t,e)})},A=function(t,e){return p.each(t,function(t){e=e.replace(t,function(t){return"\x3c!--mce:protected "+escape(t)+"--\x3e"})}),e},P=function(t){return t.replace(/<!--mce:protected ([\s\S]*?)-->/g,function(t,e){return unescape(e)})},T=p.each,O=function(t){var e,n="",i="";if(r(t)){var l=a(t);n+='<?xml version="1.0" encoding="'+(l||"ISO-8859-1")+'" ?>\n'}return n+=_(t),n+="\n<html>\n<head>\n",(e=d(t))&&(n+="<title>"+e+"</title>\n"),(e=a(t))&&(n+='<meta http-equiv="Content-Type" content="text/html; charset='+e+'" />\n'),(e=c(t))&&(i+="font-family: "+e+";"),(e=u(t))&&(i+="font-size: "+e+";"),(e=s(t))&&(i+="color: "+e+";"),n+="</head>\n<body"+(i?' style="'+i+'"':"")+">\n"},D=function(e,n,i){e.on("BeforeSetContent",function(t){!function(t,e,n,i){var l,r,o,a,c="",u=t.dom;if(!(i.selection||(o=A(t.settings.protect,i.content),"raw"===i.format&&e.get()||i.source_view&&v(t)))){0!==o.length||i.source_view||(o=p.trim(e.get())+"\n"+p.trim(o)+"\n"+p.trim(n.get())),-1!==(l=(o=o.replace(/<(\/?)BODY/gi,"<$1body")).indexOf("<body"))?(l=o.indexOf(">",l),e.set(g(o.substring(0,l+1))),-1===(r=o.indexOf("</body",l))&&(r=o.length),i.content=p.trim(o.substring(l+1,r)),n.set(g(o.substring(r)))):(e.set(O(t)),n.set("\n</body>\n</html>")),a=b(e.get()),T(a.getAll("style"),function(t){t.firstChild&&(c+=t.firstChild.value)});var s=a.getAll("body")[0];s&&u.setAttribs(t.getBody(),{style:s.attr("style")||"",dir:s.attr("dir")||"",vLink:s.attr("vlink")||"",link:s.attr("link")||"",aLink:s.attr("alink")||""}),u.remove("fullpage_styles");var d=t.getDoc().getElementsByTagName("head")[0];if(c)u.add(d,"style",{id:"fullpage_styles"}).appendChild(m.document.createTextNode(c));var f={};p.each(d.getElementsByTagName("link"),function(t){"stylesheet"===t.rel&&t.getAttribute("data-mce-fullpage")&&(f[t.href]=t)}),p.each(a.getAll("link"),function(t){var e=t.attr("href");if(!e)return!0;f[e]||"stylesheet"!==t.attr("rel")||u.add(d,"link",{rel:"stylesheet",text:"text/css",href:e,"data-mce-fullpage":"1"}),delete f[e]}),p.each(f,function(t){t.parentNode.removeChild(t)})}}(e,n,i,t)}),e.on("GetContent",function(t){!function(t,e,n,i){i.selection||i.source_view&&v(t)||(i.content=P(p.trim(e)+"\n"+p.trim(i.content)+"\n"+p.trim(n)))}(e,n.get(),i.get(),t)})},E=function(t){t.ui.registry.addButton("fullpage",{tooltip:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}}),t.ui.registry.addMenuItem("fullpage",{text:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}})};!function z(){t.add("fullpage",function(t){var e=i(""),n=i("");w(t,e),E(t),D(t,e,n)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js
deleted file mode 100644 (file)
index c03217e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(l){"use strict";function e(){}function m(e){return function(){return e}}function n(){return s}var r,t=function(e){function n(){return r}var r=e;return{get:n,set:function(e){r=e},clone:function(){return t(n())}}},o=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e){return{isFullscreen:function(){return null!==e.get()}}},c=m(!1),u=m(!0),s=(r={fold:function(e,n){return e()},is:c,isSome:c,isNone:u,getOr:d,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:m(null),getOrUndefined:m(undefined),or:d,orThunk:a,map:n,each:e,bind:n,exists:c,forall:u,filter:n,equals:f,equals_:f,toArray:function(){return[]},toString:m("none()")},Object.freeze&&Object.freeze(r),r);function f(e){return e.isNone()}function a(e){return e()}function d(e){return e}function h(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}function v(e,n){for(var r=e.length,t=new Array(r),o=0;o<r;o++){var i=e[o];t[o]=n(i,o)}return t}function g(e,n){for(var r=0,t=e.length;r<t;r++){n(e[r],r)}}function p(e,n){for(var r=[],t=0,o=e.length;t<o;t++){var i=e[t];n(i,t)&&r.push(i)}return r}function w(e,n){return function(e){for(var n=[],r=0,t=e.length;r<t;++r){if(!Y(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);Q.apply(n,e[r])}return n}(v(e,n))}function y(e,n){return-1!==e.indexOf(n)}function S(e){return e.style!==undefined&&$(e.style.getPropertyValue)}function E(e,n,r){!function(e,n,r){if(!(X(r)||G(r)||K(r)))throw l.console.error("Invalid call to Attr.set. Key ",n,":: Value ",r,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,r+"")}(e.dom(),n,r)}function O(e,n){var r=e.dom().getAttribute(n);return null===r?undefined:r}function N(e,n){e.dom().removeAttribute(n)}function T(e,n){var r=e.dom();!function(e,n){for(var r=Z(e),t=0,o=r.length;t<o;t++){var i=r[t];n(e[i],i)}}(n,function(e,n){!function(e,n,r){if(!X(r))throw l.console.error("Invalid call to CSS.set. Property ",n,":: Value ",r,":: Element ",e),new Error("CSS value must be a string: "+r);S(e)&&e.style.setProperty(n,r)}(r,n,e)})}function x(e,n){var r=e.dom(),t=l.window.getComputedStyle(r).getPropertyValue(n),o=""!==t||function(e){var n=ie(e)?e.dom().parentNode:e.dom();return n!==undefined&&null!==n&&n.ownerDocument.body.contains(n)}(e)?t:ue(r,n);return null===o?undefined:o}function b(e,n){var r=function(e,n){for(var r=0;r<e.length;r++){var t=e[r];if(t.test(n))return t}return undefined}(e,n);if(!r)return{major:0,minor:0};function t(e){return Number(n.replace(r,"$"+e))}return se(t(1),t(2))}function C(e,n){return function(){return n===e}}function D(e,n){return function(){return n===e}}function A(e,n){var r=String(n).toLowerCase();return function(e,n){for(var r=0,t=e.length;r<t;r++){var o=e[r];if(n(o,r))return z.some(o)}return z.none()}(e,function(e){return e.search(r)})}function M(n){return function(e){return y(e,n)}}function _(){return xe.get()}function k(e,n,r){return 0!=(e.compareDocumentPosition(n)&r)}function F(e,n){var r=e.dom();if(r.nodeType!==Ce)return!1;var t=r;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function R(e,n){var r=n===undefined?l.document:n.dom();return function(e){return e.nodeType!==Ce&&e.nodeType!==De||0===e.childElementCount}(r)?[]:v(r.querySelectorAll(e),ne.fromDom)}function L(n){return function(e){return z.from(e.dom().parentNode).map(ne.fromDom)}(n).map(Ae).map(function(e){return p(e,function(e){return!function(e,n){return e.dom()===n.dom()}(n,e)})}).getOr([])}function I(e,n,r,t){return{x:m(e),y:m(n),width:m(r),height:m(t),right:m(e+r),bottom:m(n+t)}}function P(e){var n=e===undefined?l.window:e,r=n.document,t=function(e){var n=e!==undefined?e.dom():l.document,r=n.body.scrollLeft||n.documentElement.scrollLeft,t=n.body.scrollTop||n.documentElement.scrollTop;return _e(r,t)}(ne.fromDom(r)),o=n.visualViewport;if(o!==undefined)return I(Math.max(o.pageLeft,t.left()),Math.max(o.pageTop,t.top()),o.width,o.height);var i=r.documentElement,u=i.clientWidth,c=i.clientHeight;return I(t.left(),t.top(),u,c)}function H(e,n,r){return p(function(e,n){for(var r=$(n)?n:c,t=e.dom(),o=[];null!==t.parentNode&&t.parentNode!==undefined;){var i=t.parentNode,u=ne.fromDom(i);if(o.push(u),!0===r(u))break;t=i}return o}(e,r),n)}function U(e,n){return function(e,n){return p(L(e),n)}(e,function(e){return F(e,n)})}function W(r,t){return function(n){n.setActive(null!==t.get());function e(e){return n.setActive(e.state)}return r.on("FullscreenStateChanged",e),function(){return r.off("FullscreenStateChanged",e)}}}var B,V,j,q=function(r){function e(){return o}function n(e){return e(r)}var t=m(r),o={fold:function(e,n){return n(r)},is:function(e){return r===e},isSome:u,isNone:c,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return q(e(r))},each:function(e){e(r)},bind:n,exists:n,forall:n,filter:function(e){return e(r)?o:s},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,n){return e.fold(c,function(e){return n(r,e)})}};return o},z={some:q,none:n,from:function(e){return null===e||e===undefined?s:q(e)}},X=h("string"),Y=h("array"),G=h("boolean"),$=h("function"),K=h("number"),J=Array.prototype.slice,Q=Array.prototype.push,Z=($(Array.from)&&Array.from,Object.keys),ee=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:m(e)}},ne={fromHtml:function(e,n){var r=(n||l.document).createElement("div");if(r.innerHTML=e,!r.hasChildNodes()||1<r.childNodes.length)throw l.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ee(r.childNodes[0])},fromTag:function(e,n){var r=(n||l.document).createElement(e);return ee(r)},fromText:function(e,n){var r=(n||l.document).createTextNode(e);return ee(r)},fromDom:ee,fromPoint:function(e,n,r){var t=e.dom();return z.from(t.elementFromPoint(n,r)).map(ee)}},re=(l.Node.ATTRIBUTE_NODE,l.Node.CDATA_SECTION_NODE,l.Node.COMMENT_NODE,l.Node.DOCUMENT_NODE),te=(l.Node.DOCUMENT_TYPE_NODE,l.Node.DOCUMENT_FRAGMENT_NODE,l.Node.ELEMENT_NODE),oe=l.Node.TEXT_NODE,ie=(l.Node.PROCESSING_INSTRUCTION_NODE,l.Node.ENTITY_REFERENCE_NODE,l.Node.ENTITY_NODE,l.Node.NOTATION_NODE,"undefined"!=typeof l.window?l.window:Function("return this;")(),B=oe,function(e){return function(e){return e.dom().nodeType}(e)===B}),ue=function(e,n){return S(e)?e.style.getPropertyValue(n):""},ce=function(){return se(0,0)},se=function(e,n){return{major:e,minor:n}},fe={nu:se,detect:function(e,n){var r=String(n).toLowerCase();return 0===e.length?ce():b(e,r)},unknown:ce},ae="Firefox",de=function(e){var n=e.current;return{current:n,version:e.version,isEdge:C("Edge",n),isChrome:C("Chrome",n),isIE:C("IE",n),isOpera:C("Opera",n),isFirefox:C(ae,n),isSafari:C("Safari",n)}},le={unknown:function(){return de({current:undefined,version:fe.unknown()})},nu:de,edge:m("Edge"),chrome:m("Chrome"),ie:m("IE"),opera:m("Opera"),firefox:m(ae),safari:m("Safari")},me="Windows",he="Android",ve="Solaris",ge="FreeBSD",pe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:D(me,n),isiOS:D("iOS",n),isAndroid:D(he,n),isOSX:D("OSX",n),isLinux:D("Linux",n),isSolaris:D(ve,n),isFreeBSD:D(ge,n)}},we={unknown:function(){return pe({current:undefined,version:fe.unknown()})},nu:pe,windows:m(me),ios:m("iOS"),android:m(he),linux:m("Linux"),osx:m("OSX"),solaris:m(ve),freebsd:m(ge)},ye=function(e,r){return A(e,r).map(function(e){var n=fe.detect(e.versionRegexes,r);return{current:e.name,version:n}})},Se=function(e,r){return A(e,r).map(function(e){var n=fe.detect(e.versionRegexes,r);return{current:e.name,version:n}})},Ee=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Oe=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return y(e,"edge/")&&y(e,"chrome")&&y(e,"safari")&&y(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ee],search:function(e){return y(e,"chrome")&&!y(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return y(e,"msie")||y(e,"trident")}},{name:"Opera",versionRegexes:[Ee,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:M("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:M("firefox")},{name:"Safari",versionRegexes:[Ee,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(y(e,"safari")||y(e,"mobile/"))&&y(e,"applewebkit")}}],Ne=[{name:"Windows",search:M("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return y(e,"iphone")||y(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:M("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:M("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:M("linux"),versionRegexes:[]},{name:"Solaris",search:M("sunos"),versionRegexes:[]},{name:"FreeBSD",search:M("freebsd"),versionRegexes:[]}],Te={browsers:m(Oe),oses:m(Ne)},xe=t(function(e,n){var r=Te.browsers(),t=Te.oses(),o=ye(r,e).fold(le.unknown,le.nu),i=Se(t,e).fold(we.unknown,we.nu);return{browser:o,os:i,deviceType:function(e,n,r,t){var o=e.isiOS()&&!0===/ipad/i.test(r),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),c=u||t("(pointer:coarse)"),s=o||!i&&u&&t("(min-device-width:768px)"),f=i||u&&!s,a=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(r),d=!f&&!s&&!a;return{isiPad:m(o),isiPhone:m(i),isTablet:m(s),isPhone:m(f),isTouch:m(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:m(a),isDesktop:m(d)}}(i,o,e,n)}}(l.navigator.userAgent,function(e){return l.window.matchMedia(e).matches})),be=function(e,n){return k(e,n,l.Node.DOCUMENT_POSITION_CONTAINED_BY)},Ce=te,De=re,Ae=(_().browser.isIE(),function(e){return v(e.dom().childNodes,ne.fromDom)}),Me=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(r,t){return{left:m(r),top:m(t),translate:function(e,n){return Me(r+e,t+n)}}}),_e=Me,ke=(_().browser.isSafari(),function(e,n){e.fire("FullscreenStateChanged",{state:n})}),Fe=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Re=tinymce.util.Tools.resolve("tinymce.Env"),Le=tinymce.util.Tools.resolve("tinymce.util.Delay"),Ie="data-ephox-mobile-fullscreen-style",Pe="position:absolute!important;",He="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;",Ue=Re.os.isAndroid(),We=function(e,n){function r(t){return function(e){var n=O(e,"style"),r=n===undefined?"no-styles":n.trim();r!==t&&(E(e,Ie,r),E(e,"style",t))}}var t=function(e,n,r){return H(e,function(e){return F(e,n)},r)}(e,"*"),o=w(t,function(e){return U(e,"*:not(.tox-silver-sink)")}),i=function(e){var n=x(e,"background-color");return n!==undefined&&""!==n?"background-color:"+n+"!important":"background-color:rgb(255,255,255)!important;"}(n);g(o,r("display:none!important;")),g(t,r(Pe+He+i)),r((!0===Ue?"":Pe)+He+i)(e)},Be=function(){var e=function(e){return R(e)}("["+Ie+"]");g(e,function(e){var n=O(e,Ie);"no-styles"!==n?E(e,"style",n):N(e,"style"),N(e,Ie)})},Ve=Fe.DOM,je=l.window.visualViewport,qe=je===undefined?{bind:e,unbind:e}:(V=function(){var n=t(z.none());return{clear:function(){n.set(z.none())},set:function(e){n.set(z.some(e))},isSet:function(){return n.get().isSome()},on:function(e){n.get().each(e)}}}(),j=Le.throttle(function(){l.document.body.scrollTop=0,l.document.documentElement.scrollTop=0,l.window.requestAnimationFrame(function(){V.on(function(e){return T(e,{top:je.offsetTop+"px",left:je.offsetLeft+"px",height:je.height+"px",width:je.width+"px"})})})},50),{bind:function(e){V.set(e),j(),je.addEventListener("resize",j),je.addEventListener("scroll",j)},unbind:function(){V.on(function(){je.removeEventListener("scroll",j),je.removeEventListener("resize",j)}),V.clear()}}),ze=function(e,n){var r,t,o,i=l.document.body,u=l.document.documentElement;t=e.getContainer();var c=ne.fromDom(t),s=n.get(),f=ne.fromDom(e.getBody()),a=Re.deviceType.isTouch();if(r=t.style,o=e.getContentAreaContainer().firstChild.style,s)o.width=s.iframeWidth,o.height=s.iframeHeight,r.width=s.containerWidth,r.height=s.containerHeight,r.top=s.containerTop,r.left=s.containerLeft,a&&Be(),Ve.removeClass(i,"tox-fullscreen"),Ve.removeClass(u,"tox-fullscreen"),Ve.removeClass(t,"tox-fullscreen"),function(e){l.window.scrollTo(e.x,e.y)}(s.scrollPos),n.set(null),ke(e,!1),qe.unbind(),e.off("remove",qe.unbind);else{var d={scrollPos:function(){var e=P(l.window);return{x:e.x(),y:e.y()}}(),containerWidth:r.width,containerHeight:r.height,containerTop:r.top,containerLeft:r.left,iframeWidth:o.width,iframeHeight:o.height};a&&We(c,f),o.width=o.height="100%",r.width=r.height="",Ve.addClass(i,"tox-fullscreen"),Ve.addClass(u,"tox-fullscreen"),Ve.addClass(t,"tox-fullscreen"),qe.bind(c),e.on("remove",qe.unbind),n.set(d),ke(e,!0)}},Xe=function(e,n){e.addCommand("mceFullScreen",function(){ze(e,n)})},Ye=function(e,n){e.ui.registry.addToggleMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Meta+Shift+F",onAction:function(){return e.execCommand("mceFullScreen")},onSetup:W(e,n)}),e.ui.registry.addToggleButton("fullscreen",{tooltip:"Fullscreen",icon:"fullscreen",onAction:function(){return e.execCommand("mceFullScreen")},onSetup:W(e,n)})};!function Ge(){o.add("fullscreen",function(e){var n=t(null);return e.settings.inline||(Xe(e,n),Ye(e,n),e.addShortcut("Meta+Shift+F","","mceFullScreen")),i(n)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/help/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/help/plugin.min.js
deleted file mode 100644 (file)
index e8db914..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function e(){}function r(e){return function(){return e}}var a=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return a(t())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e,t){e.addCommand("mceHelp",t)},s=function(e,t){e.ui.registry.addButton("help",{icon:"help",tooltip:"Help",onAction:t}),e.ui.registry.addMenuItem("help",{text:"Help",icon:"help",shortcut:"Alt+0",onAction:t})},c=function(){return(c=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)};function l(o){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return o.apply(null,n)}}function n(){return m}var o,u=r(!1),h=r(!0),m=(o={fold:function(e,t){return e()},is:u,isSome:u,isNone:h,getOr:f,getOrThunk:d,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:r(null),getOrUndefined:r(undefined),or:f,orThunk:d,map:n,each:e,bind:n,exists:u,forall:h,filter:n,equals:p,equals_:p,toArray:function(){return[]},toString:r("none()")},Object.freeze&&Object.freeze(o),o);function p(e){return e.isNone()}function d(e){return e()}function f(e){return e}function g(e,t){return O.call(e,t)}function b(e,t){return-1<g(e,t)}function y(e,t){for(var n=e.length,o=new Array(n),a=0;a<n;a++){var r=e[a];o[a]=t(r,a)}return o}function k(e,o){return e.replace(/\$\{([^{}]*)\}/g,function(e,t){var n=o[t];return function(e){var t=typeof e;return"string"==t||"number"==t}(n)?n.toString():e})}function v(e){var t=F(e);return function(e,t){var n=g(e,t);return-1===n?x.none():x.some(n)}(t,"versions").each(function(e){t.splice(e,1),t.push("versions")}),{tabs:e,names:t}}function w(e,t){var n,o=H(),a=B(),r=D(e),i=L(),s=c(((n={})[o.name]=o,n[a.name]=a,n[r.name]=r,n[i.name]=i,n),t.get());return function(e){return x.from(e.getParam("help_tabs"))}(e).fold(function(){return v(s)},function(e){return function(e,t){var n={},o=y(e,function(e){return"string"==typeof e?(E(t,e)&&(n[e]=t[e]),e):(n[e.name]=e).name});return{tabs:n,names:o}}(e,s)})}function A(a,r){return function(){var e=w(a,r),t=e.tabs,n=e.names,o={type:"tabpanel",tabs:function(e){for(var t=[],n=function(e){t.push(e)},o=0;o<e.length;o++)e[o].each(n);return t}(y(n,function(e){return function(e,t){return E(e,t)?x.from(e[t]):x.none()}(t,e)}))};a.windowManager.open({title:"Help",size:"medium",body:o,buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{}})}}var C,T=function(n){function e(){return a}function t(e){return e(n)}var o=r(n),a={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:h,isNone:u,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:e,orThunk:e,map:function(e){return T(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?a:m},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(u,function(e){return t(n,e)})}};return a},x={some:T,none:n,from:function(e){return null===e||e===undefined?m:T(e)}},P=(C="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===C}),M=Array.prototype.slice,O=Array.prototype.indexOf,F=(P(Array.from)&&Array.from,Object.keys),S=Object.hasOwnProperty,E=function(e,t){return S.call(e,t)},I=[{shortcuts:["Meta + B"],action:"Bold"},{shortcuts:["Meta + I"],action:"Italic"},{shortcuts:["Meta + U"],action:"Underline"},{shortcuts:["Meta + A"],action:"Select all"},{shortcuts:["Meta + Y","Meta + Shift + Z"],action:"Redo"},{shortcuts:["Meta + Z"],action:"Undo"},{shortcuts:["Access + 1"],action:"Header 1"},{shortcuts:["Access + 2"],action:"Header 2"},{shortcuts:["Access + 3"],action:"Header 3"},{shortcuts:["Access + 4"],action:"Header 4"},{shortcuts:["Access + 5"],action:"Header 5"},{shortcuts:["Access + 6"],action:"Header 6"},{shortcuts:["Access + 7"],action:"Paragraph"},{shortcuts:["Access + 8"],action:"Div"},{shortcuts:["Access + 9"],action:"Address"},{shortcuts:["Alt + 0"],action:"Open help dialog"},{shortcuts:["Alt + F9"],action:"Focus to menubar"},{shortcuts:["Alt + F10"],action:"Focus to toolbar"},{shortcuts:["Alt + F11"],action:"Focus to element path"},{shortcuts:["Ctrl + F9"],action:"Focus to contextual toolbar"},{shortcuts:["Shift + Enter"],action:"Open popup menu for split buttons"},{shortcuts:["Meta + K"],action:"Insert link (if link plugin activated)"},{shortcuts:["Meta + S"],action:"Save (if save plugin activated)"},{shortcuts:["Meta + F"],action:"Find (if searchreplace plugin activated)"},{shortcuts:["Meta + Shift + F"],action:"Switch to or from fullscreen mode"}],_=tinymce.util.Tools.resolve("tinymce.Env"),j=function(e){var n=_.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl ",access:"Shift + Alt "},t=e.split("+"),o=y(t,function(e){var t=e.toLowerCase().trim();return E(n,t)?n[t]:e});return _.mac?o.join("").replace(/\s/,""):o.join("+")},H=function(){return{name:"shortcuts",title:"Handy Shortcuts",items:[{type:"table",header:["Action","Shortcut"],cells:y(I,function(e){var t=y(e.shortcuts,j).join(" or ");return[e.action,t]})}]}},U=tinymce.util.Tools.resolve("tinymce.util.I18n"),W=[{key:"advlist",name:"Advanced List"},{key:"anchor",name:"Anchor"},{key:"autolink",name:"Autolink"},{key:"autoresize",name:"Autoresize"},{key:"autosave",name:"Autosave"},{key:"bbcode",name:"BBCode"},{key:"charmap",name:"Character Map"},{key:"code",name:"Code"},{key:"codesample",name:"Code Sample"},{key:"colorpicker",name:"Color Picker"},{key:"directionality",name:"Directionality"},{key:"emoticons",name:"Emoticons"},{key:"fullpage",name:"Full Page"},{key:"fullscreen",name:"Full Screen"},{key:"help",name:"Help"},{key:"hr",name:"Horizontal Rule"},{key:"image",name:"Image"},{key:"imagetools",name:"Image Tools"},{key:"importcss",name:"Import CSS"},{key:"insertdatetime",name:"Insert Date/Time"},{key:"legacyoutput",name:"Legacy Output"},{key:"link",name:"Link"},{key:"lists",name:"Lists"},{key:"media",name:"Media"},{key:"nonbreaking",name:"Nonbreaking"},{key:"noneditable",name:"Noneditable"},{key:"pagebreak",name:"Page Break"},{key:"paste",name:"Paste"},{key:"preview",name:"Preview"},{key:"print",name:"Print"},{key:"save",name:"Save"},{key:"searchreplace",name:"Search and Replace"},{key:"spellchecker",name:"Spell Checker"},{key:"tabfocus",name:"Tab Focus"},{key:"table",name:"Table"},{key:"template",name:"Template"},{key:"textcolor",name:"Text Color"},{key:"textpattern",name:"Text Pattern"},{key:"toc",name:"Table of Contents"},{key:"visualblocks",name:"Visual Blocks"},{key:"visualchars",name:"Visual Characters"},{key:"wordcount",name:"Word Count"},{key:"advcode",name:"Advanced Code Editor*"},{key:"formatpainter",name:"Format Painter*"},{key:"powerpaste",name:"PowerPaste*"},{key:"tinydrive",name:"Tiny Drive*"},{key:"tinymcespellchecker",name:"Spell Checker Pro*"},{key:"a11ychecker",name:"Accessibility Checker*"},{key:"linkchecker",name:"Link Checker*"},{key:"mentions",name:"Mentions*"},{key:"mediaembed",name:"Enhanced Media Embed*"},{key:"checklist",name:"Checklist*"},{key:"casechange",name:"Case Change*"},{key:"permanentpen",name:"Permanent Pen*"},{key:"pageembed",name:"Page Embed*"},{key:"tinycomments",name:"Tiny Comments*"},{key:"advtable",name:"Advanced Tables*"},{key:"autocorrect",name:"Autocorrect*"}],D=function(e){function r(t,n){return function(e,t){for(var n=0,o=e.length;n<o;n++){var a=e[n];if(t(a,n))return x.some(a)}return x.none()}(W,function(e){return e.key===n}).fold(function(){var e=t.plugins[n].getMetadata;return"function"==typeof e?o(e()):n},function(e){return o({name:e.name,url:"https://www.tiny.cloud/docs/plugins/"+e.key})})}var t,n,o=l(k,'<a href="${url}" target="_blank" rel="noopener">${name}</a>');return{name:"plugins",title:"Plugins",items:[{type:"htmlpanel",presets:"document",html:[(n=e,null==n?"":'<div data-mce-tabstop="1" tabindex="-1">'+function(t){var e=function(e){var t=F(e.plugins);return e.settings.forced_plugins===undefined?t:function(e,t){for(var n=[],o=0,a=e.length;o<a;o++){var r=e[o];t(r,o)&&n.push(r)}return n}(t,function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}}(l(b,e.settings.forced_plugins)))}(t),n=y(e,function(e){return"<li>"+r(t,e)+"</li>"}),o=n.length,a=n.join("");return"<p><b>"+U.translate(["Plugins installed ({0}):",o])+"</b></p><ul>"+a+"</ul>"}(n)+"</div>"),(t=y(["Accessibility Checker","Advanced Code Editor","Advanced Tables","Case Change","Checklist","Tiny Comments","Tiny Drive","Enhanced Media Embed","Format Painter","Link Checker","Mentions","MoxieManager","Page Embed","Permanent Pen","PowerPaste","Spell Checker Pro"],function(e){return"<li>"+U.translate(e)+"</li>"}).join(""),'<div data-mce-tabstop="1" tabindex="-1"><p><b>'+U.translate("Premium plugins:")+"</b></p><ul>"+t+'<li style="list-style: none; margin-top: 1em;"><a href="https://www.tiny.cloud/pricing/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">'+U.translate("Learn more...")+"</a></li></ul></div>")].join("")}]}},N=tinymce.util.Tools.resolve("tinymce.EditorManager"),L=function(){var e,t,n='<a href="https://www.tinymce.com/docs/changelog/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">TinyMCE '+(e=N.majorVersion,t=N.minorVersion,0===e.indexOf("@")?"X.X.X":e+"."+t)+"</a>";return{name:"versions",title:"Version",items:[{type:"htmlpanel",html:"<p>"+U.translate(["You are using {0}",n])+"</p>",presets:"document"}]}},B=function(){return{name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:"<h1>Editor UI keyboard navigation</h1>\n\n<h2>Activating keyboard navigation</h2>\n\n<p>The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. As such, there are multiple ways to activate keyboard navigation:</p>\n<ul>\n  <li>Focus the menubar: Alt + F9 (Windows) or &#x2325;F9 (MacOS)</li>\n  <li>Focus the toolbar: Alt + F10 (Windows) or &#x2325;F10 (MacOS)</li>\n  <li>Focus the footer: Alt + F11 (Windows) or &#x2325;F11 (MacOS)</li>\n</ul>\n\n<p>Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline. </p>\n\n<h2>Moving between UI sections</h2>\n\n<p>When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:</p>\n<ul>\n  <li>the menubar</li>\n  <li>each group of the toolbar </li>\n  <li>the sidebar</li>\n  <li>the element path in the footer </li>\n  <li>the wordcount toggle button in the footer </li>\n  <li>the branding link in the footer </li>\n</ul>\n\n<p>Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.</p>\n\n<h2>Moving within UI sections</h2>\n\n<p>Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:</p>\n<ul>\n  <li>moving between menus in the menubar</li>\n  <li>moving between buttons in a toolbar group</li>\n  <li>moving between items in the element path</li>\n</ul>\n\n<p>In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group. </p>\n\n<h1>Executing buttons</h1>\n\n<p>To execute a button, navigate the selection to the desired button and hit space or enter.</p>\n\n<h1>Opening, navigating and closing menus</h1>\n\n<p>When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.</p>\n\n<p>To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.</p>\n\n<h1>Context toolbars and menus</h1>\n\n<p>To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or &#x2303;F9 (MacOS).</p>\n\n<p>Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.</p>\n\n<h1>Dialog navigation</h1>\n\n<p>There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.</p>\n\n<p>When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.</p>\n\n<p>When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab\u2019s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.</p>"}]}};!function z(){t.add("help",function(e){var t=a({}),n=function(n){return{addTab:function(e){var t=n.get();t[e.name]=e,n.set(t)}}}(t),o=A(e,t);return s(e,o),i(e,o),e.shortcuts.add("Alt+0","Open help dialog","mceHelp"),n})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/hr/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/hr/plugin.min.js
deleted file mode 100644 (file)
index 9024d43..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")})},t=function(n){n.ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}}),n.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}})};!function e(){n.add("hr",function(n){o(n),t(n)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/image/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/image/plugin.min.js
deleted file mode 100644 (file)
index bced264..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(s){"use strict";function o(){}function a(t){return function(){return t}}function t(t){return t}function e(){return l}var n,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=a(!1),c=a(!0),l=(n={fold:function(t,e){return t()},is:u,isSome:u,isNone:c,getOr:d,getOrThunk:f,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:d,orThunk:f,map:e,each:o,bind:e,exists:u,forall:c,filter:e,equals:i,equals_:i,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(n),n);function i(t){return t.isNone()}function f(t){return t()}function d(t){return t}function m(e){return function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"==e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===e}}function v(t){for(var e=[],n=0,r=t.length;n<r;++n){if(!U(t[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+t);S.apply(e,t[n])}return e}var p,g,h,y,b=function(n){function t(){return i}function e(t){return t(n)}var r=a(n),i={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:c,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return b(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?i:l},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(u,function(t){return e(n,t)})}};return i},w={some:b,none:e,from:function(t){return null===t||t===undefined?l:b(t)}},T=m("string"),_=m("object"),U=m("array"),x=m("boolean"),A=m("function"),I=Array.prototype.slice,S=Array.prototype.push,D=(A(Array.from)&&Array.from,function(){return(D=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)}),O={},C={exports:O};p=undefined,g=O,h=C,y=undefined,function(t){"object"==typeof g&&void 0!==h?h.exports=t():"function"==typeof p&&p.amd?p([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function s(o,a,u){function c(e,t){if(!a[e]){if(!o[e]){var n="function"==typeof y&&y;if(!t&&n)return n(e,!0);if(l)return l(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var i=a[e]={exports:{}};o[e][0].call(i.exports,function(t){return c(o[e][1][t]||t)},i,i.exports,s,o,a,u)}return a[e].exports}for(var l="function"==typeof y&&y,t=0;t<u.length;t++)c(u[t]);return c}({1:[function(t,e,n){var r,i,o=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function c(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(t){r=a}try{i="function"==typeof clearTimeout?clearTimeout:u}catch(t){i=u}}();var l,s=[],f=!1,d=-1;function m(){f&&l&&(f=!1,l.length?s=l.concat(s):d=-1,s.length&&p())}function p(){if(!f){var t=c(m);f=!0;for(var e=s.length;e;){for(l=s,s=[];++d<e;)l&&l[d].run();d=-1,e=s.length}l=null,f=!1,function n(t){if(i===clearTimeout)return clearTimeout(t);if((i===u||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{return i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function h(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];s.push(new g(t,e)),1!==s.length||f||c(p)},g.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=h,o.addListener=h,o.once=h,o.off=h,o.removeListener=h,o.removeAllListeners=h,o.emit=h,o.prependListener=h,o.prependOnceListener=h,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],2:[function(t,f,e){(function(e){function r(){}function o(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],s(t,this)}function i(r,i){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,o._immediateFn(function(){var t=1===r._state?i.onFulfilled:i.onRejected;if(null!==t){var e;try{e=t(r._value)}catch(n){return void u(i.promise,n)}a(i.promise,e)}else(1===r._state?a:u)(i.promise,r._value)})):r._deferreds.push(i)}function a(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof o)return t._state=3,t._value=e,void c(t);if("function"==typeof n)return void s(function r(t,e){return function(){t.apply(e,arguments)}}(n,e),t)}t._state=1,t._value=e,c(t)}catch(i){u(t,i)}}function u(t,e){t._state=2,t._value=e,c(t)}function c(t){2===t._state&&0===t._deferreds.length&&o._immediateFn(function(){t._handled||o._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)i(t,t._deferreds[e]);t._deferreds=null}function l(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function s(t,e){var n=!1;try{t(function(t){n||(n=!0,a(e,t))},function(t){n||(n=!0,u(e,t))})}catch(r){if(n)return;n=!0,u(e,r)}}var t,n;t=this,n=setTimeout,o.prototype["catch"]=function(t){return this.then(null,t)},o.prototype.then=function(t,e){var n=new this.constructor(r);return i(this,new l(t,e,n)),n},o.all=function(t){var c=Array.prototype.slice.call(t);return new o(function(i,o){if(0===c.length)return i([]);var a=c.length;function u(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){u(e,t)},o)}c[e]=t,0==--a&&i(c)}catch(r){o(r)}}for(var t=0;t<c.length;t++)u(t,c[t])})},o.resolve=function(e){return e&&"object"==typeof e&&e.constructor===o?e:new o(function(t){t(e)})},o.reject=function(n){return new o(function(t,e){e(n)})},o.race=function(i){return new o(function(t,e){for(var n=0,r=i.length;n<r;n++)i[n].then(t,e)})},o._immediateFn="function"==typeof e?function(t){e(t)}:function(t){n(t,0)},o._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},o._setImmediateFn=function(t){o._immediateFn=t},o._setUnhandledRejectionFn=function(t){o._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=o:t.Promise||(t.Promise=o)}).call(this,t("timers").setImmediate)},{timers:3}],3:[function(c,t,l){(function(t,e){var r=c("process/browser.js").nextTick,n=Function.prototype.apply,i=Array.prototype.slice,o={},a=0;function u(t,e){this._id=t,this._clearFn=e}l.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},l.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},l.clearTimeout=l.clearInterval=function(t){t.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},l.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},l.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},l._unrefActive=l.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},l.setImmediate="function"==typeof t?t:function(t){var e=a++,n=!(arguments.length<2)&&i.call(arguments,1);return o[e]=!0,r(function(){o[e]&&(n?t.apply(null,n):t.call(null),l.clearImmediate(e))}),e},l.clearImmediate="function"==typeof e?e:function(t){delete o[t]}}).call(this,c("timers").setImmediate,c("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,e,n){var r=t("promise-polyfill"),i="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:i.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function P(t){s.setTimeout(function(){throw t},0)}function E(t){return vt(mt(t))}function L(a){return function(){for(var t=new Array(arguments.length),e=0;e<t.length;e++)t[e]=arguments[e];if(0===t.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<t.length;r++){var i=t[r];for(var o in i)wt.call(i,o)&&(n[o]=a(n[o],i[o]))}return n}}function N(t){var e=t.imageList.map(function(t){return{name:"images",type:"selectbox",label:"Image list",items:t}}),n=t.classList.map(function(t){return{name:"classes",type:"selectbox",label:"Class",items:t}});return v([[{name:"src",type:"urlinput",filetype:"image",label:"Source"}],e.toArray(),t.hasDescription?[{name:"alt",type:"input",label:"Image description"}]:[],t.hasImageTitle?[{name:"title",type:"input",label:"Image title"}]:[],t.hasDimensions?[{name:"dimensions",type:"sizeinput"}]:[],[{type:"grid",columns:2,items:v([n.toArray(),t.hasImageCaption?[{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[]])}]])}function j(t,e){return Math.max(parseInt(t,10),parseInt(e,10))}function R(t){return t.style.marginLeft&&t.style.marginRight&&t.style.marginLeft===t.style.marginRight?Et(t.style.marginLeft):""}function F(t){return t.style.marginTop&&t.style.marginBottom&&t.style.marginTop===t.style.marginBottom?Et(t.style.marginTop):""}function k(t){return t.style.borderWidth?Et(t.style.borderWidth):""}function z(t,e){return t.hasAttribute(e)?t.getAttribute(e):""}function M(t,e){return t.style[e]?t.style[e]:""}function H(t){return null!==t.parentNode&&"FIGURE"===t.parentNode.nodeName}function B(t,e,n){t.setAttribute(e,n)}function G(t){H(t)?function(t){var e=t.parentNode;zt.insertAfter(t,e),zt.remove(e)}(t):function(t){var e=zt.create("figure",{"class":"image"});zt.insertAfter(e,t),e.appendChild(t),e.appendChild(zt.create("figcaption",{contentEditable:"true"},"Caption")),e.contentEditable="false"}(t)}function W(t,e){var n=t.getAttribute("style"),r=e(null!==n?n:"");0<r.length?(t.setAttribute("style",r),t.setAttribute("data-mce-style",r)):t.removeAttribute("style")}function q(t,r){return function(t,e,n){t.style[e]?(t.style[e]=Lt(n),W(t,r)):B(t,e,n)}}function $(t,e){return t.style[e]?Et(t.style[e]):z(t,e)}function J(t,e){var n=Lt(e);t.style.marginLeft=n,t.style.marginRight=n}function V(t,e){var n=Lt(e);t.style.marginTop=n,t.style.marginBottom=n}function X(t,e){var n=Lt(e);t.style.borderWidth=n}function Z(t,e){t.style.borderStyle=e}function K(t){return"FIGURE"===t.nodeName}function Q(t,e){var n=s.document.createElement("img");return B(n,"style",e.style),!R(n)&&""===e.hspace||J(n,e.hspace),!F(n)&&""===e.vspace||V(n,e.vspace),!k(n)&&""===e.border||X(n,e.border),!function(t){return M(t,"borderStyle")}(n)&&""===e.borderStyle||Z(n,e.borderStyle),t(n.getAttribute("style"))}function Y(t,e){return{src:z(e,"src"),alt:z(e,"alt"),title:z(e,"title"),width:$(e,"width"),height:$(e,"height"),"class":z(e,"class"),style:t(z(e,"style")),caption:H(e),hspace:R(e),vspace:F(e),border:k(e),borderStyle:M(e,"borderStyle")}}function tt(t,e,n,r,i){n[r]!==e[r]&&i(t,r,n[r])}function et(r,i){return function(t,e,n){r(t,n),W(t,i)}}function nt(t,e){var n=t.dom.styles.parse(e),r=Nt(n),i=t.dom.styles.parse(t.dom.styles.serialize(r));return t.dom.styles.serialize(i)}function rt(t){var e=t.selection.getNode(),n=t.dom.getParent(e,"figure.image");return n?t.dom.select("img",n)[0]:e&&("IMG"!==e.nodeName||kt(e))?null:e}function it(e,t){var n=e.dom,r=n.getParent(t.parentNode,function(t){return e.schema.getTextBlockElements()[t.nodeName]},e.getBody());return r?n.split(r,t):t}function ot(e,t){var n=function(t,e){var n=s.document.createElement("img");if(Mt(t,_t(e,{caption:!1}),n),B(n,"alt",e.alt),e.caption){var r=zt.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(zt.create("figcaption",{contentEditable:"true"},"Caption")),r.contentEditable="false",r}return n}(function(t){return nt(e,t)},t);e.dom.setAttrib(n,"data-mce-id","__mcenew"),e.focus(),e.selection.setContent(n.outerHTML);var r=e.dom.select('*[data-mce-id="__mcenew"]')[0];if(e.dom.setAttrib(r,"data-mce-id",null),K(r)){var i=it(e,r);e.selection.select(i)}else e.selection.select(r)}function at(t,e){var n=rt(t);n?e.src?function(e,t){var n=rt(e);if(Mt(function(t){return nt(e,t)},t,n),function(t,e){t.dom.setAttrib(e,"src",e.getAttribute("src"))}(e,n),K(n.parentNode)){var r=n.parentNode;it(e,r),e.selection.select(n.parentNode)}else e.selection.select(n),Rt(e,t,n)}(t,e):function(t,e){if(e){var n=t.dom.is(e.parentNode,"figure.image")?e.parentNode:e;t.dom.remove(n),t.focus(),t.nodeChanged(),t.dom.isEmpty(t.getBody())&&(t.setContent(""),t.selection.setCursorLocation())}}(t,n):e.src&&ot(t,e)}function ut(t){return T(t.value)?t.value:""}function ct(e){return void 0===e&&(e=ut),function(t){return t?w.from(t).map(function(t){return Bt(t,e)}):w.none()}}var lt=C.exports.boltExport,st=function(t){var n=w.none(),e=[],r=function(t){i()?a(t):e.push(t)},i=function(){return n.isSome()},o=function(t){!function(t,e){for(var n=0,r=t.length;n<r;n++){e(t[n],n)}}(t,a)},a=function(e){n.each(function(t){s.setTimeout(function(){e(t)},0)})};return t(function(t){n=w.some(t),o(e),e=[]}),{get:r,map:function(n){return st(function(e){r(function(t){e(n(t))})})},isReady:i}},ft={nu:st,pure:function(e){return st(function(t){t(e)})}},dt=function(n){function t(t){n().then(t,P)}return{map:function(t){return dt(function(){return n().then(t)})},bind:function(e){return dt(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return dt(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return ft.nu(t)},toCached:function(){var t=null;return dt(function(){return null===t&&(t=n()),t})},toPromise:n,get:t}},mt=function(t){return dt(function(){return new lt(t)})},pt=function(t){return dt(function(){return lt.resolve(t)})},gt=function(n){return{is:function(t){return n===t},isValue:c,isError:u,getOr:a(n),getOrThunk:a(n),getOrDie:a(n),or:function(t){return gt(n)},orThunk:function(t){return gt(n)},fold:function(t,e){return e(n)},map:function(t){return gt(t(n))},mapError:function(t){return gt(n)},each:function(t){t(n)},bind:function(t){return t(n)},exists:function(t){return t(n)},forall:function(t){return t(n)},toOption:function(){return w.some(n)}}},ht=function(n){return{is:u,isValue:u,isError:c,getOr:t,getOrThunk:function(t){return t()},getOrDie:function(){return function(t){return function(){throw new Error(t)}}(String(n))()},or:function(t){return t},orThunk:function(t){return t()},fold:function(t,e){return t(n)},map:function(t){return ht(n)},mapError:function(t){return ht(t(n))},each:o,bind:function(t){return ht(n)},exists:u,forall:c,toOption:w.none}},yt={value:gt,error:ht,fromOption:function(t,e){return t.fold(function(){return ht(e)},gt)}},vt=function(o){return D(D({},o),{toCached:function(){return vt(o.toCached())},bindFuture:function(e){return vt(o.bind(function(t){return t.fold(function(t){return pt(yt.error(t))},function(t){return e(t)})}))},bindResult:function(e){return vt(o.map(function(t){return t.bind(e)}))},mapResult:function(e){return vt(o.map(function(t){return t.map(e)}))},mapError:function(e){return vt(o.map(function(t){return t.mapError(e)}))},foldResult:function(e,n){return o.map(function(t){return t.fold(e,n)})},withTimeout:function(t,i){return vt(mt(function(e){var n=!1,r=s.setTimeout(function(){n=!0,e(yt.error(i()))},t);o.get(function(t){n||(s.clearTimeout(r),e(t))})}))}})},bt=E,wt=Object.prototype.hasOwnProperty,Tt=L(function(t,e){return _(t)&&_(e)?Tt(t,e):e}),_t=L(function(t,e){return e}),Ut=function(t){return{title:"General",name:"general",items:N(t)}},xt=N,At=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),It=tinymce.util.Tools.resolve("tinymce.util.Promise"),St=tinymce.util.Tools.resolve("tinymce.util.XHR"),Dt=function(t){return t.getParam("images_upload_url","","string")},Ot=function(t){return t.getParam("images_upload_handler",undefined,"function")},Ct={hasDimensions:function(t){return t.getParam("image_dimensions",!0,"boolean")},hasUploadTab:function(t){return t.getParam("image_uploadtab",!0,"boolean")},hasAdvTab:function(t){return t.getParam("image_advtab",!1,"boolean")},getPrependUrl:function(t){return t.getParam("image_prepend_url","","string")},getClassList:function(t){return t.getParam("image_class_list")},hasDescription:function(t){return t.getParam("image_description",!0,"boolean")},hasImageTitle:function(t){return t.getParam("image_title",!1,"boolean")},hasImageCaption:function(t){return t.getParam("image_caption",!1,"boolean")},getImageList:function(t){return t.getParam("image_list",!1)},hasUploadUrl:function(t){return!!Dt(t)},hasUploadHandler:function(t){return!!Ot(t)},getUploadUrl:Dt,getUploadHandler:Ot,getUploadBasePath:function(t){return t.getParam("images_upload_base_path",undefined,"string")},getUploadCredentials:function(t){return t.getParam("images_upload_credentials",!1,"boolean")}},Pt=function(t,e){function n(t){r.parentNode&&r.parentNode.removeChild(r),e(t)}var r=s.document.createElement("img");r.onload=function(){var t={width:j(r.width,r.clientWidth),height:j(r.height,r.clientHeight)};n(yt.value(t))},r.onerror=function(){n(yt.error("Failed to get image dimensions for: "+t))};var i=r.style;i.visibility="hidden",i.position="fixed",i.bottom=i.left="0px",i.width=i.height="auto",s.document.body.appendChild(r),r.src=t},Et=function(t){return t=t&&t.replace(/px$/,"")},Lt=function(t){return 0<t.length&&/^[0-9]+$/.test(t)&&(t+="px"),t},Nt=function(t){if(t.margin){var e=String(t.margin).split(" ");switch(e.length){case 1:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[0],t["margin-bottom"]=t["margin-bottom"]||e[0],t["margin-left"]=t["margin-left"]||e[0];break;case 2:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[1],t["margin-bottom"]=t["margin-bottom"]||e[0],t["margin-left"]=t["margin-left"]||e[1];break;case 3:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[1],t["margin-bottom"]=t["margin-bottom"]||e[2],t["margin-left"]=t["margin-left"]||e[1];break;case 4:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[1],t["margin-bottom"]=t["margin-bottom"]||e[2],t["margin-left"]=t["margin-left"]||e[3]}delete t.margin}return t},jt=function(t,e){var n=Ct.getImageList(t);"string"==typeof n?St.send({url:n,success:function(t){e(JSON.parse(t))}}):"function"==typeof n?n(e):e(n)},Rt=function(t,e,n){function r(){n.onload=n.onerror=null,t.selection&&(t.selection.select(n),t.nodeChanged())}n.onload=function(){e.width||e.height||!Ct.hasDimensions(t)||t.dom.setAttribs(n,{width:String(n.clientWidth),height:String(n.clientHeight)}),r()},n.onerror=r},Ft=function(r){return new It(function(t,e){var n=new s.FileReader;n.onload=function(){t(n.result)},n.onerror=function(){e(n.error.message)},n.readAsDataURL(r)})},kt=function(t){return"IMG"===t.nodeName&&(t.hasAttribute("data-mce-object")||t.hasAttribute("data-mce-placeholder"))},zt=At.DOM,Mt=function(t,e,n){var r=Y(t,n);tt(n,r,e,"caption",function(t,e,n){return G(t)}),tt(n,r,e,"src",B),tt(n,r,e,"alt",B),tt(n,r,e,"title",B),tt(n,r,e,"width",q(0,t)),tt(n,r,e,"height",q(0,t)),tt(n,r,e,"class",B),tt(n,r,e,"style",et(function(t,e){return B(t,"style",e)},t)),tt(n,r,e,"hspace",et(J,t)),tt(n,r,e,"vspace",et(V,t)),tt(n,r,e,"border",et(X,t)),tt(n,r,e,"borderStyle",et(Z,t))},Ht=tinymce.util.Tools.resolve("tinymce.util.Tools"),Bt=function(t,i){var o=[];return Ht.each(t,function(t){var e=T(t.text)?t.text:T(t.title)?t.title:"";if(t.menu!==undefined){var n=Bt(t.menu,i);o.push({text:e,items:n})}else{var r=i(t);o.push({text:e,value:r})}}),o},Gt=function(t,e){return function(t,e){for(var n=0;n<t.length;n++){var r=e(t[n],n);if(r.isSome())return r}return w.none()}(t,function(t){return function(t){return Object.prototype.hasOwnProperty.call(t,"items")}(t)?Gt(t.items,e):t.value===e?w.some(t):w.none()})},Wt=ct,qt=function(t){return ct(ut)(t)},$t=function(t,e){return t.bind(function(t){return Gt(t,e)})};function Jt(a){function e(t,e,n,r){var i,o;(i=new s.XMLHttpRequest).open("POST",a.url),i.withCredentials=a.credentials,i.upload.onprogress=function(t){r(t.loaded/t.total*100)},i.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var t;i.status<200||300<=i.status?n("HTTP Error: "+i.status):(t=JSON.parse(i.responseText))&&"string"==typeof t.location?e(function(t,e){return t?t.replace(/\/$/,"")+"/"+e.replace(/^\//,""):e}(a.basePath,t.location)):n("Invalid JSON: "+i.responseText)},(o=new s.FormData).append("file",t.blob(),t.filename()),i.send(o)}return a=Ht.extend({credentials:!1,handler:e},a),{upload:function(t){return!a.url&&function(t){return t===e}(a.handler)?It.reject("Upload url missing from the settings."):function(r,i){return new It(function(t,e){try{i(r,t,e,o)}catch(n){e(n.message)}})}(t,a.handler)}}}function Vt(n){var r=Wt(function(t){return n.convertURL(t.value||t.url,"src")}),t=mt(function(e){jt(n,function(t){e(r(t).map(function(t){return v([[{text:"None",value:""}],t])}))})}),e=qt(Ct.getClassList(n)),i=Ct.hasAdvTab(n),o=Ct.hasUploadTab(n),a=Ct.hasUploadUrl(n),u=Ct.hasUploadHandler(n),c=function(e){var t=rt(e);return t?Y(function(t){return nt(e,t)},t):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}}(n),l=Ct.hasDescription(n),s=Ct.hasImageTitle(n),f=Ct.hasDimensions(n),d=Ct.hasImageCaption(n),m=Ct.getUploadUrl(n),p=Ct.getUploadBasePath(n),g=Ct.getUploadCredentials(n),h=Ct.getUploadHandler(n),y=w.some(Ct.getPrependUrl(n)).filter(function(t){return T(t)&&0<t.length});return t.map(function(t){return{image:c,imageList:t,classList:e,hasAdvTab:i,hasUploadTab:o,hasUploadUrl:a,hasUploadHandler:u,hasDescription:l,hasImageTitle:s,hasDimensions:f,hasImageCaption:d,url:m,basePath:p,credentials:g,handler:h,prependURL:y}})}function Xt(t){return{src:{value:t.src,meta:{}},images:t.src,alt:t.alt,title:t.title,dimensions:{width:t.width,height:t.height},classes:t["class"],caption:t.caption,style:t.style,vspace:t.vspace,border:t.border,hspace:t.hspace,borderstyle:t.borderStyle,fileinput:[]}}function Zt(t){return{src:t.src.value,alt:t.alt,title:t.title,width:t.dimensions.width,height:t.dimensions.height,"class":t.classes,style:t.style,caption:t.caption,hspace:t.hspace,vspace:t.vspace,border:t.border,borderStyle:t.borderstyle}}function Kt(t,e){var n=e.getData();(function(t,e){return/^(?:[a-zA-Z]+:)?\/\//.test(e)?w.none():t.prependURL.bind(function(t){return e.substring(0,t.length)!==t?w.some(t+e):w.none()})})(t,n.src.value).each(function(t){e.setData({src:{value:t,meta:n.src.meta}})})}function Qt(t,e){var n=e.getData(),r=n.src.meta;if(r!==undefined){var i=Tt({},n);!function(t,e,n){t.hasDescription&&T(n.alt)&&(e.alt=n.alt),t.hasImageTitle&&T(n.title)&&(e.title=n.title),t.hasDimensions&&(T(n.width)&&(e.dimensions.width=n.width),T(n.height)&&(e.dimensions.height=n.height)),T(n["class"])&&$t(t.classList,n["class"]).each(function(t){e.classes=t.value}),t.hasImageCaption&&x(n.caption)&&(e.caption=n.caption),t.hasAdvTab&&(T(n.vspace)&&(e.vspace=n.vspace),T(n.border)&&(e.border=n.border),T(n.hspace)&&(e.hspace=n.hspace),T(n.borderstyle)&&(e.borderstyle=n.borderstyle))}(t,i,r),e.setData(i)}}function Yt(t,e,n,r){Kt(e,r),Qt(e,r),function(t,e,n,r){var i=r.getData(),o=i.src.value,a=i.src.meta||{};a.width||a.height||!e.hasDimensions||t.imageSize(o).get(function(t){t.each(function(t){n.open&&r.setData({dimensions:t})})})}(t,e,n,r),function(t,e,n){var r=n.getData(),i=$t(t.imageList,r.src.value);e.prevImage=i,n.setData({images:i.map(function(t){return t.value}).getOr("")})}(e,n,r)}function te(t,e,n){var r=Nt(t(n.style)),i=Tt({},n);return i.vspace=function(t){return t["margin-top"]&&t["margin-bottom"]&&t["margin-top"]===t["margin-bottom"]?Et(String(t["margin-top"])):""}(r),i.hspace=function(t){return t["margin-right"]&&t["margin-left"]&&t["margin-right"]===t["margin-left"]?Et(String(t["margin-right"])):""}(r),i.border=function(t){return t["border-width"]?Et(String(t["border-width"])):""}(r),i.borderstyle=function(t){return t["border-style"]?String(t["border-style"]):""}(r),i.style=function(t,e,n){return e(t(e(n)))}(t,e,r),i}function ee(a,u,c,l){var t=l.getData();l.block("Uploading image"),function(t){return 0===t.length?w.none():w.some(t[0])}(t.fileinput).fold(function(){l.unblock()},function(n){function r(){l.unblock(),s.URL.revokeObjectURL(i)}var i=s.URL.createObjectURL(n),o=Jt({url:u.url,basePath:u.basePath,credentials:u.credentials,handler:u.handler});Ft(n).then(function(t){var e=a.createBlobCache(n,i,t);o.upload(e).then(function(t){l.setData({src:{value:t,meta:{}}}),l.showTab("general"),Yt(a,u,c,l),r()})["catch"](function(t){r(),a.alertErr(l,t)})})})}function ne(n,r,i){return function(t,e){"src"===e.name?Yt(n,r,i,t):"images"===e.name?function(t,e,n,r){var i=r.getData(),o=$t(e.imageList,i.images);o.each(function(t){""===i.alt||n.prevImage.map(function(t){return t.text===i.alt}).getOr(!1)?""===t.value?r.setData({src:t,alt:n.prevAlt}):r.setData({src:t,alt:t.text}):r.setData({src:t})}),n.prevImage=o,Yt(t,e,n,r)}(n,r,i,t):"alt"===e.name?i.prevAlt=t.getData().alt:"style"===e.name?function(t,e){var n=e.getData(),r=te(t.parseStyle,t.serializeStyle,n);e.setData(r)}(n,t):"vspace"===e.name||"hspace"===e.name||"border"===e.name||"borderstyle"===e.name?function(t,e,n){var r=Tt(Xt(e.image),n.getData()),i=Q(t.normalizeCss,Zt(r));n.setData({style:i})}(n,r,t):"fileinput"===e.name&&ee(n,r,i,t)}}function re(n){return function(t){var e=function(t){return{prevImage:$t(t.imageList,t.image.src),prevAlt:t.image.alt,open:!0}}(t);return{title:"Insert/Edit Image",size:"normal",body:function(t){return t.hasAdvTab||t.hasUploadUrl||t.hasUploadHandler?{type:"tabpanel",tabs:v([[Ut(t)],t.hasAdvTab?[ae(t)]:[],t.hasUploadTab&&(t.hasUploadUrl||t.hasUploadHandler)?[ue(t)]:[]])}:{type:"panel",items:xt(t)}}(t),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:Xt(t.image),onSubmit:n.onSubmit(t),onChange:ne(n,t,e),onClose:function(t){return function(){t.open=!1}}(e)}}}function ie(e){var t={onSubmit:function(r){return function(n){return function(t){var e=Tt(Xt(n.image),t.getData());r.undoManager.transact(function(){at(r,Zt(e))}),r.editorUpload.uploadImagesAuto(),t.close()}}}(e),imageSize:function(e){return function(t){return bt(function(n){Pt(e.documentBaseURI.toAbsolute(t),function(t){var e=t.map(function(t){return{width:String(t.width),height:String(t.height)}});n(e)})})}}(e),createBlobCache:function(r){return function(t,e,n){return r.editorUpload.blobCache.create({blob:t,blobUri:e,name:t.name?t.name.replace(/\.[^\.]+$/,""):null,base64:n.split(",")[1]})}}(e),alertErr:function(n){return function(t,e){n.windowManager.alert(e,t.close)}}(e),normalizeCss:function(e){return function(t){return nt(e,t)}}(e),parseStyle:function(e){return function(t){return e.dom.parseStyle(t)}}(e),serializeStyle:function(n){return function(t,e){return n.dom.serializeStyle(t,e)}}(e)};return{open:function(){return Vt(e).map(re(t)).get(function(t){e.windowManager.open(t)})}}}function oe(o){return function(t){for(var e,n=t.length,r=function(t){t.attr("contenteditable",o?"true":null)};n--;){var i=t[n];void 0,(e=i.attr("class"))&&/\bimage\b/.test(e)&&(i.attr("contenteditable",o?"false":null),Ht.each(i.getAll("figcaption"),r))}}}var ae=function(t){return{title:"Advanced",name:"advanced",items:[{type:"input",label:"Style",name:"style"},{type:"grid",columns:2,items:[{type:"input",label:"Vertical space",name:"vspace",inputMode:"numeric"},{type:"input",label:"Horizontal space",name:"hspace",inputMode:"numeric"},{type:"input",label:"Border width",name:"border",inputMode:"numeric"},{type:"selectbox",name:"borderstyle",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]}},ue=function(t){return{title:"Upload",name:"upload",items:[{type:"dropzone",name:"fileinput"}]}},ce=function(t){t.addCommand("mceImage",ie(t).open)},le=function(t){t.on("PreInit",function(){t.parser.addNodeFilter("figure",oe(!0)),t.serializer.addNodeFilter("figure",oe(!1))})},se=function(e){e.ui.registry.addToggleButton("image",{icon:"image",tooltip:"Insert/edit image",onAction:ie(e).open,onSetup:function(t){return e.selection.selectorChangedWithUnbind("img:not([data-mce-object],[data-mce-placeholder]),figure.image",t.setActive).unbind}}),e.ui.registry.addMenuItem("image",{icon:"image",text:"Image...",onAction:ie(e).open}),e.ui.registry.addContextMenu("image",{update:function(t){return K(t)||function(t){return"IMG"===t.nodeName}(t)&&!kt(t)?["image"]:[]}})};!function fe(){r.add("image",function(t){le(t),se(t),ce(t)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/imagetools/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/imagetools/plugin.min.js
deleted file mode 100644 (file)
index 7624dac..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(v){"use strict";function e(){}function n(){return c}var t,r=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return r(n())}}},o=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(e){return function(){return e}},u=d(!1),a=d(!0),c=(t={fold:function(e,n){return e()},is:u,isSome:u,isNone:a,getOr:l,getOrThunk:f,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:d(null),getOrUndefined:d(undefined),or:l,orThunk:f,map:n,each:e,bind:n,exists:u,forall:a,filter:n,equals:s,equals_:s,toArray:function(){return[]},toString:d("none()")},Object.freeze&&Object.freeze(t),t);function s(e){return e.isNone()}function f(e){return e()}function l(e){return e}var m=function(t){function e(){return o}function n(e){return e(t)}var r=d(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:a,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return m(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:c},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(u,function(e){return n(t,e)})}};return o},p={some:m,none:n,from:function(e){return null===e||e===undefined?c:m(e)}};function h(e,n){return y(v.document.createElement("canvas"),e,n)}function g(e){var n=h(e.width,e.height);return w(n).drawImage(e,0,0),n}function w(e){return e.getContext("2d")}function y(e,n,t){return e.width=n,e.height=t,e}var b,E,O=window.Promise?window.Promise:(b=T.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(e){v.setTimeout(e,1)},E=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},T.prototype["catch"]=function(e){return this.then(null,e)},T.prototype.then=function(t,r){var o=this;return new T(function(e,n){N.call(o,new R(t,r,e,n))})},T.all=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var c=Array.prototype.slice.call(1===e.length&&E(e[0])?e[0]:e);return new T(function(o,i){if(0===c.length)return o([]);var u=c.length;function a(n,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void t.call(e,function(e){a(n,e)},i)}c[n]=e,0==--u&&o(c)}catch(r){i(r)}}for(var e=0;e<c.length;e++)a(e,c[e])})},T.resolve=function(n){return n&&"object"==typeof n&&n.constructor===T?n:new T(function(e){e(n)})},T.reject=function(t){return new T(function(e,n){n(t)})},T.race=function(o){return new T(function(e,n){for(var t=0,r=o;t<r.length;t++)r[t].then(e,n)})},T);function T(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],A(e,I(S,this),I(_,this))}function I(e,n){return function(){return e.apply(n,arguments)}}function N(r){var o=this;null!==this._state?b(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var n;try{n=e(o._value)}catch(t){return void r.reject(t)}r.resolve(n)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function S(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void A(I(n,e),I(S,this),I(_,this))}this._state=!0,this._value=e,x.call(this)}catch(t){_.call(this,t)}}function _(e){this._state=!1,this._value=e,x.call(this)}function x(){for(var e=0,n=this._deferreds;e<n.length;e++){var t=n[e];N.call(this,t)}this._deferreds=[]}function R(e,n,t,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof n?n:null,this.resolve=t,this.reject=r}function A(e,n,t){var r=!1;try{e(function(e){r||(r=!0,n(e))},function(e){r||(r=!0,t(e))})}catch(o){if(r)return;r=!0,t(o)}}function C(e){var n=e.src;return 0===n.indexOf("data:")?U(n):function t(r){return new O(function(e,t){var n=new v.XMLHttpRequest;n.open("GET",r,!0),n.responseType="blob",n.onload=function(){200===this.status&&e(this.response)},n.onerror=function(){var e,n=this;t(0===this.status?((e=new Error("No access to download image")).code=18,e.name="SecurityError",e):new Error("Error "+n.status+" downloading image"))},n.send()})}(n)}function D(a){return new O(function(e,n){var t=v.URL.createObjectURL(a),r=new v.Image,o=function(){r.removeEventListener("load",i),r.removeEventListener("error",u)};function i(){o(),e(r)}function u(){o(),n("Unable to load data of type "+a.type+": "+t)}r.addEventListener("load",i),r.addEventListener("error",u),r.src=t,r.complete&&i()})}function U(t){return new O(function(e,n){(function g(e){var n=e.split(","),t=/data:([^;]+)/.exec(n[0]);if(!t)return p.none();for(var r=t[1],o=n[1],i=v.atob(o),u=i.length,a=Math.ceil(u/1024),c=new Array(a),s=0;s<a;++s){for(var f=1024*s,l=Math.min(1024+f,u),d=new Array(l-f),m=f,h=0;m<l;++h,++m)d[h]=i[m].charCodeAt(0);c[s]=new Uint8Array(d)}return p.some(new v.Blob(c,{type:r}))})(t).fold(function(){n("uri is not base64: "+t)},e)})}function L(e,r,o){return r=r||"image/png",v.HTMLCanvasElement.prototype.toBlob?new O(function(n,t){e.toBlob(function(e){e?n(e):t()},r,o)}):U(e.toDataURL(r,o))}function k(e){return D(e).then(function(e){!function t(e){v.URL.revokeObjectURL(e.src)}(e);var n=h(function r(e){return e.naturalWidth||e.width}(e),function o(e){return e.naturalHeight||e.height}(e));return w(n).drawImage(e,0,0),n})}function j(e,n,t){var r=n.type;function o(n,t){return e.then(function(e){return function r(e,n,t){return n=n||"image/png",e.toDataURL(n,t)}(e,n,t)})}return{getType:d(r),toBlob:function i(){return O.resolve(n)},toDataURL:function u(){return t},toBase64:function a(){return t.split(",")[1]},toAdjustedBlob:function c(n,t){return e.then(function(e){return L(e,n,t)})},toAdjustedDataURL:o,toAdjustedBase64:function s(e,n){return o(e,n).then(function(e){return e.split(",")[1]})},toCanvas:function f(){return e.then(g)}}}function P(n){return function e(t){return new O(function(e){var n=new v.FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}(n).then(function(e){return j(k(n),n,e)})}function M(n,e){return L(n,e).then(function(e){return j(O.resolve(n),e,n.toDataURL())})}function B(n,t){return n.toCanvas().then(function(e){return function a(e,n,t){var r=h(e.width,e.height),o=w(r),i=0,u=0;90!==(t=t<0?360+t:t)&&270!==t||y(r,r.height,r.width);90!==t&&180!==t||(i=r.width);270!==t&&180!==t||(u=r.height);return o.translate(i,u),o.rotate(t*Math.PI/180),o.drawImage(e,0,0),M(r,n)}(e,n.getType(),t)})}function F(n,t){return n.toCanvas().then(function(e){return function i(e,n,t){var r=h(e.width,e.height),o=w(r);"v"===t?(o.scale(1,-1),o.drawImage(e,0,-r.height)):(o.scale(-1,1),o.drawImage(e,-r.width,0));return M(r,n)}(e,n.getType(),t)})}function z(e){return P(e)}var H=tinymce.util.Tools.resolve("tinymce.util.Delay"),q=tinymce.util.Tools.resolve("tinymce.util.Promise"),$=tinymce.util.Tools.resolve("tinymce.util.URI");function X(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return p.some(o)}return p.none()}function W(e){return null!==e&&e!==undefined}function G(n){return"ImageProxy HTTP error: "+X(ue,function(e){return n===e.code}).fold(d("Unknown ImageProxy error"),function(e){return e.message})}function Y(e){var n=G(e);return q.reject(n)}function V(n){return X(ae,function(e){return e.type===n}).fold(d("Unknown service error"),function(e){return e.message})}function J(e,n){return re(n).then(function(e){var n=function(e){var n=ie(e),t=te(n,["error","type"]);return"ImageProxy Service error: "+(t?V(t):"Invalid JSON in service error message")}(e);return q.reject(n)})}function K(e,n){var t={"Content-Type":"application/json;charset=UTF-8","tiny-api-key":n};return oe(function(e,n){var t=-1===e.indexOf("?")?"?":"&";return/[?&]apiKey=/.test(e)||!n?e:e+t+"apiKey="+encodeURIComponent(n)}(e,n),t,!1).then(function(e){return e.status<200||300<=e.status?ce(e.status,e.blob):q.resolve(e.blob)})}var Q,Z={getImageSize:function wn(e){var n,t;function r(e){return/^[0-9\.]+px$/.test(e)}return n=e.style.width,t=e.style.height,n||t?r(n)&&r(t)?{w:parseInt(n,10),h:parseInt(t,10)}:null:(n=e.width,t=e.height,n&&t?{w:parseInt(n,10),h:parseInt(t,10)}:null)},setImageSize:function yn(e,n){var t,r;n&&(t=e.style.width,r=e.style.height,(t||r)&&(e.style.width=n.w+"px",e.style.height=n.h+"px",e.removeAttribute("data-mce-style")),t=e.width,r=e.height,(t||r)&&(e.setAttribute("width",n.w),e.setAttribute("height",n.h)))},getNaturalImageSize:function bn(e){return{w:e.naturalWidth,h:e.naturalHeight}}},ee=(Q="function",function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===Q}),ne=Array.prototype.slice,te=(ee(Array.from)&&Array.from,function(e,n){var t;return t=n.reduce(function(e,n){return W(e)?e[n]:undefined},e),W(t)?t:null}),re=function(n){return new q(function(t){var e=new v.FileReader;e.onload=function(e){var n=e.target;t(n.result)},e.readAsText(n)})},oe=function(n,r,o){return new q(function(e){var t;(t=new v.XMLHttpRequest).onreadystatechange=function(){4===t.readyState&&e({status:t.status,blob:this.response})},t.open("GET",n,!0),t.withCredentials=o,i.each(r,function(e,n){t.setRequestHeader(n,e)}),t.responseType="blob",t.send()})},ie=function(e){var n;try{n=JSON.parse(e)}catch(t){}return n},ue=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],ae=[{type:"key_missing",message:"The request did not include an api key."},{type:"key_not_found",message:"The provided api key could not be found."},{type:"domain_not_trusted",message:"The api key is not valid for the request origins."}],ce=function(e,n){return function(e){return 400===e||403===e||500===e}(e)?J(0,n):Y(e)},se=Y;function fe(e,n,t){return n?K(e,n):function r(e,n){return oe(e,{},n).then(function(e){return e.status<200||300<=e.status?se(e.status):q.resolve(e.blob)})}(e,t)}function le(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)}function de(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};function r(e){return Number(n.replace(t,"$"+e))}return Ce(r(1),r(2))}function me(e,n){return function(){return n===e}}function he(e,n){return function(){return n===e}}function ge(e,n){var t=String(n).toLowerCase();return X(e,function(e){return e.search(t)})}function ve(e,n){return-1!==e.indexOf(n)}function pe(n){return function(e){return ve(e,n)}}function we(e,n){return function(e,n){return X(e.dom().childNodes,function(e){return n(Je.fromDom(e))}).map(Je.fromDom)}(e,function(e){return function(e,n){var t=e.dom();if(t.nodeType!==Qe)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}(e,n)})}function ye(e){return we(Je.fromDom(e),"img")}function be(e,n){return e.dom.is(n,"figure")}function Ee(e,n){e.notificationManager.open({text:n,type:"error"})}function Oe(e){var n=e.selection.getNode();return be(e,n)?ye(n):p.some(Je.fromDom(n))}function Te(e,n){var t,r=n.src;return nn(e,n)?fe(n.src,null,function(e,n){return-1!==i.inArray(function(e){return e.getParam("imagetools_credentials_hosts",[],"string[]")}(e),new $(n.src).host)}(e,n)):en(e,n)?function(e){return C(e)}(n):(r=function(e){return e.getParam("imagetools_proxy")}(e),r+=(-1===r.indexOf("?")?"?":"&")+"url="+encodeURIComponent(n.src),t=function(e){return e.getParam("api_key",e.getParam("imagetools_api_key","","string"),"string")}(e),fe(r,t,!1))}function Ie(e,n){return function(e){return p.from(e.getParam("imagetools_fetch_image",null,"function"))}(e).fold(function(){return Te(e,n)},function(e){return e(n)})}function Ne(e,n){var t;return(t=e.editorUpload.blobCache.getByUri(n.src))?q.resolve(t.blob()):Ie(e,n)}function Se(e){H.clearTimeout(e.get())}function _e(i,u,a,c,s,f){return u.toBlob().then(function(e){var n,t,r,o;return r=i.editorUpload.blobCache,n=s.src,function(e){return e.getParam("images_reuse_filename",!1,"boolean")}(i)&&(t=(o=r.getByUri(n))?(n=o.uri(),o.name()):function(e,n){var t=n.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i);return t?e.dom.encode(t[1]):null}(i,n)),o=r.create({id:"imagetools"+Ze++,blob:e,base64:u.toBase64(),uri:n,name:t}),r.add(o),i.undoManager.transact(function(){i.$(s).on("load",function e(){i.$(s).off("load",e),i.nodeChanged(),a?i.editorUpload.uploadImagesAuto():(Se(c),function(e,n){var t=H.setEditorTimeout(e,function(){e.editorUpload.uploadImagesAuto()},function(e){return e.getParam("images_upload_timeout",3e4,"number")}(e));n.set(t)}(i,c))}),f&&i.$(s).attr({width:f.w,height:f.h}),i.$(s).attr({src:o.blobUri()}).removeAttr("data-mce-src")}),o})}function xe(t,r,e,o){return function(){return Oe(t).fold(function(){Ee(t,"Could not find selected image")},function(n){return t._scanForImages().then(function(){return Ne(t,n.dom())}).then(z).then(e).then(function(e){return _e(t,e,!1,r,n.dom(),o)},function(e){Ee(t,e)})})}}var Re=function(e,n){return le(e,n,v.Node.DOCUMENT_POSITION_CONTAINED_BY)},Ae=function(){return Ce(0,0)},Ce=function(e,n){return{major:e,minor:n}},De={nu:Ce,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Ae():de(e,t)},unknown:Ae},Ue="Firefox",Le=function(e){var n=e.current;return{current:n,version:e.version,isEdge:me("Edge",n),isChrome:me("Chrome",n),isIE:me("IE",n),isOpera:me("Opera",n),isFirefox:me(Ue,n),isSafari:me("Safari",n)}},ke={unknown:function(){return Le({current:undefined,version:De.unknown()})},nu:Le,edge:d("Edge"),chrome:d("Chrome"),ie:d("IE"),opera:d("Opera"),firefox:d(Ue),safari:d("Safari")},je="Windows",Pe="Android",Me="Solaris",Be="FreeBSD",Fe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:he(je,n),isiOS:he("iOS",n),isAndroid:he(Pe,n),isOSX:he("OSX",n),isLinux:he("Linux",n),isSolaris:he(Me,n),isFreeBSD:he(Be,n)}},ze={unknown:function(){return Fe({current:undefined,version:De.unknown()})},nu:Fe,windows:d(je),ios:d("iOS"),android:d(Pe),linux:d("Linux"),osx:d("OSX"),solaris:d(Me),freebsd:d(Be)},He=function(e,t){return ge(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},qe=function(e,t){return ge(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},$e=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Xe=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return ve(e,"edge/")&&ve(e,"chrome")&&ve(e,"safari")&&ve(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,$e],search:function(e){return ve(e,"chrome")&&!ve(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return ve(e,"msie")||ve(e,"trident")}},{name:"Opera",versionRegexes:[$e,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:pe("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:pe("firefox")},{name:"Safari",versionRegexes:[$e,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(ve(e,"safari")||ve(e,"mobile/"))&&ve(e,"applewebkit")}}],We=[{name:"Windows",search:pe("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return ve(e,"iphone")||ve(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:pe("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:pe("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:pe("linux"),versionRegexes:[]},{name:"Solaris",search:pe("sunos"),versionRegexes:[]},{name:"FreeBSD",search:pe("freebsd"),versionRegexes:[]}],Ge={browsers:d(Xe),oses:d(We)},Ye=r(function(e,n){var t=Ge.browsers(),r=Ge.oses(),o=He(t,e).fold(ke.unknown,ke.nu),i=qe(r,e).fold(ze.unknown,ze.nu);return{browser:o,os:i,deviceType:function(e,n,t,r){var o=e.isiOS()&&!0===/ipad/i.test(t),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),a=u||r("(pointer:coarse)"),c=o||!i&&u&&r("(min-device-width:768px)"),s=i||u&&!c,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(t),l=!s&&!c&&!f;return{isiPad:d(o),isiPhone:d(i),isTablet:d(c),isPhone:d(s),isTouch:d(a),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:d(f),isDesktop:d(l)}}(i,o,e,n)}}(v.navigator.userAgent,function(e){return v.window.matchMedia(e).matches})),Ve=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:d(e)}},Je={fromHtml:function(e,n){var t=(n||v.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw v.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Ve(t.childNodes[0])},fromTag:function(e,n){var t=(n||v.document).createElement(e);return Ve(t)},fromText:function(e,n){var t=(n||v.document).createTextNode(e);return Ve(t)},fromDom:Ve,fromPoint:function(e,n,t){var r=e.dom();return p.from(r.elementFromPoint(n,t)).map(Ve)}},Ke=(v.Node.ATTRIBUTE_NODE,v.Node.CDATA_SECTION_NODE,v.Node.COMMENT_NODE,v.Node.DOCUMENT_NODE,v.Node.DOCUMENT_TYPE_NODE,v.Node.DOCUMENT_FRAGMENT_NODE,v.Node.ELEMENT_NODE),Qe=(v.Node.TEXT_NODE,v.Node.PROCESSING_INSTRUCTION_NODE,v.Node.ENTITY_REFERENCE_NODE,v.Node.ENTITY_NODE,v.Node.NOTATION_NODE,Ke),Ze=(Ye.get().browser.isIE(),"undefined"!=typeof v.window?v.window:Function("return this;")(),0),en=function(e,n){var t=n.src;return 0===t.indexOf("data:")||0===t.indexOf("blob:")||new $(t).host===e.documentBaseURI.host},nn=function(e,n){return-1!==i.inArray(function(e){return e.getParam("imagetools_cors_hosts",[],"string[]")}(e),new $(n.src).host)},tn=function(n,t,r){return function(){var e=Oe(n).fold(function(){return null},function(e){var n=Z.getImageSize(e.dom());return n?{w:n.h,h:n.w}:null});return xe(n,t,function(e){return function(e,n){return B(e,n)}(e,r)},e)()}},rn=function(e,n,t){return function(){return xe(e,n,function(e){return function(e,n){return F(e,n)}(e,t)})()}},on=function(n,e){function t(e){return function(e){return n.dom.is(e,"img:not([data-mce-object],[data-mce-placeholder])")}(e)&&(en(n,e)||nn(n,e)||n.settings.imagetools_proxy)}return be(n,e)?ye(e).map(function(e){return t(e.dom())?p.some(e.dom()):p.none()}):t(e)?p.some(e):p.none()},un=Se,an=Ne,cn=Oe,sn=function(n,t,r,o,i){return new q(function(e){(function(e){return D(e)})(i).then(function(e){var n=Z.getNaturalImageSize(e);return o.w===n.w&&o.h===n.h||Z.getImageSize(r)&&Z.setImageSize(r,n),v.URL.revokeObjectURL(e.src),i}).then(z).then(function(e){return _e(n,e,!0,t,r)},function(){})})},fn=d("save-state"),ln=d("disable"),dn=d("enable"),mn=function(i,u){return function(){var r=cn(i),o=r.map(function(e){return Z.getNaturalImageSize(e.dom())});cn(i).each(function(n){on(i,n.dom()).each(function(e){an(i,n.dom()).then(function(e){var n=function(e){return{blob:e,url:v.URL.createObjectURL(e)}}(e);i.windowManager.open(function(e){return{title:"Edit Image",size:"large",body:{type:"panel",items:[{type:"imagetools",name:"imagetools",label:"Edit Image",currentState:e}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0,disabled:!0}],onSubmit:function(e){var t=e.getData().imagetools.blob;r.each(function(n){o.each(function(e){sn(i,u,n.dom(),e,t)})}),e.close()},onCancel:function(){},onAction:function(e,n){switch(n.name){case fn():n.value?e.enable("save"):e.disable("save");break;case ln():e.disable("save"),e.disable("cancel");break;case dn():e.enable("cancel")}}}}(n))})})})}},hn=function(t,e){i.each({mceImageRotateLeft:tn(t,e,-90),mceImageRotateRight:tn(t,e,90),mceImageFlipVertical:rn(t,e,"v"),mceImageFlipHorizontal:rn(t,e,"h"),mceEditImage:mn(t,e)},function(e,n){t.addCommand(n,e)})},gn=function(t,r,o){t.on("NodeChange",function(e){var n=o.get();n&&n.src!==e.element.src&&(un(r),t.editorUpload.uploadImagesAuto(),o.set(null)),on(t,e.element).each(o.set)})},vn=function(r){function n(e){return function(){return r.execCommand(e)}}r.ui.registry.addButton("rotateleft",{tooltip:"Rotate counterclockwise",icon:"rotate-left",onAction:n("mceImageRotateLeft")}),r.ui.registry.addButton("rotateright",{tooltip:"Rotate clockwise",icon:"rotate-right",onAction:n("mceImageRotateRight")}),r.ui.registry.addButton("flipv",{tooltip:"Flip vertically",icon:"flip-vertically",onAction:n("mceImageFlipVertical")}),r.ui.registry.addButton("fliph",{tooltip:"Flip horizontally",icon:"flip-horizontally",onAction:n("mceImageFlipHorizontal")}),r.ui.registry.addButton("editimage",{tooltip:"Edit image",icon:"edit-image",onAction:n("mceEditImage"),onSetup:function(t){function e(){cn(r).each(function(e){var n=on(r,e.dom()).isNone();t.setDisabled(n)})}return r.on("NodeChange",e),function(){r.off("NodeChange",e)}}}),r.ui.registry.addButton("imageoptions",{tooltip:"Image options",icon:"image-options",onAction:n("mceImage")}),r.ui.registry.addContextMenu("imagetools",{update:function(e){return on(r,e).fold(function(){return[]},function(e){return[{text:"Edit image",icon:"edit-image",onAction:n("mceEditImage")}]})}})},pn=function(n){n.ui.registry.addContextToolbar("imagetools",{items:function(e){return e.getParam("imagetools_toolbar","rotateleft rotateright flipv fliph editimage imageoptions")}(n),predicate:function(e){return on(n,e).isSome()},position:"node",scope:"node"})};!function En(){o.add("imagetools",function(e){var n=r(0),t=r(null);hn(e,n),vn(e),pn(e),gn(e,n,t)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/importcss/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/importcss/plugin.min.js
deleted file mode 100644 (file)
index df28852..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function t(){}function n(t){return function(){return t}}function e(){return h}var r,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),f=tinymce.util.Tools.resolve("tinymce.EditorManager"),l=tinymce.util.Tools.resolve("tinymce.Env"),m=tinymce.util.Tools.resolve("tinymce.util.Tools"),c=function(t){return t.getParam("importcss_merge_classes")},i=function(t){return t.getParam("importcss_exclusive")},p=function(t){return t.getParam("importcss_selector_converter")},g=function(t){return t.getParam("importcss_selector_filter")},y=function(t){return t.getParam("importcss_groups")},v=function(t){return t.getParam("importcss_append")},d=function(t){return t.getParam("importcss_file_filter")},u=n(!1),s=n(!0),h=(r={fold:function(t,n){return t()},is:u,isSome:u,isNone:s,getOr:O,getOrThunk:x,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:n(null),getOrUndefined:n(undefined),or:O,orThunk:x,map:e,each:t,bind:e,exists:u,forall:s,filter:e,equals:_,equals_:_,toArray:function(){return[]},toString:n("none()")},Object.freeze&&Object.freeze(r),r);function _(t){return t.isNone()}function x(t){return t()}function O(t){return t}function T(n){return function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===n}}function b(t,n){return function(t){for(var n=[],e=0,r=t.length;e<r;++e){if(!w(t[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+t);M.apply(n,t[e])}return n}(function(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var i=t[o];r[o]=n(i,o)}return r}(t,n))}function k(n){return"string"==typeof n?function(t){return-1!==t.indexOf(n)}:n instanceof RegExp?function(t){return n.test(t)}:n}function S(i,t,u){var c=[],e={};function s(t,n){var e,r=t.href;if((r=function(t){var n=l.cacheSuffix;return"string"==typeof t&&(t=t.replace("?"+n,"").replace("&"+n,"")),t}(r))&&u(r,n)&&!function(t,n){var e=t.settings,r=!1!==e.skin&&(e.skin||"oxide");if(r){var o=e.skin_url?t.documentBaseURI.toAbsolute(e.skin_url):f.baseURL+"/skins/ui/"+r,i=f.baseURL+"/skins/content/";return n===o+"/content"+(t.inline?".inline":"")+".min.css"||-1!==n.indexOf(i)}return!1}(i,r)){m.each(t.imports,function(t){s(t,!0)});try{e=t.cssRules||t.rules}catch(o){}m.each(e,function(t){t.styleSheet?s(t.styleSheet,!0):t.selectorText&&m.each(t.selectorText.split(","),function(t){c.push(m.trim(t))})})}}m.each(i.contentCSS,function(t){e[t]=!0}),u=u||function(t,n){return n||e[t]};try{m.each(t.styleSheets,function(t){s(t)})}catch(n){}return c}function A(t,n){var e,r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(n);if(r){var o=r[1],i=r[2].substr(1).split(".").join(" "),u=m.makeMap("a,img");return r[1]?(e={title:n},t.schema.getTextBlockElements()[o]?e.block=o:t.schema.getBlockElements()[o]||u[o.toLowerCase()]?e.selector=o:e.inline=o):r[2]&&(e={inline:"span",title:n.substr(1),classes:i}),!1!==c(t)?e.classes=i:e.attributes={"class":i},e}}function P(t,n){return null===n||!1!==i(t)}var w=T("array"),E=T("function"),I=Array.prototype.slice,M=Array.prototype.push,j=(E(Array.from)&&Array.from,A),D=function(s){s.on("init",function(t){function r(t,n){if(function(t,n,e,r){return!(P(t,e)?n in r:n in e.selectors)}(s,t,n,i)){!function(t,n,e,r){P(t,e)?r[n]=!0:e.selectors[n]=!0}(s,t,n,i);var e=function(t,n,e,r){return(r&&r.selector_converter?r.selector_converter:p(t)?p(t):function(){return A(t,e)}).call(n,e,r)}(s,s.plugins.importcss,t,n);if(e){var r=e.name||a.DOM.uniqueId();return s.formatter.register(r,e),m.extend({},{title:e.title,format:r})}}return null}var o=function(){var n=[],e=[],r={};return{addItemToGroup:function(t,n){r[t]?r[t].push(n):(e.push(t),r[t]=[n])},addItem:function(t){n.push(t)},toFormats:function(){return b(e,function(t){var n=r[t];return 0===n.length?[]:[{title:t,items:n}]}).concat(n)}}}(),i={},u=k(g(s)),c=function(t){return m.map(t,function(t){return m.extend({},t,{original:t,selectors:{},filter:k(t.filter),item:{text:t.title,menu:[]}})})}(y(s));m.each(S(s,s.getDoc(),k(d(s))),function(e){if(-1===e.indexOf(".mce-")&&(!u||u(e))){var t=function(t,n){return m.grep(t,function(t){return!t.filter||t.filter(n)})}(c,e);if(0<t.length)m.each(t,function(t){var n=r(e,t);n&&o.addItemToGroup(t.title,n)});else{var n=r(e,null);n&&o.addItem(n)}}});var n=o.toFormats();s.fire("addStyleModifications",{items:n,replace:!v(s)})})},R=function(n){return{convertSelectorToFormat:function(t){return j(n,t)}}};!function U(){o.add("importcss",function(t){return D(t),R(t)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js
deleted file mode 100644 (file)
index 584b6f8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function n(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))}function r(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])}function a(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function i(e,t,n){return n=n||new Date,t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",a(n.getMonth()+1,2))).replace("%d",a(n.getDate(),2))).replace("%H",""+a(n.getHours(),2))).replace("%M",""+a(n.getMinutes(),2))).replace("%S",""+a(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(f[n.getMonth()]))).replace("%b",""+e.translate(d[n.getMonth()]))).replace("%A",""+e.translate(s[n.getDay()]))).replace("%a",""+e.translate(l[n.getDay()]))).replace("%%","%")}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d"))},o=n,u=r,c=function(e){var t=r(e);return 0<t.length?t[0]:n(e)},m=function(e){return e.getParam("insertdatetime_element",!1)},l="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),s="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),d="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),f="January February March April May June July August September October November December".split(" "),p=function(e,t){if(m(e)){var n=i(e,t),r=void 0;r=/%[HMSIp]/.test(t)?i(e,"%Y-%m-%dT%H:%M"):i(e,"%Y-%m-%d");var a=e.dom.getParent(e.selection.getStart(),"time");a?function(e,t,n,r){var a=e.dom.create("time",{datetime:n},r);t.parentNode.insertBefore(a,t),e.dom.remove(t),e.selection.select(a,!0),e.selection.collapse(!1)}(e,a,r,n):e.insertContent('<time datetime="'+r+'">'+n+"</time>")}else e.insertContent(i(e,t))},g=i,y=function(e){e.addCommand("mceInsertDate",function(){p(e,t(e))}),e.addCommand("mceInsertTime",function(){p(e,o(e))})},M=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return S(t())}}},v=function(n){var t=u(n),r=S(c(n));n.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:function(e){return e===r.get()},fetch:function(e){e(M.map(t,function(e){return{type:"choiceitem",text:g(n,e),value:e}}))},onAction:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];p(n,r.get())},onItemAction:function(e,t){r.set(t),p(n,t)}});n.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:function(){return M.map(t,function(e){return{type:"menuitem",text:g(n,e),onAction:function(e){return function(){r.set(e),p(n,e)}}(e)}})}})};!function h(){e.add("insertdatetime",function(e){y(e),v(e)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js
deleted file mode 100644 (file)
index df99090..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(e){return e.getParam("font_formats")},i=function(e){return e.getParam("fontsize_formats")},n=function(e,t){e.settings.fontsize_formats=t},l=function(e,t){e.settings.font_formats=t},s=function(e){return e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")},r=function(e,t){e.settings.inline_styles=t},o=function(e){!function(e){r(e,!1),i(e)||n(e,"8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7"),t(e)||l(e,"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats")}(e),e.on("PreInit",function(){return function(e){var t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=a.explode(s(e)),n=e.schema;e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return a.inArray(i,e.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),a.each("b,i,u,strike".split(","),function(e){n.addValidElements(e+"[*]")}),n.getElementRule("font")||n.addValidElements("font[face|size|color|style]"),a.each(t.split(","),function(e){var t=n.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})}(e)})};!function c(){e.add("legacyoutput",function(e){o(e)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/link/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/link/plugin.min.js
deleted file mode 100644 (file)
index a17b394..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(c){"use strict";function n(t){return function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===t}}function u(){}function i(n){return function(){return n}}function t(){return A}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),a=n("string"),f=n("array"),l=n("boolean"),s=n("function"),d=function(n){var t=n.getParam("link_assume_external_targets",!1);return l(t)&&t?1:!a(t)||"http"!==t&&"https"!==t?0:t},m=function(n){return n.getParam("link_context_toolbar",!1,"boolean")},h=function(n){return n.getParam("link_list")},p=function(n){return n.getParam("default_link_target")},g=function(n){return n.getParam("target_list",!0)},v=function(n){return n.getParam("rel_list",[],"array")},y=function(n){return n.getParam("link_class_list",[],"array")},w=function(n){return n.getParam("link_title",!0,"boolean")},x=function(n){return n.getParam("allow_unsafe_link_target",!1,"boolean")},k=function(n){return n.getParam("link_quicklink",!1,"boolean")},b=function(n){var t=c.document.createElement("a");t.target="_blank",t.href=n,t.rel="noreferrer noopener";var e=c.document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,c.window,0,0,0,0,0,!1,!1,!1,!1,0,null),function(n,t){c.document.body.appendChild(n),n.dispatchEvent(t),c.document.body.removeChild(n)}(t,e)},_=function(){return(_=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var o in t=arguments[e])Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o]);return n}).apply(this,arguments)},T=i(!1),O=i(!0),A=(e={fold:function(n,t){return n()},is:T,isSome:T,isNone:O,getOr:N,getOrThunk:P,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:N,orThunk:P,map:t,each:u,bind:t,exists:T,forall:O,filter:t,equals:C,equals_:C,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(e),e);function C(n){return n.isNone()}function P(n){return n()}function N(n){return n}function E(n,t){return-1<function(n,t){return Q.call(n,t)}(n,t)}function I(n,t){for(var e=0,r=n.length;e<r;e++){t(n[e],e)}}function S(n){for(var t=[],e=0,r=n.length;e<r;++e){if(!f(n[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+n);Y.apply(t,n[e])}return t}function j(n,t){var e=function(n,t){for(var e=n.length,r=new Array(e),o=0;o<e;o++){var i=n[o];r[o]=t(i,o)}return r}(n,t);return S(e)}function F(n){return/^\w+:/i.test(n)}function L(n,t){var e,r,o=["noopener"],i=n?n.split(/\s+/):[],u=function(n){return n.filter(function(n){return-1===Z.inArray(o,n)})},c=t?0<(e=u(e=i)).length?e.concat(o):o:u(i);return 0<c.length?(r=c,Z.trim(r.sort().join(" "))):""}function R(n,t){return t=t||n.selection.getNode(),nn(t)?n.dom.select("a[href]",t)[0]:n.dom.getParent(t,"a[href]")}function D(n){return n&&"A"===n.nodeName&&!!n.href}function U(n){return function(n,t,e){return I(n,function(n){e=t(e,n)}),e}(["title","rel","class","target"],function(t,e){return n[e].each(function(n){t[e]=0<n.length?n:null}),t},{href:n.href})}function M(n,t){var e=_({},t);if(!(0<v(n).length)&&!1===x(n)){var r=L(e.rel,"_blank"===e.target);e.rel=r||null}return J.from(e.target).isNone()&&!1===g(n)&&(e.target=p(n)),e.href=function(n,t){return"http"!==t&&"https"!==t||F(n)?n:t+"://"+n}(e.href,d(n)),e}function z(n,t){for(var e=0;e<n.length;e++){var r=t(n[e],e);if(r.isSome())return r}return J.none()}function q(n){return a(n.value)?n.value:""}function K(t){return void 0===t&&(t=q),function(n){return J.from(n).map(function(n){return function(n,r){var o=[];return Z.each(n,function(n){var t=a(n.text)?n.text:a(n.title)?n.title:"";if(n.menu!==undefined);else{var e=r(n);o.push({text:t,value:e})}}),o}(n,t)})}}function B(t,n,e,r){var o=r[n],i=0<t.length;return o!==undefined?function(t,n){return z(n,function(n){return J.some(n).filter(function(n){return n.value===t})})}(o,e).map(function(n){return{url:{value:n.value,meta:{text:i?t:n.text,attach:u}},text:i?t:n.text}}):J.none()}var V,W,H,$,G=function(e){function n(){return o}function t(n){return n(e)}var r=i(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:O,isNone:T,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return G(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:A},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(T,function(n){return t(e,n)})}};return o},J={some:G,none:t,from:function(n){return null===n||n===undefined?A:G(n)}},X=Array.prototype.slice,Q=Array.prototype.indexOf,Y=Array.prototype.push,Z=(s(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.util.Tools")),nn=function(n){return n&&"FIGURE"===n.nodeName&&/\bimage\b/i.test(n.className)},tn=function(n,t){var e=n.dom.select("img",t)[0];if(e){var r=n.dom.getParents(e,"a[href]",t)[0];r&&(r.parentNode.insertBefore(e,r),n.dom.remove(r))}},en=function(n,t,e){var r=n.dom.select("img",t)[0];if(r){var o=n.dom.create("a",e);r.parentNode.insertBefore(o,r),o.appendChild(r)}},rn=function(n,t,e){var r=n.selection.getNode(),o=R(n,r),i=M(n,U(e));n.undoManager.transact(function(){e.href===t.href&&t.attach(),o?(n.focus(),function(n,t,e,r){e.each(function(n){t.hasOwnProperty("innerText")?t.innerText=n:t.textContent=n}),n.dom.setAttribs(t,r),n.selection.select(t)}(n,o,e.text,i)):function(t,n,e,r){nn(n)?en(t,n,r):e.fold(function(){t.execCommand("mceInsertLink",!1,r)},function(n){t.insertContent(t.dom.createHTML("a",r,t.dom.encode(n)))})}(n,r,e.text,i)})},on=function(e){e.undoManager.transact(function(){var n=e.selection.getNode();if(nn(n))tn(e,n);else{var t=e.dom.getParent(n,"a[href]",e.getBody());t&&e.dom.remove(t,!0)}e.focus()})},un=function(n){return 0<Z.grep(n,D).length},cn=function(n){var t=n.getAttribute("data-mce-href");return t||n.getAttribute("href")},an=function(n){return!(/</.test(n)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(n)||-1===n.indexOf("href=")))},fn=R,ln=function(n,t){return function(n){return n.replace(/\uFEFF/g,"")}(t?t.innerText||t.textContent:n.getContent({format:"text"}))},sn=L,dn=F,mn={sanitize:function(n){return K(q)(n)},sanitizeWith:K,createUi:function(t,e){return function(n){return{name:t,type:"selectbox",label:e,items:n}}},getValue:q},hn=function(n){function t(){return e}var e=n;return{get:t,set:function(n){e=n},clone:function(){return hn(t())}}},pn=function(n,r){function e(n,t){var e=function(n,t){return"link"===t?n.catalogs.link:"anchor"===t?n.catalogs.anchor:J.none()}(r,t.name).getOr([]);return B(o.get(),t.name,e,n)}var o=hn(n.text);return{onChange:function(n,t){return"url"===t.name?function(n){if(o.get().length<=0){var t=n.url.meta.text!==undefined?n.url.meta.text:n.url.value;return J.some({text:t})}return J.none()}(n()):E(["anchor","link"],t.name)?e(n(),t):("text"===t.name&&o.set(n().text),J.none())}}},gn={},vn={exports:gn};V=undefined,W=gn,H=vn,$=undefined,function(n){"object"==typeof W&&void 0!==H?H.exports=n():"function"==typeof V&&V.amd?V([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function l(i,u,c){function a(t,n){if(!u[t]){if(!i[t]){var e="function"==typeof $&&$;if(!n&&e)return e(t,!0);if(f)return f(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[t]={exports:{}};i[t][0].call(o.exports,function(n){return a(i[t][1][n]||n)},o,o.exports,l,i,u,c)}return u[t].exports}for(var f="function"==typeof $&&$,n=0;n<c.length;n++)a(c[n]);return a}({1:[function(n,t,e){var r,o,i=t.exports={};function u(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function a(n){if(r===setTimeout)return setTimeout(n,0);if((r===u||!r)&&setTimeout)return r=setTimeout,setTimeout(n,0);try{return r(n,0)}catch(t){try{return r.call(null,n,0)}catch(t){return r.call(this,n,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:u}catch(n){r=u}try{o="function"==typeof clearTimeout?clearTimeout:c}catch(n){o=c}}();var f,l=[],s=!1,d=-1;function m(){s&&f&&(s=!1,f.length?l=f.concat(l):d=-1,l.length&&h())}function h(){if(!s){var n=a(m);s=!0;for(var t=l.length;t;){for(f=l,l=[];++d<t;)f&&f[d].run();d=-1,t=l.length}f=null,s=!1,function e(n){if(o===clearTimeout)return clearTimeout(n);if((o===c||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(n);try{return o(n)}catch(t){try{return o.call(null,n)}catch(t){return o.call(this,n)}}}(n)}}function p(n,t){this.fun=n,this.array=t}function g(){}i.nextTick=function(n){var t=new Array(arguments.length-1);if(1<arguments.length)for(var e=1;e<arguments.length;e++)t[e-1]=arguments[e];l.push(new p(n,t)),1!==l.length||s||a(h)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,s,t){(function(t){function r(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(n,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var n=1===r._state?o.onFulfilled:o.onRejected;if(null!==n){var t;try{t=n(r._value)}catch(e){return void c(o.promise,e)}u(o.promise,t)}else(1===r._state?u:c)(o.promise,r._value)})):r._deferreds.push(o)}function u(n,t){try{if(t===n)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if(t instanceof i)return n._state=3,n._value=t,void a(n);if("function"==typeof e)return void l(function r(n,t){return function(){n.apply(t,arguments)}}(e,t),n)}n._state=1,n._value=t,a(n)}catch(o){c(n,o)}}function c(n,t){n._state=2,n._value=t,a(n)}function a(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var t=0,e=n._deferreds.length;t<e;t++)o(n,n._deferreds[t]);n._deferreds=null}function f(n,t,e){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof t?t:null,this.promise=e}function l(n,t){var e=!1;try{n(function(n){e||(e=!0,u(t,n))},function(n){e||(e=!0,c(t,n))})}catch(r){if(e)return;e=!0,c(t,r)}}var n,e;n=this,e=setTimeout,i.prototype["catch"]=function(n){return this.then(null,n)},i.prototype.then=function(n,t){var e=new this.constructor(r);return o(this,new f(n,t,e)),e},i.all=function(n){var a=Array.prototype.slice.call(n);return new i(function(o,i){if(0===a.length)return o([]);var u=a.length;function c(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void e.call(n,function(n){c(t,n)},i)}a[t]=n,0==--u&&o(a)}catch(r){i(r)}}for(var n=0;n<a.length;n++)c(n,a[n])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(n){n(t)})},i.reject=function(e){return new i(function(n,t){t(e)})},i.race=function(o){return new i(function(n,t){for(var e=0,r=o.length;e<r;e++)o[e].then(n,t)})},i._immediateFn="function"==typeof t?function(n){t(n)}:function(n){e(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==s&&s.exports?s.exports=i:n.Promise||(n.Promise=i)}).call(this,n("timers").setImmediate)},{timers:3}],3:[function(a,n,f){(function(n,t){var r=a("process/browser.js").nextTick,e=Function.prototype.apply,o=Array.prototype.slice,i={},u=0;function c(n,t){this._id=n,this._clearFn=t}f.setTimeout=function(){return new c(e.call(setTimeout,window,arguments),clearTimeout)},f.setInterval=function(){return new c(e.call(setInterval,window,arguments),clearInterval)},f.clearTimeout=f.clearInterval=function(n){n.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},f.enroll=function(n,t){clearTimeout(n._idleTimeoutId),n._idleTimeout=t},f.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},f._unrefActive=f.active=function(n){clearTimeout(n._idleTimeoutId);var t=n._idleTimeout;0<=t&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},t))},f.setImmediate="function"==typeof n?n:function(n){var t=u++,e=!(arguments.length<2)&&o.call(arguments,1);return i[t]=!0,r(function(){i[t]&&(e?n.apply(null,e):n.call(null),f.clearImmediate(t))}),t},f.clearImmediate="function"==typeof t?t:function(n){delete i[n]}}).call(this,a("timers").setImmediate,a("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,t,e){var r=n("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function yn(n){c.setTimeout(function(){throw n},0)}function wn(n){var t=n.href;return 0<t.indexOf("@")&&-1===t.indexOf("//")&&-1===t.indexOf("mailto:")?J.some({message:"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",preprocess:function(n){return _(_({},n),{href:"mailto:"+t})}}):J.none()}function xn(n,t,e){var r=n.getAttrib(t,e);return null!==r&&0<r.length?J.some(r):J.none()}function kn(n,t){return n.dom.getParent(t,"a[href]")}function bn(n){return kn(n,n.selection.getStart())}function _n(n,t){if(t){var e=cn(t);if(/^#/.test(e)){var r=n.$(e);r.length&&n.selection.scrollIntoView(r[0],!0)}else b(t.href)}}var Tn=vn.exports.boltExport,On=function(n){var e=J.none(),t=[],r=function(n){o()?u(n):t.push(n)},o=function(){return e.isSome()},i=function(n){I(n,u)},u=function(t){e.each(function(n){c.setTimeout(function(){t(n)},0)})};return n(function(n){e=J.some(n),i(t),t=[]}),{get:r,map:function(e){return On(function(t){r(function(n){t(e(n))})})},isReady:o}},An={nu:On,pure:function(t){return On(function(n){n(t)})}},Cn=function(e){function n(n){e().then(n,yn)}return{map:function(n){return Cn(function(){return e().then(n)})},bind:function(t){return Cn(function(){return e().then(function(n){return t(n).toPromise()})})},anonBind:function(n){return Cn(function(){return e().then(function(){return n.toPromise()})})},toLazy:function(){return An.nu(n)},toCached:function(){var n=null;return Cn(function(){return null===n&&(n=e()),n})},toPromise:e,get:n}},Pn=function(n){return Cn(function(){return new Tn(n)})},Nn=function(n){return Cn(function(){return Tn.resolve(n)})},En=tinymce.util.Tools.resolve("tinymce.util.Delay"),In=function(n,t,r){return z([wn,function(e){return function(n){var t=n.href;return 1===e&&!dn(t)||0===e&&/^\s*www[\.|\d\.]/i.test(t)?J.some({message:"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",preprocess:function(n){return _(_({},n),{href:"http://"+t})}}):J.none()}}(t)],function(n){return n(r)}).fold(function(){return Nn(r)},function(e){return Pn(function(t){!function(t,n,e){var r=t.selection.getRng();En.setEditorTimeout(t,function(){t.windowManager.confirm(n,function(n){t.selection.setRng(r),e(n)})})}(n,e.message,function(n){t(n?e.preprocess(r):r)})})})},Sn=function(n){var t=n.dom.select("a:not([href])"),e=j(t,function(n){var t=n.name||n.id;return t?[{text:t,value:"#"+t}]:[]});return 0<e.length?J.some([{text:"None",value:""}].concat(e)):J.none()},jn=function(n){var t=y(n);return 0<t.length?mn.sanitize(t):J.none()},Fn=tinymce.util.Tools.resolve("tinymce.util.XHR"),Ln=function(t){function e(n){return t.convertURL(n.value||n.url,"href")}var n=h(t);return Pn(function(t){a(n)?Fn.send({url:n,success:function(n){return t(function(n){try{return J.some(JSON.parse(n))}catch(t){return J.none()}}(n))},error:function(n){return t(J.none())}}):s(n)?n(function(n){return t(J.some(n))}):t(J.from(n))}).map(function(n){return n.bind(mn.sanitizeWith(e)).map(function(n){return 0<n.length?[{text:"None",value:""}].concat(n):n})})},Rn=function(n,t){var e=v(n);if(0<e.length){var r=t.is("_blank");return(!1===x(n)?mn.sanitizeWith(function(n){return sn(mn.getValue(n),r)}):mn.sanitize)(e)}return J.none()},Dn=[{text:"Current window",value:""},{text:"New window",value:"_blank"}],Un=function(n){var t=g(n);return f(t)?mn.sanitize(t).orThunk(function(){return J.some(Dn)}):!1===t?J.none():J.some(Dn)},Mn=function(e,r){return Ln(e).map(function(n){var t=function(n,t){var e=n.dom,r=an(n.selection.getContent())?J.some(ln(n.selection,t)):J.none(),o=t?J.some(e.getAttrib(t,"href")):J.none(),i=t?J.from(e.getAttrib(t,"target")):J.none(),u=xn(e,t,"rel"),c=xn(e,t,"class");return{url:o,text:r,title:xn(e,t,"title"),target:i,rel:u,linkClass:c}}(e,r);return{anchor:t,catalogs:{targets:Un(e),rels:Rn(e,t.target),classes:jn(e),anchor:Sn(e),link:n},optNode:J.from(r),flags:{titleEnabled:w(e)}}})},zn=function(t){(function(n){var t=fn(n);return Mn(n,t)})(t).map(function(n){return function(n,t,e){var r=n.anchor.text.map(function(){return{name:"text",type:"input",label:"Text to display"}}).toArray(),o=n.flags.titleEnabled?[{name:"title",type:"input",label:"Title"}]:[],i=function(n,t){return{url:{value:n.anchor.url.getOr(""),meta:{attach:function(){},text:n.anchor.url.fold(function(){return""},function(){return n.anchor.text.getOr("")}),original:{value:n.anchor.url.getOr("")}}},text:n.anchor.text.getOr(""),title:n.anchor.title.getOr(""),anchor:n.anchor.url.getOr(""),link:n.anchor.url.getOr(""),rel:n.anchor.rel.getOr(""),target:n.anchor.target.or(t).getOr(""),linkClass:n.anchor.linkClass.getOr("")}}(n,J.from(p(e))),u=pn(i,n),c=n.catalogs;return{title:"Insert/Edit Link",size:"normal",body:{type:"panel",items:S([[{name:"url",type:"urlinput",filetype:"file",label:"URL"}],r,o,function(n){for(var t=[],e=function(n){t.push(n)},r=0;r<n.length;r++)n[r].each(e);return t}([c.anchor.map(mn.createUi("anchor","Anchors")),c.rels.map(mn.createUi("rel","Rel")),c.targets.map(mn.createUi("target","Open link in...")),c.link.map(mn.createUi("link","Link list")),c.classes.map(mn.createUi("linkClass","Class"))])])},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:i,onChange:function(t,n){var e=n.name;u.onChange(t.getData,{name:e}).each(function(n){t.setData(n)})},onSubmit:t}}(n,function(i,u,c){return function(n){var e=n.getData();if(!e.url.value)return on(i),void n.close();function t(t){return J.from(e[t]).filter(function(n){return!u.anchor[t].is(n)})}var r={href:e.url.value,text:t("text"),target:t("target"),rel:t("rel"),"class":t("linkClass"),title:t("title")},o={href:e.url.value,attach:e.url.meta!==undefined&&e.url.meta.attach?e.url.meta.attach:function(){}};In(i,c,r).get(function(n){rn(i,o,n)}),n.close()}}(t,n,d(t)),t)}).get(function(n){t.windowManager.open(n)})},qn=function(n){return function(){zn(n)}},Kn=function(n){return function(){_n(n,bn(n))}},Bn=function(e){e.on("click",function(n){var t=kn(e,n.target);t&&o.metaKeyPressed(n)&&(n.preventDefault(),_n(e,t))}),e.on("keydown",function(n){var t=bn(e);t&&13===n.keyCode&&function(n){return!0===n.altKey&&!1===n.shiftKey&&!1===n.ctrlKey&&!1===n.metaKey}(n)&&(n.preventDefault(),_n(e,t))})},Vn=function(e){return function(t){function n(n){return t.setActive(!e.readonly&&!!fn(e,n.element))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}},Wn=function(e){return function(t){t.setDisabled(!un(e.dom.getParents(e.selection.getStart())));function n(n){return t.setDisabled(!un(n.parents))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}},Hn=function(n){n.addCommand("mceLink",function(){k(n)?n.fire("contexttoolbar-show",{toolbarKey:"quicklink"}):qn(n)()})},$n=function(n){n.addShortcut("Meta+K","",function(){n.execCommand("mceLink")})},Gn=function(n){n.ui.registry.addToggleButton("link",{icon:"link",tooltip:"Insert/edit link",onAction:qn(n),onSetup:Vn(n)}),n.ui.registry.addButton("openlink",{icon:"new-tab",tooltip:"Open link",onAction:Kn(n),onSetup:Wn(n)}),n.ui.registry.addButton("unlink",{icon:"unlink",tooltip:"Remove link",onAction:function(){return on(n)},onSetup:Wn(n)})},Jn=function(n){n.ui.registry.addMenuItem("openlink",{text:"Open link",icon:"new-tab",onAction:Kn(n),onSetup:Wn(n)}),n.ui.registry.addMenuItem("link",{icon:"link",text:"Link...",shortcut:"Meta+K",onAction:qn(n)}),n.ui.registry.addMenuItem("unlink",{icon:"unlink",text:"Remove link",onAction:function(){return on(n)},onSetup:Wn(n)})},Xn=function(t){t.ui.registry.addContextMenu("link",{update:function(n){return un(t.dom.getParents(n,"a"))?"link unlink openlink":"link"}})},Qn=function(i){function n(n){var t=i.selection.getNode();return n.setDisabled(!fn(i,t)),function(){}}i.ui.registry.addContextForm("quicklink",{launch:{type:"contextformtogglebutton",icon:"link",tooltip:"Link",onSetup:Vn(i)},label:"Link",predicate:function(n){return!!fn(i,n)&&m(i)},initValue:function(){var n=fn(i);return n?cn(n):""},commands:[{type:"contextformtogglebutton",icon:"link",tooltip:"Link",primary:!0,onSetup:function(n){var t=i.selection.getNode();return n.setActive(!!fn(i,t)),Vn(i)(n)},onAction:function(n){var t=fn(i),e=n.getValue();if(t)i.dom.setAttrib(t,"href",e),function(n){n.selection.collapse(!1)}(i),n.hide();else{var r={href:e,attach:function(){}},o=an(i.selection.getContent())?J.some(ln(i.selection,t)).filter(function(n){return 0<n.length}).or(J.from(e)):J.none();rn(i,r,{href:e,text:o,title:J.none(),rel:J.none(),target:J.none(),"class":J.none()}),n.hide()}}},{type:"contextformbutton",icon:"unlink",tooltip:"Remove link",onSetup:n,onAction:function(n){on(i),n.hide()}},{type:"contextformbutton",icon:"new-tab",tooltip:"Open link",onSetup:n,onAction:function(n){Kn(i)(),n.hide()}}]})};!function Yn(){r.add("link",function(n){Gn(n),Jn(n),Xn(n),Qn(n),Bn(n),Hn(n),$n(n)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/lists/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/lists/plugin.min.js
deleted file mode 100644 (file)
index 5510bb5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(r){"use strict";function e(){}function l(e){return function(){return e}}function t(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}}function n(){return a}var o,i=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=l(!1),s=l(!0),a=(o={fold:function(e,n){return e()},is:u,isSome:u,isNone:s,getOr:d,getOrThunk:f,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:l(null),getOrUndefined:l(undefined),or:d,orThunk:f,map:n,each:e,bind:n,exists:u,forall:s,filter:n,equals:c,equals_:c,toArray:function(){return[]},toString:l("none()")},Object.freeze&&Object.freeze(o),o);function c(e){return e.isNone()}function f(e){return e()}function d(e){return e}function m(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}function g(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o)}return r}function p(e,n){for(var t=0,r=e.length;t<r;t++){n(e[t],t)}}function v(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r)&&t.push(i)}return t}function h(e,n,t){return p(e,function(e){t=n(t,e)}),t}function N(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return $e.some(o)}return $e.none()}function y(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!We(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);Qe.apply(n,e[t])}return n}(g(e,n))}function S(e){return 0===e.length?$e.none():$e.some(e[0])}function O(e){return 0===e.length?$e.none():$e.some(e[e.length-1])}function C(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)}function b(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};function r(e){return Number(n.replace(t,"$"+e))}return Ze(r(1),r(2))}function L(e,n){return function(){return n===e}}function T(e,n){return function(){return n===e}}function D(e,n){var t=String(n).toLowerCase();return N(e,function(e){return e.search(t)})}function E(e,n){return-1!==e.indexOf(n)}function w(n){return function(e){return E(e,n)}}function k(e,n){return e.dom()===n.dom()}function A(e,n,t){return e.isSome()&&n.isSome()?$e.some(t(e.getOrDie(),n.getOrDie())):$e.none()}function x(e){return $e.from(e.dom().parentNode).map(bn.fromDom)}function R(e){return g(e.dom().childNodes,bn.fromDom)}function I(e,n){var t=e.dom().childNodes;return $e.from(t[n]).map(bn.fromDom)}function _(e){return I(e,0)}function B(e){return I(e,e.dom().childNodes.length-1)}function P(n,t){x(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}function M(e,n){e.dom().appendChild(n.dom())}function U(n,e){p(e,function(e){M(n,e)})}function F(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)}function j(e,n,t){return e.fire("ListMutation",{action:n,element:t})}function H(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:Rn,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)}function $(e){return e&&"BR"===e.nodeName}function q(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",Yn(e,n))}function W(e){var n=e.selection.getSelectedBlocks();return Pn.grep(function(t,e){var n=Pn.map(e,function(e){var n=t.dom.getParent(e,"li,dd,dt",Yn(t,e));return n||e});return Bn.unique(n)}(e,n),function(e){return Hn(e)})}function V(e,n){var t=e.dom.getParents(n,"ol,ul",Yn(e,n));return O(t)}function z(e,n){var t,r,o,i,u=e.dom,s=e.schema.getBlockElements(),a=u.createFragment();if(e.settings.forced_root_block&&(o=e.settings.forced_root_block),o&&((r=u.create(o)).tagName===e.settings.forced_root_block&&u.setAttribs(r,e.settings.forced_root_block_attrs),zn(n.firstChild,s)||a.appendChild(r)),n)for(;t=n.firstChild;){var c=t.nodeName;i||"SPAN"===c&&"bookmark"===t.getAttribute("data-mce-type")||(i=!0),zn(t,s)?(a.appendChild(t),r=null):o?(r||(r=u.create(o),a.appendChild(r)),r.appendChild(t)):a.appendChild(t)}return e.settings.forced_root_block?i||r.appendChild(u.create("br",{"data-mce-bogus":"1"})):a.appendChild(u.create("br")),a}function K(e){return e.dom().nodeName.toLowerCase()}function X(e,n){var t=e.dom();!function(e,n){for(var t=xn(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i)}}(n,function(e,n){!function(e,n,t){if(!(qe(t)||Ve(t)||Ke(t)))throw r.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})}function Q(e){return h(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})}function Y(e,n,t){if(!qe(t))throw r.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);!function(e){return e.style!==undefined&&ze(e.style.getPropertyValue)}(e)||e.style.setProperty(n,t)}function G(e){return function(e,n){return bn.fromDom(e.dom().cloneNode(n))}(e,!0)}function J(e,n){var t=function(e,n){var t=bn.fromTag(n),r=Q(e);return X(t,r),t}(e,n);P(e,t);var r=R(e);return U(t,r),F(e),t}function Z(e,n){M(e.item,n.list)}function ee(n,e,t){var r=e.slice(0,t.depth);return O(r).each(function(e){!function(e,n){M(e.list,n),e.item=n}(e,function(e,n,t){var r=bn.fromTag("li",e);return X(r,n),U(r,t),r}(n,t.itemAttributes,t.content)),function(e,n){K(e.list)!==n.listType&&(e.list=J(e.list,n.listType)),X(e.list,n.listAttributes)}(e,t)}),r}function ne(e,n,t){var r=function(e,n,t){for(var r,o,i,u=[],s=0;s<t;s++)u.push((r=e,o=n.listType,void 0,i={list:bn.fromTag(o,r),item:bn.fromTag("li",r)},M(i.list,i.item),i));return u}(e,t,t.depth-n.length);return function(e){for(var n=1;n<e.length;n++)Z(e[n-1],e[n])}(r),function(e,n){for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",void 0,u=r.dom(),Y(u,o,i);var r,o,i,u;O(e).each(function(e){X(e.list,n.listAttributes),X(e.item,n.itemAttributes),U(e.item,n.content)})}(r,t),function(e,n){A(O(e),S(n),Z)}(n,r),n.concat(r)}function te(e){return En(e,"OL,UL")}function re(e){return _(e).map(te).getOr(!1)}function oe(e){return 0<e.depth}function ie(e){return e.isSelected}function ue(e){var n=R(e),t=function(e){return B(e).map(te).getOr(!1)}(e)?n.slice(0,-1):n;return g(t,G)}function se(t){p(t,function(n,e){(function(e,n){for(var t=e[n].depth,r=n-1;0<=r;r--){if(e[r].depth===t)return $e.some(e[r]);if(e[r].depth<t)break}return $e.none()})(t,e).each(function(e){!function(e,n){e.listType=n.listType,e.listAttributes=nt({},n.listAttributes)}(n,e)})})}function ae(t,r,o,i){return _(i).filter(te).fold(function(){r.each(function(e){k(e.start,i)&&o.set(!0)});var e=function(n,t,r){return x(n).filter(Zn).map(function(e){return{depth:t,isSelected:r,content:ue(n),itemAttributes:Q(n),listAttributes:Q(e),listType:K(e)}})}(i,t,o.get());r.each(function(e){k(e.end,i)&&o.set(!1)});var n=B(i).filter(te).map(function(e){return tt(t,r,o,e)}).getOr([]);return e.toArray().concat(n)},function(e){return tt(t,r,o,e)})}function ce(t,e){return g(e,function(e){var n=function(e,n){var t=(n||r.document).createDocumentFragment();return p(e,function(e){t.appendChild(e.dom())}),bn.fromDom(t)}(e.content);return bn.fromDom(z(t,n.dom()))})}function fe(e,n){return se(n),function(t,e){var n=h(e,function(e,n){return n.depth>e.length?ne(t,e,n):ee(t,e,n)},[]);return S(n).map(function(e){return e.list})}(e.contentDocument,n).toArray()}function de(e){var n=g(Jn.getSelectedListItems(e),bn.fromDom);return A(N(n,t(re)),N(function(e){var n=Xe.call(e,0);return n.reverse(),n}(n),t(re)),function(e,n){return{start:e,end:n}})}function le(t,e,r){var n=function(e,n){var t=Ge(!1);return g(e,function(e){return{sourceList:e,entries:tt(0,n,t,e)}})}(e,de(t));p(n,function(e){!function(e,n){p(v(e,ie),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(n,e)})}(e.entries,r);var n=function(n,e){return y(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var s=e[i],a=n(s);a!==t&&(r.push(o),o=[]),t=a,o.push(s)}return 0!==o.length&&r.push(o),r}(e,oe),function(e){return S(e).map(oe).getOr(!1)?fe(n,e):ce(n,e)})}(t,e.entries);p(n,function(e){j(t,"Indent"===r?"IndentList":"OutdentList",e.dom())}),function(n,e){p(e,function(e){P(n,e)})}(e.sourceList,n),F(e.sourceList)})}function me(e){En(e,"dt")&&J(e,"dd")}function ge(n,e,t){p(t,"Indent"===e?me:function(e){return function(n,t){En(t,"dd")?J(t,"dt"):En(t,"dt")&&x(t).each(function(e){return it(n,e.dom(),t.dom())})}(n,e)})}function pe(e,n){if(Mn(e))return{container:e,offset:n};var t=wn.getNode(e,n);return Mn(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&Mn(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&Mn(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}}function ve(e,n){var t=g(Jn.getSelectedListRoots(e),bn.fromDom),r=g(Jn.getSelectedDlItems(e),bn.fromDom),o=!1;if(t.length||r.length){var i=e.selection.getBookmark();le(e,t,n),ge(e,n,r),e.selection.moveToBookmark(i),e.selection.setRng(ut(e.selection.getRng())),e.nodeChanged(),o=!0}return o}function he(e){return ve(e,"Indent")}function Ne(e){return ve(e,"Outdent")}function ye(e){return ve(e,"Flatten")}function Se(e){return/\btox\-/.test(e.className)}function Oe(e){switch(e){case"UL":return"ToggleUlList";case"OL":return"ToggleOlList";case"DL":return"ToggleDLList"}}function Ce(t,e){Pn.each(e,function(e,n){t.setAttribute(n,e)})}function be(e,n,t){!function(e,n,t){var r=t["list-style-type"]?t["list-style-type"]:null;e.setStyle(n,"list-style-type",r)}(e,n,t),function(e,n,t){Ce(n,t["list-attributes"]),Pn.each(e.select("li",n),function(e){Ce(e,t["list-item-attributes"])})}(e,n,t)}function Le(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&qn(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(Vn(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o}function Te(r,o,i){void 0===i&&(i={});var e,n=r.selection.getRng(!0),u="LI",t=Jn.getClosestListRootElm(r,r.selection.getStart(!0)),s=r.dom;"false"!==s.getContentEditable(r.selection.getNode())&&("DL"===(o=o.toUpperCase())&&(u="DT"),e=ct(n),Pn.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Le(t,e,!0,r),s=Le(t,e,!1,r),a=[],c=n;c&&(a.push(c),c!==s);c=c.nextSibling);return Pn.each(a,function(e){if(Vn(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||qn(e))return qn(e)&&u.remove(e),void(o=null);var n=e.nextSibling;st.isBookmarkNode(e)&&(Vn(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(r,n,t),function(e){var n,t;(t=e.previousSibling)&&Un(t)&&t.nodeName===o&&function(e,n,t){var r=e.getStyle(n,"list-style-type"),o=t?t["list-style-type"]:"";return r===(o=null===o?"":o)}(s,t,i)?(n=t,e=s.rename(e,u),t.appendChild(e)):(n=s.create(o),e.parentNode.insertBefore(n,e),n.appendChild(e),e=s.rename(e,u)),function(t,r,e){Pn.each(e,function(e){var n;return t.setStyle(r,((n={})[e]="",n))})}(s,e,["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"]),be(s,n,i),dt(r.dom,n)}),r.selection.setRng(ft(e)))}function De(e,n,t){return function(e,n){return e&&n&&Un(e)&&e.nodeName===n.nodeName}(n,t)&&function(e,n,t){return e.getStyle(n,"list-style-type",!0)===e.getStyle(t,"list-style-type",!0)}(e,n,t)&&function(e,n){return e.className===n.className}(n,t)}function Ee(n,e,t,r,o){if(e.nodeName!==r||lt(o)){var i=ct(n.selection.getRng(!0));Pn.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.dom.rename(n,t);be(e.dom,o,r),j(e,Oe(t),o)}else be(e.dom,n,r),j(e,Oe(t),n)}(n,e,r,o)}),n.selection.setRng(ft(i))}else ye(n)}function we(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),Xn(e,r)&&gt.remove(r)):gt.setStyle(r,"listStyleType","none")),Un(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)}function ke(e,n,t,r){var o=n.startContainer,i=n.startOffset;if(Mn(o)&&(t?i<o.data.length:0<i))return o;var u=e.schema.getNonEmptyElements();1===o.nodeType&&(o=wn.getNode(o,i));var s=new kn(o,r);for(t&&Kn(e.dom,o)&&s.next();o=s[t?"next":"prev2"]();){if("LI"===o.nodeName&&!o.hasChildNodes())return o;if(u[o.nodeName])return o;if(Mn(o)&&0<o.data.length)return o}}function Ae(e,n){var t=n.childNodes;return 1===t.length&&!Un(t[0])&&e.isBlock(t[0])}function xe(e,n,t){var r,o;if(o=Ae(e,t)?t.firstChild:t,function(e,n){Ae(e,n)&&e.remove(n.firstChild,!0)}(e,n),!Xn(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)}function Re(n,e,t){var r,o,i=e.parentNode;if(Qn(n,e)&&Qn(n,t)){Un(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&qn(i.previousSibling)&&n.remove(i.previousSibling),(r=t.lastChild)&&qn(r)&&e.hasChildNodes()&&n.remove(r),Xn(n,t,!0)&&n.$(t).empty(),xe(n,e,t),o&&t.appendChild(o);var u=Dn(bn.fromDom(t),bn.fromDom(e))?n.getParents(e,Un,t):[];n.remove(e),p(u,function(e){Xn(n,e)&&e!==n.getRoot()&&n.remove(e)})}}function Ie(e,n,t,r){var o=e.dom;if(o.isEmpty(r))!function(e,n,t){e.dom.$(t).empty(),Re(e.dom,n,t),e.selection.setCursorLocation(t)}(e,t,r);else{var i=ct(n);Re(o,t,r),e.selection.setRng(ft(i))}}function _e(e,n){var t=e.dom,r=e.selection,o=r.getStart(),i=Jn.getClosestListRootElm(e,o),u=t.getParent(r.getStart(),"LI",i);if(u){var s=u.parentNode;if(s===e.getBody()&&Xn(t,s))return!0;var a=ut(r.getRng()),c=t.getParent(ke(e,a,n,i),"LI",i);if(c&&c!==u)return e.undoManager.transact(function(){n?Ie(e,a,c,u):Wn(u)?Ne(e):function(e,n,t,r){var o=ct(n);Re(e.dom,t,r);var i=ft(o);e.selection.setRng(i)}(e,a,u,c)}),!0;if(!c&&!n&&0===a.startOffset&&0===a.endOffset)return e.undoManager.transact(function(){ye(e)}),!0}return!1}function Be(e,n){return _e(e,n)||function(e,n){var t=e.dom,r=e.selection.getStart(),o=Jn.getClosestListRootElm(e,r),i=t.getParent(r,t.isBlock,o);if(i&&t.isEmpty(i)){var u=ut(e.selection.getRng()),s=t.getParent(ke(e,u,n,o),"LI",o);if(s)return e.undoManager.transact(function(){!function(e,n,t){var r=e.getParent(n.parentNode,e.isBlock,t);e.remove(n),r&&e.isEmpty(r)&&e.remove(r)}(t,i,o),mt.mergeWithAdjacentLists(t,s.parentNode),e.selection.select(s,!0),e.selection.collapse(n)}),!0}return!1}(e,n)}function Pe(e,n){return e.selection.isCollapsed()?Be(e,n):function(e){var n=e.selection.getStart(),t=Jn.getClosestListRootElm(e,n);return!!(e.dom.getParent(n,"LI,DT,DD",t)||0<Jn.getSelectedListItems(e).length)&&(e.undoManager.transact(function(){e.execCommand("Delete"),pt(e.dom,e.getBody())}),!0)}(e)}function Me(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}}function Ue(n,i){return function(o){function e(e){var n=function(e,n){for(var t=0;t<e.length;t++){if(n(e[t]))return t}return-1}(e.parents,$n),t=-1!==n?e.parents.slice(0,n):e.parents,r=Pn.grep(t,Un);o.setActive(0<r.length&&r[0].nodeName===i&&!Se(r[0]))}return n.on("NodeChange",e),function(){return n.off("NodeChange",e)}}}var Fe,je,He=function(t){function e(){return o}function n(e){return e(t)}var r=l(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:s,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return He(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:a},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(u,function(e){return n(t,e)})}};return o},$e={some:He,none:n,from:function(e){return null===e||e===undefined?a:He(e)}},qe=m("string"),We=m("array"),Ve=m("boolean"),ze=m("function"),Ke=m("number"),Xe=Array.prototype.slice,Qe=Array.prototype.push,Ye=(ze(Array.from)&&Array.from,function(e,n){return C(e,n,r.Node.DOCUMENT_POSITION_CONTAINED_BY)}),Ge=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return Ge(n())}}},Je=function(){return Ze(0,0)},Ze=function(e,n){return{major:e,minor:n}},en={nu:Ze,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Je():b(e,t)},unknown:Je},nn="Edge",tn="Chrome",rn="Opera",on="Firefox",un="Safari",sn=function(e){var n=e.current;return{current:n,version:e.version,isEdge:L(nn,n),isChrome:L(tn,n),isIE:L("IE",n),isOpera:L(rn,n),isFirefox:L(on,n),isSafari:L(un,n)}},an={unknown:function(){return sn({current:undefined,version:en.unknown()})},nu:sn,edge:l(nn),chrome:l(tn),ie:l("IE"),opera:l(rn),firefox:l(on),safari:l(un)},cn="Windows",fn="Android",dn="Solaris",ln="FreeBSD",mn=function(e){var n=e.current;return{current:n,version:e.version,isWindows:T(cn,n),isiOS:T("iOS",n),isAndroid:T(fn,n),isOSX:T("OSX",n),isLinux:T("Linux",n),isSolaris:T(dn,n),isFreeBSD:T(ln,n)}},gn={unknown:function(){return mn({current:undefined,version:en.unknown()})},nu:mn,windows:l(cn),ios:l("iOS"),android:l(fn),linux:l("Linux"),osx:l("OSX"),solaris:l(dn),freebsd:l(ln)},pn=function(e,t){return D(e,t).map(function(e){var n=en.detect(e.versionRegexes,t);return{current:e.name,version:n}})},vn=function(e,t){return D(e,t).map(function(e){var n=en.detect(e.versionRegexes,t);return{current:e.name,version:n}})},hn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Nn=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return E(e,"edge/")&&E(e,"chrome")&&E(e,"safari")&&E(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,hn],search:function(e){return E(e,"chrome")&&!E(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return E(e,"msie")||E(e,"trident")}},{name:"Opera",versionRegexes:[hn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:w("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:w("firefox")},{name:"Safari",versionRegexes:[hn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(E(e,"safari")||E(e,"mobile/"))&&E(e,"applewebkit")}}],yn=[{name:"Windows",search:w("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return E(e,"iphone")||E(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:w("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:w("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:w("linux"),versionRegexes:[]},{name:"Solaris",search:w("sunos"),versionRegexes:[]},{name:"FreeBSD",search:w("freebsd"),versionRegexes:[]}],Sn={browsers:l(Nn),oses:l(yn)},On=Ge(function(e,n){var t=Sn.browsers(),r=Sn.oses(),o=pn(t,e).fold(an.unknown,an.nu),i=vn(r,e).fold(gn.unknown,gn.nu);return{browser:o,os:i,deviceType:function(e,n,t,r){var o=e.isiOS()&&!0===/ipad/i.test(t),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),s=u||r("(pointer:coarse)"),a=o||!i&&u&&r("(min-device-width:768px)"),c=i||u&&!a,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(t),d=!c&&!a&&!f;return{isiPad:l(o),isiPhone:l(i),isTablet:l(a),isPhone:l(c),isTouch:l(s),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:l(f),isDesktop:l(d)}}(i,o,e,n)}}(r.navigator.userAgent,function(e){return r.window.matchMedia(e).matches})),Cn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:l(e)}},bn={fromHtml:function(e,n){var t=(n||r.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw r.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Cn(t.childNodes[0])},fromTag:function(e,n){var t=(n||r.document).createElement(e);return Cn(t)},fromText:function(e,n){var t=(n||r.document).createTextNode(e);return Cn(t)},fromDom:Cn,fromPoint:function(e,n,t){var r=e.dom();return $e.from(r.elementFromPoint(n,t)).map(Cn)}},Ln=(r.Node.ATTRIBUTE_NODE,r.Node.CDATA_SECTION_NODE,r.Node.COMMENT_NODE,r.Node.DOCUMENT_NODE,r.Node.DOCUMENT_TYPE_NODE,r.Node.DOCUMENT_FRAGMENT_NODE,r.Node.ELEMENT_NODE),Tn=(r.Node.TEXT_NODE,r.Node.PROCESSING_INSTRUCTION_NODE,r.Node.ENTITY_REFERENCE_NODE,r.Node.ENTITY_NODE,r.Node.NOTATION_NODE,Ln),Dn=On.get().browser.isIE()?function(e,n){return Ye(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},En=function(e,n){var t=e.dom();if(t.nodeType!==Tn)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")},wn=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),kn=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),An=tinymce.util.Tools.resolve("tinymce.util.VK"),xn=Object.keys,Rn=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),"undefined"!=typeof r.window?r.window:Function("return this;")()),In=function(e,n){var t=function(e,n){return H(e,n)}(e,n);if(t===undefined||null===t)throw new Error(e+" not available on this browser");return t},_n=function(e){return function(e){return In("HTMLElement",e)}(H("ownerDocument.defaultView",e)).prototype.isPrototypeOf(e)},Bn=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Pn=tinymce.util.Tools.resolve("tinymce.util.Tools"),Mn=function(e){return e&&3===e.nodeType},Un=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},Fn=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},jn=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},Hn=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},$n=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},qn=$,Wn=function(e){return e.parentNode.firstChild===e},Vn=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},zn=function(e,n){return e&&e.nodeName in n},Kn=function(e,n){return!!$(n)&&!(!e.isBlock(n.nextSibling)||$(n.previousSibling))},Xn=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},Qn=function(e,n){return e.isChildOf(n,e.getRoot())},Yn=function(e,n){var t=e.dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},Gn=function(n,e){var t=g(e,function(e){return V(n,e).getOr(e)});return Bn.unique(t)},Jn={isList:function(e){var n=q(e);return _n(n)},getParentList:q,getSelectedSubLists:function(e){var n=q(e),t=e.selection.getSelectedBlocks();return function(e,n){return e&&1===n.length&&n[0]===e}(n,t)?function(e){return Pn.grep(e.querySelectorAll("ol,ul,dl"),function(e){return Un(e)})}(n):Pn.grep(t,function(e){return Un(e)&&n!==e})},getSelectedListItems:W,getClosestListRootElm:Yn,getSelectedDlItems:function(e){return v(W(e),jn)},getSelectedListRoots:function(e){var n=function(e){var n=V(e,e.selection.getStart()),t=v(e.selection.getSelectedBlocks(),Fn);return n.toArray().concat(t)}(e);return Gn(e,n)}},Zn=(Fe=Ln,function(e){return function(e){return e.dom().nodeType}(e)===Fe}),et=Object.prototype.hasOwnProperty,nt=(je=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)et.call(o,i)&&(t[i]=je(t[i],o[i]))}return t}),tt=function(n,t,r,e){return y(R(e),function(e){return(te(e)?tt:ae)(n+1,t,r,e)})},rt=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),ot=rt.DOM,it=function(e,n,t){var r,o,i,u,s,a;for(i=ot.select('span[data-mce-type="bookmark"]',n),s=z(e,t),(r=ot.createRng()).setStartAfter(t),r.setEndAfter(n),u=(o=r.extractContents()).firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){ot.remove(u);break}e.dom.isEmpty(o)||ot.insertAfter(o,n),ot.insertAfter(s,n),Xn(e.dom,t.parentNode)&&(a=t.parentNode,Pn.each(i,function(e){a.parentNode.insertBefore(e,t.parentNode)}),ot.remove(a)),ot.remove(t),Xn(e.dom,n)&&ot.remove(n)},ut=function(e){var n=e.cloneRange(),t=pe(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=pe(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},st=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),at=rt.DOM,ct=function(o){function e(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=at.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):at.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r}var i={};return e(!0),o.collapsed||e(),i},ft=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,at.remove(r),!n.hasChildNodes()&&at.isBlock(n)&&n.appendChild(at.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=at.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),ut(n)},dt=function(e,n){var t,r;if(t=n.nextSibling,De(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,De(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},lt=function(e){return"list-style-type"in e},mt={toggleList:function(e,n,t){var r=Jn.getParentList(e),o=Jn.getSelectedSubLists(e);t=t||{},r&&0<o.length?Ee(e,r,o,n,t):function(e,n,t,r){if(n!==e.getBody())if(n)if(n.nodeName!==t||lt(r)||Se(n)){var o=ct(e.selection.getRng(!0));be(e.dom,n,r);var i=e.dom.rename(n,t);dt(e.dom,i),e.selection.setRng(ft(o)),j(e,Oe(t),i)}else ye(e);else Te(e,t,r),j(e,Oe(t),n)}(e,r,n,t)},mergeWithAdjacentLists:dt},gt=rt.DOM,pt=function(n,e){Pn.each(Pn.grep(n.select("ol,ul",e)),function(e){we(n,e)})},vt=function(n){n.on("keydown",function(e){e.keyCode===An.BACKSPACE?Pe(n,!1)&&e.preventDefault():e.keyCode===An.DELETE&&Pe(n,!0)&&e.preventDefault()})},ht=Pe,Nt=function(n){return{backspaceDelete:function(e){ht(n,e)}}},yt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerCase();"indent"===n?he(t):"outdent"===n&&Ne(t)}),t.addCommand("InsertUnorderedList",function(e,n){mt.toggleList(t,"UL",n)}),t.addCommand("InsertOrderedList",function(e,n){mt.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){mt.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){ye(t)}),t.addQueryStateHandler("InsertUnorderedList",Me(t,"UL")),t.addQueryStateHandler("InsertOrderedList",Me(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",Me(t,"DL"))},St=function(e){return e.getParam("lists_indent_on_tab",!0)},Ot=function(e){St(e)&&function(n){n.on("keydown",function(e){e.keyCode!==An.TAB||An.metaKeyPressed(e)||n.undoManager.transact(function(){(e.shiftKey?Ne(n):he(n))&&e.preventDefault()})})}(e),vt(e)},Ct=function(n){function e(e){return function(){return n.execCommand(e)}}var t,r,o;r="advlist",o=(t=n).settings.plugins?t.settings.plugins:"",-1===Pn.inArray(o.split(/[ ,]/),r)&&(n.ui.registry.addToggleButton("numlist",{icon:"ordered-list",active:!1,tooltip:"Numbered list",onAction:e("InsertOrderedList"),onSetup:Ue(n,"OL")}),n.ui.registry.addToggleButton("bullist",{icon:"unordered-list",active:!1,tooltip:"Bullet list",onAction:e("InsertUnorderedList"),onSetup:Ue(n,"UL")}))};!function bt(){i.add("lists",function(e){return Ot(e),Ct(e),yt(e),Nt(e)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/media/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/media/plugin.min.js
deleted file mode 100644 (file)
index 66d7bde..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function e(){}function o(e){return function(){return e}}function t(){return u}var r,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(){return(d=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},a=o(!1),c=o(!0),u=(r={fold:function(e,t){return e()},is:a,isSome:a,isNone:c,getOr:l,getOrThunk:s,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:l,orThunk:s,map:t,each:e,bind:t,exists:a,forall:c,filter:t,equals:i,equals_:i,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(r),r);function i(e){return e.isNone()}function s(e){return e()}function l(e){return e}function m(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}}function f(e,t){for(var r=0,n=e.length;r<n;r++){t(e[r],r)}}function h(e,t){return G(e,t)?E(e[t]):D()}function p(t){return function(e){return e?function(e){return e.replace(/px$/,"")}(e.style[t]):""}}function g(r){return function(e,t){e&&(e.style[r]=function(e){return/^[0-9.]+$/.test(e)?e+"px":e}(t))}}function v(e,t){if(e)for(var r=0;r<e.length;r++)if(-1!==t.indexOf(e[r].filter))return e[r]}function b(e){return ae.getAttrib(e,"data-ephox-embed-iri")}function w(e,t){return function(e){var t=ae.createFragment(e);return""!==b(t.firstChild)}(t)?function(e){var t=ae.createFragment(e).firstChild;return{type:"ephox-embed-iri",source1:b(t),source2:"",poster:"",width:oe.getMaxWidth(t),height:oe.getMaxHeight(t)}}(t):function(n,e){var i={};return ne({validate:!1,allow_conditional_comments:!0,start:function(e,t){if(i.source1||"param"!==e||(i.source1=t.map.movie),"iframe"!==e&&"object"!==e&&"embed"!==e&&"video"!==e&&"audio"!==e||(i.type||(i.type=e),i=re.extend(t.map,i)),"script"===e){var r=v(n,t.map.src);if(!r)return;i={type:"script",source1:t.map.src,width:String(r.width),height:String(r.height)}}"source"===e&&(i.source1?i.source2||(i.source2=t.map.src):i.source1=t.map.src),"img"!==e||i.poster||(i.poster=t.map.src)}}).parse(e),i.source1=i.source1||i.src||i.data,i.source2=i.source2||"",i.poster=i.poster||"",i}(e,t)}function y(e,t){var r,n,i,o;for(r in t)if(i=""+t[r],e.map[r])for(n=e.length;n--;)(o=e[n]).name===r&&(i?(e.map[r]=i,o.value=i):(delete e.map[r],e.splice(n,1)));else i&&(e.push({name:r,value:i}),e.map[r]=i)}function x(e,t){var r=me.createFragment(e).firstChild;return oe.setMaxWidth(r,t.width),oe.setMaxHeight(r,t.height),function(e){var t=se();return ne(t).parse(e),t.getContent()}(r.outerHTML)}function j(r,e){var n=re.extend({},e);if(!n.source1&&(re.extend(n,w(J(r),n.embed)),!n.source1))return"";n.source2||(n.source2=""),n.poster||(n.poster=""),n.source1=r.convertURL(n.source1,"source"),n.source2=r.convertURL(n.source2,"source"),n.source1mime=ue(n.source1),n.source2mime=ue(n.source2),n.poster=r.convertURL(n.poster,"poster");var t=function(t){var e=fe.filter(function(e){return e.regex.test(t)});return 0<e.length?re.extend({},e[0],{url:function(e,t){for(var r=e.regex.exec(t),n=e.url,i=function(e){n=n.replace("$"+e,function(){return r[e]?r[e]:""})},o=0;o<r.length;o++)i(o);return n.replace(/\?$/,"")}(e[0],t)}):null}(n.source1);if(t&&(n.source1=t.url,n.type=t.type,n.allowFullscreen=t.allowFullscreen,n.width=n.width||String(t.w),n.height=n.height||String(t.h)),n.embed)return de(n.embed,n,!0);var i=v(J(r),n.source1);i&&(n.type="script",n.width=String(i.width),n.height=String(i.height));var o=K(r),a=Q(r);return n.width=n.width||"300",n.height=n.height||"150",re.each(n,function(e,t){n[t]=r.dom.encode(""+e)}),"iframe"===n.type?function(e){var t=e.allowFullscreen?' allowFullscreen="1"':"";return'<iframe src="'+e.source1+'" width="'+e.width+'" height="'+e.height+'"'+t+"></iframe>"}(n):"application/x-shockwave-flash"===n.source1mime?function(e){var t='<object data="'+e.source1+'" width="'+e.width+'" height="'+e.height+'" type="application/x-shockwave-flash">';return e.poster&&(t+='<img src="'+e.poster+'" width="'+e.width+'" height="'+e.height+'" />'),t+="</object>"}(n):-1!==n.source1mime.indexOf("audio")?function(e,t){return t?t(e):'<audio controls="controls" src="'+e.source1+'">'+(e.source2?'\n<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</audio>"}(n,o):"script"===n.type?function(e){return'<script src="'+e.source1+'"><\/script>'}(n):function(e,t){return t?t(e):'<video width="'+e.width+'" height="'+e.height+'"'+(e.poster?' poster="'+e.poster+'"':"")+' controls="controls">\n<source src="'+e.source1+'"'+(e.source1mime?' type="'+e.source1mime+'"':"")+" />\n"+(e.source2?'<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</video>"}(n,a)}function O(t){return function(e){return j(t,e)}}function A(e){var r=q(e,{source1:e.source1.value,source2:h(e,"source2").bind(function(e){return h(e,"value")}).getOr(""),poster:h(e,"poster").bind(function(e){return h(e,"value")}).getOr("")});return h(e,"dimensions").each(function(e){f(["width","height"],function(t){h(e,t).each(function(e){return r[t]=e})})}),r}function S(e){var n=q(e,{source1:{value:h(e,"source1").getOr("")},source2:{value:h(e,"source2").getOr("")},poster:{value:h(e,"poster").getOr("")}});return f(["width","height"],function(r){h(e,r).each(function(e){var t=n.dimensions||{};t[r]=e,n.dimensions=t})}),n}function _(r){return function(e){var t=e&&e.msg?"Media embed handler error: "+e.msg:"Media embed handler threw unknown error.";r.notificationManager.open({type:"error",text:t})}}function C(e,t){return w(J(e),t)}function M(i,o){return function(e){if(N(e.url)&&0<e.url.trim().length){var t=e.html,r=C(o,t),n=d(d({},r),{source1:e.url,embed:t});i.setData(S(n))}}}function F(e,t){var r=e.dom.select("img[data-mce-object]");e.insertContent(t),function(e,t){for(var r=e.dom.select("img[data-mce-object]"),n=0;n<t.length;n++)for(var i=r.length-1;0<=i;i--)t[n]===r[i]&&r.splice(i,1);e.selection.select(r[0])}(e,r),e.nodeChanged()}function P(e,t){var r,n=t.name;return(r=new ye("img",1)).shortEnded=!0,Oe(e,t,r),r.attr({width:t.attr("width")||"300",height:t.attr("height")||("audio"===n?"30":"150"),style:t.attr("style"),src:xe.transparentSrc,"data-mce-object":n,"class":"mce-object mce-object-"+n}),r}function k(e,t){var r,n,i,o=t.name;return(r=new ye("span",1)).attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":o,"class":"mce-preview-object mce-object-"+o}),Oe(e,t,r),(n=new ye(o,1)).attr({src:t.attr("src"),allowfullscreen:t.attr("allowfullscreen"),style:t.attr("style"),"class":t.attr("class"),width:t.attr("width"),height:t.attr("height"),frameborder:"0"}),(i=new ye("span",1)).attr("class","mce-shim"),r.append(n),r.append(i),r}function T(e){for(;e=e.parent;)if(e.attr("data-ephox-embed-iri")||(void 0,(t=e.attr("class"))&&/\btiny-pageembed\b/.test(t)))return!0;var t;return!1}var $,z=function(r){function e(){return i}function t(e){return e(r)}var n=o(r),i={fold:function(e,t){return t(r)},is:function(e){return r===e},isSome:c,isNone:a,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(e){return z(e(r))},each:function(e){e(r)},bind:t,exists:t,forall:t,filter:function(e){return e(r)?i:u},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,t){return e.fold(a,function(e){return t(r,e)})}};return i},D=t,E=function(e){return null===e||e===undefined?u:z(e)},N=m("string"),U=m("array"),R=m("function"),L=Array.prototype.slice,W=Array.prototype.push,H=(R(Array.from)&&Array.from,function(e){function t(){return r}var r=e;return{get:t,set:function(e){r=e},clone:function(){return H(t())}}}),I=Object.prototype.hasOwnProperty,q=($=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var r={},n=0;n<e.length;n++){var i=e[n];for(var o in i)I.call(i,o)&&(r[o]=$(r[o],i[o]))}return r}),B=Object.hasOwnProperty,G=function(e,t){return B.call(e,t)},J=function(e){return e.getParam("media_scripts")},K=function(e){return e.getParam("audio_template_callback")},Q=function(e){return e.getParam("video_template_callback")},V=function(e){return e.getParam("media_live_embeds",!0)},X=function(e){return e.getParam("media_filter_html",!0)},Y=function(e){return e.getParam("media_url_resolver")},Z=function(e){return e.getParam("media_alt_source",!0)},ee=function(e){return e.getParam("media_poster",!0)},te=function(e){return e.getParam("media_dimensions",!0)},re=tinymce.util.Tools.resolve("tinymce.util.Tools"),ne=tinymce.util.Tools.resolve("tinymce.html.SaxParser"),ie=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),oe={getMaxWidth:p("maxWidth"),getMaxHeight:p("maxHeight"),setMaxWidth:g("maxWidth"),setMaxHeight:g("maxHeight")},ae=ie.DOM,ce=tinymce.util.Tools.resolve("tinymce.util.Promise"),ue=function(e){var t={mp3:"audio/mpeg",m4a:"audio/x-m4a",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"}[e.toLowerCase().split(".").pop()];return t||""},se=tinymce.util.Tools.resolve("tinymce.html.Writer"),le=tinymce.util.Tools.resolve("tinymce.html.Schema"),me=ie.DOM,de=function(e,t,r){return function(e){var t=me.createFragment(e);return""!==me.getAttrib(t.firstChild,"data-ephox-embed-iri")}(e)?x(e,t):function(e,i,o){var a,c=se(),u=0;return ne({validate:!1,allow_conditional_comments:!0,comment:function(e){c.comment(e)},cdata:function(e){c.cdata(e)},text:function(e,t){c.text(e,t)},start:function(e,t,r){switch(e){case"video":case"object":case"embed":case"img":case"iframe":i.height!==undefined&&i.width!==undefined&&y(t,{width:i.width,height:i.height})}if(o)switch(e){case"video":y(t,{poster:i.poster,src:""}),i.source2&&y(t,{src:""});break;case"iframe":y(t,{src:i.source1});break;case"source":if(++u<=2&&(y(t,{src:i["source"+u],type:i["source"+u+"mime"]}),!i["source"+u]))return;break;case"img":if(!i.poster)return;a=!0}c.start(e,t,r)},end:function(e){if("video"===e&&o)for(var t=1;t<=2;t++)if(i["source"+t]){var r=[];r.map={},u<t&&(y(r,{src:i["source"+t],type:i["source"+t+"mime"]}),c.start("source",r,!0))}if(i.poster&&"object"===e&&o&&!a){var n=[];n.map={},y(n,{src:i.poster,width:i.width,height:i.height}),c.start("img",n,!0)}c.end(e)}},le({})).parse(e),c.getContent()}(e,t,r)},fe=[{regex:/youtu\.be\/([\w\-_\?&=.]+)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$2?$4",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowFullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0",allowFullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0},{regex:/dai\.ly\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],he={},pe=function(e,t){var r=Y(e);return r?function(n,i,o){return new ce(function(t,e){function r(e){return e.html&&(he[n.source1]=e),t({url:n.source1,html:e.html?e.html:i(n)})}he[n.source1]?r(he[n.source1]):o({url:n.source1},r,e)})}(t,O(e),r):function(t,r){return new ce(function(e){e({html:r(t),url:t.source1})})}(t,O(e))},ge=function(e){return he.hasOwnProperty(e)},ve=function(n){function i(e){return A(e.getData())}var e=function(e){var t=e.selection.getNode(),r=function(e){return e.getAttribute("data-mce-object")||e.getAttribute("data-ephox-embed-iri")}(t)?e.serializer.serialize(t,{selection:!0}):"";return q({embed:r},w(J(e),r))}(n),r=H(e),t=S(e),o={title:"General",name:"general",items:function(e){for(var t=[],r=0,n=e.length;r<n;++r){if(!U(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);W.apply(t,e[r])}return t}([[{name:"source1",type:"urlinput",filetype:"media",label:"Source"}],te(n)?[{type:"sizeinput",name:"dimensions",label:"Constrain proportions",constrain:!0}]:[]])},a={title:"Embed",items:[{type:"textarea",name:"embed",label:"Paste your embed code below:"}]},c=[];Z(n)&&c.push({name:"source2",type:"urlinput",filetype:"media",label:"Alternative source URL"}),ee(n)&&c.push({name:"poster",type:"urlinput",filetype:"image",label:"Media poster (Image URL)"});var u={title:"Advanced",name:"advanced",items:c},s=[o,a];0<c.length&&s.push(u);var l={type:"tabpanel",tabs:s},m=n.windowManager.open({title:"Insert/Edit Media",size:"normal",body:l,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(e){var t=i(e);!function(e,t,r){t.embed=de(t.embed,t),t.embed&&(e.source1===t.source1||ge(t.source1))?F(r,t.embed):pe(r,t).then(function(e){F(r,e.html)})["catch"](_(r))}(r.get(),t,n),e.close()},onChange:function(e,t){switch(t.name){case"source1":!function(e,t){var r=i(t);e.source1!==r.source1&&(M(m,n)({url:r.source1,html:""}),pe(n,r).then(M(m,n))["catch"](_(n)))}(r.get(),e);break;case"embed":!function(e){var t=A(e.getData()),r=C(n,t.embed);e.setData(S(r))}(e);break;case"dimensions":case"poster":!function(e){var t=i(e),r=j(n,t);e.setData(S(d(d({},t),{embed:r})))}(e)}r.set(i(e))},initialData:t})},be=function(e){return{showDialog:function(){ve(e)}}},we=function(e){e.addCommand("mceMedia",function(){ve(e)})},ye=tinymce.util.Tools.resolve("tinymce.html.Node"),xe=tinymce.util.Tools.resolve("tinymce.Env"),je=function(i,e){if(!1===X(i))return e;var o,a=se();return ne({validate:!1,allow_conditional_comments:!1,comment:function(e){a.comment(e)},cdata:function(e){a.cdata(e)},text:function(e,t){a.text(e,t)},start:function(e,t,r){if(o=!0,"script"!==e&&"noscript"!==e){for(var n=0;n<t.length;n++){if(0===t[n].name.indexOf("on"))return;"style"===t[n].name&&(t[n].value=i.dom.serializeStyle(i.dom.parseStyle(t[n].value),e))}a.start(e,t,r),o=!1}},end:function(e){o||a.end(e)}},le({})).parse(e),a.getContent()},Oe=function(e,t,r){var n,i,o,a,c;for(a=(o=t.attributes).length;a--;)n=o[a].name,i=o[a].value,"width"!==n&&"height"!==n&&"style"!==n&&("data"!==n&&"src"!==n||(i=e.convertURL(i,n)),r.attr("data-mce-p-"+n,i));(c=t.firstChild&&t.firstChild.value)&&(r.attr("data-mce-html",escape(je(e,c))),r.firstChild=null)},Ae=function(i){return function(e){for(var t,r,n=e.length;n--;)(t=e[n]).parent&&(t.parent.attr("data-mce-object")||"script"===t.name&&!(r=v(J(i),t.attr("src")))||(r&&(r.width&&t.attr("width",r.width.toString()),r.height&&t.attr("height",r.height.toString())),"iframe"===t.name&&V(i)&&xe.ceFalse?T(t)||t.replace(k(i,t)):T(t)||t.replace(P(i,t))))}},Se=function(d){d.on("preInit",function(){var t=d.schema.getSpecialElements();re.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")});var r=d.schema.getBoolAttrs();re.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){r[e]={}}),d.parser.addNodeFilter("iframe,video,audio,object,embed,script",Ae(d)),d.serializer.addAttributeFilter("data-mce-object",function(e,t){for(var r,n,i,o,a,c,u,s,l=e.length;l--;)if((r=e[l]).parent){for(u=r.attr(t),n=new ye(u,1),"audio"!==u&&"script"!==u&&((s=r.attr("class"))&&-1!==s.indexOf("mce-preview-object")?n.attr({width:r.firstChild.attr("width"),height:r.firstChild.attr("height")}):n.attr({width:r.attr("width"),height:r.attr("height")})),n.attr({style:r.attr("style")}),i=(o=r.attributes).length;i--;){var m=o[i].name;0===m.indexOf("data-mce-p-")&&n.attr(m.substr(11),o[i].value)}"script"===u&&n.attr("type","text/javascript"),(a=r.attr("data-mce-html"))&&((c=new ye("#text",3)).raw=!0,c.value=je(d,unescape(a)),n.append(c)),r.replace(n)}})}),d.on("SetContent",function(){d.$("span.mce-preview-object").each(function(e,t){var r=d.$(t);0===r.find("span.mce-shim").length&&r.append('<span class="mce-shim"></span>')})})},_e=function(e){e.on("ResolveName",function(e){var t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)})},Ce=function(t){t.on("click keyup touchend",function(){var e=t.selection.getNode();e&&t.dom.hasClass(e,"mce-preview-object")&&t.dom.getAttrib(e,"data-mce-selected")&&e.setAttribute("data-mce-selected","2")}),t.on("ObjectSelected",function(e){var t=e.target.getAttribute("data-mce-object");"audio"!==t&&"script"!==t||e.preventDefault()}),t.on("ObjectResized",function(e){var t,r=e.target;r.getAttribute("data-mce-object")&&(t=r.getAttribute("data-mce-html"))&&(t=unescape(t),r.setAttribute("data-mce-html",escape(de(t,{width:String(e.width),height:String(e.height)}))))})},Me=function(e){e.ui.registry.addToggleButton("media",{tooltip:"Insert/edit media",icon:"embed",onAction:function(){e.execCommand("mceMedia")},onSetup:function(t,r){return function(e){return t.selection.selectorChangedWithUnbind(r.join(","),e.setActive).unbind}}(e,["img[data-mce-object]","span[data-mce-object]","div[data-ephox-embed-iri]"])}),e.ui.registry.addMenuItem("media",{icon:"embed",text:"Media...",onAction:function(){e.execCommand("mceMedia")}})};!function Fe(){n.add("media",function(e){return we(e),Me(e),_e(e),Se(e),Ce(e),be(e)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js
deleted file mode 100644 (file)
index dec526b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function o(n,e){for(var t="",o=0;o<e;o++)t+=n;return t}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n){var e=n.getParam("nonbreaking_force_tab",0);return"boolean"==typeof e?!0===e?3:0:e},a=function(n){return n.getParam("nonbreaking_wrap",!0,"boolean")},r=function(n,e){var t=a(n)||n.plugins.visualchars?'<span class="'+(function(n){return!!n.plugins.visualchars&&n.plugins.visualchars.isEnabled()}(n)?"mce-nbsp-wrap mce-nbsp":"mce-nbsp-wrap")+'" contenteditable="false">'+o("&nbsp;",e)+"</span>":o("&nbsp;",e);n.undoManager.transact(function(){return n.insertContent(t)})},e=function(n){n.addCommand("mceNonBreaking",function(){r(n,1)})},c=tinymce.util.Tools.resolve("tinymce.util.VK"),t=function(e){var t=i(e);0<t&&e.on("keydown",function(n){if(n.keyCode===c.TAB&&!n.isDefaultPrevented()){if(n.shiftKey)return;n.preventDefault(),n.stopImmediatePropagation(),r(e,t)}})},u=function(n){n.ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:function(){return n.execCommand("mceNonBreaking")}}),n.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:function(){return n.execCommand("mceNonBreaking")}})};!function s(){n.add("nonbreaking",function(n){e(n),u(n),t(n)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/noneditable/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/noneditable/plugin.min.js
deleted file mode 100644 (file)
index d87286d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function c(n){return function(t){return-1!==(" "+t.attr("class")+" ").indexOf(n)}}function l(i,o,c){return function(t){var n=arguments,e=n[n.length-2],r=0<e?o.charAt(e-1):"";if('"'===r)return t;if(">"===r){var a=o.lastIndexOf("<",e);if(-1!==a)if(-1!==o.substring(a,e).indexOf('contenteditable="false"'))return t}return'<span class="'+c+'" data-mce-content="'+i.dom.encode(n[0])+'">'+i.dom.encode("string"==typeof n[1]?n[1]:n[0])+"</span>"}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=function(t){return t.getParam("noneditable_noneditable_class","mceNonEditable")},s=function(t){return t.getParam("noneditable_editable_class","mceEditable")},d=function(t){var n=t.getParam("noneditable_regexp",[]);return n&&n.constructor===RegExp?[n]:n},n=function(n){var t,e,r="contenteditable";t=" "+u.trim(s(n))+" ",e=" "+u.trim(f(n))+" ";var a=c(t),i=c(e),o=d(n);n.on("PreInit",function(){0<o.length&&n.on("BeforeSetContent",function(t){!function(t,n,e){var r=n.length,a=e.content;if("raw"!==e.format){for(;r--;)a=a.replace(n[r],l(t,a,f(t)));e.content=a}}(n,o,t)}),n.parser.addAttributeFilter("class",function(t){for(var n,e=t.length;e--;)n=t[e],a(n)?n.attr(r,"true"):i(n)&&n.attr(r,"false")}),n.serializer.addAttributeFilter(r,function(t){for(var n,e=t.length;e--;)n=t[e],(a(n)||i(n))&&(0<o.length&&n.attr("data-mce-content")?(n.name="#text",n.type=3,n.raw=!0,n.value=n.attr("data-mce-content")):n.attr(r,null))})})};!function e(){t.add("noneditable",function(t){n(t)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js
deleted file mode 100644 (file)
index 6dd0bac..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function e(){return"mce-pagebreak"}function a(){return'<img src="'+t.transparentSrc+'" class="mce-pagebreak" data-mce-resize="false" data-mce-placeholder />'}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),r=function(e){return e.getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e")},i=function(e){return e.getParam("pagebreak_split_block",!1)},o=function(o){var c=r(o),n=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi");o.on("BeforeSetContent",function(e){e.content=e.content.replace(n,a())}),o.on("PreInit",function(){o.serializer.addNodeFilter("img",function(e){for(var n,a,t=e.length;t--;)if((a=(n=e[t]).attr("class"))&&-1!==a.indexOf("mce-pagebreak")){var r=n.parent;if(o.schema.getBlockElements()[r.name]&&i(o)){r.type=3,r.value=c,r.raw=!0,n.remove();continue}n.type=3,n.value=c,n.raw=!0}})})},c=a,u=e,g=function(e){e.addCommand("mcePageBreak",function(){e.settings.pagebreak_split_block?e.insertContent("<p>"+c()+"</p>"):e.insertContent(c())})},m=function(n){n.on("ResolveName",function(e){"IMG"===e.target.nodeName&&n.dom.hasClass(e.target,u())&&(e.name="pagebreak")})},s=function(e){e.ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:function(){return e.execCommand("mcePageBreak")}}),e.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:function(){return e.execCommand("mcePageBreak")}})};!function l(){n.add("pagebreak",function(e){g(e),s(e),o(e),m(e)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/paste/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/paste/plugin.min.js
deleted file mode 100644 (file)
index 1b4d0bb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(f){"use strict";function t(){}function i(t){return function(){return t}}function e(){return v}var n,d=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return d(e())}}},r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!r.get("powerpaste"))&&("undefined"!=typeof f.window.console&&f.window.console.log&&f.window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),!0)},a=function(t,e){return{clipboard:t,quirks:e}},s=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},c=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},o=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},m=function(t,e){return t.fire("paste",{ieFake:e})},l=function(t,e){"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),o(t,!1)):(e.pasteFormat.set("text"),o(t,!0)),t.focus()},p=function(t,n){t.addCommand("mceTogglePlainTextPaste",function(){l(t,n)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},g=i(!1),h=i(!0),v=(n={fold:function(t,e){return t()},is:g,isSome:g,isNone:h,getOr:w,getOrThunk:b,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:w,orThunk:b,map:e,each:t,bind:e,exists:g,forall:h,filter:e,equals:y,equals_:y,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(n),n);function y(t){return t.isNone()}function b(t){return t()}function w(t){return t}function x(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o)}return r}function _(t,e){for(var n=0,r=t.length;n<r;n++){e(t[n],n)}}var P,T,D,C,k,F=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:h,isNone:g,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return F(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:v},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(g,function(t){return e(n,t)})}};return o},S={some:F,none:e,from:function(t){return null===t||t===undefined?v:F(t)}},E=(P="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"==e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===P}),I=Array.prototype.slice,R=E(Array.from)?Array.from:function(t){return I.call(t)},O={},A={exports:O};T=undefined,D=O,C=A,k=undefined,function(t){"object"==typeof D&&void 0!==C?C.exports=t():"function"==typeof T&&T.amd?T([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function l(i,u,a){function s(e,t){if(!u[e]){if(!i[e]){var n="function"==typeof k&&k;if(!t&&n)return n(e,!0);if(c)return c(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[e]={exports:{}};i[e][0].call(o.exports,function(t){return s(i[e][1][t]||t)},o,o.exports,l,i,u,a)}return u[e].exports}for(var c="function"==typeof k&&k,t=0;t<a.length;t++)s(a[t]);return s}({1:[function(t,e,n){var r,o,i=e.exports={};function u(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===u||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:u}catch(t){r=u}try{o="function"==typeof clearTimeout?clearTimeout:a}catch(t){o=a}}();var c,l=[],f=!1,d=-1;function m(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&p())}function p(){if(!f){var t=s(m);f=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,f=!1,function n(t){if(o===clearTimeout)return clearTimeout(t);if((o===a||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(t);try{return o(t)}catch(e){try{return o.call(null,t)}catch(e){return o.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function h(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new g(t,e)),1!==l.length||f||s(p)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(t,f,e){(function(e){function r(){}function i(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(t,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var t=1===r._state?o.onFulfilled:o.onRejected;if(null!==t){var e;try{e=t(r._value)}catch(n){return void a(o.promise,n)}u(o.promise,e)}else(1===r._state?u:a)(o.promise,r._value)})):r._deferreds.push(o)}function u(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void l(function r(t,e){return function(){t.apply(e,arguments)}}(n,e),t)}t._state=1,t._value=e,s(t)}catch(o){a(t,o)}}function a(t,e){t._state=2,t._value=e,s(t)}function s(t){2===t._state&&0===t._deferreds.length&&i._immediateFn(function(){t._handled||i._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)o(t,t._deferreds[e]);t._deferreds=null}function c(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function l(t,e){var n=!1;try{t(function(t){n||(n=!0,u(e,t))},function(t){n||(n=!0,a(e,t))})}catch(r){if(n)return;n=!0,a(e,r)}}var t,n;t=this,n=setTimeout,i.prototype["catch"]=function(t){return this.then(null,t)},i.prototype.then=function(t,e){var n=new this.constructor(r);return o(this,new c(t,e,n)),n},i.all=function(t){var s=Array.prototype.slice.call(t);return new i(function(o,i){if(0===s.length)return o([]);var u=s.length;function a(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){a(e,t)},i)}s[e]=t,0==--u&&o(s)}catch(r){i(r)}}for(var t=0;t<s.length;t++)a(t,s[t])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(t){t(e)})},i.reject=function(n){return new i(function(t,e){e(n)})},i.race=function(o){return new i(function(t,e){for(var n=0,r=o.length;n<r;n++)o[n].then(t,e)})},i._immediateFn="function"==typeof e?function(t){e(t)}:function(t){n(t,0)},i._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},i._setImmediateFn=function(t){i._immediateFn=t},i._setUnhandledRejectionFn=function(t){i._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=i:t.Promise||(t.Promise=i)}).call(this,t("timers").setImmediate)},{timers:3}],3:[function(s,t,c){(function(t,e){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},u=0;function a(t,e){this._id=t,this._clearFn=e}c.setTimeout=function(){return new a(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new a(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(t){t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},c.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},c._unrefActive=c.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},c.setImmediate="function"==typeof t?t:function(t){var e=u++,n=!(arguments.length<2)&&o.call(arguments,1);return i[e]=!0,r(function(){i[e]&&(n?t.apply(null,n):t.call(null),c.clearImmediate(e))}),e},c.clearImmediate="function"==typeof e?e:function(t){delete i[t]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,e,n){var r=t("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function j(t){f.setTimeout(function(){throw t},0)}function M(i,t){return t(function(n){var r=[],o=0;0===i.length?n([]):_(i,function(t,e){t.get(function(e){return function(t){r[e]=t,++o>=i.length&&n(r)}}(e))})})}function L(t,e){return function(t){return M(t,z)}(x(t,e))}function N(t){return t.replace(/\r?\n/g,"<br>")}function B(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+et.encodeAllRaw(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",u=q.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===u.length?u[0]:q.map(u,function(t){return o+t+i}).join("")}var H=A.exports.boltExport,$=function(t){var n=S.none(),e=[],r=function(t){o()?u(t):e.push(t)},o=function(){return n.isSome()},i=function(t){_(t,u)},u=function(e){n.each(function(t){f.setTimeout(function(){e(t)},0)})};return t(function(t){n=S.some(t),i(e),e=[]}),{get:r,map:function(n){return $(function(e){r(function(t){e(n(t))})})},isReady:o}},W={nu:$,pure:function(e){return $(function(t){t(e)})}},U=function(n){function t(t){n().then(t,j)}return{map:function(t){return U(function(){return n().then(t)})},bind:function(e){return U(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return U(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return W.nu(t)},toCached:function(){var t=null;return U(function(){return null===t&&(t=n()),t})},toPromise:n,get:t}},z=function(t){return U(function(){return new H(t)})},V=tinymce.util.Tools.resolve("tinymce.Env"),K=tinymce.util.Tools.resolve("tinymce.util.Delay"),q=tinymce.util.Tools.resolve("tinymce.util.Tools"),G=tinymce.util.Tools.resolve("tinymce.util.VK"),X="x-tinymce/html",Y="\x3c!-- "+X+" --\x3e",Z=function(t){return Y+t},J=function(t){return t.replace(Y,"")},Q=function(t){return-1!==t.indexOf(Y)},tt=function(){return X},et=tinymce.util.Tools.resolve("tinymce.html.Entities"),nt=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},rt=function(t,e,n){return e?B(t,!0===e?"p":e,n):N(t)},ot=tinymce.util.Tools.resolve("tinymce.html.DomParser"),it=tinymce.util.Tools.resolve("tinymce.html.Serializer"),ut=tinymce.util.Tools.resolve("tinymce.html.Node"),at=tinymce.util.Tools.resolve("tinymce.html.Schema"),st={shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam("paste_retain_style_properties")},getWordValidElements:function(t){return t.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")},shouldConvertWordFakeLists:function(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}};function ct(e,t){return q.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var lt={filter:ct,innerText:function se(t){var e=at(),n=ot({},e),r="",o=e.getShortEndedElements(),i=q.makeMap("script noscript style textarea video audio iframe object"," "),u=e.getBlockElements();return t=ct(t,[/<!\[[^\]]+\]>/g]),function a(t){var e=t.name,n=t;if("br"!==e){if("wbr"!==e)if(o[e]&&(r+=" "),i[e])r+=" ";else{if(3===t.type&&(r+=t.value),!t.shortEnded&&(t=t.firstChild))for(;a(t),t=t.next;);u[e]&&n.next&&(r+="\n","p"===e&&(r+="\n"))}}else r+="\n"}(n.parse(t)),r},trimHtml:function ce(t){return t=ct(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function r(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function le(t){var e=0;return function(){return t+e++}},isMsEdge:function(){return-1!==f.navigator.userAgent.indexOf(" Edge/")}};function ft(e){var n,t;return t=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],e=e.replace(/^[\u00a0 ]+/,""),q.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function dt(t){var i,u,a=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function s(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!s(t,e))return!1}while(t=t.next);return!0}function e(t,e,n){var r=t._listLevel||a;r!==a&&(i=r<a?i&&i.parent.parent:(u=i,null)),i&&i.name===e?i.append(t):(u=u||i,i=new ut(e,1),1<n&&i.attr("start",""+n),t.wrap(i)),t.name="li",a<r&&u&&u.lastChild.append(i),a=r,function o(t){if(t._listIgnore)t.remove();else if(t=t.firstChild)for(;o(t),t=t.next;);}(t),s(t,/^\u00a0+/),s(t,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),s(t,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var c=0;c<r.length;c++)if("p"===(t=r[c]).name&&t.firstChild){var l=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(l)){e(t,"ul");continue}if(ft(l)){var f=/([0-9]+)\./.exec(l),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else u=i,i=null}function mt(n,r,o,i){var u,a={},t=n.dom.parseStyle(i);return q.each(t,function(t,e){switch(e){case"mso-list":(u=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(u[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgnore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!==t&&(a[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===st.getRetainStyleProps(n)||r&&r[e])&&(a[e]=t):o.remove()}),/(bold)/i.test(a["font-weight"])&&(delete a["font-weight"],o.wrap(new ut("b",1))),/(italic)/i.test(a["font-style"])&&(delete a["font-style"],o.wrap(new ut("i",1))),(a=n.dom.serializeStyle(a,o.name))||null}function pt(t,e){return{content:t,cancelled:e}}function gt(t,e,n,r){var o=s(t,e,n,r),i=function(t,e){var n=ot({},t.schema);n.addNodeFilter("meta",function(t){q.each(t,function(t){return t.remove()})});var r=n.parse(e,{forced_root_block:!1,isRootContent:!0});return it({validate:t.settings.validate},t.schema).serialize(r)}(t,o.content);return t.hasEventListeners("PastePostProcess")&&!o.isDefaultPrevented()?function(t,e,n,r){var o=t.dom.create("div",{style:"display:none"},e),i=c(t,o,n,r);return pt(i.node.innerHTML,i.isDefaultPrevented())}(t,i,n,r):pt(i,o.isDefaultPrevented())}function ht(t,e){return t.insertContent(e,{merge:st.shouldMergeFormats(t),paste:!0}),!0}function vt(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)}function yt(t){return vt(t)&&/.(gif|jpe?g|png)$/.test(t)}function bt(t,e,n){return!(!1!==t.selection.isCollapsed()||!vt(e))&&function(t,e,n){return t.undoManager.extra(function(){n(t,e)},function(){t.execCommand("mceInsertLink",!1,e)}),!0}(t,e,n)}function wt(t,e,n){return!!yt(e)&&function(t,e,n){return t.undoManager.extra(function(){n(t,e)},function(){t.insertContent('<img src="'+e+'">')}),!0}(t,e,n)}function xt(t){return"\n"===t||"\r"===t}function _t(n){return function(t,e,n){return _(t,function(t){n=e(n,t)}),n}(n,function(t,e){return function(t){return-1!==" \f\t\x0B".indexOf(t)}(e)||"\xa0"===e?t.pcIsSpace||""===t.str||t.str.length===n.length-1||function(t,e){return e<t.length&&0<=e&&xt(t[e])}(n,t.str.length+1)?{pcIsSpace:!1,str:t.str+"\xa0"}:{pcIsSpace:!0,str:t.str+" "}:{pcIsSpace:xt(e),str:t.str+e}},{pcIsSpace:!1,str:""}).str}function Pt(t,e,n,r){var o=Vt(t,e,n);!1===o.cancelled&&qt(t,o.content,r)}function Tt(t,e,n){var r=n||Q(e);Pt(t,J(e),r,!1)}function Dt(t,e){var n=t.dom.encode(e).replace(/\r\n/g,"\n"),r=_t(n),o=rt(r,t.settings.forced_root_block,t.settings.forced_root_block_attrs);Pt(t,o,!1,!0)}function Ct(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e}function kt(t,e){return e in t&&0<t[e].length}function Ft(t){return kt(t,"text/html")||kt(t,"text/plain")}function St(e,t,n){var r=function(t){return"paste"===t.type}(t)?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&r){var o=function(t){var e=t.items?x(R(t.items),function(t){return t.getAsFile()}):[],n=t.files?R(t.files):[];return function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r)&&n.push(i)}return n}(0<e.length?e:n,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)})}(r);if(0<o.length)return t.preventDefault(),function(t){return L(t,function(r){return z(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})}(o).get(function(t){n&&e.selection.setRng(n),_(t,function(t){!function(t,e){var n=function(t){var e;return-1!==(e=t.indexOf(","))?t.substr(e+1):null}(e.uri),r=Gt(),o=t.settings.images_reuse_filename&&e.blob.name?function(t,e){var n=e.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i);return n?t.dom.encode(n[1]):null}(t,e.blob.name):r,i=new f.Image;if(i.src=e.uri,function(t,e){return!t.images_dataimg_filter||t.images_dataimg_filter(e)}(t.settings,i)){var u,a=t.editorUpload.blobCache,s=void 0;(u=a.findFirst(function(t){return t.base64()===n}))?s=u:(s=a.create(r,e.blob,n,o),a.add(s)),Tt(t,'<img src="'+s.blobUri()+'">',!1)}else Tt(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}return!1}function Et(t){return G.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode}function It(a,s,i){var u,c=function(){var e=d(S.none());return{clear:function(){e.set(S.none())},set:function(t){e.set(S.some(t))},isSet:function(){return e.get().isSome()},on:function(t){e.get().each(t)}}}();function l(t,e,n,r){var o,i,u;kt(t,"text/html")?o=t["text/html"]:(o=s.getHtml(),r=r||Q(o),s.isDefaultContent(o)&&(n=!0)),o=lt.trimHtml(o),s.remove(),i=!1===r&&nt(o),u=Kt(o),o.length&&(!i||u)||(n=!0),(n||u)&&(o=kt(t,"text/plain")&&i?t["text/plain"]:lt.innerText(o)),s.isDefaultContent(o)?e||a.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?Dt(a,o):Tt(a,o,r)}a.on("keydown",function(t){function e(t){Et(t)&&!t.isDefaultPrevented()&&s.remove()}if(Et(t)&&!t.isDefaultPrevented()){if((u=t.shiftKey&&86===t.keyCode)&&V.webkit&&-1!==f.navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),c.set(t),window.setTimeout(function(){c.clear()},100),V.ie&&u)return t.preventDefault(),void m(a,!0);s.remove(),s.create(),a.once("keyup",e),a.once("paste",function(){a.off("keyup",e)})}}),a.on("paste",function(t){var e=c.isSet(),n=function(t,e){var n=Ct(e.clipboardData||t.getDoc().dataTransfer);return lt.isMsEdge()?q.extend(n,{"text/html":""}):n}(a,t),r="text"===i.get()||u,o=kt(n,tt());u=!1,t.isDefaultPrevented()||function(t){var e=t.clipboardData;return-1!==f.navigator.userAgent.indexOf("Android")&&e&&e.items&&0===e.items.length}(t)?s.remove():Ft(n)||!St(a,t,s.getLastRng()||a.selection.getRng())?(e||t.preventDefault(),!V.ie||e&&!t.ieFake||kt(n,"text/html")||(s.create(),a.dom.bind(s.getEl(),"paste",function(t){t.stopPropagation()}),a.getDoc().execCommand("Paste",!1,null),n["text/html"]=s.getHtml()),kt(n,"text/html")?(t.preventDefault(),o=o||Q(n["text/html"]),l(n,e,r,o)):K.setEditorTimeout(a,function(){l(n,e,r,o)},0)):s.remove()})}function Rt(t){return V.ie&&t.inline?f.document.body:t.getBody()}function Ot(e,t,n){!function(t){return Rt(t)!==t.getBody()}(e)||e.dom.bind(t,"paste keyup",function(t){Yt(e,n)||e.fire("paste")})}function At(t,e){return e===t}function jt(t){var e=d(null),n="%MCEPASTEBIN%";return{create:function(){return function(t,e,n){var r,o=t.dom,i=t.getBody();e.set(t.selection.getRng()),r=t.dom.add(Rt(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(V.ie||V.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",!0)?65535:-65535),o.bind(r,"beforedeactivate focusin focusout",function(t){t.stopPropagation()}),Ot(t,r,n),r.focus(),t.selection.select(r,!0)}(t,e,n)},remove:function(){return function(t,e){if(Xt(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(t,e)},getEl:function(){return Xt(t)},getHtml:function(){return function(n){function e(t,e){t.appendChild(e),n.dom.remove(e,!0)}var r,t,o,i,u;for(t=q.grep(Rt(n).childNodes,function(t){return"mcepastebin"===t.id}),r=t.shift(),q.each(t,function(t){e(r,t)}),o=(i=n.dom.select("div[id=mcepastebin]",r)).length-1;0<=o;o--)u=n.dom.create("div"),r.insertBefore(u,i[o]),e(u,i[o]);return r?r.innerHTML:""}(t)},getLastRng:function(){return function(t){return t.get()}(e)},isDefault:function(){return Yt(t,n)},isDefaultContent:function(t){return At(n,t)}}}function Mt(n,t){var e=jt(n);return n.on("PreInit",function(){return function(u,t,e){var a;It(u,t,e),u.parser.addNodeFilter("img",function(t,e,n){function r(t){t.attr("data-mce-object")||a===V.transparentSrc||t.remove()}var o;if(!u.settings.paste_data_images&&((o=n).data&&!0===o.data.paste))for(var i=t.length;i--;)(a=t[i].attr("src"))&&(0===a.indexOf("webkit-fake-url")?r(t[i]):u.settings.allow_html_data_urls||0!==a.indexOf("data:")||r(t[i]))})}(n,e,t)}),{pasteFormat:t,pasteHtml:function(t,e){return Tt(n,t,e)},pasteText:function(t){return Dt(n,t)},pasteImageData:function(t,e){return St(n,t,e)},getDataTransferItems:Ct,hasHtmlOrText:Ft,hasContentType:kt}}function Lt(t,e,n){if(!function(t){return!1===V.iOS&&t!==undefined&&"function"==typeof t.setData&&!0!==lt.isMsEdge()}(t))return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(tt(),e),!0}catch(r){return!1}}function Nt(t,e,n,r){Lt(t.clipboardData,e.html,e.text)?(t.preventDefault(),r()):n(e.html,r)}function Bt(a){return function(t,e){var n=Z(t),r=a.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=a.dom.create("div",{contenteditable:"true"},n);a.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),a.dom.add(a.getBody(),r);var i=a.selection.getRng();o.focus();var u=a.dom.createRng();u.selectNodeContents(o),a.selection.setRng(u),K.setTimeout(function(){a.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}}function Ht(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}}function $t(t){return!t.selection.isCollapsed()||function(t){return!!t.dom.getParent(t.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",t.getBody())}(t)}function Wt(t,e){return Jt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())}function Ut(t,e){t.focus(),t.selection.setRng(e)}var zt={preProcess:function(t,e){return st.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=st.getRetainStyleProps(r))&&(o=q.makeMap(e.split(/[, ]/))),t=lt.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=st.getWordValidElements(r),i=at({valid_elements:n,valid_children:"-li[p]"});q.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrder.push("class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var u=ot({},i);u.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",mt(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),u.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),u.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),u.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=(n=n.split("#")[1])&&"#"+n),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var a=u.parse(t);return st.shouldConvertWordFakeLists(r)&&dt(a),t=it({validate:r.settings.validate},i).serialize(a)}(t,e):e},isWordContent:function fe(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},Vt=function(t,e,n){var r=zt.isWordContent(e),o=r?zt.preProcess(t,e):e;return gt(t,o,n,r)},Kt=yt,qt=function(t,e,n){n||!1===st.isSmartPasteEnabled(t)?ht(t,e):function(e,n){q.each([bt,wt,ht],function(t){return!0!==t(e,n,ht)})}(t,e)},Gt=lt.createIdGenerator("mceclip"),Xt=function(t){return t.dom.get("mcepastebin")},Yt=function(t,e){var n=Xt(t);return function(t){return t&&"mcepastebin"===t.id}(n)&&At(e,n.innerHTML)},Zt=function(t){t.on("cut",function(e){return function(t){$t(e)&&Nt(t,Ht(e),Bt(e),function(){if(V.browser.isChrome()){var t=e.selection.getRng();K.setEditorTimeout(e,function(){e.selection.setRng(t),e.execCommand("Delete")},0)}else e.execCommand("Delete")})}}(t)),t.on("copy",function(e){return function(t){$t(e)&&Nt(t,Ht(e),Bt(e),function(){})}}(t))},Jt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),Qt=function(i,u,a){st.shouldBlockDrop(i)&&i.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),st.shouldPasteDataImages(i)||i.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),i.on("drop",function(t){var e,n;if(n=Wt(i,t),!t.isDefaultPrevented()&&!a.get()){e=u.getDataTransferItems(t.dataTransfer);var r=u.hasContentType(e,tt());if((u.hasHtmlOrText(e)&&!function(t){var e=t["text/plain"];return!!e&&0===e.indexOf("file://")}(e)||!u.pasteImageData(t,n))&&n&&st.shouldFilterDrop(i)){var o=e["mce-internal"]||e["text/html"]||e["text/plain"];o&&(t.preventDefault(),K.setEditorTimeout(i,function(){i.undoManager.transact(function(){e["mce-internal"]&&i.execCommand("Delete"),Ut(i,n),o=lt.trimHtml(o),e["text/html"]?u.pasteHtml(o,r):u.pasteText(o)})}))}}}),i.on("dragstart",function(t){a.set(!0)}),i.on("dragover dragend",function(t){st.shouldPasteDataImages(i)&&!1===a.get()&&(t.preventDefault(),Ut(i,Wt(i,t))),"dragend"===t.type&&a.set(!1)})},te=function(t){var e=t.plugins.paste,n=st.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=st.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function ee(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function ne(t,e){if(!zt.isWordContent(e))return e;var n=[];q.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return e=lt.filter(e,[[r,"$1"]]),e=lt.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function re(t,e,n,r){if(r||n)return e;var c,o=st.getWebkitStyles(t);if(!1===st.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(c=o.split(/[, ]/)),c){var l=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=l.parseStyle(l.decode(n)),i={};if("none"===c)return e+r;for(var u=0;u<c.length;u++){var a=o[c[u]],s=l.getStyle(f,c[u],!0);/color/.test(c[u])&&(a=l.toHex(a),s=l.toHex(s)),s!==a&&(i[c[u]]=a)}return(i=l.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function oe(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}function ie(n,r){return function(e){e.setActive("text"===r.pasteFormat.get());function t(t){return e.setActive(t.state)}return n.on("PastePlainTextToggle",t),function(){return n.off("PastePlainTextToggle",t)}}}var ue=function(t){V.webkit&&ee(t,re),V.ie&&(ee(t,ne),function r(e,n){e.on("PastePostProcess",function(t){n(e,t.node)})}(t,oe))},ae=function(t,e){t.ui.registry.addToggleButton("pastetext",{active:!1,icon:"paste-text",tooltip:"Paste as text",onAction:function(){return t.execCommand("mceTogglePlainTextPaste")},onSetup:ie(t,e)}),t.ui.registry.addToggleMenuItem("pastetext",{text:"Paste as text",onAction:function(){return t.execCommand("mceTogglePlainTextPaste")},onSetup:ie(t,e)})};!function de(){r.add("paste",function(t){if(!1===u(t)){var e=d(!1),n=d(st.isPasteAsTextEnabled(t)?"text":"html"),r=Mt(t,n),o=ue(t);return ae(t,r),p(t,r),te(t),Zt(t),Qt(t,r,e),a(r,o)}})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/preview/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/preview/plugin.min.js
deleted file mode 100644 (file)
index da4b784..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools"),m=function(e){return e.getParam("content_style","")},u=function(e){return e.getParam("content_css_cors",!1,"boolean")},y=tinymce.util.Tools.resolve("tinymce.Env"),n=function(t){var n="",i=t.dom.encode,e=m(t);n+='<base href="'+i(t.documentBaseURI.getURI())+'">',e&&(n+='<style type="text/css">'+e+"</style>");var o=u(t)?' crossorigin="anonymous"':"";l.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+i(t.documentBaseURI.toAbsolute(e))+'"'+o+">"});var r=t.settings.body_id||"tinymce";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_id","","hash"))[t.id]||r);var a=t.settings.body_class||"";-1!==a.indexOf("=")&&(a=(a=t.getParam("body_class","","hash"))[t.id]||"");var c='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(y.mac?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",s=t.getBody().dir,d=s?' dir="'+i(s)+'"':"";return"<!DOCTYPE html><html><head>"+n+'</head><body id="'+i(r)+'" class="mce-content-body '+i(a)+'"'+d+">"+t.getContent()+c+"</body></html>"},t=function(e){e.addCommand("mcePreview",function(){!function(e){var t=n(e);e.windowManager.open({title:"Preview",size:"large",body:{type:"panel",items:[{name:"preview",type:"iframe",sandboxed:!0}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{preview:t}}).focus("close")}(e)})},i=function(e){e.ui.registry.addButton("preview",{icon:"preview",tooltip:"Preview",onAction:function(){return e.execCommand("mcePreview")}}),e.ui.registry.addMenuItem("preview",{icon:"preview",text:"Preview",onAction:function(){return e.execCommand("mcePreview")}})};!function o(){e.add("preview",function(e){t(e),i(e)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/print/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/print/plugin.min.js
deleted file mode 100644 (file)
index 43e7ca2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),i=function(n){n.addCommand("mcePrint",function(){t.browser.isIE()?n.getDoc().execCommand("print",!1,null):n.getWin().print()})},e=function(n){n.ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:function(){return n.execCommand("mcePrint")}}),n.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:function(){return n.execCommand("mcePrint")}})};!function o(){n.add("print",function(n){i(n),e(n),n.addShortcut("Meta+P","","mcePrint")})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/quickbars/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/quickbars/plugin.min.js
deleted file mode 100644 (file)
index 8abc4ba..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(u){"use strict";function e(){}function l(e){return function(){return e}}function n(){return p}var r,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=0,o=function(e,n,r){e.plugins.table?e.plugins.table.insertTable(n,r):function(r,t,o){r.undoManager.transact(function(){var e,n;r.insertContent(function(e,n){var r,t,o;for(o='<table data-mce-id="mce" style="width: 100%">',o+="<tbody>",t=0;t<n;t++){for(o+="<tr>",r=0;r<e;r++)o+="<td><br></td>";o+="</tr>"}return o+="</tbody>",o+="</table>"}(t,o)),(e=function(e){return e.dom.select("*[data-mce-id]")[0]}(r)).removeAttribute("data-mce-id"),n=r.dom.select("td,th",e),r.selection.setCursorLocation(n[0],0)})}(e,n,r)},c=function(e,n,r){var t,o;o=(t=e.editorUpload.blobCache).create(function(e){var n=(new Date).getTime();return e+"_"+Math.floor(1e9*Math.random())+ ++i+String(n)}("mceu"),r,n),t.add(o),e.insertContent(e.dom.createHTML("img",{src:o.blobUri()}))},s=tinymce.util.Tools.resolve("tinymce.util.Promise"),a=function(r){return new s(function(e){var n=new u.FileReader;n.onloadend=function(){e(n.result.split(",")[1])},n.readAsDataURL(r)})},f=tinymce.util.Tools.resolve("tinymce.Env"),d=tinymce.util.Tools.resolve("tinymce.util.Delay"),m=function(i){return new s(function(r){var t=u.document.createElement("input");t.type="file",t.style.position="fixed",t.style.left="0",t.style.top="0",t.style.opacity="0.001",u.document.body.appendChild(t);t.addEventListener("change",function(e){r(Array.prototype.slice.call(e.target.files))});var o=function(e){function n(){r([]),t.parentNode.removeChild(t)}f.os.isAndroid()&&"remove"!==e.type?d.setEditorTimeout(i,n,0):n(),i.off("focusin remove",o)};i.on("focusin remove",o),t.click()})},g=function(r){r.ui.registry.addButton("quickimage",{icon:"image",tooltip:"Insert image",onAction:function(){m(r).then(function(e){if(0<e.length){var n=e[0];a(n).then(function(e){c(r,e,n)})}})}}),r.ui.registry.addButton("quicktable",{icon:"table",tooltip:"Insert table",onAction:function(){o(r,2,2)}})},v=l(!1),h=l(!0),p=(r={fold:function(e,n){return e()},is:v,isSome:v,isNone:h,getOr:b,getOrThunk:O,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:l(null),getOrUndefined:l(undefined),or:b,orThunk:O,map:n,each:e,bind:n,exists:v,forall:h,filter:n,equals:N,equals_:N,toArray:function(){return[]},toString:l("none()")},Object.freeze&&Object.freeze(r),r);function N(e){return e.isNone()}function O(e){return e()}function b(e){return e}function E(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}var w=function(r){function e(){return o}function n(e){return e(r)}var t=l(r),o={fold:function(e,n){return n(r)},is:function(e){return r===e},isSome:h,isNone:v,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return w(e(r))},each:function(e){e(r)},bind:n,exists:n,forall:n,filter:function(e){return e(r)?o:p},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,n){return e.fold(v,function(e){return n(r,e)})}};return o},T={some:w,none:n,from:function(e){return null===e||e===undefined?p:w(e)}},y=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:l(e)}},S={fromHtml:function(e,n){var r=(n||u.document).createElement("div");if(r.innerHTML=e,!r.hasChildNodes()||1<r.childNodes.length)throw u.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return y(r.childNodes[0])},fromTag:function(e,n){var r=(n||u.document).createElement(e);return y(r)},fromText:function(e,n){var r=(n||u.document).createTextNode(e);return y(r)},fromDom:y,fromPoint:function(e,n,r){var t=e.dom();return T.from(t.elementFromPoint(n,r)).map(y)}},x=(u.Node.ATTRIBUTE_NODE,u.Node.CDATA_SECTION_NODE,u.Node.COMMENT_NODE,u.Node.DOCUMENT_NODE,u.Node.DOCUMENT_TYPE_NODE,u.Node.DOCUMENT_FRAGMENT_NODE,u.Node.ELEMENT_NODE),D=(u.Node.TEXT_NODE,u.Node.PROCESSING_INSTRUCTION_NODE,u.Node.ENTITY_REFERENCE_NODE,u.Node.ENTITY_NODE,u.Node.NOTATION_NODE,"undefined"!=typeof u.window?u.window:Function("return this;")(),E("string")),k=E("object"),_=E("array"),C=E("boolean"),A=E("undefined"),M=E("function"),R=Array.prototype.slice;M(Array.from)&&Array.from;function I(e,n,r,t,o){return e(r,t)?T.some(r):M(o)&&o(r)?T.none():n(r,t,o)}function q(e,n,r){return 0!=(e.compareDocumentPosition(n)&r)}function L(e,n){var r=function(e,n){for(var r=0;r<e.length;r++){var t=e[r];if(t.test(n))return t}return undefined}(e,n);if(!r)return{major:0,minor:0};function t(e){return Number(n.replace(r,"$"+e))}return V(t(1),t(2))}function P(e,n){return function(){return n===e}}function F(e,n){return function(){return n===e}}function U(e,n){var r=String(n).toLowerCase();return function(e,n){for(var r=0,t=e.length;r<t;r++){var o=e[r];if(n(o,r))return T.some(o)}return T.none()}(e,function(e){return e.search(r)})}function B(e,n){return-1!==e.indexOf(n)}function j(n){return function(e){return B(e,n)}}function H(e,n){var r=e.dom();if(r.nodeType!==me)return!1;var t=r;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function X(e,n,r){for(var t=e.dom(),o=M(r)?r:l(!1);t.parentNode;){t=t.parentNode;var i=S.fromDom(t);if(n(i))return T.some(i);if(o(i))break}return T.none()}function z(e,n,r){return X(e,function(e){return H(e,n)},r)}var G,W=function(e,n){return q(e,n,u.Node.DOCUMENT_POSITION_CONTAINED_BY)},Y=function(e){function n(){return r}var r=e;return{get:n,set:function(e){r=e},clone:function(){return Y(n())}}},$=function(){return V(0,0)},V=function(e,n){return{major:e,minor:n}},J={nu:V,detect:function(e,n){var r=String(n).toLowerCase();return 0===e.length?$():L(e,r)},unknown:$},K="Firefox",Q=function(e){var n=e.current;return{current:n,version:e.version,isEdge:P("Edge",n),isChrome:P("Chrome",n),isIE:P("IE",n),isOpera:P("Opera",n),isFirefox:P(K,n),isSafari:P("Safari",n)}},Z={unknown:function(){return Q({current:undefined,version:J.unknown()})},nu:Q,edge:l("Edge"),chrome:l("Chrome"),ie:l("IE"),opera:l("Opera"),firefox:l(K),safari:l("Safari")},ee="Windows",ne="Android",re="Solaris",te="FreeBSD",oe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:F(ee,n),isiOS:F("iOS",n),isAndroid:F(ne,n),isOSX:F("OSX",n),isLinux:F("Linux",n),isSolaris:F(re,n),isFreeBSD:F(te,n)}},ie={unknown:function(){return oe({current:undefined,version:J.unknown()})},nu:oe,windows:l(ee),ios:l("iOS"),android:l(ne),linux:l("Linux"),osx:l("OSX"),solaris:l(re),freebsd:l(te)},ue=function(e,r){return U(e,r).map(function(e){var n=J.detect(e.versionRegexes,r);return{current:e.name,version:n}})},ce=function(e,r){return U(e,r).map(function(e){var n=J.detect(e.versionRegexes,r);return{current:e.name,version:n}})},se=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ae=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return B(e,"edge/")&&B(e,"chrome")&&B(e,"safari")&&B(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,se],search:function(e){return B(e,"chrome")&&!B(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return B(e,"msie")||B(e,"trident")}},{name:"Opera",versionRegexes:[se,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:j("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:j("firefox")},{name:"Safari",versionRegexes:[se,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(B(e,"safari")||B(e,"mobile/"))&&B(e,"applewebkit")}}],fe=[{name:"Windows",search:j("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return B(e,"iphone")||B(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:j("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:j("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:j("linux"),versionRegexes:[]},{name:"Solaris",search:j("sunos"),versionRegexes:[]},{name:"FreeBSD",search:j("freebsd"),versionRegexes:[]}],de={browsers:l(ae),oses:l(fe)},le=Y(function(e,n){var r=de.browsers(),t=de.oses(),o=ue(r,e).fold(Z.unknown,Z.nu),i=ce(t,e).fold(ie.unknown,ie.nu);return{browser:o,os:i,deviceType:function(e,n,r,t){var o=e.isiOS()&&!0===/ipad/i.test(r),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),c=u||t("(pointer:coarse)"),s=o||!i&&u&&t("(min-device-width:768px)"),a=i||u&&!s,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(r),d=!a&&!s&&!f;return{isiPad:l(o),isiPhone:l(i),isTablet:l(s),isPhone:l(a),isTouch:l(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:l(f),isDesktop:l(d)}}(i,o,e,n)}}(u.navigator.userAgent,function(e){return u.window.matchMedia(e).matches})),me=x,ge=(le.get().browser.isIE(),{getToolbarItemsOr:(G=D,function(e,n,r){return function(e,n){if(!n(e))throw new Error("Default value doesn't match requested type.")}(r,G),function(e,n){if(_(e)||k(e))throw new Error("expected a string but found: "+e);return A(e)?n:C(e)?!1===e?"":n:e}(e.getParam(n,r),r)})}),ve=function(e){return ge.getToolbarItemsOr(e,"quickbars_selection_toolbar","bold italic | quicklink h2 h3 blockquote")},he=function(e){return ge.getToolbarItemsOr(e,"quickbars_insert_toolbar","quickimage quicktable")},pe=function(o){var e=he(o);0<e.trim().length&&o.ui.registry.addContextToolbar("quickblock",{predicate:function(e){function n(e){return e.dom()===o.getBody()}var r=S.fromDom(e),t=o.schema.getTextBlockElements();return function(e,n,r){return I(H,z,e,n,r)}(r,"table",n).fold(function(){return function(e,n,r){return I(function(e,n){return n(e)},X,e,n,r)}(r,function(e){return function(e){return e.dom().nodeName.toLowerCase()}(e)in t&&o.dom.isEmpty(e.dom())},n).isSome()},function(){return!1})},items:e,position:"line",scope:"editor"})},Ne=function(n){n.ui.registry.addContextToolbar("imageselection",{predicate:function(e){return"IMG"===e.nodeName||"FIGURE"===e.nodeName&&/image/i.test(e.className)},items:"alignleft aligncenter alignright",position:"node"});var e=ve(n);0<e.trim().length&&n.ui.registry.addContextToolbar("textselection",{predicate:function(e){return!n.selection.isCollapsed()},items:e,position:"selection"})};!function Oe(){t.add("quickbars",function(e){g(e),pe(e),Ne(e)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/save/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/save/plugin.min.js
deleted file mode 100644 (file)
index 1d8daa7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function t(n,e){n.notificationManager.open({text:e,type:"error"})}function e(t){return function(n){function e(){n.setDisabled(a(t)&&!t.isDirty())}return t.on("NodeChange dirty",e),function(){return t.off("NodeChange dirty",e)}}}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=function(n){return n.getParam("save_enablewhendirty",!0)},c=function(n){return!!n.getParam("save_onsavecallback")},r=function(n){return!!n.getParam("save_oncancelcallback")},u=function(n){var e;if(e=o.DOM.getParent(n.id,"form"),!a(n)||n.isDirty()){if(n.save(),c(n))return n.execCallback("save_onsavecallback",n),void n.nodeChanged();e?(n.setDirty(!1),e.onsubmit&&!e.onsubmit()||("function"==typeof e.submit?e.submit():t(n,"Error: Form submit field collision.")),n.nodeChanged()):t(n,"Error: No form element found.")}},l=function(n){var e=i.trim(n.startContent);r(n)?n.execCallback("save_oncancelcallback",n):n.resetContent(e)},s=function(n){n.addCommand("mceSave",function(){u(n)}),n.addCommand("mceCancel",function(){l(n)})},d=function(n){n.ui.registry.addButton("save",{icon:"save",tooltip:"Save",disabled:!0,onAction:function(){return n.execCommand("mceSave")},onSetup:e(n)}),n.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",disabled:!0,onAction:function(){return n.execCommand("mceCancel")},onSetup:e(n)}),n.addShortcut("Meta+S","","mceSave")};!function m(){n.add("save",function(n){d(n),s(n)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js
deleted file mode 100644 (file)
index 6913d57..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";var l=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return l(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),g=function(){return(g=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},p=tinymce.util.Tools.resolve("tinymce.util.Tools");function x(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function h(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function v(e){var t=e.parentNode;e.firstChild&&t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function c(e,t){var n,r=[];if((n=p.toArray(e.getBody().getElementsByTagName("span"))).length)for(var o=0;o<n.length;o++){var a=h(n[o]);null!==a&&a.length&&a===t.toString()&&r.push(n[o])}return r}function u(e,t,n){var r=t.get(),o=r.index,a=e.dom;(n=!1!==n)?o+1===r.count?o=0:o++:o-1==-1?o=r.count-1:o--,a.removeClass(c(e,r.index),"mce-match-marker-selected");var i=c(e,o);return i.length?(a.addClass(c(e,o),"mce-match-marker-selected"),e.selection.scrollIntoView(i[0]),o):-1}function y(e,t){var n=t.parentNode;e.remove(t),e.isEmpty(n)&&e.remove(n)}function f(e,t,n,r,o){var a=function(e,t){var n=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&").replace(/\s/g,"[^\\S\\r\\n]");return t?"\\b"+n+"\\b":n}(n,o),i=function(e,t,n){var r,o;return(o=e.dom.create("span",{"data-mce-bogus":1})).className="mce-match-marker",r=e.getBody(),C(e,t,!1),d.findAndReplaceDOMText(n,r,o,!1,e.schema)}(e,t,new RegExp(a,r?"g":"gi"));if(i){var c=u(e,t,!0);t.set({index:c,count:i,text:n,matchCase:r,wholeWord:o})}return i}function b(e,t){var n=u(e,t,!0);t.set(g(g({},t.get()),{index:n}))}function N(e,t){var n=u(e,t,!1);t.set(g(g({},t.get()),{index:n}))}function w(e){var t=h(e);return null!==t&&0<t.length}function m(e,t,n,r,o){var a,i,c,u,d,s=t.get(),l=s.index,f=l;for(r=!1!==r,c=e.getBody(),i=p.grep(p.toArray(c.getElementsByTagName("span")),w),a=0;a<i.length;a++){var m=h(i[a]);if(u=d=parseInt(m,10),o||u===s.index){for(n.length?(i[a].firstChild.nodeValue=n,v(i[a])):y(e.dom,i[a]);i[++a];){if((u=parseInt(h(i[a]),10))!==d){a--;break}y(e.dom,i[a])}r&&f--}else l<d&&i[a].setAttribute("data-mce-index",String(d-1))}return t.set(g(g({},s),{count:o?0:s.count-1,index:f})),r?b(e,t):N(e,t),!o&&0<t.get().count}function t(){}function a(e){return function(){return e}}function n(){return T}var r,d={findAndReplaceDOMText:function W(e,t,n,r,o){var a,i,h,f,m,g,c=[],u=0;function d(e,t){if(t=t||0,!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");var n=e.index;if(0<t){var r=e[t];if(!r)throw new Error("Invalid capture group");n+=e[0].indexOf(r),e[0]=r}return[n,n+e[0].length,[e[0]]]}if(h=t.ownerDocument,f=o.getBlockElements(),m=o.getWhiteSpaceElements(),g=o.getShortEndedElements(),i=function s(e){var t;if(3===e.nodeType)return e.data;if(m[e.nodeName]&&!f[e.nodeName])return"";if(t="",x(e))return"\n";if((f[e.nodeName]||g[e.nodeName])&&(t+="\n"),e=e.firstChild)for(;t+=s(e),e=e.nextSibling;);return t}(t)){if(e.global)for(;a=e.exec(i);)c.push(d(a,r));else a=i.match(e),c.push(d(a,r));return c.length&&(u=c.length,function p(e,t,n){var r,o,a,i,c=[],u=0,d=e,s=t.shift(),l=0;e:for(;;){if((f[d.nodeName]||g[d.nodeName]||x(d))&&u++,3===d.nodeType&&(!o&&d.length+u>=s[1]?(o=d,i=s[1]-u):r&&c.push(d),!r&&d.length+u>s[0]&&(r=d,a=s[0]-u),u+=d.length),r&&o){if(d=n({startNode:r,startNodeIndex:a,endNode:o,endNodeIndex:i,innerNodes:c,match:s[2],matchIndex:l}),u-=o.length-i,o=r=null,c=[],l++,!(s=t.shift()))break}else if(m[d.nodeName]&&!f[d.nodeName]||!d.firstChild){if(d.nextSibling){d=d.nextSibling;continue}}else if(!x(d)){d=d.firstChild;continue}for(;;){if(d.nextSibling){d=d.nextSibling;break}if(d.parentNode===e)break e;d=d.parentNode}}}(t,c,function l(e){var p;if("function"!=typeof e){var r=e.nodeType?e:h.createElement(e);p=function(e,t){var n=r.cloneNode(!1);return n.setAttribute("data-mce-index",t),e&&n.appendChild(h.createTextNode(e)),n}}else p=e;return function(e){var t,n,r,o=e.startNode,a=e.endNode,i=e.matchIndex;if(o===a){var c=o;r=c.parentNode,0<e.startNodeIndex&&(t=h.createTextNode(c.data.substring(0,e.startNodeIndex)),r.insertBefore(t,c));var u=p(e.match[0],i);return r.insertBefore(u,c),e.endNodeIndex<c.length&&(n=h.createTextNode(c.data.substring(e.endNodeIndex)),r.insertBefore(n,c)),c.parentNode.removeChild(c),u}t=h.createTextNode(o.data.substring(0,e.startNodeIndex)),n=h.createTextNode(a.data.substring(e.endNodeIndex));for(var d=p(o.data.substring(e.startNodeIndex),i),s=0,l=e.innerNodes.length;s<l;++s){var f=e.innerNodes[s],m=p(f.data,i);f.parentNode.replaceChild(m,f)}var g=p(a.data.substring(0,e.endNodeIndex),i);return(r=o.parentNode).insertBefore(t,o),r.insertBefore(d,o),r.removeChild(o),(r=a.parentNode).insertBefore(g,a),r.insertBefore(n,a),r.removeChild(a),g}}(n))),u}}},C=function(e,t,n){var r,o,a,i,c=t.get();for(o=p.toArray(e.getBody().getElementsByTagName("span")),r=0;r<o.length;r++){var u=h(o[r]);null!==u&&u.length&&(u===c.index.toString()&&(a=a||o[r].firstChild,i=o[r].firstChild),v(o[r]))}if(t.set(g(g({},c),{index:-1,count:0,text:""})),a&&i){var d=e.dom.createRng();return d.setStart(a,0),d.setEnd(i,i.data.length),!1!==n&&e.selection.setRng(d),d}},o=function(r,o){return{done:function(e){return C(r,o,e)},find:function(e,t,n){return f(r,o,e,t,n)},next:function(){return b(r,o)},prev:function(){return N(r,o)},replace:function(e,t,n){return m(r,o,e,t,n)}}},i=a(!1),s=a(!0),T=(r={fold:function(e,t){return e()},is:i,isSome:i,isNone:s,getOr:A,getOrThunk:O,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:A,orThunk:O,map:n,each:t,bind:n,exists:i,forall:s,filter:n,equals:S,equals_:S,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(r),r);function S(e){return e.isNone()}function O(e){return e()}function A(e){return e}function k(e,t){return function(){F(e,t)}}var B,I=function(n){function e(){return o}function t(e){return e(n)}var r=a(n),o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:s,isNone:i,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return I(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:T},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(i,function(e){return t(n,e)})}};return o},E={some:I,none:n,from:function(e){return null===e||e===undefined?T:I(e)}},M=(B="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===B}),D=Array.prototype.slice,R=(M(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.Env")),F=function(a,i){var e=function(){var t=l(E.none());return{clear:function(){t.set(E.none())},set:function(e){t.set(E.some(e))},isSet:function(){return t.get().isSome()},on:function(e){t.get().each(e)}}}();a.undoManager.add();var t=p.trim(a.selection.getContent({format:"text"}));function c(e){(function(e,t){return 1<t.get().count}(0,i)?e.enable:e.disable)("next"),(function(e,t){return 1<t.get().count}(0,i)?e.enable:e.disable)("prev")}function u(e,t){!function(e,t){for(var n=0,r=e.length;n<r;n++){t(e[n],n)}}(["replace","replaceall","prev","next"],t?e.disable:e.enable)}function r(e,t){R.browser.isSafari()&&R.deviceType.isTouch()&&("find"===t||"replace"===t||"replaceall"===t)&&e.focus(t)}function d(e){C(a,i,!1),u(e,!0),c(e)}function o(e){var t=e.getData(),n=i.get();if(t.findtext.length){if(n.text===t.findtext&&n.matchCase===t.matchcase&&n.wholeWord===t.wholewords)b(a,i);else{var r=f(a,i,t.findtext,t.matchcase,t.wholewords);r<=0&&!function o(e){a.windowManager.alert("Could not find the specified string.",function(){e.focus("findtext")})}(e),u(e,0===r)}c(e)}else d(e)}var n=i.get(),s={title:"Find and Replace",size:"normal",body:{type:"panel",items:[{type:"bar",items:[{type:"input",name:"findtext",placeholder:"Find",maximized:!0,inputMode:"search"},{type:"button",name:"prev",text:"Previous",icon:"action-prev",disabled:!0,borderless:!0},{type:"button",name:"next",text:"Next",icon:"action-next",disabled:!0,borderless:!0}]},{type:"input",name:"replacetext",placeholder:"Replace with",inputMode:"search"}]},buttons:[{type:"menu",name:"options",icon:"preferences",tooltip:"Preferences",align:"start",items:[{type:"togglemenuitem",name:"matchcase",text:"Match case"},{type:"togglemenuitem",name:"wholewords",text:"Find whole words only"}]},{type:"custom",name:"find",text:"Find",primary:!0},{type:"custom",name:"replace",text:"Replace",disabled:!0},{type:"custom",name:"replaceall",text:"Replace All",disabled:!0}],initialData:{findtext:t,replacetext:"",wholewords:n.wholeWord,matchcase:n.matchCase},onChange:function(e,t){"findtext"===t.name&&0<i.get().count&&d(e)},onAction:function(e,t){var n=e.getData();switch(t.name){case"find":o(e);break;case"replace":m(a,i,n.replacetext)?c(e):d(e);break;case"replaceall":m(a,i,n.replacetext,!0,!0),d(e);break;case"prev":N(a,i),c(e);break;case"next":b(a,i),c(e);break;case"matchcase":case"wholewords":!function(e){var t=e.getData(),n=i.get();i.set(g(g({},n),{matchCase:t.matchcase,wholeWord:t.wholewords}))}(e),d(e)}r(e,t.name)},onSubmit:function(e){o(e),r(e,"find")},onClose:function(){a.focus(),C(a,i),a.undoManager.add()}};e.set(a.windowManager.open(s,{inline:"toolbar"}))},j=function(e,t){e.addCommand("SearchReplace",function(){F(e,t)})},P=function(e,t){e.ui.registry.addMenuItem("searchreplace",{text:"Find and replace...",shortcut:"Meta+F",onAction:k(e,t),icon:"search"}),e.ui.registry.addButton("searchreplace",{tooltip:"Find and replace",onAction:k(e,t),icon:"search"}),e.shortcuts.add("Meta+F","",k(e,t))};!function z(){e.add("searchreplace",function(e){var t=l({index:-1,count:0,text:"",matchCase:!1,wholeWord:!1});return j(e,t),P(e,t),o(e,t)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js
deleted file mode 100644 (file)
index 848c83a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(t){"use strict";var a=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return a(t())}}},n=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=function(e){return!(!/(^|[ ,])tinymcespellchecker([, ]|$)/.test(e.settings.plugins)||!n.get("tinymcespellchecker"))&&("undefined"!=typeof t.window.console&&t.window.console.log&&t.window.console.log("Spell Checker Pro is incompatible with Spell Checker plugin! Remove 'spellchecker' from the 'plugins' option."),!0)},l=tinymce.util.Tools.resolve("tinymce.util.Tools"),u=tinymce.util.Tools.resolve("tinymce.util.URI"),d=tinymce.util.Tools.resolve("tinymce.util.XHR"),f=function(e){return e.fire("SpellcheckStart")},o=function(e){return e.fire("SpellcheckEnd")},g=function(e){return e.getParam("spellchecker_languages","English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv")},s=function(e){var t=e.getParam("language","en");return e.getParam("spellchecker_language",t)},h=function(e){return e.getParam("spellchecker_rpc_url")},p=function(e){return e.getParam("spellchecker_callback")},m=function(e){var t=new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g");return e.getParam("spellchecker_wordchar_pattern",t)};function b(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function r(a,r){var n,o,g,h,p,i=[],v=r.dom;function c(e,t){if(!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}function s(e){var t=a.getElementsByTagName("*"),n=[];e="number"==typeof e?""+e:null;for(var r=0;r<t.length;r++){var o=t[r],i=o.getAttribute("data-mce-index");null!==i&&i.length&&-1!==o.className.indexOf("mce-spellchecker-word")&&(i!==e&&null!==e||n.push(o))}return n}function u(e){for(var t=i.length;t--;)if(i[t]===e)return t;return-1}function e(e){for(var t=0,n=i.length;t<n&&!1!==e(i[t],t);t++);return this}function t(e){var t,n,r=s(e?u(e):null);for(t=r.length;t--;)(n=r[t]).parentNode.insertBefore(n.firstChild,n),n.parentNode.removeChild(n);return this}function l(e){var t=s(u(e)),n=r.dom.createRng();return n.setStartBefore(t[0]),n.setEndAfter(t[t.length-1]),n}return g=r.schema.getBlockElements(),h=r.schema.getWhiteSpaceElements(),p=r.schema.getShortEndedElements(),{text:o=function d(e){var t;if(3===e.nodeType)return e.data;if(h[e.nodeName]&&!g[e.nodeName])return"";if(b(e))return"\n";if(t="",(g[e.nodeName]||p[e.nodeName])&&(t+="\n"),e=e.firstChild)for(;t+=d(e),e=e.nextSibling;);return t}(a),matches:i,each:e,filter:function f(n){var r=[];return e(function(e,t){n(e,t)&&r.push(e)}),i=r,this},reset:function m(){return i.splice(0,i.length),t(),this},matchFromElement:function x(e){return i[e.getAttribute("data-mce-index")]},elementFromMatch:function k(e){return s(u(e))[0]},find:function N(e,t){if(o&&e.global)for(;n=e.exec(o);)i.push(c(n,t));return this},add:function y(e,t,n){return i.push({start:e,end:e+t,text:o.substr(e,t),data:n}),this},wrap:function S(e){return i.length&&function f(e,t,n){var r,o,i,a,c,s=[],u=0,l=e,d=0;(t=t.slice(0)).sort(function(e,t){return e.start-t.start}),c=t.shift();e:for(;;){if((g[l.nodeName]||p[l.nodeName]||b(l))&&u++,3===l.nodeType&&(!o&&l.length+u>=c.end?(o=l,a=c.end-u):r&&s.push(l),!r&&l.length+u>c.start&&(r=l,i=c.start-u),u+=l.length),r&&o){if(l=n({startNode:r,startNodeIndex:i,endNode:o,endNodeIndex:a,innerNodes:s,match:c.text,matchIndex:d}),u-=o.length-a,o=r=null,s=[],d++,!(c=t.shift()))break}else if(h[l.nodeName]&&!g[l.nodeName]||!l.firstChild){if(l.nextSibling){l=l.nextSibling;continue}}else if(!b(l)){l=l.firstChild;continue}for(;;){if(l.nextSibling){l=l.nextSibling;break}if(l.parentNode===e)break e;l=l.parentNode}}}(a,i,function t(o){function m(e,t){var n=i[t];n.stencil||(n.stencil=o(n));var r=n.stencil.cloneNode(!1);return r.setAttribute("data-mce-index",t),e&&r.appendChild(v.doc.createTextNode(e)),r}return function(e){var t,n,r,o=e.startNode,i=e.endNode,a=e.matchIndex,c=v.doc;if(o===i){var s=o;r=s.parentNode,0<e.startNodeIndex&&(t=c.createTextNode(s.data.substring(0,e.startNodeIndex)),r.insertBefore(t,s));var u=m(e.match,a);return r.insertBefore(u,s),e.endNodeIndex<s.length&&(n=c.createTextNode(s.data.substring(e.endNodeIndex)),r.insertBefore(n,s)),s.parentNode.removeChild(s),u}t=c.createTextNode(o.data.substring(0,e.startNodeIndex)),n=c.createTextNode(i.data.substring(e.endNodeIndex));for(var l=m(o.data.substring(e.startNodeIndex),a),d=0,f=e.innerNodes.length;d<f;++d){var g=e.innerNodes[d],h=m(g.data,a);g.parentNode.replaceChild(h,g)}var p=m(i.data.substring(0,e.endNodeIndex),a);return(r=o.parentNode).insertBefore(t,o),r.insertBefore(l,o),r.removeChild(o),(r=i.parentNode).insertBefore(p,i),r.insertBefore(n,i),r.removeChild(i),p}}(e)),this},unwrap:t,replace:function w(e,t){var n=l(e);return n.deleteContents(),0<t.length&&n.insertNode(r.dom.doc.createTextNode(t)),n},rangeFromMatch:l,indexOf:u}}function v(e,t){if(!t.get()){var n=r(e.getBody(),e);t.set(n)}return t.get()}function x(e,t,n,r,o,i,a){var c=p(e);(c||function(a,c,s){return function(e,t,r,o){var n={method:e,lang:s.get()},i="";n["addToDictionary"===e?"word":"text"]=t,l.each(n,function(e,t){i&&(i+="&"),i+=t+"="+encodeURIComponent(e)}),d.send({url:new u(c).toAbsolute(h(a)),type:"post",content_type:"application/x-www-form-urlencoded",data:i,success:function(e){var t=JSON.parse(e);if(t)t.error?o(t.error):r(t);else{var n=a.translate("Server response wasn't proper JSON.");o(n)}},error:function(){var e=a.translate("The spelling service was not found: (")+h(a)+a.translate(")");o(e)}})}}(e,t,n)).call(e.plugins.spellchecker,r,o,i,a)}function k(e,t,n){e.dom.select("span.mce-spellchecker-word").length||y(e,t,n)}function N(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}var y=function(e,t,n){var r=e.selection.getBookmark();if(v(e,n).reset(),e.selection.moveToBookmark(r),n.set(null),t.get())return t.set(!1),o(e),!0},S=function(t,e,n,r,o){var i=!!o.dictionary,a=o.words;if(t.setProgressState(!1),function(e){for(var t in e)return!1;return!0}(a)){var c=t.translate("No misspellings found.");return t.notificationManager.open({text:c,type:"info"}),void e.set(!1)}r.set({suggestions:a,hasDictionarySupport:i});var s=t.selection.getBookmark();v(t,n).find(m(t)).filter(function(e){return!!a[e.text]}).wrap(function(e){return t.dom.create("span",{"class":"mce-spellchecker-word","aria-invalid":"spelling","data-mce-bogus":1,"data-mce-word":e.text})}),t.selection.moveToBookmark(s),e.set(!0),f(t)},w={spellcheck:function(t,e,n,r,o,i){if(!y(t,n,r)){t.setProgressState(!0),x(t,e,i,"spellcheck",v(t,r).text,function(e){S(t,n,r,o,e)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1),y(t,n,r)}),t.focus()}},checkIfFinished:k,addToDictionary:function(t,e,n,r,o,i,a){t.setProgressState(!0),x(t,e,o,"addToDictionary",i,function(){t.setProgressState(!1),t.dom.remove(a,!0),k(t,n,r)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1)})},ignoreWord:function(t,e,n,r,o,i){t.selection.collapse(),i?l.each(t.dom.select("span.mce-spellchecker-word"),function(e){e.getAttribute("data-mce-word")===r&&t.dom.remove(e,!0)}):t.dom.remove(o,!0),k(t,e,n)},findSpansByIndex:function(e,t){var n,r=[];if((n=l.toArray(e.getBody().getElementsByTagName("span"))).length)for(var o=0;o<n.length;o++){var i=N(n[o]);null!==i&&i.length&&i===t.toString()&&r.push(n[o])}return r},getElmIndex:N,markErrors:S},T=function(t,n,r,o,e,i){return{getTextMatcher:function(){return o.get()},getWordCharPattern:function(){return m(t)},markErrors:function(e){w.markErrors(t,n,o,r,e)},getLanguage:function(){return e.get()}}},I=function(e,t,n,r,o,i){e.addCommand("mceSpellCheck",function(){w.spellcheck(e,t,n,r,o,i)})},B=function(){return(B=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},A="SpellcheckStart SpellcheckEnd",E=function(n,e,r,t,o,i){function a(){w.spellcheck(n,e,r,t,i,o)}var c=function(e,t){var n=[];return l.each(t,function(e){n.push({selectable:!0,text:e.name,data:e.value})}),n}(0,function(e){return l.map(g(e).split(","),function(e){return{name:(e=e.split("="))[0],value:e[1]}})}(n)),s={tooltip:"Spellcheck",onAction:a,icon:"spell-check",onSetup:function(e){function t(){e.setActive(r.get())}return n.on(A,t),function(){n.off(A,t)}}},u=B(B({},s),{type:"splitbutton",select:function(e){return e===o.get()},fetch:function(e){e(l.map(c,function(e){return{type:"choiceitem",value:e.data,text:e.text}}))},onItemAction:function(e,t){o.set(t)}});1<c.length?n.ui.registry.addSplitButton("spellchecker",u):n.ui.registry.addToggleButton("spellchecker",s),n.ui.registry.addToggleMenuItem("spellchecker",{text:"Spellcheck",onSetup:function(e){e.setActive(r.get());function t(){e.setActive(r.get())}return n.on(A,t),function(){n.off(A,t)}},onAction:a})},C=function(o,i,a,c,s,u){o.ui.registry.addContextMenu("spellchecker",{update:function(e){var t=e;if("mce-spellchecker-word"!==t.className)return[];var n=w.findSpansByIndex(o,w.getElmIndex(t));if(0<n.length){var r=o.dom.createRng();return r.setStartBefore(n[0]),r.setEndAfter(n[n.length-1]),o.selection.setRng(r),function(t,e,n,r,o,i,a,c){var s=[],u=n.get().suggestions[a];return l.each(u,function(e){s.push({text:e,onAction:function(){t.insertContent(t.dom.encode(e)),t.dom.remove(c),w.checkIfFinished(t,r,o)}})}),n.get().hasDictionarySupport&&(s.push({type:"separator"}),s.push({text:"Add to dictionary",onAction:function(){w.addToDictionary(t,e,r,o,i,a,c)}})),s.push.apply(s,[{type:"separator"},{text:"Ignore",onAction:function(){w.ignoreWord(t,r,o,a,c)}},{text:"Ignore all",onAction:function(){w.ignoreWord(t,r,o,a,c,!0)}}]),s}(o,i,a,c,s,u,t.getAttribute("data-mce-word"),n)}}})};!function e(){n.add("spellchecker",function(e,t){if(!1===c(e)){var n=a(!1),r=a(s(e)),o=a(null),i=a(null);return E(e,t,n,o,r,i),C(e,t,i,n,o,r),I(e,t,n,o,i,r),T(e,n,i,o,r,t)}})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js
deleted file mode 100644 (file)
index 59a41b1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(c){"use strict";function t(e){e.keyCode!==d.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),f=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=tinymce.util.Tools.resolve("tinymce.util.VK"),m=function(e){return e.getParam("tab_focus",function(e){return e.getParam("tabfocus_elements",":prev,:next")}(e))},v=n.DOM,i=function(r){function e(n){var i,o,e,l;if(!(n.keyCode!==d.TAB||n.ctrlKey||n.altKey||n.metaKey||n.isDefaultPrevented())&&(1===(e=f.explode(m(r))).length&&(e[1]=e[0],e[0]=":prev"),o=n.shiftKey?":prev"===e[0]?u(-1):v.get(e[0]):":next"===e[1]?u(1):v.get(e[1]))){var t=s.get(o.id||o.name);o.id&&t?t.focus():y.setTimeout(function(){a.webkit||c.window.focus(),o.focus()},10),n.preventDefault()}function u(e){function t(e){return/INPUT|TEXTAREA|BUTTON/.test(e.tagName)&&s.get(n.id)&&-1!==e.tabIndex&&function t(e){return"BODY"===e.nodeName||"hidden"!==e.type&&"none"!==e.style.display&&"hidden"!==e.style.visibility&&t(e.parentNode)}(e)}if(o=v.select(":input:enabled,*[tabindex]:not(iframe)"),f.each(o,function(e,t){if(e.id===r.id)return i=t,!1}),0<e){for(l=i+1;l<o.length;l++)if(t(o[l]))return o[l]}else for(l=i-1;0<=l;l--)if(t(o[l]))return o[l];return null}}r.on("init",function(){r.inline&&v.setAttrib(r.getBody(),"tabIndex",null),r.on("keyup",t),a.gecko?r.on("keypress keydown",e):r.on("keydown",e)})};!function o(){e.add("tabfocus",function(e){i(e)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/table/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/table/plugin.min.js
deleted file mode 100644 (file)
index 173a4db..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(f){"use strict";function o(e){return e}var R=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return R(n())}}},T=function(){},O=function(t,r){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return t(r.apply(null,e))}},D=function(e){return function(){return e}};function b(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=o.concat(e);return r.apply(null,t)}}function d(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}}function e(){return u}var n,s=D(!1),i=D(!0),u=(n={fold:function(e,n){return e()},is:s,isSome:s,isNone:i,getOr:c,getOrThunk:r,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:D(null),getOrUndefined:D(undefined),or:c,orThunk:r,map:e,each:T,bind:e,exists:s,forall:i,filter:e,equals:t,equals_:t,toArray:function(){return[]},toString:D("none()")},Object.freeze&&Object.freeze(n),n);function t(e){return e.isNone()}function r(e){return e()}function c(e){return e}function a(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}function l(e,n){return-1<function(e,n){return Ue.call(e,n)}(e,n)}function m(e,n){for(var t=0,r=e.length;t<r;t++){if(n(e[t],t))return!0}return!1}function g(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o)}return r}function p(e,n){for(var t=0,r=e.length;t<r;t++){n(e[t],t)}}function h(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r)&&t.push(i)}return t}function v(e,n,t){return function(e,n){for(var t=e.length-1;0<=t;t--){n(e[t],t)}}(e,function(e){t=n(t,e)}),t}function w(e,n,t){return p(e,function(e){t=n(t,e)}),t}function y(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return Me.some(o)}return Me.none()}function C(e,n){for(var t=0,r=e.length;t<r;t++){if(n(e[t],t))return Me.some(t)}return Me.none()}function S(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!Le(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);qe.apply(n,e[t])}return n}function x(e,n){var t=g(e,n);return S(t)}function A(e,n){for(var t=0,r=e.length;t<r;++t){if(!0!==n(e[t],t))return!1}return!0}function E(e){var n=Fe.call(e,0);return n.reverse(),n}function N(e,n){for(var t=Ve(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i)}}function k(e,t){return Ye(e,function(e,n){return{k:n,v:t(e,n)}})}function I(e,n){return Ke(e,n)?Me.from(e[n]):Me.none()}function B(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(n.length!==t.length)throw new Error('Wrong number of arguments to struct. Expected "['+n.length+']", got '+t.length+" arguments");var r={};return p(n,function(e,n){r[e]=D(t[n])}),r}}function P(e){return e.slice(0).sort()}function M(e,n){throw new Error("All required keys ("+P(e).join(", ")+") were not specified. Specified keys were: "+P(n).join(", ")+".")}function W(e){throw new Error("Unsupported keys for object: "+P(e).join(", "))}function _(n,e){if(!Le(e))throw new Error("The "+n+" fields must be an array. Was: "+e+".");p(e,function(e){if(!_e(e))throw new Error("The value "+e+" in the "+n+" fields was not a string.")})}function L(e){var t=P(e);y(t,function(e,n){return n<t.length-1&&e===t[n+1]}).each(function(e){throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+t.join(", ")+"].")})}function j(e){return e.dom().nodeType}function z(n){return function(e){return j(e)===n}}function H(e){return j(e)===$e||"#comment"===en(e)}function F(e,n,t){if(!(_e(t)||je(t)||He(t)))throw f.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}function U(e,n,t){F(e.dom(),n,t)}function q(e,n){var t=e.dom();N(n,function(e,n){F(t,n,e)})}function V(e,n){var t=e.dom().getAttribute(n);return null===t?undefined:t}function G(e,n){var t=e.dom();return!(!t||!t.hasAttribute)&&t.hasAttribute(n)}function Y(e,n){e.dom().removeAttribute(n)}function K(e){return w(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})}function X(e,n,t){return""===n||!(e.length<n.length)&&e.substr(t,t+n.length)===n}function $(e,n){return-1!==e.indexOf(n)}function J(e,n){return X(e,n,0)}function Q(e){return e.style!==undefined&&ze(e.style.getPropertyValue)}function Z(t){var r,o=!1;return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return o||(o=!0,r=t.apply(null,e)),r}}function ee(e){var n=tn(e)?e.dom().parentNode:e.dom();return n!==undefined&&null!==n&&n.ownerDocument.body.contains(n)}function ne(e,n,t){if(!_e(t))throw f.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);Q(e)&&e.style.setProperty(n,t)}function te(e,n,t){var r=e.dom();ne(r,n,t)}function re(e,n){var t=e.dom();N(n,function(e,n){ne(t,n,e)})}function oe(e,n){var t=e.dom(),r=f.window.getComputedStyle(t).getPropertyValue(n),o=""!==r||ee(e)?r:an(t,n);return null===o?undefined:o}function ie(e,n){var t=e.dom(),r=an(t,n);return Me.from(r).filter(function(e){return 0<e.length})}function ue(e,n){!function(e,n){Q(e)&&e.style.removeProperty(n)}(e.dom(),n),G(e,"style")&&""===function(e){return e.replace(/^\s+|\s+$/g,"")}(V(e,"style"))&&Y(e,"style")}function ce(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)}function ae(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};function r(e){return Number(n.replace(t,"$"+e))}return dn(r(1),r(2))}function le(e,n){return function(){return n===e}}function fe(e,n){return function(){return n===e}}function se(e,n){var t=String(n).toLowerCase();return y(e,function(e){return e.search(t)})}function de(n){return function(e){return $(e,n)}}function me(){return En.get()}function ge(e,n){var t=e.dom();if(t.nodeType!==Nn)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function pe(e){return e.nodeType!==Nn&&e.nodeType!==kn||0===e.childElementCount}function he(e){return on.fromDom(e.dom().ownerDocument)}function ve(e){return Me.from(e.dom().parentNode).map(on.fromDom)}function be(e,n){for(var t=ze(n)?n:s,r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=on.fromDom(i);if(o.push(u),!0===t(u))break;r=i}return o}function we(e){return Me.from(e.dom().previousSibling).map(on.fromDom)}function ye(e){return Me.from(e.dom().nextSibling).map(on.fromDom)}function Ce(e){return g(e.dom().childNodes,on.fromDom)}function Se(e,n){var t=e.dom().childNodes;return Me.from(t[n]).map(on.fromDom)}function xe(n,t){ve(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}function Re(e,n){ye(e).fold(function(){ve(e).each(function(e){Mn(e,n)})},function(e){xe(e,n)})}function Te(n,t){(function(e){return Se(e,0)})(n).fold(function(){Mn(n,t)},function(e){n.dom().insertBefore(t.dom(),e.dom())})}function Oe(e,n){xe(e,n),Mn(n,e)}function De(r,o){p(o,function(e,n){var t=0===n?r:o[n-1];Re(t,e)})}function Ae(n,e){p(e,function(e){Mn(n,e)})}function Ee(e){e.dom().textContent="",p(Ce(e),function(e){Wn(e)})}function Ne(e){var n=Ce(e);0<n.length&&function(n,e){p(e,function(e){xe(n,e)})}(e,n),Wn(e)}function ke(e,n,t){return function(e,n,t){return h(be(e,t),n)}(e,function(e){return ge(e,n)},t)}function Ie(e,n){return function(e,n){return h(Ce(e),n)}(e,function(e){return ge(e,n)})}function Be(e,n){return function(e,n){var t=n===undefined?f.document:n.dom();return pe(t)?[]:g(t.querySelectorAll(e),on.fromDom)}(n,e)}var Pe=function(t){function e(){return o}function n(e){return e(t)}var r=D(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:i,isNone:s,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return Pe(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:u},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(s,function(e){return n(t,e)})}};return o},Me={some:Pe,none:e,from:function(e){return null===e||e===undefined?u:Pe(e)}},We=tinymce.util.Tools.resolve("tinymce.PluginManager"),_e=a("string"),Le=a("array"),je=a("boolean"),ze=a("function"),He=a("number"),Fe=Array.prototype.slice,Ue=Array.prototype.indexOf,qe=Array.prototype.push,Ve=(ze(Array.from)&&Array.from,Object.keys),Ge=Object.hasOwnProperty,Ye=function(e,r){var o={};return N(e,function(e,n){var t=r(e,n);o[t.k]=t.v}),o},Ke=function(e,n){return Ge.call(e,n)},Xe=function(o,i){var u=o.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return _("required",o),_("optional",i),L(u),function(n){var t=Ve(n);A(o,function(e){return l(t,e)})||M(o,t);var e=h(t,function(e){return!l(u,e)});0<e.length&&W(e);var r={};return p(o,function(e){r[e]=D(n[e])}),p(i,function(e){r[e]=D(Object.prototype.hasOwnProperty.call(n,e)?Me.some(n[e]):Me.none())}),r}},$e=(f.Node.ATTRIBUTE_NODE,f.Node.CDATA_SECTION_NODE,f.Node.COMMENT_NODE),Je=f.Node.DOCUMENT_NODE,Qe=(f.Node.DOCUMENT_TYPE_NODE,f.Node.DOCUMENT_FRAGMENT_NODE,f.Node.ELEMENT_NODE),Ze=f.Node.TEXT_NODE,en=(f.Node.PROCESSING_INSTRUCTION_NODE,f.Node.ENTITY_REFERENCE_NODE,f.Node.ENTITY_NODE,f.Node.NOTATION_NODE,"undefined"!=typeof f.window?f.window:Function("return this;")(),function(e){return e.dom().nodeName.toLowerCase()}),nn=z(Qe),tn=z(Ze),rn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:D(e)}},on={fromHtml:function(e,n){var t=(n||f.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw f.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return rn(t.childNodes[0])},fromTag:function(e,n){var t=(n||f.document).createElement(e);return rn(t)},fromText:function(e,n){var t=(n||f.document).createTextNode(e);return rn(t)},fromDom:rn,fromPoint:function(e,n,t){var r=e.dom();return Me.from(r.elementFromPoint(n,t)).map(rn)}},un=Z(function(){return cn(on.fromDom(f.document))}),cn=function(e){var n=e.dom().body;if(null===n||n===undefined)throw new Error("Body is not available yet");return on.fromDom(n)},an=function(e,n){return Q(e)?e.style.getPropertyValue(n):""},ln=function(e,n){return ce(e,n,f.Node.DOCUMENT_POSITION_CONTAINED_BY)},fn=function(){return(fn=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)},sn=function(){return dn(0,0)},dn=function(e,n){return{major:e,minor:n}},mn={nu:dn,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?sn():ae(e,t)},unknown:sn},gn="Firefox",pn=function(e){var n=e.current;return{current:n,version:e.version,isEdge:le("Edge",n),isChrome:le("Chrome",n),isIE:le("IE",n),isOpera:le("Opera",n),isFirefox:le(gn,n),isSafari:le("Safari",n)}},hn={unknown:function(){return pn({current:undefined,version:mn.unknown()})},nu:pn,edge:D("Edge"),chrome:D("Chrome"),ie:D("IE"),opera:D("Opera"),firefox:D(gn),safari:D("Safari")},vn="Windows",bn="Android",wn="Solaris",yn="FreeBSD",Cn=function(e){var n=e.current;return{current:n,version:e.version,isWindows:fe(vn,n),isiOS:fe("iOS",n),isAndroid:fe(bn,n),isOSX:fe("OSX",n),isLinux:fe("Linux",n),isSolaris:fe(wn,n),isFreeBSD:fe(yn,n)}},Sn={unknown:function(){return Cn({current:undefined,version:mn.unknown()})},nu:Cn,windows:D(vn),ios:D("iOS"),android:D(bn),linux:D("Linux"),osx:D("OSX"),solaris:D(wn),freebsd:D(yn)},xn=function(e,t){return se(e,t).map(function(e){var n=mn.detect(e.versionRegexes,t);return{current:e.name,version:n}})},Rn=function(e,t){return se(e,t).map(function(e){var n=mn.detect(e.versionRegexes,t);return{current:e.name,version:n}})},Tn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,On=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return $(e,"edge/")&&$(e,"chrome")&&$(e,"safari")&&$(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Tn],search:function(e){return $(e,"chrome")&&!$(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return $(e,"msie")||$(e,"trident")}},{name:"Opera",versionRegexes:[Tn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:de("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:de("firefox")},{name:"Safari",versionRegexes:[Tn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return($(e,"safari")||$(e,"mobile/"))&&$(e,"applewebkit")}}],Dn=[{name:"Windows",search:de("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return $(e,"iphone")||$(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:de("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:de("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:de("linux"),versionRegexes:[]},{name:"Solaris",search:de("sunos"),versionRegexes:[]},{name:"FreeBSD",search:de("freebsd"),versionRegexes:[]}],An={browsers:D(On),oses:D(Dn)},En=R(function(e,n){var t=An.browsers(),r=An.oses(),o=xn(t,e).fold(hn.unknown,hn.nu),i=Rn(r,e).fold(Sn.unknown,Sn.nu);return{browser:o,os:i,deviceType:function(e,n,t,r){var o=e.isiOS()&&!0===/ipad/i.test(t),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),c=u||r("(pointer:coarse)"),a=o||!i&&u&&r("(min-device-width:768px)"),l=i||u&&!a,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(t),s=!l&&!a&&!f;return{isiPad:D(o),isiPhone:D(i),isTablet:D(a),isPhone:D(l),isTouch:D(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:D(f),isDesktop:D(s)}}(i,o,e,n)}}(f.navigator.userAgent,function(e){return f.window.matchMedia(e).matches})),Nn=Qe,kn=Je,In=function(e,n){return e.dom()===n.dom()},Bn=me().browser.isIE()?function(e,n){return ln(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},Pn=ge,Mn=(B("element","offset"),function(e,n){e.dom().appendChild(n.dom())}),Wn=function(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)},_n=(B("width","height"),B("width","height"),B("rows","columns")),Ln=B("row","column"),jn=(B("x","y"),B("element","rowspan","colspan")),zn=B("element","rowspan","colspan","isNew"),Hn=B("element","rowspan","colspan","row","column"),Fn=B("element","cells","section"),Un=B("element","isNew"),qn=B("element","cells","section","isNew"),Vn=B("cells","section"),Gn=B("details","section"),Yn=B("startRow","startCol","finishRow","finishCol"),Kn=function(e,n){var t=[];return p(Ce(e),function(e){n(e)&&(t=t.concat([e])),t=t.concat(Kn(e,n))}),t};function Xn(e,n,t,r,o){return e(t,r)?Me.some(t):ze(o)&&o(t)?Me.none():n(t,r,o)}function $n(e,n,t){for(var r=e.dom(),o=ze(t)?t:D(!1);r.parentNode;){r=r.parentNode;var i=on.fromDom(r);if(n(i))return Me.some(i);if(o(i))break}return Me.none()}function Jn(e,n,t){return $n(e,function(e){return ge(e,n)},t)}function Qn(e,n){return function(e,n){return y(e.dom().childNodes,function(e){return n(on.fromDom(e))}).map(on.fromDom)}(e,function(e){return ge(e,n)})}function Zn(e,n){return function(e,n){var t=n===undefined?f.document:n.dom();return pe(t)?Me.none():Me.from(t.querySelector(e)).map(on.fromDom)}(n,e)}function et(e,n,t){return Xn(ge,Jn,e,n,t)}function nt(e,n,t){return void 0===t&&(t=s),t(n)?Me.none():l(e,en(n))?Me.some(n):Jn(n,e.join(","),function(e){return ge(e,"table")||t(e)})}function tt(n,e){return ve(e).map(function(e){return Ie(e,n)})}function rt(e,n){return parseInt(V(e,n),10)}function ot(e,n){return e+","+n}var it=function(e,n,t){return x(Ce(e),function(e){return ge(e,n)?t(e)?[e]:[]:it(e,n,t)})},ut={firstLayer:function(e,n){return it(e,n,D(!0))},filterFirstLayer:it},ct=b(tt,"th,td"),at=b(tt,"tr"),lt={cell:function(e,n){return nt(["td","th"],e,n)},firstCell:function(e){return Zn(e,"th,td")},cells:function(e){return ut.firstLayer(e,"th,td")},neighbourCells:ct,table:function(e,n){return et(e,"table",n)},row:function(e,n){return nt(["tr"],e,n)},rows:function(e){return ut.firstLayer(e,"tr")},notCell:function(e,n){return nt(["caption","tr","tbody","tfoot","thead"],e,n)},neighbourRows:at,attr:rt,grid:function(e,n,t){var r=rt(e,n),o=rt(e,t);return _n(r,o)}},ft=function(e){var n=lt.rows(e);return g(n,function(e){var n=e,t=ve(n).map(function(e){var n=en(e);return"tfoot"===n||"thead"===n||"tbody"===n?n:"tbody"}).getOr("tbody"),r=g(lt.cells(e),function(e){var n=G(e,"rowspan")?parseInt(V(e,"rowspan"),10):1,t=G(e,"colspan")?parseInt(V(e,"colspan"),10):1;return jn(e,n,t)});return Fn(n,r,t)})},st=function(e,t){return g(e,function(e){var n=g(lt.cells(e),function(e){var n=G(e,"rowspan")?parseInt(V(e,"rowspan"),10):1,t=G(e,"colspan")?parseInt(V(e,"colspan"),10):1;return jn(e,n,t)});return Fn(e,n,t.section())})},dt=function(e,n){var t=x(e.all(),function(e){return e.cells()});return h(t,n)},mt={generate:function(e){var l={},n=[],t=e.length,f=0;p(e,function(e,c){var a=[];p(e.cells(),function(e){for(var n=0;l[ot(c,n)]!==undefined;)n++;for(var t=Hn(e.element(),e.rowspan(),e.colspan(),c,n),r=0;r<e.colspan();r++)for(var o=0;o<e.rowspan();o++){var i=n+r,u=ot(c+o,i);l[u]=t,f=Math.max(f,i+1)}a.push(t)}),n.push(Fn(e.element(),a,e.section()))});var r=_n(t,f);return{grid:D(r),access:D(l),all:D(n)}},getAt:function(e,n,t){var r=e.access()[ot(n,t)];return r!==undefined?Me.some(r):Me.none()},findItem:function(e,n,t){var r=dt(e,function(e){return t(n,e.element())});return 0<r.length?Me.some(r[0]):Me.none()},filterItems:dt,justCells:function(e){var n=g(e.all(),function(e){return e.cells()});return S(n)}},gt=B("minRow","minCol","maxRow","maxCol"),pt=function(e,n){function t(e){return ge(e.element(),n)}var r=ft(e),o=mt.generate(r),i=function(e,i){var n=e.grid().columns(),u=e.grid().rows(),c=n,a=0,l=0;return N(e.access(),function(e){if(i(e)){var n=e.row(),t=n+e.rowspan()-1,r=e.column(),o=r+e.colspan()-1;n<u?u=n:a<t&&(a=t),r<c?c=r:l<o&&(l=o)}}),gt(u,c,a,l)}(o,t),u="th:not("+n+"),td:not("+n+")",c=ut.filterFirstLayer(e,"th,td",function(e){return ge(e,u)});return p(c,Wn),function(e,n,t,r){for(var o,i,u,c=n.grid().columns(),a=n.grid().rows(),l=0;l<a;l++)for(var f=!1,s=0;s<c;s++){if(!(l<t.minRow()||l>t.maxRow()||s<t.minCol()||s>t.maxCol()))mt.getAt(n,l,s).filter(r).isNone()?(o=f,void 0,i=e[l].element(),u=on.fromTag("td"),Mn(u,on.fromTag("br")),(o?Mn:Te)(i,u)):f=!0}}(r,o,i,t),function(e,n){var t=h(ut.firstLayer(e,"tr"),function(e){return 0===e.dom().childElementCount});p(t,Wn),n.minCol()!==n.maxCol()&&n.minRow()!==n.maxRow()||p(ut.firstLayer(e,"th,td"),function(e){Y(e,"rowspan"),Y(e,"colspan")}),Y(e,"width"),Y(e,"height"),ue(e,"width"),ue(e,"height")}(e,i),e};function ht(e){return Bt.get(e)}function vt(e){return Bt.getOption(e)}function bt(e,n){Bt.set(e,n)}function wt(e){return"img"===en(e)?1:vt(e).fold(function(){return Ce(e).length},function(e){return e.length})}function yt(e){return function(e){return vt(e).filter(function(e){return 0!==e.trim().length||-1<e.indexOf("\xa0")}).isSome()}(e)||l(Pt,en(e))}function Ct(e){return function(e,o){var i=function(e){for(var n=0;n<e.childNodes.length;n++){var t=on.fromDom(e.childNodes[n]);if(o(t))return Me.some(t);var r=i(e.childNodes[n]);if(r.isSome())return r}return Me.none()};return i(e.dom())}(e,yt)}function St(e){return Mt(e,yt)}function xt(e,n){return on.fromDom(e.dom().cloneNode(n))}function Rt(e){return xt(e,!1)}function Tt(e){return xt(e,!0)}function Ot(e,n){var t=function(e,n){var t=on.fromTag(n),r=K(e);return q(t,r),t}(e,n),r=Ce(Tt(e));return Ae(t,r),t}function Dt(){var e=on.fromTag("td");return Mn(e,on.fromTag("br")),e}function At(e,n,t){var r=Ot(e,n);return N(t,function(e,n){null===e?Y(r,n):U(r,n,e)}),r}function Et(e){return e}function Nt(e){return function(){return on.fromTag("tr",e.dom())}}function kt(e,n){return n.column()>=e.startCol()&&n.column()+n.colspan()-1<=e.finishCol()&&n.row()>=e.startRow()&&n.row()+n.rowspan()-1<=e.finishRow()}function It(e,n,t){var r=mt.findItem(e,n,In),o=mt.findItem(e,t,In);return r.bind(function(n){return o.map(function(e){return function(e,n){return Yn(Math.min(e.row(),n.row()),Math.min(e.column(),n.column()),Math.max(e.row()+e.rowspan()-1,n.row()+n.rowspan()-1),Math.max(e.column()+e.colspan()-1,n.column()+n.colspan()-1))}(n,e)})})}var Bt=function Qf(t,r){var n=function(e){return t(e)?Me.from(e.dom().nodeValue):Me.none()};return{get:function(e){if(!t(e))throw new Error("Can only get "+r+" value of a "+r+" node");return n(e).getOr("")},getOption:n,set:function(e,n){if(!t(e))throw new Error("Can only set raw "+r+" value of a "+r+" node");e.dom().nodeValue=n}}}(tn,"text"),Pt=["img","br"],Mt=function(e,i){var u=function(e){for(var n=Ce(e),t=n.length-1;0<=t;t--){var r=n[t];if(i(r))return Me.some(r);var o=u(r);if(o.isSome())return o}return Me.none()};return u(e)},Wt={cellOperations:function(i,e,u){return{row:Nt(e),cell:function(e){var n=he(e.element()),t=on.fromTag(en(e.element()),n.dom()),r=u.getOr(["strong","em","b","i","span","font","h1","h2","h3","h4","h5","h6","p","div"]),o=0<r.length?function(r,o,i){return Ct(r).map(function(e){var n=i.join(","),t=ke(e,n,function(e){return In(e,r)});return v(t,function(e,n){var t=Rt(n);return Y(t,"contenteditable"),Mn(e,t),t},o)}).getOr(o)}(e.element(),t,r):t;return Mn(o,on.fromTag("br")),function(e,n){var t=e.dom(),r=n.dom();Q(t)&&Q(r)&&(r.style.cssText=t.style.cssText)}(e.element(),t),ue(t,"height"),1!==e.colspan()&&ue(e.element(),"width"),i(e.element(),t),t},replace:At,gap:Dt}},paste:function(e){return{row:Nt(e),cell:Dt,replace:Et,gap:Dt}}},_t=function(e,n){var t=n.column(),r=n.column()+n.colspan()-1,o=n.row(),i=n.row()+n.rowspan()-1;return t<=e.finishCol()&&r>=e.startCol()&&o<=e.finishRow()&&i>=e.startRow()},Lt=function(e,n){for(var t=!0,r=b(kt,n),o=n.startRow();o<=n.finishRow();o++)for(var i=n.startCol();i<=n.finishCol();i++)t=t&&mt.getAt(e,o,i).exists(r);return t?Me.some(n):Me.none()},jt=It,zt=function(n,e,t){return It(n,e,t).bind(function(e){return Lt(n,e)})},Ht=function(r,e,o,i){return mt.findItem(r,e,In).bind(function(e){var n=0<o?e.row()+e.rowspan()-1:e.row(),t=0<i?e.column()+e.colspan()-1:e.column();return mt.getAt(r,n+o,t+i).map(function(e){return e.element()})})},Ft=function(t,e,n){return jt(t,e,n).map(function(e){var n=mt.filterItems(t,b(_t,e));return g(n,function(e){return e.element()})})},Ut=function(e,n){return mt.findItem(e,n,function(e,n){return Bn(n,e)}).map(function(e){return e.element()})},qt=function(e){var n=ft(e);return mt.generate(n)},Vt=function(t,r,o){return lt.table(t).bind(function(e){var n=qt(e);return Ht(n,t,r,o)})},Gt=function(e,n,t){var r=qt(e);return Ft(r,n,t)},Yt=function(e,n,t,r,o){var i=qt(e),u=In(e,t)?Me.some(n):Ut(i,n),c=In(e,o)?Me.some(r):Ut(i,r);return u.bind(function(n){return c.bind(function(e){return Ft(i,n,e)})})},Kt=function(e,n,t){var r=qt(e);return zt(r,n,t)},Xt=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"];function $t(){return{up:D({selector:Jn,closest:et,predicate:$n,all:be}),down:D({selector:Be,predicate:Kn}),styles:D({get:oe,getRaw:ie,set:te,remove:ue}),attrs:D({get:V,set:U,remove:Y,copyTo:function(e,n){var t=K(e);q(n,t)}}),insert:D({before:xe,after:Re,afterAll:De,append:Mn,appendAll:Ae,prepend:Te,wrap:Oe}),remove:D({unwrap:Ne,remove:Wn}),create:D({nu:on.fromTag,clone:function(e){return on.fromDom(e.dom().cloneNode(!1))},text:on.fromText}),query:D({comparePosition:function(e,n){return e.dom().compareDocumentPosition(n.dom())},prevSibling:we,nextSibling:ye}),property:D({children:Ce,name:en,parent:ve,document:function(e){return e.dom().ownerDocument},isText:tn,isComment:H,isElement:nn,getText:ht,setText:bt,isBoundary:function(e){return!!nn(e)&&("body"===en(e)||l(Xt,en(e)))},isEmptyTag:function(e){return!!nn(e)&&l(["br","img","hr","input"],en(e))}}),eq:In,is:Pn}}function Jt(e,n,t){var r=e.property().children(n);return C(r,b(e.eq,t)).map(function(e){return{before:D(r.slice(0,e)),after:D(r.slice(e+1))}})}function Qt(e,n){return b(e.eq,n)}function Zt(n,e,t,r){function o(n){return C(n,r).fold(function(){return n},function(e){return n.slice(0,e+1)})}void 0===r&&(r=s);var i=[e].concat(n.up().all(e)),u=[t].concat(n.up().all(t)),c=o(i),a=o(u),l=y(c,function(e){return m(a,Qt(n,e))});return{firstpath:D(c),secondpath:D(a),shared:D(l)}}function er(e){return Jn(e,"table")}function nr(c,a,r){function l(n){return function(e){return r!==undefined&&r(e)||In(e,n)}}return In(c,a)?Me.some(sr.create({boxes:Me.some([c]),start:c,finish:a})):er(c).bind(function(u){return er(a).bind(function(i){if(In(u,i))return Me.some(sr.create({boxes:Gt(u,c,a),start:c,finish:a}));if(Bn(u,i)){var e=0<(n=ke(a,"td,th",l(u))).length?n[n.length-1]:a;return Me.some(sr.create({boxes:Yt(u,c,u,a,i),start:c,finish:e}))}if(Bn(i,u)){var n,t=0<(n=ke(c,"td,th",l(i))).length?n[n.length-1]:c;return Me.some(sr.create({boxes:Yt(i,c,u,a,i),start:c,finish:t}))}return fr.ancestors(c,a).shared().bind(function(e){return et(e,"table",r).bind(function(e){var n=ke(a,"td,th",l(e)),t=0<n.length?n[n.length-1]:a,r=ke(c,"td,th",l(e)),o=0<r.length?r[r.length-1]:c;return Me.some(sr.create({boxes:Yt(e,c,u,a,i),start:o,finish:t}))})})})})}function tr(e,n){return Rr.cata(n.get(),D([]),o,D([e]))}function rr(e){return{element:D(e),mergable:Me.none,unmergable:Me.none,selection:D([e])}}var or=B("left","right"),ir=B("first","second","splits"),ur=function(r,o,e,n){var t=o(r,e);return v(n,function(e,n){var t=o(r,n);return cr(r,e,t)},t)},cr=function(n,e,t){return e.bind(function(e){return t.filter(b(n.eq,e))})},ar={sharedOne:function(e,n,t){return 0<t.length?function(e,n,t,r){return r(e,n,t[0],t.slice(1))}(e,n,t,ur):Me.none()},subset:function(n,e,t){var r=Zt(n,e,t);return r.shared().bind(function(e){return function(o,i,e,n){var u=o.property().children(i);if(o.eq(i,e[0]))return Me.some([e[0]]);if(o.eq(i,n[0]))return Me.some([n[0]]);function t(e){var n=E(e),t=C(n,Qt(o,i)).getOr(-1),r=t<n.length-1?n[t+1]:n[t];return C(u,Qt(o,r))}var r=t(e),c=t(n);return r.bind(function(r){return c.map(function(e){var n=Math.min(r,e),t=Math.max(r,e);return u.slice(n,t+1)})})}(n,e,r.firstpath(),r.secondpath())})},ancestors:Zt,breakToLeft:function(t,r,o){return Jt(t,r,o).map(function(e){var n=t.create().clone(r);return t.insert().appendAll(n,e.before().concat([o])),t.insert().appendAll(r,e.after()),t.insert().before(r,n),or(n,r)})},breakToRight:function(t,r,e){return Jt(t,r,e).map(function(e){var n=t.create().clone(r);return t.insert().appendAll(n,e.after()),t.insert().after(r,n),or(r,n)})},breakPath:function(i,e,u,c){var a=function(e,n,o){var t=ir(e,Me.none(),o);return u(e)?ir(e,n,o):i.property().parent(e).bind(function(r){return c(i,r,e).map(function(e){var n=[{first:e.left,second:e.right}],t=u(r)?r:e.left();return a(t,Me.some(e.right()),o.concat(n))})}).getOr(t)};return a(e,Me.none(),[])}},lr=$t(),fr={sharedOne:function(t,e){return ar.sharedOne(lr,function(e,n){return t(n)},e)},subset:function(e,n){return ar.subset(lr,e,n)},ancestors:function(e,n,t){return ar.ancestors(lr,e,n,t)},breakToLeft:function(e,n){return ar.breakToLeft(lr,e,n)},breakToRight:function(e,n){return ar.breakToRight(lr,e,n)},breakPath:function(e,n,r){return ar.breakPath(lr,e,n,function(e,n,t){return r(n,t)})}},sr={create:Xe(["boxes","start","finish"],[])},dr=nr,mr=function(e,n){var t=Be(e,n);return 0<t.length?Me.some(t):Me.none()},gr=function(e,n,t,r,o){return function(e,n){return y(e,function(e){return ge(e,n)})}(e,o).bind(function(e){return Vt(e,n,t).bind(function(e){return function(n,t){return Jn(n,"table").bind(function(e){return Zn(e,t).bind(function(e){return nr(e,n).bind(function(n){return n.boxes().map(function(e){return{boxes:D(e),start:D(n.start()),finish:D(n.finish())}})})})})}(e,r)})})},pr=function(e,n,r){return Zn(e,n).bind(function(t){return Zn(e,r).bind(function(n){return fr.sharedOne(er,[t,n]).map(function(e){return{first:D(t),last:D(n),table:D(e)}})})})},hr=function(e,n){return mr(e,n)},vr=function(o,e,n){return pr(o,e,n).bind(function(t){function e(e){return In(o,e)}var n=Jn(t.first(),"thead,tfoot,tbody,table",e),r=Jn(t.last(),"thead,tfoot,tbody,table",e);return n.bind(function(n){return r.bind(function(e){return In(n,e)?Kt(t.table(),t.first(),t.last()):Me.none()})})})},br="data-mce-selected",wr="data-mce-first-selected",yr="data-mce-last-selected",Cr={selected:D(br),selectedSelector:D("td[data-mce-selected],th[data-mce-selected]"),attributeSelector:D("[data-mce-selected]"),firstSelected:D(wr),firstSelectedSelector:D("td[data-mce-first-selected],th[data-mce-first-selected]"),lastSelected:D(yr),lastSelectedSelector:D("td[data-mce-last-selected],th[data-mce-last-selected]")},Sr=function(u){if(!Le(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var c=[],t={};return p(u,function(e,r){var n=Ve(e);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],i=e[o];if(t[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!Le(i))throw new Error("case arguments must be an array");c.push(o),t[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var t=new Array(e),n=0;n<t.length;n++)t[n]=arguments[n];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[r].apply(null,t)},match:function(e){var n=Ve(e);if(c.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+c.join(",")+"\nActual: "+n.join(","));if(!A(c,function(e){return l(n,e)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+c.join(", "));return e[o].apply(null,t)},log:function(e){f.console.log(e,{constructors:c,constructor:o,params:t})}}}}),t},xr=Sr([{none:[]},{multiple:["elements"]},{single:["selection"]}]),Rr={cata:function(e,n,t,r){return e.fold(n,t,r)},none:xr.none,multiple:xr.multiple,single:xr.single},Tr=function(t,e){return Rr.cata(e.get(),Me.none,function(n,e){return 0===n.length?Me.none():vr(t,Cr.firstSelectedSelector(),Cr.lastSelectedSelector()).bind(function(e){return 1<n.length?Me.some({bounds:D(e),cells:D(n)}):Me.none()})},Me.none)},Or=function(e,n){var t=tr(e,n);return 0<t.length&&A(t,function(e){return G(e,"rowspan")&&1<parseInt(V(e,"rowspan"),10)||G(e,"colspan")&&1<parseInt(V(e,"colspan"),10)})?Me.some(t):Me.none()},Dr=tr,Ar=B("element","clipboard","generators"),Er={noMenu:rr,forMenu:function(e,n,t){return{element:D(t),mergable:D(Tr(n,e)),unmergable:D(Or(t,e)),selection:D(Dr(t,e))}},notCell:function(e){return rr(e)},paste:Ar,pasteRows:function(e,n,t,r,o){return{element:D(t),mergable:Me.none,unmergable:Me.none,selection:D(Dr(t,e)),clipboard:D(r),generators:D(o)}}},Nr={registerEvents:function(c,e,a,l){c.on("BeforeGetContent",function(n){!0===n.selection&&Rr.cata(e.get(),T,function(e){n.preventDefault(),function(e){return lt.table(e[0]).map(Tt).map(function(e){return[pt(e,Cr.attributeSelector())]})}(e).each(function(e){n.content="text"===n.format?function(e){return g(e,function(e){return e.dom().innerText}).join("")}(e):function(n,e){return g(e,function(e){return n.selection.serializer.serialize(e.dom(),{})}).join("")}(c,e)})},T)}),c.on("BeforeSetContent",function(u){!0===u.selection&&!0===u.paste&&Me.from(c.dom.getParent(c.selection.getStart(),"th,td")).each(function(e){var i=on.fromDom(e);lt.table(i).each(function(n){var e=h(function(e,n){var t=(n||f.document).createElement("div");return t.innerHTML=e,Ce(on.fromDom(t))}(u.content),function(e){return"meta"!==en(e)});if(1===e.length&&"table"===en(e[0])){u.preventDefault();var t=on.fromDom(c.getDoc()),r=Wt.paste(t),o=Er.paste(i,e[0],r);a.pasteCells(n,o).each(function(e){c.selection.setRng(e),c.focus(),l.clear(n)})}})})})}};function kr(r,o){function e(e){var n=o(e);if(n<=0||null===n){var t=oe(e,r);return parseFloat(t)||0}return n}function i(o,e){return w(e,function(e,n){var t=oe(o,n),r=t===undefined?0:parseInt(t,10);return isNaN(r)?e:e+r},0)}return{set:function(e,n){if(!He(n)&&!n.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+n);var t=e.dom();Q(t)&&(t.style[r]=n+"px")},get:e,getOuter:e,aggregate:i,max:function(e,n,t){var r=i(e,t);return r<n?n-r:0}}}function Ir(e){return Qr.get(e)}function Br(e){return Qr.getOuter(e)}function Pr(e){return Zr.get(e)}function Mr(e){return Zr.getOuter(e)}function Wr(e,n,t){return function(e,n){var t=parseFloat(e);return isNaN(t)?n:t}(oe(e,n),t)}function _r(e,n){te(e,"height",n+"px")}function Lr(e,n,t,r){var o=parseInt(e,10);return function(e,n){return X(e,n,e.length-n.length)}(e,"%")&&"table"!==en(n)?function(e,t,r,n){var o=lt.table(e).map(function(e){var n=r(e);return Math.floor(t/100*n)}).getOr(t);return n(e,o),o}(n,o,t,r):o}function jr(e){var n=function(e){return ie(e,"height").getOrThunk(function(){return no(e)+"px"})}(e);return n?Lr(n,e,Ir,_r):Ir(e)}function zr(e){return ie(e,"width").fold(function(){return Me.from(V(e,"width"))},function(e){return Me.some(e)})}function Hr(e,n){return e/n.pixelWidth()*100}function Fr(e,n){return e!==undefined?e:n!==undefined?n:0}function Ur(e){var n=e.dom().ownerDocument,t=n.body,r=n.defaultView,o=n.documentElement;if(t===e.dom())return lo(t.offsetLeft,t.offsetTop);var i=Fr(r.pageYOffset,o.scrollTop),u=Fr(r.pageXOffset,o.scrollLeft),c=Fr(o.clientTop,t.clientTop),a=Fr(o.clientLeft,t.clientLeft);return fo(e).translate(u-a,i-c)}function qr(e){return Ur(e).left()+Mr(e)}function Vr(e){return Ur(e).left()}function Gr(e,n){return mo(e,Vr(n))}function Yr(e,n){return mo(e,qr(n))}function Kr(e){return Ur(e).top()}function Xr(e,n){return so(e,Kr(n))}function $r(e,n){return so(e,Kr(n)+Br(n))}function Jr(t,n,r){if(0===r.length)return[];var e=g(r.slice(1),function(e,n){return e.map(function(e){return t(n,e)})}),o=r[r.length-1].map(function(e){return n(r.length-1,e)});return e.concat([o])}var Qr=kr("height",function(e){var n=e.dom();return ee(e)?n.getBoundingClientRect().height:n.offsetHeight}),Zr=kr("width",function(e){return e.dom().offsetWidth}),eo=me(),no=function(e){return eo.browser.isIE()||eo.browser.isEdge()?function(e){var n=Wr(e,"padding-top",0),t=Wr(e,"padding-bottom",0),r=Wr(e,"border-top-width",0),o=Wr(e,"border-bottom-width",0),i=e.dom().getBoundingClientRect().height;return"border-box"===oe(e,"box-sizing")?i:i-n-t-(r+o)}(e):Wr(e,"height",Ir(e))},to=/(\d+(\.\d+)?)(\w|%)*/,ro=/(\d+(\.\d+)?)%/,oo=/(\d+(\.\d+)?)px|em/,io=function(e,n){return G(e,n)?parseInt(V(e,n),10):1},uo={percentageBasedSizeRegex:D(ro),pixelBasedSizeRegex:D(oo),setPixelWidth:function(e,n){te(e,"width",n+"px")},setPercentageWidth:function(e,n){te(e,"width",n+"%")},setHeight:_r,getPixelWidth:function(n,t){return zr(n).fold(function(){return Pr(n)},function(e){return function(e,n,t){var r=oo.exec(n);if(null!==r)return parseInt(r[1],10);var o=ro.exec(n);return null===o?Pr(e):function(e,n){return e/100*n.pixelWidth()}(parseFloat(o[1]),t)}(n,e,t)})},getPercentageWidth:function(n,t){return zr(n).fold(function(){var e=Pr(n);return Hr(e,t)},function(e){return function(e,n,t){var r=ro.exec(n);if(null!==r)return parseFloat(r[1]);var o=Pr(e);return Hr(o,t)}(n,e,t)})},getGenericWidth:function(e){return zr(e).bind(function(e){var n=to.exec(e);return null!==n?Me.some({width:D(parseFloat(n[1])),unit:D(n[3])}):Me.none()})},setGenericWidth:function(e,n,t){te(e,"width",n+t)},getHeight:function(e){return function(e,n,t){return t(e)/io(e,n)}(e,"rowspan",jr)},getRawWidth:zr},co=function(t,r){uo.getGenericWidth(t).each(function(e){var n=e.width()/2;uo.setGenericWidth(t,n,e.unit()),uo.setGenericWidth(r,n,e.unit())})},ao=function(t,r){return{left:D(t),top:D(r),translate:function(e,n){return ao(t+e,r+n)}}},lo=ao,fo=function(e){var n=e.dom(),t=n.ownerDocument.body;return t===n?lo(t.offsetLeft,t.offsetTop):ee(e)?function(e){var n=e.getBoundingClientRect();return lo(n.left,n.top)}(n):lo(0,0)},so=B("row","y"),mo=B("col","x"),go={height:{delta:o,positions:function(e){return Jr(Xr,$r,e)},edge:Kr},rtl:{delta:function(e){return-e},edge:qr,positions:function(e){return Jr(Yr,Gr,e)}},ltr:{delta:o,edge:Vr,positions:function(e){return Jr(Gr,Yr,e)}}},po={ltr:go.ltr,rtl:go.rtl};function ho(n){function t(e){return n(e).isRtl()?po.rtl:po.ltr}return{delta:function(e,n){return t(n).delta(e,n)},edge:function(e){return t(e).edge(e)},positions:function(e,n){return t(n).positions(e,n)}}}function vo(e){for(var n=[],t=function(e){n.push(e)},r=0;r<e.length;r++)e[r].each(t);return n}function bo(e,n){for(var t=0;t<e.length;t++){var r=n(e[t],t);if(r.isSome())return r}return Me.none()}function wo(e,n,t,r){t===r?Y(e,n):U(e,n,t)}function yo(e,n){var t=V(e,n);return t===undefined||""===t?[]:t.split(" ")}function Co(e){return e.dom().classList!==undefined}function So(e,n){return function(e,n,t){var r=yo(e,n).concat([t]);return U(e,n,r.join(" ")),!0}(e,"class",n)}function xo(e,n){return function(e,n,t){var r=h(yo(e,n),function(e){return e!==t});return 0<r.length?U(e,n,r.join(" ")):Y(e,n),!1}(e,"class",n)}function Ro(e,n){Co(e)?e.dom().classList.add(n):So(e,n)}function To(e){0===(Co(e)?e.dom().classList:function(e){return yo(e,"class")}(e)).length&&Y(e,"class")}function Oo(e,n){return Co(e)&&e.dom().classList.contains(n)}function Do(e,n){for(var t=[],r=e;r<n;r++)t.push(r);return t}function Ao(n,t){if(t<0||t>=n.length-1)return Me.none();var e=n[t].fold(function(){var e=E(n.slice(0,t));return bo(e,function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return Me.some({value:e,delta:0})}),r=n[t+1].fold(function(){var e=n.slice(t+1);return bo(e,function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return Me.some({value:e,delta:1})});return e.bind(function(t){return r.map(function(e){var n=e.delta+t.delta;return Math.abs(e.value-t.value)/n})})}function Eo(e){var n=e.replace(/\./g,"-");return{resolve:function(e){return n+"-"+e}}}function No(e){var n=Be(e.parent(),"."+iu);p(n,Wn)}function ko(t,e,r){var o=t.origin();p(e,function(e,n){e.each(function(e){var n=r(o,e);Ro(n,iu),Mn(t.parent(),n)})})}function Io(e,n,t,r,o,i){var u=Ur(n);!function(e,n,r,o){ko(e,n,function(e,n){var t=ou(n.row(),r.left()-e.left(),n.y()-e.top(),o,7);return Ro(t,uu),t})}(e,0<t.length?o.positions(t,n):[],u,Mr(n)),function(e,n,r,o){ko(e,n,function(e,n){var t=ru(n.col(),n.x()-e.left(),r.top()-e.top(),7,o);return Ro(t,cu),t})}(e,0<r.length?i.positions(r,n):[],u,Br(n))}function Bo(e,n){var t=Be(e.parent(),"."+iu);p(t,n)}function Po(e,n){return e.cells()[n]}function Mo(e,n){if(0===e.length)return 0;var t=e[0];return C(e,function(e){return!n(t.element(),e.element())}).fold(function(){return e.length},function(e){return e})}function Wo(e,t){return g(e,function(e){var n=function(e){return bo(e,function(e){return ve(e.element()).map(function(e){var n=ve(e).isNone();return Un(e,n)})}).getOrThunk(function(){return Un(t.row(),!0)})}(e.details());return qn(n.element(),e.details(),e.section(),n.isNew())})}function _o(e,n){var t=vu(e,In);return Wo(t,n)}function Lo(e,n){var t=S(g(e.all(),function(e){return e.cells()}));return y(t,function(e){return In(n,e.element())})}function jo(c,a,l,f,s){return function(t,r,e,o,i){var n=ft(r),u=mt.generate(n);return a(u,e).map(function(e){var n=function(e,n){return bu(e,n,!1)}(u,o),t=c(n,e,In,s(o)),r=_o(t.grid(),o);return{grid:D(r),cursor:t.cursor}}).fold(function(){return Me.none()},function(e){var n=Ji(r,e.grid());return l(r,e.grid(),i),f(r),au(t,r,go.height,i),Me.some({cursor:e.cursor,newRows:n.newRows,newCells:n.newCells})})}}function zo(n,e){return lt.cell(e.element()).bind(function(e){return Lo(n,e)})}function Ho(n,e){var t=g(e.selection(),function(e){return lt.cell(e).bind(function(e){return Lo(n,e)})}),r=vo(t);return 0<r.length?Me.some({cells:r,generators:e.generators,clipboard:e.clipboard}):Me.none()}function Fo(n,e){var t=g(e.selection(),function(e){return lt.cell(e).bind(function(e){return Lo(n,e)})}),r=vo(t);return 0<r.length?Me.some(r):Me.none()}function Uo(e,n){return g(e,function(){return Un(n.cell(),!0)})}function qo(n,e,t){return n.concat(function(e,n){for(var t=[],r=0;r<e;r++)t.push(n(r));return t}(e,function(e){return pu.setCells(n[n.length-1],Uo(n[n.length-1].cells(),t))}))}function Vo(e,n,t){return g(e,function(e){return pu.setCells(e,e.cells().concat(Uo(Do(0,n),t)))})}function Go(e,t,r,n){return g(e,function(e){return pu.mapCells(e,function(e){return function(n){return m(t,function(e){return r(n.element(),e.element())})}(e)?Un(n(e.element(),r),!0):e})})}function Yo(e,n,t,r){return pu.getCellElement(e[n],t)!==undefined&&0<n&&r(pu.getCellElement(e[n-1],t),pu.getCellElement(e[n],t))}function Ko(e,n,t){return 0<n&&t(pu.getCellElement(e,n-1),pu.getCellElement(e,n))}function Xo(e,n){return G(e,n)&&1<parseInt(V(e,n),10)}function $o(e,n,t){return ie(e,n).fold(function(){return t(e)+"px"},function(e){return e})}function Jo(e,n){return $o(e,"width",function(e){return uo.getPixelWidth(e,n)})}function Qo(e){return $o(e,"height",uo.getHeight)}function Zo(e,n,t,r,o){var i=eu(e),u=g(i,function(e){return e.map(n.edge)});return g(i,function(e,n){return e.filter(d(Hu.hasColspan)).fold(function(){var e=Ao(u,n);return r(e)},function(e){return t(e,o)})})}function ei(e){return e.map(function(e){return e+"px"}).getOr("")}function ni(e,n,t,r){var o=nu(e),i=g(o,function(e){return e.map(n.edge)});return g(o,function(e,n){return e.filter(d(Hu.hasRowspan)).fold(function(){var e=Ao(i,n);return r(e)},function(e){return t(e)})})}function ti(e,n,t){for(var r=0,o=e;o<n;o++)r+=t[o]!==undefined?t[o]:0;return r}function ri(e){var n=o;return{width:D(e),pixelWidth:D(e),getWidths:Fu.getPixelWidths,getCellDelta:n,singleColumnWidth:function(e,n){return[Math.max(Hu.minWidth(),e+n)-e]},minCellWidth:Hu.minWidth,setElementWidth:uo.setPixelWidth,setTableWidth:function(e,n,t){var r=v(n,function(e,n){return e+n},0);uo.setPixelWidth(e,r)}}}function oi(e,n){var t=uo.percentageBasedSizeRegex().exec(n);if(null!==t)return function(e,n){var o=parseFloat(e),t=Pr(n);return{width:D(o),pixelWidth:D(t),getWidths:Fu.getPercentageWidths,getCellDelta:function(e){return e/t*100},singleColumnWidth:function(e,n){return[100-e]},minCellWidth:function(){return Hu.minWidth()/t*100},setElementWidth:uo.setPercentageWidth,setTableWidth:function(e,n,t){var r=t/100*o;uo.setPercentageWidth(e,o+r)}}}(t[1],e);var r=uo.pixelBasedSizeRegex().exec(n);if(null!==r){var o=parseInt(r[1],10);return ri(o)}var i=Pr(e);return ri(i)}function ii(e){return mt.generate(e)}function ui(e){var n=ft(e);return ii(n)}function ci(n,e){var t=h(e,function(e){return!l(n,e)});0<t.length&&W(t)}function ai(e){return function(e,n){return $u(e,n,{validate:ze,label:"function"})}(ci,e)}function li(e){var n=G(e,"colspan")?parseInt(V(e,"colspan"),10):1,t=G(e,"rowspan")?parseInt(V(e,"rowspan"),10):1;return{element:D(e),colspan:D(n),rowspan:D(t)}}function fi(e,n){var t=e.property().name(n);return l(nc,t)}function si(e,n){return l(["br","img","hr","input"],e.property().name(n))}function di(e){0===lt.cells(e).length&&Wn(e)}function mi(e,n,t){return sc(e,n,t).orThunk(function(){return sc(e,0,0)})}function gi(e,n,t){return fc(e,sc(e,n,t))}function pi(e){return w(e,function(e,n){return m(e,function(e){return e.row()===n.row()})?e:e.concat([n])},[]).sort(function(e,n){return e.row()-n.row()})}function hi(e){return w(e,function(e,n){return m(e,function(e){return e.column()===n.column()})?e:e.concat([n])},[]).sort(function(e,n){return e.column()-n.column()})}function vi(e,n,t){var r=st(e,t),o=mt.generate(r);return bu(o,n,!0)}function bi(e){return e.getBoundingClientRect().width}function wi(e){return e.getBoundingClientRect().height}function yi(e){return/^[0-9]+$/.test(e)&&(e+="px"),e}function Ci(e){var n=Be(e,"td[data-mce-style],th[data-mce-style]");Y(e,"data-mce-style"),p(n,function(e){Y(e,"data-mce-style")})}function Si(e){return e.getParam("table_default_attributes",yc,"object")}function xi(e){return e.getParam("table_default_styles",wc,"object")}function Ri(e){return e.getParam("table_cell_advtab",!0,"boolean")}function Ti(e){return e.getParam("table_row_advtab",!0,"boolean")}function Oi(e){return e.getParam("table_advtab",!0,"boolean")}function Di(e){return e.getParam("table_style_by_css",!1,"boolean")}function Ai(e){return e.getParam("table_class_list",[],"array")}function Ei(e){return!1===e.getParam("table_responsive_width")}function Ni(e,n){return e.fire("newrow",{node:n})}function ki(e,n){return e.fire("newcell",{node:n})}function Ii(e,n,t,r){e.fire("ObjectResizeStart",{target:n,width:t,height:r})}function Bi(e,n,t,r){e.fire("ObjectResized",{target:n,width:t,height:r})}function Pi(n,e){function t(e){return J(e,"rgb")?n.toHex(e):e}return{borderwidth:ie(on.fromDom(e),"border-width").getOr(""),borderstyle:ie(on.fromDom(e),"border-style").getOr(""),bordercolor:ie(on.fromDom(e),"border-color").map(t).getOr(""),backgroundcolor:ie(on.fromDom(e),"background-color").map(t).getOr("")}}function Mi(e,n,t,r,o){var i={};return Dc.each(e.split(" "),function(e){r.formatter.matchNode(o,n+e)&&(i[t]=e)}),i[t]||(i[t]=""),i}function Wi(e,n){e.setAttrib("scope",n.scope),e.setAttrib("class",n["class"]),e.setStyle("width",yi(n.width)),e.setStyle("height",yi(n.height))}function _i(e,n){e.setStyle("background-color",n.backgroundcolor),e.setStyle("border-color",n.bordercolor),e.setStyle("border-style",n.borderstyle),e.setStyle("border-width",yi(n.borderwidth))}function Li(e,n,t){var r=e.dom,o=t.celltype&&n[0].nodeName.toLowerCase()!==t.celltype?r.rename(n[0],t.celltype):n[0],i=qc.normal(r,o);Wi(i,t),Ri(e)&&_i(i,t),Nc(e,o),kc(e,o),t.halign&&Ac(e,o,t.halign),t.valign&&Ec(e,o,t.valign)}function ji(t,e,r){var o=t.dom;Dc.each(e,function(e){r.celltype&&e.nodeName.toLowerCase()!==r.celltype&&(e=o.rename(e,r.celltype));var n=qc.ifTruthy(o,e);Wi(n,r),Ri(t)&&_i(n,r),r.halign&&Ac(t,e,r.halign),r.valign&&Ec(t,e,r.valign)})}function zi(e,n,t){var r=t.getData();t.close(),e.undoManager.transact(function(){(1===n.length?Li:ji)(e,n,r),e.focus()})}function Hi(t,e,r,n){var o=t.dom,i=n.getData();n.close();var u=1===e.length?qc.normal:qc.ifTruthy;t.undoManager.transact(function(){Dc.each(e,function(e){i.type!==e.parentNode.nodeName.toLowerCase()&&function(e,n,t){var r=e.getParent(n,"table"),o=n.parentNode,i=e.select(t,r)[0];i||(i=e.create(t),r.firstChild?"CAPTION"===r.firstChild.nodeName?e.insertAfter(i,r.firstChild):r.insertBefore(i,r.firstChild):r.appendChild(i)),i.appendChild(n),o.hasChildNodes()||e.remove(o)}(t.dom,e,i.type);var n=u(o,e);n.setAttrib("scope",i.scope),n.setAttrib("class",i["class"]),n.setStyle("height",yi(i.height)),Ti(t)&&function(e,n){e.setStyle("background-color",n.backgroundcolor),e.setStyle("border-color",n.bordercolor),e.setStyle("border-style",n.borderstyle)}(n,i),i.align!==r.align&&(Nc(t,e),Ac(t,e,i.align))}),t.focus()})}function Fi(e,n,t,r,o){void 0===o&&(o=Qc);var i=on.fromTag("table");re(i,o.styles),q(i,o.attributes);var u=on.fromTag("tbody");Mn(i,u);for(var c=[],a=0;a<e;a++){for(var l=on.fromTag("tr"),f=0;f<n;f++){var s=a<t||f<r?on.fromTag("th"):on.fromTag("td");f<r&&U(s,"scope","row"),a<t&&U(s,"scope","col"),Mn(s,on.fromTag("br")),o.percentages&&te(s,"width",100/n+"%"),Mn(l,s)}c.push(l)}return Ae(u,c),i}function Ui(e,n){e.selection.select(n.dom(),!0),e.selection.collapse(!0)}function qi(t,r,e){var o,i=t.dom,u=e.getData();e.close(),""===u["class"]&&delete u["class"],t.undoManager.transact(function(){if(!r){var e=parseInt(u.cols,10)||1,n=parseInt(u.rows,10)||1;r=Zc(t,e,n)}!function(e,n,t){var r=e.dom,o={},i={};if(o["class"]=t["class"],i.height=yi(t.height),r.getAttrib(n,"width")&&!Di(e)?o.width=function(e){return e?e.replace(/px$/,""):""}(t.width):i.width=yi(t.width),Di(e)?(i["border-width"]=yi(t.border),i["border-spacing"]=yi(t.cellspacing)):(o.border=t.border,o.cellpadding=t.cellpadding,o.cellspacing=t.cellspacing),Di(e)&&n.children)for(var u=0;u<n.children.length;u++)na(r,n.children[u],{"border-width":yi(t.border),padding:yi(t.cellpadding)}),Oi(e)&&na(r,n.children[u],{"border-color":t.bordercolor});Oi(e)&&(i["background-color"]=t.backgroundcolor,i["border-color"]=t.bordercolor,i["border-style"]=t.borderstyle),o.style=r.serializeStyle($c(xi(e),i)),r.setAttribs(n,$c(Si(e),o))}(t,r,u),(o=i.select("caption",r)[0])&&!u.caption&&i.remove(o),!o&&u.caption&&((o=i.create("caption")).innerHTML=Jc.ie?"\xa0":'<br data-mce-bogus="1"/>',r.insertBefore(o,r.firstChild)),""===u.align?Nc(t,r):Ac(t,r,u.align),t.focus(),t.addVisual()})}function Vi(n){return function(e){return Me.from(e.dom.getParent(e.selection.getStart(),n)).map(on.fromDom)}}function Gi(e){function n(){e.stopPropagation()}function t(){e.preventDefault()}var r=on.fromDom(e.target),o=O(t,n);return function(e,n,t,r,o,i,u){return{target:D(e),x:D(n),y:D(t),stop:r,prevent:o,kill:i,raw:D(u)}}(r,e.clientX,e.clientY,n,t,o,e)}function Yi(e,n,t,r,o){var i=function(n,t){return function(e){n(e)&&t(Gi(e))}}(t,r);return e.dom().addEventListener(n,i,o),{unbind:b(sa,e,n,i,o)}}function Ki(e,n,t){return function(e,n,t,r){return Yi(e,n,t,r,!1)}(e,n,da,t)}var Xi,$i=function(e){var n=ft(e);return mt.generate(n).grid()},Ji=function(o,e){function n(e,n){0<e.length?function(e,n){var t=Qn(o,n).getOrThunk(function(){var e=on.fromTag(n,he(o).dom());return Mn(o,e),e});Ee(t);var r=g(e,function(e){e.isNew()&&i.push(e.element());var n=e.element();return Ee(n),p(e.cells(),function(e){e.isNew()&&u.push(e.element()),wo(e.element(),"colspan",e.colspan(),1),wo(e.element(),"rowspan",e.rowspan(),1),Mn(n,e.element())}),n});Ae(t,r)}(e,n):function(e){Qn(o,e).each(Wn)}(n)}var i=[],u=[],t=[],r=[],c=[];return p(e,function(e){switch(e.section()){case"thead":t.push(e);break;case"tbody":r.push(e);break;case"tfoot":c.push(e)}}),n(t,"thead"),n(r,"tbody"),n(c,"tfoot"),{newRows:D(i),newCells:D(u)}},Qi=function(e){return g(e,function(e){var t=Rt(e.element());return p(e.cells(),function(e){var n=Tt(e.element());wo(n,"colspan",e.colspan(),1),wo(n,"rowspan",e.rowspan(),1),Mn(t,n)}),t})},Zi=function(e,n,t){var r=e();return y(r,n).orThunk(function(){return Me.from(r[0]).orThunk(t)}).map(function(e){return e.element()})},eu=function(t){var e=t.grid(),n=Do(0,e.columns()),r=Do(0,e.rows());return g(n,function(n){return Zi(function(){return x(r,function(e){return mt.getAt(t,e,n).filter(function(e){return e.column()===n}).fold(D([]),function(e){return[e]})})},function(e){return 1===e.colspan()},function(){return mt.getAt(t,0,n)})})},nu=function(t){var e=t.grid(),n=Do(0,e.rows()),r=Do(0,e.columns());return g(n,function(n){return Zi(function(){return x(r,function(e){return mt.getAt(t,n,e).filter(function(e){return e.row()===n}).fold(D([]),function(e){return[e]})})},function(e){return 1===e.rowspan()},function(){return mt.getAt(t,n,0)})})},tu={resolve:Eo("ephox-snooker").resolve},ru=function(e,n,t,r,o){var i=on.fromTag("div");return re(i,{position:"absolute",left:n-r/2+"px",top:t+"px",height:o+"px",width:r+"px"}),q(i,{"data-column":e,role:"presentation"}),i},ou=function(e,n,t,r,o){var i=on.fromTag("div");return re(i,{position:"absolute",left:n+"px",top:t-o/2+"px",height:o+"px",width:r+"px"}),q(i,{"data-row":e,role:"presentation"}),i},iu=tu.resolve("resizer-bar"),uu=tu.resolve("resizer-rows"),cu=tu.resolve("resizer-cols"),au=function(e,n,t,r){No(e);var o=ft(n),i=mt.generate(o),u=nu(i),c=eu(i);Io(e,n,u,c,t,r)},lu=function(e){Bo(e,function(e){te(e,"display","none")})},fu=function(e){Bo(e,function(e){te(e,"display","block")})},su=No,du=function(e){return Oo(e,uu)},mu=function(e){return Oo(e,cu)},gu=function(e,n){return Vn(n,e.section())},pu={addCell:function(e,n,t){var r=e.cells(),o=r.slice(0,n),i=r.slice(n),u=o.concat([t]).concat(i);return gu(e,u)},setCells:gu,mutateCell:function(e,n,t){e.cells()[n]=t},getCell:Po,getCellElement:function(e,n){return Po(e,n).element()},mapCells:function(e,n){var t=e.cells(),r=g(t,n);return Vn(r,e.section())},cellLength:function(e){return e.cells().length}},hu=function(e,n,t,r){var o=function(e,n){return e[n]}(e,n).cells().slice(t),i=Mo(o,r),u=function(e,n){return g(e,function(e){return pu.getCell(e,n)})}(e,t).slice(n),c=Mo(u,r);return{colspan:D(i),rowspan:D(c)}},vu=function(o,i){var u=g(o,function(e,n){return g(e.cells(),function(e,n){return!1})});return g(o,function(e,r){var n=x(e.cells(),function(e,n){if(!1!==u[r][n])return[];var t=hu(o,r,n,i);return function(e,n,t,r){for(var o=e;o<e+t;o++)for(var i=n;i<n+r;i++)u[o][i]=!0}(r,n,t.rowspan(),t.colspan()),[zn(e.element(),t.rowspan(),t.colspan(),e.isNew())]});return Gn(n,e.section())})},bu=function(e,n,t){for(var r=[],o=0;o<e.grid().rows();o++){for(var i=[],u=0;u<e.grid().columns();u++){var c=mt.getAt(e,o,u).map(function(e){return Un(e.element(),t)}).getOrThunk(function(){return Un(n.gap(),!0)});i.push(c)}var a=Vn(i,e.all()[o].section());r.push(a)}return r},wu=function(t){return{is:function(e){return t===e},isValue:i,isError:s,getOr:D(t),getOrThunk:D(t),getOrDie:D(t),or:function(e){return wu(t)},orThunk:function(e){return wu(t)},fold:function(e,n){return n(t)},map:function(e){return wu(e(t))},mapError:function(e){return wu(t)},each:function(e){e(t)},bind:function(e){return e(t)},exists:function(e){return e(t)},forall:function(e){return e(t)},toOption:function(){return Me.some(t)}}},yu=function(t){return{is:s,isValue:s,isError:i,getOr:o,getOrThunk:function(e){return e()},getOrDie:function(){return function(e){return function(){throw new Error(e)}}(String(t))()},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,n){return e(t)},map:function(e){return yu(t)},mapError:function(e){return yu(e(t))},each:T,bind:function(e){return yu(t)},exists:s,forall:i,toOption:Me.none}},Cu={value:wu,error:yu,fromOption:function(e,n){return e.fold(function(){return yu(n)},wu)}},Su=function(e,n,t){if(e.row()>=n.length||e.column()>pu.cellLength(n[0]))return Cu.error("invalid start address out of table bounds, row: "+e.row()+", column: "+e.column());var r=n.slice(e.row()),o=r[0].cells().slice(e.column()),i=pu.cellLength(t[0]),u=t.length;return Cu.value({rowDelta:D(r.length-u),colDelta:D(o.length-i)})},xu=function(e,n){var t=pu.cellLength(e[0]),r=pu.cellLength(n[0]);return{rowDelta:D(0),colDelta:D(t-r)}},Ru=function(e,n,t){var r=n.colDelta()<0?Vo:o;return(n.rowDelta()<0?qo:o)(r(e,Math.abs(n.colDelta()),t),Math.abs(n.rowDelta()),t)},Tu=function(e,n,t,r){if(0===e.length)return e;for(var o=n.startRow();o<=n.finishRow();o++)for(var i=n.startCol();i<=n.finishCol();i++)pu.mutateCell(e[o],i,Un(r(),!1));return e},Ou=function(e,n,t,r){for(var o=!0,i=0;i<e.length;i++)for(var u=0;u<pu.cellLength(e[0]);u++){var c=t(pu.getCellElement(e[i],u),n);!0===c&&!1===o?pu.mutateCell(e[i],u,Un(r(),!0)):!0===c&&(o=!1)}return e},Du=function(i,t,u,c){if(0<t&&t<i.length){var e=function(e,t){return w(e,function(e,n){return m(e,function(e){return t(e.element(),n.element())})?e:e.concat([n])},[])}(i[t-1].cells(),u);p(e,function(r){for(var o=Me.none(),e=function(t){for(var e=function(n){var e=i[t].cells()[n];u(e.element(),r.element())&&(o.isNone()&&(o=Me.some(c())),o.each(function(e){pu.mutateCell(i[t],n,Un(e,!0))}))},n=0;n<pu.cellLength(i[0]);n++)e(n)},n=t;n<i.length;n++)e(n)})}return i},Au=function(t,r,o,i,u){return Su(t,r,o).map(function(e){var n=Ru(r,e,i);return function(e,n,t,r,o){for(var i,u,c,a,l,f=e.row(),s=e.column(),d=f+t.length,m=s+pu.cellLength(t[0]),g=f;g<d;g++)for(var p=s;p<m;p++){i=n,u=g,c=p,l=a=void 0,a=b(o,pu.getCell(i[u],c).element()),l=i[u],1<i.length&&1<pu.cellLength(l)&&(0<c&&a(pu.getCellElement(l,c-1))||c<l.cells().length-1&&a(pu.getCellElement(l,c+1))||0<u&&a(pu.getCellElement(i[u-1],c))||u<i.length-1&&a(pu.getCellElement(i[u+1],c)))&&Ou(n,pu.getCellElement(n[g],p),o,r.cell);var h=pu.getCellElement(t[g-f],p-s),v=r.replace(h);pu.mutateCell(n[g],p,Un(v,!0))}return n}(t,n,o,i,u)})},Eu=function(e,n,t,r,o){Du(n,e,o,r.cell);var i=xu(t,n),u=Ru(t,i,r),c=xu(n,u),a=Ru(n,c,r);return a.slice(0,e).concat(u).concat(a.slice(e,a.length))},Nu=function(t,r,e,o,i){var n=t.slice(0,r),u=t.slice(r),c=pu.mapCells(t[e],function(e,n){return 0<r&&r<t.length&&o(pu.getCellElement(t[r-1],n),pu.getCellElement(t[r],n))?pu.getCell(t[r],n):Un(i(e.element(),o),!0)});return n.concat([c]).concat(u)},ku=function(e,t,r,o,i){return g(e,function(e){var n=0<t&&t<pu.cellLength(e)&&o(pu.getCellElement(e,t-1),pu.getCellElement(e,t))?pu.getCell(e,t):Un(i(pu.getCellElement(e,r),o),!0);return pu.addCell(e,t,n)})},Iu=function(e,r,o,i,u){var c=o+1;return g(e,function(e,n){var t=n===r?Un(u(pu.getCellElement(e,o),i),!0):pu.getCell(e,o);return pu.addCell(e,c,t)})},Bu=function(e,n,t,r,o){var i=n+1,u=e.slice(0,i),c=e.slice(i),a=pu.mapCells(e[n],function(e,n){return n===t?Un(o(e.element(),r),!0):e});return u.concat([a]).concat(c)},Pu=function(e,n,t){return e.slice(0,n).concat(e.slice(t+1))},Mu=function(e,t,r){var n=g(e,function(e){var n=e.cells().slice(0,t).concat(e.cells().slice(r+1));return Vn(n,e.section())});return h(n,function(e){return 0<e.cells().length})},Wu=function(t,r,o,e){var n=x(t,function(e,n){return Yo(t,n,r,o)||Ko(e,r,o)?[]:[pu.getCell(e,r)]});return Go(t,n,o,e)},_u=function(t,r,o,e){var i=t[r],n=x(i.cells(),function(e,n){return Yo(t,r,n,o)||Ko(i,n,o)?[]:[e]});return Go(t,n,o,e)},Lu=Sr([{none:[]},{only:["index"]},{left:["index","next"]},{middle:["prev","index","next"]},{right:["prev","index"]}]),ju=fn({},Lu),zu=function(e,n,i,u){function c(e){return g(e,D(0))}function r(e,n){if(0<=i){var t=Math.max(u.minCellWidth(),a[n]-i);return c(a.slice(0,e)).concat([i,t-a[n]]).concat(c(a.slice(n+1)))}var r=Math.max(u.minCellWidth(),a[e]+i),o=a[e]-r;return c(a.slice(0,e)).concat([r-a[e],o]).concat(c(a.slice(n+1)))}var a=e.slice(0),t=function(e,n){return 0===e.length?ju.none():1===e.length?ju.only(0):0===n?ju.left(0,1):n===e.length-1?ju.right(n-1,n):0<n&&n<e.length-1?ju.middle(n-1,n,n+1):ju.none()}(e,n),o=D(c(a)),l=r;return t.fold(o,function(e){return u.singleColumnWidth(a[e],i)},l,function(e,n,t){return r(n,t)},function(e,n){if(0<=i)return c(a.slice(0,n)).concat([i]);var t=Math.max(u.minCellWidth(),a[n]+i);return c(a.slice(0,n)).concat([t-a[n]])})},Hu={hasColspan:function(e){return Xo(e,"colspan")},hasRowspan:function(e){return Xo(e,"rowspan")},minWidth:D(10),minHeight:D(10),getInt:function(e,n){return parseInt(oe(e,n),10)}},Fu={getRawWidths:function(e,n,t){return Zo(e,n,Jo,ei,t)},getPixelWidths:function(e,n,t){return Zo(e,n,uo.getPixelWidth,function(e){return e.getOrThunk(t.minCellWidth)},t)},getPercentageWidths:function(e,n,t){return Zo(e,n,uo.getPercentageWidth,function(e){return e.fold(function(){return t.minCellWidth()},function(e){return e/t.pixelWidth()*100})},t)},getPixelHeights:function(e,n){return ni(e,n,uo.getHeight,function(e){return e.getOrThunk(Hu.minHeight)})},getRawHeights:function(e,n){return ni(e,n,Qo,ei)}},Uu=function(e,t){var n=mt.justCells(e);return g(n,function(e){var n=ti(e.column(),e.column()+e.colspan(),t);return{element:e.element,width:D(n),colspan:e.colspan}})},qu=function(e,t){var n=mt.justCells(e);return g(n,function(e){var n=ti(e.row(),e.row()+e.rowspan(),t);return{element:e.element,height:D(n),rowspan:e.rowspan}})},Vu=function(e,t){return g(e.all(),function(e,n){return{element:e.element,height:D(t[n])}})},Gu=function(n){return uo.getRawWidth(n).fold(function(){var e=Pr(n);return ri(e)},function(e){return oi(n,e)})},Yu=function(e,n,t,r){var o=Gu(e),i=o.getCellDelta(n),u=ui(e),c=o.getWidths(u,r,o),a=zu(c,t,i,o),l=g(a,function(e,n){return e+c[n]}),f=Uu(u,l);p(f,function(e){o.setElementWidth(e.element(),e.width())}),t===u.grid().columns()-1&&o.setTableWidth(e,l,i)},Ku=function(e,t,r,n){var o=ui(e),i=Fu.getPixelHeights(o,n),u=g(i,function(e,n){return r===n?Math.max(t+e,Hu.minHeight()):e}),c=qu(o,u),a=Vu(o,u);p(a,function(e){uo.setHeight(e.element(),e.height())}),p(c,function(e){uo.setHeight(e.element(),e.height())});var l=function(e){return v(e,function(e,n){return e+n},0)}(u);uo.setHeight(e,l)},Xu=function(e,n,t){var r=Gu(e),o=ii(n),i=r.getWidths(o,t,r),u=Uu(o,i);p(u,function(e){r.setElementWidth(e.element(),e.width())}),0<u.length&&r.setTableWidth(e,i,r.getCellDelta(0))},$u=function(r,o,i){if(0===o.length)throw new Error("You must specify at least one required field.");return _("required",o),L(o),function(n){var t=Ve(n);A(o,function(e){return l(t,e)})||M(o,t),r(o,t);var e=h(o,function(e){return!i.validate(n[e],e)});return 0<e.length&&function(e,n){throw new Error("All values need to be of type: "+n+". Keys ("+P(e).join(", ")+") were not.")}(e,i.label),n}},Ju=ai(["cell","row","replace","gap"]),Qu=function(n,t){void 0===t&&(t=li),Ju(n);function r(e){return function(e){return n.cell(e)}(t(e))}function o(e){var n=r(e);return i.get().isNone()&&i.set(Me.some(n)),u=Me.some({item:e,replacement:n}),n}var i=R(Me.none()),u=Me.none();return{getOrInit:function(n,t){return u.fold(function(){return o(n)},function(e){return t(n,e.item)?e.replacement:o(n)})},cursor:i.get}},Zu=function(c,a){return function(r){var o=R(Me.none());Ju(r);function i(e){var n={scope:c},t=r.replace(e,a,n);return u.push({item:e,sub:t}),o.get().isNone()&&o.set(Me.some(t)),t}var u=[];return{replaceOrInit:function(n,t){return function(n,t){return y(u,function(e){return t(e.item,n)})}(n,t).fold(function(){return i(n)},function(e){return t(n,e.item)?e.sub:i(n)})},cursor:o.get}}},ec=function(t){Ju(t);var e=R(Me.none());return{combine:function(n){return e.get().isNone()&&e.set(Me.some(n)),function(){var e=t.cell({element:D(n),colspan:D(1),rowspan:D(1)});return ue(e,"width"),ue(n,"width"),e}},cursor:e.get}},nc=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","table","thead","tfoot","tbody","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],tc=fi,rc=function(e,n){var t=e.property().name(n);return l(["ol","ul"],t)},oc=si,ic=$t(),uc=function(e){return tc(ic,e)},cc=function(e){return rc(ic,e)},ac=function(e){return oc(ic,e)},lc=function(e){function o(e){return"br"===en(e)}function t(r){return St(r).bind(function(n){var t=function(e){return ye(e).map(function(e){return!!uc(e)||!!ac(e)&&"img"!==en(e)}).getOr(!1)}(n);return ve(n).map(function(e){return!0===t||function(e){return"li"===en(e)||$n(e,cc).isSome()}(e)||o(n)||uc(e)&&!In(r,e)?[]:[on.fromTag("br")]})}).getOr([])}var n,r=0===(n=x(e,function(e){var n=Ce(e);return function(e){return A(e,function(e){return o(e)||tn(e)&&0===ht(e).trim().length})}(n)?[]:n.concat(t(e))})).length?[on.fromTag("br")]:n;Ee(e[0]),Ae(e[0],r)},fc=B("grid","cursor"),sc=function(e,n,t){return Me.from(e[n]).bind(function(e){return Me.from(e.cells()[t]).bind(function(e){return Me.from(e.element())})})},dc=Xu,mc={insertRowBefore:jo(function(e,n,t,r){var o=n.row(),i=n.row(),u=Nu(e,i,o,t,r.getOrInit);return gi(u,i,n.column())},zo,T,T,Qu),insertRowsBefore:jo(function(e,n,t,r){var o=n[0].row(),i=n[0].row(),u=pi(n),c=w(u,function(e,n){return Nu(e,i,o,t,r.getOrInit)},e);return gi(c,i,n[0].column())},Fo,T,T,Qu),insertRowAfter:jo(function(e,n,t,r){var o=n.row(),i=n.row()+n.rowspan(),u=Nu(e,i,o,t,r.getOrInit);return gi(u,i,n.column())},zo,T,T,Qu),insertRowsAfter:jo(function(e,n,t,r){var o=pi(n),i=o[o.length-1].row(),u=o[o.length-1].row()+o[o.length-1].rowspan(),c=w(o,function(e,n){return Nu(e,u,i,t,r.getOrInit)},e);return gi(c,u,n[0].column())},Fo,T,T,Qu),insertColumnBefore:jo(function(e,n,t,r){var o=n.column(),i=n.column(),u=ku(e,i,o,t,r.getOrInit);return gi(u,n.row(),i)},zo,dc,T,Qu),insertColumnsBefore:jo(function(e,n,t,r){var o=hi(n),i=o[0].column(),u=o[0].column(),c=w(o,function(e,n){return ku(e,u,i,t,r.getOrInit)},e);return gi(c,n[0].row(),u)},Fo,dc,T,Qu),insertColumnAfter:jo(function(e,n,t,r){var o=n.column(),i=n.column()+n.colspan(),u=ku(e,i,o,t,r.getOrInit);return gi(u,n.row(),i)},zo,dc,T,Qu),insertColumnsAfter:jo(function(e,n,t,r){var o=n[n.length-1].column(),i=n[n.length-1].column()+n[n.length-1].colspan(),u=hi(n),c=w(u,function(e,n){return ku(e,i,o,t,r.getOrInit)},e);return gi(c,n[0].row(),i)},Fo,dc,T,Qu),splitCellIntoColumns:jo(function(e,n,t,r){var o=Iu(e,n.row(),n.column(),t,r.getOrInit);return gi(o,n.row(),n.column())},zo,dc,T,Qu),splitCellIntoRows:jo(function(e,n,t,r){var o=Bu(e,n.row(),n.column(),t,r.getOrInit);return gi(o,n.row(),n.column())},zo,T,T,Qu),eraseColumns:jo(function(e,n,t,r){var o=hi(n),i=Mu(e,o[0].column(),o[o.length-1].column()),u=mi(i,n[0].row(),n[0].column());return fc(i,u)},Fo,dc,di,Qu),eraseRows:jo(function(e,n,t,r){var o=pi(n),i=Pu(e,o[0].row(),o[o.length-1].row()),u=mi(i,n[0].row(),n[0].column());return fc(i,u)},Fo,T,di,Qu),makeColumnHeader:jo(function(e,n,t,r){var o=Wu(e,n.column(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu("row","th")),unmakeColumnHeader:jo(function(e,n,t,r){var o=Wu(e,n.column(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu(null,"td")),makeRowHeader:jo(function(e,n,t,r){var o=_u(e,n.row(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu("col","th")),unmakeRowHeader:jo(function(e,n,t,r){var o=_u(e,n.row(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu(null,"td")),mergeCells:jo(function(e,n,t,r){var o=n.cells();lc(o);var i=Tu(e,n.bounds(),t,D(o[0]));return fc(i,Me.from(o[0]))},function(e,n){return n.mergable()},T,T,ec),unmergeCells:jo(function(e,n,t,r){var o=v(n,function(e,n){return Ou(e,n,t,r.combine(n))},e);return fc(o,Me.from(n[0]))},function(e,n){return n.unmergable()},dc,T,ec),pasteCells:jo(function(e,t,n,r){var o,i,u,c,a=(o=t.clipboard(),i=t.generators(),u=ft(o),c=mt.generate(u),bu(c,i,!0)),l=Ln(t.row(),t.column());return Au(l,e,a,t.generators(),n).fold(function(){return fc(e,Me.some(t.element()))},function(e){var n=mi(e,t.row(),t.column());return fc(e,n)})},function(n,t){return lt.cell(t.element()).bind(function(e){return Lo(n,e).map(function(e){return fn(fn({},e),{generators:t.generators,clipboard:t.clipboard})})})},dc,T,Qu),pasteRowsBefore:jo(function(e,n,t,r){var o=e[n.cells[0].row()],i=n.cells[0].row(),u=vi(n.clipboard(),n.generators(),o),c=Eu(i,e,u,n.generators(),t),a=mi(c,n.cells[0].row(),n.cells[0].column());return fc(c,a)},Ho,T,T,Qu),pasteRowsAfter:jo(function(e,n,t,r){var o=e[n.cells[0].row()],i=n.cells[n.cells.length-1].row()+n.cells[n.cells.length-1].rowspan(),u=vi(n.clipboard(),n.generators(),o),c=Eu(i,e,u,n.generators(),t),a=mi(c,n.cells[0].row(),n.cells[0].column());return fc(c,a)},Ho,T,T,Qu)},gc=function(e){return on.fromDom(e.getBody())},pc=function(n){return function(e){return In(e,gc(n))}},hc={isRtl:D(!1)},vc={isRtl:D(!0)},bc={directionAt:function(e){return"rtl"===function(e){return"rtl"===oe(e,"direction")?"rtl":"ltr"}(e)?vc:hc}},wc={"border-collapse":"collapse",width:"100%"},yc={border:"1"},Cc=function(e){return e.getParam("table_tab_navigation",!0,"boolean")},Sc=function(e){var n=e.getParam("table_clone_elements");return _e(n)?Me.some(n.split(/[ ,]/)):Array.isArray(n)?Me.some(n):Me.none()},xc=function(e,n,t,r,o){e.fire("TableSelectionChange",{cells:n,start:t,finish:r,otherCells:o})},Rc=function(e){e.fire("TableSelectionClear")},Tc=function(f,e){function t(e){return"table"===en(gc(e))}function n(u,c,a,l){return function(e,n){Ci(e);var t=l(),r=on.fromDom(f.getDoc()),o=ho(bc.directionAt),i=Wt.cellOperations(a,r,s);return c(e)?u(t,e,n,i,o).bind(function(e){return p(e.newRows(),function(e){Ni(f,e.dom())}),p(e.newCells(),function(e){ki(f,e.dom())}),e.cursor().map(function(e){var n=f.dom.createRng();return n.setStart(e.dom(),0),n.setEnd(e.dom(),0),n})}):Me.none()}}var s=Sc(f);return{deleteRow:n(mc.eraseRows,function(e){var n=$i(e);return!1===t(f)||1<n.rows()},T,e),deleteColumn:n(mc.eraseColumns,function(e){var n=$i(e);return!1===t(f)||1<n.columns()},T,e),insertRowsBefore:n(mc.insertRowsBefore,i,T,e),insertRowsAfter:n(mc.insertRowsAfter,i,T,e),insertColumnsBefore:n(mc.insertColumnsBefore,i,co,e),insertColumnsAfter:n(mc.insertColumnsAfter,i,co,e),mergeCells:n(mc.mergeCells,i,T,e),unmergeCells:n(mc.unmergeCells,i,T,e),pasteRowsBefore:n(mc.pasteRowsBefore,i,T,e),pasteRowsAfter:n(mc.pasteRowsAfter,i,T,e),pasteCells:n(mc.pasteCells,i,T,e)}},Oc=function(e,n,r){var t=ft(e),o=mt.generate(t);return Fo(o,n).map(function(e){var n=bu(o,r,!1).slice(e[0].row(),e[e.length-1].row()+e[e.length-1].rowspan()),t=_o(n,r);return Qi(t)})},Dc=tinymce.util.Tools.resolve("tinymce.util.Tools"),Ac=function(e,n,t){t&&e.formatter.apply("align"+t,{},n)},Ec=function(e,n,t){t&&e.formatter.apply("valign"+t,{},n)},Nc=function(n,t){Dc.each("left center right".split(" "),function(e){n.formatter.remove("align"+e,{},t)})},kc=function(n,t){Dc.each("top middle bottom".split(" "),function(e){n.formatter.remove("valign"+e,{},t)})},Ic=function(o,e,i){var n;return n=function(e,n){for(var t=0;t<n.length;t++){var r=o.getStyle(n[t],i);if(void 0===e&&(e=r),e!==r)return""}return e}(n,o.select("td,th",e))},Bc=b(Mi,"left center right"),Pc=b(Mi,"top middle bottom"),Mc=function(e,r,n){var o=function(e,t){return t=t||[],Dc.each(e,function(e){var n={text:e.text||e.title};e.menu?n.menu=o(e.menu):(n.value=e.value,r&&r(n)),t.push(n)}),t};return o(e,n||[])},Wc=function(e){var o=e[0],n=e.slice(1),t=Ve(o);return p(n,function(e){p(t,function(r){N(e,function(e,n){var t=o[r];""!==t&&r===n&&t!==e&&(o[r]="")})})}),o},_c=function(e){var n=[{name:"borderstyle",type:"selectbox",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]},{name:"bordercolor",type:"colorinput",label:"Border color"},{name:"backgroundcolor",type:"colorinput",label:"Background color"}];return{title:"Advanced",name:"advanced",items:"cell"===e?[{name:"borderwidth",type:"input",label:"Border width"}].concat(n):n}},Lc=function(e,n,t){var r,o,i,u=e.dom;return fn(fn({width:u.getStyle(n,"width")||u.getAttrib(n,"width"),height:u.getStyle(n,"height")||u.getAttrib(n,"height"),cellspacing:u.getStyle(n,"border-spacing")||u.getAttrib(n,"cellspacing"),cellpadding:u.getAttrib(n,"cellpadding")||Ic(e.dom,n,"padding"),border:(r=u,o=n,i=ie(on.fromDom(o),"border-width"),Di(e)&&i.isSome()?i.getOr(""):r.getAttrib(o,"border")||Ic(e.dom,o,"border-width")||Ic(e.dom,o,"border")),caption:!!u.select("caption",n)[0],"class":u.getAttrib(n,"class","")},Bc("align","align",e,n)),t?Pi(u,n):{})},jc=function(e,n,t){var r=e.dom;return fn(fn({height:r.getStyle(n,"height")||r.getAttrib(n,"height"),scope:r.getAttrib(n,"scope"),"class":r.getAttrib(n,"class",""),align:"",type:n.parentNode.nodeName.toLowerCase()},Bc("align","align",e,n)),t?Pi(r,n):{})},zc=function(e,n,t){var r=e.dom;return fn(fn(fn({width:r.getStyle(n,"width")||r.getAttrib(n,"width"),height:r.getStyle(n,"height")||r.getAttrib(n,"height"),scope:r.getAttrib(n,"scope"),celltype:n.nodeName.toLowerCase(),"class":r.getAttrib(n,"class","")},Bc("align","halign",e,n)),Pc("valign","valign",e,n)),t?Pi(r,n):{})},Hc=function(e,n){var t,r,o,i,u=xi(e),c=Si(e),a=e.dom,l=n?(t=a,r=I(u,"border-style").getOr(""),o=I(u,"border-color").getOr(""),i=I(u,"background-color").getOr(""),{borderstyle:r,bordercolor:f(o),backgroundcolor:f(i)}):{};function f(e){return J(e,"rgb")?t.toHex(e):e}var s,d,m;return fn(fn(fn(fn(fn(fn({},{height:"",width:"100%",cellspacing:"",cellpadding:"",caption:!1,"class":"",align:"",border:""}),u),c),l),(m=u["border-width"],Di(e)&&m?{border:m}:I(c,"border").fold(function(){return{}},function(e){return{border:e}}))),(s=I(u,"border-spacing").or(I(c,"cellspacing")).fold(function(){return{}},function(e){return{cellspacing:e}}),d=I(u,"border-padding").or(I(c,"cellpadding")).fold(function(){return{}},function(e){return{cellpadding:e}}),fn(fn({},s),d)))},Fc=[{name:"width",type:"input",label:"Width"},{name:"height",type:"input",label:"Height"},{name:"celltype",type:"selectbox",label:"Cell type",items:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{name:"scope",type:"selectbox",label:"Scope",items:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{name:"halign",type:"selectbox",label:"H Align",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{name:"valign",type:"selectbox",label:"V Align",items:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}],Uc=function(e){return function(n){var e=function(e){return e.getParam("table_cell_class_list",[],"array")}(n),t=Mc(e,function(e){e.value&&(e.textStyle=function(){return n.formatter.getCssText({block:"tr",classes:[e.value]})})});return 0<e.length?Me.some({name:"class",type:"selectbox",label:"Class",items:t}):Me.none()}(e).fold(function(){return Fc},function(e){return Fc.concat(e)})},qc={normal:function(t,r){return{setAttrib:function(e,n){t.setAttrib(r,e,n)},setStyle:function(e,n){t.setStyle(r,e,n)}}},ifTruthy:function(t,r){return{setAttrib:function(e,n){n&&t.setAttrib(r,e,n)},setStyle:function(e,n){n&&t.setStyle(r,e,n)}}}},Vc=function(n){var e,t=[];if(t=n.dom.select("td[data-mce-selected],th[data-mce-selected]"),e=n.dom.getParent(n.selection.getStart(),"td,th"),!t.length&&e&&t.push(e),e=e||t[0]){var r=Dc.map(t,function(e){return zc(n,e,Ri(n))}),o=Wc(r),i={type:"tabpanel",tabs:[{title:"General",name:"general",items:Uc(n)},_c("cell")]},u={type:"panel",items:[{type:"grid",columns:2,items:Uc(n)}]};n.windowManager.open({title:"Cell Properties",size:"normal",body:Ri(n)?i:u,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o,onSubmit:b(zi,n,t)})}},Gc=[{type:"selectbox",name:"type",label:"Row type",items:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"selectbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height",type:"input"}],Yc=function(e){return function(n){var e=function(e){return e.getParam("table_row_class_list",[],"array")}(n),t=Mc(e,function(e){e.value&&(e.textStyle=function(){return n.formatter.getCssText({block:"tr",classes:[e.value]})})});return 0<e.length?Me.some({name:"class",type:"selectbox",label:"Class",items:t}):Me.none()}(e).fold(function(){return Gc},function(e){return Gc.concat(e)})},Kc=function(n){var e,t,r=n.dom,o=[];if((e=r.getParent(n.selection.getStart(),"table"))&&(t=r.getParent(n.selection.getStart(),"td,th"),Dc.each(e.rows,function(n){Dc.each(n.cells,function(e){if((r.getAttrib(e,"data-mce-selected")||e===t)&&o.indexOf(n)<0)return o.push(n),!1})}),o[0])){var i=Dc.map(o,function(e){return jc(n,e,Ti(n))}),u=Wc(i),c={type:"tabpanel",tabs:[{title:"General",name:"general",items:Yc(n)},_c("row")]},a={type:"panel",items:[{type:"grid",columns:2,items:Yc(n)}]};n.windowManager.open({title:"Row Properties",size:"normal",body:Ti(n)?c:a,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:u,onSubmit:b(Hi,n,o,u)})}},Xc=Object.prototype.hasOwnProperty,$c=(Xi=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Xc.call(o,i)&&(t[i]=Xi(t[i],o[i]))}return t}),Jc=tinymce.util.Tools.resolve("tinymce.Env"),Qc={styles:{"border-collapse":"collapse",width:"100%"},attributes:{border:"1"},percentages:!0},Zc=function(n,e,t){var r=xi(n),o={styles:r,attributes:Si(n),percentages:function(e){return _e(e)&&-1!==e.indexOf("%")}(r.width)&&!Ei(n)},i=Fi(t,e,0,0,o);U(i,"data-mce-id","__mce");var u=function(e){var n=on.fromTag("div"),t=on.fromDom(e.dom().cloneNode(!0));return Mn(n,t),function(e){return e.dom().innerHTML}(n)}(i);return n.insertContent(u),Zn(gc(n),'table[data-mce-id="__mce"]').map(function(e){return Ei(n)&&te(e,"width",oe(e,"width")),Y(e,"data-mce-id"),function(n,e){p(Be(e,"tr"),function(e){Ni(n,e.dom()),p(Be(e,"th,td"),function(e){ki(n,e.dom())})})}(n,e),function(e,n){Zn(n,"td,th").each(b(Ui,e))}(n,e),e.dom()}).getOr(null)},ea=function(n,e,t){var r=t?[{type:"input",name:"cols",label:"Cols",inputMode:"numeric"},{type:"input",name:"rows",label:"Rows",inputMode:"numeric"}]:[],o=function(e){return e.getParam("table_appearance_options",!0,"boolean")}(n)?[{type:"input",name:"cellspacing",label:"Cell spacing",inputMode:"numeric"},{type:"input",name:"cellpadding",label:"Cell padding",inputMode:"numeric"},{type:"input",name:"border",label:"Border width"},{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[],i=e?[{type:"selectbox",name:"class",label:"Class",items:Mc(Ai(n),function(e){e.value&&(e.textStyle=function(){return n.formatter.getCssText({block:"table",classes:[e.value]})})})}]:[];return r.concat([{type:"input",name:"width",label:"Width"},{type:"input",name:"height",label:"Height"}]).concat(o).concat([{type:"selectbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]}]).concat(i)},na=function(e,n,t,r){if("TD"===n.tagName||"TH"===n.tagName)_e(t)?e.setStyle(n,t,r):e.setStyle(n,t);else if(n.children)for(var o=0;o<n.children.length;o++)na(e,n.children[o],t,r)},ta=function(e,n){var t,r=e.dom,o=Hc(e,Oi(e));!1===n?(t=r.getParent(e.selection.getStart(),"table"))?o=Lc(e,t,Oi(e)):Oi(e)&&(o.borderstyle="",o.bordercolor="",o.backgroundcolor=""):(o.cols="1",o.rows="1",Oi(e)&&(o.borderstyle="",o.bordercolor="",o.backgroundcolor=""));var i=0<Ai(e).length;i&&o["class"]&&(o["class"]=o["class"].replace(/\s*mce\-item\-table\s*/g,""));var u={type:"grid",columns:2,items:ea(e,i,n)},c=Oi(e)?{type:"tabpanel",tabs:[{title:"General",name:"general",items:[u]},_c("table")]}:{type:"panel",items:[u]};e.windowManager.open({title:"Table Properties",size:"normal",body:c,onSubmit:b(qi,e,t),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o})},ra=Vi("th,td"),oa=Vi("th,td,caption"),ia=Dc.each,ua={registerCommands:function(c,n,a,l,t){function f(e){return lt.table(e,s)}function i(e){return{width:bi(e.dom()),height:bi(e.dom())}}function r(o){ra(c).each(function(r){f(r).each(function(n){var e=Er.forMenu(l,n,r),t=i(n);o(n,e).each(function(e){!function(e,n,t){var r=i(t);n.width===r.width&&n.height===r.height||(Ii(e,t.dom(),n.width,n.height),Bi(e,t.dom(),r.width,r.height))}(c,t,n),c.selection.setRng(e),c.focus(),a.clear(n),Ci(n)})})})}function o(e){return ra(c).map(function(o){return f(o).bind(function(e){var n=on.fromDom(c.getDoc()),t=Er.forMenu(l,e,o),r=Wt.cellOperations(T,n,Me.none());return Oc(e,t,r)})})}function u(u){t.get().each(function(e){var i=g(e,function(e){return Tt(e)});ra(c).each(function(o){f(o).each(function(n){var e=on.fromDom(c.getDoc()),t=Wt.paste(e),r=Er.pasteRows(l,n,o,i,t);u(n,r).each(function(e){c.selection.setRng(e),c.focus(),a.clear(n)})})})})}var s=pc(c);ia({mceTableSplitCells:function(){r(n.unmergeCells)},mceTableMergeCells:function(){r(n.mergeCells)},mceTableInsertRowBefore:function(){r(n.insertRowsBefore)},mceTableInsertRowAfter:function(){r(n.insertRowsAfter)},mceTableInsertColBefore:function(){r(n.insertColumnsBefore)},mceTableInsertColAfter:function(){r(n.insertColumnsAfter)},mceTableDeleteCol:function(){r(n.deleteColumn)},mceTableDeleteRow:function(){r(n.deleteRow)},mceTableCutRow:function(e){o().each(function(e){t.set(e),r(n.deleteRow)})},mceTableCopyRow:function(e){o().each(function(e){t.set(e)})},mceTablePasteRowBefore:function(e){u(n.pasteRowsBefore)},mceTablePasteRowAfter:function(e){u(n.pasteRowsAfter)},mceTableDelete:function(){oa(c).each(function(e){lt.table(e,s).filter(d(s)).each(function(e){var n=on.fromText("");if(Re(e,n),Wn(e),c.dom.isEmpty(c.getBody()))c.setContent(""),c.selection.setCursorLocation();else{var t=c.dom.createRng();t.setStart(n.dom(),0),t.setEnd(n.dom(),0),c.selection.setRng(t),c.nodeChanged()}})})}},function(e,n){c.addCommand(n,e)}),ia({mceInsertTable:b(ta,c,!0),mceTableProps:b(ta,c,!1),mceTableRowProps:b(Kc,c),mceTableCellProps:b(Vc,c)},function(e,n){c.addCommand(n,function(){e()})})}},ca=function(e){var n=Me.from(e.dom().documentElement).map(on.fromDom).getOr(e);return{parent:D(n),view:D(e),origin:D(lo(0,0))}},aa=function(e,n){return{parent:D(n),view:D(e),origin:D(lo(0,0))}},la=function(e){var r=B.apply(null,e),o=[];return{bind:function(e){if(e===undefined)throw new Error("Event bind error: undefined handler");o.push(e)},unbind:function(n){o=h(o,function(e){return e!==n})},trigger:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=r.apply(null,e);p(o,function(e){e(t)})}}},fa={create:function(e){return{registry:k(e,function(e){return{bind:e.bind,unbind:e.unbind}}),trigger:k(e,function(e){return e.trigger})}}},sa=function(e,n,t,r){e.dom().removeEventListener(n,t,r)},da=D(!0),ma={resolve:Eo("ephox-dragster").resolve},ga=ai(["compare","extract","mutate","sink"]),pa=ai(["element","start","stop","destroy"]),ha=ai(["forceDrop","drop","move","delayDrop"]),va=ga({compare:function(e,n){return lo(n.left()-e.left(),n.top()-e.top())},extract:function(e){return Me.some(lo(e.x(),e.y()))},sink:function(e,n){var t=function(e){var n=$c({layerClass:ma.resolve("blocker")},e),t=on.fromTag("div");U(t,"role","presentation"),re(t,{position:"fixed",left:"0px",top:"0px",width:"100%",height:"100%"}),Ro(t,ma.resolve("blocker")),Ro(t,n.layerClass);return{element:function(){return t},destroy:function(){Wn(t)}}}(n),r=Ki(t.element(),"mousedown",e.forceDrop),o=Ki(t.element(),"mouseup",e.drop),i=Ki(t.element(),"mousemove",e.move),u=Ki(t.element(),"mouseout",e.delayDrop);return pa({element:t.element,start:function(e){Mn(e,t.element())},stop:function(){Wn(t.element())},destroy:function(){t.destroy(),o.unbind(),i.unbind(),u.unbind(),r.unbind()}})},mutate:function(e,n){e.mutate(n.left(),n.top())}});function ba(){var r=Me.none(),t=fa.create({move:la(["info"])});return{onEvent:function(e,n){n.extract(e).each(function(e){(function(n,t){var e=r.map(function(e){return n.compare(e,t)});return r=Me.some(t),e})(n,e).each(function(e){t.trigger.move(e)})})},reset:function(){r=Me.none()},events:t.registry}}function wa(){var e=function r(){return{onEvent:T,reset:T}}(),n=ba(),t=e;return{on:function(){t.reset(),t=n},off:function(){t.reset(),t=e},isOn:function(){return t===n},onEvent:function(e,n){t.onEvent(e,n)},events:n.events}}function ya(){var t=fa.create({drag:la(["xDelta","yDelta","target"])}),r=Me.none(),e=function(){var t=fa.create({drag:la(["xDelta","yDelta"])});return{mutate:function(e,n){t.trigger.drag(e,n)},events:t.registry}}();return e.events.drag.bind(function(n){r.each(function(e){t.trigger.drag(n.xDelta(),n.yDelta(),e)})}),{assign:function(e){r=Me.some(e)},get:function(){return r},mutate:e.mutate,events:t.registry}}function Ca(e){return"true"===V(e,"contenteditable")}function Sa(o,n,i){function e(e,n){return Me.from(V(e,n))}var t=ya(),r=vl(t,{}),u=Me.none();function c(e,n){return Hu.getInt(e,n)-parseInt(V(e,"data-initial-"+n),10)}function a(e,n){m.trigger.startAdjust(),t.assign(e),U(e,"data-initial-"+n,parseInt(oe(e,n),10)),Ro(e,bl),te(e,"opacity","0.2"),r.go(o.parent())}function l(e){return In(e,o.view())}function f(e){return et(e,"table",l).filter(function(e){return function(e,n){return et(e,"[contenteditable]",n)}(e,l).exists(Ca)})}t.events.drag.bind(function(t){e(t.target(),"data-row").each(function(e){var n=Hu.getInt(t.target(),"top");te(t.target(),"top",n+t.yDelta()+"px")}),e(t.target(),"data-column").each(function(e){var n=Hu.getInt(t.target(),"left");te(t.target(),"left",n+t.xDelta()+"px")})}),r.events.stop.bind(function(){t.get().each(function(r){u.each(function(t){e(r,"data-row").each(function(e){var n=c(r,"top");Y(r,"data-initial-top"),m.trigger.adjustHeight(t,n,parseInt(e,10))}),e(r,"data-column").each(function(e){var n=c(r,"left");Y(r,"data-initial-left"),m.trigger.adjustWidth(t,n,parseInt(e,10))}),au(o,t,i,n)})})});var s=Ki(o.parent(),"mousedown",function(e){du(e.target())&&a(e.target(),"top"),mu(e.target())&&a(e.target(),"left")}),d=Ki(o.view(),"mouseover",function(e){f(e.target()).fold(function(){ee(e.target())&&su(o)},function(e){u=Me.some(e),au(o,e,i,n)})}),m=fa.create({adjustHeight:la(["table","delta","row"]),adjustWidth:la(["table","delta","column"]),startAdjust:la([])});return{destroy:function(){s.unbind(),d.unbind(),r.destroy(),su(o)},refresh:function(e){au(o,e,i,n)},on:r.on,off:r.off,hideBars:b(lu,o),showBars:b(fu,o),events:m.registry}}function xa(e,n){return bi(e.dom())/bi(n.dom())*100+"%"}function Ra(t,e){return lt.table(t,e).bind(function(e){var n=lt.cells(e);return C(n,function(e){return In(t,e)}).map(function(e){return{index:D(e),all:D(n)}})})}function Ta(e,n,t){var r=e.document.createRange();return function(t,e){e.fold(function(e){t.setStartBefore(e.dom())},function(e,n){t.setStart(e.dom(),n)},function(e){t.setStartAfter(e.dom())})}(r,n),function(t,e){e.fold(function(e){t.setEndBefore(e.dom())},function(e,n){t.setEnd(e.dom(),n)},function(e){t.setEndAfter(e.dom())})}(r,t),r}function Oa(e,n,t,r,o){var i=e.document.createRange();return i.setStart(n.dom(),t),i.setEnd(r.dom(),o),i}function Da(e){return{left:D(e.left),top:D(e.top),right:D(e.right),bottom:D(e.bottom),width:D(e.width),height:D(e.height)}}function Aa(e,n,t){return n(on.fromDom(t.startContainer),t.startOffset,on.fromDom(t.endContainer),t.endOffset)}function Ea(e,n){return function(e,n){var t=n.ltr();return t.collapsed?n.rtl().filter(function(e){return!1===e.collapsed}).map(function(e){return Bl.rtl(on.fromDom(e.endContainer),e.endOffset,on.fromDom(e.startContainer),e.startOffset)}).getOrThunk(function(){return Aa(0,Bl.ltr,t)}):Aa(0,Bl.ltr,t)}(0,function(o,e){return e.match({domRange:function(e){return{ltr:D(e),rtl:Me.none}},relative:function(e,n){return{ltr:Z(function(){return Ta(o,e,n)}),rtl:Z(function(){return Me.some(Ta(o,n,e))})}},exact:function(e,n,t,r){return{ltr:Z(function(){return Oa(o,e,n,t,r)}),rtl:Z(function(){return Me.some(Oa(o,t,r,e,n))})}}})}(e,n))}function Na(e,n,t){return n>=e.left&&n<=e.right&&t>=e.top&&t<=e.bottom}function ka(t,r,e,n,o){function i(e){var n=t.dom().createRange();return n.setStart(r.dom(),e),n.collapse(!0),n}var u=ht(r).length,c=function(e,n,t,r,o){if(0===o)return 0;if(n===r)return o-1;for(var i=r,u=1;u<o;u++){var c=e(u),a=Math.abs(n-c.left);if(t<=c.bottom){if(t<c.top||i<a)return u-1;i=a}}return 0}(function(e){return i(e).getBoundingClientRect()},e,n,o.right,u);return i(c)}function Ia(e,n){return n-e.left<e.right-n}function Ba(e,n,t){var r=e.dom().createRange();return r.selectNode(n.dom()),r.collapse(t),r}function Pa(n,e,t){var r=n.dom().createRange();r.selectNode(e.dom());var o=r.getBoundingClientRect(),i=Ia(o,t);return(!0===i?Ct:St)(e).map(function(e){return Ba(n,e,i)})}function Ma(e,n,t){var r=n.dom().getBoundingClientRect(),o=Ia(r,t);return Me.some(Ba(e,n,o))}function Wa(e,n,t,r){var o=e.dom().createRange();o.selectNode(n.dom());var i=o.getBoundingClientRect();return function(e,n,t,r){var o=e.dom().createRange();o.selectNode(n.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,t)),c=Math.max(i.top,Math.min(i.bottom,r));return Ml(e,n,u,c)}(e,n,Math.max(i.left,Math.min(i.right,t)),Math.max(i.top,Math.min(i.bottom,r)))}function _a(e,n){var t=en(e);return"input"===t?El.after(e):l(["br","img"],t)?0===n?El.before(e):El.after(e):El.on(e,n)}function La(e,n){var t=e.fold(El.before,_a,El.after),r=n.fold(El.before,_a,El.after);return kl.relative(t,r)}function ja(e,n,t,r){var o=_a(e,n),i=_a(t,r);return kl.relative(o,i)}function za(e,n,t,r){var o=function(e,n,t,r){var o=he(e).dom().createRange();return o.setStart(e.dom(),n),o.setEnd(t.dom(),r),o}(e,n,t,r),i=In(e,t)&&n===r;return o.collapsed&&!i}function Ha(e,n){Me.from(e.getSelection()).each(function(e){e.removeAllRanges(),e.addRange(n)})}function Fa(e,n,t,r,o){var i=Oa(e,n,t,r,o);Ha(e,i)}function Ua(u,e){return Ea(u,e).match({ltr:function(e,n,t,r){Fa(u,e,n,t,r)},rtl:function(e,n,t,r){var o=u.getSelection();if(o.setBaseAndExtent)o.setBaseAndExtent(e.dom(),n,t.dom(),r);else if(o.extend)try{!function(e,n,t,r,o,i){n.collapse(t.dom(),r),n.extend(o.dom(),i)}(0,o,e,n,t,r)}catch(i){Fa(u,t,r,e,n)}else Fa(u,t,r,e,n)}})}function qa(e,n,t,r,o){var i=ja(n,t,r,o);Ua(e,i)}function Va(e,n,t){var r=La(n,t);Ua(e,r)}function Ga(e){function n(e,n,t,r){return Oa(o,e,n,t,r)}var o=kl.getWin(e).dom(),t=function(e){return e.match({domRange:function(e){var n=on.fromDom(e.startContainer),t=on.fromDom(e.endContainer);return ja(n,e.startOffset,t,e.endOffset)},relative:La,exact:ja})}(e);return Ea(o,t).match({ltr:n,rtl:n})}function Ya(e){var n=on.fromDom(e.anchorNode),t=on.fromDom(e.focusNode);return za(n,e.anchorOffset,t,e.focusOffset)?Me.some(Dl.create(n,e.anchorOffset,t,e.focusOffset)):function(e){if(0<e.rangeCount){var n=e.getRangeAt(0),t=e.getRangeAt(e.rangeCount-1);return Me.some(Dl.create(on.fromDom(n.startContainer),n.startOffset,on.fromDom(t.endContainer),t.endOffset))}return Me.none()}(e)}function Ka(e,n){var t=function(e,n){var t=e.document.createRange();return Il(t,n),t}(e,n);Ha(e,t)}function Xa(e){return function(e){return Me.from(e.getSelection()).filter(function(e){return 0<e.rangeCount}).bind(Ya)}(e).map(function(e){return kl.exact(e.start(),e.soffset(),e.finish(),e.foffset())})}function $a(e,n){return function(e){var n=e.getClientRects(),t=0<n.length?n[0]:e.getBoundingClientRect();return 0<t.width||0<t.height?Me.some(t).map(Da):Me.none()}(Pl(e,n))}function Ja(e,n,t){return function(e,n,t){var r=on.fromDom(e.document);return Wl(r,n,t).map(function(e){return Dl.create(on.fromDom(e.startContainer),e.startOffset,on.fromDom(e.endContainer),e.endOffset)})}(e,n,t)}function Qa(e,n,t,r){return Ll(e,n,Tl(t),r)}function Za(e,n,t,r){return Ll(e,n,Ol(t),r)}function el(e,n){var t=kl.exact(n,0,n,0);return Ga(t)}function nl(e,n){return function(e){return 0===e.length?Me.none():Me.some(e[e.length-1])}(Be(n,"tr")).bind(function(e){return Zn(e,"td,th").map(function(e){return el(0,e)})})}function tl(e,n,t,r){return void 0===r&&(r=Yl),e.property().parent(n).map(function(e){return Gl(e,r)})}function rl(n){return function(e){return 0===n.property().children(e).length}}function ol(e,n){return function(e,n,t){return ef(e,n,rl(e),t)}(tf,e,n)}function il(e,n){return function(e,n,t){return nf(e,n,rl(e),t)}(tf,e,n)}function ul(e){return et(e,"tr")}function cl(e){return"br"===en(e)}function al(n,e,t,r){return function(e,n){return Se(e,n).filter(cl).orThunk(function(){return Se(e,n-1).filter(cl)})}(e,t).bind(function(e){return r.traverse(e).fold(function(){return lf(e,r.gather,n).map(r.relative)},function(e){return function(r){return ve(r).bind(function(n){var t=Ce(n);return af(t,r).map(function(e){return cf(n,t,r,e)})})}(e).map(function(e){return El.on(e.parent(),e.index())})})})}function ll(e){return mf.nu({left:e.left,top:e.top,right:e.right,bottom:e.bottom})}function fl(e,n){return Me.some(e.getRect(n))}function sl(n,e,t){return function(e,n,t){return Xn(function(e,n){return n(e)},$n,e,n,t)}(e,uc).fold(D(!1),function(e){return pf(n,e).exists(function(e){return function(e,n){return e.left()<n.left()||Math.abs(n.right()-e.left())<1||e.left()>n.right()}(t,e)})})}function dl(n,t,e){var r=n.move(e,5),o=wf(t,n,e,r,100).getOr(r);return function(e,n,t){return e.point(n)>t.getInnerHeight()?Me.some(e.point(n)-t.getInnerHeight()):e.point(n)<0?Me.some(-e.point(n)):Me.none()}(n,o,t).fold(function(){return t.situsFromPoint(o.left(),n.point(o))},function(e){return t.scrollBy(0,e),t.situsFromPoint(o.left(),n.point(o)-e)})}function ml(e,n){return function(e,n,t){return $n(e,n,t).isSome()}(e,function(e){return ve(e).exists(function(e){return In(e,n)})})}function gl(n,r,o,e,i){return et(e,"td,th",r).bind(function(t){return et(t,"table",r).bind(function(e){return ml(i,e)?Of(n,r,o).bind(function(n){return et(n.finish(),"td,th",r).map(function(e){return{start:D(t),finish:D(e),range:D(n)}})}):Me.none()})})}function pl(e,n){return et(e,"td,th",n)}var hl=function(n,t,e){function r(){l.stop(),u.isOn()&&(u.off(),i.trigger.stop())}var o=!1,i=fa.create({start:la([]),stop:la([])}),u=wa(),c=function(t,r){var o=null;return{cancel:function(){null!==o&&(f.clearTimeout(o),o=null)},throttle:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];null!==o&&f.clearTimeout(o),o=f.setTimeout(function(){t.apply(null,e),o=null},r)}}}(r,200);u.events.move.bind(function(e){t.mutate(n,e.info())});function a(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];o&&t.apply(null,e)}}var l=t.sink(ha({forceDrop:r,drop:a(r),move:a(function(e){c.cancel(),u.onEvent(e,t)}),delayDrop:a(c.throttle)}),e);return{element:l.element,go:function(e){l.start(e),u.on(),i.trigger.start()},on:function(){o=!0},off:function(){o=!1},destroy:function(){l.destroy()},events:i.registry}},vl=function(e,n){void 0===n&&(n={});var t=n.mode!==undefined?n.mode:va;return hl(e,t,n)},bl=tu.resolve("resizer-bar-dragging"),wl=function(e,t){var r=go.height,n=Sa(e,t,r),o=fa.create({beforeResize:la(["table"]),afterResize:la(["table"]),startDrag:la([])});return n.events.adjustHeight.bind(function(e){o.trigger.beforeResize(e.table());var n=r.delta(e.delta(),e.table());Ku(e.table(),n,e.row(),r),o.trigger.afterResize(e.table())}),n.events.startAdjust.bind(function(e){o.trigger.startDrag()}),n.events.adjustWidth.bind(function(e){o.trigger.beforeResize(e.table());var n=t.delta(e.delta(),e.table());Yu(e.table(),n,e.column(),t),o.trigger.afterResize(e.table())}),{on:n.on,off:n.off,hideBars:n.hideBars,showBars:n.showBars,destroy:n.destroy,events:o.registry}},yl=function(e,n){return e.inline?aa(gc(e),function(){var e=on.fromTag("div");return re(e,{position:"static",height:"0",width:"0",padding:"0",margin:"0",border:"0"}),Mn(un(),e),e}()):ca(on.fromDom(e.getDoc()))},Cl=function(e,n){e.inline&&Wn(n.parent())},Sl=function(u){function c(e){return"TABLE"===e.nodeName}function r(e){var n=u.dom.getStyle(e,"width")||u.dom.getAttrib(e,"width");return Me.from(n).filter(function(e){return 0<e.length})}function e(){return i}var a,l,o=Me.none(),i=Me.none(),f=Me.none(),s=/(\d+(\.\d+)?)%/;return u.on("init",function(){var e=ho(bc.directionAt),n=yl(u);if(f=Me.some(n),function(e){var n=e.getParam("object_resizing",!0);return _e(n)?"table"===n:n}(u)&&function(e){return e.getParam("table_resize_bars",!0,"boolean")}(u)){var t=wl(n,e);t.on(),t.events.startDrag.bind(function(e){o=Me.some(u.selection.getRng())}),t.events.beforeResize.bind(function(e){var n=e.table().dom();Ii(u,n,bi(n),wi(n))}),t.events.afterResize.bind(function(e){var n=e.table(),t=n.dom();Ci(n),o.each(function(e){u.selection.setRng(e),u.focus()}),Bi(u,t,bi(t),wi(t)),u.undoManager.add()}),i=Me.some(t)}}),u.on("ObjectResizeStart",function(e){var n=e.target;if(c(n)){var t=r(n).map(function(e){return s.test(e)}).getOr(!1);t&&Ei(u)?function(e){te(on.fromDom(e),"width",bi(e).toString()+"px")}(n):!t&&function(e){return!0===e.getParam("table_responsive_width")}(u)&&function(e){var n=on.fromDom(e);ve(n).map(function(e){return xa(n,e)}).each(function(e){te(n,"width",e),p(Be(n,"tr"),function(n){p(Ce(n),function(e){te(e,"width",xa(e,n))})})})}(n),a=e.width,l=r(n).getOr("")}}),u.on("ObjectResized",function(e){var n=e.target;if(c(n)){var t=n;if(s.test(l)){var r=parseFloat(s.exec(l)[1]),o=e.width*r/a;u.dom.setStyle(t,"width",o+"%")}else{var i=[];Dc.each(t.rows,function(e){Dc.each(e.cells,function(e){var n=u.dom.getStyle(e,"width",!0);i.push({cell:e,width:n})})}),Dc.each(i,function(e){u.dom.setStyle(e.cell,"width",e.width),u.dom.setAttrib(e.cell,"width",null)})}}}),u.on("SwitchMode",function(){e().each(function(e){u.readonly?e.hideBars():e.showBars()})}),{lazyResize:e,lazyWire:function(){return f.getOr(ca(on.fromDom(u.getBody())))},destroy:function(){i.each(function(e){e.destroy()}),f.each(function(e){Cl(u,e)})}}},xl=Sr([{none:["current"]},{first:["current"]},{middle:["current","target"]},{last:["current"]}]),Rl=fn(fn({},xl),{none:function(e){return void 0===e&&(e=undefined),xl.none(e)}}),Tl=function(n,e){return Ra(n,e).fold(function(){return Rl.none(n)},function(e){return e.index()+1<e.all().length?Rl.middle(n,e.all()[e.index()+1]):Rl.last(n)})},Ol=function(n,e){return Ra(n,e).fold(function(){return Rl.none()},function(e){return 0<=e.index()-1?Rl.middle(n,e.all()[e.index()-1]):Rl.first(n)})},Dl={create:B("start","soffset","finish","foffset")},Al=Sr([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),El={before:Al.before,on:Al.on,after:Al.after,cata:function(e,n,t,r){return e.fold(n,t,r)},getStart:function(e){return e.fold(o,o,o)}},Nl=Sr([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),kl={domRange:Nl.domRange,relative:Nl.relative,exact:Nl.exact,exactFromRange:function(e){return Nl.exact(e.start(),e.soffset(),e.finish(),e.foffset())},getWin:function(e){return function(e){return on.fromDom(e.dom().ownerDocument.defaultView)}(function(e){return e.match({domRange:function(e){return on.fromDom(e.startContainer)},relative:function(e,n){return El.getStart(e)},exact:function(e,n,t,r){return e}})}(e))},range:Dl.create},Il=function(e,n){e.selectNodeContents(n.dom())},Bl=Sr([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),Pl=function(i,e){return Ea(i,e).match({ltr:function(e,n,t,r){var o=i.document.createRange();return o.setStart(e.dom(),n),o.setEnd(t.dom(),r),o},rtl:function(e,n,t,r){var o=i.document.createRange();return o.setStart(t.dom(),r),o.setEnd(e.dom(),n),o}})},Ml=function(e,n,t,r){return tn(n)?function(n,t,r,o){var e=n.dom().createRange();e.selectNode(t.dom());var i=e.getClientRects();return bo(i,function(e){return Na(e,r,o)?Me.some(e):Me.none()}).map(function(e){return ka(n,t,r,o,e)})}(e,n,t,r):function(n,e,t,r){var o=n.dom().createRange(),i=Ce(e);return bo(i,function(e){return o.selectNode(e.dom()),Na(o.getBoundingClientRect(),t,r)?Ml(n,e,t,r):Me.none()})}(e,n,t,r)},Wl=document.caretPositionFromPoint?function(t,e,n){return Me.from(t.dom().caretPositionFromPoint(e,n)).bind(function(e){if(null===e.offsetNode)return Me.none();var n=t.dom().createRange();return n.setStart(e.offsetNode,e.offset),n.collapse(),Me.some(n)})}:document.caretRangeFromPoint?function(e,n,t){return Me.from(e.dom().caretRangeFromPoint(n,t))}:function(t,r,o){return on.fromPoint(t,r,o).bind(function(e){function n(){return function(e,n,t){return(0===Ce(n).length?Ma:Pa)(e,n,t)}(t,e,r)}return 0===Ce(e).length?n():Wa(t,e,r,o).orThunk(n)})},_l=tinymce.util.Tools.resolve("tinymce.util.VK"),Ll=function(r,e,n,o,t){return n.fold(Me.none,Me.none,function(e,n){return Ct(n).map(function(e){return el(0,e)})},function(t){return lt.table(t,e).bind(function(e){var n=Er.noMenu(t);return r.undoManager.transact(function(){o.insertRowsAfter(e,n)}),nl(0,e)})})},jl=["table","li","dl"],zl={handle:function(n,t,r,o){if(n.keyCode===_l.TAB){var i=gc(t),u=function(e){var n=en(e);return In(e,i)||l(jl,n)},e=t.selection.getRng();if(e.collapsed){var c=on.fromDom(e.startContainer);lt.cell(c,u).each(function(e){n.preventDefault(),(n.shiftKey?Za:Qa)(t,u,e,r,o).each(function(e){t.selection.setRng(e)})})}}}},Hl={create:B("selection","kill")},Fl=function(e,n,t,r){return{start:D(El.on(e,n)),finish:D(El.on(t,r))}},Ul={convertToRange:function(e,n){var t=Pl(e,n);return Dl.create(on.fromDom(t.startContainer),t.startOffset,on.fromDom(t.endContainer),t.endOffset)},makeSitus:Fl},ql=function(t,e,r,n,o){return In(r,n)?Me.none():dr(r,n,e).bind(function(e){var n=e.boxes().getOr([]);return 0<n.length?(o(t,n,e.start(),e.finish()),Me.some(Hl.create(Me.some(Ul.makeSitus(r,0,r,wt(r))),!0))):Me.none()})},Vl={sync:function(t,r,e,n,o,i,u){return In(e,o)&&n===i?Me.none():et(e,"td,th",r).bind(function(n){return et(o,"td,th",r).bind(function(e){return ql(t,r,n,e,u)})})},detect:ql,update:function(e,n,t,r,o){return gr(r,e,n,o.firstSelectedSelector(),o.lastSelectedSelector()).map(function(e){return o.clearBeforeUpdate(t),o.selectRange(t,e.boxes(),e.start(),e.finish()),e.boxes()})}},Gl=B("item","mode"),Yl=function(e,n,t,r){return void 0===r&&(r=Kl),t.sibling(e,n).map(function(e){return Gl(e,r)})},Kl=function(e,n,t,r){void 0===r&&(r=Kl);var o=e.property().children(n);return t.first(o).map(function(e){return Gl(e,r)})},Xl=[{current:tl,next:Yl,fallback:Me.none()},{current:Yl,next:Kl,fallback:Me.some(tl)},{current:Kl,next:Kl,fallback:Me.some(Yl)}],$l=function(n,t,r,o,e){return void 0===e&&(e=Xl),y(e,function(e){return e.current===r}).bind(function(e){return e.current(n,t,o,e.next).orThunk(function(){return e.fallback.bind(function(e){return $l(n,t,e,o)})})})},Jl=function(){return{sibling:function(e,n){return e.query().prevSibling(n)},first:function(e){return 0<e.length?Me.some(e[e.length-1]):Me.none()}}},Ql=function(){return{sibling:function(e,n){return e.query().nextSibling(n)},first:function(e){return 0<e.length?Me.some(e[0]):Me.none()}}},Zl=function(n,e,t,r,o,i){return $l(n,e,r,o).bind(function(e){return i(e.item())?Me.none():t(e.item())?Me.some(e.item()):Zl(n,e.item(),t,e.mode(),o,i)})},ef=function(e,n,t,r){return Zl(e,n,t,Yl,Jl(),r)},nf=function(e,n,t,r){return Zl(e,n,t,Yl,Ql(),r)},tf=$t(),rf=B("element","offset"),of=(B("element","deltaOffset"),B("element","start","finish"),B("begin","end"),B("element","text"),Sr([{none:["message"]},{success:[]},{failedUp:["cell"]},{failedDown:["cell"]}])),uf=fn(fn({},of),{verify:function(t,n,e,r,o,i,u){return et(r,"td,th",u).bind(function(e){return et(n,"td,th",u).map(function(n){return In(e,n)?In(r,e)&&wt(e)===o?i(n):of.none("in same cell"):fr.sharedOne(ul,[e,n]).fold(function(){return function(e,n,t){var r=e.getRect(n),o=e.getRect(t);return o.right>r.left&&o.left<r.right}(t,n,e)?of.success():i(n)},function(e){return i(n)})})}).getOr(of.none("default"))},cata:function(e,n,t,r,o){return e.fold(n,t,r,o)}}),cf=(B("ancestor","descendants","element","index"),B("parent","children","element","index")),af=function(e,n){return C(e,b(In,n))},lf=function(e,n,t){return n(e,t).bind(function(e){return tn(e)&&0===ht(e).trim().length?lf(e,n,t):Me.some(e)})},ff=function(e,n,t,r){return(cl(n)?function(e,n,t){return t.traverse(n).orThunk(function(){return lf(n,t.gather,e)}).map(t.relative)}(e,n,r):al(e,n,t,r)).map(function(e){return{start:D(e),finish:D(e)}})},sf=function(e){return uf.cata(e,function(e){return Me.none()},function(){return Me.none()},function(e){return Me.some(rf(e,0))},function(e){return Me.some(rf(e,wt(e)))})},df=Xe(["left","top","right","bottom"],[]),mf={nu:df,moveUp:function(e,n){return df({left:e.left(),top:e.top()-n,right:e.right(),bottom:e.bottom()-n})},moveDown:function(e,n){return df({left:e.left(),top:e.top()+n,right:e.right(),bottom:e.bottom()+n})},moveBottomTo:function(e,n){var t=e.bottom()-e.top();return df({left:e.left(),top:n-t,right:e.right(),bottom:n})},moveTopTo:function(e,n){var t=e.bottom()-e.top();return df({left:e.left(),top:n,right:e.right(),bottom:n+t})},getTop:function(e){return e.top()},getBottom:function(e){return e.bottom()},translate:function(e,n,t){return df({left:e.left()+n,top:e.top()+t,right:e.right()+n,bottom:e.bottom()+t})},toString:function(e){return"("+e.left()+", "+e.top()+") -> ("+e.right()+", "+e.bottom()+")"}},gf=function(e,n,t){return nn(n)?fl(e,n).map(ll):tn(n)?function(e,n,t){return 0<=t&&t<wt(n)?e.getRangedRect(n,t,n,t+1):0<t?e.getRangedRect(n,t-1,n,t):Me.none()}(e,n,t).map(ll):Me.none()},pf=function(e,n){return nn(n)?fl(e,n).map(ll):tn(n)?e.getRangedRect(n,0,n,wt(n)).map(ll):Me.none()},hf=Sr([{none:[]},{retry:["caret"]}]),vf={point:mf.getTop,adjuster:function(e,n,t,r,o){var i=mf.moveUp(o,5);return Math.abs(t.top()-r.top())<1?hf.retry(i):t.bottom()<o.top()?hf.retry(i):t.bottom()===o.top()?hf.retry(mf.moveUp(o,1)):sl(e,n,o)?hf.retry(mf.translate(i,5,0)):hf.none()},move:mf.moveUp,gather:ol},bf={point:mf.getBottom,adjuster:function(e,n,t,r,o){var i=mf.moveDown(o,5);return Math.abs(t.bottom()-r.bottom())<1?hf.retry(i):t.top()>o.bottom()?hf.retry(i):t.top()===o.bottom()?hf.retry(mf.moveDown(o,1)):sl(e,n,o)?hf.retry(mf.translate(i,5,0)):hf.none()},move:mf.moveDown,gather:il},wf=function(t,r,o,i,u){return 0===u?Me.some(i):function(e,n,t){return e.elementFromPoint(n,t).filter(function(e){return"table"===en(e)}).isSome()}(t,i.left(),r.point(i))?function(e,n,t,r,o){return wf(e,n,t,n.move(r,5),o)}(t,r,o,i,u-1):t.situsFromPoint(i.left(),r.point(i)).bind(function(e){return e.start().fold(Me.none,function(n){return pf(t,n).bind(function(e){return r.adjuster(t,n,e,o,i).fold(Me.none,function(e){return wf(t,r,o,e,u-1)})}).orThunk(function(){return Me.some(i)})},Me.none)})},yf={tryUp:b(dl,vf),tryDown:b(dl,bf),ieTryUp:function(e,n){return e.situsFromPoint(n.left(),n.top()-5)},ieTryDown:function(e,n){return e.situsFromPoint(n.left(),n.bottom()+5)},getJumpSize:D(5)},Cf=me(),Sf=function(r,o,i,u,c,a){return 0===a?Me.none():Tf(r,o,i,u,c).bind(function(e){var n=r.fromSitus(e),t=uf.verify(r,i,u,n.finish(),n.foffset(),c.failure,o);return uf.cata(t,function(){return Me.none()},function(){return Me.some(e)},function(e){return In(i,e)&&0===u?xf(r,i,u,mf.moveUp,c):Sf(r,o,e,0,c,a-1)},function(e){return In(i,e)&&u===wt(e)?xf(r,i,u,mf.moveDown,c):Sf(r,o,e,wt(e),c,a-1)})})},xf=function(n,e,t,r,o){return gf(n,e,t).bind(function(e){return Rf(n,o,r(e,yf.getJumpSize()))})},Rf=function(e,n,t){return Cf.browser.isChrome()||Cf.browser.isSafari()||Cf.browser.isFirefox()||Cf.browser.isEdge()?n.otherRetry(e,t):Cf.browser.isIE()?n.ieRetry(e,t):Me.none()},Tf=function(n,e,t,r,o){return gf(n,t,r).bind(function(e){return Rf(n,o,e)})},Of=function(n,t,r){return function(o,i,u){return o.getSelection().bind(function(r){return ff(i,r.finish(),r.foffset(),u).fold(function(){return Me.some(rf(r.finish(),r.foffset()))},function(e){var n=o.fromSitus(e),t=uf.verify(o,r.finish(),r.foffset(),n.finish(),n.foffset(),u.failure,i);return sf(t)})})}(n,t,r).bind(function(e){return Sf(n,t,e.element(),e.offset(),r,20).map(n.fromSitus)})},Df=me(),Af=function(e,n,t,r,o,i){return Df.browser.isIE()?Me.none():i(r,n).orThunk(function(){return gl(e,n,t,r,o).map(function(e){var n=e.range();return Hl.create(Me.some(Ul.makeSitus(n.start(),n.soffset(),n.finish(),n.foffset())),!0)})})},Ef=function(e,n,t,r,o,i,u){return gl(e,t,r,o,i).bind(function(e){return Vl.detect(n,t,e.start(),e.finish(),u)})},Nf=function(e,r){return et(e,"tr",r).bind(function(t){return et(t,"table",r).bind(function(e){var n=Be(e,"tr");return In(t,n[0])?function(e,n,t){return ef(tf,e,n,t)}(e,function(e){return St(e).isSome()},r).map(function(e){var n=wt(e);return Hl.create(Me.some(Ul.makeSitus(e,n,e,n)),!0)}):Me.none()})})},kf=function(e,r){return et(e,"tr",r).bind(function(t){return et(t,"table",r).bind(function(e){var n=Be(e,"tr");return In(t,n[n.length-1])?function(e,n,t){return nf(tf,e,n,t)}(e,function(e){return Ct(e).isSome()},r).map(function(e){return Hl.create(Me.some(Ul.makeSitus(e,0,e,0)),!0)}):Me.none()})})};function If(n){return function(e){return e===n}}function Bf(c){return{elementFromPoint:function(e,n){return on.fromPoint(on.fromDom(c.document),e,n)},getRect:function(e){return e.dom().getBoundingClientRect()},getRangedRect:function(e,n,t,r){var o=kl.exact(e,n,t,r);return $a(c,o).map(jf)},getSelection:function(){return Xa(c).map(function(e){return Ul.convertToRange(c,e)})},fromSitus:function(e){var n=kl.relative(e.start(),e.finish());return Ul.convertToRange(c,n)},situsFromPoint:function(e,n){return Ja(c,e,n).map(function(e){return Fl(e.start(),e.soffset(),e.finish(),e.foffset())})},clearSelection:function(){!function(e){e.getSelection().removeAllRanges()}(c)},collapseSelection:function(u){void 0===u&&(u=!1),Xa(c).each(function(e){return e.fold(function(e){return e.collapse(u)},function(e,n){var t=u?e:n;Va(c,t,t)},function(e,n,t,r){var o=u?e:t,i=u?n:r;qa(c,o,i,o,i)})})},setSelection:function(e){qa(c,e.start(),e.soffset(),e.finish(),e.foffset())},setRelativeSelection:function(e,n){Va(c,e,n)},selectContents:function(e){Ka(c,e)},getInnerHeight:function(){return c.innerHeight},getScrollY:function(){return function(e){var n=e!==undefined?e.dom():f.document,t=n.body.scrollLeft||n.documentElement.scrollLeft,r=n.body.scrollTop||n.documentElement.scrollTop;return lo(t,r)}(on.fromDom(c.document)).top()},scrollBy:function(e,n){!function(e,n,t){(t!==undefined?t.dom():f.document).defaultView.scrollBy(e,n)}(e,n,on.fromDom(c.document))}}}function Pf(n,e){p(e,function(e){!function(e,n){Co(e)?e.dom().classList.remove(n):xo(e,n);To(e)}(n,e)})}var Mf={down:{traverse:ye,gather:il,relative:El.before,otherRetry:yf.tryDown,ieRetry:yf.ieTryDown,failure:uf.failedDown},up:{traverse:we,gather:ol,relative:El.before,otherRetry:yf.tryUp,ieRetry:yf.ieTryUp,failure:uf.failedUp}},Wf=If(38),_f=If(40),Lf={ltr:{isBackward:If(37),isForward:If(39)},rtl:{isBackward:If(39),isForward:If(37)},isUp:Wf,isDown:_f,isNavigation:function(e){return 37<=e&&e<=40}},jf=function(e){return{left:e.left(),top:e.top(),right:e.right(),bottom:e.bottom(),width:e.width(),height:e.height()}},zf=(me().browser.isSafari(),B("rows","cols")),Hf={mouse:function(e,n,t,r){var o=function c(o,i,n,u){function t(){r=Me.none()}var r=Me.none();return{mousedown:function(e){u.clear(i),r=pl(e.target(),n)},mouseover:function(e){r.each(function(r){u.clearBeforeUpdate(i),pl(e.target(),n).each(function(t){dr(r,t,n).each(function(e){var n=e.boxes().getOr([]);(1<n.length||1===n.length&&!In(r,t))&&(u.selectRange(i,n,e.start(),e.finish()),o.selectContents(t))})})})},mouseup:function(e){r.each(t)}}}(Bf(e),n,t,r);return{mousedown:o.mousedown,mouseover:o.mouseover,mouseup:o.mouseup}},keyboard:function(e,l,f,s){function d(){return s.clear(l),Me.none()}var m=Bf(e);return{keydown:function(e,n,t,r,o,i){var u=e.raw(),c=u.which,a=!0===u.shiftKey;return mr(l,s.selectedSelector()).fold(function(){return Lf.isDown(c)&&a?b(Ef,m,l,f,Mf.down,r,n,s.selectRange):Lf.isUp(c)&&a?b(Ef,m,l,f,Mf.up,r,n,s.selectRange):Lf.isDown(c)?b(Af,m,f,Mf.down,r,n,kf):Lf.isUp(c)?b(Af,m,f,Mf.up,r,n,Nf):Me.none},function(n){function e(e){return function(){return bo(e,function(e){return Vl.update(e.rows(),e.cols(),l,n,s)}).fold(function(){return pr(l,s.firstSelectedSelector(),s.lastSelectedSelector()).map(function(e){var n=Lf.isDown(c)||i.isForward(c)?El.after:El.before;return m.setRelativeSelection(El.on(e.first(),0),n(e.table())),s.clear(l),Hl.create(Me.none(),!0)})},function(e){return Me.some(Hl.create(Me.none(),!0))})}}return Lf.isDown(c)&&a?e([zf(1,0)]):Lf.isUp(c)&&a?e([zf(-1,0)]):i.isBackward(c)&&a?e([zf(0,-1),zf(-1,0)]):i.isForward(c)&&a?e([zf(0,1),zf(1,0)]):Lf.isNavigation(c)&&!1==a?d:Me.none})()},keyup:function(t,r,o,i,u){return mr(l,s.selectedSelector()).fold(function(){var e=t.raw(),n=e.which;return!1==(!0===e.shiftKey)?Me.none():Lf.isNavigation(n)?Vl.sync(l,f,r,o,i,u,s.selectRange):Me.none()},Me.none)}}},external:function(e,r,n,o){var i=Bf(e);return function(e,t){o.clearBeforeUpdate(r),dr(e,t,n).each(function(e){var n=e.boxes().getOr([]);o.selectRange(r,n,e.start(),e.finish()),i.selectContents(t),i.collapseSelection()})}}},Ff={byClass:function(o){function i(e){var n=Be(e,o.selectedSelector());p(n,t)}var u=function(n){return function(e){Ro(e,n)}}(o.selected()),t=function(n){return function(e){Pf(e,n)}}([o.selected(),o.lastSelected(),o.firstSelected()]);return{clearBeforeUpdate:i,clear:i,selectRange:function(e,n,t,r){i(e),p(n,u),Ro(t,o.firstSelected()),Ro(r,o.lastSelected())},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}},byAttr:function(o,i,n){function t(e){Y(e,o.selected()),Y(e,o.firstSelected()),Y(e,o.lastSelected())}function u(e){U(e,o.selected(),"1")}function c(e){r(e),n()}var r=function(e){var n=Be(e,o.selectedSelector());p(n,t)};return{clearBeforeUpdate:r,clear:c,selectRange:function(e,n,t,r){c(e),p(n,u),U(t,o.firstSelected(),"1"),U(r,o.lastSelected(),"1"),i(n,t,r)},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}}},Uf={getOtherCells:function(e,n,t){var r=ft(e),o=mt.generate(r);return Fo(o,n).map(function(e){var n=bu(o,t,!1);return{upOrLeftCells:function(e,t,n){var r=e.slice(0,t[t.length-1].row()+1),o=_o(r,n);return x(o,function(e){var n=e.cells().slice(0,t[t.length-1].column()+1);return g(n,function(e){return e.element()})})}(n,e,t),downOrRightCells:function(e,t,n){var r=e.slice(t[0].row()+t[0].rowspan()-1,e.length),o=_o(r,n);return x(o,function(e){var n=e.cells().slice(t[0].column()+t[0].colspan()-1,+e.cells().length);return g(n,function(e){return e.element()})})}(n,e,t)}})}},qf=function(e){return!1===Oo(on.fromDom(e.target),"ephox-snooker-resizer-bar")};function Vf(w,y,e){var C=Xe(["mousedown","mouseover","mouseup","keyup","keydown"],[]),S=Me.none(),a=Sc(w),x=Ff.byAttr(Cr,function(i,u,c){e.targets().each(function(o){lt.table(u).each(function(e){var n=on.fromDom(w.getDoc()),t=Wt.cellOperations(T,n,a),r=Uf.getOtherCells(e,o,t);xc(w,i,u,c,r)})})},function(){Rc(w)});w.on("init",function(e){var r=w.getWin(),o=gc(w),n=pc(w),t=Hf.mouse(r,o,n,x),c=Hf.keyboard(r,o,n,x),i=Hf.external(r,o,n,x);w.on("TableSelectorChange",function(e){i(e.start,e.finish)});function a(e,n){!function(e){return!0===e.raw().shiftKey}(e)||(n.kill()&&e.kill(),n.selection().each(function(e){var n=kl.relative(e.start(),e.finish()),t=Pl(r,n);w.selection.setRng(t)}))}function u(e){var n=v(e);if(n.raw().shiftKey&&Lf.isNavigation(n.raw().which)){var t=w.selection.getRng(),r=on.fromDom(t.startContainer),o=on.fromDom(t.endContainer);c.keyup(n,r,t.startOffset,o,t.endOffset).each(function(e){a(n,e)})}}function l(e){var n=v(e);y().each(function(e){e.hideBars()});var t=w.selection.getRng(),r=on.fromDom(w.selection.getStart()),o=on.fromDom(t.startContainer),i=on.fromDom(t.endContainer),u=bc.directionAt(r).isRtl()?Lf.rtl:Lf.ltr;c.keydown(n,o,t.startOffset,i,t.endOffset,u).each(function(e){a(n,e)}),y().each(function(e){e.showBars()})}function f(e){return e.hasOwnProperty("x")&&e.hasOwnProperty("y")}function s(e){return 0===e.button}function d(e){s(e)&&qf(e)&&t.mousedown(v(e))}function m(e){(function(e){return e.buttons===undefined||0!=(1&e.buttons)})(e)&&qf(e)&&t.mouseover(v(e))}function g(e){s(e)&&qf(e)&&t.mouseup(v(e))}var p,h,v=function(e){function n(){e.stopPropagation()}function t(){e.preventDefault()}var r=on.fromDom(e.target),o=O(t,n);return{target:D(r),x:D(f(e)?e.x:null),y:D(f(e)?e.y:null),stop:n,prevent:t,kill:o,raw:D(e)}},b=(p=R(on.fromDom(o)),h=R(0),{touchEnd:function(e){var n=on.fromDom(e.target);if("td"===en(n)||"th"===en(n)){var t=p.get(),r=h.get();In(t,n)&&e.timeStamp-r<300&&(e.preventDefault(),i(n,n))}p.set(n),h.set(e.timeStamp)}});w.on("mousedown",d),w.on("mouseover",m),w.on("mouseup",g),w.on("touchend",b.touchEnd),w.on("keyup",u),w.on("keydown",l),w.on("NodeChange",function(){var e=w.selection,n=on.fromDom(e.getStart()),t=on.fromDom(e.getEnd());fr.sharedOne(lt.table,[n,t]).fold(function(){x.clear(o)},T)}),S=Me.some(C({mousedown:d,mouseover:m,mouseup:g,keyup:u,keydown:l}))});return{clear:x.clear,destroy:function(){S.each(function(e){})}}}var Gf=function(n){return{get:function(){var e=gc(n);return hr(e,Cr.selectedSelector()).fold(function(){return n.selection.getStart()===undefined?Rr.none():Rr.single(n.selection)},function(e){return Rr.multiple(e)})}}},Yf=function(e,t){function n(){return oa(e).bind(function(n){return lt.table(n).map(function(e){return"caption"===en(n)?Er.notCell(n):Er.forMenu(t,e,n)})})}function r(){i.set(Z(n)()),p(u.get(),function(e){return e()})}function o(n,t){function r(){return i.get().fold(function(){n.setDisabled(!0)},function(e){n.setDisabled(t(e))})}return r(),u.set(u.get().concat([r])),function(){u.set(h(u.get(),function(e){return e!==r}))}}var i=R(Me.none()),u=R([]);return e.on("NodeChange TableSelectorChange",r),{onSetupTable:function(e){return o(e,function(e){return!1})},onSetupCellOrRow:function(e){return o(e,function(e){return"caption"===en(e.element())})},onSetupMergeable:function(e){return o(e,function(e){return e.mergable().isNone()})},onSetupUnmergeable:function(e){return o(e,function(e){return e.unmergable().isNone()})},resetTargets:r,targets:function(){return i.get()}}},Kf={addButtons:function(n,e){n.ui.registry.addMenuButton("table",{tooltip:"Table",icon:"table",fetch:function(e){return e("inserttable | cell row column | advtablesort | tableprops deletetable")}});function t(e){return function(){return n.execCommand(e)}}n.ui.registry.addButton("tableprops",{tooltip:"Table properties",onAction:t("mceTableProps"),icon:"table",onSetup:e.onSetupTable}),n.ui.registry.addButton("tabledelete",{tooltip:"Delete table",onAction:t("mceTableDelete"),icon:"table-delete-table",onSetup:e.onSetupTable}),n.ui.registry.addButton("tablecellprops",{tooltip:"Cell properties",onAction:t("mceTableCellProps"),icon:"table-cell-properties",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablemergecells",{tooltip:"Merge cells",onAction:t("mceTableMergeCells"),icon:"table-merge-cells",onSetup:e.onSetupMergeable}),n.ui.registry.addButton("tablesplitcells",{tooltip:"Split cell",onAction:t("mceTableSplitCells"),icon:"table-split-cells",onSetup:e.onSetupUnmergeable}),n.ui.registry.addButton("tableinsertrowbefore",{tooltip:"Insert row before",onAction:t("mceTableInsertRowBefore"),icon:"table-insert-row-above",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertrowafter",{tooltip:"Insert row after",onAction:t("mceTableInsertRowAfter"),icon:"table-insert-row-after",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tabledeleterow",{tooltip:"Delete row",onAction:t("mceTableDeleteRow"),icon:"table-delete-row",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablerowprops",{tooltip:"Row properties",onAction:t("mceTableRowProps"),icon:"table-row-properties",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertcolbefore",{tooltip:"Insert column before",onAction:t("mceTableInsertColBefore"),icon:"table-insert-column-before",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertcolafter",{tooltip:"Insert column after",onAction:t("mceTableInsertColAfter"),icon:"table-insert-column-after",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tabledeletecol",{tooltip:"Delete column",onAction:t("mceTableDeleteCol"),icon:"table-delete-column",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablecutrow",{tooltip:"Cut row",onAction:t("mceTableCutRow"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablecopyrow",{tooltip:"Copy row",onAction:t("mceTableCopyRow"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablepasterowbefore",{tooltip:"Paste row before",onAction:t("mceTablePasteRowBefore"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablepasterowafter",{tooltip:"Paste row after",onAction:t("mceTablePasteRowAfter"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertdialog",{tooltip:"Insert table",onAction:t("mceInsertTable"),icon:"table"})},addToolbars:function(n){var e=function(e){return e.getParam("table_toolbar","tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol")}(n);0<e.length&&n.ui.registry.addContextToolbar("table",{predicate:function(e){return n.dom.is(e,"table")&&n.getBody().contains(e)},items:e,scope:"node",position:"node"})}},Xf={addMenuItems:function(r,e){function n(e){return function(){return r.execCommand(e)}}function t(e){var n=e.numRows,t=e.numColumns;r.undoManager.transact(function(){Zc(r,t,n)}),r.addVisual()}var o={text:"Table properties",onSetup:e.onSetupTable,onAction:n("mceTableProps")},i={text:"Delete table",icon:"table-delete-table",onSetup:e.onSetupTable,onAction:n("mceTableDelete")},u=[{type:"menuitem",text:"Insert row before",icon:"table-insert-row-above",onAction:n("mceTableInsertRowBefore"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Insert row after",icon:"table-insert-row-after",onAction:n("mceTableInsertRowAfter"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Delete row",icon:"table-delete-row",onAction:n("mceTableDeleteRow"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Row properties",icon:"table-row-properties",onAction:n("mceTableRowProps"),onSetup:e.onSetupCellOrRow},{type:"separator"},{type:"menuitem",text:"Cut row",onAction:n("mceTableCutRow"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Copy row",onAction:n("mceTableCopyRow"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Paste row before",onAction:n("mceTablePasteRowBefore"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Paste row after",onAction:n("mceTablePasteRowAfter"),onSetup:e.onSetupCellOrRow}],c={type:"nestedmenuitem",text:"Row",getSubmenuItems:function(){return u}},a=[{type:"menuitem",text:"Insert column before",icon:"table-insert-column-before",onAction:n("mceTableInsertColBefore"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Insert column after",icon:"table-insert-column-after",onAction:n("mceTableInsertColAfter"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Delete column",icon:"table-delete-column",onAction:n("mceTableDeleteCol"),onSetup:e.onSetupCellOrRow}],l={type:"nestedmenuitem",text:"Column",getSubmenuItems:function(){return a}},f=[{type:"menuitem",text:"Cell properties",icon:"table-cell-properties",onAction:n("mceTableCellProps"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Merge cells",icon:"table-merge-cells",onAction:n("mceTableMergeCells"),onSetup:e.onSetupMergeable},{type:"menuitem",text:"Split cell",icon:"table-split-cells",onAction:n("mceTableSplitCells"),onSetup:e.onSetupUnmergeable}],s={type:"nestedmenuitem",text:"Cell",getSubmenuItems:function(){return f}};!1===function(e){return e.getParam("table_grid",!0,"boolean")}(r)?r.ui.registry.addMenuItem("inserttable",{text:"Table",icon:"table",onAction:n("mceInsertTable")}):r.ui.registry.addNestedMenuItem("inserttable",{text:"Table",icon:"table",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"inserttable",onAction:t}]}}),r.ui.registry.addMenuItem("inserttabledialog",{text:"Insert table",icon:"table",onAction:n("mceInsertTable")}),r.ui.registry.addMenuItem("tableprops",o),r.ui.registry.addMenuItem("deletetable",i),r.ui.registry.addNestedMenuItem("row",c),r.ui.registry.addNestedMenuItem("column",l),r.ui.registry.addNestedMenuItem("cell",s),r.ui.registry.addContextMenu("table",{update:function(){return e.resetTargets(),e.targets().fold(function(){return""},function(e){return"caption"===en(e.element())?"tableprops deletetable":"cell row column | advtablesort | tableprops deletetable"})}})}},$f=function(t,n,e,r){return{insertTable:function(e,n){return Zc(t,e,n)},setClipboardRows:function(e){return function(e,n){var t=g(e,on.fromDom);n.set(Me.from(t))}(e,n)},getClipboardRows:function(){return function(e){return e.get().fold(function(){},function(e){return g(e,function(e){return e.dom()})})}(n)},resizeHandler:e,selectionTargets:r}};function Jf(n){var e=Gf(n),t=Yf(n,e),r=Sl(n),o=Vf(n,r.lazyResize,t),i=Tc(n,r.lazyWire),u=R(Me.none());return ua.registerCommands(n,i,o,e,u),Nr.registerEvents(n,e,i,o),Xf.addMenuItems(n,t),Kf.addButtons(n,t),Kf.addToolbars(n),n.on("PreInit",function(){n.serializer.addTempAttr(Cr.firstSelected()),n.serializer.addTempAttr(Cr.lastSelected())}),Cc(n)&&n.on("keydown",function(e){zl.handle(e,n,i,r.lazyWire)}),n.on("remove",function(){r.destroy(),o.destroy()}),$f(n,u,r,t)}!function Zf(){We.add("table",Jf)}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/template/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/template/plugin.min.js
deleted file mode 100644 (file)
index be01bd1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function e(){}function a(e){return function(){return e}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager");function c(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function i(n,e){return p.each(e,function(e,t){"function"==typeof e&&(e=e(t)),n=n.replace(new RegExp("\\{\\$"+t+"\\}","g"),e)}),n}function l(e,t){var r=e.dom,o=h(e);p.each(r.select("*",t),function(n){p.each(o,function(e,t){r.hasClass(n,t)&&"function"==typeof o[t]&&o[t](n)})})}function s(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)}function n(){return w}var r,u=a(!1),f=a(!0),p=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.XHR"),m=function(e){return e.getParam("template_cdate_classes","cdate")},d=function(e){return e.getParam("template_mdate_classes","mdate")},g=function(e){return e.getParam("template_selected_content_classes","selcontent")},y=function(e){return e.getParam("template_preview_replace_values")},h=function(e){return e.getParam("template_replace_values")},v=function(e){return e.templates},b=function(e){return e.getParam("template_cdate_format",e.translate("%Y-%m-%d"))},O=function(e){return e.getParam("template_mdate_format",e.translate("%Y-%m-%d"))},T=function(e,t,n){var r="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),o="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),a="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),u="January February March April May June July August September October November December".split(" ");return n=n||new Date,t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",c(n.getMonth()+1,2))).replace("%d",c(n.getDate(),2))).replace("%H",""+c(n.getHours(),2))).replace("%M",""+c(n.getMinutes(),2))).replace("%S",""+c(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(u[n.getMonth()]))).replace("%b",""+e.translate(a[n.getMonth()]))).replace("%A",""+e.translate(o[n.getDay()]))).replace("%a",""+e.translate(r[n.getDay()]))).replace("%%","%")},M=function(t,n){return function(){var e=v(t);"function"!=typeof e?"string"==typeof e?o.send({url:e,success:function(e){n(JSON.parse(e))}}):n(e):e(n)}},S=i,_=l,x=function(t,e,n){var r,o,a=t.dom,u=t.selection.getContent();n=i(n,h(t)),r=a.create("div",null,n),(o=a.select(".mceTmpl",r))&&0<o.length&&(r=a.create("div",null)).appendChild(o[0].cloneNode(!0)),p.each(a.select("*",r),function(e){s(e,m(t).replace(/\s+/g,"|"))&&(e.innerHTML=T(t,b(t))),s(e,d(t).replace(/\s+/g,"|"))&&(e.innerHTML=T(t,O(t))),s(e,g(t).replace(/\s+/g,"|"))&&(e.innerHTML=u)}),l(t,r),t.execCommand("mceInsertContent",!1,r.innerHTML),t.addVisual()},P=function(e){e.addCommand("mceInsertTemplate",function t(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}(x,e))},A=function(r){r.on("PreProcess",function(e){var t=r.dom,n=O(r);p.each(t.select("div",e.node),function(e){t.hasClass(e,"mceTmpl")&&(p.each(t.select("*",e),function(e){t.hasClass(e,r.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(e.innerHTML=T(r,n))}),_(r,e))})})},w=(r={fold:function(e,t){return e()},is:u,isSome:u,isNone:f,getOr:N,getOrThunk:C,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:N,orThunk:C,map:n,each:e,bind:n,exists:u,forall:f,filter:n,equals:D,equals_:D,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(r),r);function D(e){return e.isNone()}function C(e){return e()}function N(e){return e}function H(e){return e.replace(/["'<>&]/g,function(e){return function(e,t){return B(e,t)?L.from(e[t]):L.none()}(E,e).getOr(e)})}function k(t){return function(e){R(t,e)}}var I,J=function(n){function e(){return o}function t(e){return e(n)}var r=a(n),o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:f,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return J(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:w},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(u,function(e){return t(n,e)})}};return o},L={some:J,none:n,from:function(e){return null===e||e===undefined?w:J(e)}},Y=(I="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===I}),j=Array.prototype.slice,q=(Y(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.util.Promise")),F=Object.hasOwnProperty,B=function(e,t){return F.call(e,t)},E={'"':"&quot;","<":"&lt;",">":"&gt;","&":"&amp;","'":"&#039;"},R=function(i,t){function e(e){return function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var a=e[o];r[o]=t(a,o)}return r}(e,function(e){return{text:e.text,value:e.text}})}function a(e,t){return function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return L.some(o)}return L.none()}(e,function(e){return e.text===t})}function l(e){return new q(function(t,n){e.value.url.fold(function(){return t(e.value.content.getOr(""))},function(e){return o.send({url:e,success:function(e){t(e)},error:function(e){n(e)}})})})}(function(){if(t&&0!==t.length)return L.from(p.map(t,function(e,t){function n(e){return e.url!==undefined}return{selected:0===t,text:e.title,value:{url:n(e)?L.from(e.url):L.none(),content:n(e)?L.none():L.from(e.content),description:e.description}}}));var e=i.translate("No templates defined.");return i.notificationManager.open({text:e,type:"info"}),L.none()})().each(function(n){function u(e,t){return{title:"Insert Template",size:"large",body:{type:"panel",items:e},initialData:t,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(n){return function(t){var e=t.getData();a(n,e.template).each(function(e){l(e).then(function(e){x(i,!1,e),t.close()})})}}(n),onChange:function(r,o){return function(n,e){if("template"===e.name){var t=n.getData().template;a(r,t).each(function(t){n.block("Loading..."),l(t).then(function(e){o(n,t,e),n.unblock()})})}}}(n,r)}}var c=e(n),r=function(e,t,n){var r=function(t,e){if(-1===e.indexOf("<html>")){var n="";p.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+t.documentBaseURI.toAbsolute(e)+'">'});var r=t.settings.body_class||"";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_class","","hash"))[t.id]||"");var o=t.dom.encode,a=t.getBody().dir,u=a?' dir="'+o(a)+'"':"";e="<!DOCTYPE html><html><head>"+n+'</head><body class="'+o(r)+'"'+u+">"+e+"</body></html>"}return S(e,y(t))}(i,n),o=[{type:"selectbox",name:"template",label:"Templates",items:c},{type:"htmlpanel",html:'<p aria-live="polite">'+H(t.value.description)+"</p>"},{label:"Preview",type:"iframe",name:"preview",sandboxed:!1}],a={template:t.text,preview:r};e.unblock(),e.redial(u(o,a)),e.focus("template")},t=i.windowManager.open(u([],{template:"",preview:""}));t.block("Loading..."),l(n[0]).then(function(e){r(t,n[0],e)})})},z=function(e){e.ui.registry.addButton("template",{icon:"template",tooltip:"Insert template",onAction:M(e.settings,k(e))}),e.ui.registry.addMenuItem("template",{icon:"template",text:"Insert template...",onAction:M(e.settings,k(e))})};!function U(){t.add("template",function(e){z(e),P(e),A(e)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/textcolor/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/textcolor/plugin.min.js
deleted file mode 100644 (file)
index 8739023..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("textcolor",function(){o.console.warn("Text color plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/textpattern/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/textpattern/plugin.min.js
deleted file mode 100644 (file)
index 0a346c8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(f){"use strict";var r=function(t){function n(){return e}var e=t;return{get:n,set:function(t){e=t},clone:function(){return r(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(){return(u=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)};function n(){}function a(t){return function(){return t}}function o(t){return t}function e(){return l}var i,c=a(!1),s=a(!0),l=(i={fold:function(t,n){return t()},is:c,isSome:c,isNone:s,getOr:g,getOrThunk:m,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:g,orThunk:m,map:e,each:n,bind:e,exists:c,forall:s,filter:e,equals:d,equals_:d,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(i),i);function d(t){return t.isNone()}function m(t){return t()}function g(t){return t}function p(n){return function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===n}}function h(t,n){return-1<function(t,n){return lt.call(t,n)}(t,n)}function v(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var a=t[o];r[o]=n(a,o)}return r}function y(t,n){for(var e=0,r=t.length;e<r;e++){n(t[e],e)}}function b(t,n){for(var e=[],r=0,o=t.length;r<o;r++){var a=t[r];n(a,r)&&e.push(a)}return e}function k(t,n,e){return function(t,n){for(var e=t.length-1;0<=e;e--){n(t[e],e)}}(t,function(t){e=n(e,t)}),e}function O(t,n){for(var e=0,r=t.length;e<r;++e){if(!0!==n(t[e],e))return!1}return!0}function w(t){var n=[],e=[];return y(t,function(t){t.fold(function(t){n.push(t)},function(t){e.push(t)})}),{errors:n,values:e}}function x(t){return"inline-command"===t.type||"inline-format"===t.type}function C(t){return"block-command"===t.type||"block-format"===t.type}function E(t){return function(t,n){var e=st.call(t,0);return e.sort(n),e}(t,function(t,n){return t.start.length===n.start.length?0:t.start.length>n.start.length?-1:1})}function T(o){function a(t){return yt.error({message:t,pattern:o})}function t(t,n,e){if(o.format===undefined)return o.cmd!==undefined?it(o.cmd)?yt.value(e(o.cmd,o.value)):a(t+" pattern has non-string `cmd` parameter"):a(t+" pattern is missing both `format` and `cmd` parameters");var r=void 0;if(ft(o.format)){if(!O(o.format,it))return a(t+" pattern has non-string items in the `format` array");r=o.format}else{if(!it(o.format))return a(t+" pattern has non-string `format` parameter");r=[o.format]}return yt.value(n(r))}if(!ut(o))return a("Raw pattern is not an object");if(!it(o.start))return a("Raw pattern is missing `start` parameter");if(o.end===undefined)return o.replacement!==undefined?it(o.replacement)?0===o.start.length?a("Replacement pattern has empty `start` parameter"):yt.value({type:"inline-command",start:"",end:o.start,cmd:"mceInsertContent",value:o.replacement}):a("Replacement pattern has non-string `replacement` parameter"):0===o.start.length?a("Block pattern has empty `start` parameter"):t("Block",function(t){return{type:"block-format",start:o.start,format:t[0]}},function(t,n){return{type:"block-command",start:o.start,cmd:t,value:n}});if(!it(o.end))return a("Inline pattern has non-string `end` parameter");if(0===o.start.length&&0===o.end.length)return a("Inline pattern has empty `start` and `end` parameters");var e=o.start,r=o.end;return 0===r.length&&(r=e,e=""),t("Inline",function(t){return{type:"inline-format",start:e,end:r,format:t}},function(t,n){return{type:"inline-command",start:e,end:r,cmd:t,value:n}})}function R(t){return"block-command"===t.type?{start:t.start,cmd:t.cmd,value:t.value}:"block-format"===t.type?{start:t.start,format:t.format}:"inline-command"===t.type?"mceInsertContent"===t.cmd&&""===t.start?{start:t.end,replacement:t.value}:{start:t.start,end:t.end,cmd:t.cmd,value:t.value}:"inline-format"===t.type?{start:t.start,end:t.end,format:1===t.format.length?t.format[0]:t.format}:void 0}function N(t){return{inlinePatterns:b(t,x),blockPatterns:E(b(t,C))}}function P(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var e=kt.console;e&&(e.error?e.error.apply(e,t):e.log.apply(e,t))}function S(t){var n=function(t,n){return gt(t,n)?at.from(t[n]):at.none()}(t,"textpattern_patterns").getOr(Ot);if(!ft(n))return P("The setting textpattern_patterns should be an array"),{inlinePatterns:[],blockPatterns:[]};var e=w(v(n,T));return y(e.errors,function(t){return P(t.message,t.pattern)}),N(e.values)}function M(t){var n=t.getParam("forced_root_block","p");return!1===n?"":!0===n?"p":n}function A(t){return t.nodeType===f.Node.TEXT_NODE}function j(t,n,e,r){void 0===r&&(r=!0);var o=n.startContainer.parentNode,a=n.endContainer.parentNode;n.deleteContents(),r&&!e(n.startContainer)&&(A(n.startContainer)&&0===n.startContainer.data.length&&t.remove(n.startContainer),A(n.endContainer)&&0===n.endContainer.data.length&&t.remove(n.endContainer),Tt(t,o,e),o!==a&&Tt(t,a,e))}function B(t,n){var e=n.get(t);return ft(e)&&function(t){return 0===t.length?at.none():at.some(t[0])}(e).exists(function(t){return gt(t,"block")})}function D(t){return 0===t.start.length}function I(t,n){var e=at.from(t.dom.getParent(n.startContainer,t.dom.isBlock));return""===M(t)?e.orThunk(function(){return at.some(t.getBody())}):e}function _(t,n){return{element:t,offset:n}}function U(t,n){function e(t){for(var n=r[t]();n&&n.nodeType!==f.Node.TEXT_NODE;)n=r[t]();return n&&n.nodeType===f.Node.TEXT_NODE?at.some(n):at.none()}var r=new Et(t,n);return{next:function(){return e("next")},prev:function(){return e("prev")},prev2:function(){return e("prev2")}}}function q(t,n,e){return A(t)&&0<=n?at.some(_(t,n)):U(t,e).prev().map(function(t){return _(t,t.data.length)})}function L(t,n,e){if(A(n)&&(e<0||e>n.data.length))return[];for(var r=[e],o=n;o!==t&&o.parentNode;){for(var a=o.parentNode,i=0;i<a.childNodes.length;i++)if(a.childNodes[i]===o){r.push(i);break}o=a}return o===t?r.reverse():[]}function V(t,n,e,r,o){return{start:L(t,n,e),end:L(t,r,o)}}function W(t,n){var e=n.slice(),r=e.pop();return function(t,n,e){return y(t,function(t){e=n(e,t)}),e}(e,function(t,n){return t.bind(function(t){return at.from(t.childNodes[n])})},at.some(t)).bind(function(t){return A(t)&&0<=r&&t.data.length,at.some({node:t,offset:r})})}function X(n,e){return W(n,e.start).bind(function(t){var o=t.node,a=t.offset;return W(n,e.end).map(function(t){var n=t.node,e=t.offset,r=f.document.createRange();return r.setStart(o,a),r.setEnd(n,e),r})})}function z(r,o,t){U(o,o).next().each(function(e){Nt(e,t.start.length,o).each(function(t){var n=r.createRng();n.setStart(e,0),n.setEnd(t.element,t.offset),j(r,n,function(t){return t===o})})})}function F(t,n){var e=n.replace("\xa0"," ");return function(t,n){for(var e=0,r=t.length;e<r;e++){var o=t[e];if(n(o,e))return at.some(o)}return at.none()}(t,function(t){return 0===n.indexOf(t.start)||0===e.indexOf(t.start)})}function G(n,t){if(0!==t.length){var e=n.selection.getBookmark();y(t,function(t){return function(n,t){var e=n.dom,r=t.pattern,o=X(e.getRoot(),t.range).getOrDie("Unable to resolve path range");return I(n,o).each(function(t){"block-format"===r.type?B(r.format,n.formatter)&&n.undoManager.transact(function(){z(n.dom,t,r),n.formatter.apply(r.format)}):"block-command"===r.type&&n.undoManager.transact(function(){z(n.dom,t,r),n.execCommand(r.cmd,!1,r.value)})}),!0}(n,t)}),n.selection.moveToBookmark(e)}}function H(t,n){return t.create("span",{"data-mce-type":"bookmark",id:n})}function J(t,n){var e=t.createRng();return e.setStartAfter(n.start),e.setEndBefore(n.end),e}function K(t,n,e){var r=X(t.getRoot(),e).getOrDie("Unable to resolve path range"),o=r.startContainer,a=r.endContainer,i=0===r.endOffset?a:a.splitText(r.endOffset),u=0===r.startOffset?o:o.splitText(r.startOffset);return{prefix:n,end:i.parentNode.insertBefore(H(t,n+"-end"),i),start:u.parentNode.insertBefore(H(t,n+"-start"),u)}}function Q(t,n,e){Tt(t,t.get(n.prefix+"-end"),e),Tt(t,t.get(n.prefix+"-start"),e)}function Y(t,e,n,r,o,a){if(void 0===a&&(a=!1),0!==e.start.length||a)return q(n,r,o).bind(function(n){return function(t,n,e,r,o){var a=new Et(n,o);return Mt(t,n,at.some(e),r,a.prev,at.none())}(t,n.element,n.offset,function(f,c,s){return function(e,r,t,n){if(r===c)return e.abort();var o=t.substring(0,n.getOr(t.length)),a=o.lastIndexOf(s.charAt(s.length-1)),i=o.lastIndexOf(s);if(-1===i)return-1!==a?Rt(r,a+1-s.length,c).fold(function(){return e.kontinue()},function(t){var n=f.createRng();return n.setStart(t.element,t.offset),n.setEnd(r,a+1),n.toString()===s?e.finish(n):e.kontinue()}):e.kontinue();var u=f.createRng();return u.setStart(r,i),u.setEnd(r,i+s.length),e.finish(u)}}(t,o,e.start),o).fold(at.none,at.none,at.some).bind(function(t){if(a){if(t.endContainer===n.element&&t.endOffset===n.offset)return at.none();if(0===n.offset&&t.endContainer.textContent.length===t.endOffset)return at.none()}return at.some(t)})});var i=t.createRng();return i.setStart(n,r),i.setEnd(n,r),at.some(i)}function Z(a,i,u){var f=a.dom,c=f.getRoot(),s=u.pattern,l=u.position.element,d=u.position.offset;return Rt(l,d-u.pattern.end.length,i).bind(function(t){var e=V(c,t.element,t.offset,l,d);if(D(s))return at.some({matches:[{pattern:s,startRng:e,endRng:e}],position:t});var n=jt(a,u.remainingPatterns,t.element,t.offset,i),r=n.getOr({matches:[],position:t}),o=r.position;return Y(f,s,o.element,o.offset,i,n.isNone()).map(function(t){var n=function(t,n){return V(t,n.startContainer,n.startOffset,n.endContainer,n.endOffset)}(c,t);return{matches:r.matches.concat([{pattern:s,startRng:n,endRng:e}]),position:_(t.startContainer,t.startOffset)}})})}function $(n,t,e){n.selection.setRng(e),"inline-format"===t.type?y(t.format,function(t){n.formatter.apply(t)}):n.execCommand(t.cmd,!1,t.value)}function tt(o,t){var a=function(t){var n=(new Date).getTime();return t+"_"+Math.floor(1e9*Math.random())+ ++At+String(n)}("mce_textpattern"),i=k(t,function(t,n){var e=K(o,a+"_end"+t.length,n.endRng);return t.concat([u(u({},n),{endMarker:e})])},[]);return k(i,function(t,n){var e=i.length-t.length-1,r=D(n.pattern)?n.endMarker:K(o,a+"_start"+e,n.startRng);return t.concat([u(u({},n),{startMarker:r})])},[])}function nt(e,r,o){var a=e.selection.getRng();return!1===a.collapsed?[]:I(e,a).bind(function(t){var n=a.startOffset-(o?1:0);return jt(e,r,a.startContainer,n,t)}).fold(function(){return[]},function(t){return t.matches})}function et(r,t){if(0!==t.length){var o=r.dom,n=r.selection.getBookmark(),e=tt(o,t);y(e,function(t){function n(t){return t===e}var e=o.getParent(t.startMarker.start,o.isBlock);D(t.pattern)?function(t,n,e,r){var o=J(t.dom,e);j(t.dom,o,r),$(t,n,o)}(r,t.pattern,t.endMarker,n):function(t,n,e,r,o){var a=t.dom,i=J(a,r),u=J(a,e);j(a,u,o),j(a,i,o);var f={prefix:e.prefix,start:e.end,end:r.start},c=J(a,f);$(t,n,c)}(r,t.pattern,t.startMarker,t.endMarker,n),Q(o,t.endMarker,n),Q(o,t.startMarker,n)}),r.selection.moveToBookmark(n)}}function rt(t,n,e){for(var r=0;r<t.length;r++)if(e(t[r],n))return!0}var ot=function(e){function t(){return o}function n(t){return t(e)}var r=a(e),o={fold:function(t,n){return n(e)},is:function(t){return e===t},isSome:s,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return ot(t(e))},each:function(t){t(e)},bind:n,exists:n,forall:n,filter:function(t){return t(e)?o:l},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(t){return t.is(e)},equals_:function(t,n){return t.fold(c,function(t){return n(e,t)})}};return o},at={some:ot,none:e,from:function(t){return null===t||t===undefined?l:ot(t)}},it=p("string"),ut=p("object"),ft=p("array"),ct=p("function"),st=Array.prototype.slice,lt=Array.prototype.indexOf,dt=(ct(Array.from)&&Array.from,Object.keys),mt=Object.hasOwnProperty,gt=function(t,n){return mt.call(t,n)},pt=function(i){if(!ft(i))throw new Error("cases must be an array");if(0===i.length)throw new Error("there must be at least one case");var u=[],e={};return y(i,function(t,r){var n=dt(t);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],a=t[o];if(e[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!ft(a))throw new Error("case arguments must be an array");u.push(o),e[o]=function(){var t=arguments.length;if(t!==a.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+a.length+" ("+a+"), got "+t);for(var e=new Array(t),n=0;n<e.length;n++)e[n]=arguments[n];return{fold:function(){if(arguments.length!==i.length)throw new Error("Wrong number of arguments to fold. Expected "+i.length+", got "+arguments.length);return arguments[r].apply(null,e)},match:function(t){var n=dt(t);if(u.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+n.join(","));if(!O(u,function(t){return h(n,t)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+u.join(", "));return t[o].apply(null,e)},log:function(t){f.console.log(t,{constructors:u,constructor:o,params:e})}}}}),e},ht=(pt([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(e){return{is:function(t){return e===t},isValue:s,isError:c,getOr:a(e),getOrThunk:a(e),getOrDie:a(e),or:function(t){return ht(e)},orThunk:function(t){return ht(e)},fold:function(t,n){return n(e)},map:function(t){return ht(t(e))},mapError:function(t){return ht(e)},each:function(t){t(e)},bind:function(t){return t(e)},exists:function(t){return t(e)},forall:function(t){return t(e)},toOption:function(){return at.some(e)}}}),vt=function(e){return{is:c,isValue:c,isError:s,getOr:o,getOrThunk:function(t){return t()},getOrDie:function(){return function(t){return function(){throw new Error(t)}}(String(e))()},or:function(t){return t},orThunk:function(t){return t()},fold:function(t,n){return t(e)},map:function(t){return vt(e)},mapError:function(t){return vt(t(e))},each:n,bind:function(t){return vt(e)},exists:c,forall:s,toOption:at.none}},yt={value:ht,error:vt,fromOption:function(t,n){return t.fold(function(){return vt(n)},ht)}},bt=function(r){return{setPatterns:function(t){var n=w(v(t,T));if(0<n.errors.length){var e=n.errors[0];throw new Error(e.message+":\n"+JSON.stringify(e.pattern,null,2))}r.set(N(n.values))},getPatterns:function(){return function f(){for(var t=0,n=0,e=arguments.length;n<e;n++)t+=arguments[n].length;var r=Array(t),o=0;for(n=0;n<e;n++)for(var a=arguments[n],i=0,u=a.length;i<u;i++,o++)r[o]=a[i];return r}(v(r.get().inlinePatterns,R),v(r.get().blockPatterns,R))}}},kt="undefined"!=typeof f.window?f.window:Function("return this;")(),Ot=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],wt=tinymce.util.Tools.resolve("tinymce.util.Delay"),xt=tinymce.util.Tools.resolve("tinymce.util.VK"),Ct=tinymce.util.Tools.resolve("tinymce.util.Tools"),Et=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),Tt=function(t,n,e){if(n&&t.isEmpty(n)&&!e(n)){var r=n.parentNode;t.remove(n),Tt(t,r,e)}},Rt=function(t,e,r){if(!A(t))return at.none();var n=t.textContent;return 0<=e&&e<=n.length?at.some(_(t,e)):U(t,r).prev().bind(function(t){var n=t.textContent;return Rt(t,e+n.length,r)})},Nt=function(t,n,e){if(!A(t))return at.none();var r=t.textContent;return n<=r.length?at.some(_(t,n)):U(t,e).next().bind(function(t){return Nt(t,n-r.length,e)})},Pt=pt([{aborted:[]},{edge:["element"]},{success:["info"]}]),St=pt([{abort:[]},{kontinue:[]},{finish:["info"]}]),Mt=function(n,e,t,r,o,a){function i(){return a.fold(Pt.aborted,Pt.edge)}function u(){var t=o();return t?Mt(n,t,at.none(),r,o,at.some(e)):i()}if(function(t,n){return t.isBlock(n)||h(["BR","IMG","HR","INPUT"],n.nodeName)||"false"===t.getContentEditable(n)}(n,e))return i();if(A(e)){var f=e.textContent;return r(St,e,f,t).fold(Pt.aborted,function(){return u()},Pt.success)}return u()},At=0,jt=function(c,s,l,d,m){var g=c.dom;return q(l,d,g.getRoot()).bind(function(t){var n=g.createRng();n.setStart(m,0),n.setEnd(l,d);for(var e,r,o=n.toString(),a=0;a<s.length;a++){var i=s[a];if(e=o,r=i.end,function(t,n,e){return""===n||!(t.length<n.length)&&t.substr(e,e+n.length)===n}(e,r,e.length-r.length)){var u=s.slice();u.splice(a,1);var f=Z(c,m,{pattern:i,remainingPatterns:u,position:t});if(f.isSome())return f}}return at.none()})},Bt=function(e,t){if(!e.selection.isCollapsed())return!1;var r=nt(e,t.inlinePatterns,!1),o=function(r,t){var o=r.dom,n=r.selection.getRng();return I(r,n).filter(function(t){var n=M(r),e=""===n&&o.is(t,"body")||o.is(t,n);return null!==t&&e}).bind(function(n){var e=n.textContent;return F(t,e).map(function(t){return Ct.trim(e).length===t.start.length?[]:[{pattern:t,range:V(o.getRoot(),n,0,n,0)}]})}).getOr([])}(e,t.blockPatterns);return(0<o.length||0<r.length)&&(e.undoManager.add(),e.undoManager.extra(function(){e.execCommand("mceInsertNewLine")},function(){e.insertContent("\ufeff"),et(e,r),G(e,o);var t=e.selection.getRng(),n=q(t.startContainer,t.startOffset,e.dom.getRoot());e.execCommand("mceInsertNewLine"),n.each(function(t){"\ufeff"===t.element.data.charAt(t.offset-1)&&(t.element.deleteData(t.offset-1,1),Tt(e.dom,t.element.parentNode,function(t){return t===e.dom.getRoot()}))})}),!0)},Dt=function(t,n){var e=nt(t,n.inlinePatterns,!0);0<e.length&&t.undoManager.transact(function(){et(t,e)})},It=function(t,n){return rt(t,n,function(t,n){return t.charCodeAt(0)===n.charCode})},_t=function(t,n){return rt(t,n,function(t,n){return t===n.keyCode&&!1===xt.modifierPressed(n)})},Ut=function(n,e){var r=[",",".",";",":","!","?"],o=[32];n.on("keydown",function(t){13!==t.keyCode||xt.modifierPressed(t)||Bt(n,e.get())&&t.preventDefault()},!0),n.on("keyup",function(t){_t(o,t)&&Dt(n,e.get())}),n.on("keypress",function(t){It(r,t)&&wt.setEditorTimeout(n,function(){Dt(n,e.get())})})};!function qt(){t.add("textpattern",function(t){var n=r(S(t.settings));return Ut(t,n),bt(n)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/toc/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/toc/plugin.min.js
deleted file mode 100644 (file)
index b77709c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function e(n){return function(t){function e(){return t.setDisabled(n.readonly||!v.hasHeaders(n))}return e(),n.on("LoadContent SetContent change",e),function(){return n.on("LoadContent SetContent change",e)}}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),l=tinymce.util.Tools.resolve("tinymce.util.I18n"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),c=function(t){return t.getParam("toc_class","mce-toc")},d=function(t){var e=t.getParam("toc_header","h2");return/^h[1-6]$/.test(e)?e:"h2"},a=function(t){var e=parseInt(t.getParam("toc_depth","3"),10);return 1<=e&&e<=9?e:3},s=function(e){var n=0;return function(){var t=(new Date).getTime().toString(32);return e+t+(n++).toString(32)}}("mcetoc_"),f=function f(t){var e,n=[];for(e=1;e<=t;e++)n.push("h"+e);return n.join(",")},m=function(n){var o=c(n),t=d(n),e=f(a(n)),r=n.$(e);return r.length&&/^h[1-9]$/i.test(t)&&(r=r.filter(function(t,e){return!n.dom.hasClass(e.parentNode,o)})),i.map(r,function(t){return{id:t.id?t.id:s(),level:parseInt(t.nodeName.replace(/^H/i,""),10),title:n.$.text(t),element:t}})},o=function(t){var e,n,o,r,i="",c=m(t),a=function(t){var e,n=9;for(e=0;e<t.length;e++)if(t[e].level<n&&(n=t[e].level),1===n)return n;return n}(c)-1;if(!c.length)return"";for(i+=function(t,e){var n="</"+t+">";return"<"+t+' contenteditable="true">'+u.DOM.encode(e)+n}(d(t),l.translate("Table of Contents")),e=0;e<c.length;e++){if((o=c[e]).element.id=o.id,r=c[e+1]&&c[e+1].level,a===o.level)i+="<li>";else for(n=a;n<o.level;n++)i+="<ul><li>";if(i+='<a href="#'+o.id+'">'+o.title+"</a>",r!==o.level&&r)for(n=o.level;r<n;n--)i+="</li></ul><li>";else i+="</li>",r||(i+="</ul>");a=o.level}return i},r=function(t){var e=c(t),n=t.$("."+e);n.length&&t.undoManager.transact(function(){n.html(o(t))})},v={hasHeaders:function(t){return 0<m(t).length},insertToc:function(t){var e=c(t),n=t.$("."+e);!function(t,e){return!e.length||0<t.dom.getParents(e[0],".mce-offscreen-selection").length}(t,n)?r(t):t.insertContent(function(t){var e=o(t);return'<div class="'+t.dom.encode(c(t))+'" contenteditable="false">'+e+"</div>"}(t))},updateToc:r},n=function(t){t.addCommand("mceInsertToc",function(){v.insertToc(t)}),t.addCommand("mceUpdateToc",function(){v.updateToc(t)})},g=function(t){var n=t.$,o=c(t);t.on("PreProcess",function(t){var e=n("."+o,t.node);e.length&&(e.removeAttr("contentEditable"),e.find("[contenteditable]").removeAttr("contentEditable"))}),t.on("SetContent",function(){var t=n("."+o);t.length&&(t.attr("contentEditable",!1),t.children(":first-child").attr("contentEditable",!0))})},h=function(t){t.ui.registry.addButton("toc",{icon:"toc",tooltip:"Table of contents",onAction:function(){return t.execCommand("mceInsertToc")},onSetup:e(t)}),t.ui.registry.addButton("tocupdate",{icon:"reload",tooltip:"Update",onAction:function(){return t.execCommand("mceUpdateToc")}}),t.ui.registry.addMenuItem("toc",{icon:"toc",text:"Table of contents",onAction:function(){return t.execCommand("mceInsertToc")},onSetup:e(t)}),t.ui.registry.addContextToolbar("toc",{items:"tocupdate",predicate:function(e){return function(t){return t&&e.dom.is(t,"."+c(e))&&e.getBody().contains(t)}}(t),scope:"node",position:"node"})};!function p(){t.add("toc",function(t){n(t),h(t),g(t)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js
deleted file mode 100644 (file)
index d17bebf..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function n(n,e){return function(o){o.setActive(e.get());function t(t){return o.setActive(t.state)}return n.on("VisualBlocks",t),function(){return n.off("VisualBlocks",t)}}}var e=function(t){function o(){return n}var n=t;return{get:o,set:function(t){n=t},clone:function(){return e(o())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(t,o){t.fire("VisualBlocks",{state:o})},u=function(t,o,n){t.dom.toggleClass(t.getBody(),"mce-visualblocks"),n.set(!n.get()),i(t,n.get())},c=function(t,o,n){t.addCommand("mceVisualBlocks",function(){u(t,o,n)})},s=function(t){return t.getParam("visualblocks_default_state",!1,"boolean")},l=function(o,t,n){o.on("PreviewFormats AfterPreviewFormats",function(t){n.get()&&o.dom.toggleClass(o.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),o.on("init",function(){s(o)&&u(o,t,n)}),o.on("remove",function(){o.dom.removeClass(o.getBody(),"mce-visualblocks")})},r=function(t,o){t.ui.registry.addToggleButton("visualblocks",{icon:"visualblocks",tooltip:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:n(t,o)}),t.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:n(t,o)})};!function o(){t.add("visualblocks",function(t,o){var n=e(!1);c(t,o,n),r(t,n),l(t,o,n)})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/visualchars/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/visualchars/plugin.min.js
deleted file mode 100644 (file)
index 43dfd61..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(r){"use strict";function n(){}function u(n){return function(){return n}}function e(){return l}var t,o=function(n){function e(){return t}var t=n;return{get:e,set:function(n){t=n},clone:function(){return o(e())}}},i=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=function(n){return{isEnabled:function(){return n.get()}}},a=function(n,e){return n.fire("VisualChars",{state:e})},f=u(!1),s=u(!0),l=(t={fold:function(n,e){return n()},is:f,isSome:f,isNone:s,getOr:g,getOrThunk:m,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:g,orThunk:m,map:e,each:n,bind:e,exists:f,forall:s,filter:e,equals:d,equals_:d,toArray:function(){return[]},toString:u("none()")},Object.freeze&&Object.freeze(t),t);function d(n){return n.isNone()}function m(n){return n()}function g(n){return n}function N(e){return function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===e}}function v(n,e){for(var t=0,r=n.length;t<r;t++){e(n[t],t)}}function h(n){return n.dom().nodeValue}function p(n,e,t){!function(n,e,t){if(!(L(t)||P(t)||R(t)))throw r.console.error("Invalid call to Attr.set. Key ",e,":: Value ",t,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(e,t+"")}(n.dom(),e,t)}function E(n,e){n.dom().removeAttribute(e)}function T(n,e){var t=function(n,e){var t=n.dom().getAttribute(e);return null===t?undefined:t}(n,e);return t===undefined||""===t?[]:t.split(" ")}function O(n){return n.dom().classList!==undefined}function y(n,e){return function(n,e,t){var r=T(n,e).concat([t]);return p(n,e,r.join(" ")),!0}(n,"class",e)}function b(n,e){return function(n,e,t){var r=function(n,e){for(var t=[],r=0,o=n.length;r<o;r++){var u=n[r];e(u,r)&&t.push(u)}return t}(T(n,e),function(n){return n!==t});return 0<r.length?p(n,e,r.join(" ")):E(n,e),!1}(n,"class",e)}function D(n){0===(O(n)?n.dom().classList:function(n){return T(n,"class")}(n)).length&&E(n,"class")}function C(n,e){var t,r="";for(t in n)r+=t;return new RegExp("["+r+"]",e?"g":"")}function A(n){var e,t="";for(e in n)t&&(t+=","),t+="span.mce-"+n[e];return t}function _(n){return"span"===n.nodeName.toLowerCase()&&n.classList.contains("mce-nbsp-wrap")}function w(u,n){var e=W.filterDescendants(F.fromDom(n),W.isMatch);v(e,function(n){var e=n.dom().parentNode;if(_(e))!function(n,e){O(n)?n.dom().classList.add(e):y(n,e)}(F.fromDom(e),H.nbspClass);else{for(var t=W.replaceWithSpans(u.dom.encode(h(n))),r=u.dom.create("div",null,t),o=void 0;o=r.lastChild;)u.dom.insertAfter(o,n.dom());u.dom.remove(n.dom())}})}function M(e,n){var t=e.dom.select(H.selector,n);v(t,function(n){_(n)?function(n,e){O(n)?n.dom().classList.remove(e):b(n,e);D(n)}(F.fromDom(n),H.nbspClass):e.dom.remove(n,!0)})}function S(t,r){return function(e){e.setActive(r.get());function n(n){return e.setActive(n.state)}return t.on("VisualChars",n),function(){return t.off("VisualChars",n)}}}var k,x=function(t){function n(){return o}function e(n){return n(t)}var r=u(t),o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:s,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return x(n(t))},each:function(n){n(t)},bind:e,exists:e,forall:e,filter:function(n){return n(t)?o:l},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(f,function(n){return e(t,n)})}};return o},I=function(n){return null===n||n===undefined?l:x(n)},L=N("string"),P=N("boolean"),B=N("function"),R=N("number"),V=Array.prototype.slice,U=(B(Array.from)&&Array.from,r.Node.ATTRIBUTE_NODE,r.Node.CDATA_SECTION_NODE,r.Node.COMMENT_NODE,r.Node.DOCUMENT_NODE,r.Node.DOCUMENT_TYPE_NODE,r.Node.DOCUMENT_FRAGMENT_NODE,r.Node.ELEMENT_NODE,r.Node.TEXT_NODE),j=(r.Node.PROCESSING_INSTRUCTION_NODE,r.Node.ENTITY_REFERENCE_NODE,r.Node.ENTITY_NODE,r.Node.NOTATION_NODE,"undefined"!=typeof r.window?r.window:Function("return this;")(),k=U,function(n){return function(n){return n.dom().nodeType}(n)===k}),q=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:u(n)}},F={fromHtml:function(n,e){var t=(e||r.document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw r.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return q(t.childNodes[0])},fromTag:function(n,e){var t=(e||r.document).createElement(n);return q(t)},fromText:function(n,e){var t=(e||r.document).createTextNode(n);return q(t)},fromDom:q,fromPoint:function(n,e,t){var r=n.dom();return I(r.elementFromPoint(e,t)).map(q)}},G={"\xa0":"nbsp","\xad":"shy"},H={charMap:G,regExp:C(G),regExpGlobal:C(G,!0),selector:A(G),nbspClass:"mce-nbsp",charMapToRegExp:C,charMapToSelector:A},Y=function(n){return'<span data-mce-bogus="1" class="mce-'+H.charMap[n]+'">'+n+"</span>"},z=function(n,e){var t=[],r=function(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var u=n[o];r[o]=e(u,o)}return r}(n.dom().childNodes,F.fromDom);return v(r,function(n){e(n)&&(t=t.concat([n])),t=t.concat(z(n,e))}),t},W={isMatch:function(n){var e=h(n);return j(n)&&e!==undefined&&H.regExp.test(e)},filterDescendants:z,findParentElm:function(n,e){for(;n.parentNode;){if(n.parentNode===e)return n;n=n.parentNode}},replaceWithSpans:function(n){return n.replace(H.regExpGlobal,Y)}},K=w,X=M,J=function(n){var e=n.getBody(),t=n.selection.getBookmark(),r=W.findParentElm(n.selection.getNode(),e);r=r!==undefined?r:e,M(n,r),w(n,r),n.selection.moveToBookmark(t)},Q=function(n,e){var t,r=n.getBody(),o=n.selection;e.set(!e.get()),a(n,e.get()),t=o.getBookmark(),!0===e.get()?K(n,r):X(n,r),o.moveToBookmark(t)},Z=function(n,e){n.addCommand("mceVisualChars",function(){Q(n,e)})},$=tinymce.util.Tools.resolve("tinymce.util.Delay"),nn=function(e,t){var r=$.debounce(function(){J(e)},300);!1!==e.settings.forced_root_block&&e.on("keydown",function(n){!0===t.get()&&(13===n.keyCode?J(e):r())})},en=function(n){return n.getParam("visualchars_default_state",!1)},tn=function(e,t){e.on("init",function(){var n=!en(e);t.set(n),Q(e,t)})};!function rn(){i.add("visualchars",function(n){var e=o(!1);return Z(n,e),function(n,e){n.ui.registry.addToggleButton("visualchars",{tooltip:"Show invisible characters",icon:"visualchars",onAction:function(){return n.execCommand("mceVisualChars")},onSetup:S(n,e)}),n.ui.registry.addToggleMenuItem("visualchars",{text:"Show invisible characters",onAction:function(){return n.execCommand("mceVisualChars")},onSetup:S(n,e)})}(n,e),nn(n,e),tn(n,e),c(e)})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/plugins/wordcount/plugin.min.js b/website/js/vendor/tinymce/js/tinymce/plugins/wordcount/plugin.min.js
deleted file mode 100644 (file)
index f6f1fca..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(){"use strict";function t(){}function n(t){return function(){return t}}function r(t){return t}function e(){return U}var o,u=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=n(!1),c=n(!0),a=function(){return(a=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)},f="[-'\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]",s="[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]",l="[\xb1+*/,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]",g="[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]",p="\\r",d="\\n",h="[\x0B\f\x85\u2028\u2029]",y="[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]",C="[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]",v="[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]",w="[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22ff<>]",m="[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]",b=0,E=1,S=2,x=3,W=4,R=5,O=6,A=7,j=8,D=9,T=10,k=11,P=12,B=13,F=[new RegExp("[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]"),new RegExp(f),new RegExp(s),new RegExp(l),new RegExp(g),new RegExp(p),new RegExp(d),new RegExp(h),new RegExp(y),new RegExp(C),new RegExp(v),new RegExp(w),new RegExp("@")],N=new RegExp("^"+m+"$"),U=(o={fold:function(t,n){return t()},is:i,isSome:i,isNone:c,getOr:M,getOrThunk:z,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:n(null),getOrUndefined:n(undefined),or:M,orThunk:z,map:e,each:t,bind:e,exists:i,forall:c,filter:e,equals:_,equals_:_,toArray:function(){return[]},toString:n("none()")},Object.freeze&&Object.freeze(o),o);function _(t){return t.isNone()}function z(t){return t()}function M(t){return t}function q(t){for(var n=ot,e=rt.length,r=0;r<e;++r){var o=rt[r];if(o&&o.test(t)){n=r;break}}return n}function $(t){return function(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var u=t[o];r[o]=n(u,o)}return r}(t,function(e){var r={};return function(t){if(r[t])return r[t];var n=e(t);return r[t]=n}}(q))}function I(t,n){var e=function(t,n){var e;for(e=n;e<t.length&&!ut.test(t[e]);e++);return e}(t,n+1);return"://"===t.slice(n+1,e).join("").substr(0,3)?e:n}function Z(t,n){for(var e,r=n.getBlockElements(),o=n.getShortEndedElements(),u=[],i="",c=new at(t,t);t=c.next();)3===t.nodeType?i+=t.data:(r[(e=t).nodeName]||o[e.nodeName])&&i.length&&(u.push(i),i="");return i.length&&u.push(i),u}function G(t){return t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length}function H(t,n){var e=Z(t,n).join("\n");return ct(e.split(""),r).length}function J(t,n){var e=Z(t,n).join("");return G(e)}function K(t,n){var e=Z(t,n).join("").replace(/\s/g,"");return G(e)}function L(t,n){return function(){return n(t.getBody(),t.schema)}}function Q(t,n){return function(){return n(t.selection.getRng().cloneContents(),t.schema)}}function V(t){return L(t,H)}function X(t,n){!function(t,n){t.fire("wordCountUpdate",{wordCount:{words:n.body.getWordCount(),characters:n.body.getCharacterCount(),charactersWithoutSpaces:n.body.getCharacterCountWithoutSpaces()}})}(t,n)}function Y(t,n){t.windowManager.open({title:"Word Count",body:{type:"panel",items:[{type:"table",header:["Count","Document","Selection"],cells:[["Words",String(n.body.getWordCount()),String(n.selection.getWordCount())],["Characters (no spaces)",String(n.body.getCharacterCountWithoutSpaces()),String(n.selection.getCharacterCountWithoutSpaces())],["Characters",String(n.body.getCharacterCount()),String(n.selection.getCharacterCount())]]}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}]})}var tt,nt=(tt="function",function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===tt}),et=Array.prototype.slice,rt=(nt(Array.from)&&Array.from,F),ot=B,ut=/^\s+$/,it=N,ct=function(t,n,e){e=a(a({},{includeWhitespace:!1,includePunctuation:!1}),e);for(var r=[],o=[],u=0;u<t.length;u++){var i=n(t[u]);"\ufeff"!==i&&(r.push(t[u]),o.push(i))}return function(t,n,e,r){for(var o,u,i,c,a,f,s,l=[],g=[],p=0;p<e.length;++p)if(g.push(t[p]),a=c=void 0,f=(u=e)[i=p],s=u[i+1],!(i<0||i>u.length-1&&0!==i||f===b&&s===b||(a=u[i+2],f===b&&(s===S||s===E||s===P)&&a===b||(c=u[i-1],(f===S||f===E||s===P)&&s===b&&c===b||!(f!==W&&f!==b||s!==W&&s!==b)||(f===x||f===E)&&s===W&&c===W||f===W&&(s===x||s===E)&&a===W||f===j||f===D||c===j||c===D||s===j||s===D||f===R&&s===O||f!==A&&f!==R&&f!==O&&s!==A&&s!==R&&s!==O&&(f===T&&s===T||s===k&&(f===b||f===W||f===T||f===k)||f===k&&(s===b||s===W||s===T)||f===P))))){var d=n[p];if((r.includeWhitespace||!ut.test(d))&&(r.includePunctuation||!it.test(d))){var h=p-g.length+1,y=p+1,C=n.slice(h,y).join("");if("http"===(o=C)||"https"===o){var v=I(n,p),w=t.slice(y,v);Array.prototype.push.apply(g,w),p=v}l.push(g)}g=[]}return l}(r,o,$(o),e)},at=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),ft=tinymce.util.Tools.resolve("tinymce.util.Delay");!function st(e){void 0===e&&(e=300),u.add("wordcount",function(t){var n=function(t){return{body:{getWordCount:V(t),getCharacterCount:L(t,J),getCharacterCountWithoutSpaces:L(t,K)},selection:{getWordCount:Q(t,H),getCharacterCount:Q(t,J),getCharacterCountWithoutSpaces:Q(t,K)},getCount:V(t)}}(t);return function(t,n){t.ui.registry.addButton("wordcount",{tooltip:"Word count",icon:"character-count",onAction:function(){return Y(t,n)}}),t.ui.registry.addMenuItem("wordcount",{text:"Word count",icon:"character-count",onAction:function(){return Y(t,n)}})}(t,n),function(t,n,e){var r=ft.debounce(function(){return X(t,n)},e);t.on("init",function(){X(t,n),ft.setEditorTimeout(t,function(){t.on("SetContent BeforeAddUndo Undo Redo keyup",r)},0)})}(t,n,e),n})}()}();
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/content/dark/content.min.css b/website/js/vendor/tinymce/js/tinymce/skins/content/dark/content.min.css
deleted file mode 100644 (file)
index 764ae9a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table td,table th{border:1px solid #6d737b;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}td[data-mce-selected],th[data-mce-selected]{color:#333}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/content/default/content.min.css b/website/js/vendor/tinymce/js/tinymce/skins/content/default/content.min.css
deleted file mode 100644 (file)
index d122f02..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}
-hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}
-code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}
-.mce-content-body:not([dir=rtl]) 
-blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}
-.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/content/document/content.min.css b/website/js/vendor/tinymce/js/tinymce/skins/content/document/content.min.css
deleted file mode 100644 (file)
index 8346c96..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-@media screen{html{background:#f4f4f4}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/content/writer/content.min.css b/website/js/vendor/tinymce/js/tinymce/skins/content/writer/content.min.css
deleted file mode 100644 (file)
index 2983791..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css
deleted file mode 100644 (file)
index 961196d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css
deleted file mode 100644 (file)
index 019c112..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css
deleted file mode 100644 (file)
index 35f7dc0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
deleted file mode 100644 (file)
index 1e3be03..0000000
Binary files a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff and /dev/null differ
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css
deleted file mode 100644 (file)
index b110a57..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tox{box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #000;border-bottom:0;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .accessibility-issue--info h2{color:#fff}.tox .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .accessibility-issue--info a .tox-icon{color:#fff}.tox .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .accessibility-issue--warn h2{color:#fff}.tox .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .accessibility-issue--warn a .tox-icon{color:#fff}.tox .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .accessibility-issue--error h2{color:#fff}.tox .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .accessibility-issue--error a .tox-icon{color:#fff}.tox .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .accessibility-issue--success h2{color:#fff}.tox .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:none;background-repeat:none;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-weight:700;letter-spacing:1;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:none;background-repeat:none;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:inherit;color:contrast(inherit,#2a3746,#fff)}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:normal}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item[role=menuitemcheckbox]:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:normal}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:normal}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{font-size:20px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group h2{font-size:16px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}body.tox-dialog__disable-scroll{overflow:hidden}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex}.tox .tox-color-input .tox-textfield{border-radius:3px 0 0 3px;display:flex}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:0 3px 3px 0;border-style:solid;border-width:1px 1px 1px 0;box-shadow:none;box-sizing:border-box;cursor:pointer;display:flex;width:35px}.tox .tox-color-input span:focus{border-color:#207ab7}.tox[dir=rtl] .tox-color-input .tox-textfield{border-radius:0 3px 3px 0}.tox[dir=rtl] .tox-color-input span{border-radius:3px 0 0 3px;border-width:1px 0 1px 1px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:normal;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-selectfield select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux{z-index:1201}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:169px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:content-box;height:16px;width:16px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:normal;width:auto}.tox .tox-mbtn[disabled]{background-color:none;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus,.tox .tox-statusbar a:hover,.tox .tox-statusbar__path-item:focus,.tox .tox-statusbar__path-item:hover,.tox .tox-statusbar__wordcount:focus,.tox .tox-statusbar__wordcount:hover{cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1400}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:normal;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:normal}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;height:525px}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
deleted file mode 100644 (file)
index 3a45cac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css
deleted file mode 100644 (file)
index 961196d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/content.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/content.min.css
deleted file mode 100644 (file)
index 2a32f2f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css
deleted file mode 100644 (file)
index 35f7dc0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff
deleted file mode 100644 (file)
index 1e3be03..0000000
Binary files a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff and /dev/null differ
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/skin.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/skin.min.css
deleted file mode 100644 (file)
index 0feda24..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tox{box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #ccc;border-bottom:0;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .accessibility-issue--info h2{color:#207ab7}.tox .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .accessibility-issue--warn h2{color:#cc8500}.tox .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .accessibility-issue--error h2{color:#c00}.tox .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .accessibility-issue--error a .tox-icon{color:#c00}.tox .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .accessibility-issue--success h2{color:#78ab46}.tox .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:none;background-repeat:none;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-weight:700;letter-spacing:1;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:none;background-repeat:none;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:inherit;color:contrast(inherit,#222f3e,#fff)}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:normal}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item[role=menuitemcheckbox]:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:normal}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:normal}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{font-size:20px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group h2{font-size:16px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}body.tox-dialog__disable-scroll{overflow:hidden}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex}.tox .tox-color-input .tox-textfield{border-radius:3px 0 0 3px;display:flex}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:0 3px 3px 0;border-style:solid;border-width:1px 1px 1px 0;box-shadow:none;box-sizing:border-box;cursor:pointer;display:flex;width:35px}.tox .tox-color-input span:focus{border-color:#207ab7}.tox[dir=rtl] .tox-color-input .tox-textfield{border-radius:0 3px 3px 0}.tox[dir=rtl] .tox-color-input span{border-radius:3px 0 0 3px;border-width:1px 0 1px 1px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:normal;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-selectfield select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux{z-index:1201}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:169px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:content-box;height:16px;width:16px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:normal;width:auto}.tox .tox-mbtn[disabled]{background-color:none;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus,.tox .tox-statusbar a:hover,.tox .tox-statusbar__path-item:focus,.tox .tox-statusbar__path-item:hover,.tox .tox-statusbar__wordcount:focus,.tox .tox-statusbar__wordcount:hover{cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1400}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:normal;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:normal}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;height:525px}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css b/website/js/vendor/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css
deleted file mode 100644 (file)
index 3a45cac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/website/js/vendor/tinymce/js/tinymce/themes/mobile/theme.min.js b/website/js/vendor/tinymce/js/tinymce/themes/mobile/theme.min.js
deleted file mode 100644 (file)
index cfcbc5a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(l){"use strict";var x=function(){return(x=Object.assign||function(n){for(var e,t=1,r=arguments.length;t<r;t++)for(var o in e=arguments[t])Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}).apply(this,arguments)};function u(n,e){var t={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(n);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(n,r[o])&&(t[r[o]]=n[r[o]])}return t}function w(){}function y(n){return n}var i=function(t,r){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t(r.apply(null,n))}},b=function(n){return function(){return n}};function d(r){for(var o=[],n=1;n<arguments.length;n++)o[n-1]=arguments[n];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var t=o.concat(n);return r.apply(null,t)}}function m(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(null,n)}}function o(n){return function(){throw new Error(n)}}function t(n){return n()}function n(){return f}var e,c=b(!1),a=b(!0),f=(e={fold:function(n,e){return n()},is:c,isSome:c,isNone:a,getOr:g,getOrThunk:s,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:b(null),getOrUndefined:b(undefined),or:g,orThunk:s,map:n,each:w,bind:n,exists:c,forall:a,filter:n,equals:r,equals_:r,toArray:function(){return[]},toString:b("none()")},Object.freeze&&Object.freeze(e),e);function r(n){return n.isNone()}function s(n){return n()}function g(n){return n}function S(n,t){return jn(n,function(n,e){return{k:e,v:t(n,e)}})}function p(n,e){return Vn.call(n,e)}function h(n,e){var t=function(n,e){for(var t=0;t<n.length;t++){var r=n[t];if(r.test(e))return r}return undefined}(n,e);if(!t)return{major:0,minor:0};function r(n){return Number(e.replace(t,"$"+n))}return zn(r(1),r(2))}function v(n,e){return function(){return e===n}}function T(n,e){return function(){return e===n}}function O(e){return function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===e}}function k(n,e){return-1<function(n,e){return se.call(n,e)}(n,e)}function E(n,e){for(var t=0,r=n.length;t<r;t++){if(e(n[t],t))return!0}return!1}function C(n,e){for(var t=0,r=n.length;t<r;t++){e(n[t],t)}}function D(n,e){for(var t=[],r=0,o=n.length;r<o;r++){var i=n[r];e(i,r)&&t.push(i)}return t}function M(n,e,t){return function(n,e){for(var t=n.length-1;0<=t;t--){e(n[t],t)}}(n,function(n){t=e(t,n)}),t}function I(n,e,t){return C(n,function(n){t=e(t,n)}),t}function R(n,e){for(var t=0,r=n.length;t<r;t++){var o=n[t];if(e(o,t))return Fn.some(o)}return Fn.none()}function A(n,e){for(var t=0,r=n.length;t<r;t++){if(e(n[t],t))return Fn.some(t)}return Fn.none()}function F(n){for(var e=[],t=0,r=n.length;t<r;++t){if(!ie(n[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+n);le.apply(e,n[t])}return e}function B(n,e){var t=de(n,e);return F(t)}function V(n,e){for(var t=0,r=n.length;t<r;++t){if(!0!==e(n[t],t))return!1}return!0}function N(n){var e=fe.call(n,0);return e.reverse(),e}function j(n,e){return D(n,function(n){return!k(e,n)})}function _(n){return[n]}function P(n,e){var t=String(e).toLowerCase();return R(n,function(n){return n.search(t)})}function H(n,e){return-1!==n.indexOf(e)}function z(e){return function(n){return H(n,e)}}function L(){return be.get()}function G(n,e){Ye(n,n.element(),e,{})}function U(n,e,t){Ye(n,n.element(),e,t)}function $(n){G(n,Pe())}function W(n,e,t){Ye(n,e,t,{})}function X(t){var r,o=!1;return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return o||(o=!0,r=t.apply(null,n)),r}}function q(n){return n.dom().nodeName.toLowerCase()}function Y(e){return function(n){return function(n){return n.dom().nodeType}(n)===e}}function K(n){var e=tt(n)?n.dom().parentNode:n.dom();return e!==undefined&&null!==e&&e.ownerDocument.body.contains(e)}function J(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(e.length!==t.length)throw new Error('Wrong number of arguments to struct. Expected "['+e.length+']", got '+t.length+" arguments");var r={};return C(e,function(n,e){r[n]=b(t[e])}),r}}function Q(n){return n.slice(0).sort()}function Z(e,n){if(!ie(n))throw new Error("The "+e+" fields must be an array. Was: "+n+".");C(n,function(n){if(!re(n))throw new Error("The value "+n+" in the "+e+" fields was not a string.")})}function nn(o,i){var u=o.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return Z("required",o),Z("optional",i),function(n){var t=Q(n);R(t,function(n,e){return e<t.length-1&&n===t[e+1]}).each(function(n){throw new Error("The field: "+n+" occurs more than once in the combined fields: ["+t.join(", ")+"].")})}(u),function(e){var t=Bn(e);V(o,function(n){return k(t,n)})||function(n,e){throw new Error("All required keys ("+Q(n).join(", ")+") were not specified. Specified keys were: "+Q(e).join(", ")+".")}(o,t);var n=D(t,function(n){return!k(u,n)});0<n.length&&function(n){throw new Error("Unsupported keys for object: "+Q(n).join(", "))}(n);var r={};return C(o,function(n){r[n]=b(e[n])}),C(i,function(n){r[n]=b(Object.prototype.hasOwnProperty.call(e,n)?Fn.some(e[n]):Fn.none())}),r}}function en(n,e,t){return 0!=(n.compareDocumentPosition(e)&t)}function tn(n,e){var t=n.dom();if(t.nodeType!==ut)return!1;var r=t;if(r.matches!==undefined)return r.matches(e);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(e);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(e);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}function rn(n){return n.nodeType!==ut&&n.nodeType!==ct||0===n.childElementCount}function on(n,e){var t=e===undefined?l.document:e.dom();return rn(t)?[]:de(t.querySelectorAll(n),Je.fromDom)}function un(n,e){var t=e===undefined?l.document:e.dom();return rn(t)?Fn.none():Fn.from(t.querySelector(n)).map(Je.fromDom)}function cn(n,e){return n.dom()===e.dom()}function an(n){return Je.fromDom(n.dom().ownerDocument)}function fn(n){return Fn.from(n.dom().parentNode).map(Je.fromDom)}function sn(n,e){var t=n.dom().childNodes;return Fn.from(t[e]).map(Je.fromDom)}function ln(e,t){fn(e).each(function(n){n.dom().insertBefore(t.dom(),e.dom())})}function dn(n,e){(function(n){return Fn.from(n.dom().nextSibling).map(Je.fromDom)})(n).fold(function(){fn(n).each(function(n){ft(n,e)})},function(n){ln(n,e)})}function mn(e,t){(function(n){return sn(n,0)})(e).fold(function(){ft(e,t)},function(n){e.dom().insertBefore(t.dom(),n.dom())})}function gn(e,n){C(n,function(n){ft(e,n)})}function pn(n){n.dom().textContent="",C(at(n),function(n){st(n)})}function hn(n,e){ft(n.element(),e.element())}function vn(e,n){var t=e.components();!function(n){C(n.components(),function(n){return st(n.element())}),pn(n.element()),n.syncComponents()}(e);var r=j(t,n);C(r,function(n){lt(n),e.getSystem().removeFromWorld(n)}),C(n,function(n){n.getSystem().isConnected()?hn(e,n):(e.getSystem().addToWorld(n),hn(e,n),K(e.element())&&dt(n)),e.syncComponents()})}function yn(e){var n=fn(e.element()).bind(function(n){return e.getSystem().getByDom(n).toOption()});!function(n){lt(n),st(n.element()),n.getSystem().removeFromWorld(n)}(e),n.each(function(n){n.syncComponents()})}function bn(u){return function(){for(var n=new Array(arguments.length),e=0;e<n.length;e++)n[e]=arguments[e];if(0===n.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<n.length;r++){var o=n[r];for(var i in o)bt.call(o,i)&&(t[i]=u(t[i],o[i]))}return t}}function xn(n){return St.defaultedThunk(b(n))}function wn(e){return function(n){return p(n,e)?Fn.from(n[e]):Fn.none()}}function Sn(n,e){return wn(e)(n)}function Tn(n,e){var t={};return t[n]=e,t}function On(n,e){return function(n,t){var r={};return Nn(n,function(n,e){k(t,e)||(r[e]=n)}),r}(n,e)}function kn(n,e){return function(e,t){return function(n){return p(n,e)?n[e]:t}}(n,e)}function En(n,e){return Tn(n,e)}function Cn(n){return function(n){var e={};return C(n,function(n){e[n.key]=n.value}),e}(n)}function Dn(n,e){var t=function(n){var e=[],t=[];return C(n,function(n){n.fold(function(n){e.push(n)},function(n){t.push(n)})}),{errors:e,values:t}}(n);return 0<t.errors.length?function(n){return vt.error(F(n))}(t.errors):function(n,e){return 0===n.length?vt.value(e):vt.value(xt(e,wt.apply(undefined,n)))}(t.values,e)}function Mn(n,e){return function(n,e){return p(n,e)&&n[e]!==undefined&&null!==n[e]}(n,e)}var In,Rn,An=function(t){function n(){return o}function e(n){return n(t)}var r=b(t),o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:a,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return An(n(t))},each:function(n){n(t)},bind:e,exists:e,forall:e,filter:function(n){return n(t)?o:f},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(c,function(n){return e(t,n)})}};return o},Fn={some:An,none:n,from:function(n){return null===n||n===undefined?f:An(n)}},Bn=Object.keys,Vn=Object.hasOwnProperty,Nn=function(n,e){for(var t=Bn(n),r=0,o=t.length;r<o;r++){var i=t[r];e(n[i],i)}},jn=function(n,r){var o={};return Nn(n,function(n,e){var t=r(n,e);o[t.k]=t.v}),o},_n=function(n,t){var r=[];return Nn(n,function(n,e){r.push(t(n,e))}),r},Pn=function(n){function e(){return t}var t=n;return{get:e,set:function(n){t=n},clone:function(){return Pn(e())}}},Hn=function(){return zn(0,0)},zn=function(n,e){return{major:n,minor:e}},Ln={nu:zn,detect:function(n,e){var t=String(e).toLowerCase();return 0===n.length?Hn():h(n,t)},unknown:Hn},Gn="Edge",Un="Chrome",$n="Opera",Wn="Firefox",Xn="Safari",qn=function(n){var e=n.current;return{current:e,version:n.version,isEdge:v(Gn,e),isChrome:v(Un,e),isIE:v("IE",e),isOpera:v($n,e),isFirefox:v(Wn,e),isSafari:v(Xn,e)}},Yn={unknown:function(){return qn({current:undefined,version:Ln.unknown()})},nu:qn,edge:b(Gn),chrome:b(Un),ie:b("IE"),opera:b($n),firefox:b(Wn),safari:b(Xn)},Kn="Windows",Jn="Android",Qn="Linux",Zn="Solaris",ne="FreeBSD",ee=function(n){var e=n.current;return{current:e,version:n.version,isWindows:T(Kn,e),isiOS:T("iOS",e),isAndroid:T(Jn,e),isOSX:T("OSX",e),isLinux:T(Qn,e),isSolaris:T(Zn,e),isFreeBSD:T(ne,e)}},te={unknown:function(){return ee({current:undefined,version:Ln.unknown()})},nu:ee,windows:b(Kn),ios:b("iOS"),android:b(Jn),linux:b(Qn),osx:b("OSX"),solaris:b(Zn),freebsd:b(ne)},re=O("string"),oe=O("object"),ie=O("array"),ue=O("boolean"),ce=O("function"),ae=O("number"),fe=Array.prototype.slice,se=Array.prototype.indexOf,le=Array.prototype.push,de=function(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var i=n[o];r[o]=e(i,o)}return r},me=(ce(Array.from)&&Array.from,function(n,t){return P(n,t).map(function(n){var e=Ln.detect(n.versionRegexes,t);return{current:n.name,version:e}})}),ge=function(n,t){return P(n,t).map(function(n){var e=Ln.detect(n.versionRegexes,t);return{current:n.name,version:e}})},pe=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,he=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(n){return H(n,"edge/")&&H(n,"chrome")&&H(n,"safari")&&H(n,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,pe],search:function(n){return H(n,"chrome")&&!H(n,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(n){return H(n,"msie")||H(n,"trident")}},{name:"Opera",versionRegexes:[pe,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:z("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:z("firefox")},{name:"Safari",versionRegexes:[pe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(n){return(H(n,"safari")||H(n,"mobile/"))&&H(n,"applewebkit")}}],ve=[{name:"Windows",search:z("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(n){return H(n,"iphone")||H(n,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:z("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:z("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:z("linux"),versionRegexes:[]},{name:"Solaris",search:z("sunos"),versionRegexes:[]},{name:"FreeBSD",search:z("freebsd"),versionRegexes:[]}],ye={browsers:b(he),oses:b(ve)},be=Pn(function(n,e){var t=ye.browsers(),r=ye.oses(),o=me(t,n).fold(Yn.unknown,Yn.nu),i=ge(r,n).fold(te.unknown,te.nu);return{browser:o,os:i,deviceType:function(n,e,t,r){var o=n.isiOS()&&!0===/ipad/i.test(t),i=n.isiOS()&&!o,u=n.isiOS()||n.isAndroid(),c=u||r("(pointer:coarse)"),a=o||!i&&u&&r("(min-device-width:768px)"),f=i||u&&!a,s=e.isSafari()&&n.isiOS()&&!1===/safari/i.test(t),l=!f&&!a&&!s;return{isiPad:b(o),isiPhone:b(i),isTablet:b(a),isPhone:b(f),isTouch:b(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:b(s),isDesktop:b(l)}}(i,o,n,e)}}(l.navigator.userAgent,function(n){return l.window.matchMedia(n).matches})),xe=b("touchstart"),we=b("touchmove"),Se=b("touchend"),Te=b("mousedown"),Oe=b("mousemove"),ke=b("mouseup"),Ee=b("mouseover"),Ce=b("keydown"),De=b("keyup"),Me=b("input"),Ie=b("change"),Re=b("click"),Ae=b("transitionend"),Fe=b("selectstart"),Be={tap:b("alloy.tap")},Ve=b("alloy.focus"),Ne=b("alloy.blur.post"),je=b("alloy.paste.post"),_e=b("alloy.receive"),Pe=b("alloy.execute"),He=b("alloy.focus.item"),ze=Be.tap,Le=b("alloy.longpress"),Ge=b("alloy.system.init"),Ue=b("alloy.system.attached"),$e=b("alloy.system.detached"),We=b("alloy.focusmanager.shifted"),Xe=b("alloy.highlight"),qe=b("alloy.dehighlight"),Ye=function(n,e,t,r){var o=x({target:e},r);n.getSystem().triggerEvent(t,e,S(o,b))},Ke=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:b(n)}},Je={fromHtml:function(n,e){var t=(e||l.document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw l.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return Ke(t.childNodes[0])},fromTag:function(n,e){var t=(e||l.document).createElement(n);return Ke(t)},fromText:function(n,e){var t=(e||l.document).createTextNode(n);return Ke(t)},fromDom:Ke,fromPoint:function(n,e,t){var r=n.dom();return Fn.from(r.elementFromPoint(e,t)).map(Ke)}},Qe=(l.Node.ATTRIBUTE_NODE,l.Node.CDATA_SECTION_NODE,l.Node.COMMENT_NODE,l.Node.DOCUMENT_NODE),Ze=(l.Node.DOCUMENT_TYPE_NODE,l.Node.DOCUMENT_FRAGMENT_NODE,l.Node.ELEMENT_NODE),nt=l.Node.TEXT_NODE,et=(l.Node.PROCESSING_INSTRUCTION_NODE,l.Node.ENTITY_REFERENCE_NODE,l.Node.ENTITY_NODE,l.Node.NOTATION_NODE,"undefined"!=typeof l.window?l.window:Function("return this;")(),Y(Ze)),tt=Y(nt),rt=X(function(){return ot(Je.fromDom(l.document))}),ot=function(n){var e=n.dom().body;if(null===e||e===undefined)throw new Error("Body is not available yet");return Je.fromDom(e)},it=function(n,e){return en(n,e,l.Node.DOCUMENT_POSITION_CONTAINED_BY)},ut=Ze,ct=Qe,at=(L().browser.isIE(),function(n){return de(n.dom().childNodes,Je.fromDom)}),ft=(J("element","offset"),function(n,e){n.dom().appendChild(e.dom())}),st=function(n){var e=n.dom();null!==e.parentNode&&e.parentNode.removeChild(e)},lt=function(n){G(n,$e());var e=n.components();C(e,lt)},dt=function(n){var e=n.components();C(e,dt),G(n,Ue())},mt=function(n,e,t){n.getSystem().addToWorld(e),t(n.element(),e.element()),K(n.element())&&dt(e),n.syncComponents()},gt=function(n,e,t){t(n,e.element());var r=at(e.element());C(r,function(n){e.getByDom(n).each(dt)})},pt=function(t){return{is:function(n){return t===n},isValue:a,isError:c,getOr:b(t),getOrThunk:b(t),getOrDie:b(t),or:function(n){return pt(t)},orThunk:function(n){return pt(t)},fold:function(n,e){return e(t)},map:function(n){return pt(n(t))},mapError:function(n){return pt(t)},each:function(n){n(t)},bind:function(n){return n(t)},exists:function(n){return n(t)},forall:function(n){return n(t)},toOption:function(){return Fn.some(t)}}},ht=function(t){return{is:c,isValue:c,isError:a,getOr:y,getOrThunk:function(n){return n()},getOrDie:function(){return o(String(t))()},or:function(n){return n},orThunk:function(n){return n()},fold:function(n,e){return n(t)},map:function(n){return ht(t)},mapError:function(n){return ht(n(t))},each:w,bind:function(n){return ht(t)},exists:c,forall:a,toOption:Fn.none}},vt={value:pt,error:ht,fromOption:function(n,e){return n.fold(function(){return ht(e)},pt)}},yt=function(u){if(!ie(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var c=[],t={};return C(u,function(n,r){var e=Bn(n);if(1!==e.length)throw new Error("one and only one name per case");var o=e[0],i=n[o];if(t[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!ie(i))throw new Error("case arguments must be an array");c.push(o),t[o]=function(){var n=arguments.length;if(n!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+n);for(var t=new Array(n),e=0;e<t.length;e++)t[e]=arguments[e];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[r].apply(null,t)},match:function(n){var e=Bn(n);if(c.length!==e.length)throw new Error("Wrong number of arguments to match. Expected: "+c.join(",")+"\nActual: "+e.join(","));if(!V(c,function(n){return k(e,n)}))throw new Error("Not all branches were specified when using match. Specified: "+e.join(", ")+"\nRequired: "+c.join(", "));return n[o].apply(null,t)},log:function(n){l.console.log(n,{constructors:c,constructor:o,params:t})}}}}),t},bt=Object.prototype.hasOwnProperty,xt=bn(function(n,e){return oe(n)&&oe(e)?xt(n,e):e}),wt=bn(function(n,e){return e}),St=yt([{strict:[]},{defaultedThunk:["fallbackThunk"]},{asOption:[]},{asDefaultedOptionThunk:["fallbackThunk"]},{mergeWithThunk:["baseThunk"]}]),Tt=St.strict,Ot=St.asOption,kt=St.defaultedThunk,Et=St.mergeWithThunk,Ct=(yt([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(n){return wn(n)}),Dt=function(n,e){return Sn(n,e)};(Rn=In=In||{})[Rn.Error=0]="Error",Rn[Rn.Value=1]="Value";function Mt(n,e,t){return n.stype===In.Error?e(n.serror):t(n.svalue)}function It(n){return{stype:In.Value,svalue:n}}function Rt(n){return{stype:In.Error,serror:n}}function At(n){return i(dr,F)(n)}function Ft(n){return oe(n)&&100<Bn(n).length?" removed due to size":JSON.stringify(n,null,2)}function Bt(n,e){return dr([{path:n,getErrorInfo:e}])}function Vt(n,e,t){return Sn(e,t).fold(function(){return function(n,e,t){return Bt(n,function(){return'Could not find valid *strict* value for "'+e+'" in '+Ft(t)})}(n,t,e)},sr)}function Nt(n,e,t){var r=Sn(n,e).fold(function(){return t(n)},y);return sr(r)}function jt(u,c,n,a){return n.fold(function(r,t,n,o){function i(n){var e=o.extract(u.concat([r]),a,n);return pr(e,function(n){return Tn(t,a(n))})}function e(n){return n.fold(function(){var n=Tn(t,a(Fn.none()));return sr(n)},function(n){var e=o.extract(u.concat([r]),a,n);return pr(e,function(n){return Tn(t,a(Fn.some(n)))})})}return n.fold(function(){return mr(Vt(u,c,r),i)},function(n){return mr(Nt(c,r,n),i)},function(){return mr(function(n,e){return sr(Sn(n,e))}(c,r),e)},function(n){return mr(function(e,n,t){var r=Sn(e,n).map(function(n){return!0===n?t(e):n});return sr(r)}(c,r,n),e)},function(n){var e=n(c),t=pr(Nt(c,r,b({})),function(n){return xt(e,n)});return mr(t,i)})},function(n,e){var t=e(c);return sr(Tn(n,a(t)))})}function _t(r){return{extract:function(e,n,t){return gr(r(t,n),function(n){return function(n,e){return Bt(n,function(){return e})}(e,n)})},toString:function(){return"val"},toDsl:function(){return br.itemOf(r)}}}function Pt(n){var i=Sr(n),u=M(n,function(e,n){return n.fold(function(n){return xt(e,En(n,!0))},b(e))},{});return{extract:function(n,e,t){var r=ue(t)?[]:function(e){var n=Bn(e);return D(n,function(n){return Mn(e,n)})}(t),o=D(r,function(n){return!Mn(u,n)});return 0===o.length?i.extract(n,e,t):function(n,e){return Bt(n,function(){return"There are unsupported fields: ["+e.join(", ")+"] specified"})}(n,o)},toString:i.toString,toDsl:i.toDsl}}function Ht(t,i){function u(n,e){return function(o){return{extract:function(t,r,n){var e=de(n,function(n,e){return o.extract(t.concat(["["+e+"]"]),r,n)});return yr(e)},toString:function(){return"array("+o.toString()+")"},toDsl:function(){return br.arrOf(o)}}}(_t(t)).extract(n,y,e)}return{extract:function(t,r,o){var n=Bn(o),e=u(t,n);return mr(e,function(n){var e=de(n,function(n){return wr.field(n,n,Tt(),i)});return Sr(e).extract(t,r,o)})},toString:function(){return"setOf("+i.toString()+")"},toDsl:function(){return br.setOf(t,i)}}}function zt(e,t,r,n,o){return Dt(n,o).fold(function(){return function(n,e,t){return Bt(n,function(){return'The chosen schema: "'+t+'" did not exist in branches: '+Ft(e)})}(e,n,o)},function(n){return n.extract(e.concat(["branch: "+o]),t,r)})}function Lt(n,o){return{extract:function(e,t,r){return Dt(r,n).fold(function(){return function(n,e){return Bt(n,function(){return'Choice schema did not contain choice key: "'+e+'"'})}(e,n)},function(n){return zt(e,t,r,o,n)})},toString:function(){return"chooseOn("+n+"). Possible values: "+Bn(o)},toDsl:function(){return br.choiceOf(n,o)}}}function Gt(e){return _t(function(n){return e(n).fold(dr,sr)})}function Ut(e,n){return Ht(function(n){return ar(e(n))},n)}function $t(n,e,t){return fr(function(n,e,t,r){var o=e.extract([n],t,r);return hr(o,function(n){return{input:r,errors:n}})}(n,e,y,t))}function Wt(n){return n.fold(function(n){throw new Error(Cr(n))},y)}function Xt(n,e,t){return Wt($t(n,e,t))}function qt(n,e){return Lt(n,S(e,Sr))}function Yt(n){return kr(n,n,Tt(),Tr())}function Kt(n,e){return kr(n,n,Tt(),e)}function Jt(n,e){return kr(n,n,Tt(),Sr(e))}function Qt(n){return kr(n,n,Ot(),Tr())}function Zt(n,e){return kr(n,n,Ot(),e)}function nr(n,e){return Zt(n,Sr(e))}function er(n,e){return Zt(n,Pt(e))}function tr(n,e){return kr(n,n,xn(e),Tr())}function rr(n,e,t){return kr(n,n,xn(e),t)}function or(n,e){return Or(n,e)}function ir(n,e){return cn(n.element(),e.event().target())}var ur,cr,ar=function(n){return n.fold(Rt,It)},fr=function(n){return Mt(n,vt.error,vt.value)},sr=It,lr=function(n){var e=[],t=[];return C(n,function(n){Mt(n,function(n){return t.push(n)},function(n){return e.push(n)})}),{values:e,errors:t}},dr=Rt,mr=function(n,e){return n.stype===In.Value?e(n.svalue):n},gr=function(n,e){return n.stype===In.Error?e(n.serror):n},pr=function(n,e){return n.stype===In.Value?{stype:In.Value,svalue:e(n.svalue)}:n},hr=function(n,e){return n.stype===In.Error?{stype:In.Error,serror:e(n.serror)}:n},vr=function(n,e){var t=lr(n);return 0<t.errors.length?At(t.errors):function(n,e){return 0<n.length?sr(xt(e,wt.apply(undefined,n))):sr(e)}(t.values,e)},yr=function(n){var e=lr(n);return 0<e.errors.length?At(e.errors):sr(e.values)},br=yt([{setOf:["validator","valueType"]},{arrOf:["valueType"]},{objOf:["fields"]},{itemOf:["validator"]},{choiceOf:["key","branches"]},{thunk:["description"]},{func:["args","outputSchema"]}]),xr=yt([{field:["name","presence","type"]},{state:["name"]}]),wr=yt([{field:["key","okey","presence","prop"]},{state:["okey","instantiator"]}]),Sr=function(r){return{extract:function(n,e,t){return function(e,t,n,r){var o=de(n,function(n){return jt(e,t,n,r)});return vr(o,{})}(n,t,r,e)},toString:function(){return"obj{\n"+de(r,function(n){return n.fold(function(n,e,t,r){return n+" -> "+r.toString()},function(n,e){return"state("+n+")"})}).join("\n")+"}"},toDsl:function(){return br.objOf(de(r,function(n){return n.fold(function(n,e,t,r){return xr.field(n,t,r)},function(n,e){return xr.state(n)})}))}}},Tr=b(_t(sr)),Or=wr.state,kr=wr.field,Er=_t(sr),Cr=function(n){return"Errors: \n"+function(n){var e=10<n.length?n.slice(0,10).concat([{path:[],getErrorInfo:function(){return"... (only showing first ten failures)"}}]):n;return de(e,function(n){return"Failed path: ("+n.path.join(" > ")+")\n"+n.getErrorInfo()})}(n.errors)+"\n\nInput object: "+Ft(n.input)},Dr=b(Er),Mr=(ur=ce,cr="function",_t(function(n){var e=typeof n;return ur(n)?sr(n):dr("Expected type: "+cr+" but got: "+e)}));function Ir(n,e,t,r,o){return n(t,r)?Fn.some(t):ce(o)&&o(t)?Fn.none():e(t,r,o)}function Rr(n,e,t){for(var r=n.dom(),o=ce(t)?t:b(!1);r.parentNode;){r=r.parentNode;var i=Je.fromDom(r);if(e(i))return Fn.some(i);if(o(i))break}return Fn.none()}function Ar(n,e,t){return Ir(function(n,e){return e(n)},Rr,n,e,t)}function Fr(n,o){var i=function(n){for(var e=0;e<n.childNodes.length;e++){var t=Je.fromDom(n.childNodes[e]);if(o(t))return Fn.some(t);var r=i(n.childNodes[e]);if(r.isSome())return r}return Fn.none()};return i(n.dom())}function Br(n){if(!Mn(n,"can")&&!Mn(n,"abort")&&!Mn(n,"run"))throw new Error("EventHandler defined by: "+JSON.stringify(n,null,2)+" does not have can, abort, or run!");return Xt("Extracting event.handler",Pt([tr("can",b(!0)),tr("abort",b(!1)),tr("run",w)]),n)}function Vr(t){var n=function(e,r){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return I(e,function(n,e){return n&&r(e).apply(undefined,t)},!0)}}(t,function(n){return n.can}),e=function(e,r){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return I(e,function(n,e){return n||r(e).apply(undefined,t)},!1)}}(t,function(n){return n.abort});return Br({can:n,abort:e,run:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];C(t,function(n){n.run.apply(undefined,e)})}})}function Nr(n){return Cn(n)}function jr(n,e){return{key:n,value:Br({abort:e})}}function _r(n,e){return{key:n,value:Br({run:e})}}function Pr(n,t,r){return{key:n,value:Br({run:function(n,e){t.apply(undefined,[n,e].concat(r))}})}}function Hr(n){return function(t){return{key:n,value:Br({run:function(n,e){ir(n,e)&&t(n,e)}})}}}function zr(n,e,t){return function(t,r){return _r(t,function(n,e){n.getSystem().getByUid(r).each(function(n){!function(n,e,t,r){n.getSystem().triggerEvent(t,e,r.event())}(n,n.element(),t,e)})})}(n,e.partUids[t])}function Lr(n){return _r(n,function(n,e){e.cut()})}function Gr(n,e){var t=n.toString(),r=t.indexOf(")")+1,o=t.indexOf("("),i=t.substring(o+1,r-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:e,parameters:Io(i)}},n}function Ur(n){return{classes:n.classes!==undefined?n.classes:[],attributes:n.attributes!==undefined?n.attributes:{},styles:n.styles!==undefined?n.styles:{}}}function $r(t,r,o){return Do(function(n,e){o(n,t,r)})}function Wr(o,i,u){return function(n,e,t){var r=t.toString(),o=r.indexOf(")")+1,i=r.indexOf("("),u=r.substring(i+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:e,parameters:Io(u.slice(0,1).concat(u.slice(3)))}},n}(function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var r=[t].concat(n);return t.config({name:b(o)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+o+". Using API: "+u)},function(n){var e=Array.prototype.slice.call(r,1);return i.apply(undefined,[t,n.config,n.state].concat(e))})},u,i)}function Xr(n){return{key:n,value:undefined}}function qr(n){var e=Xt("Creating behaviour: "+n.name,Vo,n);return function(n,e,t,r,o,i){var u=Pt(n),c=nr(e,[er("config",n)]);return Ro(u,c,e,t,r,o,i)}(e.fields,e.name,e.active,e.apis,e.extra,e.state)}function Yr(n,e,t){if(!(re(t)||ue(t)||ae(t)))throw l.console.error("Invalid call to Attr.set. Key ",e,":: Value ",t,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(e,t+"")}function Kr(n,e,t){Yr(n.dom(),e,t)}function Jr(n,e){var t=n.dom();Nn(e,function(n,e){Yr(t,e,n)})}function Qr(n,e){var t=n.dom().getAttribute(e);return null===t?undefined:t}function Zr(n,e){var t=n.dom();return!(!t||!t.hasAttribute)&&t.hasAttribute(e)}function no(n,e){n.dom().removeAttribute(e)}function eo(n,e){var t=Qr(n,e);return t===undefined||""===t?[]:t.split(" ")}function to(n){return n.dom().classList!==undefined}function ro(n,e){return function(n,e,t){var r=eo(n,e).concat([t]);return Kr(n,e,r.join(" ")),!0}(n,"class",e)}function oo(n,e){return function(n,e,t){var r=D(eo(n,e),function(n){return n!==t});return 0<r.length?Kr(n,e,r.join(" ")):no(n,e),!1}(n,"class",e)}function io(n,e){to(n)?n.dom().classList.add(e):ro(n,e)}function uo(n){0===(to(n)?n.dom().classList:function(n){return eo(n,"class")}(n)).length&&no(n,"class")}function co(n,e){to(n)?n.dom().classList.remove(e):oo(n,e),uo(n)}function ao(n,e){return to(n)&&n.dom().classList.contains(e)}function fo(n,e,t){co(n,t),io(n,e)}function so(n){n.dom().focus()}function lo(n){n.dom().blur()}function mo(n){var e=n!==undefined?n.dom():l.document;return Fn.from(e.activeElement).map(Je.fromDom)}function go(e){return mo(an(e)).filter(function(n){return e.dom().contains(n.dom())})}function po(n){return n.dom().innerHTML}function ho(n,e){var t=an(n).dom(),r=Je.fromDom(t.createDocumentFragment()),o=function(n,e){var t=(e||l.document).createElement("div");return t.innerHTML=n,at(Je.fromDom(t))}(e,t);gn(r,o),pn(n),ft(n,r)}function vo(n){return function(n,e){return Je.fromDom(n.dom().cloneNode(e))}(n,!1)}function yo(n){return function(n){var e=Je.fromTag("div"),t=Je.fromDom(n.dom().cloneNode(!0));return ft(e,t),po(e)}(vo(n))}function bo(n){return yo(n)}function xo(n){for(var e=[],t=function(n){e.push(n)},r=0;r<n.length;r++)n[r].each(t);return e}function wo(n,e){for(var t=0;t<n.length;t++){var r=e(n[t],t);if(r.isSome())return r}return Fn.none()}var So,To,Oo,ko=function(n,e,t){return Ar(n,function(n){return e(n).isSome()},t).bind(e)},Eo=Hr(Ue()),Co=Hr($e()),Do=Hr(Ge()),Mo=(So=Pe(),function(n){return _r(So,n)}),Io=function(n){return de(n,function(n){return function(n,e){return function(n,e,t){return""===e||!(n.length<e.length)&&n.substr(t,t+e.length)===e}(n,e,n.length-e.length)}(n,"/*")?n.substring(0,n.length-"/*".length):n})},Ro=function(t,n,r,o,e,i,u){function c(n){return Mn(n,r)?n[r]():Fn.none()}var a=S(e,function(n,e){return Wr(r,n,e)}),f=S(i,function(n,e){return Gr(n,e)}),s=x(x(x({},f),a),{revoke:d(Xr,r),config:function(n){var e=Xt(r+"-config",t,n);return{key:r,value:{config:e,me:s,configAsRaw:X(function(){return Xt(r+"-config",t,n)}),initialConfig:n,state:u}}},schema:function(){return n},exhibit:function(n,t){return c(n).bind(function(e){return Dt(o,"exhibit").map(function(n){return n(t,e.config,e.state)})}).getOr(Ur({}))},name:function(){return r},handlers:function(n){return c(n).map(function(n){return kn("events",function(n,e){return{}})(o)(n.config,n.state)}).getOr({})}});return s},Ao={init:function(){return Fo({readState:function(){return"No State required"}})}},Fo=function(n){return n},Bo=function(n){return Cn(n)},Vo=Pt([Yt("fields"),Yt("name"),tr("active",{}),tr("apis",{}),tr("state",Ao),tr("extra",{})]),No=Pt([Yt("branchKey"),Yt("branches"),Yt("name"),tr("active",{}),tr("apis",{}),tr("state",Ao),tr("extra",{})]),jo=b(undefined),_o=/* */Object.freeze({toAlpha:function(n,e,t){fo(n.element(),e.alpha,e.omega)},toOmega:function(n,e,t){fo(n.element(),e.omega,e.alpha)},isAlpha:function(n,e,t){return ao(n.element(),e.alpha)},isOmega:function(n,e,t){return ao(n.element(),e.omega)},clear:function(n,e,t){co(n.element(),e.alpha),co(n.element(),e.omega)}}),Po=[Yt("alpha"),Yt("omega")],Ho=qr({fields:Po,name:"swapping",apis:_o}),zo=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Lo=tinymce.util.Tools.resolve("tinymce.ThemeManager"),Go=function(n){var e=l.document.createElement("a");e.target="_blank",e.href=n.href,e.rel="noreferrer noopener";var t=l.document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,l.window,0,0,0,0,0,!1,!1,!1,!1,0,null),l.document.body.appendChild(e),e.dispatchEvent(t),l.document.body.removeChild(e)},Uo={formatChanged:b("formatChanged"),orientationChanged:b("orientationChanged"),dropupDismissed:b("dropupDismissed")},$o=/* */Object.freeze({events:function(e){return Nr([_r(_e(),function(o,i){var u=e.channels,n=function(n,e){return e.universal()?n:D(n,function(n){return k(e.channels(),n)})}(Bn(u),i);C(n,function(n){var e=u[n],t=e.schema,r=Xt("channel["+n+"] data\nReceiver: "+bo(o.element()),t,i.data());e.onReceive(o,r)})})])}}),Wo="unknown";(Oo=To=To||{})[Oo.STOP=0]="STOP",Oo[Oo.NORMAL=1]="NORMAL",Oo[Oo.LOGGING=2]="LOGGING";function Xo(e,n,t){switch(Dt(yi.get(),e).orThunk(function(){var n=Bn(yi.get());return wo(n,function(n){return-1<e.indexOf(n)?Fn.some(yi.get()[n]):Fn.none()})}).getOr(To.NORMAL)){case To.NORMAL:return t(xi());case To.LOGGING:var r=function(e,t){var r=[],o=(new Date).getTime();return{logEventCut:function(n,e,t){r.push({outcome:"cut",target:e,purpose:t})},logEventStopped:function(n,e,t){r.push({outcome:"stopped",target:e,purpose:t})},logNoParent:function(n,e,t){r.push({outcome:"no-parent",target:e,purpose:t})},logEventNoHandlers:function(n,e){r.push({outcome:"no-handlers-left",target:e})},logEventResponse:function(n,e,t){r.push({outcome:"response",purpose:t,target:e})},write:function(){var n=(new Date).getTime();k(["mousemove","mouseover","mouseout",Ge()],e)||l.console.log(e,{event:e,time:n-o,target:t.dom(),sequence:de(r,function(n){return k(["cut","stopped","response"],n.outcome)?"{"+n.purpose+"} "+n.outcome+" at ("+bo(n.target)+")":n.outcome})})}}}(e,n),o=t(r);return r.write(),o;case To.STOP:return!0}}function qo(n,e,t){return Xo(n,e,t)}function Yo(n,e,t){return function(){var n=new Error;if(n.stack===undefined)return;var e=n.stack.split("\n");R(e,function(e){return 0<e.indexOf("alloy")&&!E(bi,function(n){return-1<e.indexOf(n)})}).getOr(Wo)}(),kr(e,e,t,Gt(function(t){return vt.value(function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t.apply(undefined,n)})}))}function Ko(n){return Yo(0,n,xn(w))}function Jo(n){return Yo(0,n,xn(Fn.none))}function Qo(n){return Yo(0,n,Tt())}function Zo(n){return Yo(0,n,Tt())}function ni(n,e){return or(n,b(e))}function ei(n){return or(n,y)}function ti(n,e,t){var r=e.aria;r.update(n,r,t.get())}function ri(e,n,t){n.toggleClass.each(function(n){t.get()?io(e.element(),n):co(e.element(),n)})}function oi(n,e,t){Di(n,e,t,!t.get())}function ii(n,e,t){t.set(!0),ri(n,e,t),ti(n,e,t)}function ui(n,e,t){t.set(!1),ri(n,e,t),ti(n,e,t)}function ci(n,e,t){Di(n,e,t,e.selected)}function ai(){function n(n,e){e.stop(),$(n)}return[_r(Re(),n),_r(ze(),n),Lr(xe()),Lr(Te())]}function fi(n,e){e.ignore||(so(n.element()),e.onFocus(n))}function si(n){return n.style!==undefined&&ce(n.style.getPropertyValue)}function li(n,e,t){if(!re(t))throw l.console.error("Invalid call to CSS.set. Property ",e,":: Value ",t,":: Element ",n),new Error("CSS value must be a string: "+t);si(n)&&n.style.setProperty(e,t)}function di(n,e){var t=n.dom();Nn(e,function(n,e){li(t,e,n)})}function mi(n,e){var t=n.dom(),r=l.window.getComputedStyle(t).getPropertyValue(e),o=""!==r||K(n)?r:Ui(t,e);return null===o?undefined:o}function gi(n,e){var t=n.dom(),r=Ui(t,e);return Fn.from(r).filter(function(n){return 0<n.length})}function pi(n,e){!function(n,e){si(n)&&n.style.removeProperty(e)}(n.dom(),e),Zr(n,"style")&&""===function(n){return n.replace(/^\s+|\s+$/g,"")}(Qr(n,"style"))&&no(n,"style")}function hi(n){return n.dom().offsetWidth}var vi,yi=Pn({}),bi=["alloy/data/Fields","alloy/debugging/Debugging"],xi=b({logEventCut:w,logEventStopped:w,logNoParent:w,logEventNoHandlers:w,logEventResponse:w,write:w}),wi=b([Yt("menu"),Yt("selectedMenu")]),Si=b([Yt("item"),Yt("selectedItem")]),Ti=(b(Sr(Si().concat(wi()))),b(Sr(Si()))),Oi=Jt("initSize",[Yt("numColumns"),Yt("numRows")]),ki=b(Oi),Ei=[Kt("channels",Ut(vt.value,Pt([Qo("onReceive"),tr("schema",Dr())])))],Ci=qr({fields:Ei,name:"receiving",active:$o}),Di=function(n,e,t,r){(r?ii:ui)(n,e,t)},Mi=/* */Object.freeze({onLoad:ci,toggle:oi,isOn:function(n,e,t){return t.get()},on:ii,off:ui,set:Di}),Ii=/* */Object.freeze({exhibit:function(n,e,t){return Ur({})},events:function(n,e){var t=function(e,t,r){return Mo(function(n){r(n,e,t)})}(n,e,oi),r=$r(n,e,ci);return Nr(F([n.toggleOnExecute?[t]:[],[r]]))}}),Ri=function(n,e,t){Kr(n.element(),"aria-expanded",t)},Ai=[tr("selected",!1),Qt("toggleClass"),tr("toggleOnExecute",!0),rr("aria",{mode:"none"},qt("mode",{pressed:[tr("syncWithExpanded",!1),ni("update",function(n,e,t){Kr(n.element(),"aria-pressed",t),e.syncWithExpanded&&Ri(n,e,t)})],checked:[ni("update",function(n,e,t){Kr(n.element(),"aria-checked",t)})],expanded:[ni("update",Ri)],selected:[ni("update",function(n,e,t){Kr(n.element(),"aria-selected",t)})],none:[ni("update",w)]}))],Fi=qr({fields:Ai,name:"toggling",active:Ii,apis:Mi,state:(vi=!1,{init:function(){var e=Pn(vi);return{get:function(){return e.get()},set:function(n){return e.set(n)},clear:function(){return e.set(vi)},readState:function(){return e.get()}}}})}),Bi=function(t,r){return Ci.config({channels:En(Uo.formatChanged(),{onReceive:function(n,e){e.command===t&&r(n,e.state)}})})},Vi=function(n){return Ci.config({channels:En(Uo.orientationChanged(),{onReceive:n})})},Ni=function(n,e){return{key:n,value:{onReceive:e}}},ji="tinymce-mobile",_i={resolve:function(n){return ji+"-"+n},prefix:b(ji)},Pi=/* */Object.freeze({focus:fi,blur:function(n,e){e.ignore||lo(n.element())},isFocused:function(n){return function(n){var e=an(n).dom();return n.dom()===e.activeElement}(n.element())}}),Hi=/* */Object.freeze({exhibit:function(n,e){var t=e.ignore?{}:{attributes:{tabindex:"-1"}};return Ur(t)},events:function(t){return Nr([_r(Ve(),function(n,e){fi(n,t),e.stop()})].concat(t.stopMousedown?[_r(Te(),function(n,e){e.event().prevent()})]:[]))}}),zi=[Ko("onFocus"),tr("stopMousedown",!1),tr("ignore",!1)],Li=qr({fields:zi,name:"focusing",active:Hi,apis:Pi}),Gi=function(n,e,t){var r=n.dom();li(r,e,t)},Ui=function(n,e){return si(n)?n.style.getPropertyValue(e):""};function $i(r,o){function n(n){var e=o(n);if(e<=0||null===e){var t=mi(n,r);return parseFloat(t)||0}return e}function i(o,n){return I(n,function(n,e){var t=mi(o,e),r=t===undefined?0:parseInt(t,10);return isNaN(r)?n:n+r},0)}return{set:function(n,e){if(!ae(e)&&!e.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+e);var t=n.dom();si(t)&&(t.style[r]=e+"px")},get:n,getOuter:n,aggregate:i,max:function(n,e,t){var r=i(n,t);return r<e?e-r:0}}}function Wi(n){return yu.get(n)}function Xi(n,e,t){return D(function(n,e){for(var t=ce(e)?e:c,r=n.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=Je.fromDom(i);if(o.push(u),!0===t(u))break;r=i}return o}(n,t),e)}function qi(n,e){return D(function(e){return fn(e).map(at).map(function(n){return D(n,function(n){return!cn(e,n)})}).getOr([])}(n),e)}function Yi(n,e){return on(e,n)}function Ki(n){return un(n)}function Ji(n,e,t){return Rr(n,function(n){return tn(n,e)},t)}function Qi(n,e){return un(e,n)}function Zi(n,e,t){return Ir(tn,Ji,n,e,t)}function nu(n,e,t){var r=N(n.slice(0,e)),o=N(n.slice(e+1));return R(r.concat(o),t)}function eu(n,e,t){var r=N(n.slice(0,e));return R(r,t)}function tu(n,e,t){var r=n.slice(0,e),o=n.slice(e+1);return R(o.concat(r),t)}function ru(n,e,t){var r=n.slice(e+1);return R(r,t)}function ou(t){return function(n){var e=n.raw();return k(t,e.which)}}function iu(n){return function(e){return V(n,function(n){return n(e)})}}function uu(n){return!0===n.raw().shiftKey}function cu(n){return!0===n.raw().ctrlKey}function au(n,e){return{matches:n,classification:e}}function fu(n,e,t,r){var o=n+e;return r<o?t:o<t?r:o}function su(n,e,t){return n<=e?e:t<=n?t:n}function lu(t,r,n,o){var e=Yi(t.element(),"."+r.highlightClass);C(e,function(e){E(o,function(n){return n.element()===e})||(co(e,r.highlightClass),t.getSystem().getByDom(e).each(function(n){r.onDehighlight(t,n),G(n,qe())}))})}function du(n,e,t,r){lu(n,e,0,[r]),xu(n,e,t,r)||(io(r.element(),e.highlightClass),e.onHighlight(n,r),G(r,Xe()))}function mu(t,e,n,r){var o=Yi(t.element(),"."+e.itemClass);return A(o,function(n){return ao(n,e.highlightClass)}).bind(function(n){var e=fu(n,r,0,o.length-1);return t.getSystem().getByDom(o[e]).toOption()})}function gu(n,e,t){e.exists(function(e){return t.exists(function(n){return cn(n,e)})})||U(n,We(),{prevFocus:e,newFocus:t})}function pu(){function o(n){return go(n.element())}return{get:o,set:function(n,e){var t=o(n);n.getSystem().triggerFocus(e,n.element());var r=o(n);gu(n,t,r)}}}var hu,vu,yu=$i("height",function(n){var e=n.dom();return K(n)?e.getBoundingClientRect().height:e.offsetHeight}),bu=m(uu),xu=function(n,e,t,r){return ao(r.element(),e.highlightClass)},wu=function(n,e,t,r){var o=Yi(n.element(),"."+e.itemClass);return Fn.from(o[r]).fold(function(){return vt.error("No element found with index "+r)},n.getSystem().getByDom)},Su=function(e,n,t){return Qi(e.element(),"."+n.itemClass).bind(function(n){return e.getSystem().getByDom(n).toOption()})},Tu=function(e,n,t){var r=Yi(e.element(),"."+n.itemClass);return(0<r.length?Fn.some(r[r.length-1]):Fn.none()).bind(function(n){return e.getSystem().getByDom(n).toOption()})},Ou=function(e,n,t){var r=Yi(e.element(),"."+n.itemClass);return xo(de(r,function(n){return e.getSystem().getByDom(n).toOption()}))},ku=/* */Object.freeze({dehighlightAll:function(n,e,t){return lu(n,e,0,[])},dehighlight:function(n,e,t,r){xu(n,e,t,r)&&(co(r.element(),e.highlightClass),e.onDehighlight(n,r),G(r,qe()))},highlight:du,highlightFirst:function(e,t,r){Su(e,t).each(function(n){du(e,t,r,n)})},highlightLast:function(e,t,r){Tu(e,t).each(function(n){du(e,t,r,n)})},highlightAt:function(e,t,r,n){wu(e,t,r,n).fold(function(n){throw new Error(n)},function(n){du(e,t,r,n)})},highlightBy:function(e,t,r,n){var o=Ou(e,t);R(o,n).each(function(n){du(e,t,r,n)})},isHighlighted:xu,getHighlighted:function(e,n,t){return Qi(e.element(),"."+n.highlightClass).bind(function(n){return e.getSystem().getByDom(n).toOption()})},getFirst:Su,getLast:Tu,getPrevious:function(n,e,t){return mu(n,e,0,-1)},getNext:function(n,e,t){return mu(n,e,0,1)},getCandidates:Ou}),Eu=[Yt("highlightClass"),Yt("itemClass"),Ko("onHighlight"),Ko("onDehighlight")],Cu=qr({fields:Eu,name:"highlighting",apis:ku});(vu=hu=hu||{}).OnFocusMode="onFocus",vu.OnEnterOrSpaceMode="onEnterOrSpace",vu.OnApiMode="onApi";function Du(n,e,t,i,u){function c(e,t,n,r,o){return function(n,e){return R(n,function(n){return n.matches(e)}).map(function(n){return n.classification})}(n(e,t,r,o),t.event()).bind(function(n){return n(e,t,r,o)})}var r={schema:function(){return n.concat([tr("focusManager",pu()),rr("focusInside","onFocus",Gt(function(n){return k(["onFocus","onEnterOrSpace","onApi"],n)?vt.value(n):vt.error("Invalid value for focusInside")})),ni("handler",r),ni("state",e),ni("sendFocusIn",u)])},processKey:c,toEvents:function(r,o){var n=r.focusInside!==hu.OnFocusMode?Fn.none():u(r).map(function(t){return _r(Ve(),function(n,e){t(n,r,o),e.stop()})});return Nr(n.toArray().concat([_r(Ce(),function(n,e){c(n,e,t,r,o).fold(function(){!function(e,t){var n=ou([32].concat([13]))(t.event());r.focusInside===hu.OnEnterOrSpaceMode&&n&&ir(e,t)&&u(r).each(function(n){n(e,r,o),t.stop()})}(n,e)},function(n){e.stop()})}),_r(De(),function(n,e){c(n,e,i,r,o).each(function(n){e.stop()})})]))}};return r}function Mu(n){function i(n,e){var t=n.visibilitySelector.bind(function(n){return Zi(e,n)}).getOr(e);return 0<Wi(t)}function e(e,t){(function(n,e){var t=Yi(n.element(),e.selector),r=D(t,function(n){return i(e,n)});return Fn.from(r[e.firstTabstop])})(e,t).each(function(n){t.focusManager.set(e,n)})}function u(e,n,t,r,o){return o(n,t,function(n){return function(n,e){return i(n,e)&&n.useTabstopAt(e)}(r,n)}).fold(function(){return r.cyclic?Fn.some(!0):Fn.none()},function(n){return r.focusManager.set(e,n),Fn.some(!0)})}function c(e,n,t,r){var o=Yi(e.element(),t.selector);return function(n,e){return e.focusManager.get(n).bind(function(n){return Zi(n,e.selector)})}(e,t).bind(function(n){return A(o,d(cn,n)).bind(function(n){return u(e,o,n,t,r)})})}var t=[Qt("onEscape"),Qt("onEnter"),tr("selector",'[data-alloy-tabstop="true"]:not(:disabled)'),tr("firstTabstop",0),tr("useTabstopAt",b(!0)),Qt("visibilitySelector")].concat([n]),r=b([au(iu([uu,ou([9])]),function(n,e,t,r){var o=t.cyclic?nu:eu;return c(n,0,t,o)}),au(ou([9]),function(n,e,t,r){var o=t.cyclic?tu:ru;return c(n,0,t,o)}),au(ou([27]),function(e,t,n,r){return n.onEscape.bind(function(n){return n(e,t)})}),au(iu([bu,ou([13])]),function(e,t,n,r){return n.onEnter.bind(function(n){return n(e,t)})})]),o=b([]);return Du(t,Ao.init,r,o,function(){return Fn.some(e)})}function Iu(n){return"input"===q(n)&&"radio"!==Qr(n,"type")||"textarea"===q(n)}function Ru(n,e,t){return Iu(t)&&ou([32])(e.event())?Fn.none():function(n,e,t){return W(n,t,Pe()),Fn.some(!0)}(n,0,t)}function Au(n,e){return Fn.some(!0)}function Fu(n,e,t){return t.execute(n,e,n.element())}function Bu(n){var t=Pn(Fn.none());return Fo({readState:function(){return t.get().map(function(n){return{numRows:n.numRows(),numColumns:n.numColumns()}}).getOr({numRows:"?",numColumns:"?"})},setGridSize:function(n,e){t.set(Fn.some({numRows:b(n),numColumns:b(e)}))},getNumRows:function(){return t.get().map(function(n){return n.numRows()})},getNumColumns:function(){return t.get().map(function(n){return n.numColumns()})}})}function Vu(e,t){return function(n){return"rtl"===Yc(n)?t:e}}function Nu(i){return function(n,e,t,r){var o=i(n.element());return Kc(o,n,e,t,r)}}function ju(n,e){var t=Vu(n,e);return Nu(t)}function _u(n,e){var t=Vu(e,n);return Nu(t)}function Pu(o){return function(n,e,t,r){return Kc(o,n,e,t,r)}}function Hu(n){return!function(n){return n.offsetWidth<=0&&n.offsetHeight<=0}(n.dom())}function zu(n,e,t){var r=d(cn,e),o=Yi(n,t);return function(e,n){return A(e,n).map(function(n){return na({index:n,candidates:e})})}(D(o,Hu),r)}function Lu(n,e){return A(n,function(n){return cn(e,n)})}function Gu(t,n,r,e){return e(Math.floor(n/r),n%r).bind(function(n){var e=n.row()*r+n.column();return 0<=e&&e<t.length?Fn.some(t[e]):Fn.none()})}function Uu(o,n,i,u,c){return Gu(o,n,u,function(n,e){var t=n===i-1?o.length-n*u:u,r=fu(e,c,0,t-1);return Fn.some({row:b(n),column:b(r)})})}function $u(i,n,u,c,a){return Gu(i,n,c,function(n,e){var t=fu(n,a,0,u-1),r=t===u-1?i.length-t*c:c,o=su(e,0,r-1);return Fn.some({row:b(t),column:b(o)})})}function Wu(e,t,n){Qi(e.element(),t.selector).each(function(n){t.focusManager.set(e,n)})}function Xu(o){return function(n,e,t,r){return zu(n,e,t.selector).bind(function(n){return o(n.candidates(),n.index(),r.getNumRows().getOr(t.initSize.numRows),r.getNumColumns().getOr(t.initSize.numColumns))})}}function qu(n,e,t,r){return t.captureTab?Fn.some(!0):Fn.none()}function Yu(n,e,t,o){var i=function(n,e,t){var r=fu(e,o,0,t.length-1);return r===n?Fn.none():function(n){return"button"===q(n)&&"disabled"===Qr(n,"disabled")}(t[r])?i(n,r,t):Fn.from(t[r])};return zu(n,t,e).bind(function(n){var e=n.index(),t=n.candidates();return i(e,e,t)})}function Ku(e,t,r){return function(n,e){return e.focusManager.get(n).bind(function(n){return Zi(n,e.selector)})}(e,r).bind(function(n){return r.execute(e,t,n)})}function Ju(e,t){t.getInitial(e).orThunk(function(){return Qi(e.element(),t.selector)}).each(function(n){t.focusManager.set(e,n)})}function Qu(n,e,t){return Yu(n,t.selector,e,-1)}function Zu(n,e,t){return Yu(n,t.selector,e,1)}function nc(r){return function(n,e,t){return r(n,e,t).bind(function(){return t.executeOnMove?Ku(n,e,t):Fn.some(!0)})}}function ec(n,e,t,r){return t.onEscape(n,e)}function tc(n,e,t){return Fn.from(n[e]).bind(function(n){return Fn.from(n[t]).map(function(n){return da({rowIndex:e,columnIndex:t,cell:n})})})}function rc(n,e,t,r){var o=n[e].length,i=fu(t,r,0,o-1);return tc(n,e,i)}function oc(n,e,t,r){var o=fu(t,r,0,n.length-1),i=n[o].length,u=su(e,0,i-1);return tc(n,o,u)}function ic(n,e,t,r){var o=n[e].length,i=su(t+r,0,o-1);return tc(n,e,i)}function uc(n,e,t,r){var o=su(t+r,0,n.length-1),i=n[o].length,u=su(e,0,i-1);return tc(n,o,u)}function cc(e,t){t.previousSelector(e).orThunk(function(){var n=t.selectors;return Qi(e.element(),n.cell)}).each(function(n){t.focusManager.set(e,n)})}function ac(n,e){return function(o,t,i){var u=i.cycles?n:e;return Zi(t,i.selectors.row).bind(function(n){var e=Yi(n,i.selectors.cell);return Lu(e,t).bind(function(t){var r=Yi(o,i.selectors.row);return Lu(r,n).bind(function(n){var e=function(n,e){return de(n,function(n){return Yi(n,e.selectors.cell)})}(r,i);return u(e,n,t).map(function(n){return n.cell()})})})})}}function fc(e,t,r){return r.focusManager.get(e).bind(function(n){return r.execute(e,t,n)})}function sc(e,t){Qi(e.element(),t.selector).each(function(n){t.focusManager.set(e,n)})}function lc(n,e,t){return Yu(n,t.selector,e,-1)}function dc(n,e,t){return Yu(n,t.selector,e,1)}function mc(e,n){return function(n,e,t){return rr(n,e,Sr(t))}(e,{},de(n,function(n){return function(e,t){return kr(e,e,Ot(),_t(function(n){return dr("The field: "+e+" is forbidden. "+t)}))}(n.name(),"Cannot configure "+n.name()+" for "+e)}).concat([or("dump",y)]))}function gc(n){return n.dump}function pc(n,e){return x(x({},n.dump),Bo(e))}function hc(n,e,t,r){return t.uiType===_a?function(n,e,t,r){return n.exists(function(n){return n!==t.owner})?Pa.single(!0,b(t)):Dt(r,t.name).fold(function(){throw new Error("Unknown placeholder component: "+t.name+"\nKnown: ["+Bn(r)+"]\nNamespace: "+n.getOr("none")+"\nSpec: "+JSON.stringify(t,null,2))},function(n){return n.replace()})}(n,0,t,r):Pa.single(!1,b(t))}function vc(e,t,n,r){var o=S(r,function(n,e){return function(n,e){var t=!1;return{name:b(n),required:function(){return e.fold(function(n,e){return n},function(n,e){return n})},used:function(){return t},replace:function(){if(!0===t)throw new Error("Trying to use the same placeholder more than once: "+n);return t=!0,e}}}(e,n)}),i=function(e,t,n,r){return B(n,function(n){return Ha(e,t,n,r)})}(e,t,n,o);return Nn(o,function(n){if(!1===n.used()&&n.required())throw new Error("Placeholder: "+n.name()+" was not found in components list\nNamespace: "+e.getOr("none")+"\nComponents: "+JSON.stringify(t.components,null,2))}),i}function yc(n){var e=(new Date).getTime();return n+"_"+Math.floor(1e9*Math.random())+ ++Ua+String(e)}function bc(n){function e(n){return n.name}return n.fold(e,e,e,e)}function xc(t,r){return function(n){var e=Xt("Converting part type",r,n);return t(e)}}function wc(n,e,t,r){return xt(e.defaults(n,t,r),t,{uid:n.partUids[e.name]},e.overrides(n,t,r))}function Sc(o,n){var e={};return C(n,function(n){(function(n){return n.fold(Fn.some,Fn.none,Fn.some,Fn.some)})(n).each(function(t){var r=cf(o,t.pname);e[t.name]=function(n){var e=Xt("Part: "+t.name+" in "+o,Sr(t.schema),n);return x(x({},r),{config:n,validated:e})}})}),e}function Tc(n,e,t){return function(n,t,e){var i={},r={};return C(e,function(n){n.fold(function(r){i[r.pname]=za(!0,function(n,e,t){return r.factory.sketch(wc(n,r,e,t))})},function(n){var e=t.parts[n.name];r[n.name]=b(n.factory.sketch(wc(t,n,e[uf()]),e))},function(r){i[r.pname]=za(!1,function(n,e,t){return r.factory.sketch(wc(n,r,e,t))})},function(o){i[o.pname]=La(!0,function(e,n,t){var r=e[o.name];return de(r,function(n){return o.factory.sketch(xt(o.defaults(e,n,t),n,o.overrides(e,n)))})})})}),{internals:b(i),externals:b(r)}}(0,e,t)}function Oc(n,e,t){return vc(Fn.some(n),e,e.components,t)}function kc(n,e,t){var r=e.partUids[t];return n.getSystem().getByUid(r).toOption()}function Ec(n,e,t){return kc(n,e,t).getOrDie("Could not find part: "+t)}function Cc(e,n){var t=function(n){return de(n,bc)}(n);return Cn(de(t,function(n){return{key:n,value:e+"-"+n}}))}function Dc(e){return kr("partUids","partUids",Et(function(n){return Cc(n.uid,e)}),Dr())}function Mc(n){return En(af,n)}function Ic(r){return function(n,e){var t=e.toString(),r=t.indexOf(")")+1,o=t.indexOf("("),i=t.substring(o+1,r-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:"OVERRIDE",parameters:Io(i.slice(1))}},n}(function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return r.apply(undefined,[n.getApis()].concat([n].concat(e)))},r)}function Rc(n){return yc(n)}function Ac(n,e,t,r,o){var i=function(n,e){return(0<n.length?[Jt("parts",n)]:[]).concat([Yt("uid"),tr("dom",{}),tr("components",[]),ei("originalSpec"),tr("debug.sketcher",{})]).concat(e)}(r,o);return Xt(n+" [SpecSchema]",Pt(i.concat(e)),t)}function Fc(n,e,t,r,o){var i=pf(o),u=function(n){return B(n,function(n){return n.fold(Fn.none,Fn.some,Fn.none,Fn.none).map(function(n){return Jt(n.name,n.schema.concat([ei(uf())]))}).toArray()})}(t),c=Dc(t),a=Ac(n,e,i,u,[c]),f=Tc(0,a,t);return r(a,Oc(n,a,f.internals()),i,f.externals())}var Bc,Vc,Nc,jc,_c,Pc,Hc,zc,Lc,Gc,Uc=Mu(or("cyclic",b(!1))),$c=Mu(or("cyclic",b(!0))),Wc=[tr("execute",Ru),tr("useSpace",!1),tr("useEnter",!0),tr("useControlEnter",!1),tr("useDown",!1)],Xc=Du(Wc,Ao.init,function(n,e,t,r){var o=t.useSpace&&!Iu(n.element())?[32]:[],i=t.useEnter?[13]:[],u=t.useDown?[40]:[],c=o.concat(i).concat(u);return[au(ou(c),Fu)].concat(t.useControlEnter?[au(iu([cu,ou([13])]),Fu)]:[])},function(n,e,t,r){return t.useSpace&&!Iu(n.element())?[au(ou([32]),Au)]:[]},function(){return Fn.none()}),qc=/* */Object.freeze({flatgrid:Bu,init:function(n){return n.state(n)}}),Yc=function(n){return"rtl"===mi(n,"direction")?"rtl":"ltr"},Kc=function(e,t,n,r,o){return r.focusManager.get(t).bind(function(n){return e(t.element(),n,r,o)}).map(function(n){return r.focusManager.set(t,n),!0})},Jc=Pu,Qc=Pu,Zc=Pu,na=nn(["index","candidates"],[]),ea=[Yt("selector"),tr("execute",Ru),Jo("onEscape"),tr("captureTab",!1),ki()],ta=Xu(function(n,e,t,r){return Uu(n,e,t,r,-1)}),ra=Xu(function(n,e,t,r){return Uu(n,e,t,r,1)}),oa=Xu(function(n,e,t,r){return $u(n,e,t,r,-1)}),ia=Xu(function(n,e,t,r){return $u(n,e,t,r,1)}),ua=b([au(ou([37]),ju(ta,ra)),au(ou([39]),_u(ta,ra)),au(ou([38]),Jc(oa)),au(ou([40]),Qc(ia)),au(iu([uu,ou([9])]),qu),au(iu([bu,ou([9])]),qu),au(ou([27]),function(n,e,t,r){return t.onEscape(n,e)}),au(ou([32].concat([13])),function(e,t,r,n){return function(n,e){return e.focusManager.get(n).bind(function(n){return Zi(n,e.selector)})}(e,r).bind(function(n){return r.execute(e,t,n)})})]),ca=b([au(ou([32]),Au)]),aa=Du(ea,Bu,ua,ca,function(){return Fn.some(Wu)}),fa=[Yt("selector"),tr("getInitial",Fn.none),tr("execute",Ru),Jo("onEscape"),tr("executeOnMove",!1),tr("allowVertical",!0)],sa=b([au(ou([32]),Au)]),la=Du(fa,Ao.init,function(n,e,t,r){var o=[37].concat(t.allowVertical?[38]:[]),i=[39].concat(t.allowVertical?[40]:[]);return[au(ou(o),nc(ju(Qu,Zu))),au(ou(i),nc(_u(Qu,Zu))),au(ou([13]),Ku),au(ou([32]),Ku),au(ou([27]),ec)]},sa,function(){return Fn.some(Ju)}),da=nn(["rowIndex","columnIndex","cell"],[]),ma=[Jt("selectors",[Yt("row"),Yt("cell")]),tr("cycles",!0),tr("previousSelector",Fn.none),tr("execute",Ru)],ga=ac(function(n,e,t){return rc(n,e,t,-1)},function(n,e,t){return ic(n,e,t,-1)}),pa=ac(function(n,e,t){return rc(n,e,t,1)},function(n,e,t){return ic(n,e,t,1)}),ha=ac(function(n,e,t){return oc(n,t,e,-1)},function(n,e,t){return uc(n,t,e,-1)}),va=ac(function(n,e,t){return oc(n,t,e,1)},function(n,e,t){return uc(n,t,e,1)}),ya=b([au(ou([37]),ju(ga,pa)),au(ou([39]),_u(ga,pa)),au(ou([38]),Jc(ha)),au(ou([40]),Qc(va)),au(ou([32].concat([13])),function(e,t,r){return go(e.element()).bind(function(n){return r.execute(e,t,n)})})]),ba=b([au(ou([32]),Au)]),xa=Du(ma,Ao.init,ya,ba,function(){return Fn.some(cc)}),wa=[Yt("selector"),tr("execute",Ru),tr("moveOnTab",!1)],Sa=b([au(ou([38]),Zc(lc)),au(ou([40]),Zc(dc)),au(iu([uu,ou([9])]),function(n,e,t){return t.moveOnTab?Zc(lc)(n,e,t):Fn.none()}),au(iu([bu,ou([9])]),function(n,e,t){return t.moveOnTab?Zc(dc)(n,e,t):Fn.none()}),au(ou([13]),fc),au(ou([32]),fc)]),Ta=b([au(ou([32]),Au)]),Oa=Du(wa,Ao.init,Sa,Ta,function(){return Fn.some(sc)}),ka=[Jo("onSpace"),Jo("onEnter"),Jo("onShiftEnter"),Jo("onLeft"),Jo("onRight"),Jo("onTab"),Jo("onShiftTab"),Jo("onUp"),Jo("onDown"),Jo("onEscape"),tr("stopSpaceKeyup",!1),Qt("focusIn")],Ea=Du(ka,Ao.init,function(n,e,t){return[au(ou([32]),t.onSpace),au(iu([bu,ou([13])]),t.onEnter),au(iu([uu,ou([13])]),t.onShiftEnter),au(iu([uu,ou([9])]),t.onShiftTab),au(iu([bu,ou([9])]),t.onTab),au(ou([38]),t.onUp),au(ou([40]),t.onDown),au(ou([37]),t.onLeft),au(ou([39]),t.onRight),au(ou([32]),t.onSpace),au(ou([27]),t.onEscape)]},function(n,e,t){return t.stopSpaceKeyup?[au(ou([32]),Au)]:[]},function(n){return n.focusIn}),Ca=Uc.schema(),Da=$c.schema(),Ma=la.schema(),Ia=aa.schema(),Ra=xa.schema(),Aa=Xc.schema(),Fa=Oa.schema(),Ba=Ea.schema(),Va=(Gc=Xt("Creating behaviour: "+(Lc={branchKey:"mode",branches:/* */Object.freeze({acyclic:Ca,cyclic:Da,flow:Ma,flatgrid:Ia,matrix:Ra,execution:Aa,menu:Fa,special:Ba}),name:"keying",active:{events:function(n,e){return n.handler.toEvents(n,e)}},apis:{focusIn:function(e,t,r){t.sendFocusIn(t).fold(function(){e.getSystem().triggerFocus(e.element(),e.element())},function(n){n(e,t,r)})},setGridSize:function(n,e,t,r,o){Mn(t,"setGridSize")?t.setGridSize(r,o):l.console.error("Layout does not support setGridSize")}},state:qc}).name,No,Lc),Bc=qt(Gc.branchKey,Gc.branches),Vc=Gc.name,Nc=Gc.active,jc=Gc.apis,_c=Gc.extra,Pc=Gc.state,zc=nr(Vc,[Zt("config",Hc=Bc)]),Ro(Hc,zc,Vc,Nc,jc,_c,Pc)),Na=mc,ja=pc,_a="placeholder",Pa=yt([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),Ha=function(i,u,c,a){return hc(i,0,c,a).fold(function(n,e){var t=e(u,c.config,c.validated),r=Dt(t,"components").getOr([]),o=B(r,function(n){return Ha(i,u,n,a)});return[x(x({},t),{components:o})]},function(n,e){var t=e(u,c.config,c.validated);return c.validated.preprocess.getOr(y)(t)})},za=Pa.single,La=Pa.multiple,Ga=b(_a),Ua=0,$a=yt([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),Wa=tr("factory",{sketch:y}),Xa=tr("schema",[]),qa=Yt("name"),Ya=kr("pname","pname",kt(function(n){return"<alloy."+yc(n.name)+">"}),Dr()),Ka=or("schema",function(){return[Qt("preprocess")]}),Ja=tr("defaults",b({})),Qa=tr("overrides",b({})),Za=Sr([Wa,Xa,qa,Ya,Ja,Qa]),nf=Sr([Wa,Xa,qa,Ya,Ja,Qa]),ef=Sr([Wa,Ka,qa,Yt("unit"),Ya,Ja,Qa]),tf=xc($a.required,Za),rf=xc($a.optional,nf),of=xc($a.group,ef),uf=b("entirety"),cf=function(n,e){return{uiType:Ga(),owner:n,name:e}},af=yc("alloy-premade"),ff=b("alloy-id-"),sf=b("data-alloy-id"),lf=ff(),df=sf(),mf=function(n,e){Object.defineProperty(n.dom(),df,{value:e,writable:!0})},gf=function(n){var e=et(n)?n.dom()[df]:null;return Fn.from(e)},pf=function(n){return n.hasOwnProperty("uid")?n:x(x({},n),{uid:Rc("uid")})};function hf(n){var e=Xt("Sketcher for "+n.name,Hs,n),t=S(e.apis,Ic),r=S(e.extraApis,function(n,e){return Gr(n,e)});return x(x({name:b(e.name),partFields:b([]),configFields:b(e.configFields),sketch:function(n){return function(n,e,t,r){var o=pf(r);return t(Ac(n,e,o,[],[]),o)}(e.name,e.configFields,e.factory,n)}},t),r)}function vf(n){var e=Xt("Sketcher for "+n.name,zs,n),t=Sc(e.name,e.partFields),r=S(e.apis,Ic),o=S(e.extraApis,function(n,e){return Gr(n,e)});return x(x({name:b(e.name),partFields:b(e.partFields),configFields:b(e.configFields),sketch:function(n){return Fc(e.name,e.configFields,e.partFields,e.factory,n)},parts:b(t)},r),o)}function yf(n){var e=Je.fromHtml(n),t=at(e),r=function(n){var e=n.dom().attributes!==undefined?n.dom().attributes:[];return I(e,function(n,e){var t;return"class"===e.name?n:x(x({},n),((t={})[e.name]=e.value,t))},{})}(e),o=function(n){return Array.prototype.slice.call(n.dom().classList,0)}(e),i=0===t.length?{}:{innerHtml:po(e)};return x({tag:q(e),classes:o,attributes:r},i)}function bf(n){return{dom:Us(n)}}function xf(n){return Bo([Fi.config({toggleClass:_i.resolve("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),Bi(n,function(n,e){(e?Fi.on:Fi.off)(n)})])}function wf(n,e){var t=e.ui.registry.getAll().icons;return Fn.from(t[n]).fold(function(){return Us('<span class="${prefix}-toolbar-button ${prefix}-toolbar-group-item ${prefix}-icon-'+n+' ${prefix}-icon"></span>')},function(n){return Us('<span class="${prefix}-toolbar-button ${prefix}-toolbar-group-item">'+n+"</span>")})}function Sf(e){return rf({name:e+"-edge",overrides:function(n){return n.model.manager.edgeActions[e].fold(function(){return{}},function(r){return{events:Nr([Pr(xe(),r,[n]),Pr(Te(),r,[n]),Pr(Oe(),function(n,e,t){t.mouseIsDown.get()&&r(n,t)},[n])])}})}})}function Tf(n,e,t){e.store.manager.onLoad(n,e,t)}function Of(n,e,t){e.store.manager.onUnload(n,e,t)}function kf(){var n=Pn(null);return Fo({set:n.set,get:n.get,isNotSet:function(){return null===n.get()},clear:function(){n.set(null)},readState:function(){return{mode:"memory",value:n.get()}}})}function Ef(){var i=Pn({}),u=Pn({});return Fo({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(n){return Dt(i.get(),n).orThunk(function(){return Dt(u.get(),n)})},update:function(n){var e=i.get(),t=u.get(),r={},o={};C(n,function(e){r[e.value]=e,Dt(e,"meta").each(function(n){Dt(n,"text").each(function(n){o[n]=e})})}),i.set(x(x({},e),r)),u.set(x(x({},t),o))},clear:function(){i.set({}),u.set({})}})}function Cf(n,e,t,r){var o=e.store;t.update([r]),o.setValue(n,r),e.onSetValue(n,r)}function Df(n,e){sl.set(n,e)}function Mf(n){return sl.get(n)}function If(n){var e=n.event().raw();if(function(n){return-1!==n.type.indexOf("touch")}(e)){var t=e;return t.touches!==undefined&&1===t.touches.length?Fn.some(t.touches[0]).map(function(n){return dl(n.clientX,n.clientY)}):Fn.none()}var r=e;return r.clientX!==undefined?Fn.some(r).map(function(n){return dl(n.clientX,n.clientY)}):Fn.none()}function Rf(n){return n.model.minX}function Af(n){return n.model.minY}function Ff(n){return n.model.minX-1}function Bf(n){return n.model.minY-1}function Vf(n){return n.model.maxX}function Nf(n){return n.model.maxY}function jf(n){return n.model.maxX+1}function _f(n){return n.model.maxY+1}function Pf(n,e,t){return e(n)-t(n)}function Hf(n){return Pf(n,Vf,Rf)}function zf(n){return Pf(n,Nf,Af)}function Lf(n){return Hf(n)/2}function Gf(n){return zf(n)/2}function Uf(n){return n.stepSize}function $f(n){return n.snapToGrid}function Wf(n){return n.snapStart}function Xf(n){return n.rounded}function qf(n,e){return n[e+"-edge"]!==undefined}function Yf(n){return qf(n,"left")}function Kf(n){return qf(n,"right")}function Jf(n){return qf(n,"top")}function Qf(n){return qf(n,"bottom")}function Zf(n){return n.model.value.get()}function ns(n){return{x:b(n)}}function es(n){return{y:b(n)}}function ts(n,e){return{x:b(n),y:b(e)}}function rs(n,e){U(n,ml(),{value:e})}function os(n,e,t,r){return n<e?n:t<n?t:n===e?e-1:Math.max(e,n-r)}function is(n,e,t,r){return t<n?n:n<e?e:n===t?t+1:Math.min(t,n+r)}function us(n,e,t){return Math.max(e,Math.min(t,n))}function cs(n){var e=n.min,t=n.max,r=n.range,o=n.value,i=n.step,u=n.snap,c=n.snapStart,a=n.rounded,f=n.hasMinEdge,s=n.hasMaxEdge,l=n.minBound,d=n.maxBound,m=n.screenRange,g=f?e-1:e,p=s?t+1:t;if(o<l)return g;if(d<o)return p;var h=function(n,e,t){return Math.min(t,Math.max(n,e))-e}(o,l,d),v=us(h/m*r+e,g,p);return u&&e<=v&&v<=t?function(u,t,c,a,n){return n.fold(function(){var n=u-t,e=Math.round(n/a)*a;return us(t+e,t-1,c+1)},function(n){var e=(u-n)%a,t=Math.round(e/a),r=Math.floor((u-n)/a),o=Math.floor((c-n)/a),i=n+Math.min(o,r+t)*a;return Math.max(n,i)})}(v,e,t,i,c):a?Math.round(v):v}function as(n){var e=n.min,t=n.max,r=n.range,o=n.value,i=n.hasMinEdge,u=n.hasMaxEdge,c=n.maxBound,a=n.maxOffset,f=n.centerMinEdge,s=n.centerMaxEdge;return o<e?i?0:f:t<o?u?c:s:(o-e)/r*a}function fs(n){return n.element().dom().getBoundingClientRect()}function ss(n,e){return n[e]}function ls(n){var e=fs(n);return ss(e,gl)}function ds(n){var e=fs(n);return ss(e,"right")}function ms(n){var e=fs(n);return ss(e,"top")}function gs(n){var e=fs(n);return ss(e,"bottom")}function ps(n){var e=fs(n);return ss(e,"width")}function hs(n){var e=fs(n);return ss(e,"height")}function vs(n,e,t){return(n+e)/2-t}function ys(n,e){var t=fs(n),r=fs(e),o=ss(t,gl),i=ss(t,"right"),u=ss(r,gl);return vs(o,i,u)}function bs(n,e){var t=fs(n),r=fs(e),o=ss(t,"top"),i=ss(t,"bottom"),u=ss(r,"top");return vs(o,i,u)}function xs(n,e){U(n,ml(),{value:e})}function ws(n){return{x:b(n)}}function Ss(n,e,t){var r={min:Rf(e),max:Vf(e),range:Hf(e),value:t,step:Uf(e),snap:$f(e),snapStart:Wf(e),rounded:Xf(e),hasMinEdge:Yf(e),hasMaxEdge:Kf(e),minBound:ls(n),maxBound:ds(n),screenRange:ps(n)};return cs(r)}function Ts(t){return function(n,e){return function(n,e,t){var r=(0<n?is:os)(Zf(t).x(),Rf(t),Vf(t),Uf(t));return xs(e,ws(r)),Fn.some(r)}(t,n,e).map(function(){return!0})}}function Os(n,e,t,r,o,i){var u=function(e,n,t,r,o){var i=ps(e),u=r.bind(function(n){return Fn.some(ys(n,e))}).getOr(0),c=o.bind(function(n){return Fn.some(ys(n,e))}).getOr(i),a={min:Rf(n),max:Vf(n),range:Hf(n),value:t,hasMinEdge:Yf(n),hasMaxEdge:Kf(n),minBound:ls(e),minOffset:0,maxBound:ds(e),maxOffset:i,centerMinEdge:u,centerMaxEdge:c};return as(a)}(e,i,t,r,o);return ls(e)-ls(n)+u}function ks(n,e){U(n,ml(),{value:e})}function Es(n){return{y:b(n)}}function Cs(n,e,t){var r={min:Af(e),max:Nf(e),range:zf(e),value:t,step:Uf(e),snap:$f(e),snapStart:Wf(e),rounded:Xf(e),hasMinEdge:Jf(e),hasMaxEdge:Qf(e),minBound:ms(n),maxBound:gs(n),screenRange:hs(n)};return cs(r)}function Ds(t){return function(n,e){return function(n,e,t){var r=(0<n?is:os)(Zf(t).y(),Af(t),Nf(t),Uf(t));return ks(e,Es(r)),Fn.some(r)}(t,n,e).map(function(){return!0})}}function Ms(n,e,t,r,o,i){var u=function(e,n,t,r,o){var i=hs(e),u=r.bind(function(n){return Fn.some(bs(n,e))}).getOr(0),c=o.bind(function(n){return Fn.some(bs(n,e))}).getOr(i),a={min:Af(n),max:Nf(n),range:zf(n),value:t,hasMinEdge:Jf(n),hasMaxEdge:Qf(n),minBound:ms(e),minOffset:0,maxBound:gs(e),maxOffset:i,centerMinEdge:u,centerMaxEdge:c};return as(a)}(e,i,t,r,o);return ms(e)-ms(n)+u}function Is(n,e){U(n,ml(),{value:e})}function Rs(n,e){return{x:b(n),y:b(e)}}function As(t,r){return function(n,e){return function(n,e,t,r){var o=0<n?is:os,i=e?Zf(r).x():o(Zf(r).x(),Rf(r),Vf(r),Uf(r)),u=e?o(Zf(r).y(),Af(r),Nf(r),Uf(r)):Zf(r).y();return Is(t,Rs(i,u)),Fn.some(i)}(t,r,n,e).map(function(){return!0})}}function Fs(e,t,r,n){return Ws.forToolbar(t,function(){var n=r();e.setContextToolbar([{label:t+" group",items:n}])},{},n)}function Bs(n){return[function(o){function i(n){return n<0?"black":360<n?"white":"hsl("+n+", 100%, 50%)"}return Vl.sketch({dom:Us('<div class="${prefix}-slider ${prefix}-hue-slider-container"></div>'),components:[Vl.parts()["left-edge"](bf('<div class="${prefix}-hue-slider-black"></div>')),Vl.parts().spectrum({dom:Us('<div class="${prefix}-slider-gradient-container"></div>'),components:[bf('<div class="${prefix}-slider-gradient"></div>')],behaviours:Bo([Fi.config({toggleClass:_i.resolve("thumb-active")})])}),Vl.parts()["right-edge"](bf('<div class="${prefix}-hue-slider-white"></div>')),Vl.parts().thumb({dom:Us('<div class="${prefix}-slider-thumb"></div>'),behaviours:Bo([Fi.config({toggleClass:_i.resolve("thumb-active")})])})],onChange:function(n,e,t){var r=i(t.x());Gi(e.element(),"background-color",r),o.onChange(n,e,r)},onDragStart:function(n,e){Fi.on(e)},onDragEnd:function(n,e){Fi.off(e)},onInit:function(n,e,t,r){var o=i(r.x());Gi(e.element(),"background-color",o)},stepSize:10,model:{mode:"x",minX:0,maxX:360,getInitialValue:function(){return{x:function(){return o.getInitialValue()}}}},sliderBehaviours:Bo([Vi(Vl.refresh)])})}(n)]}function Vs(n){var e=n.selection.getStart(),t=Je.fromDom(e),r=Je.fromDom(n.getBody()),o=function(e,n){return(et(n)?Fn.some(n):fn(n).filter(et)).map(function(n){return Ar(n,function(n){return gi(n,"font-size").isSome()},e).bind(function(n){return gi(n,"font-size")}).getOrThunk(function(){return mi(n,"font-size")})}).getOr("")}(function(n){return cn(r,n)},t);return R(Pl,function(n){return o===n}).getOr("medium")}function Ns(n){return[bf('<span class="${prefix}-toolbar-button ${prefix}-icon-small-font ${prefix}-icon"></span>'),function(n){return _l({onChange:n.onChange,sizes:zl,category:"font",getInitialValue:n.getInitialValue})}(n),bf('<span class="${prefix}-toolbar-button ${prefix}-icon-large-font ${prefix}-icon"></span>')]}function js(n){var e=function t(n){return n.uid!==undefined}(n)&&Mn(n,"uid")?n.uid:Rc("memento");return{get:function(n){return n.getSystem().getByUid(e).getOrDie()},getOpt:function(n){return n.getSystem().getByUid(e).toOption()},asSpec:function(){return x(x({},n),{uid:e})}}}var _s,Ps,Hs=Pt([Yt("name"),Yt("factory"),Yt("configFields"),tr("apis",{}),tr("extraApis",{})]),zs=Pt([Yt("name"),Yt("factory"),Yt("configFields"),Yt("partFields"),tr("apis",{}),tr("extraApis",{})]),Ls=hf({name:"Button",factory:function(n){function t(e){return Dt(n.dom,"attributes").bind(function(n){return Dt(n,e)})}var e=function(n){return Nr(F([n.map(function(t){return Mo(function(n,e){t(n),e.stop()})}).toArray(),ai()]))}(n.action),r=n.dom.tag;return{uid:n.uid,dom:n.dom,components:n.components,events:e,behaviours:ja(n.buttonBehaviours,[Li.config({}),Va.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==r)return{role:t("role").getOr("button")};var n=t("type").getOr("button"),e=t("role").map(function(n){return{role:n}}).getOr({});return x({type:n},e)}()},eventOrder:n.eventOrder}},configFields:[tr("uid",undefined),Yt("dom"),tr("components",[]),Na("buttonBehaviours",[Li,Va]),Qt("action"),Qt("role"),tr("eventOrder",{})]}),Gs=qr({fields:[],name:"unselecting",active:/* */Object.freeze({events:function(n){return Nr([jr(Fe(),b(!0))])},exhibit:function(n,e){return Ur({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),Us=function(n){var e=function(n,r){return n.replace(/\$\{([^{}]*)\}/g,function(n,e){var t=r[e];return function(n){var e=typeof n;return"string"==e||"number"==e}(t)?t.toString():n})}(n,{prefix:_i.prefix()});return yf(e)},$s=function(n,e,t,r){return Ls.sketch({dom:wf(n,r),action:e,buttonBehaviours:xt(Bo([Gs.config({})]),t)})},Ws={forToolbar:$s,forToolbarCommand:function(n,e){return $s(e,function(){n.execCommand(e)},{},n)},forToolbarStateAction:function(n,e,t,r){var o=xf(t);return $s(e,r,o,n)},forToolbarStateCommand:function(n,e){var t=xf(e);return $s(e,function(){n.execCommand(e)},t,n)},getToolbarIconButton:wf},Xs=rf({schema:[Yt("dom")],name:"label"}),qs=Sf("top-left"),Ys=Sf("top"),Ks=Sf("top-right"),Js=Sf("right"),Qs=Sf("bottom-right"),Zs=Sf("bottom"),nl=Sf("bottom-left"),el=[Xs,Sf("left"),Js,Ys,Zs,qs,Ks,nl,Qs,tf({name:"thumb",defaults:b({dom:{styles:{position:"absolute"}}}),overrides:function(n){return{events:Nr([zr(xe(),n,"spectrum"),zr(we(),n,"spectrum"),zr(Se(),n,"spectrum"),zr(Te(),n,"spectrum"),zr(Oe(),n,"spectrum"),zr(ke(),n,"spectrum")])}}}),tf({schema:[or("mouseIsDown",function(){return Pn(!1)})],name:"spectrum",overrides:function(t){function r(e,n){return o.getValueFromEvent(n).map(function(n){return o.setValueFrom(e,t,n)})}var o=t.model.manager;return{behaviours:Bo([Va.config({mode:"special",onLeft:function(n){return o.onLeft(n,t)},onRight:function(n){return o.onRight(n,t)},onUp:function(n){return o.onUp(n,t)},onDown:function(n){return o.onDown(n,t)}}),Li.config({})]),events:Nr([_r(xe(),r),_r(we(),r),_r(Te(),r),_r(Oe(),function(n,e){t.mouseIsDown.get()&&r(n,e)})])}}})],tl=/* */Object.freeze({onLoad:Tf,onUnload:Of,setValue:function(n,e,t,r){e.store.manager.setValue(n,e,t,r)},getValue:function(n,e,t){return e.store.manager.getValue(n,e,t)},getState:function(n,e,t){return t}}),rl=/* */Object.freeze({events:function(t,r){var n=t.resetOnDom?[Eo(function(n,e){Tf(n,t,r)}),Co(function(n,e){Of(n,t,r)})]:[$r(t,r,Tf)];return Nr(n)}}),ol=/* */Object.freeze({memory:kf,dataset:Ef,manual:function(){return Fo({readState:function(){}})},init:function(n){return n.store.manager.state(n)}}),il=[Qt("initialValue"),Yt("getFallbackEntry"),Yt("getDataKey"),Yt("setValue"),ni("manager",{setValue:Cf,getValue:function(n,e,t){var r=e.store,o=r.getDataKey(n);return t.lookup(o).fold(function(){return r.getFallbackEntry(o)},function(n){return n})},onLoad:function(e,t,r){t.store.initialValue.each(function(n){Cf(e,t,r,n)})},onUnload:function(n,e,t){t.clear()},state:Ef})],ul=[Yt("getValue"),tr("setValue",w),Qt("initialValue"),ni("manager",{setValue:function(n,e,t,r){e.store.setValue(n,r),e.onSetValue(n,r)},getValue:function(n,e,t){return e.store.getValue(n)},onLoad:function(e,t,n){t.store.initialValue.each(function(n){t.store.setValue(e,n)})},onUnload:w,state:Ao.init})],cl=[Qt("initialValue"),ni("manager",{setValue:function(n,e,t,r){t.set(r),e.onSetValue(n,r)},getValue:function(n,e,t){return t.get()},onLoad:function(n,e,t){e.store.initialValue.each(function(n){t.isNotSet()&&t.set(n)})},onUnload:function(n,e,t){t.clear()},state:kf})],al=[rr("store",{mode:"memory"},qt("mode",{memory:cl,manual:ul,dataset:il})),Ko("onSetValue"),tr("resetOnDom",!1)],fl=qr({fields:al,name:"representing",active:rl,apis:tl,extra:{setValueFrom:function(n,e){var t=fl.getValue(e);fl.setValue(n,t)}},state:ol}),sl=$i("width",function(n){return n.dom().offsetWidth}),ll=function(t,r){return{left:b(t),top:b(r),translate:function(n,e){return ll(t+n,r+e)}}},dl=ll,ml=b("slider.change.value"),gl="left",pl=Ts(-1),hl=Ts(1),vl=Fn.none,yl=Fn.none,bl={"top-left":Fn.none(),top:Fn.none(),"top-right":Fn.none(),right:Fn.some(function(n,e){rs(n,ns(jf(e)))}),"bottom-right":Fn.none(),bottom:Fn.none(),"bottom-left":Fn.none(),left:Fn.some(function(n,e){rs(n,ns(Ff(e)))})},xl=/* */Object.freeze({setValueFrom:function(n,e,t){var r=Ss(n,e,t),o=ws(r);return xs(n,o),r},setToMin:function(n,e){var t=Rf(e);xs(n,ws(t))},setToMax:function(n,e){var t=Vf(e);xs(n,ws(t))},findValueOfOffset:Ss,getValueFromEvent:function(n){return If(n).map(function(n){return n.left()})},findPositionOfValue:Os,setPositionFromValue:function(n,e,t,r){var o=Zf(t),i=Os(n,r.getSpectrum(n),o.x(),r.getLeftEdge(n),r.getRightEdge(n),t),u=Mf(e.element())/2;Gi(e.element(),"left",i-u+"px")},onLeft:pl,onRight:hl,onUp:vl,onDown:yl,edgeActions:bl}),wl=Fn.none,Sl=Fn.none,Tl=Ds(-1),Ol=Ds(1),kl={"top-left":Fn.none(),top:Fn.some(function(n,e){rs(n,es(Bf(e)))}),"top-right":Fn.none(),right:Fn.none(),"bottom-right":Fn.none(),bottom:Fn.some(function(n,e){rs(n,es(_f(e)))}),"bottom-left":Fn.none(),left:Fn.none()},El=/* */Object.freeze({setValueFrom:function(n,e,t){var r=Cs(n,e,t),o=Es(r);return ks(n,o),r},setToMin:function(n,e){var t=Af(e);ks(n,Es(t))},setToMax:function(n,e){var t=Nf(e);ks(n,Es(t))},findValueOfOffset:Cs,getValueFromEvent:function(n){return If(n).map(function(n){return n.top()})},findPositionOfValue:Ms,setPositionFromValue:function(n,e,t,r){var o=Zf(t),i=Ms(n,r.getSpectrum(n),o.y(),r.getTopEdge(n),r.getBottomEdge(n),t),u=Wi(e.element())/2;Gi(e.element(),"top",i-u+"px")},onLeft:wl,onRight:Sl,onUp:Tl,onDown:Ol,edgeActions:kl}),Cl=As(-1,!1),Dl=As(1,!1),Ml=As(-1,!0),Il=As(1,!0),Rl={"top-left":Fn.some(function(n,e){rs(n,ts(Ff(e),Bf(e)))}),top:Fn.some(function(n,e){rs(n,ts(Lf(e),Bf(e)))}),"top-right":Fn.some(function(n,e){rs(n,ts(jf(e),Bf(e)))}),right:Fn.some(function(n,e){rs(n,ts(jf(e),Gf(e)))}),"bottom-right":Fn.some(function(n,e){rs(n,ts(jf(e),_f(e)))}),bottom:Fn.some(function(n,e){rs(n,ts(Lf(e),_f(e)))}),"bottom-left":Fn.some(function(n,e){rs(n,ts(Ff(e),_f(e)))}),left:Fn.some(function(n,e){rs(n,ts(Ff(e),Gf(e)))})},Al=/* */Object.freeze({setValueFrom:function(n,e,t){var r=Ss(n,e,t.left()),o=Cs(n,e,t.top()),i=Rs(r,o);return Is(n,i),i},setToMin:function(n,e){var t=Rf(e),r=Af(e);Is(n,Rs(t,r))},setToMax:function(n,e){var t=Vf(e),r=Nf(e);Is(n,Rs(t,r))},getValueFromEvent:function(n){return If(n)},setPositionFromValue:function(n,e,t,r){var o=Zf(t),i=Os(n,r.getSpectrum(n),o.x(),r.getLeftEdge(n),r.getRightEdge(n),t),u=Ms(n,r.getSpectrum(n),o.y(),r.getTopEdge(n),r.getBottomEdge(n),t),c=Mf(e.element())/2,a=Wi(e.element())/2;Gi(e.element(),"left",i-c+"px"),Gi(e.element(),"top",u-a+"px")},onLeft:Cl,onRight:Dl,onUp:Ml,onDown:Il,edgeActions:Rl}),Fl=[tr("stepSize",1),tr("onChange",w),tr("onChoose",w),tr("onInit",w),tr("onDragStart",w),tr("onDragEnd",w),tr("snapToGrid",!1),tr("rounded",!0),Qt("snapStart"),Kt("model",qt("mode",{x:[tr("minX",0),tr("maxX",100),or("value",function(n){return Pn(n.mode.minX)}),Yt("getInitialValue"),ni("manager",xl)],y:[tr("minY",0),tr("maxY",100),or("value",function(n){return Pn(n.mode.minY)}),Yt("getInitialValue"),ni("manager",El)],xy:[tr("minX",0),tr("maxX",100),tr("minY",0),tr("maxY",100),or("value",function(n){return Pn({x:b(n.mode.minX),y:b(n.mode.minY)})}),Yt("getInitialValue"),ni("manager",Al)]})),mc("sliderBehaviours",[Va,fl]),or("mouseIsDown",function(){return Pn(!1)})],Bl=b("mouse.released"),Vl=vf({name:"Slider",configFields:Fl,partFields:el,factory:function(i,n,e,t){function u(n){return Ec(n,i,"thumb")}function c(n){return Ec(n,i,"spectrum")}function r(n){return kc(n,i,"left-edge")}function o(n){return kc(n,i,"right-edge")}function a(n){return kc(n,i,"top-edge")}function f(n){return kc(n,i,"bottom-edge")}function s(n,e){v.setPositionFromValue(n,e,i,{getLeftEdge:r,getRightEdge:o,getTopEdge:a,getBottomEdge:f,getSpectrum:c})}function l(n,e){h.value.set(e);var t=u(n);return s(n,t),i.onChange(n,t,e),Fn.some(!0)}function d(t){var n=i.mouseIsDown.get();i.mouseIsDown.set(!1),n&&kc(t,i,"thumb").each(function(n){var e=h.value.get();i.onChoose(t,n,e)})}function m(n,e){e.stop(),i.mouseIsDown.set(!0),i.onDragStart(n,u(n))}function g(n,e){e.stop(),i.onDragEnd(n,u(n)),d(n)}var p,h=i.model,v=h.manager;return{uid:i.uid,dom:i.dom,components:n,behaviours:pc(i.sliderBehaviours,[Va.config({mode:"special",focusIn:function(n){return kc(n,i,"spectrum").map(Va.focusIn).map(b(!0))}}),fl.config({store:{mode:"manual",getValue:function(n){return h.value.get()}}}),Ci.config({channels:(p={},p[Bl()]={onReceive:d},p)})]),events:Nr([_r(ml(),function(n,e){l(n,e.event().value())}),Eo(function(n,e){var t=h.getInitialValue();h.value.set(t);var r=u(n);s(n,r);var o=c(n);i.onInit(n,r,o,h.value.get())}),_r(xe(),m),_r(Se(),g),_r(Te(),m),_r(ke(),g)]),apis:{resetToMin:function(n){v.setToMin(n,i)},resetToMax:function(n){v.setToMax(n,i)},changeValue:l,refresh:s},domModification:{styles:{position:"relative"}}}},apis:{resetToMin:function(n,e){n.resetToMin(e)},resetToMax:function(n,e){n.resetToMax(e)},refresh:function(n,e){n.refresh(e)}}}),Nl=function(n,r){var e={onChange:function(n,e,t){r.undoManager.transact(function(){r.formatter.apply("forecolor",{value:t}),r.nodeChanged()})},getInitialValue:function(){return-1}};return Fs(n,"color-levels",function(){return Bs(e)},r)},jl=Pt([Yt("getInitialValue"),Yt("onChange"),Yt("category"),Yt("sizes")]),_l=function(n){var o=Xt("SizeSlider",jl,n);return Vl.sketch({dom:{tag:"div",classes:[_i.resolve("slider-"+o.category+"-size-container"),_i.resolve("slider"),_i.resolve("slider-size-container")]},onChange:function(n,e,t){var r=t.x();!function(n){return 0<=n&&n<o.sizes.length}(r)||o.onChange(r)},onDragStart:function(n,e){Fi.on(e)},onDragEnd:function(n,e){Fi.off(e)},model:{mode:"x",minX:0,maxX:o.sizes.length-1,getInitialValue:function(){return{x:function(){return o.getInitialValue()}}}},stepSize:1,snapToGrid:!0,sliderBehaviours:Bo([Vi(Vl.refresh)]),components:[Vl.parts().spectrum({dom:Us('<div class="${prefix}-slider-size-container"></div>'),components:[bf('<div class="${prefix}-slider-size-line"></div>')]}),Vl.parts().thumb({dom:Us('<div class="${prefix}-slider-thumb"></div>'),behaviours:Bo([Fi.config({toggleClass:_i.resolve("thumb-active")})])})]})},Pl=["9px","10px","11px","12px","14px","16px","18px","20px","24px","32px","36px"],Hl={candidates:b(Pl),get:function(n){return function(e){return A(Pl,function(n){return n===e})}(Vs(n)).getOr(2)},apply:function(e,n){(function(n){return Fn.from(Pl[n])})(n).each(function(n){!function(n,e){Vs(n)!==e&&n.execCommand("fontSize",!1,e)}(e,n)})}},zl=Hl.candidates(),Ll=window.Promise?window.Promise:(_s=Gl.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(n){l.setTimeout(n,1)},Ps=Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)},Gl.prototype["catch"]=function(n){return this.then(null,n)},Gl.prototype.then=function(t,r){var o=this;return new Gl(function(n,e){$l.call(o,new Yl(t,r,n,e))})},Gl.all=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var a=Array.prototype.slice.call(1===n.length&&Ps(n[0])?n[0]:n);return new Gl(function(o,i){if(0===a.length)return o([]);var u=a.length;function c(e,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void t.call(n,function(n){c(e,n)},i)}a[e]=n,0==--u&&o(a)}catch(r){i(r)}}for(var n=0;n<a.length;n++)c(n,a[n])})},Gl.resolve=function(e){return e&&"object"==typeof e&&e.constructor===Gl?e:new Gl(function(n){n(e)})},Gl.reject=function(t){return new Gl(function(n,e){e(t)})},Gl.race=function(o){return new Gl(function(n,e){for(var t=0,r=o;t<r.length;t++)r[t].then(n,e)})},Gl);function Gl(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],Kl(n,Ul(Wl,this),Ul(Xl,this))}function Ul(n,e){return function(){return n.apply(e,arguments)}}function $l(r){var o=this;null!==this._state?_s(function(){var n=o._state?r.onFulfilled:r.onRejected;if(null!==n){var e;try{e=n(o._value)}catch(t){return void r.reject(t)}r.resolve(e)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function Wl(n){try{if(n===this)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void Kl(Ul(e,n),Ul(Wl,this),Ul(Xl,this))}this._state=!0,this._value=n,ql.call(this)}catch(t){Xl.call(this,t)}}function Xl(n){this._state=!1,this._value=n,ql.call(this)}function ql(){for(var n=0,e=this._deferreds;n<e.length;n++){var t=e[n];$l.call(this,t)}this._deferreds=[]}function Yl(n,e,t,r){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof e?e:null,this.resolve=t,this.reject=r}function Kl(n,e,t){var r=!1;try{n(function(n){r||(r=!0,e(n))},function(n){r||(r=!0,t(n))})}catch(o){if(r)return;r=!0,t(o)}}function Jl(n){return function e(t){return new Ll(function(n){var e=new l.FileReader;e.onloadend=function(){n(e.result)},e.readAsDataURL(t)})}(n).then(function(n){return n.split(",")[1]})}function Ql(o,i){(function(n){return Jl(n)})(i).then(function(r){o.undoManager.transact(function(){var n=o.editorUpload.blobCache,e=n.create(yc("mceu"),i,r);n.add(e);var t=o.dom.createHTML("img",{src:e.blobUri()});o.insertContent(t)})})}function Zl(t){var e=js({dom:{tag:"input",attributes:{accept:"image/*",type:"file",title:""},styles:{visibility:"hidden",position:"absolute"}},events:Nr([Lr(Re()),_r(Ie(),function(n,e){(function(n){var e=n.event(),t=e.raw().target.files||e.raw().dataTransfer.files;return Fn.from(t[0])})(e).each(function(n){Ql(t,n)})})])});return Ls.sketch({dom:Ws.getToolbarIconButton("image",t),components:[e.asSpec()],action:function(n){e.get(n).element().dom().click()}})}function nd(n){return n.dom().textContent}function ed(n){return 0<n.length}function td(n){return n===undefined||null===n?"":n}function rd(n,e,t){return t.text.toOption().filter(ed).fold(function(){return function(n){return Qr(n,"href")===nd(n)}(n)?Fn.some(e):Fn.none()},Fn.some)}function od(n,e){var t=e.selection.getRng();n(),e.selection.setRng(t)}function id(n){return n.dom().value}function ud(n,e){if(e===undefined)throw new Error("Value.set was undefined");n.dom().value=e}function cd(n){return x(x({},function(n){return Bo([Li.config({onFocus:!1===n.selectOnFocus?w:function(n){var e=n.element(),t=id(e);e.dom().setSelectionRange(0,t.length)}})])}(n)),pc(n.inputBehaviours,[fl.config({store:{mode:"manual",initialValue:n.data.getOr(undefined),getValue:function(n){return id(n.element())},setValue:function(n,e){id(n.element())!==e&&ud(n.element(),e)}},onSetValue:n.onSetValue})]))}function ad(n,e){var t=js(pm.sketch({inputAttributes:{placeholder:bm.translate(e)},onSetValue:function(n,e){G(n,Me())},inputBehaviours:Bo([lm.config({find:Fn.some}),ym.config({}),Va.config({mode:"execution"})]),selectOnFocus:!1})),r=js(Ls.sketch({dom:Us('<button class="${prefix}-input-container-x ${prefix}-icon-cancel-circle ${prefix}-icon"></button>'),action:function(n){var e=t.get(n);fl.setValue(e,"")}}));return{name:n,spec:dm.sketch({dom:Us('<div class="${prefix}-input-container"></div>'),components:[t.asSpec(),r.asSpec()],containerBehaviours:Bo([Fi.config({toggleClass:_i.resolve("input-container-empty")}),lm.config({find:function(n){return Fn.some(t.get(n))}}),am("input-clearing",[_r(Me(),function(n){var e=t.get(n);(0<fl.getValue(e).length?Fi.off:Fi.on)(n)})])])})}}function fd(n,e,t){e.disabled&&wm(n,e)}function sd(n,e){return!0===e.useNative&&k(xm,q(n.element()))}function ld(n){Kr(n.element(),"disabled","disabled")}function dd(n){no(n.element(),"disabled")}function md(n){Kr(n.element(),"aria-disabled","true")}function gd(n){Kr(n.element(),"aria-disabled","false")}function pd(e,n,t){n.disableClass.each(function(n){co(e.element(),n)}),(sd(e,n)?dd:gd)(e),n.onEnabled(e)}function hd(n,e){return sd(n,e)?function(n){return Zr(n.element(),"disabled")}(n):function(n){return"true"===Qr(n.element(),"aria-disabled")}(n)}function vd(n){return"<alloy.field."+n+">"}function yd(){function e(){t.get().each(function(n){n.destroy()})}var t=Pn(Fn.none());return{clear:function(){e(),t.set(Fn.none())},isSet:function(){return t.get().isSome()},set:function(n){e(),t.set(Fn.some(n))},run:function(n){t.get().each(n)}}}function bd(){var e=Pn(Fn.none());return{clear:function(){e.set(Fn.none())},set:function(n){e.set(Fn.some(n))},isSet:function(){return e.get().isSome()},on:function(n){e.get().each(n)}}}function xd(n){function r(e,n,t){return Ls.sketch({dom:Us('<span class="${prefix}-icon-'+n+' ${prefix}-icon"></span>'),action:function(n){U(n,u,{direction:e})},buttonBehaviours:Bo([km.config({disableClass:_i.resolve("toolbar-navigation-disabled"),disabled:!t})])})}function o(n,o){var i=Yi(n.element(),"."+_i.resolve("serialised-dialog-screen"));Qi(n.element(),"."+_i.resolve("serialised-dialog-chain")).each(function(r){0<=c.state.currentScreen.get()+o&&c.state.currentScreen.get()+o<i.length&&(gi(r,"left").each(function(n){var e=parseInt(n,10),t=Mf(i[0]);Gi(r,"left",e-o*t+"px")}),c.state.currentScreen.set(c.state.currentScreen.get()+o))})}function i(e){var n=Yi(e.element(),"input");Fn.from(n[c.state.currentScreen.get()]).each(function(n){e.getSystem().getByDom(n).each(function(n){!function(n,e){n.getSystem().triggerFocus(e,n.element())}(e,n.element())})});var t=f.get(e);Cu.highlightAt(t,c.state.currentScreen.get())}var u="navigateEvent",e=Sr([Yt("fields"),tr("maxFieldIndex",n.fields.length-1),Yt("onExecute"),Yt("getInitialValue"),or("state",function(){return{dialogSwipeState:bd(),currentScreen:Pn(0)}})]),c=Xt("SerialisedDialog",e,n),a=js(Dm(function(t){return{dom:Us('<div class="${prefix}-serialised-dialog"></div>'),components:[dm.sketch({dom:Us('<div class="${prefix}-serialised-dialog-chain" style="left: 0px; position: absolute;"></div>'),components:de(c.fields,function(n,e){return e<=c.maxFieldIndex?dm.sketch({dom:Us('<div class="${prefix}-serialised-dialog-screen"></div>'),components:[r(-1,"previous",0<e),t.field(n.name,n.spec),r(1,"next",e<c.maxFieldIndex)]}):t.field(n.name,n.spec)})})],formBehaviours:Bo([Vi(function(n,e){!function(n,e){Qi(n.element(),"."+_i.resolve("serialised-dialog-chain")).each(function(n){Gi(n,"left",-c.state.currentScreen.get()*e.width+"px")})}(n,e)}),Va.config({mode:"special",focusIn:function(n){i(n)},onTab:function(n){return o(n,1),Fn.some(!0)},onShiftTab:function(n){return o(n,-1),Fn.some(!0)}}),am("form-events",[Eo(function(e,n){c.state.currentScreen.set(0),c.state.dialogSwipeState.clear();var t=f.get(e);Cu.highlightFirst(t),c.getInitialValue(e).each(function(n){fl.setValue(e,n)})}),Mo(c.onExecute),_r(Ae(),function(n,e){"left"===e.event().raw().propertyName&&i(n)}),_r(u,function(n,e){var t=e.event().direction();o(n,t)})])])}})),f=js({dom:Us('<div class="${prefix}-dot-container"></div>'),behaviours:Bo([Cu.config({highlightClass:_i.resolve("dot-active"),itemClass:_i.resolve("dot-item")})]),components:B(c.fields,function(n,e){return e<=c.maxFieldIndex?[bf('<div class="${prefix}-dot-item ${prefix}-icon-full-dot ${prefix}-icon"></div>')]:[]})});return{dom:Us('<div class="${prefix}-serializer-wrapper"></div>'),components:[a.asSpec(),f.asSpec()],behaviours:Bo([Va.config({mode:"special",focusIn:function(n){var e=a.get(n);Va.focusIn(e)}}),am("serializer-wrapper-events",[_r(xe(),function(n,e){var t=e.event();c.state.dialogSwipeState.set(Mm(t.raw().touches[0].clientX))}),_r(we(),function(n,e){var t=e.event();c.state.dialogSwipeState.on(function(n){e.event().prevent(),c.state.dialogSwipeState.set(Im(n,t.raw().touches[0].clientX))})}),_r(Se(),function(r){c.state.dialogSwipeState.on(function(n){var e=a.get(r),t=-1*Rm(n);o(e,t)})})])])}}function wd(e){function n(n){return function(){throw new Error("The component must be in a context to send: "+n+"\n"+bo(e().element())+" is not in context.")}}return{debugInfo:b("fake"),triggerEvent:n("triggerEvent"),triggerFocus:n("triggerFocus"),triggerEscape:n("triggerEscape"),build:n("build"),addToWorld:n("addToWorld"),removeFromWorld:n("removeFromWorld"),addToGui:n("addToGui"),removeFromGui:n("removeFromGui"),getByUid:n("getByUid"),getByDom:n("getByDom"),broadcast:n("broadcast"),broadcastOn:n("broadcastOn"),broadcastEvent:n("broadcastEvent"),isConnected:b(!1)}}function Sd(n,o){var i={};return Nn(n,function(n,r){Nn(n,function(n,e){var t=kn(e,[])(i);i[e]=t.concat([o(r,n)])})}),i}function Td(n){return n.cHandler}function Od(n,e){return{name:b(n),handler:b(e)}}function kd(n,e,t){var r=x(x({},t),function(n,e){var t={};return C(n,function(n){t[n.name()]=n.handlers(e)}),t}(e,n));return Sd(r,Od)}function Ed(n){var i=function(n){return ce(n)?{can:b(!0),abort:b(!1),run:n}:n}(n);return function(n,e){for(var t=[],r=2;r<arguments.length;r++)t[r-2]=arguments[r];var o=[n,e].concat(t);i.abort.apply(undefined,o)?e.stop():i.can.apply(undefined,o)&&i.run.apply(undefined,o)}}function Cd(n,e,t){var r=e[t];return r?function(u,c,n,a){var e=n.slice(0);try{var t=e.sort(function(n,e){var t=n[c](),r=e[c](),o=a.indexOf(t),i=a.indexOf(r);if(-1===o)throw new Error("The ordering for "+u+" does not have an entry for "+t+".\nOrder specified: "+JSON.stringify(a,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+r+".\nOrder specified: "+JSON.stringify(a,null,2));return o<i?-1:i<o?1:0});return vt.value(t)}catch(r){return vt.error([r])}}("Event: "+t,"name",n,r).map(function(n){var e=de(n,function(n){return n.handler()});return Vr(e)}):function(n,e){return vt.error(["The event ("+n+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+JSON.stringify(de(e,function(n){return n.name()}),null,2)])}(t,n)}function Dd(n){return $t("custom.definition",Sr([kr("dom","dom",Tt(),Sr([Yt("tag"),tr("styles",{}),tr("classes",[]),tr("attributes",{}),Qt("value"),Qt("innerHtml")])),Yt("components"),Yt("uid"),tr("events",{}),tr("apis",{}),kr("eventOrder","eventOrder",function(n){return St.mergeWithThunk(b(n))}({"alloy.execute":["disabling","alloy.base.behaviour","toggling","typeaheadevents"],"alloy.focus":["alloy.base.behaviour","focusing","keying"],"alloy.system.init":["alloy.base.behaviour","disabling","toggling","representing"],input:["alloy.base.behaviour","representing","streaming","invalidating"],"alloy.system.detached":["alloy.base.behaviour","representing","item-events","tooltipping"],mousedown:["focusing","alloy.base.behaviour","item-type-events"],touchstart:["focusing","alloy.base.behaviour","item-type-events"],mouseover:["item-type-events","tooltipping"]}),Dr()),Qt("domModification")]),n)}function Md(e,n){C(n,function(n){io(e,n)})}function Id(e,n){C(n,function(n){co(e,n)})}function Rd(n,e){return function(e,n){var t=de(n,function(n){return nr(n.name(),[Yt("config"),tr("state",Ao)])}),r=$t("component.behaviours",Sr(t),e.behaviours).fold(function(n){throw new Error(Cr(n)+"\nComplete spec:\n"+JSON.stringify(e,null,2))},function(n){return n});return{list:n,data:S(r,function(n){var e=n.map(function(n){return{config:n.config,state:n.state.init(n.config)}});return function(){return e}})}}(n,e)}function Ad(n){var e=function(n){var e=kn("behaviours",{})(n),t=D(Bn(e),function(n){return e[n]!==undefined});return de(t,function(n){return e[n].me})}(n);return Rd(n,e)}function Fd(n,e,t){var r=function(n){return x(x({},n.dom),{uid:n.uid,domChildren:de(n.components,function(n){return n.element()})})}(n),o=function(n){return n.domModification.fold(function(){return Ur({})},Ur)}(n),i={"alloy.base.modification":o};return function(n,e){return x(x({},n),{attributes:x(x({},n.attributes),e.attributes),styles:x(x({},n.styles),e.styles),classes:n.classes.concat(e.classes)})}(r,0<e.length?function(e,n,t,r){var o=x({},n);C(t,function(n){o[n.name()]=n.exhibit(e,r)});function i(n){return M(n,function(n,e){return x(x({},e.modification),n)},{})}var u=Sd(o,function(n,e){return{name:n,modification:e}}),c=M(u.classes,function(n,e){return e.modification.concat(n)},[]),a=i(u.attributes),f=i(u.styles);return Ur({classes:c,attributes:a,styles:f})}(t,i,e,r):o)}function Bd(n,e,t){var r={"alloy.base.behaviour":function(n){return n.events}(n)};return function(n,e,t,r){var o=kd(n,t,r);return Pm(o,e)}(t,n.eventOrder,e,r).getOrDie()}function Vd(t){function n(){return s}var r=Pn(jm),e=Wt(Dd(t)),o=Ad(t),i=function(n){return n.list}(o),u=function(n){return n.data}(o),c=function(n){var e=Je.fromTag(n.tag);Jr(e,n.attributes),Md(e,n.classes),di(e,n.styles),n.innerHtml.each(function(n){return ho(e,n)});var t=n.domChildren;return gn(e,t),n.value.each(function(n){ud(e,n)}),n.uid,mf(e,n.uid),e}(Fd(e,i,u)),a=Bd(e,i,u),f=Pn(e.components),s={getSystem:r.get,config:function(n){var e=u;return(ce(e[n.name()])?e[n.name()]:function(){throw new Error("Could not find "+n.name()+" in "+JSON.stringify(t,null,2))})()},hasConfigured:function(n){return ce(u[n.name()])},spec:b(t),readState:function(n){return u[n]().map(function(n){return n.state.readState()}).getOr("not enabled")},getApis:function(){return e.apis},connect:function(n){r.set(n)},disconnect:function(){r.set(wd(n))},element:b(c),syncComponents:function(){var n=at(c),e=B(n,function(n){return r.get().getByDom(n).fold(function(){return[]},function(n){return[n]})});f.set(e)},components:f.get,events:b(a)};return s}function Nd(n){var e=Nm(n),t=e.events,r=u(e,["events"]),o=function(n){var e=kn("components",[])(n);return de(e,Lm)}(r),i=x(x({},r),{events:x(x({},Vm),t),components:o});return vt.value(Vd(i))}function jd(n){var e=Je.fromText(n);return Hm({element:e})}function _d(n){(go(n.element()).isNone()||Li.isFocused(n))&&(Li.isFocused(n)||Li.focus(n),U(n,Um,{item:n}))}function Pd(n){U(n,$m,{item:n})}function Hd(n,e,t,r){var o=n.getSystem().build(r);mt(n,o,t)}function zd(n,e,t,r){var o=rg(n);R(o,function(n){return cn(r.element(),n.element())}).each(yn)}function Ld(e,n,t,r,o){var i=rg(e);return Fn.from(i[r]).map(function(n){return zd(e,0,0,n),o.each(function(n){Hd(e,0,function(n,e){!function(n,e,t){sn(n,t).fold(function(){ft(n,e)},function(n){ln(n,e)})}(n,e,r)},n)}),n})}function Gd(n,e){var t={};Nn(n,function(n,e){C(n,function(n){t[n]=e})});var r=e,o=function(n){return jn(n,function(n,e){return{k:n,v:e}})}(e),i=S(o,function(n,e){return[e].concat(ig(t,r,o,e))});return S(t,function(n){return Dt(i,n).getOr([n])})}function Ud(n,e,t,r){return Dt(e.routes,r.start).bind(function(n){return Dt(n,r.destination)})}function $d(t,r,n){(function(e,t,r){return lg(e,t).bind(function(n){return sg(e,t,r,n)})})(t,r,n).each(function(n){var e=n.transition;co(t.element(),e.transitionClass),no(t.element(),r.destinationAttr)})}function Wd(n,e,t,r){$d(n,e,t),Zr(n.element(),e.stateAttr)&&Qr(n.element(),e.stateAttr)!==r&&e.onFinish(n,r),Kr(n.element(),e.stateAttr,r)}function Xd(n){return Dt(n,"format").getOr(n.title)}function qd(n){return Mn(n,"items")?function(n){var e=xt(On(n,["items"]),{menu:!0}),t=wg(n.items);return{item:e,menus:xt(t.menus,En(n.title,t.items)),expansions:xt(t.expansions,En(n.title,n.title))}}(n):{item:n,menus:{},expansions:{}}}function Yd(n){var e=n.replace(/\|/g," ").trim();return 0<e.length?e.split(/\s+/):[]}function Kd(n){var e=n.toolbar!==undefined?n.toolbar:kg;return ie(e)?Eg(e):Yd(e)}function Jd(n){function e(){n.stopPropagation()}function t(){n.preventDefault()}var r=Je.fromDom(n.target),o=i(t,e);return function(n,e,t,r,o,i,u){return{target:b(n),x:b(e),y:b(t),stop:r,prevent:o,kill:i,raw:b(u)}}(r,n.clientX,n.clientY,e,t,o,n)}function Qd(n,e,t,r,o){var i=function(e,t){return function(n){e(n)&&t(Jd(n))}}(t,r);return n.dom().addEventListener(e,i,o),{unbind:d(Mg,n,e,i,o)}}function Zd(n,e,t){return function(n,e,t,r){return Qd(n,e,t,r,!1)}(n,e,Ig,t)}function nm(n,e,t){return function(n,e,t,r){return Qd(n,e,t,r,!0)}(n,e,Ig,t)}function em(n){var e=n.matchMedia("(orientation: portrait)").matches;return{isPortrait:b(e)}}var tm,rm,om=function(n){var e=Je.fromDom(n.selection.getStart());return Zi(e,"a")},im={getInfo:function(n){return om(n).fold(function(){return function(n){return{url:"",text:n.selection.getContent({format:"text"}),title:"",target:"",link:Fn.none()}}(n)},function(n){return function(n){var e=nd(n),t=Qr(n,"href"),r=Qr(n,"title"),o=Qr(n,"target");return{url:td(t),text:e!==t?td(e):"",title:td(r),target:td(o),link:Fn.some(n)}}(n)})},applyInfo:function(e,o){o.url.toOption().filter(ed).fold(function(){!function(e,n){n.link.bind(y).each(function(n){e.execCommand("unlink")})}(e,o)},function(t){var r=function(n,e){var t={};return t.href=n,e.title.toOption().filter(ed).each(function(n){t.title=n}),e.target.toOption().filter(ed).each(function(n){t.target=n}),t}(t,o);o.link.bind(y).fold(function(){var n=o.text.toOption().filter(ed).getOr(t);e.insertContent(e.dom.createHTML("a",r,e.dom.encode(n)))},function(e){var n=rd(e,t,o);Jr(e,r),n.each(function(n){!function(n,e){n.dom().textContent=e}(e,n)})})})},query:om},um=L(),cm=function(n,e){(um.os.isAndroid()?od:t)(e,n)},am=function(n,e){return{key:n,value:{config:{},me:function(n,e){var t=Nr(e);return qr({fields:[Yt("enabled")],name:n,active:{events:b(t)}})}(n,e),configAsRaw:b({}),initialConfig:{},state:Ao}}},fm=/* */Object.freeze({getCurrent:function(n,e,t){return e.find(n)}}),sm=[Yt("find")],lm=qr({fields:sm,name:"composing",apis:fm}),dm=hf({name:"Container",factory:function(n){var e=n.dom,t=e.attributes,r=u(e,["attributes"]);return{uid:n.uid,dom:x({tag:"div",attributes:x({role:"presentation"},t)},r),components:n.components,behaviours:gc(n.containerBehaviours),events:n.events,domModification:n.domModification,eventOrder:n.eventOrder}},configFields:[tr("components",[]),mc("containerBehaviours",[]),tr("events",{}),tr("domModification",{}),tr("eventOrder",{})]}),mm=hf({name:"DataField",factory:function(t){return{uid:t.uid,dom:t.dom,behaviours:ja(t.dataBehaviours,[fl.config({store:{mode:"memory",initialValue:t.getInitialValue()}}),lm.config({find:Fn.some})]),events:Nr([Eo(function(n,e){fl.setValue(n,t.getInitialValue())})])}},configFields:[Yt("uid"),Yt("dom"),Yt("getInitialValue"),Na("dataBehaviours",[fl,lm])]}),gm=b([Qt("data"),tr("inputAttributes",{}),tr("inputStyles",{}),tr("tag","input"),tr("inputClasses",[]),Ko("onSetValue"),tr("styles",{}),tr("eventOrder",{}),mc("inputBehaviours",[fl,Li]),tr("selectOnFocus",!0)]),pm=hf({name:"Input",configFields:gm(),factory:function(n,e){return{uid:n.uid,dom:function(n){return{tag:n.tag,attributes:x({type:"text"},n.inputAttributes),styles:n.inputStyles,classes:n.inputClasses}}(n),components:[],behaviours:cd(n),eventOrder:n.eventOrder}}}),hm=/* */Object.freeze({exhibit:function(n,e){return Ur({attributes:Cn([{key:e.tabAttr,value:"true"}])})}}),vm=[tr("tabAttr","data-alloy-tabstop")],ym=qr({fields:vm,name:"tabstopping",active:hm}),bm=tinymce.util.Tools.resolve("tinymce.util.I18n"),xm=["input","button","textarea","select"],wm=function(e,n,t){n.disableClass.each(function(n){io(e.element(),n)}),(sd(e,n)?ld:md)(e),n.onDisabled(e)},Sm=/* */Object.freeze({enable:pd,disable:wm,isDisabled:hd,onLoad:fd,set:function(n,e,t,r){(r?wm:pd)(n,e,t)}}),Tm=/* */Object.freeze({exhibit:function(n,e,t){return Ur({classes:e.disabled?e.disableClass.map(_).getOr([]):[]})},events:function(t,n){return Nr([jr(Pe(),function(n,e){return hd(n,t)}),$r(t,n,fd)])}}),Om=[tr("disabled",!1),tr("useNative",!0),Qt("disableClass"),Ko("onDisabled"),Ko("onEnabled")],km=qr({fields:Om,name:"disabling",active:Tm,apis:Sm}),Em=[mc("formBehaviours",[fl])],Cm=function(r,n,e){return{uid:r.uid,dom:r.dom,components:n,behaviours:pc(r.formBehaviours,[fl.config({store:{mode:"manual",getValue:function(n){var e=function(n,e){var t=n.getSystem();return S(e.partUids,function(n,e){return b(t.getByUid(n))})}(n,r);return S(e,function(n,e){return n().bind(function(n){return function(n,e){return n.fold(function(){return vt.error(e)},vt.value)}(lm.getCurrent(n),"missing current")}).map(fl.getValue)})},setValue:function(t,n){Nn(n,function(e,n){kc(t,r,n).each(function(n){lm.getCurrent(n).each(function(n){fl.setValue(n,e)})})})}}})]),apis:{getField:function(n,e){return kc(n,r,e).bind(lm.getCurrent)}}}},Dm=(Ic(function(n,e,t){return n.getField(e,t)}),function(n){var t,e=(t=[],{field:function(n,e){return t.push(n),function(n,e,t){return{uiType:Ga(),owner:n,name:e,config:t,validated:{}}}("form",vd(n),e)},record:function(){return t}}),r=n(e),o=e.record(),i=de(o,function(n){return tf({name:n,pname:vd(n)})});return Fc("form",Em,i,Cm,r)}),Mm=function(n){return{xValue:n,points:[]}},Im=function(n,e){if(e===n.xValue)return n;var t=0<e-n.xValue?1:-1,r={direction:t,xValue:e};return{xValue:e,points:(0===n.points.length?[]:n.points[n.points.length-1].direction===t?n.points.slice(0,n.points.length-1):n.points).concat([r])}},Rm=function(n){if(0===n.points.length)return 0;var e=n.points[0].direction,t=n.points[n.points.length-1].direction;return-1===e&&-1===t?-1:1===e&&1===t?1:0},Am=X(function(t,r){return[{label:"the link group",items:[xd({fields:[ad("url","Type or paste URL"),ad("text","Link text"),ad("title","Link title"),ad("target","Link target"),function(n){return{name:n,spec:mm.sketch({dom:{tag:"span",styles:{display:"none"}},getInitialValue:function(){return Fn.none()}})}}("link")],maxFieldIndex:["url","text","title","target"].length-1,getInitialValue:function(){return Fn.some(im.getInfo(r))},onExecute:function(n){var e=fl.getValue(n);im.applyInfo(r,e),t.restoreToolbar(),r.focus()}})]}]}),Fm=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],Bm=Nr([(tm=Ve(),rm=function(n,e){var t=e.event().originator(),r=e.event().target();return!function(n,e,t){return cn(e,n.element())&&!cn(e,t)}(n,t,r)||(l.console.warn(Ve()+" did not get interpreted by the desired target. \nOriginator: "+bo(t)+"\nTarget: "+bo(r)+"\nCheck the "+Ve()+" event handlers"),!1)},{key:tm,value:Br({can:rm})})]),Vm=/* */Object.freeze({events:Bm}),Nm=y,jm=wd(),_m=function(n,e){return function(n,e){return{cHandler:n,purpose:b(e)}}(d.apply(undefined,[n.handler].concat(e)),n.purpose())},Pm=function(n,i){var e=_n(n,function(r,o){return(1===r.length?vt.value(r[0].handler()):Cd(r,i,o)).map(function(n){var e=Ed(n),t=1<r.length?D(i[o],function(e){return E(r,function(n){return n.name()===e})}).join(" > "):r[0].name();return En(o,function(n,e){return{handler:n,purpose:b(e)}}(e,t))})});return Dn(e,{})},Hm=function(n){var e=Xt("external.component",Pt([Yt("element"),Qt("uid")]),n),t=Pn(wd());e.uid.each(function(n){mf(e.element,n)});var r={getSystem:t.get,config:Fn.none,hasConfigured:b(!1),connect:function(n){t.set(n)},disconnect:function(){t.set(wd(function(){return r}))},getApis:function(){return{}},element:b(e.element),spec:b(n),readState:b("No state"),syncComponents:w,components:b([]),events:b({})};return Mc(r)},zm=Rc,Lm=function(e){return function(n){return Dt(n,af)}(e).fold(function(){var n=e.hasOwnProperty("uid")?e:x({uid:zm("")},e);return Nd(n).getOrDie()},function(n){return n})},Gm=Mc,Um="alloy.item-hover",$m="alloy.item-focus",Wm=b(Um),Xm=b($m),qm=[Yt("data"),Yt("components"),Yt("dom"),tr("hasSubmenu",!1),Qt("toggling"),Na("itemBehaviours",[Fi,Li,Va,fl]),tr("ignoreFocus",!1),tr("domModification",{}),ni("builder",function(n){return{dom:n.dom,domModification:x(x({},n.domModification),{attributes:x(x(x({role:n.toggling.isSome()?"menuitemcheckbox":"menuitem"},n.domModification.attributes),{"aria-haspopup":n.hasSubmenu}),n.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:ja(n.itemBehaviours,[n.toggling.fold(Fi.revoke,function(n){return Fi.config(x({aria:{mode:"checked"}},n))}),Li.config({ignore:n.ignoreFocus,stopMousedown:n.ignoreFocus,onFocus:function(n){Pd(n)}}),Va.config({mode:"execution"}),fl.config({store:{mode:"memory",initialValue:n.data}}),am("item-type-events",function a(){for(var n=0,e=0,t=arguments.length;e<t;e++)n+=arguments[e].length;var r=Array(n),o=0;for(e=0;e<t;e++)for(var i=arguments[e],u=0,c=i.length;u<c;u++,o++)r[o]=i[u];return r}(ai(),[_r(Ee(),_d),_r(He(),Li.focus)]))]),components:n.components,eventOrder:n.eventOrder}}),tr("eventOrder",{})],Ym=[Yt("dom"),Yt("components"),ni("builder",function(n){return{dom:n.dom,components:n.components,events:Nr([function(n){return _r(n,function(n,e){e.stop()})}(He())])}})],Km=b([tf({name:"widget",overrides:function(e){return{behaviours:Bo([fl.config({store:{mode:"manual",getValue:function(n){return e.data},setValue:function(){}}})])}}})]),Jm=[Yt("uid"),Yt("data"),Yt("components"),Yt("dom"),tr("autofocus",!1),tr("ignoreFocus",!1),Na("widgetBehaviours",[fl,Li,Va]),tr("domModification",{}),Dc(Km()),ni("builder",function(t){function r(n){return kc(n,t,"widget").map(function(n){return Va.focusIn(n),n})}function n(n,e){return Iu(e.event().target())||t.autofocus&&e.setSource(n.element()),Fn.none()}var e=Tc(0,t,Km()),o=Oc("item-widget",t,e.internals());return{dom:t.dom,components:o,domModification:t.domModification,events:Nr([Mo(function(n,e){r(n).each(function(n){e.stop()})}),_r(Ee(),_d),_r(He(),function(n,e){t.autofocus?r(n):Li.focus(n)})]),behaviours:ja(t.widgetBehaviours,[fl.config({store:{mode:"memory",initialValue:t.data}}),Li.config({ignore:t.ignoreFocus,onFocus:function(n){Pd(n)}}),Va.config({mode:"special",focusIn:t.autofocus?function(n){r(n)}:jo(),onLeft:n,onRight:n,onEscape:function(n,e){return Li.isFocused(n)||t.autofocus?(t.autofocus&&e.setSource(n.element()),Fn.none()):(Li.focus(n),Fn.some(!0))}})])}})],Qm=qt("type",{widget:Jm,item:qm,separator:Ym}),Zm=b([of({factory:{sketch:function(n){var e=Xt("menu.spec item",Qm,n);return e.builder(e)}},name:"items",unit:"item",defaults:function(n,e){return e.hasOwnProperty("uid")?e:x(x({},e),{uid:Rc("item")})},overrides:function(n,e){return{type:e.type,ignoreFocus:n.fakeFocus,domModification:{classes:[n.markers.item]}}}})]),ng=b([Yt("value"),Yt("items"),Yt("dom"),Yt("components"),tr("eventOrder",{}),mc("menuBehaviours",[Cu,fl,lm,Va]),rr("movement",{mode:"menu",moveOnTab:!0},qt("mode",{grid:[ki(),ni("config",function(n,e){return{mode:"flatgrid",selector:"."+n.markers.item,initSize:{numColumns:e.initSize.numColumns,numRows:e.initSize.numRows},focusManager:n.focusManager}})],matrix:[ni("config",function(n,e){return{mode:"matrix",selectors:{row:e.rowSelector,cell:"."+n.markers.item},focusManager:n.focusManager}}),Yt("rowSelector")],menu:[tr("moveOnTab",!0),ni("config",function(n,e){return{mode:"menu",selector:"."+n.markers.item,moveOnTab:e.moveOnTab,focusManager:n.focusManager}})]})),Kt("markers",Ti()),tr("fakeFocus",!1),tr("focusManager",pu()),Ko("onHighlight")]),eg=b("alloy.menu-focus"),tg=vf({name:"Menu",configFields:ng(),partFields:Zm(),factory:function(n,e,t,r){return{uid:n.uid,dom:n.dom,markers:n.markers,behaviours:pc(n.menuBehaviours,[Cu.config({highlightClass:n.markers.selectedItem,itemClass:n.markers.item,onHighlight:n.onHighlight}),fl.config({store:{mode:"memory",initialValue:n.value}}),lm.config({find:Fn.some}),Va.config(n.movement.config(n,n.movement))]),events:Nr([_r(Xm(),function(e,t){var n=t.event();e.getSystem().getByDom(n.target()).each(function(n){Cu.highlight(e,n),t.stop(),U(e,eg(),{menu:e,item:n})})}),_r(Wm(),function(n,e){var t=e.event().item();Cu.highlight(n,t)})]),components:e,eventOrder:n.eventOrder,domModification:{attributes:{role:"menu"}}}}}),rg=function(n,e){return n.components()},og=qr({fields:[],name:"replacing",apis:/* */Object.freeze({append:function(n,e,t,r){Hd(n,0,ft,r)},prepend:function(n,e,t,r){Hd(n,0,mn,r)},remove:zd,replaceAt:Ld,replaceBy:function(e,n,t,r,o){var i=rg(e);return A(i,r).bind(function(n){return Ld(e,0,0,n,o)})},set:function(e,n,t,r){!function(n,t){var r=an(t),e=mo(r).bind(function(e){function n(n){return cn(e,n)}return n(t)?Fn.some(t):Fr(t,n)}),o=n(t);e.each(function(e){mo(r).filter(function(n){return cn(n,e)}).fold(function(){so(e)},w)})}(function(){var n=de(r,e.getSystem().build);vn(e,n)},e.element())},contents:rg})}),ig=function(t,r,o,n){return Dt(o,n).bind(function(n){return Dt(t,n).bind(function(n){var e=ig(t,r,o,n);return Fn.some([n].concat(e))})}).getOr([])},ug=function(n){return"prepared"===n.type?Fn.some(n.menu):Fn.none()},cg={init:function(){function o(t){return function(n,e){for(var t=Bn(n),r=0,o=t.length;r<o;r++){var i=t[r],u=n[i];if(e(u,i,n))return Fn.some(u)}return Fn.none()}(i.get(),function(n,e){return n===t})}var i=Pn({}),u=Pn({}),c=Pn({}),a=Pn(Fn.none()),f=Pn({}),s=function(n){return e(n).bind(ug)},e=function(n){return Dt(u.get(),n)},t=function(n){return Dt(i.get(),n)};return{setMenuBuilt:function(n,e){var t;u.set(x(x({},u.get()),((t={})[n]={type:"prepared",menu:e},t)))},setContents:function(n,e,t,r){a.set(Fn.some(n)),i.set(t),u.set(e),f.set(r);var o=Gd(r,t);c.set(o)},expand:function(t){return Dt(i.get(),t).map(function(n){var e=Dt(c.get(),t).getOr([]);return[n].concat(e)})},refresh:function(n){return Dt(c.get(),n)},collapse:function(n){return Dt(c.get(),n).bind(function(n){return 1<n.length?Fn.some(n.slice(1)):Fn.none()})},lookupMenu:e,lookupItem:t,otherMenus:function(n){var e=f.get();return j(Bn(e),n)},getPrimary:function(){return a.get().bind(s)},getMenus:function(){return u.get()},clear:function(){i.set({}),u.set({}),c.set({}),a.set(Fn.none())},isClear:function(){return a.get().isNone()},getTriggeringPath:function(n,r){var e=D(t(n).toArray(),function(n){return s(n).isSome()});return Dt(c.get(),n).bind(function(n){var t=N(e.concat(n));return function(n){for(var e=[],t=0;t<n.length;t++){var r=n[t];if(!r.isSome())return Fn.none();e.push(r.getOrDie())}return Fn.some(e)}(B(t,function(n,e){return function(n,t,r){return s(n).bind(function(e){return o(n).bind(function(n){return t(n).map(function(n){return{triggeredMenu:e,triggeringItem:n,triggeringPath:r}})})})}(n,r,t.slice(0,e+1)).fold(function(){return a.get().is(n)?[]:[Fn.none()]},function(n){return[Fn.some(n)]})}))})}}},extractPreparedMenu:ug},ag=b("collapse-item"),fg=hf({name:"TieredMenu",configFields:[Zo("onExecute"),Zo("onEscape"),Qo("onOpenMenu"),Qo("onOpenSubmenu"),Qo("onRepositionMenu"),Ko("onCollapseMenu"),tr("highlightImmediately",!0),Jt("data",[Yt("primary"),Yt("menus"),Yt("expansions")]),tr("fakeFocus",!1),Ko("onHighlight"),Ko("onHover"),Jt("markers",[Yt("backgroundMenu")].concat(wi()).concat(Si())),Yt("dom"),tr("navigateOnHover",!0),tr("stayInDom",!1),mc("tmenuBehaviours",[Va,Cu,lm,og]),tr("eventOrder",{})],apis:{collapseMenu:function(n,e){n.collapseMenu(e)},highlightPrimary:function(n,e){n.highlightPrimary(e)},repositionMenus:function(n,e){n.repositionMenus(e)}},factory:function(c,n){function r(r,o,n){return S(n,function(n,e){function t(){return tg.sketch(x(x({dom:n.dom},n),{value:e,items:n.items,markers:c.markers,fakeFocus:c.fakeFocus,onHighlight:c.onHighlight,focusManager:c.fakeFocus?function(){function o(n){return Cu.getHighlighted(n).map(function(n){return n.element()})}return{get:o,set:function(e,n){var t=o(e);e.getSystem().getByDom(n).fold(w,function(n){Cu.highlight(e,n)});var r=o(e);gu(e,t,r)}}}():pu()}))}return e===o?{type:"prepared",menu:r.getSystem().build(t())}:{type:"notbuilt",nbMenu:t}})}function a(n){return fl.getValue(n).value}function u(e,n){Cu.highlight(e,n),Cu.getHighlighted(n).orThunk(function(){return Cu.getFirst(n)}).each(function(n){W(e,n.element(),He())})}function f(e,n){return xo(de(n,function(n){return e.lookupMenu(n).bind(function(n){return"prepared"===n.type?Fn.some(n.menu):Fn.none()})}))}function s(e,n,t){var r=f(n,n.otherMenus(t));C(r,function(n){Id(n.element(),[c.markers.backgroundMenu]),c.stayInDom||og.remove(e,n)})}function l(n,r){var e=function(r){return o.get().getOrThunk(function(){var t={},n=Yi(r.element(),"."+c.markers.item),e=D(n,function(n){return"true"===Qr(n,"aria-haspopup")});return C(e,function(n){r.getSystem().getByDom(n).each(function(n){var e=a(n);t[e]=n})}),o.set(Fn.some(t)),t})}(n);Nn(e,function(n,e){var t=k(r,e);Kr(n.element(),"aria-expanded",t)})}function d(r,o,i){return Fn.from(i[0]).bind(function(n){return o.lookupMenu(n).bind(function(n){if("notbuilt"===n.type)return Fn.none();var e=n.menu,t=f(o,i.slice(1));return C(t,function(n){io(n.element(),c.markers.backgroundMenu)}),K(e.element())||og.append(r,Gm(e)),Id(e.element(),[c.markers.backgroundMenu]),u(r,e),s(r,o,i),Fn.some(e)})})}var m,e,o=Pn(Fn.none()),g=cg.init(),i=function(n){return S(c.data.menus,function(n,e){return B(n.items,function(n){return"separator"===n.type?[]:[n.data.value]})})};(e=m=m||{})[e.HighlightSubmenu=0]="HighlightSubmenu",e[e.HighlightParent=1]="HighlightParent";function p(o,i,u){void 0===u&&(u=m.HighlightSubmenu);var n=a(i);return g.expand(n).bind(function(r){return l(o,r),Fn.from(r[0]).bind(function(t){return g.lookupMenu(t).bind(function(n){var e=function(n,e,t){if("notbuilt"!==t.type)return t.menu;var r=n.getSystem().build(t.nbMenu());return g.setMenuBuilt(e,r),r}(o,t,n);return K(e.element())||og.append(o,Gm(e)),c.onOpenSubmenu(o,i,e,N(r)),u===m.HighlightSubmenu?(Cu.highlightFirst(e),d(o,g,r)):(Cu.dehighlightAll(e),Fn.some(i))})})})}function h(e,t){var n=a(t);return g.collapse(n).bind(function(n){return l(e,n),d(e,g,n).map(function(n){return c.onCollapseMenu(e,t,n),n})})}function t(t){return function(e,n){return Zi(n.getSource(),"."+c.markers.item).bind(function(n){return e.getSystem().getByDom(n).toOption().bind(function(n){return t(e,n).map(function(){return!0})})})}}function v(n){return Cu.getHighlighted(n).bind(Cu.getHighlighted)}var y=Nr([_r(eg(),function(t,r){var n=r.event().item();g.lookupItem(a(n)).each(function(){var n=r.event().menu();Cu.highlight(t,n);var e=a(r.event().item());g.refresh(e).each(function(n){return s(t,g,n)})})}),Mo(function(e,n){var t=n.event().target();e.getSystem().getByDom(t).each(function(n){0===a(n).indexOf("collapse-item")&&h(e,n),p(e,n,m.HighlightSubmenu).fold(function(){c.onExecute(e,n)},function(){})})}),Eo(function(e,n){(function(n){var e=r(n,c.data.primary,c.data.menus),t=i();return g.setContents(c.data.primary,e,c.data.expansions,t),g.getPrimary()})(e).each(function(n){og.append(e,Gm(n)),c.onOpenMenu(e,n),c.highlightImmediately&&u(e,n)})})].concat(c.navigateOnHover?[_r(Wm(),function(n,e){var t=e.event().item();!function(e,n){var t=a(n);g.refresh(t).bind(function(n){return l(e,n),d(e,g,n)})}(n,t),p(n,t,m.HighlightParent),c.onHover(n,t)})]:[])),b={collapseMenu:function(e){v(e).each(function(n){h(e,n)})},highlightPrimary:function(e){g.getPrimary().each(function(n){u(e,n)})},repositionMenus:function(r){g.getPrimary().bind(function(e){return v(r).bind(function(n){var e=a(n),t=function(n){return _n(n,function(n){return n})}(g.getMenus()),r=xo(de(t,cg.extractPreparedMenu));return g.getTriggeringPath(e,function(n){return function(n,e,t){return wo(e,function(n){if(!n.getSystem().isConnected())return Fn.none();var e=Cu.getCandidates(n);return R(e,function(n){return a(n)===t})})}(0,r,n)})}).map(function(n){return{primary:e,triggeringPath:n}})}).fold(function(){(function(n){return Fn.from(n.components()[0]).filter(function(n){return"menu"===Qr(n.element(),"role")})})(r).each(function(n){c.onRepositionMenu(r,n,[])})},function(n){var e=n.primary,t=n.triggeringPath;c.onRepositionMenu(r,e,t)})}};return{uid:c.uid,dom:c.dom,markers:c.markers,behaviours:pc(c.tmenuBehaviours,[Va.config({mode:"special",onRight:t(function(n,e){return Iu(e.element())?Fn.none():p(n,e,m.HighlightSubmenu)}),onLeft:t(function(n,e){return Iu(e.element())?Fn.none():h(n,e)}),onEscape:t(function(n,e){return h(n,e).orThunk(function(){return c.onEscape(n,e).map(function(){return n})})}),focusIn:function(e,n){g.getPrimary().each(function(n){W(e,n.element(),He())})}}),Cu.config({highlightClass:c.markers.selectedMenu,itemClass:c.markers.menu}),lm.config({find:function(n){return Cu.getHighlighted(n)}}),og.config({})]),eventOrder:c.eventOrder,apis:b,events:y}},extraApis:{tieredData:function(n,e,t){return{primary:n,menus:e,expansions:t}},singleData:function(n,e){return{primary:n,menus:En(n,e),expansions:{}}},collapseItem:function(n){return{value:yc(ag()),meta:{text:n}}}}}),sg=function(n,e,t,r){return Ud(0,e,0,r).bind(function(e){return e.transition.map(function(n){return{transition:n,route:e}})})},lg=function(n,e,t){var r=n.element();return Zr(r,e.destinationAttr)?Fn.some({start:Qr(n.element(),e.stateAttr),destination:Qr(n.element(),e.destinationAttr)}):Fn.none()},dg=/* */Object.freeze({findRoute:Ud,disableTransition:$d,getCurrentRoute:lg,jumpTo:Wd,progressTo:function(t,r,o,i){!function(n,e){Zr(n.element(),e.destinationAttr)&&(Kr(n.element(),e.stateAttr,Qr(n.element(),e.destinationAttr)),no(n.element(),e.destinationAttr))}(t,r);var n=function(n,e,t,r){return{start:Qr(n.element(),e.stateAttr),destination:r}}(t,r,0,i);sg(t,r,o,n).fold(function(){Wd(t,r,o,i)},function(n){$d(t,r,o);var e=n.transition;io(t.element(),e.transitionClass),Kr(t.element(),r.destinationAttr,i)})},getState:function(n,e,t){var r=n.element();return Zr(r,e.stateAttr)?Fn.some(Qr(r,e.stateAttr)):Fn.none()}}),mg=/* */Object.freeze({events:function(o,i){return Nr([_r(Ae(),function(t,n){var r=n.event().raw();lg(t,o).each(function(e){Ud(0,o,0,e).each(function(n){n.transition.each(function(n){r.propertyName===n.property&&(Wd(t,o,i,e.destination),o.onTransition(t,e))})})})}),Eo(function(n,e){Wd(n,o,i,o.initialState)})])}}),gg=[tr("destinationAttr","data-transitioning-destination"),tr("stateAttr","data-transitioning-state"),Yt("initialState"),Ko("onTransition"),Ko("onFinish"),Kt("routes",Ut(vt.value,Ut(vt.value,Pt([er("transition",[Yt("property"),Yt("transitionClass")])]))))],pg=qr({fields:gg,name:"transitioning",active:mg,apis:dg,extra:{createRoutes:function(n){var r={};return Nn(n,function(n,e){var t=e.split("<->");r[t[0]]=En(t[1],n),r[t[1]]=En(t[0],n)}),r},createBistate:function(n,e,t){return Cn([{key:n,value:En(e,t)},{key:e,value:En(n,t)}])},createTristate:function(n,e,t,r){return Cn([{key:n,value:Cn([{key:e,value:r},{key:t,value:r}])},{key:e,value:Cn([{key:n,value:r},{key:t,value:r}])},{key:t,value:Cn([{key:n,value:r},{key:e,value:r}])}])}}}),hg=_i.resolve("scrollable"),vg={register:function(n){io(n,hg)},deregister:function(n){co(n,hg)},scrollable:b(hg)},yg=function(n,e,t,r,o){return{data:{value:n,text:e},type:"item",dom:{tag:"div",classes:o?[_i.resolve("styles-item-is-menu")]:[]},toggling:{toggleOnExecute:!1,toggleClass:_i.resolve("format-matches"),selected:t},itemBehaviours:Bo(o?[]:[Bi(n,function(n,e){(e?Fi.on:Fi.off)(n)})]),components:[{dom:{tag:"div",attributes:{style:r},innerHtml:e}}]}},bg=function(n,e,t,r){return{value:n,dom:{tag:"div"},components:[Ls.sketch({dom:{tag:"div",classes:[_i.resolve("styles-collapser")]},components:r?[{dom:{tag:"span",classes:[_i.resolve("styles-collapse-icon")]}},jd(n)]:[jd(n)],action:function(n){if(r){var e=t().get(n);fg.collapseMenu(e)}}}),{dom:{tag:"div",classes:[_i.resolve("styles-menu-items-container")]},components:[tg.parts().items({})],behaviours:Bo([am("adhoc-scrollable-menu",[Eo(function(n,e){Gi(n.element(),"overflow-y","auto"),Gi(n.element(),"-webkit-overflow-scrolling","touch"),vg.register(n.element())}),Co(function(n){pi(n.element(),"overflow-y"),pi(n.element(),"-webkit-overflow-scrolling"),vg.deregister(n.element())})])])}],items:e,menuBehaviours:Bo([pg.config({initialState:"after",routes:pg.createTristate("before","current","after",{transition:{property:"transform",transitionClass:"transitioning"}})})])}},xg=function(r){var n=function(r,o){var n=bg("Styles",[].concat(de(r.items,function(n){return yg(Xd(n),n.title,n.isSelected(),n.getPreview(),Mn(r.expansions,Xd(n)))})),o,!1),e=S(r.menus,function(n,e){var t=de(n,function(n){return yg(Xd(n),n.title,n.isSelected!==undefined&&n.isSelected(),n.getPreview!==undefined?n.getPreview():"",Mn(r.expansions,Xd(n)))});return bg(e,t,o,!0)}),t=xt(e,En("styles",n));return{tmenu:fg.tieredData("styles",t,r.expansions)}}(r.formats,function(){return e}),e=js(fg.sketch({dom:{tag:"div",classes:[_i.resolve("styles-menu")]},components:[],fakeFocus:!0,stayInDom:!0,onExecute:function(n,e){var t=fl.getValue(e);return r.handle(e,t.value),Fn.none()},onEscape:function(){return Fn.none()},onOpenMenu:function(n,e){var t=Mf(n.element());Df(e.element(),t),pg.jumpTo(e,"current")},onOpenSubmenu:function(n,e,t){var r=Mf(n.element()),o=Ji(e.element(),'[role="menu"]').getOrDie("hacky"),i=n.getSystem().getByDom(o).getOrDie();Df(t.element(),r),pg.progressTo(i,"before"),pg.jumpTo(t,"after"),pg.progressTo(t,"current")},onCollapseMenu:function(n,e,t){var r=Ji(e.element(),'[role="menu"]').getOrDie("hacky"),o=n.getSystem().getByDom(r).getOrDie();pg.progressTo(o,"after"),pg.progressTo(t,"current")},navigateOnHover:!1,highlightImmediately:!0,data:n.tmenu,markers:{backgroundMenu:_i.resolve("styles-background-menu"),menu:_i.resolve("styles-menu"),selectedMenu:_i.resolve("styles-selected-menu"),item:_i.resolve("styles-item"),selectedItem:_i.resolve("styles-selected-item")}}));return e.asSpec()},wg=function(n){return M(n,function(n,e){var t=qd(e);return{menus:xt(n.menus,t.menus),items:[t.item].concat(n.items),expansions:xt(n.expansions,t.expansions)}},{menus:{},expansions:{},items:[]})},Sg={expand:wg},Tg=function(r,n){function o(n){return function(){return r.formatter.match(n)}}function i(n){return function(){return r.formatter.getCssText(n)}}var e=Dt(n,"style_formats").getOr(Fm),t=function(n){return de(n,function(n){if(Mn(n,"items")){var e=t(n.items);return xt(function(n){return xt(n,{isSelected:b(!1),getPreview:b("")})}(n),{items:e})}return Mn(n,"format")?function(n){return xt(n,{isSelected:o(n.format),getPreview:i(n.format)})}(n):function(n){var e=yc(n.title),t=xt(n,{format:e,isSelected:o(e),getPreview:i(e)});return r.formatter.register(e,t),t}(n)})};return t(e)},Og=function(t,n,r){var e=function(e,n){var t=function(n){return B(n,function(n){return n.items===undefined?!Mn(n,"format")||e.formatter.canApply(n.format)?[n]:[]:0<t(n.items).length?[n]:[]})},r=t(n);return Sg.expand(r)}(t,n);return xg({formats:e,handle:function(n,e){t.undoManager.transact(function(){Fi.isOn(n)?t.formatter.remove(e):t.formatter.apply(e)}),r()}})},kg=["undo","bold","italic","link","image","bullist","styleselect"],Eg=function(n){return B(n,function(n){return ie(n)?Eg(n):Yd(n)})},Cg=function(e,r){function n(n){return function(){return Ws.forToolbarCommand(r,n)}}function t(n){return function(){return Ws.forToolbarStateCommand(r,n)}}function o(n,e,t){return function(){return Ws.forToolbarStateAction(r,n,e,t)}}function i(){return Og(r,h,function(){r.fire("scrollIntoView")})}function u(n,e){return{isSupported:function(){var e=r.ui.registry.getAll().buttons;return n.forall(function(n){return Mn(e,n)})},sketch:e}}var c=n("undo"),a=n("redo"),f=t("bold"),s=t("italic"),l=t("underline"),d=n("removeformat"),m=o("unlink","link",function(){r.execCommand("unlink",null,!1)}),g=o("unordered-list","ul",function(){r.execCommand("InsertUnorderedList",null,!1)}),p=o("ordered-list","ol",function(){r.execCommand("InsertOrderedList",null,!1)}),h=Tg(r,r.settings);return{undo:u(Fn.none(),c),redo:u(Fn.none(),a),bold:u(Fn.none(),f),italic:u(Fn.none(),s),underline:u(Fn.none(),l),removeformat:u(Fn.none(),d),link:u(Fn.none(),function(){return function(e,t){return Ws.forToolbarStateAction(t,"link","link",function(){var n=Am(e,t);e.setContextToolbar(n),cm(t,function(){e.focusToolbar()}),im.query(t).each(function(n){t.selection.select(n.dom())})})}(e,r)}),unlink:u(Fn.none(),m),image:u(Fn.none(),function(){return Zl(r)}),bullist:u(Fn.some("bullist"),g),numlist:u(Fn.some("numlist"),p),fontsizeselect:u(Fn.none(),function(){return function(n,e){var t={onChange:function(n){Hl.apply(e,n)},getInitialValue:function(){return Hl.get(e)}};return Fs(n,"font-size",function(){return Ns(t)},e)}(e,r)}),forecolor:u(Fn.none(),function(){return Nl(e,r)}),styleselect:u(Fn.none(),function(){return Ws.forToolbar("style-formats",function(n){r.fire("toReading"),e.dropup().appear(i,Fi.on,n)},Bo([Fi.config({toggleClass:_i.resolve("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),Ci.config({channels:Cn([Ni(Uo.orientationChanged(),Fi.off),Ni(Uo.dropupDismissed(),Fi.off)])})]),r)})}},Dg=function(n,t){var e=Kd(n),r={};return B(e,function(n){var e=!Mn(r,n)&&Mn(t,n)&&t[n].isSupported()?[t[n].sketch()]:[];return r[n]=!0,e})},Mg=function(n,e,t,r){n.dom().removeEventListener(e,t,r)},Ig=b(!0),Rg=tinymce.util.Tools.resolve("tinymce.util.Delay"),Ag=em,Fg=function(r,e){var n=Je.fromDom(r),o=null,t=Zd(n,"orientationchange",function(){Rg.clearInterval(o);var n=em(r);e.onChange(n),i(function(){e.onReady(n)})}),i=function(n){Rg.clearInterval(o);var e=r.innerHeight,t=0;o=Rg.setInterval(function(){e!==r.innerHeight?(Rg.clearInterval(o),n(Fn.some(r.innerHeight))):20<t&&(Rg.clearInterval(o),n(Fn.none())),t++},50)};return{onAdjustment:i,destroy:function(){t.unbind()}}},Bg=function(n){var e=L().os.isiOS(),t=em(n).isPortrait();return e&&!t?n.screen.height:n.screen.width};function Vg(n){var e=n.raw();return e.touches===undefined||1!==e.touches.length?Fn.none():Fn.some(e.touches[0])}function Ng(t){var r=Pn(Fn.none()),o=Pn(!1),i=function n(t,r){var o=null;return{cancel:function(){null!==o&&(l.clearTimeout(o),o=null)},schedule:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];o=l.setTimeout(function(){t.apply(null,n),o=null},r)}}}(function(n){t.triggerEvent(Le(),n),o.set(!0)},400),u=Cn([{key:xe(),value:function(t){return Vg(t).each(function(n){i.cancel();var e={x:b(n.clientX),y:b(n.clientY),target:t.target};i.schedule(t),o.set(!1),r.set(Fn.some(e))}),Fn.none()}},{key:we(),value:function(n){return i.cancel(),Vg(n).each(function(e){r.get().each(function(n){!function(n,e){var t=Math.abs(n.clientX-e.x()),r=Math.abs(n.clientY-e.y());return 5<t||5<r}(e,n)||r.set(Fn.none())})}),Fn.none()}},{key:Se(),value:function(e){i.cancel();return r.get().filter(function(n){return cn(n.target(),e.target())}).map(function(n){return o.get()?(e.prevent(),!1):t.triggerEvent(ze(),e)})}}]);return{fireIfReady:function(e,n){return Dt(u,n).bind(function(n){return n(e)})}}}var jg=function(t){var e=Ng({triggerEvent:function(n,e){t.onTapContent(e)}});return{fireTouchstart:function(n){e.fireIfReady(n,"touchstart")},onTouchend:function(){return Zd(t.body(),"touchend",function(n){e.fireIfReady(n,"touchend")})},onTouchmove:function(){return Zd(t.body(),"touchmove",function(n){e.fireIfReady(n,"touchmove")})}}},_g=6<=L().os.version.major,Pg=function(r,e,t){function o(n){return!cn(n.start(),n.finish())||n.soffset()!==n.foffset()}function n(){var n=r.doc().dom().hasFocus()&&r.getSelection().exists(o);t.getByDom(e).each(!0===(n||mo(u).filter(function(n){return"input"===q(n)}).exists(function(n){return n.dom().selectionStart!==n.dom().selectionEnd}))?Fi.on:Fi.off)}var i=jg(r),u=an(e),c=[Zd(r.body(),"touchstart",function(n){r.onTouchContent(),i.fireTouchstart(n)}),i.onTouchmove(),i.onTouchend(),Zd(e,"touchstart",function(n){r.onTouchToolstrip()}),r.onToReading(function(){lo(r.body())}),r.onToEditing(w),r.onScrollToCursor(function(n){n.preventDefault(),r.getCursorBox().each(function(n){var e=r.win(),t=n.top()>e.innerHeight||n.bottom()>e.innerHeight?n.bottom()-e.innerHeight+50:0;0!=t&&e.scrollTo(e.pageXOffset,e.pageYOffset+t)})})].concat(!0==_g?[]:[Zd(Je.fromDom(r.win()),"blur",function(){t.getByDom(e).each(Fi.off)}),Zd(u,"select",n),Zd(r.doc(),"selectionchange",n)]);return{destroy:function(){C(c,function(n){n.unbind()})}}},Hg=function(n,e){var t=parseInt(Qr(n,e),10);return isNaN(t)?0:t};function zg(n){return Cp.getOption(n)}function Lg(n){return function(n){return zg(n).filter(function(n){return 0!==n.trim().length||-1<n.indexOf("\xa0")}).isSome()}(n)||k(Dp,q(n))}function Gg(n,e,t){var r=n.document.createRange();return function(t,n){n.fold(function(n){t.setStartBefore(n.dom())},function(n,e){t.setStart(n.dom(),e)},function(n){t.setStartAfter(n.dom())})}(r,e),function(t,n){n.fold(function(n){t.setEndBefore(n.dom())},function(n,e){t.setEnd(n.dom(),e)},function(n){t.setEndAfter(n.dom())})}(r,t),r}function Ug(n,e,t,r,o){var i=n.document.createRange();return i.setStart(e.dom(),t),i.setEnd(r.dom(),o),i}function $g(n){return{left:b(n.left),top:b(n.top),right:b(n.right),bottom:b(n.bottom),width:b(n.width),height:b(n.height)}}function Wg(n,e,t){return e(Je.fromDom(t.startContainer),t.startOffset,Je.fromDom(t.endContainer),t.endOffset)}function Xg(n,e){return function(n,e){var t=e.ltr();return t.collapsed?e.rtl().filter(function(n){return!1===n.collapsed}).map(function(n){return Bp.rtl(Je.fromDom(n.endContainer),n.endOffset,Je.fromDom(n.startContainer),n.startOffset)}).getOrThunk(function(){return Wg(0,Bp.ltr,t)}):Wg(0,Bp.ltr,t)}(0,function(o,n){return n.match({domRange:function(n){return{ltr:b(n),rtl:Fn.none}},relative:function(n,e){return{ltr:X(function(){return Gg(o,n,e)}),rtl:X(function(){return Fn.some(Gg(o,e,n))})}},exact:function(n,e,t,r){return{ltr:X(function(){return Ug(o,n,e,t,r)}),rtl:X(function(){return Fn.some(Ug(o,t,r,n,e))})}}})}(n,e))}function qg(n,e,t){return e>=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom}function Yg(t,r,n,e,o){function i(n){var e=t.dom().createRange();return e.setStart(r.dom(),n),e.collapse(!0),e}var u=function(n){return Cp.get(n)}(r).length,c=function(n,e,t,r,o){if(0===o)return 0;if(e===r)return o-1;for(var i=r,u=1;u<o;u++){var c=n(u),a=Math.abs(e-c.left);if(t<=c.bottom){if(t<c.top||i<a)return u-1;i=a}}return 0}(function(n){return i(n).getBoundingClientRect()},n,e,o.right,u);return i(c)}function Kg(n){return Fr(n,Lg)}function Jg(n){return Np(n,Lg)}function Qg(n,e){return e-n.left<n.right-e}function Zg(n,e,t){var r=n.dom().createRange();return r.selectNode(e.dom()),r.collapse(t),r}function np(e,n,t){var r=e.dom().createRange();r.selectNode(n.dom());var o=r.getBoundingClientRect(),i=Qg(o,t);return(!0===i?Kg:Jg)(n).map(function(n){return Zg(e,n,i)})}function ep(n,e,t){var r=e.dom().getBoundingClientRect(),o=Qg(r,t);return Fn.some(Zg(n,e,o))}function tp(n,e,t,r){var o=n.dom().createRange();o.selectNode(e.dom());var i=o.getBoundingClientRect();return function(n,e,t,r){var o=n.dom().createRange();o.selectNode(e.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,t)),c=Math.max(i.top,Math.min(i.bottom,r));return Vp(n,e,u,c)}(n,e,Math.max(i.left,Math.min(i.right,t)),Math.max(i.top,Math.min(i.bottom,r)))}function rp(n,e){var t=q(n);return"input"===t?Rp.after(n):k(["br","img"],t)?0===e?Rp.before(n):Rp.after(n):Rp.on(n,e)}function op(n,e,t,r){var o=function(n,e,t,r){var o=an(n).dom().createRange();return o.setStart(n.dom(),e),o.setEnd(t.dom(),r),o}(n,e,t,r),i=cn(n,t)&&e===r;return o.collapsed&&!i}function ip(n,e,t,r,o){!function(n,e){Fn.from(n.getSelection()).each(function(n){n.removeAllRanges(),n.addRange(e)})}(n,Ug(n,e,t,r,o))}function up(n,e,t,r,o){!function(u,n){Xg(u,n).match({ltr:function(n,e,t,r){ip(u,n,e,t,r)},rtl:function(n,e,t,r){var o=u.getSelection();if(o.setBaseAndExtent)o.setBaseAndExtent(n.dom(),e,t.dom(),r);else if(o.extend)try{!function(n,e,t,r,o,i){e.collapse(t.dom(),r),e.extend(o.dom(),i)}(0,o,n,e,t,r)}catch(i){ip(u,t,r,n,e)}else ip(u,t,r,n,e)}})}(n,function(n,e,t,r){var o=rp(n,e),i=rp(t,r);return Fp.relative(o,i)}(e,t,r,o))}function cp(n){var e=Je.fromDom(n.anchorNode),t=Je.fromDom(n.focusNode);return op(e,n.anchorOffset,t,n.focusOffset)?Fn.some(Mp.create(e,n.anchorOffset,t,n.focusOffset)):function(n){if(0<n.rangeCount){var e=n.getRangeAt(0),t=n.getRangeAt(n.rangeCount-1);return Fn.some(Mp.create(Je.fromDom(e.startContainer),e.startOffset,Je.fromDom(t.endContainer),t.endOffset))}return Fn.none()}(n)}function ap(n){return Fn.from(n.getSelection()).filter(function(n){return 0<n.rangeCount}).bind(cp)}function fp(n,e){return function(n){var e=n.getClientRects(),t=0<e.length?e[0]:n.getBoundingClientRect();return 0<t.width||0<t.height?Fn.some(t).map($g):Fn.none()}(function(i,n){return Xg(i,n).match({ltr:function(n,e,t,r){var o=i.document.createRange();return o.setStart(n.dom(),e),o.setEnd(t.dom(),r),o},rtl:function(n,e,t,r){var o=i.document.createRange();return o.setStart(t.dom(),r),o.setEnd(n.dom(),e),o}})}(n,e))}function sp(n){return{left:n.left,top:n.top,right:n.right,bottom:n.bottom,width:b(2),height:n.height}}function lp(n){return{left:b(n.left),top:b(n.top),right:b(n.right),bottom:b(n.bottom),width:b(n.width),height:b(n.height)}}function dp(t){if(t.collapsed){var r=Je.fromDom(t.startContainer);return fn(r).bind(function(n){var e=Fp.exact(r,t.startOffset,n,function(n){return"img"===q(n)?1:zg(n).fold(function(){return at(n).length},function(n){return n.length})}(n));return fp(t.startContainer.ownerDocument.defaultView,e).map(sp).map(_)}).getOr([])}return de(t.getClientRects(),lp)}function mp(n,e){Kr(n,Pp,e)}function gp(n){return{top:b(n.top()),bottom:b(n.top()+n.height())}}function pp(n,e){var t=function(n){return Hg(n,Pp)}(e),r=n.innerHeight;return r<t?Fn.some(t-r):Fn.none()}function hp(n){return Fn.some(Je.fromDom(n.dom().contentWindow.document.body))}function vp(n){return Fn.some(Je.fromDom(n.dom().contentWindow.document))}function yp(n){return Fn.from(n.dom().contentWindow)}function bp(n){return yp(n).bind(ap)}function xp(n){return n.getFrame()}function wp(n,t){return function(e){return e[n].getOrThunk(function(){var n=xp(e);return function(){return t(n)}})()}}function Sp(n,e,t,r){return n[t].getOrThunk(function(){return function(n){return Zd(e,r,n)}})}function Tp(n){return{left:b(n.left),top:b(n.top),right:b(n.right),bottom:b(n.bottom),width:b(n.width),height:b(n.height)}}function Op(t,r){var o=null;return{cancel:function(){null!==o&&(l.clearTimeout(o),o=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];null!==o&&l.clearTimeout(o),o=l.setTimeout(function(){t.apply(null,n),o=null},r)}}}function kp(n){return"true"===Qr(n,ih)?function(n){return 0<n.dom().scrollLeft||function(n){n.dom().scrollLeft=1;var e=0!==n.dom().scrollLeft;return n.dom().scrollLeft=0,e}(n)}(n):function(n){return 0<n.dom().scrollTop||function(n){n.dom().scrollTop=1;var e=0!==n.dom().scrollTop;return n.dom().scrollTop=0,e}(n)}(n)}var Ep,Cp=function oy(t,r){var e=function(n){return t(n)?Fn.from(n.dom().nodeValue):Fn.none()};return{get:function(n){if(!t(n))throw new Error("Can only get "+r+" value of a "+r+" node");return e(n).getOr("")},getOption:e,set:function(n,e){if(!t(n))throw new Error("Can only set raw "+r+" value of a "+r+" node");n.dom().nodeValue=e}}}(tt,"text"),Dp=["img","br"],Mp={create:J("start","soffset","finish","foffset")},Ip=yt([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Rp={before:Ip.before,on:Ip.on,after:Ip.after,cata:function(n,e,t,r){return n.fold(e,t,r)},getStart:function(n){return n.fold(y,y,y)}},Ap=yt([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Fp={domRange:Ap.domRange,relative:Ap.relative,exact:Ap.exact,exactFromRange:function(n){return Ap.exact(n.start(),n.soffset(),n.finish(),n.foffset())},getWin:function(n){return function(n){return Je.fromDom(n.dom().ownerDocument.defaultView)}(function(n){return n.match({domRange:function(n){return Je.fromDom(n.startContainer)},relative:function(n,e){return Rp.getStart(n)},exact:function(n,e,t,r){return n}})}(n))},range:Mp.create},Bp=yt([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),Vp=function(n,e,t,r){return tt(e)?function(e,t,r,o){var n=e.dom().createRange();n.selectNode(t.dom());var i=n.getClientRects();return wo(i,function(n){return qg(n,r,o)?Fn.some(n):Fn.none()}).map(function(n){return Yg(e,t,r,o,n)})}(n,e,t,r):function(e,n,t,r){var o=e.dom().createRange(),i=at(n);return wo(i,function(n){return o.selectNode(n.dom()),qg(o.getBoundingClientRect(),t,r)?Vp(e,n,t,r):Fn.none()})}(n,e,t,r)},Np=function(n,i){var u=function(n){for(var e=at(n),t=e.length-1;0<=t;t--){var r=e[t];if(i(r))return Fn.some(r);var o=u(r);if(o.isSome())return o}return Fn.none()};return u(n)},jp=(document.caretPositionFromPoint||document.caretRangeFromPoint,function(n){var e=n.getSelection();return e!==undefined&&0<e.rangeCount?dp(e.getRangeAt(0)):[]}),_p=function(n){n.focus();var e=Je.fromDom(n.document.body);(mo().exists(function(n){return k(["input","textarea"],q(n))})?function(n){Rg.setTimeout(function(){n()},0)}:t)(function(){mo().each(lo),so(e)})},Pp="data-"+_i.resolve("last-outer-height"),Hp=function(n,r){var e=Je.fromDom(r.document.body),t=Zd(Je.fromDom(n),"resize",function(){pp(n,e).each(function(t){(function(n){var e=jp(n);return 0<e.length?Fn.some(e[0]).map(gp):Fn.none()})(r).each(function(n){var e=function(n,e,t){return e.top()>n.innerHeight||e.bottom()>n.innerHeight?Math.min(t,e.bottom()-n.innerHeight+50):0}(r,n,t);0!==e&&r.scrollTo(r.pageXOffset,r.pageYOffset+e)})}),mp(e,n.innerHeight)});mp(e,n.innerHeight);return{toEditing:function(){_p(r)},destroy:function(){t.unbind()}}},zp={getBody:wp("getBody",hp),getDoc:wp("getDoc",vp),getWin:wp("getWin",yp),getSelection:wp("getSelection",bp),getFrame:xp,getActiveApi:function(c){var a=xp(c);return hp(a).bind(function(u){return vp(a).bind(function(i){return yp(a).map(function(o){var n=Je.fromDom(i.dom().documentElement),e=c.getCursorBox.getOrThunk(function(){return function(){return function(n){return ap(n).map(function(n){return Fp.exact(n.start(),n.soffset(),n.finish(),n.foffset())})}(o).bind(function(n){return fp(o,n).orThunk(function(){return function(n){return ap(n).filter(function(n){return cn(n.start(),n.finish())&&n.soffset()===n.foffset()}).bind(function(n){var e=n.start().dom().getBoundingClientRect();return 0<e.width||0<e.height?Fn.some(e).map(Tp):Fn.none()})}(o)})})}}),t=c.setSelection.getOrThunk(function(){return function(n,e,t,r){up(o,n,e,t,r)}}),r=c.clearSelection.getOrThunk(function(){return function(){!function(n){n.getSelection().removeAllRanges()}(o)}});return{body:b(u),doc:b(i),win:b(o),html:b(n),getSelection:d(bp,a),setSelection:t,clearSelection:r,frame:b(a),onKeyup:Sp(c,i,"onKeyup","keyup"),onNodeChanged:Sp(c,i,"onNodeChanged","SelectionChange"),onDomChanged:c.onDomChanged,onScrollToCursor:c.onScrollToCursor,onScrollToElement:c.onScrollToElement,onToReading:c.onToReading,onToEditing:c.onToEditing,onToolbarScrollStart:c.onToolbarScrollStart,onTouchContent:c.onTouchContent,onTapContent:c.onTapContent,onTouchToolstrip:c.onTouchToolstrip,getCursorBox:e}})})})}},Lp="data-ephox-mobile-fullscreen-style",Gp="position:absolute!important;",Up="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;",$p=L().os.isAndroid(),Wp=function(n,e){function t(r){return function(n){var e=Qr(n,"style"),t=e===undefined?"no-styles":e.trim();t!==r&&(Kr(n,Lp,t),Kr(n,"style",r))}}var r=function(n,e,t){return Xi(n,function(n){return tn(n,e)},t)}(n,"*"),o=B(r,function(n){return function(n,e){return qi(n,function(n){return tn(n,e)})}(n,"*")}),i=function(n){var e=mi(n,"background-color");return e!==undefined&&""!==e?"background-color:"+e+"!important":"background-color:rgb(255,255,255)!important;"}(e);C(o,t("display:none!important;")),C(r,t(Gp+Up+i)),t((!0===$p?"":Gp)+Up+i)(n)},Xp=function(){var n=function(n){return on(n)}("["+Lp+"]");C(n,function(n){var e=Qr(n,Lp);"no-styles"!==e?Kr(n,"style",e):no(n,"style"),no(n,Lp)})},qp=function(){var e=Ki("head").getOrDie(),n=Ki('meta[name="viewport"]').getOrThunk(function(){var n=Je.fromTag("meta");return Kr(n,"name","viewport"),ft(e,n),n}),t=Qr(n,"content");return{maximize:function(){Kr(n,"content","width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0")},restore:function(){t!==undefined&&null!==t&&0<t.length?Kr(n,"content",t):Kr(n,"content","user-scalable=yes")}}},Yp=function(e,n){var t=qp(),r=yd(),o=yd();return{enter:function(){n.hide(),io(e.container,_i.resolve("fullscreen-maximized")),io(e.container,_i.resolve("android-maximized")),t.maximize(),io(e.body,_i.resolve("android-scroll-reload")),r.set(Hp(e.win,zp.getWin(e.editor).getOrDie("no"))),zp.getActiveApi(e.editor).each(function(n){Wp(e.container,n.body()),o.set(Pg(n,e.toolstrip,e.alloy))})},exit:function(){t.restore(),n.show(),co(e.container,_i.resolve("fullscreen-maximized")),co(e.container,_i.resolve("android-maximized")),Xp(),co(e.body,_i.resolve("android-scroll-reload")),o.clear(),r.clear()}}},Kp=function(n,e){var t=js(dm.sketch({dom:Us('<div aria-hidden="true" class="${prefix}-mask-tap-icon"></div>'),containerBehaviours:Bo([Fi.config({toggleClass:_i.resolve("mask-tap-icon-selected"),toggleOnExecute:!1})])})),r=function(t,r){var o=null;return{cancel:function(){null!==o&&(l.clearTimeout(o),o=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];null===o&&(o=l.setTimeout(function(){t.apply(null,n),o=null},r))}}}(n,200);return dm.sketch({dom:Us('<div class="${prefix}-disabled-mask"></div>'),components:[dm.sketch({dom:Us('<div class="${prefix}-content-container"></div>'),components:[Ls.sketch({dom:Us('<div class="${prefix}-content-tap-section"></div>'),components:[t.asSpec()],action:function(n){r.throttle()},buttonBehaviours:Bo([Fi.config({toggleClass:_i.resolve("mask-tap-icon-selected")})])})]})]})},Jp=Sr([Jt("editor",[Yt("getFrame"),Qt("getBody"),Qt("getDoc"),Qt("getWin"),Qt("getSelection"),Qt("setSelection"),Qt("clearSelection"),Qt("cursorSaver"),Qt("onKeyup"),Qt("onNodeChanged"),Qt("getCursorBox"),Yt("onDomChanged"),tr("onTouchContent",w),tr("onTapContent",w),tr("onTouchToolstrip",w),tr("onScrollToCursor",b({unbind:w})),tr("onScrollToElement",b({unbind:w})),tr("onToEditing",b({unbind:w})),tr("onToReading",b({unbind:w})),tr("onToolbarScrollStart",y)]),Yt("socket"),Yt("toolstrip"),Yt("dropup"),Yt("toolbar"),Yt("container"),Yt("alloy"),or("win",function(n){return an(n.socket).dom().defaultView}),or("body",function(n){return Je.fromDom(n.socket.dom().ownerDocument.body)}),tr("translate",y),tr("setReadOnly",w),tr("readOnlyOnInit",b(!0))]),Qp=function(n){var e=Xt("Getting AndroidWebapp schema",Jp,n);Gi(e.toolstrip,"width","100%");var t=Lm(Kp(function(){e.setReadOnly(e.readOnlyOnInit()),o.enter()},e.translate));e.alloy.add(t);var r={show:function(){e.alloy.add(t)},hide:function(){e.alloy.remove(t)}};ft(e.container,t.element());var o=Yp(e,r);return{setReadOnly:e.setReadOnly,refreshStructure:w,enter:o.enter,exit:o.exit,destroy:w}},Zp=b([Yt("dom"),tr("shell",!0),mc("toolbarBehaviours",[og])]),nh=b([rf({name:"groups",overrides:function(n){return{behaviours:Bo([og.config({})])}}})]),eh=vf({name:"Toolbar",configFields:Zp(),partFields:nh(),factory:function(e,n,t,r){var o=function(n){return e.shell?Fn.some(n):kc(n,e,"groups")},i=e.shell?{behaviours:[og.config({})],components:[]}:{behaviours:[],components:n};return{uid:e.uid,dom:e.dom,components:i.components,behaviours:pc(e.toolbarBehaviours,i.behaviours),apis:{setGroups:function(n,e){o(n).fold(function(){throw l.console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(n){og.set(n,e)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(n,e,t){n.setGroups(e,t)}}}),th=b([Yt("items"),(Ep=["itemSelector"],Jt("markers",de(Ep,Yt))),mc("tgroupBehaviours",[Va])]),rh=b([of({name:"items",unit:"item"})]),oh=vf({name:"ToolbarGroup",configFields:th(),partFields:rh(),factory:function(n,e,t,r){return{uid:n.uid,dom:n.dom,components:e,behaviours:pc(n.tgroupBehaviours,[Va.config({mode:"flow",selector:n.markers.itemSelector})]),domModification:{attributes:{role:"toolbar"}}}}}),ih="data-"+_i.resolve("horizontal-scroll"),uh={exclusive:function(n,e){return Zd(n,"touchmove",function(n){Zi(n.target(),e).filter(kp).fold(function(){n.raw().preventDefault()},w)})},markAsHorizontal:function(n){Kr(n,ih,"true")}};function ch(){function e(n){var e=!0===n.scrollable?"${prefix}-toolbar-scrollable-group":"";return{dom:Us('<div aria-label="'+n.label+'" class="${prefix}-toolbar-group '+e+'"></div>'),tgroupBehaviours:Bo([am("adhoc-scrollable-toolbar",!0===n.scrollable?[Do(function(n,e){Gi(n.element(),"overflow-x","auto"),uh.markAsHorizontal(n.element()),vg.register(n.element())})]:[])]),components:[dm.sketch({components:[oh.parts().items({})]})],markers:{itemSelector:"."+_i.resolve("toolbar-group-item")},items:n.items}}function t(){eh.setGroups(r,o.get()),Fi.off(r)}var r=Lm(eh.sketch({dom:Us('<div class="${prefix}-toolbar"></div>'),components:[eh.parts().groups({})],toolbarBehaviours:Bo([Fi.config({toggleClass:_i.resolve("context-toolbar"),toggleOnExecute:!1,aria:{mode:"none"}}),Va.config({mode:"cyclic"})]),shell:!0})),n=Lm(dm.sketch({dom:{classes:[_i.resolve("toolstrip")]},components:[Gm(r)],containerBehaviours:Bo([Fi.config({toggleClass:_i.resolve("android-selection-context-toolbar"),toggleOnExecute:!1})])})),o=Pn([]);return{wrapper:b(n),toolbar:b(r),createGroups:function(n){return de(n,i(oh.sketch,e))},setGroups:function(n){o.set(n),t()},setContextToolbar:function(n){Fi.on(r),eh.setGroups(r,n)},restoreToolbar:function(){Fi.isOn(r)&&t()},refresh:function(){},focus:function(){Va.focusIn(r)}}}function ah(n,e){og.append(n,Gm(e))}function fh(n,e){og.remove(n,e)}function sh(e,n){return n.getAnimationRoot.fold(function(){return e.element()},function(n){return n(e)})}function lh(n){return n.dimension.property}function dh(n,e){return n.dimension.getDimension(e)}function mh(n,e){var t=sh(n,e);Id(t,[e.shrinkingClass,e.growingClass])}function gh(n,e){co(n.element(),e.openClass),io(n.element(),e.closedClass),Gi(n.element(),lh(e),"0px"),hi(n.element())}function ph(n,e){co(n.element(),e.closedClass),io(n.element(),e.openClass),pi(n.element(),lh(e))}function hh(n,e,t,r){t.setCollapsed(),Gi(n.element(),lh(e),dh(e,n.element())),hi(n.element()),mh(n,e),gh(n,e),e.onStartShrink(n),e.onShrunk(n)}function vh(n,e,t,r){var o=r.getOrThunk(function(){return dh(e,n.element())});t.setCollapsed(),Gi(n.element(),lh(e),o),hi(n.element());var i=sh(n,e);co(i,e.growingClass),io(i,e.shrinkingClass),gh(n,e),e.onStartShrink(n)}function yh(n,e,t){var r=dh(e,n.element());("0px"===r?hh:vh)(n,e,t,Fn.some(r))}function bh(n,e,t){var r=sh(n,e),o=ao(r,e.shrinkingClass),i=dh(e,n.element());ph(n,e);var u=dh(e,n.element());(o?function(){Gi(n.element(),lh(e),i),hi(n.element())}:function(){gh(n,e)})(),co(r,e.shrinkingClass),io(r,e.growingClass),ph(n,e),Gi(n.element(),lh(e),u),t.setExpanded(),e.onStartGrow(n)}function xh(n,e,t){var r=sh(n,e);return!0===ao(r,e.growingClass)}function wh(n,e,t){var r=sh(n,e);return!0===ao(r,e.shrinkingClass)}function Sh(e,t){var r=Lm(dm.sketch({dom:{tag:"div",classes:[_i.resolve("dropup")]},components:[],containerBehaviours:Bo([og.config({}),Vh.config({closedClass:_i.resolve("dropup-closed"),openClass:_i.resolve("dropup-open"),shrinkingClass:_i.resolve("dropup-shrinking"),growingClass:_i.resolve("dropup-growing"),dimension:{property:"height"},onShrunk:function(n){e(),t(),og.set(n,[])},onGrown:function(n){e(),t()}}),Vi(function(n,e){o(w)})])})),o=function(n){l.window.requestAnimationFrame(function(){n(),Vh.shrink(r)})};return{appear:function(n,e,t){!0===Vh.hasShrunk(r)&&!1===Vh.isTransitioning(r)&&l.window.requestAnimationFrame(function(){e(t),og.set(r,[n()]),Vh.grow(r)})},disappear:o,component:b(r),element:r.element}}function Th(n){return 8===n.raw().which&&!k(["input","textarea"],q(n.target()))&&!function(n,e,t){return Zi(n,e,t).isSome()}(n.target(),'[contenteditable="true"]')}function Oh(e,n){var t=Xt("Getting GUI events settings",jh,n),r=Ng(t),o=de(["touchstart","touchmove","touchend","touchcancel","gesturestart","mousedown","mouseup","mouseover","mousemove","mouseout","click"].concat(["selectstart","input","contextmenu","change","transitionend","drag","dragstart","dragend","dragenter","dragleave","dragover","drop","keyup"]),function(n){return Zd(e,n,function(e){r.fireIfReady(e,n).each(function(n){n&&e.kill()}),t.triggerEvent(n,e)&&e.kill()})}),i=Pn(Fn.none()),u=Zd(e,"paste",function(e){r.fireIfReady(e,"paste").each(function(n){n&&e.kill()}),t.triggerEvent("paste",e)&&e.kill(),i.set(Fn.some(l.setTimeout(function(){t.triggerEvent(je(),e)},0)))}),c=Zd(e,"keydown",function(n){t.triggerEvent("keydown",n)?n.kill():!0===t.stopBackspace&&Th(n)&&n.prevent()}),a=function(n,e){return Nh?nm(n,"focus",e):Zd(n,"focusin",e)}(e,function(n){t.triggerEvent("focusin",n)&&n.kill()}),f=Pn(Fn.none()),s=function(n,e){return Nh?nm(n,"blur",e):Zd(n,"focusout",e)}(e,function(n){t.triggerEvent("focusout",n)&&n.kill(),f.set(Fn.some(l.setTimeout(function(){t.triggerEvent(Ne(),n)},0)))});return{unbind:function(){C(o,function(n){n.unbind()}),c.unbind(),a.unbind(),s.unbind(),u.unbind(),i.get().each(l.clearTimeout),f.get().each(l.clearTimeout)}}}function kh(n,e){var t=Dt(n,"target").map(function(n){return n()}).getOr(e);return Pn(t)}function Eh(n,r,e,t,o,i){var u=n(r,t),c=function(n,e){var t=Pn(!1),r=Pn(!1);return{stop:function(){t.set(!0)},cut:function(){r.set(!0)},isStopped:t.get,isCut:r.get,event:b(n),setSource:e.set,getSource:e.get}}(e,o);return u.fold(function(){return i.logEventNoHandlers(r,t),_h.complete()},function(e){var t=e.descHandler();return Td(t)(c),c.isStopped()?(i.logEventStopped(r,e.element(),t.purpose()),_h.stopped()):c.isCut()?(i.logEventCut(r,e.element(),t.purpose()),_h.complete()):fn(e.element()).fold(function(){return i.logNoParent(r,e.element(),t.purpose()),_h.complete()},function(n){return i.logEventResponse(r,e.element(),t.purpose()),_h.resume(n)})})}function Ch(n,e,t){var r=function(n){var e=Pn(!1);return{stop:function(){e.set(!0)},cut:w,isStopped:e.get,isCut:b(!1),event:b(n),setSource:o("Cannot set source of a broadcasted event"),getSource:o("Cannot get source of a broadcasted event")}}(e);return C(n,function(n){var e=n.descHandler();Td(e)(r)}),r.isStopped()}var Dh,Mh=function(n){return Lm(Ls.sketch({dom:Us('<div class="${prefix}-mask-edit-icon ${prefix}-icon"></div>'),action:function(){n.run(function(n){n.setReadOnly(!1)})}}))},Ih=function(){return Lm(dm.sketch({dom:Us('<div class="${prefix}-editor-socket"></div>'),components:[],containerBehaviours:Bo([og.config({})])}))},Rh=function(n,e,t,r){(!0===t?Ho.toAlpha:Ho.toOmega)(r),(t?ah:fh)(n,e)},Ah=/* */Object.freeze({refresh:function(n,e,t){if(t.isExpanded()){pi(n.element(),lh(e));var r=dh(e,n.element());Gi(n.element(),lh(e),r)}},grow:function(n,e,t){t.isExpanded()||bh(n,e,t)},shrink:function(n,e,t){t.isExpanded()&&yh(n,e,t)},immediateShrink:function(n,e,t){t.isExpanded()&&hh(n,e,t)},hasGrown:function(n,e,t){return t.isExpanded()},hasShrunk:function(n,e,t){return t.isCollapsed()},isGrowing:xh,isShrinking:wh,isTransitioning:function(n,e,t){return!0===xh(n,e)||!0===wh(n,e)},toggleGrow:function(n,e,t){(t.isExpanded()?yh:bh)(n,e,t)},disableTransitions:mh}),Fh=/* */Object.freeze({exhibit:function(n,e){var t=e.expanded;return Ur(t?{classes:[e.openClass],styles:{}}:{classes:[e.closedClass],styles:En(e.dimension.property,"0px")})},events:function(t,r){return Nr([function(n,e){return Hr(n)(e)}(Ae(),function(n,e){e.event().raw().propertyName===t.dimension.property&&(mh(n,t),r.isExpanded()&&pi(n.element(),t.dimension.property),(r.isExpanded()?t.onGrown:t.onShrunk)(n))})])}}),Bh=[Yt("closedClass"),Yt("openClass"),Yt("shrinkingClass"),Yt("growingClass"),Qt("getAnimationRoot"),Ko("onShrunk"),Ko("onStartShrink"),Ko("onGrown"),Ko("onStartGrow"),tr("expanded",!1),Kt("dimension",qt("property",{width:[ni("property","width"),ni("getDimension",function(n){return Mf(n)+"px"})],height:[ni("property","height"),ni("getDimension",function(n){return Wi(n)+"px"})]}))],Vh=qr({fields:Bh,name:"sliding",active:Fh,apis:Ah,state:/* */Object.freeze({init:function(n){var e=Pn(n.expanded);return Fo({isExpanded:function(){return!0===e.get()},isCollapsed:function(){return!1===e.get()},setCollapsed:d(e.set,!1),setExpanded:d(e.set,!0),readState:function(){return"expanded: "+e.get()}})}})}),Nh=L().browser.isFirefox(),jh=Pt([(Dh="triggerEvent",Kt(Dh,Mr)),tr("stopBackspace",!0)]),_h=yt([{stopped:[]},{resume:["element"]},{complete:[]}]),Ph=function(e,t,r,n,o,i){return Eh(e,t,r,n,o,i).fold(function(){return!0},function(n){return Ph(e,t,r,n,o,i)},function(){return!1})},Hh=function(n,e,t,r,o){var i=kh(t,r);return Ph(n,e,t,r,i,o)},zh=J("element","descHandler"),Lh=function(n,e){return{id:b(n),descHandler:b(e)}};function Gh(){var i={};return{registerId:function(r,o,n){Nn(n,function(n,e){var t=i[e]!==undefined?i[e]:{};t[o]=_m(n,r),i[e]=t})},unregisterId:function(t){Nn(i,function(n,e){n.hasOwnProperty(t)&&delete n[t]})},filterByType:function(n){return Dt(i,n).map(function(n){return _n(n,function(n,e){return Lh(e,n)})}).getOr([])},find:function(n,e,t){var r=Ct(e)(i);return ko(t,function(n){return function(t,r){return gf(r).fold(function(){return Fn.none()},function(n){var e=Ct(n);return t.bind(e).map(function(n){return zh(r,n)})})}(r,n)},n)}}}function Uh(){function r(n){var e=n.element();return gf(e).fold(function(){return function(n,e){var t=yc(lf+n);return mf(e,t),t}("uid-",n.element())},function(n){return n})}var o=Gh(),i={},u=function(n){gf(n.element()).each(function(n){delete i[n],o.unregisterId(n)})};return{find:function(n,e,t){return o.find(n,e,t)},filter:function(n){return o.filterByType(n)},register:function(n){var e=r(n);Mn(i,e)&&function(n,e){var t=i[e];if(t!==n)throw new Error('The tagId "'+e+'" is already used by: '+bo(t.element())+"\nCannot use it for: "+bo(n.element())+"\nThe conflicting element is"+(K(t.element())?" ":" not ")+"already in the DOM");u(n)}(n,e);var t=[n];o.registerId(t,e,n.events()),i[e]=n},unregister:u,getById:function(n){return Ct(n)(i)}}}var $h=function(t){function r(e){return fn(t.element()).fold(function(){return!0},function(n){return cn(e,n)})}function o(n,e){return u.find(r,n,e)}function i(t){var n=u.filter(_e());C(n,function(n){var e=n.descHandler();Td(e)(t)})}var u=Uh(),n=Oh(t.element(),{triggerEvent:function(e,t){return qo(e,t.target(),function(n){return function(n,e,t,r){var o=t.target();return Hh(n,e,t,o,r)}(o,e,t,n)})}}),c={debugInfo:b("real"),triggerEvent:function(e,t,r){qo(e,t,function(n){Hh(o,e,r,t,n)})},triggerFocus:function(e,t){gf(e).fold(function(){so(e)},function(n){qo(Ve(),e,function(n){!function(n,e,t,r,o){var i=kh(t,r);Eh(n,e,t,r,i,o)}(o,Ve(),{originator:b(t),kill:w,prevent:w,target:b(e)},e,n)})})},triggerEscape:function(n,e){c.triggerEvent("keydown",n.element(),e.event())},getByUid:function(n){return g(n)},getByDom:function(n){return p(n)},build:Lm,addToGui:function(n){f(n)},removeFromGui:function(n){s(n)},addToWorld:function(n){e(n)},removeFromWorld:function(n){a(n)},broadcast:function(n){l(n)},broadcastOn:function(n,e){d(n,e)},broadcastEvent:function(n,e){m(n,e)},isConnected:b(!0)},e=function(n){n.connect(c),tt(n.element())||(u.register(n),C(n.components(),e),c.triggerEvent(Ge(),n.element(),{target:b(n.element())}))},a=function(n){tt(n.element())||(C(n.components(),a),u.unregister(n)),n.disconnect()},f=function(n){!function(n,e){mt(n,e,ft)}(t,n)},s=function(n){yn(n)},l=function(n){i({universal:b(!0),data:b(n)})},d=function(n,e){i({universal:b(!1),channels:b(n),data:b(e)})},m=function(n,e){var t=u.filter(n);return Ch(t,e)},g=function(n){return u.getById(n).fold(function(){return vt.error(new Error('Could not find component with uid: "'+n+'" in system.'))},vt.value)},p=function(n){var e=gf(n).getOr("not found");return g(e)};return e(t),{root:b(t),element:t.element,destroy:function(){n.unbind(),st(t.element())},add:f,remove:s,getByUid:g,getByDom:p,addToWorld:e,removeFromWorld:a,broadcast:l,broadcastOn:d,broadcastEvent:m}},Wh=b(_i.resolve("readonly-mode")),Xh=b(_i.resolve("edit-mode"));function qh(n){var e=Lm(dm.sketch({dom:{classes:[_i.resolve("outer-container")].concat(n.classes)},containerBehaviours:Bo([Ho.config({alpha:Wh(),omega:Xh()})])}));return $h(e)}var Yh=function(n,e){var t=Je.fromTag("input");di(t,{opacity:"0",position:"absolute",top:"-1000px",left:"-1000px"}),ft(n,t),so(t),e(t),st(t)},Kh=function(n){var e=n.getSelection();if(0<e.rangeCount){var t=e.getRangeAt(0),r=n.document.createRange();r.setStart(t.startContainer,t.startOffset),r.setEnd(t.endContainer,t.endOffset),e.removeAllRanges(),e.addRange(r)}},Jh=function(n,e){mo().each(function(n){cn(n,e)||lo(n)}),n.focus(),so(Je.fromDom(n.document.body)),Kh(n)},Qh={stubborn:function(n,e,t,r){function o(){Jh(e,r)}var i=Zd(t,"keydown",function(n){k(["input","textarea"],q(n.target()))||o()});return{toReading:function(){Yh(n,lo)},toEditing:o,onToolbarTouch:function(){},destroy:function(){i.unbind()}}},timid:function(n,e,t,r){function o(){lo(r)}return{toReading:function(){o()},toEditing:function(){Jh(e,r)},onToolbarTouch:function(){o()},destroy:w}}},Zh=function(e,r,t,o,n){function i(){r.run(function(n){n.refreshSelection()})}function u(n,e){var t=n-o.dom().scrollTop;r.run(function(n){n.scrollIntoView(t,t+e)})}function c(){r.run(function(n){n.clearSelection()})}function a(){e.getCursorBox().each(function(n){u(n.top(),n.height())}),r.run(function(n){n.syncHeight()})}var f=jg(e),s=Op(a,300),l=[e.onKeyup(function(){c(),s.throttle()}),e.onNodeChanged(i),e.onDomChanged(s.throttle),e.onDomChanged(i),e.onScrollToCursor(function(n){n.preventDefault(),s.throttle()}),e.onScrollToElement(function(n){n.element(),u(r,o)}),e.onToEditing(function(){r.run(function(n){n.toEditing()})}),e.onToReading(function(){r.run(function(n){n.toReading()})}),Zd(e.doc(),"touchend",function(n){cn(e.html(),n.target())||cn(e.body(),n.target())}),Zd(t,"transitionend",function(n){"height"===n.raw().propertyName&&function(){var e=Wi(t);r.run(function(n){n.setViewportOffset(e)}),i(),a()}()}),nm(t,"touchstart",function(n){r.run(function(n){n.highlightSelection()}),function(e){r.run(function(n){n.onToolbarTouch(e)})}(n),e.onTouchToolstrip()}),Zd(e.body(),"touchstart",function(n){c(),e.onTouchContent(),f.fireTouchstart(n)}),f.onTouchmove(),f.onTouchend(),Zd(e.body(),"click",function(n){n.kill()}),Zd(t,"touchmove",function(){e.onToolbarScrollStart()})];return{destroy:function(){C(l,function(n){n.unbind()})}}};var nv,ev,tv,rv,ov={},iv={exports:ov};nv=undefined,ev=ov,tv=iv,rv=undefined,function(n){"object"==typeof ev&&void 0!==tv?tv.exports=n():"function"==typeof nv&&nv.amd?nv([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function s(i,u,c){function a(e,n){if(!u[e]){if(!i[e]){var t="function"==typeof rv&&rv;if(!n&&t)return t(e,!0);if(f)return f(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[e]={exports:{}};i[e][0].call(o.exports,function(n){return a(i[e][1][n]||n)},o,o.exports,s,i,u,c)}return u[e].exports}for(var f="function"==typeof rv&&rv,n=0;n<c.length;n++)a(c[n]);return a}({1:[function(n,e,t){var r,o,i=e.exports={};function u(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function a(n){if(r===setTimeout)return setTimeout(n,0);if((r===u||!r)&&setTimeout)return r=setTimeout,setTimeout(n,0);try{return r(n,0)}catch(e){try{return r.call(null,n,0)}catch(e){return r.call(this,n,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:u}catch(n){r=u}try{o="function"==typeof clearTimeout?clearTimeout:c}catch(n){o=c}}();var f,s=[],l=!1,d=-1;function m(){l&&f&&(l=!1,f.length?s=f.concat(s):d=-1,s.length&&g())}function g(){if(!l){var n=a(m);l=!0;for(var e=s.length;e;){for(f=s,s=[];++d<e;)f&&f[d].run();d=-1,e=s.length}f=null,l=!1,function t(n){if(o===clearTimeout)return clearTimeout(n);if((o===c||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(n);try{return o(n)}catch(e){try{return o.call(null,n)}catch(e){return o.call(this,n)}}}(n)}}function p(n,e){this.fun=n,this.array=e}function h(){}i.nextTick=function(n){var e=new Array(arguments.length-1);if(1<arguments.length)for(var t=1;t<arguments.length;t++)e[t-1]=arguments[t];s.push(new p(n,e)),1!==s.length||l||a(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,l,e){(function(e){function r(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],s(n,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var n=1===r._state?o.onFulfilled:o.onRejected;if(null!==n){var e;try{e=n(r._value)}catch(t){return void c(o.promise,t)}u(o.promise,e)}else(1===r._state?u:c)(o.promise,r._value)})):r._deferreds.push(o)}function u(n,e){try{if(e===n)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if(e instanceof i)return n._state=3,n._value=e,void a(n);if("function"==typeof t)return void s(function r(n,e){return function(){n.apply(e,arguments)}}(t,e),n)}n._state=1,n._value=e,a(n)}catch(o){c(n,o)}}function c(n,e){n._state=2,n._value=e,a(n)}function a(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)o(n,n._deferreds[e]);n._deferreds=null}function f(n,e,t){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof e?e:null,this.promise=t}function s(n,e){var t=!1;try{n(function(n){t||(t=!0,u(e,n))},function(n){t||(t=!0,c(e,n))})}catch(r){if(t)return;t=!0,c(e,r)}}var n,t;n=this,t=setTimeout,i.prototype["catch"]=function(n){return this.then(null,n)},i.prototype.then=function(n,e){var t=new this.constructor(r);return o(this,new f(n,e,t)),t},i.all=function(n){var a=Array.prototype.slice.call(n);return new i(function(o,i){if(0===a.length)return o([]);var u=a.length;function c(e,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void t.call(n,function(n){c(e,n)},i)}a[e]=n,0==--u&&o(a)}catch(r){i(r)}}for(var n=0;n<a.length;n++)c(n,a[n])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(n){n(e)})},i.reject=function(t){return new i(function(n,e){e(t)})},i.race=function(o){return new i(function(n,e){for(var t=0,r=o.length;t<r;t++)o[t].then(n,e)})},i._immediateFn="function"==typeof e?function(n){e(n)}:function(n){t(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==l&&l.exports?l.exports=i:n.Promise||(n.Promise=i)}).call(this,n("timers").setImmediate)},{timers:3}],3:[function(a,n,f){(function(n,e){var r=a("process/browser.js").nextTick,t=Function.prototype.apply,o=Array.prototype.slice,i={},u=0;function c(n,e){this._id=n,this._clearFn=e}f.setTimeout=function(){return new c(t.call(setTimeout,window,arguments),clearTimeout)},f.setInterval=function(){return new c(t.call(setInterval,window,arguments),clearInterval)},f.clearTimeout=f.clearInterval=function(n){n.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},f.enroll=function(n,e){clearTimeout(n._idleTimeoutId),n._idleTimeout=e},f.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},f._unrefActive=f.active=function(n){clearTimeout(n._idleTimeoutId);var e=n._idleTimeout;0<=e&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},e))},f.setImmediate="function"==typeof n?n:function(n){var e=u++,t=!(arguments.length<2)&&o.call(arguments,1);return i[e]=!0,r(function(){i[e]&&(t?n.apply(null,t):n.call(null),f.clearImmediate(e))}),e},f.clearImmediate="function"==typeof e?e:function(n){delete i[n]}}).call(this,a("timers").setImmediate,a("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,e,t){var r=n("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function uv(n){l.setTimeout(function(){throw n},0)}function cv(n,e,t){return Math.abs(n-e)<=t?Fn.none():n<e?Fn.some(n+t):Fn.some(n-t)}function av(e,t){return wo([{width:320,height:480,keyboard:{portrait:300,landscape:240}},{width:320,height:568,keyboard:{portrait:300,landscape:240}},{width:375,height:667,keyboard:{portrait:305,landscape:240}},{width:414,height:736,keyboard:{portrait:320,landscape:240}},{width:768,height:1024,keyboard:{portrait:320,landscape:400}},{width:1024,height:1366,keyboard:{portrait:380,landscape:460}}],function(n){return function(n,e){return n?Fn.some(e):Fn.none()}(e<=n.width&&t<=n.height,n.keyboard)}).getOr({portrait:t/5,landscape:e/4})}function fv(n){var e=Ag(n).isPortrait(),t=function(n){return av(n.screen.width,n.screen.height)}(n),r=e?t.portrait:t.landscape;return(e?n.screen.height:n.screen.width)-n.innerHeight>r?0:r}function sv(n,e){var t=an(n).dom().defaultView;return Wi(n)+Wi(e)-fv(t)}function lv(n){return Hg(n,Mv)}function dv(n,e){var t=function(n){return Qr(n,Iv)}(n);return Dv.fixed(n,t,e)}function mv(n,e){return Dv.scroller(n,e)}function gv(n){var e=lv(n);return("true"===Qr(n,Rv)?mv:dv)(n,e)}function pv(n,e,t){var r=an(n).dom().defaultView.innerHeight;return Kr(n,Av,r+"px"),r-e-t}function hv(n){var e=gi(n,"top").getOr("0");return parseInt(e,10)}function vv(n){return parseInt(n.dom().scrollTop,10)}function yv(n,e){var t=e+Vv(n)+"px";Gi(n,"top",t)}var bv=iv.exports.boltExport,xv=function(n){var t=Fn.none(),e=[],r=function(n){o()?u(n):e.push(n)},o=function(){return t.isSome()},i=function(n){C(n,u)},u=function(e){t.each(function(n){l.setTimeout(function(){e(n)},0)})};return n(function(n){t=Fn.some(n),i(e),e=[]}),{get:r,map:function(t){return xv(function(e){r(function(n){e(t(n))})})},isReady:o}},wv={nu:xv,pure:function(e){return xv(function(n){n(e)})}},Sv=function(t){function n(n){t().then(n,uv)}return{map:function(n){return Sv(function(){return t().then(n)})},bind:function(e){return Sv(function(){return t().then(function(n){return e(n).toPromise()})})},anonBind:function(n){return Sv(function(){return t().then(function(){return n.toPromise()})})},toLazy:function(){return wv.nu(n)},toCached:function(){var n=null;return Sv(function(){return null===n&&(n=t()),n})},toPromise:t,get:n}},Tv=function(n){return Sv(function(){return new bv(n)})},Ov=function(n){return Sv(function(){return bv.resolve(n)})},kv=function(){var f=null;return{animate:function(r,o,n,i,e,t){function u(n){c=!0,e(n)}var c=!1;Rg.clearInterval(f);function a(n){Rg.clearInterval(f),u(n)}f=Rg.setInterval(function(){var t=r();cv(t,o,n).fold(function(){Rg.clearInterval(f),u(o)},function(n){if(i(n,a),!c){var e=r();(e!==n||Math.abs(e-o)>Math.abs(t-o))&&(Rg.clearInterval(f),u(o))}})},t)}}},Ev=sv,Cv=function(n,e,t){var r=sv(e,t),o=Wi(e)+Wi(t)-r;Gi(n,"padding-bottom",o+"px")},Dv=yt([{fixed:["element","property","offsetY"]},{scroller:["element","offsetY"]}]),Mv="data-"+_i.resolve("position-y-fixed"),Iv="data-"+_i.resolve("y-property"),Rv="data-"+_i.resolve("scrolling"),Av="data-"+_i.resolve("last-window-height"),Fv=function(n){var e=Yi(n,"["+Mv+"]");return de(e,gv)},Bv=function(r,o,i,u){function n(){var n=t.innerHeight;return function(n){return Hg(n,Av)}(r)<n}function e(){if(d){var n=Wi(i),e=Wi(u),t=pv(r,n,e);Kr(r,Mv,n+"px"),Gi(r,"height",t+"px"),Cv(o,r,u)}}var t=an(r).dom().defaultView,c=function(n){var e=Qr(n,"style");di(n,{position:"absolute",top:"0px"}),Kr(n,Mv,"0px"),Kr(n,Iv,"top");return{restore:function(){Kr(n,"style",e||""),no(n,Mv),no(n,Iv)}}}(i),a=Wi(i),f=Wi(u),s=function(n,e,t){var r=Qr(t,"style");vg.register(t),di(t,{position:"absolute",height:e+"px",width:"100%",top:n+"px"}),Kr(t,Mv,n+"px"),Kr(t,Rv,"true"),Kr(t,Iv,"top");return{restore:function(){vg.deregister(t),Kr(t,"style",r||""),no(t,Mv),no(t,Rv),no(t,Iv)}}}(a,pv(r,a,f),r),l=function(n){var e=Qr(n,"style");di(n,{position:"absolute",bottom:"0px"}),Kr(n,Mv,"0px"),Kr(n,Iv,"bottom");return{restore:function(){Kr(n,"style",e||""),no(n,Mv),no(n,Iv)}}}(u),d=!0;return Cv(o,r,u),{setViewportOffset:function(n){Kr(r,Mv,n+"px"),e()},isExpanding:n,isShrinking:m(n),refresh:e,restore:function(){d=!1,c.restore(),s.restore(),l.restore()}}},Vv=lv,Nv=kv(),jv="data-"+_i.resolve("last-scroll-top"),_v=function(t,r,o){return Tv(function(n){var e=d(vv,t);Nv.animate(e,r,15,function(n){t.dom().scrollTop=n,Gi(t,"top",hv(t)+15+"px")},function(){t.dom().scrollTop=r,Gi(t,"top",o+"px"),n(r)},10)})},Pv=function(o,i){return Tv(function(n){var e=d(vv,o);Kr(o,jv,e());var t=Math.abs(i-e()),r=Math.ceil(t/10);Nv.animate(e,i,r,function(n,e){Hg(o,jv)!==o.dom().scrollTop?e(o.dom().scrollTop):(o.dom().scrollTop=n,Kr(o,jv,n))},function(){o.dom().scrollTop=i,Kr(o,jv,i),n(i)},10)})},Hv=function(i,u){return Tv(function(n){function e(n){Gi(i,"top",n+"px")}var t=d(hv,i),r=Math.abs(u-t()),o=Math.ceil(r/10);Nv.animate(t,u,o,e,function(){e(u),n(u)},10)})},zv=function(e,t,r){var o=an(e).dom().defaultView;return Tv(function(n){yv(e,r),yv(t,r),o.scrollTo(0,r),n(r)})};function Lv(i,n){return n(function(t){var r=[],o=0;0===i.length?t([]):C(i,function(n,e){n.get(function(e){return function(n){r[e]=n,++o>=i.length&&t(r)}}(e))})})}function Gv(n,r){return n.fold(function(n,e,t){return function(n,e,t,r){return Gi(n,e,t+r+"px"),Ov(r)}(n,e,r,t)},function(n,e){return function(n,e,t){var r=e+t,o=gi(n,"top").getOr(t),i=r-parseInt(o,10),u=n.dom().scrollTop+i;return _v(n,u,r)}(n,r,e)})}function Uv(e,t,n,r,o,i){var u=function f(t){var r=Pn(wv.pure({}));return{start:function(e){var n=wv.nu(function(n){return t(e).get(n)});r.set(n)},idle:function(n){r.get().get(function(){n()})}}}(function(n){return zv(e,t,n)}),c=Op(function(){u.idle(function(){Wv(n,r.pageYOffset).get(function(){(function(){var n=jp(i);return Fn.from(n[0]).bind(function(n){var e=n.top()-t.dom().scrollTop;return e>r.innerHeight+5||e<-5?Fn.some({top:b(e),bottom:b(e+n.height())}):Fn.none()})})().each(function(n){t.dom().scrollTop=t.dom().scrollTop+n.top()}),u.start(0),o.refresh()})})},1e3),a=Zd(Je.fromDom(r),"scroll",function(){r.pageYOffset<0||c.throttle()});return Wv(n,r.pageYOffset).get(y),{unbind:a.unbind}}var $v=function(n,e,t,r,o){var i=Ev(e,t),u=d(Kh,n);i<r||i<o?Pv(e,e.dom().scrollTop-i+o).get(u):r<0&&Pv(e,e.dom().scrollTop+r).get(u)},Wv=function(n,e){var t=Fv(n);return function(n){return Lv(n,Tv)}(de(t,function(n){return Gv(n,e)}))},Xv=function(n){var t=n.cWin(),e=n.ceBody(),r=n.socket(),o=n.toolstrip(),i=n.toolbar(),u=n.contentElement(),c=n.keyboardType(),a=n.outerWindow(),f=n.dropup(),s=Bv(r,e,o,f),l=c(n.outerBody(),t,rt(),u,o,i),d=Fg(a,{onChange:w,onReady:s.refresh});d.onAdjustment(function(){s.refresh()});var m=Zd(Je.fromDom(a),"resize",function(){s.isExpanding()&&s.refresh()}),g=Uv(o,r,n.outerBody(),a,s,t),p=function v(t,e){var n=t.document,r=Je.fromTag("div");function o(n){var e=Je.fromTag("span");return Md(e,[_i.resolve("layer-editor"),_i.resolve("unfocused-selection")]),di(e,{left:n.left()+"px",top:n.top()+"px",width:n.width()+"px",height:n.height()+"px"}),e}io(r,_i.resolve("unfocused-selections")),ft(Je.fromDom(n.documentElement),r);var i=Zd(r,"touchstart",function(n){n.prevent(),Jh(t,e),u()}),u=function(){pn(r)};return{update:function(){u();var n=jp(t),e=de(n,o);gn(r,e)},isActive:function(){return 0<at(r).length},destroy:function(){i.unbind(),st(r)},clear:u}}(t,u),h=function(){p.clear()};return{toEditing:function(){l.toEditing(),h()},toReading:function(){l.toReading()},onToolbarTouch:function(n){l.onToolbarTouch(n)},refreshSelection:function(){p.isActive()&&p.update()},clearSelection:h,highlightSelection:function(){p.update()},scrollIntoView:function(n,e){$v(t,r,f,n,e)},updateToolbarPadding:w,setViewportOffset:function(n){s.setViewportOffset(n),Hv(r,n).get(y)},syncHeight:function(){Gi(u,"height",u.dom().contentWindow.document.body.scrollHeight+"px")},refreshStructure:s.refresh,destroy:function(){s.restore(),d.destroy(),g.unbind(),m.unbind(),l.destroy(),p.destroy(),Yh(rt(),lo)}}},qv=function(r,n){var o=qp(),i=bd(),u=bd(),c=yd(),a=yd();return{enter:function(){n.hide();var t=Je.fromDom(l.document);zp.getActiveApi(r.editor).each(function(n){i.set({socketHeight:gi(r.socket,"height"),iframeHeight:gi(n.frame(),"height"),outerScroll:l.document.body.scrollTop}),u.set({exclusives:uh.exclusive(t,"."+vg.scrollable())}),io(r.container,_i.resolve("fullscreen-maximized")),Wp(r.container,n.body()),o.maximize(),Gi(r.socket,"overflow","scroll"),Gi(r.socket,"-webkit-overflow-scrolling","touch"),so(n.body());var e=nn(["cWin","ceBody","socket","toolstrip","toolbar","dropup","contentElement","cursor","keyboardType","isScrolling","outerWindow","outerBody"],[]);c.set(Xv(e({cWin:n.win(),ceBody:n.body(),socket:r.socket,toolstrip:r.toolstrip,toolbar:r.toolbar,dropup:r.dropup.element(),contentElement:n.frame(),cursor:w,outerBody:r.body,outerWindow:r.win,keyboardType:Qh.stubborn,isScrolling:function(){return u.get().exists(function(n){return n.socket.isScrolling()})}}))),c.run(function(n){n.syncHeight()}),a.set(Zh(n,c,r.toolstrip,r.socket,r.dropup))})},refreshStructure:function(){c.run(function(n){n.refreshStructure()})},exit:function(){o.restore(),a.clear(),c.clear(),n.show(),i.on(function(n){n.socketHeight.each(function(n){Gi(r.socket,"height",n)}),n.iframeHeight.each(function(n){Gi(r.editor.getFrame(),"height",n)}),l.document.body.scrollTop=n.scrollTop}),i.clear(),u.on(function(n){n.exclusives.unbind()}),u.clear(),co(r.container,_i.resolve("fullscreen-maximized")),Xp(),vg.deregister(r.toolbar),pi(r.socket,"overflow"),pi(r.socket,"-webkit-overflow-scrolling"),lo(r.editor.getFrame()),zp.getActiveApi(r.editor).each(function(n){n.clearSelection()})}}},Yv=function(n){var e=Xt("Getting IosWebapp schema",Jp,n);Gi(e.toolstrip,"width","100%"),Gi(e.container,"position","relative");var t=Lm(Kp(function(){e.setReadOnly(e.readOnlyOnInit()),o.enter()},e.translate));e.alloy.add(t);var r={show:function(){e.alloy.add(t)},hide:function(){e.alloy.remove(t)}},o=qv(e,r);return{setReadOnly:e.setReadOnly,refreshStructure:o.refreshStructure,enter:o.enter,exit:o.exit,destroy:w}};function Kv(n,e,t){n.system().broadcastOn([Uo.formatChanged()],{command:e,state:t})}function Jv(m){return{getNotificationManagerImpl:function(){return{open:b({progressBar:{value:w},close:w,text:w,getEl:b(null),moveTo:w,moveRel:w,settings:{}}),close:w,reposition:w,getArgs:b({})}},renderUI:function(){var n=m.getElement(),e=Zv(m);!1===function(n){return!1===n.settings.skin}(m)?(m.contentCSS.push(e.content),zo.DOM.styleSheetLoader.load(e.ui,ey(m))):ey(m)();function t(){m.fire("ScrollIntoView")}var f=L().os.isAndroid()?function c(n){var e=qh({classes:[_i.resolve("android-container")]}),t=ch(),r=yd(),o=Mh(r),i=Ih(),u=Sh(w,n);return e.add(t.wrapper()),e.add(i),e.add(u.component()),{system:b(e),element:e.element,init:function(n){r.set(Qp(n))},exit:function(){r.run(function(n){n.exit(),og.remove(i,o)})},setToolbarGroups:function(n){var e=t.createGroups(n);t.setGroups(e)},setContextToolbar:function(n){var e=t.createGroups(n);t.setContextToolbar(e)},focusToolbar:function(){t.focus()},restoreToolbar:function(){t.restoreToolbar()},updateMode:function(n){Rh(i,o,n,e.root())},socket:b(i),dropup:b(u)}}(t):function a(n){var e=qh({classes:[_i.resolve("ios-container")]}),t=ch(),r=yd(),o=Mh(r),i=Ih(),u=Sh(function(){r.run(function(n){n.refreshStructure()})},n);return e.add(t.wrapper()),e.add(i),e.add(u.component()),{system:b(e),element:e.element,init:function(n){r.set(Yv(n))},exit:function(){r.run(function(n){og.remove(i,o),n.exit()})},setToolbarGroups:function(n){var e=t.createGroups(n);t.setGroups(e)},setContextToolbar:function(n){var e=t.createGroups(n);t.setContextToolbar(e)},focusToolbar:function(){t.focus()},restoreToolbar:function(){t.restoreToolbar()},updateMode:function(n){Rh(i,o,n,e.root())},socket:b(i),dropup:b(u)}}(t);!function(n,e){gt(n,e,dn)}(Je.fromDom(n),f.system());function s(n,e,t,r){!1===r&&m.selection.collapse();var o=i(n,e,t);f.setToolbarGroups(!0===r?o.readOnly:o.main),m.setMode(!0===r?"readonly":"design"),m.fire(!0===r?ty():ry()),f.updateMode(r)}function l(n,e){return m.on(n,e),{unbind:function(){m.off(n)}}}var r=n.ownerDocument.defaultView,d=Fg(r,{onChange:function(){f.system().broadcastOn([Uo.orientationChanged()],{width:Bg(r)})},onReady:w}),i=function(n,e,t){var r=n.get();return{readOnly:r.backToMask.concat(e.get()),main:r.backToMask.concat(t.get())}};return m.on("init",function(){f.init({editor:{getFrame:function(){return Je.fromDom(m.contentAreaContainer.querySelector("iframe"))},onDomChanged:function(){return{unbind:w}},onToReading:function(n){return l(ty(),n)},onToEditing:function(n){return l(ry(),n)},onScrollToCursor:function(e){m.on("ScrollIntoView",function(n){e(n)});return{unbind:function(){m.off("ScrollIntoView"),d.destroy()}}},onTouchToolstrip:function(){n()},onTouchContent:function(){(function(n){return go(n).bind(function(n){return f.system().getByDom(n).toOption()})})(Je.fromDom(m.editorContainer.querySelector("."+_i.resolve("toolbar")))).each($),f.restoreToolbar(),n()},onTapContent:function(n){var e=n.target();if("img"===q(e))m.selection.select(e.dom()),n.kill();else if("a"===q(e)){f.system().getByDom(Je.fromDom(m.editorContainer)).each(function(n){Ho.isAlpha(n)&&Go(e.dom())})}}},container:Je.fromDom(m.editorContainer),socket:Je.fromDom(m.contentAreaContainer),toolstrip:Je.fromDom(m.editorContainer.querySelector("."+_i.resolve("toolstrip"))),toolbar:Je.fromDom(m.editorContainer.querySelector("."+_i.resolve("toolbar"))),dropup:f.dropup(),alloy:f.system(),translate:w,setReadOnly:function(n){s(a,c,u,n)},readOnlyOnInit:function(){return!1}});var n=function(){f.dropup().disappear(function(){f.system().broadcastOn([Uo.dropupDismissed()],{})})},e={label:"The first group",scrollable:!1,items:[Ws.forToolbar("back",function(){m.selection.collapse(),f.exit()},{},m)]},t={label:"Back to read only",scrollable:!1,items:[Ws.forToolbar("readonly-back",function(){s(a,c,u,!0)},{},m)]},r=Cg(f,m),o=Dg(m.settings,r),i={label:"The extra group",scrollable:!1,items:[]},u=Pn([{label:"the action group",scrollable:!0,items:o},i]),c=Pn([{label:"The read only mode group",scrollable:!0,items:[]},i]),a=Pn({backToMask:[e],backToReadOnly:[t]});ny(f,m)}),m.on("remove",function(){f.exit()}),m.on("detach",function(){!function(e){var n=at(e.element());C(n,function(n){e.getByDom(n).each(lt)}),st(e.element())}(f.system()),f.system().destroy()}),{iframeContainer:f.socket().element().dom(),editorContainer:f.element().dom()}}}}var Qv=tinymce.util.Tools.resolve("tinymce.EditorManager"),Zv=function(n){var e=Dt(n.settings,"skin_url").fold(function(){return Qv.baseURL+"/skins/ui/oxide"},function(n){return n});return{content:e+"/content.mobile.min.css",ui:e+"/skin.mobile.min.css"}},ny=function(r,n){var e=Bn(n.formatter.get());C(e,function(e){n.formatter.formatChanged(e,function(n){Kv(r,e,n)})}),C(["ul","ol"],function(t){n.selection.selectorChanged(t,function(n,e){Kv(r,t,n)})})},ey=(b(["x-small","small","medium","large","x-large"]),function(n){function e(){n._skinLoaded=!0,n.fire("SkinLoaded")}return function(){n.initialized?e():n.on("init",e)}}),ty=b("toReading"),ry=b("toEditing");!function iy(){Lo.add("mobile",Jv)}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/themes/silver/theme.min.js b/website/js/vendor/tinymce/js/tinymce/themes/silver/theme.min.js
deleted file mode 100644 (file)
index 3a12a69..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(v){"use strict";function Z(){}function i(e,o){return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return e(o.apply(null,n))}}function l(n){return n}var nn=function(n){return function(){return n}};function d(o){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=r.concat(n);return o.apply(null,e)}}function b(e){return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return!e.apply(null,n)}}function r(n){return function(){throw new Error(n)}}var u=nn(!1),a=nn(!0),n=tinymce.util.Tools.resolve("tinymce.ThemeManager"),N=function(){return(N=Object.assign||function(n){for(var t,e=1,o=arguments.length;e<o;e++)for(var r in t=arguments[e])Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}).apply(this,arguments)};function c(n,t){var e={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&t.indexOf(o)<0&&(e[o]=n[o]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(n);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(n,o[r])&&(e[o[r]]=n[o[r]])}return e}function g(){for(var n=0,t=0,e=arguments.length;t<e;t++)n+=arguments[t].length;var o=Array(n),r=0;for(t=0;t<e;t++)for(var i=arguments[t],u=0,a=i.length;u<a;u++,r++)o[r]=i[u];return o}function t(){return s}var e,s=(e={fold:function(n,t){return n()},is:u,isSome:u,isNone:a,getOr:m,getOrThunk:f,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:nn(null),getOrUndefined:nn(undefined),or:m,orThunk:f,map:t,each:Z,bind:t,exists:u,forall:a,filter:t,equals:o,equals_:o,toArray:function(){return[]},toString:nn("none()")},Object.freeze&&Object.freeze(e),e);function o(n){return n.isNone()}function f(n){return n()}function m(n){return n}function p(t){return function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===t}}function h(n,t){if(fn(n)){for(var e=0,o=n.length;e<o;++e)if(!0!==t(n[e]))return!1;return!0}return!1}function y(n,t){return pn.call(n,t)}function x(n,t){for(var e=0,o=n.length;e<o;e++){if(t(n[e],e))return!0}return!1}function w(n,t){for(var e=[],o=0;o<n.length;o+=t){var r=gn.call(n,o,o+t);e.push(r)}return e}function S(n,t){for(var e=n.length,o=new Array(e),r=0;r<e;r++){var i=n[r];o[r]=t(i,r)}return o}function C(n,t){for(var e=[],o=0,r=n.length;o<r;o++){var i=n[o];t(i,o)&&e.push(i)}return e}function k(n,t,e){return function(n,t){for(var e=n.length-1;0<=e;e--){t(n[e],e)}}(n,function(n){e=t(e,n)}),e}function O(n,t,e){return bn(n,function(n){e=t(e,n)}),e}function E(n,t){for(var e=0,o=n.length;e<o;e++){var r=n[e];if(t(r,e))return on.some(r)}return on.none()}function T(n,t){for(var e=0,o=n.length;e<o;e++){if(t(n[e],e))return on.some(e)}return on.none()}function H(n){for(var t=[],e=0,o=n.length;e<o;++e){if(!fn(n[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+n);hn.apply(t,n[e])}return t}function B(n,t){var e=S(n,t);return H(e)}function D(n,t){for(var e=0,o=n.length;e<o;++e){if(!0!==t(n[e],e))return!1}return!0}function A(n){var t=gn.call(n,0);return t.reverse(),t}function _(n,t){return C(n,function(n){return!vn(t,n)})}function M(n){return[n]}function F(n){return 0===n.length?on.none():on.some(n[n.length-1])}function P(n,e){return kn(n,function(n,t){return{k:t,v:e(n,t)}})}function I(n,t){for(var e=wn(n),o=0,r=e.length;o<r;o++){var i=e[o],u=n[i];if(t(u,i,n))return on.some(u)}return on.none()}function R(n){return On(n,function(n){return n})}function V(n,t){return En(n,t)?on.from(n[t]):on.none()}function z(u){return function(){for(var n=new Array(arguments.length),t=0;t<n.length;t++)n[t]=arguments[t];if(0===n.length)throw new Error("Can't merge zero objects");for(var e={},o=0;o<n.length;o++){var r=n[o];for(var i in r)Bn.call(r,i)&&(e[i]=u(e[i],r[i]))}return e}}function L(e){var o,r=!1;return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return r||(r=!0,o=e.apply(null,n)),o}}function j(n){return _n.defaultedThunk(nn(n))}function U(t){return function(n){return En(n,t)?on.from(n[t]):on.none()}}function W(n,t){return U(t)(n)}function G(n,t){var e={};return e[n]=t,e}function X(n,t){return function(n,e){var o={};return Cn(n,function(n,t){vn(e,t)||(o[t]=n)}),o}(n,t)}function Y(n,t){return function(t,e){return function(n){return En(n,t)?n[t]:e}}(n,t)}function q(n,t){return G(n,t)}function K(n){return function(n){var t={};return bn(n,function(n){t[n.key]=n.value}),t}(n)}function J(n,t){var e=function(n){var t=[],e=[];return bn(n,function(n){n.fold(function(n){t.push(n)},function(n){e.push(n)})}),{errors:t,values:e}}(n);return 0<e.errors.length?function(n){return an.error(H(n))}(e.errors):function(n,t){return 0===n.length?an.value(t):an.value(Dn(t,An.apply(undefined,n)))}(e.values,t)}function $(n,t){return function(n,t){return En(n,t)&&n[t]!==undefined&&null!==n[t]}(n,t)}var Q,tn,en=function(e){function n(){return r}function t(n){return n(e)}var o=nn(e),r={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:a,isNone:u,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:n,orThunk:n,map:function(n){return en(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?r:s},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(u,function(n){return t(e,n)})}};return r},on={some:en,none:t,from:function(n){return null===n||n===undefined?s:en(n)}},rn=function(e){return{is:function(n){return e===n},isValue:a,isError:u,getOr:nn(e),getOrThunk:nn(e),getOrDie:nn(e),or:function(n){return rn(e)},orThunk:function(n){return rn(e)},fold:function(n,t){return t(e)},map:function(n){return rn(n(e))},mapError:function(n){return rn(e)},each:function(n){n(e)},bind:function(n){return n(e)},exists:function(n){return n(e)},forall:function(n){return n(e)},toOption:function(){return on.some(e)}}},un=function(e){return{is:u,isValue:u,isError:a,getOr:l,getOrThunk:function(n){return n()},getOrDie:function(){return r(String(e))()},or:function(n){return n},orThunk:function(n){return n()},fold:function(n,t){return n(e)},map:function(n){return un(e)},mapError:function(n){return un(n(e))},each:Z,bind:function(n){return un(e)},exists:u,forall:a,toOption:on.none}},an={value:rn,error:un,fromOption:function(n,t){return n.fold(function(){return un(t)},rn)}},cn=p("string"),sn=p("object"),fn=p("array"),ln=p("boolean"),dn=p("function"),mn=p("number"),gn=Array.prototype.slice,pn=Array.prototype.indexOf,hn=Array.prototype.push,vn=function(n,t){return-1<y(n,t)},bn=function(n,t){for(var e=0,o=n.length;e<o;e++){t(n[e],e)}},yn=function(n){return 0===n.length?on.none():on.some(n[0])},xn=dn(Array.from)?Array.from:function(n){return gn.call(n)},wn=Object.keys,Sn=Object.hasOwnProperty,Cn=function(n,t){for(var e=wn(n),o=0,r=e.length;o<r;o++){var i=e[o];t(n[i],i)}},kn=function(n,o){var r={};return Cn(n,function(n,t){var e=o(n,t);r[e.k]=e.v}),r},On=function(n,e){var o=[];return Cn(n,function(n,t){o.push(e(n,t))}),o},En=function(n,t){return Sn.call(n,t)},Tn=function(u){if(!fn(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var a=[],e={};return bn(u,function(n,o){var t=wn(n);if(1!==t.length)throw new Error("one and only one name per case");var r=t[0],i=n[r];if(e[r]!==undefined)throw new Error("duplicate key detected:"+r);if("cata"===r)throw new Error("cannot have a case named cata (sorry)");if(!fn(i))throw new Error("case arguments must be an array");a.push(r),e[r]=function(){var n=arguments.length;if(n!==i.length)throw new Error("Wrong number of arguments to case "+r+". Expected "+i.length+" ("+i+"), got "+n);for(var e=new Array(n),t=0;t<e.length;t++)e[t]=arguments[t];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[o].apply(null,e)},match:function(n){var t=wn(n);if(a.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+a.join(",")+"\nActual: "+t.join(","));if(!D(a,function(n){return vn(t,n)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+a.join(", "));return n[r].apply(null,e)},log:function(n){v.console.log(n,{constructors:a,constructor:r,params:e})}}}}),e},Bn=Object.prototype.hasOwnProperty,Dn=z(function(n,t){return sn(n)&&sn(t)?Dn(n,t):t}),An=z(function(n,t){return t}),_n=Tn([{strict:[]},{defaultedThunk:["fallbackThunk"]},{asOption:[]},{asDefaultedOptionThunk:["fallbackThunk"]},{mergeWithThunk:["baseThunk"]}]),Mn=_n.strict,Fn=_n.asOption,In=_n.defaultedThunk,Rn=_n.mergeWithThunk,Vn=(Tn([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(n){return U(n)}),Nn=function(n,t){return W(n,t)};(tn=Q=Q||{})[tn.Error=0]="Error",tn[tn.Value=1]="Value";function Hn(n,t,e){return n.stype===Q.Error?t(n.serror):e(n.svalue)}function Pn(n){return{stype:Q.Value,svalue:n}}function zn(n){return{stype:Q.Error,serror:n}}function Ln(n){return i(qt,H)(n)}function jn(n){return sn(n)&&100<wn(n).length?" removed due to size":JSON.stringify(n,null,2)}function Un(n,t){return qt([{path:n,getErrorInfo:t}])}function Wn(n,t,e){return W(t,e).fold(function(){return function(n,t,e){return Un(n,function(){return'Could not find valid *strict* value for "'+t+'" in '+jn(e)})}(n,e,t)},Xt)}function Gn(n,t,e){var o=W(n,t).fold(function(){return e(n)},l);return Xt(o)}function Xn(u,a,n,c){return n.fold(function(o,e,n,r){function i(n){var t=r.extract(u.concat([o]),c,n);return $t(t,function(n){return G(e,c(n))})}function t(n){return n.fold(function(){var n=G(e,c(on.none()));return Xt(n)},function(n){var t=r.extract(u.concat([o]),c,n);return $t(t,function(n){return G(e,c(on.some(n)))})})}return n.fold(function(){return Kt(Wn(u,a,o),i)},function(n){return Kt(Gn(a,o,n),i)},function(){return Kt(function(n,t){return Xt(W(n,t))}(a,o),t)},function(n){return Kt(function(t,n,e){var o=W(t,n).map(function(n){return!0===n?e(t):n});return Xt(o)}(a,o,n),t)},function(n){var t=n(a),e=$t(Gn(a,o,nn({})),function(n){return Dn(t,n)});return Kt(e,i)})},function(n,t){var e=t(a);return Xt(G(n,c(e)))})}function Yn(o){return{extract:function(t,n,e){return Jt(o(e,n),function(n){return function(n,t){return Un(n,function(){return t})}(t,n)})},toString:function(){return"val"},toDsl:function(){return te.itemOf(o)}}}function qn(n){var i=re(n),u=k(n,function(t,n){return n.fold(function(n){return Dn(t,q(n,!0))},nn(t))},{});return{extract:function(n,t,e){var o=ln(e)?[]:function(t){var n=wn(t);return C(n,function(n){return $(t,n)})}(e),r=C(o,function(n){return!$(u,n)});return 0===r.length?i.extract(n,t,e):function(n,t){return Un(n,function(){return"There are unsupported fields: ["+t.join(", ")+"] specified"})}(n,r)},toString:i.toString,toDsl:i.toDsl}}function Kn(r){return{extract:function(e,o,n){var t=S(n,function(n,t){return r.extract(e.concat(["["+t+"]"]),o,n)});return ne(t)},toString:function(){return"array("+r.toString()+")"},toDsl:function(){return te.arrOf(r)}}}function Jn(i,u){return{extract:function(e,o,r){var n=wn(r),t=function(n,t){return Kn(Yn(i)).extract(n,l,t)}(e,n);return Kt(t,function(n){var t=S(n,function(n){return oe.field(n,n,Mn(),u)});return re(t).extract(e,o,r)})},toString:function(){return"setOf("+u.toString()+")"},toDsl:function(){return te.setOf(i,u)}}}function $n(t,e,o,n,r){return Nn(n,r).fold(function(){return function(n,t,e){return Un(n,function(){return'The chosen schema: "'+e+'" did not exist in branches: '+jn(t)})}(t,n,r)},function(n){return n.extract(t.concat(["branch: "+r]),e,o)})}function Qn(n,r){return{extract:function(t,e,o){return Nn(o,n).fold(function(){return function(n,t){return Un(n,function(){return'Choice schema did not contain choice key: "'+t+'"'})}(t,n)},function(n){return $n(t,e,o,r,n)})},toString:function(){return"chooseOn("+n+"). Possible values: "+wn(r)},toDsl:function(){return te.choiceOf(n,r)}}}function Zn(t){return Yn(function(n){return t(n).fold(qt,Xt)})}function nt(t,n){return Jn(function(n){return Wt(t(n))},n)}function tt(n,t,e){return Gt(function(n,t,e,o){var r=t.extract([n],e,o);return Qt(r,function(n){return{input:o,errors:n}})}(n,t,l,e))}function et(n){return n.fold(function(n){throw new Error(le(n))},l)}function ot(n,t,e){return et(tt(n,t,e))}function rt(n,t){return Qn(n,t)}function it(n,t){return Qn(n,P(t,re))}function ut(e,o){return Yn(function(n){var t=typeof n;return e(n)?Xt(n):qt("Expected type: "+o+" but got: "+t)})}function at(t){return Zn(function(n){return vn(t,n)?an.value(n):an.error('Unsupported value: "'+n+'", choose one of "'+t.join(", ")+'".')})}function ct(n){return ce(n,n,Mn(),ie())}function st(n,t){return ce(n,n,Mn(),t)}function ft(n){return st(n,ge)}function lt(n,t){return ce(n,n,Mn(),at(t))}function dt(n){return st(n,he)}function mt(n,t){return ce(n,n,Mn(),re(t))}function gt(n,t){return ce(n,n,Mn(),ue(t))}function pt(n,t){return ce(n,n,Mn(),Kn(t))}function ht(n){return ce(n,n,Fn(),ie())}function vt(n,t){return ce(n,n,Fn(),t)}function bt(n){return vt(n,me)}function yt(n){return vt(n,ge)}function xt(n){return vt(n,he)}function wt(n,t){return vt(n,re(t))}function St(n,t){return ce(n,n,j(t),ie())}function Ct(n,t,e){return ce(n,n,j(t),e)}function kt(n,t){return Ct(n,t,me)}function Ot(n,t){return Ct(n,t,ge)}function Et(n,t,e){return Ct(n,t,at(e))}function Tt(n,t){return Ct(n,t,pe)}function Bt(n,t){return Ct(n,t,he)}function Dt(n,t,e){return Ct(n,t,re(e))}function At(n,t){return ae(n,t)}function _t(n,t,e){return 0!=(n.compareDocumentPosition(t)&e)}function Mt(n,t){var e=function(n,t){for(var e=0;e<n.length;e++){var o=n[e];if(o.test(t))return o}return undefined}(n,t);if(!e)return{major:0,minor:0};function o(n){return Number(t.replace(e,"$"+n))}return ke(o(1),o(2))}function Ft(n,t){return function(){return t===n}}function It(n,t){return function(){return t===n}}function Rt(n,t){var e=String(t).toLowerCase();return E(n,function(n){return n.search(e)})}function Vt(n,t){return-1!==n.indexOf(t)}function Nt(t){return function(n){return Vt(n,t)}}function Ht(){return Le.get()}function Pt(n,t){var e=n.dom();if(e.nodeType!==Ge)return!1;var o=e;if(o.matches!==undefined)return o.matches(t);if(o.msMatchesSelector!==undefined)return o.msMatchesSelector(t);if(o.webkitMatchesSelector!==undefined)return o.webkitMatchesSelector(t);if(o.mozMatchesSelector!==undefined)return o.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function zt(n){return n.nodeType!==Ge&&n.nodeType!==Xe||0===n.childElementCount}function Lt(n,t){var e=t===undefined?v.document:t.dom();return zt(e)?[]:S(e.querySelectorAll(n),we.fromDom)}function jt(n,t){return n.dom()===t.dom()}function Ut(n,t){return jt(n.element(),t.event().target())}var Wt=function(n){return n.fold(zn,Pn)},Gt=function(n){return Hn(n,an.error,an.value)},Xt=Pn,Yt=function(n){var t=[],e=[];return bn(n,function(n){Hn(n,function(n){return e.push(n)},function(n){return t.push(n)})}),{values:t,errors:e}},qt=zn,Kt=function(n,t){return n.stype===Q.Value?t(n.svalue):n},Jt=function(n,t){return n.stype===Q.Error?t(n.serror):n},$t=function(n,t){return n.stype===Q.Value?{stype:Q.Value,svalue:t(n.svalue)}:n},Qt=function(n,t){return n.stype===Q.Error?{stype:Q.Error,serror:t(n.serror)}:n},Zt=function(n,t){var e=Yt(n);return 0<e.errors.length?Ln(e.errors):function(n,t){return 0<n.length?Xt(Dn(t,An.apply(undefined,n))):Xt(t)}(e.values,t)},ne=function(n){var t=Yt(n);return 0<t.errors.length?Ln(t.errors):Xt(t.values)},te=Tn([{setOf:["validator","valueType"]},{arrOf:["valueType"]},{objOf:["fields"]},{itemOf:["validator"]},{choiceOf:["key","branches"]},{thunk:["description"]},{func:["args","outputSchema"]}]),ee=Tn([{field:["name","presence","type"]},{state:["name"]}]),oe=Tn([{field:["key","okey","presence","prop"]},{state:["okey","instantiator"]}]),re=function(o){return{extract:function(n,t,e){return function(t,e,n,o){var r=S(n,function(n){return Xn(t,e,n,o)});return Zt(r,{})}(n,e,o,t)},toString:function(){return"obj{\n"+S(o,function(n){return n.fold(function(n,t,e,o){return n+" -> "+o.toString()},function(n,t){return"state("+n+")"})}).join("\n")+"}"},toDsl:function(){return te.objOf(S(o,function(n){return n.fold(function(n,t,e,o){return ee.field(n,e,o)},function(n,t){return ee.state(n)})}))}}},ie=nn(Yn(Xt)),ue=i(Kn,re),ae=oe.state,ce=oe.field,se=Yn(Xt),fe=function(o){return{extract:function(n,t,e){return o().extract(n,t,e)},toString:function(){return o().toString()},toDsl:function(){return o().toDsl()}}},le=function(n){return"Errors: \n"+function(n){var t=10<n.length?n.slice(0,10).concat([{path:[],getErrorInfo:function(){return"... (only showing first ten failures)"}}]):n;return S(t,function(n){return"Failed path: ("+n.path.join(" > ")+")\n"+n.getErrorInfo()})}(n.errors)+"\n\nInput object: "+jn(n.input)},de=nn(se),me=ut(mn,"number"),ge=ut(cn,"string"),pe=ut(ln,"boolean"),he=ut(dn,"function"),ve=function(t){function n(n,t){for(var e=n.next();!e.done;){if(!t(e.value))return!1;e=n.next()}return!0}if(Object(t)!==t)return!0;switch({}.toString.call(t).slice(8,-1)){case"Boolean":case"Number":case"String":case"Date":case"RegExp":case"Blob":case"FileList":case"ImageData":case"ImageBitmap":case"ArrayBuffer":return!0;case"Array":case"Object":return Object.keys(t).every(function(n){return ve(t[n])});case"Map":return n(t.keys(),ve)&&n(t.values(),ve);case"Set":return n(t.keys(),ve);default:return!1}},be=Yn(function(n){return ve(n)?Xt(n):qt("Expected value to be acceptable for sending via postMessage")}),ye=function(n){function t(){return e}var e=n;return{get:t,set:function(n){e=n},clone:function(){return ye(t())}}},xe=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:nn(n)}},we={fromHtml:function(n,t){var e=(t||v.document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw v.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return xe(e.childNodes[0])},fromTag:function(n,t){var e=(t||v.document).createElement(n);return xe(e)},fromText:function(n,t){var e=(t||v.document).createTextNode(n);return xe(e)},fromDom:xe,fromPoint:function(n,t,e){var o=n.dom();return on.from(o.elementFromPoint(t,e)).map(xe)}},Se=function(n,t){return _t(n,t,v.Node.DOCUMENT_POSITION_CONTAINED_BY)},Ce=function(){return ke(0,0)},ke=function(n,t){return{major:n,minor:t}},Oe={nu:ke,detect:function(n,t){var e=String(t).toLowerCase();return 0===n.length?Ce():Mt(n,e)},unknown:Ce},Ee="Firefox",Te=function(n){var t=n.current;return{current:t,version:n.version,isEdge:Ft("Edge",t),isChrome:Ft("Chrome",t),isIE:Ft("IE",t),isOpera:Ft("Opera",t),isFirefox:Ft(Ee,t),isSafari:Ft("Safari",t)}},Be={unknown:function(){return Te({current:undefined,version:Oe.unknown()})},nu:Te,edge:nn("Edge"),chrome:nn("Chrome"),ie:nn("IE"),opera:nn("Opera"),firefox:nn(Ee),safari:nn("Safari")},De="Windows",Ae="Android",_e="Solaris",Me="FreeBSD",Fe=function(n){var t=n.current;return{current:t,version:n.version,isWindows:It(De,t),isiOS:It("iOS",t),isAndroid:It(Ae,t),isOSX:It("OSX",t),isLinux:It("Linux",t),isSolaris:It(_e,t),isFreeBSD:It(Me,t)}},Ie={unknown:function(){return Fe({current:undefined,version:Oe.unknown()})},nu:Fe,windows:nn(De),ios:nn("iOS"),android:nn(Ae),linux:nn("Linux"),osx:nn("OSX"),solaris:nn(_e),freebsd:nn(Me)},Re=function(n,e){return Rt(n,e).map(function(n){var t=Oe.detect(n.versionRegexes,e);return{current:n.name,version:t}})},Ve=function(n,e){return Rt(n,e).map(function(n){var t=Oe.detect(n.versionRegexes,e);return{current:n.name,version:t}})},Ne=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,He=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(n){return Vt(n,"edge/")&&Vt(n,"chrome")&&Vt(n,"safari")&&Vt(n,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ne],search:function(n){return Vt(n,"chrome")&&!Vt(n,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(n){return Vt(n,"msie")||Vt(n,"trident")}},{name:"Opera",versionRegexes:[Ne,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Nt("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Nt("firefox")},{name:"Safari",versionRegexes:[Ne,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(n){return(Vt(n,"safari")||Vt(n,"mobile/"))&&Vt(n,"applewebkit")}}],Pe=[{name:"Windows",search:Nt("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(n){return Vt(n,"iphone")||Vt(n,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Nt("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Nt("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Nt("linux"),versionRegexes:[]},{name:"Solaris",search:Nt("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Nt("freebsd"),versionRegexes:[]}],ze={browsers:nn(He),oses:nn(Pe)},Le=ye(function(n,t){var e=ze.browsers(),o=ze.oses(),r=Re(e,n).fold(Be.unknown,Be.nu),i=Ve(o,n).fold(Ie.unknown,Ie.nu);return{browser:r,os:i,deviceType:function(n,t,e,o){var r=n.isiOS()&&!0===/ipad/i.test(e),i=n.isiOS()&&!r,u=n.isiOS()||n.isAndroid(),a=u||o("(pointer:coarse)"),c=r||!i&&u&&o("(min-device-width:768px)"),s=i||u&&!c,f=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(e),l=!s&&!c&&!f;return{isiPad:nn(r),isiPhone:nn(i),isTablet:nn(c),isPhone:nn(s),isTouch:nn(a),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:nn(f),isDesktop:nn(l)}}(i,r,n,t)}}(v.navigator.userAgent,function(n){return v.window.matchMedia(n).matches})),je=(v.Node.ATTRIBUTE_NODE,v.Node.CDATA_SECTION_NODE,v.Node.COMMENT_NODE,v.Node.DOCUMENT_NODE),Ue=(v.Node.DOCUMENT_TYPE_NODE,v.Node.DOCUMENT_FRAGMENT_NODE,v.Node.ELEMENT_NODE),We=v.Node.TEXT_NODE,Ge=(v.Node.PROCESSING_INSTRUCTION_NODE,v.Node.ENTITY_REFERENCE_NODE,v.Node.ENTITY_NODE,v.Node.NOTATION_NODE,Ue),Xe=je,Ye=Ht().browser.isIE()?function(n,t){return Se(n.dom(),t.dom())}:function(n,t){var e=n.dom(),o=t.dom();return e!==o&&e.contains(o)};function qe(n,t,e,o,r){return n(e,o)?on.some(e):dn(r)&&r(e)?on.none():t(e,o,r)}function Ke(n){return n.dom().nodeName.toLowerCase()}function Je(t){return function(n){return function(n){return n.dom().nodeType}(n)===t}}"undefined"!=typeof v.window?v.window:Function("return this;")();function $e(n){var t=Pr(n)?n.dom().parentNode:n.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}function Qe(n,t,e){for(var o=n.dom(),r=dn(e)?e:nn(!1);o.parentNode;){o=o.parentNode;var i=we.fromDom(o);if(t(i))return on.some(i);if(r(i))break}return on.none()}function Ze(n,t,e){return qe(function(n,t){return t(n)},Qe,n,t,e)}function no(n,r){var i=function(n){for(var t=0;t<n.childNodes.length;t++){var e=we.fromDom(n.childNodes[t]);if(r(e))return on.some(e);var o=i(n.childNodes[t]);if(o.isSome())return o}return on.none()};return i(n.dom())}function to(n){if(!$(n,"can")&&!$(n,"abort")&&!$(n,"run"))throw new Error("EventHandler defined by: "+JSON.stringify(n,null,2)+" does not have can, abort, or run!");return ot("Extracting event.handler",qn([St("can",nn(!0)),St("abort",nn(!1)),St("run",Z)]),n)}function eo(e){var n=function(t,o){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return O(t,function(n,t){return n&&o(t).apply(undefined,e)},!0)}}(e,function(n){return n.can}),t=function(t,o){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return O(t,function(n,t){return n||o(t).apply(undefined,e)},!1)}}(e,function(n){return n.abort});return to({can:n,abort:t,run:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];bn(e,function(n){n.run.apply(undefined,t)})}})}function oo(n,t){Fi(n,n.element(),t,{})}function ro(n,t,e){Fi(n,n.element(),t,e)}function io(n){oo(n,di())}function uo(n,t,e){Fi(n,t,e,{})}function ao(n,t,e,o){n.getSystem().triggerEvent(e,t,o.event())}function co(n){return K(n)}function so(n,t){return{key:n,value:to({abort:t})}}function fo(n){return{key:n,value:to({run:function(n,t){t.event().prevent()}})}}function lo(n,t){return{key:n,value:to({run:t})}}function mo(n,e,o){return{key:n,value:to({run:function(n,t){e.apply(undefined,[n,t].concat(o))}})}}function go(n){return function(e){return{key:n,value:to({run:function(n,t){Ut(n,t)&&e(n,t)}})}}}function po(n,t,e){return function(e,o){return lo(e,function(n,t){n.getSystem().getByUid(o).each(function(n){ao(n,n.element(),e,t)})})}(n,t.partUids[e])}function ho(n,r){return lo(n,function(t,n){var e=n.event(),o=t.getSystem().getByDom(e.target()).fold(function(){return jr(e.target(),function(n){return t.getSystem().getByDom(n).toOption()},nn(!1)).getOr(t)},function(n){return n});r(t,o,n)})}function vo(n){return lo(n,function(n,t){t.cut()})}function bo(n,t){return go(n)(t)}function yo(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(t.length!==e.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+e.length+" arguments");var o={};return bn(t,function(n,t){o[n]=nn(e[t])}),o}}function xo(n){return n.slice(0).sort()}function wo(t,n){if(!fn(n))throw new Error("The "+t+" fields must be an array. Was: "+n+".");bn(n,function(n){if(!cn(n))throw new Error("The value "+n+" in the "+t+" fields was not a string.")})}function So(r,i){var u=r.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return wo("required",r),wo("optional",i),function(n){var e=xo(n);E(e,function(n,t){return t<e.length-1&&n===e[t+1]}).each(function(n){throw new Error("The field: "+n+" occurs more than once in the combined fields: ["+e.join(", ")+"].")})}(u),function(t){var e=wn(t);D(r,function(n){return vn(e,n)})||function(n,t){throw new Error("All required keys ("+xo(n).join(", ")+") were not specified. Specified keys were: "+xo(t).join(", ")+".")}(r,e);var n=C(e,function(n){return!vn(u,n)});0<n.length&&function(n){throw new Error("Unsupported keys for object: "+xo(n).join(", "))}(n);var o={};return bn(r,function(n){o[n]=nn(t[n])}),bn(i,function(n){o[n]=nn(Object.prototype.hasOwnProperty.call(t,n)?on.some(t[n]):on.none())}),o}}function Co(n){return we.fromDom(n.dom().ownerDocument)}function ko(n){return we.fromDom(n.dom().ownerDocument.documentElement)}function Oo(n){return we.fromDom(n.dom().ownerDocument.defaultView)}function Eo(n){return on.from(n.dom().parentNode).map(we.fromDom)}function To(n){return on.from(n.dom().offsetParent).map(we.fromDom)}function Bo(n){return S(n.dom().childNodes,we.fromDom)}function Do(n,t){var e=n.dom().childNodes;return on.from(e[t]).map(we.fromDom)}function Ao(t,e){Eo(t).each(function(n){n.dom().insertBefore(e.dom(),t.dom())})}function _o(n,t){(function(n){return on.from(n.dom().nextSibling).map(we.fromDom)})(n).fold(function(){Eo(n).each(function(n){Hi(n,t)})},function(n){Ao(n,t)})}function Mo(t,e){(function(n){return Do(n,0)})(t).fold(function(){Hi(t,e)},function(n){t.dom().insertBefore(e.dom(),n.dom())})}function Fo(t,n){bn(n,function(n){Hi(t,n)})}function Io(n){n.dom().textContent="",bn(Bo(n),function(n){Pi(n)})}function Ro(n){var t=Bo(n);0<t.length&&function(t,n){bn(n,function(n){Ao(t,n)})}(n,t),Pi(n)}function Vo(n){return n.dom().innerHTML}function No(n,t){var e=Co(n).dom(),o=we.fromDom(e.createDocumentFragment()),r=function(n,t){var e=(t||v.document).createElement("div");return e.innerHTML=n,Bo(we.fromDom(e))}(t,e);Fo(o,r),Io(n),Hi(n,o)}function Ho(n,t,e){if(!(cn(e)||ln(e)||mn(e)))throw v.console.error("Invalid call to Attr.set. Key ",t,":: Value ",e,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(t,e+"")}function Po(n,t,e){Ho(n.dom(),t,e)}function zo(n,t){var e=n.dom().getAttribute(t);return null===e?undefined:e}function Lo(n,t){var e=n.dom();return!(!e||!e.hasAttribute)&&e.hasAttribute(t)}function jo(n,t){n.dom().removeAttribute(t)}function Uo(n){return function(n,t){return we.fromDom(n.dom().cloneNode(t))}(n,!1)}function Wo(n){return function(n){var t=we.fromTag("div"),e=we.fromDom(n.dom().cloneNode(!0));return Hi(t,e),Vo(t)}(Uo(n))}function Go(n){return Wo(n)}function Xo(n){var t=(new Date).getTime();return n+"_"+Math.floor(1e9*Math.random())+ ++ji+String(t)}function Yo(n){return Xo(n)}function qo(t){function n(n){return function(){throw new Error("The component must be in a context to send: "+n+"\n"+Go(t().element())+" is not in context.")}}return{debugInfo:nn("fake"),triggerEvent:n("triggerEvent"),triggerFocus:n("triggerFocus"),triggerEscape:n("triggerEscape"),build:n("build"),addToWorld:n("addToWorld"),removeFromWorld:n("removeFromWorld"),addToGui:n("addToGui"),removeFromGui:n("removeFromGui"),getByUid:n("getByUid"),getByDom:n("getByDom"),broadcast:n("broadcast"),broadcastOn:n("broadcastOn"),broadcastEvent:n("broadcastEvent"),isConnected:nn(!1)}}function Ko(n,t){var e=n.toString(),o=e.indexOf(")")+1,r=e.indexOf("("),i=e.substring(r+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:t,parameters:$i(i)}},n}function Jo(n){return q(Qi,n)}function $o(o){return function(n,t){var e=t.toString(),o=e.indexOf(")")+1,r=e.indexOf("("),i=e.substring(r+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:"OVERRIDE",parameters:$i(i.slice(1))}},n}(function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return o.apply(undefined,[n.getApis()].concat([n].concat(t)))},o)}function Qo(n,r){var i={};return Cn(n,function(n,o){Cn(n,function(n,t){var e=Y(t,[])(i);i[t]=e.concat([r(o,n)])})}),i}function Zo(n){return{classes:n.classes!==undefined?n.classes:[],attributes:n.attributes!==undefined?n.attributes:{},styles:n.styles!==undefined?n.styles:{}}}function nr(n){return n.cHandler}function tr(n,t){return{name:nn(n),handler:nn(t)}}function er(n,t,e){var o=N(N({},e),function(n,t){var e={};return bn(n,function(n){e[n.name()]=n.handlers(t)}),e}(t,n));return Qo(o,tr)}function or(n){var i=function(n){return dn(n)?{can:nn(!0),abort:nn(!1),run:n}:n}(n);return function(n,t){for(var e=[],o=2;o<arguments.length;o++)e[o-2]=arguments[o];var r=[n,t].concat(e);i.abort.apply(undefined,r)?t.stop():i.can.apply(undefined,r)&&i.run.apply(undefined,r)}}function rr(n,t,e){var o=t[e];return o?function(u,a,n,c){var t=n.slice(0);try{var e=t.sort(function(n,t){var e=n[a](),o=t[a](),r=c.indexOf(e),i=c.indexOf(o);if(-1===r)throw new Error("The ordering for "+u+" does not have an entry for "+e+".\nOrder specified: "+JSON.stringify(c,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+o+".\nOrder specified: "+JSON.stringify(c,null,2));return r<i?-1:i<r?1:0});return an.value(e)}catch(o){return an.error([o])}}("Event: "+e,"name",n,o).map(function(n){var t=S(n,function(n){return n.handler()});return eo(t)}):function(n,t){return an.error(["The event ("+n+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+JSON.stringify(S(t,function(n){return n.name()}),null,2)])}(e,n)}function ir(n){return tt("custom.definition",re([ce("dom","dom",Mn(),re([ct("tag"),St("styles",{}),St("classes",[]),St("attributes",{}),ht("value"),ht("innerHtml")])),ct("components"),ct("uid"),St("events",{}),St("apis",{}),ce("eventOrder","eventOrder",function(n){return _n.mergeWithThunk(nn(n))}({"alloy.execute":["disabling","alloy.base.behaviour","toggling","typeaheadevents"],"alloy.focus":["alloy.base.behaviour","focusing","keying"],"alloy.system.init":["alloy.base.behaviour","disabling","toggling","representing"],input:["alloy.base.behaviour","representing","streaming","invalidating"],"alloy.system.detached":["alloy.base.behaviour","representing","item-events","tooltipping"],mousedown:["focusing","alloy.base.behaviour","item-type-events"],touchstart:["focusing","alloy.base.behaviour","item-type-events"],mouseover:["item-type-events","tooltipping"]}),de()),ht("domModification")]),n)}function ur(n,t){var e=zo(n,t);return e===undefined||""===e?[]:e.split(" ")}function ar(n){return n.dom().classList!==undefined}function cr(n,t){return function(n,t,e){var o=ur(n,t).concat([e]);return Po(n,t,o.join(" ")),!0}(n,"class",t)}function sr(n,t){return function(n,t,e){var o=C(ur(n,t),function(n){return n!==e});return 0<o.length?Po(n,t,o.join(" ")):jo(n,t),!1}(n,"class",t)}function fr(n,t){ar(n)?n.dom().classList.add(t):cr(n,t)}function lr(n){0===(ar(n)?n.dom().classList:function(n){return ur(n,"class")}(n)).length&&jo(n,"class")}function dr(n,t){ar(n)?n.dom().classList.remove(t):sr(n,t),lr(n)}function mr(n,t){return ar(n)&&n.dom().classList.contains(t)}function gr(t,n){bn(n,function(n){fr(t,n)})}function pr(t,n){bn(n,function(n){dr(t,n)})}function hr(n){return n.style!==undefined&&dn(n.style.getPropertyValue)}function vr(n,t,e){if(!cn(e))throw v.console.error("Invalid call to CSS.set. Property ",t,":: Value ",e,":: Element ",n),new Error("CSS value must be a string: "+e);hr(n)&&n.style.setProperty(t,e)}function br(n,t){hr(n)&&n.style.removeProperty(t)}function yr(n,t,e){var o=n.dom();vr(o,t,e)}function xr(n,t){var e=n.dom();Cn(t,function(n,t){vr(e,t,n)})}function wr(n,t){var e=n.dom(),o=v.window.getComputedStyle(e).getPropertyValue(t),r=""!==o||$e(n)?o:ou(e,t);return null===r?undefined:r}function Sr(n,t){var e=n.dom(),o=ou(e,t);return on.from(o).filter(function(n){return 0<n.length})}function Cr(n,t,e){var o=we.fromTag(n);return yr(o,t,e),Sr(o,t).isSome()}function kr(n,t){var e=n.dom();br(e,t),Lo(n,"style")&&""===function(n){return n.replace(/^\s+|\s+$/g,"")}(zo(n,"style"))&&jo(n,"style")}function Or(n){return n.dom().offsetWidth}function Er(n){return n.dom().value}function Tr(n,t){if(t===undefined)throw new Error("Value.set was undefined");n.dom().value=t}function Br(n){var t=we.fromTag(n.tag);!function(n,t){var e=n.dom();Cn(t,function(n,t){Ho(e,t,n)})}(t,n.attributes),gr(t,n.classes),xr(t,n.styles),n.innerHtml.each(function(n){return No(t,n)});var e=n.domChildren;return Fo(t,e),n.value.each(function(n){Tr(t,n)}),n.uid,Yi(t,n.uid),t}function Dr(n,t){return function(t,n){var e=S(n,function(n){return wt(n.name(),[ct("config"),St("state",Zi)])}),o=tt("component.behaviours",re(e),t.behaviours).fold(function(n){throw new Error(le(n)+"\nComplete spec:\n"+JSON.stringify(t,null,2))},function(n){return n});return{list:n,data:P(o,function(n){var t=n.map(function(n){return{config:n.config,state:n.state.init(n.config)}});return function(){return t}})}}(n,t)}function Ar(n){var t=function(n){var t=Y("behaviours",{})(n),e=C(wn(t),function(n){return t[n]!==undefined});return S(e,function(n){return t[n].me})}(n);return Dr(n,t)}function _r(n,t,e){var o=function(n){return N(N({},n.dom),{uid:n.uid,domChildren:S(n.components,function(n){return n.element()})})}(n),r=function(n){return n.domModification.fold(function(){return Zo({})},Zo)}(n),i={"alloy.base.modification":r};return function(n,t){return N(N({},n),{attributes:N(N({},n.attributes),t.attributes),styles:N(N({},n.styles),t.styles),classes:n.classes.concat(t.classes)})}(o,0<t.length?function(t,n,e,o){var r=N({},n);bn(e,function(n){r[n.name()]=n.exhibit(t,o)});function i(n){return k(n,function(n,t){return N(N({},t.modification),n)},{})}var u=Qo(r,function(n,t){return{name:n,modification:t}}),a=k(u.classes,function(n,t){return t.modification.concat(n)},[]),c=i(u.attributes),s=i(u.styles);return Zo({classes:a,attributes:c,styles:s})}(e,i,t,o):r)}function Mr(n,t,e){var o={"alloy.base.behaviour":function(n){return n.events}(n)};return function(n,t,e,o){var r=er(n,e,o);return eu(r,t)}(e,n.eventOrder,t,o).getOrDie()}function Fr(n){var t=Ki(n),e=t.events,o=c(t,["events"]),r=function(n){var t=Y("components",[])(n);return S(t,uu)}(o),i=N(N({},o),{events:N(N({},Li),e),components:r});return an.value(function(e){function n(){return l}var o=ye(Ji),t=et(ir(e)),r=Ar(e),i=function(n){return n.list}(r),u=function(n){return n.data}(r),a=_r(t,i,u),c=Br(a),s=Mr(t,i,u),f=ye(t.components),l={getSystem:o.get,config:function(n){var t=u;return(dn(t[n.name()])?t[n.name()]:function(){throw new Error("Could not find "+n.name()+" in "+JSON.stringify(e,null,2))})()},hasConfigured:function(n){return dn(u[n.name()])},spec:nn(e),readState:function(n){return u[n]().map(function(n){return n.state.readState()}).getOr("not enabled")},getApis:function(){return t.apis},connect:function(n){o.set(n)},disconnect:function(){o.set(qo(n))},element:nn(c),syncComponents:function(){var n=Bo(c),t=B(n,function(n){return o.get().getByDom(n).fold(function(){return[]},function(n){return[n]})});f.set(t)},components:f.get,events:nn(s)};return l}(i))}function Ir(n){var t=we.fromText(n);return ru({element:t})}var Rr,Vr,Nr,Hr=Je(Ue),Pr=Je(We),zr=L(function(){return Lr(we.fromDom(v.document))}),Lr=function(n){var t=n.dom().body;if(null===t||t===undefined)throw new Error("Body is not available yet");return we.fromDom(t)},jr=function(n,t,e){return Ze(n,function(n){return t(n).isSome()},e).bind(t)},Ur=nn("touchstart"),Wr=nn("touchmove"),Gr=nn("touchend"),Xr=nn("touchcancel"),Yr=nn("mousedown"),qr=nn("mousemove"),Kr=nn("mouseout"),Jr=nn("mouseup"),$r=nn("mouseover"),Qr=nn("focusin"),Zr=nn("focusout"),ni=nn("keydown"),ti=nn("keyup"),ei=nn("input"),oi=nn("change"),ri=nn("click"),ii=nn("transitionend"),ui=nn("selectstart"),ai={tap:nn("alloy.tap")},ci=nn("alloy.focus"),si=nn("alloy.blur.post"),fi=nn("alloy.paste.post"),li=nn("alloy.receive"),di=nn("alloy.execute"),mi=nn("alloy.focus.item"),gi=ai.tap,pi=nn("alloy.longpress"),hi=nn("alloy.sandbox.close"),vi=nn("alloy.typeahead.cancel"),bi=nn("alloy.system.init"),yi=nn("alloy.system.touchmove"),xi=nn("alloy.system.touchend"),wi=nn("alloy.system.scroll"),Si=nn("alloy.system.resize"),Ci=nn("alloy.system.attached"),ki=nn("alloy.system.detached"),Oi=nn("alloy.system.dismissRequested"),Ei=nn("alloy.system.repositionRequested"),Ti=nn("alloy.focusmanager.shifted"),Bi=nn("alloy.slotcontainer.visibility"),Di=nn("alloy.change.tab"),Ai=nn("alloy.dismiss.tab"),_i=nn("alloy.highlight"),Mi=nn("alloy.dehighlight"),Fi=function(n,t,e,o){var r=N({target:t},o);n.getSystem().triggerEvent(e,t,P(r,nn))},Ii=go(Ci()),Ri=go(ki()),Vi=go(bi()),Ni=(Rr=di(),function(n){return lo(Rr,n)}),Hi=(yo("element","offset"),function(n,t){n.dom().appendChild(t.dom())}),Pi=function(n){var t=n.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},zi=co([(Vr=ci(),Nr=function(n,t){var e=t.event().originator(),o=t.event().target();return!function(n,t,e){return jt(t,n.element())&&!jt(t,e)}(n,e,o)||(v.console.warn(ci()+" did not get interpreted by the desired target. \nOriginator: "+Go(e)+"\nTarget: "+Go(o)+"\nCheck the "+ci()+" event handlers"),!1)},{key:Vr,value:to({can:Nr})})]),Li=/* */Object.freeze({events:zi}),ji=0,Ui=nn("alloy-id-"),Wi=nn("data-alloy-id"),Gi=Ui(),Xi=Wi(),Yi=function(n,t){Object.defineProperty(n.dom(),Xi,{value:t,writable:!0})},qi=function(n){var t=Hr(n)?n.dom()[Xi]:null;return on.from(t)},Ki=l,Ji=qo(),$i=function(n){return S(n,function(n){return function(n,t){return function(n,t,e){return""===t||!(n.length<t.length)&&n.substr(e,e+t.length)===t}(n,t,n.length-t.length)}(n,"/*")?n.substring(0,n.length-"/*".length):n})},Qi=Xo("alloy-premade"),Zi={init:function(){return nu({readState:function(){return"No State required"}})}},nu=function(n){return n},tu=function(n,t){return function(n,t){return{cHandler:n,purpose:nn(t)}}(d.apply(undefined,[n.handler].concat(t)),n.purpose())},eu=function(n,i){var t=On(n,function(o,r){return(1===o.length?an.value(o[0].handler()):rr(o,i,r)).map(function(n){var t=or(n),e=1<o.length?C(i[r],function(t){return x(o,function(n){return n.name()===t})}).join(" > "):o[0].name();return q(r,function(n,t){return{handler:n,purpose:nn(t)}}(t,e))})});return J(t,{})},ou=function(n,t){return hr(n)?n.style.getPropertyValue(t):""},ru=function(n){var t=ot("external.component",qn([ct("element"),ht("uid")]),n),e=ye(qo());t.uid.each(function(n){Yi(t.element,n)});var o={getSystem:e.get,config:on.none,hasConfigured:nn(!1),connect:function(n){e.set(n)},disconnect:function(){e.set(qo(function(){return o}))},getApis:function(){return{}},element:nn(t.element),spec:nn(n),readState:nn("No state"),syncComponents:Z,components:nn([]),events:nn({})};return Jo(o)},iu=Yo,uu=function(t){return function(n){return Nn(n,Qi)}(t).fold(function(){var n=t.hasOwnProperty("uid")?t:N({uid:iu("")},t);return Fr(n).getOrDie()},function(n){return n})},au=Jo;function cu(o,r){function n(n){var t=r(n);if(t<=0||null===t){var e=wr(n,o);return parseFloat(e)||0}return t}function i(r,n){return O(n,function(n,t){var e=wr(r,t),o=e===undefined?0:parseInt(e,10);return isNaN(o)?n:n+o},0)}return{set:function(n,t){if(!mn(t)&&!t.match(/^[0-9]+$/))throw new Error(o+".set accepts only positive integer values. Value was "+t);var e=n.dom();hr(e)&&(e.style[o]=t+"px")},get:n,getOuter:n,aggregate:i,max:function(n,t,e){var o=i(n,e);return o<t?t-o:0}}}function su(n){return Mu.get(n)}function fu(n){return Mu.getOuter(n)}function lu(n,t){return n!==undefined?n:t!==undefined?t:0}function du(n){var t=n.dom().ownerDocument,e=t.body,o=t.defaultView,r=t.documentElement;if(e===n.dom())return Iu(e.offsetLeft,e.offsetTop);var i=lu(o.pageYOffset,r.scrollTop),u=lu(o.pageXOffset,r.scrollLeft),a=lu(r.clientTop,e.clientTop),c=lu(r.clientLeft,e.clientLeft);return Ru(n).translate(u-c,i-a)}function mu(n){return Vu.get(n)}function gu(n){return Vu.getOuter(n)}function pu(n){var t=n!==undefined?n.dom():v.document,e=t.body.scrollLeft||t.documentElement.scrollLeft,o=t.body.scrollTop||t.documentElement.scrollTop;return Iu(e,o)}function hu(n,t,e,o){return{x:nn(n),y:nn(t),width:nn(e),height:nn(o),right:nn(n+e),bottom:nn(t+o)}}function vu(n){var t=n===undefined?v.window:n,e=t.document,o=pu(we.fromDom(e)),r=t.visualViewport;if(r!==undefined)return hu(Math.max(r.pageLeft,o.left()),Math.max(r.pageTop,o.top()),r.width,r.height);var i=e.documentElement,u=i.clientWidth,a=i.clientHeight;return hu(o.left(),o.top(),u,a)}function bu(o){var n=we.fromDom(v.document),r=pu(n);return function(n,t){var e=t.owner(n),o=Nu(t,e);return on.some(o)}(o,Hu).fold(d(du,o),function(n){var t=Ru(o),e=k(n,function(n,t){var e=Ru(t);return{left:n.left+e.left(),top:n.top+e.top()}},{left:0,top:0});return Iu(e.left+t.left()+r.left(),e.top+t.top()+r.top())})}function yu(n,t,e,o){return{x:nn(n),y:nn(t),width:nn(e),height:nn(o),right:nn(n+e),bottom:nn(t+o)}}function xu(n){var t=du(n),e=gu(n),o=fu(n);return yu(t.left(),t.top(),e,o)}function wu(n){var t=bu(n),e=gu(n),o=fu(n);return yu(t.left(),t.top(),e,o)}function Su(){return vu(v.window)}function Cu(n,t,e){return Qe(n,function(n){return Pt(n,t)},e)}function ku(n,t){return function(n,t){var e=t===undefined?v.document:t.dom();return zt(e)?on.none():on.from(e.querySelector(n)).map(we.fromDom)}(t,n)}function Ou(n,t,e){return qe(Pt,Cu,n,t,e)}function Eu(){var t=Xo("aria-owns");return{id:nn(t),link:function(n){Po(n,"aria-owns",t)},unlink:function(n){jo(n,"aria-owns")}}}function Tu(t,n){return function(n){return Ze(n,function(n){if(!Hr(n))return!1;var t=zo(n,"id");return t!==undefined&&-1<t.indexOf("aria-owns")}).bind(function(n){var t=zo(n,"id"),e=Co(n);return ku(e,'[aria-owns="'+t+'"]')})}(n).exists(function(n){return Lu(t,n)})}function Bu(n){for(var t=[],e=function(n){t.push(n)},o=0;o<n.length;o++)n[o].each(e);return t}function Du(n,t){for(var e=0;e<n.length;e++){var o=t(n[e],e);if(o.isSome())return o}return on.none()}var Au,_u,Mu=cu("height",function(n){var t=n.dom();return $e(n)?t.getBoundingClientRect().height:t.offsetHeight}),Fu=function(e,o){return{left:nn(e),top:nn(o),translate:function(n,t){return Fu(e+n,o+t)}}},Iu=Fu,Ru=function(n){var t=n.dom(),e=t.ownerDocument.body;return e===t?Iu(e.offsetLeft,e.offsetTop):$e(n)?function(n){var t=n.getBoundingClientRect();return Iu(t.left,t.top)}(t):Iu(0,0)},Vu=cu("width",function(n){return n.dom().offsetWidth}),Nu=(Ht().browser.isSafari(),function(o,n){return o.view(n).fold(nn([]),function(n){var t=o.owner(n),e=Nu(o,t);return[n].concat(e)})}),Hu=/* */Object.freeze({view:function(n){return(n.dom()===v.document?on.none():on.from(n.dom().defaultView.frameElement)).map(we.fromDom)},owner:function(n){return Co(n)}}),Pu=yo("point","width","height"),zu=yo("x","y","width","height"),Lu=function(t,n){return function(n,t,e){return Ze(n,t,e).isSome()}(n,function(n){return jt(n,t.element())},nn(!1))||Tu(t,n)},ju="unknown";(_u=Au=Au||{})[_u.STOP=0]="STOP",_u[_u.NORMAL=1]="NORMAL",_u[_u.LOGGING=2]="LOGGING";function Uu(t,n,e){switch(Nn(Pa.get(),t).orThunk(function(){var n=wn(Pa.get());return Du(n,function(n){return-1<t.indexOf(n)?on.some(Pa.get()[n]):on.none()})}).getOr(Au.NORMAL)){case Au.NORMAL:return e(La());case Au.LOGGING:var o=function(t,e){var o=[],r=(new Date).getTime();return{logEventCut:function(n,t,e){o.push({outcome:"cut",target:t,purpose:e})},logEventStopped:function(n,t,e){o.push({outcome:"stopped",target:t,purpose:e})},logNoParent:function(n,t,e){o.push({outcome:"no-parent",target:t,purpose:e})},logEventNoHandlers:function(n,t){o.push({outcome:"no-handlers-left",target:t})},logEventResponse:function(n,t,e){o.push({outcome:"response",purpose:e,target:t})},write:function(){var n=(new Date).getTime();vn(["mousemove","mouseover","mouseout",bi()],t)||v.console.log(t,{event:t,time:n-r,target:e.dom(),sequence:S(o,function(n){return vn(["cut","stopped","response"],n.outcome)?"{"+n.purpose+"} "+n.outcome+" at ("+Go(n.target)+")":n.outcome})})}}}(t,n),r=e(o);return o.write(),r;case Au.STOP:return!0}}function Wu(n,t,e){return Uu(n,t,e)}function Gu(){return mt("markers",[ct("backgroundMenu")].concat(ja()).concat(Ua()))}function Xu(n){return mt("markers",S(n,ct))}function Yu(n,t,e){return function(){var n=new Error;if(n.stack===undefined)return;var t=n.stack.split("\n");E(t,function(t){return 0<t.indexOf("alloy")&&!x(za,function(n){return-1<t.indexOf(n)})}).getOr(ju)}(),ce(t,t,e,Zn(function(e){return an.value(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return e.apply(undefined,n)})}))}function qu(n){return Yu(0,n,j(Z))}function Ku(n){return Yu(0,n,j(on.none))}function Ju(n){return Yu(0,n,Mn())}function $u(n){return Yu(0,n,Mn())}function Qu(n,t){return At(n,nn(t))}function Zu(n){return At(n,l)}function na(n){return n.x()}function ta(n,t){return n.x()+n.width()/2-t.width()/2}function ea(n,t){return n.x()+n.width()-t.width()}function oa(n,t){return n.y()-t.height()}function ra(n){return n.y()+n.height()}function ia(n,t){return n.y()+n.height()/2-t.height()/2}function ua(n,t,e){return Ya(na(n),ra(n),e.southeast(),Ka(),"layout-se")}function aa(n,t,e){return Ya(ea(n,t),ra(n),e.southwest(),Ja(),"layout-sw")}function ca(n,t,e){return Ya(na(n),oa(n,t),e.northeast(),$a(),"layout-ne")}function sa(n,t,e){return Ya(ea(n,t),oa(n,t),e.northwest(),Qa(),"layout-nw")}function fa(n,t,e){return Ya(function(n){return n.x()+n.width()}(n),ia(n,t),e.east(),tc(),"layout-e")}function la(n,t,e){return Ya(function(n,t){return n.x()-t.width()}(n,t),ia(n,t),e.west(),ec(),"layout-w")}function da(){return[ua,aa,ca,sa,rc,oc]}function ma(){return[aa,ua,sa,ca,rc,oc]}function ga(e,o,r){return Vi(function(n,t){r(n,e,o)})}function pa(n,t,e,o,r,i){var u=qn(n),a=wt(t,[function(n,t){return vt(n,qn(t))}("config",n)]);return ic(u,a,t,e,o,r,i)}function ha(r,i,u){return function(n,t,e){var o=e.toString(),r=o.indexOf(")")+1,i=o.indexOf("("),u=o.substring(i+1,r-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:t,parameters:$i(u.slice(0,1).concat(u.slice(3)))}},n}(function(e){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];var o=[e].concat(n);return e.config({name:nn(r)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+r+". Using API: "+u)},function(n){var t=Array.prototype.slice.call(o,1);return i.apply(undefined,[e,n.config,n.state].concat(t))})},u,i)}function va(n){return{key:n,value:undefined}}function ba(n){return K(n)}function ya(n){var t=ot("Creating behaviour: "+n.name,uc,n);return pa(t.fields,t.name,t.active,t.apis,t.extra,t.state)}function xa(n){var t=ot("Creating behaviour: "+n.name,ac,n);return function(n,t,e,o,r,i){var u=n,a=wt(t,[vt("config",n)]);return ic(u,a,t,e,o,r,i)}(it(t.branchKey,t.branches),t.name,t.active,t.apis,t.extra,t.state)}function wa(n){n.dom().focus()}function Sa(n){var t=n!==undefined?n.dom():v.document;return on.from(t.activeElement).map(we.fromDom)}function Ca(t){return Sa(Co(t)).filter(function(n){return t.dom().contains(n.dom())})}function ka(n,e){var o=Co(e),t=Sa(o).bind(function(t){function n(n){return jt(t,n)}return n(e)?on.some(e):no(e,n)}),r=n(e);return t.each(function(t){Sa(o).filter(function(n){return jt(n,t)}).fold(function(){wa(t)},Z)}),r}function Oa(n,t,e){function r(n){return Nn(e,n).getOr([])}function o(n,t,e){var o=_(mc,e);return{offset:function(){return Iu(n,t)},classesOn:function(){return B(e,r)},classesOff:function(){return B(o,r)}}}return{southeast:function(){return o(-n,t,["top","alignLeft"])},southwest:function(){return o(n,t,["top","alignRight"])},south:function(){return o(-n/2,t,["top","alignCentre"])},northeast:function(){return o(-n,-t,["bottom","alignLeft"])},northwest:function(){return o(n,-t,["bottom","alignRight"])},north:function(){return o(-n/2,-t,["bottom","alignCentre"])},east:function(){return o(n,-t/2,["valignCentre","left"])},west:function(){return o(-n,-t/2,["valignCentre","right"])},innerNorthwest:function(){return o(-n,t,["top","alignRight"])},innerNortheast:function(){return o(n,t,["top","alignLeft"])},innerNorth:function(){return o(-n/2,t,["top","alignCentre"])},innerSouthwest:function(){return o(-n,-t,["bottom","alignRight"])},innerSoutheast:function(){return o(n,-t,["bottom","alignLeft"])},innerSouth:function(){return o(-n/2,-t,["bottom","alignCentre"])},innerWest:function(){return o(n,-t/2,["valignCentre","right"])},innerEast:function(){return o(-n,-t/2,["valignCentre","left"])}}}function Ea(){return Oa(0,0,{})}function Ta(n,t,e,o,r,i){var u=t.x()-e,a=t.y()-o,c=r-(u+t.width()),s=i-(a+t.height()),f=on.some(u),l=on.some(a),d=on.some(c),m=on.some(s),g=on.none();return function(n,t,e,o,r,i,u,a,c){return n.fold(t,e,o,r,i,u,a,c)}(t.direction(),function(){return pc(n,f,l,g,g)},function(){return pc(n,g,l,d,g)},function(){return pc(n,f,g,g,m)},function(){return pc(n,g,g,d,m)},function(){return pc(n,f,l,g,g)},function(){return pc(n,f,g,g,m)},function(){return pc(n,f,l,g,g)},function(){return pc(n,g,l,d,g)})}function Ba(n,t){var e=d(bu,t),o=n.fold(e,e,function(){var n=pu();return bu(t).translate(-n.left(),-n.top())}),r=gu(t),i=fu(t);return yu(o.left(),o.top(),r,i)}function Da(n){return n}function Aa(t,e){return function(n){return"rtl"===xc(n)?e:t}}function _a(){return wt("layouts",[ct("onLtr"),ct("onRtl")])}function Ma(t,n,e,o){var r=n.layouts.map(function(n){return n.onLtr(t)}).getOr(e),i=n.layouts.map(function(n){return n.onRtl(t)}).getOr(o);return Aa(r,i)(t)}function Fa(n,t,e){var o=n.document.createRange();return function(e,n){n.fold(function(n){e.setStartBefore(n.dom())},function(n,t){e.setStart(n.dom(),t)},function(n){e.setStartAfter(n.dom())})}(o,t),function(e,n){n.fold(function(n){e.setEndBefore(n.dom())},function(n,t){e.setEnd(n.dom(),t)},function(n){e.setEndAfter(n.dom())})}(o,e),o}function Ia(n,t,e,o,r){var i=n.document.createRange();return i.setStart(t.dom(),e),i.setEnd(o.dom(),r),i}function Ra(n){return{left:nn(n.left),top:nn(n.top),right:nn(n.right),bottom:nn(n.bottom),width:nn(n.width),height:nn(n.height)}}function Va(n,t,e){return t(we.fromDom(e.startContainer),e.startOffset,we.fromDom(e.endContainer),e.endOffset)}function Na(n,t){return function(n,t){var e=t.ltr();return e.collapsed?t.rtl().filter(function(n){return!1===n.collapsed}).map(function(n){return Bc.rtl(we.fromDom(n.endContainer),n.endOffset,we.fromDom(n.startContainer),n.startOffset)}).getOrThunk(function(){return Va(0,Bc.ltr,e)}):Va(0,Bc.ltr,e)}(0,function(r,n){return n.match({domRange:function(n){return{ltr:nn(n),rtl:on.none}},relative:function(n,t){return{ltr:L(function(){return Fa(r,n,t)}),rtl:L(function(){return on.some(Fa(r,t,n))})}},exact:function(n,t,e,o){return{ltr:L(function(){return Ia(r,n,t,e,o)}),rtl:L(function(){return on.some(Ia(r,e,o,n,t))})}}})}(n,t))}function Ha(n,t,e){return t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}var Pa=ye({}),za=["alloy/data/Fields","alloy/debugging/Debugging"],La=nn({logEventCut:Z,logEventStopped:Z,logNoParent:Z,logEventNoHandlers:Z,logEventResponse:Z,write:Z}),ja=nn([ct("menu"),ct("selectedMenu")]),Ua=nn([ct("item"),ct("selectedItem")]),Wa=(nn(re(Ua().concat(ja()))),nn(re(Ua()))),Ga=mt("initSize",[ct("numColumns"),ct("numRows")]),Xa=nn(Ga),Ya=yo("x","y","bubble","direction","label"),qa=Tn([{southeast:[]},{southwest:[]},{northeast:[]},{northwest:[]},{south:[]},{north:[]},{east:[]},{west:[]}]),Ka=qa.southeast,Ja=qa.southwest,$a=qa.northeast,Qa=qa.northwest,Za=qa.south,nc=qa.north,tc=qa.east,ec=qa.west,oc=function(n,t,e){return Ya(ta(n,t),oa(n,t),e.north(),nc(),"layout-n")},rc=function(n,t,e){return Ya(ta(n,t),ra(n),e.south(),Za(),"layout-s")},ic=function(e,n,o,r,t,i,u){function a(n){return $(n,o)?n[o]():on.none()}var c=P(t,function(n,t){return ha(o,n,t)}),s=P(i,function(n,t){return Ko(n,t)}),f=N(N(N({},s),c),{revoke:d(va,o),config:function(n){var t=ot(o+"-config",e,n);return{key:o,value:{config:t,me:f,configAsRaw:L(function(){return ot(o+"-config",e,n)}),initialConfig:n,state:u}}},schema:function(){return n},exhibit:function(n,e){return a(n).bind(function(t){return Nn(r,"exhibit").map(function(n){return n(e,t.config,t.state)})}).getOr(Zo({}))},name:function(){return o},handlers:function(n){return a(n).map(function(n){return Y("events",function(n,t){return{}})(r)(n.config,n.state)}).getOr({})}});return f},uc=qn([ct("fields"),ct("name"),St("active",{}),St("apis",{}),St("state",Zi),St("extra",{})]),ac=qn([ct("branchKey"),ct("branches"),ct("name"),St("active",{}),St("apis",{}),St("state",Zi),St("extra",{})]),cc=nn(undefined),sc=/* */Object.freeze({events:function(t){return co([lo(li(),function(r,i){var u=t.channels,n=function(n,t){return t.universal()?n:C(n,function(n){return vn(t.channels(),n)})}(wn(u),i);bn(n,function(n){var t=u[n],e=t.schema,o=ot("channel["+n+"] data\nReceiver: "+Go(r.element()),e,i.data());t.onReceive(r,o)})})])}}),fc=[st("channels",nt(an.value,qn([Ju("onReceive"),St("schema",de())])))],lc=ya({fields:fc,name:"receiving",active:sc}),dc=/* */Object.freeze({exhibit:function(n,t){return Zo({classes:[],styles:t.useFixed()?{}:{position:"relative"}})}}),mc=["valignCentre","alignLeft","alignRight","alignCentre","top","bottom","left","right"],gc=So(["x","y","width","height","maxHeight","maxWidth","direction","classes","label","candidateYforTest"],[]),pc=yo("position","left","top","right","bottom"),hc=Tn([{none:[]},{relative:["x","y","width","height"]},{fixed:["x","y","width","height"]}]),vc=function(n,t,e){var o=Iu(t,e);return n.fold(nn(o),nn(o),function(){var n=pu();return o.translate(-n.left(),-n.top())})},bc=hc.relative,yc=hc.fixed,xc=function(n){return"rtl"===wr(n,"direction")?"rtl":"ltr"},wc=[ct("hotspot"),ht("bubble"),St("overrides",{}),_a(),Qu("placement",function(n,t,e){var o=t.hotspot,r=Ba(e,o.element()),i=Ma(n.element(),t,da(),ma());return on.some(Da({anchorBox:r,bubble:t.bubble.getOr(Ea()),overrides:t.overrides,layouts:i,placer:on.none()}))})],Sc=[ct("x"),ct("y"),St("height",0),St("width",0),St("bubble",Ea()),St("overrides",{}),_a(),Qu("placement",function(n,t,e){var o=vc(e,t.x,t.y),r=yu(o.left(),o.top(),t.width,t.height),i=Ma(n.element(),t,[ua,aa,ca,sa,rc,oc,fa,la],[aa,ua,sa,ca,rc,oc,fa,la]);return on.some(Da({anchorBox:r,bubble:t.bubble,overrides:t.overrides,layouts:i,placer:on.none()}))})],Cc={create:yo("start","soffset","finish","foffset")},kc=Tn([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Oc=(kc.before,kc.on,kc.after,function(n){return n.fold(l,l,l)}),Ec=Tn([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Tc={domRange:Ec.domRange,relative:Ec.relative,exact:Ec.exact,exactFromRange:function(n){return Ec.exact(n.start(),n.soffset(),n.finish(),n.foffset())},getWin:function(n){var t=function(n){return n.match({domRange:function(n){return we.fromDom(n.startContainer)},relative:function(n,t){return Oc(n)},exact:function(n,t,e,o){return n}})}(n);return Oo(t)},range:Cc.create},Bc=Tn([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function Dc(n){return rf.get(n)}function Ac(n){return rf.getOption(n)}function _c(e,o,n,t,r){function i(n){var t=e.dom().createRange();return t.setStart(o.dom(),n),t.collapse(!0),t}var u=Dc(o).length,a=function(n,t,e,o,r){if(0===r)return 0;if(t===o)return r-1;for(var i=o,u=1;u<r;u++){var a=n(u),c=Math.abs(t-a.left);if(e<=a.bottom){if(e<a.top||i<c)return u-1;i=c}}return 0}(function(n){return i(n).getBoundingClientRect()},n,t,r.right,u);return i(a)}function Mc(n){return function(n){return Ac(n).filter(function(n){return 0!==n.trim().length||-1<n.indexOf("\xa0")}).isSome()}(n)||vn(af,Ke(n))}function Fc(n){return no(n,Mc)}function Ic(n){return cf(n,Mc)}function Rc(n,t){return t-n.left<n.right-t}function Vc(n,t,e){var o=n.dom().createRange();return o.selectNode(t.dom()),o.collapse(e),o}function Nc(t,n,e){var o=t.dom().createRange();o.selectNode(n.dom());var r=o.getBoundingClientRect(),i=Rc(r,e);return(!0===i?Fc:Ic)(n).map(function(n){return Vc(t,n,i)})}function Hc(n,t,e){var o=t.dom().getBoundingClientRect(),r=Rc(o,e);return on.some(Vc(n,t,r))}function Pc(n,t,e,o){var r=n.dom().createRange();r.selectNode(t.dom());var i=r.getBoundingClientRect();return function(n,t,e,o){var r=n.dom().createRange();r.selectNode(t.dom());var i=r.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,e)),a=Math.max(i.top,Math.min(i.bottom,o));return uf(n,t,u,a)}(n,t,Math.max(i.left,Math.min(i.right,e)),Math.max(i.top,Math.min(i.bottom,o)))}function zc(n,t){return Lt(t,n)}function Lc(n,t,e,o){var r=function(n,t,e,o){var r=Co(n).dom().createRange();return r.setStart(n.dom(),t),r.setEnd(e.dom(),o),r}(n,t,e,o),i=jt(n,e)&&t===o;return r.collapsed&&!i}function jc(n){var t=we.fromDom(n.anchorNode),e=we.fromDom(n.focusNode);return Lc(t,n.anchorOffset,e,n.focusOffset)?on.some(Cc.create(t,n.anchorOffset,e,n.focusOffset)):function(n){if(0<n.rangeCount){var t=n.getRangeAt(0),e=n.getRangeAt(n.rangeCount-1);return on.some(Cc.create(we.fromDom(t.startContainer),t.startOffset,we.fromDom(e.endContainer),e.endOffset))}return on.none()}(n)}function Uc(n,t){return function(n){var t=n.getClientRects(),e=0<t.length?t[0]:n.getBoundingClientRect();return 0<e.width||0<e.height?on.some(e).map(Ra):on.none()}(function(i,n){return Na(i,n).match({ltr:function(n,t,e,o){var r=i.document.createRange();return r.setStart(n.dom(),t),r.setEnd(e.dom(),o),r},rtl:function(n,t,e,o){var r=i.document.createRange();return r.setStart(e.dom(),o),r.setEnd(n.dom(),t),r}})}(n,t))}function Wc(n){return n.fold(function(n){return n},function(n,t,e){return n.translate(-t,-e)})}function Gc(n){return n.fold(function(n){return n},function(n,t,e){return n})}function Xc(n){return O(n,function(n,t){return n.translate(t.left(),t.top())},Iu(0,0))}function Yc(n){var t=S(n,Gc);return Xc(t)}function qc(n,t,e){var o=Co(n.element()),r=pu(o),i=function(o,n,t){var e=Oo(t.root).dom();return on.from(e.frameElement).map(we.fromDom).filter(function(n){var t=Co(n),e=Co(o.element());return jt(t,e)}).map(du)}(n,0,e).getOr(r);return df(i,r.left(),r.top())}function Kc(n,t){return Pr(n)?pf(n,t):function(n,t){var e=Bo(n);if(0===e.length)return sf(n,t);if(t<e.length)return sf(e[t],0);var o=e[e.length-1],r=Pr(o)?Dc(o).length:Bo(o).length;return sf(o,r)}(n,t)}function Jc(n,t){return t.getSelection.getOrThunk(function(){return function(){return function(n){return on.from(n.getSelection()).filter(function(n){return 0<n.rangeCount}).bind(jc)}(n)}})().map(function(n){var t=Kc(n.start(),n.soffset()),e=Kc(n.finish(),n.foffset());return Tc.range(t.element(),t.offset(),e.element(),e.offset())})}function $c(n){return n.x()+n.width()}function Qc(n,t){return n.x()-t.width()}function Zc(n,t){return n.y()-t.height()+n.height()}function ns(n){return n.y()}function ts(n,t,e){return Ya($c(n),ns(n),e.southeast(),Ka(),"link-layout-se")}function es(n,t,e){return Ya(Qc(n,t),ns(n),e.southwest(),Ja(),"link-layout-sw")}function os(n,t,e){return Ya($c(n),Zc(n,t),e.northeast(),$a(),"link-layout-ne")}function rs(n,t,e){return Ya(Qc(n,t),Zc(n,t),e.northwest(),Qa(),"link-layout-nw")}function is(n,t,e,o){var r=n+t;return o<r?e:r<e?o:r}function us(n,t,e){return n<=t?t:e<=n?e:n}function as(n,t,e,o){var r=n.x(),i=n.y(),u=n.bubble().offset().left(),a=n.bubble().offset().top(),c=o.y(),s=o.bottom(),f=o.x(),l=o.right(),d=i+a,m=function(n,t,e,o,r){var i=r.x(),u=r.y(),a=r.width(),c=r.height(),s=i<=n,f=u<=t,l=s&&f,d=n+e<=i+a&&t+o<=u+c,m=Math.abs(Math.min(e,s?i+a-n:i-(n+e))),g=Math.abs(Math.min(o,f?u+c-t:u-(t+o)));return{originInBounds:l,sizeInBounds:d,limitX:us(n,r.x(),r.right()),limitY:us(t,r.y(),r.bottom()),deltaW:m,deltaH:g}}(r+u,d,t,e,o),g=m.originInBounds,p=m.sizeInBounds,h=m.limitX,v=m.limitY,b=m.deltaW,y=m.deltaH,x=nn(v+y-c),w=nn(s-v),S=function(n,t,e,o){return n.fold(t,t,o,o,t,o,e,e)}(n.direction(),w,w,x),C=nn(h+b-f),k=nn(l-h),O=function(n,t,e,o){return n.fold(t,o,t,o,e,e,t,o)}(n.direction(),k,k,C),E=gc({x:h,y:v,width:b,height:y,maxHeight:S,maxWidth:O,direction:n.direction(),classes:{on:n.bubble().classesOn(),off:n.bubble().classesOff()},label:n.label(),candidateYforTest:d});return g&&p?wf.fit(E):wf.nofit(E,b,y)}function cs(n,t,e,o){kr(t,"max-height"),kr(t,"max-width");var r=function(n){return{width:nn(gu(n)),height:nn(fu(n))}}(t);return function(n,e,u,a,c){function o(n,o,r,i){var t=n(e,u,a);return as(t,s,f,c).fold(wf.fit,function(n,t,e){return i<e||r<t?wf.nofit(n,t,e):wf.nofit(o,r,i)})}var s=u.width(),f=u.height();return O(n,function(n,t){var e=d(o,t);return n.fold(wf.fit,e)},wf.nofit(gc({x:e.x(),y:e.y(),width:u.width(),height:u.height(),maxHeight:u.height(),maxWidth:u.width(),direction:Ka(),classes:{on:[],off:[]},label:"none",candidateYforTest:e.y()}),-1,-1)).fold(l,l)}(o.preference(),n,r,e,o.bounds())}function ss(n,t,e){function o(n){return n+"px"}var r=function(n,r){return n.fold(function(){return pc("absolute",on.some(r.x()),on.some(r.y()),on.none(),on.none())},function(n,t,e,o){return Ta("absolute",r,n,t,e,o)},function(n,t,e,o){return Ta("fixed",r,n,t,e,o)})}(e.origin(),t);!function(n,t){var e=n.dom();Cn(t,function(n,t){n.fold(function(){br(e,t)},function(n){vr(e,t,n)})})}(n,{position:on.some(r.position()),left:r.left().map(o),top:r.top().map(o),right:r.right().map(o),bottom:r.bottom().map(o)})}function fs(n,t){!function(n,t){var e=Mu.max(n,t,["margin-top","border-top-width","padding-top","padding-bottom","border-bottom-width","margin-bottom"]);yr(n,"max-height",e+"px")}(n,Math.floor(t))}function ls(n,t,e){return n[t]===undefined?e:n[t]}function ds(n,t,e,o,r,i){var u=ls(i,"maxHeightFunction",Sf()),a=ls(i,"maxWidthFunction",Z),c=n.anchorBox(),s=n.origin(),f=kf({bounds:function(o,n){return n.fold(function(){return o.fold(Su,Su,yu)},function(e){return o.fold(e,e,function(){var n=e(),t=vc(o,n.x(),n.y());return yu(t.left(),t.top(),n.width(),n.height())})})}(s,r),origin:s,preference:o,maxHeightFunction:u,maxWidthFunction:a});Of(c,t,e,f)}function ms(n,t,e,o,r){var i=function(n,t){return xf(n,t)}(e.anchorBox,t);ds(i,r.element(),e.bubble,e.layouts,o,e.overrides)}function gs(n,t){Hi(n.element(),t.element())}function ps(t,n){var e=t.components();!function(n){bn(n.components(),function(n){return Pi(n.element())}),Io(n.element()),n.syncComponents()}(t);var o=_(e,n);bn(o,function(n){_f(n),t.getSystem().removeFromWorld(n)}),bn(n,function(n){n.getSystem().isConnected()?gs(t,n):(t.getSystem().addToWorld(n),gs(t,n),$e(t.element())&&Mf(n)),t.syncComponents()})}function hs(n,t){Ff(n,t,Hi)}function vs(n){_f(n),Pi(n.element()),n.getSystem().removeFromWorld(n)}function bs(t){var n=Eo(t.element()).bind(function(n){return t.getSystem().getByDom(n).toOption()});vs(t),n.each(function(n){n.syncComponents()})}function ys(n){var t=n.components();bn(t,vs),Io(n.element()),n.syncComponents()}function xs(n,t){If(n,t,Hi)}function ws(t){var n=Bo(t.element());bn(n,function(n){t.getByDom(n).each(_f)}),Pi(t.element())}function Ss(t,n,e,o){e.get().each(function(n){ys(t)});var r=n.getAttachPoint(t);hs(r,t);var i=t.getSystem().build(o);return hs(t,i),e.set(i),i}function Cs(n,t,e,o){var r=Ss(n,t,e,o);return t.onOpen(n,r),r}function ks(t,e,o){o.get().each(function(n){ys(t),bs(t),e.onClose(t,n),o.clear()})}function Os(n,t,e){return e.isOpen()}function Es(n){var t,e=ot("Dismissal",Wf,n);return(t={})[Lf()]={schema:qn([ct("target")]),onReceive:function(t,n){zf.isOpen(t)&&(zf.isPartOf(t,n.target)||e.isExtraPart(t,n.target)||e.fireEventInstead.fold(function(){return zf.close(t)},function(n){return oo(t,n.event)}))}},t}function Ts(n){var t,e=ot("Reposition",Gf,n);return(t={})[jf()]={onReceive:function(t){zf.isOpen(t)&&e.fireEventInstead.fold(function(){return e.doReposition(t)},function(n){return oo(t,n.event)})}},t}function Bs(n,t,e){t.store.manager.onLoad(n,t,e)}function Ds(n,t,e){t.store.manager.onUnload(n,t,e)}function As(){var n=ye(null);return nu({set:n.set,get:n.get,isNotSet:function(){return null===n.get()},clear:function(){n.set(null)},readState:function(){return{mode:"memory",value:n.get()}}})}function _s(){var i=ye({}),u=ye({});return nu({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(n){return Nn(i.get(),n).orThunk(function(){return Nn(u.get(),n)})},update:function(n){var t=i.get(),e=u.get(),o={},r={};bn(n,function(t){o[t.value]=t,Nn(t,"meta").each(function(n){Nn(n,"text").each(function(n){r[n]=t})})}),i.set(N(N({},t),o)),u.set(N(N({},e),r))},clear:function(){i.set({}),u.set({})}})}function Ms(n,t,e,o){var r=t.store;e.update([o]),r.setValue(n,o),t.onSetValue(n,o)}function Fs(t,n){return Dt(t,{},S(n,function(n){return function(t,e){return ce(t,t,Fn(),Yn(function(n){return qt("The field: "+t+" is forbidden. "+e)}))}(n.name(),"Cannot configure "+n.name()+" for "+t)}).concat([At("dump",l)]))}function Is(n){return n.dump}function Rs(n,t){return N(N({},n.dump),ba(t))}function Vs(n,t,e,o){return e.uiType===el?function(n,t,e,o){return n.exists(function(n){return n!==e.owner})?ol.single(!0,nn(e)):Nn(o,e.name).fold(function(){throw new Error("Unknown placeholder component: "+e.name+"\nKnown: ["+wn(o)+"]\nNamespace: "+n.getOr("none")+"\nSpec: "+JSON.stringify(e,null,2))},function(n){return n.replace()})}(n,0,e,o):ol.single(!1,nn(e))}function Ns(t,e,n,o){var r=P(o,function(n,t){return function(n,t){var e=!1;return{name:nn(n),required:function(){return t.fold(function(n,t){return n},function(n,t){return n})},used:function(){return e},replace:function(){if(!0===e)throw new Error("Trying to use the same placeholder more than once: "+n);return e=!0,t}}}(t,n)}),i=function(t,e,n,o){return B(n,function(n){return rl(t,e,n,o)})}(t,e,n,r);return Cn(r,function(n){if(!1===n.used()&&n.required())throw new Error("Placeholder: "+n.name()+" was not found in components list\nNamespace: "+t.getOr("none")+"\nComponents: "+JSON.stringify(e.components,null,2))}),i}function Hs(n){return n.fold(on.some,on.none,on.some,on.some)}function Ps(n){function t(n){return n.name}return n.fold(t,t,t,t)}function zs(e,o){return function(n){var t=ot("Converting part type",o,n);return e(t)}}function Ls(n,t,e,o){return Dn(t.defaults(n,e,o),e,{uid:n.partUids[t.name]},t.overrides(n,e,o))}function js(r,n){var t={};return bn(n,function(n){Hs(n).each(function(e){var o=El(r,e.pname);t[e.name]=function(n){var t=ot("Part: "+e.name+" in "+r,re(e.schema),n);return N(N({},o),{config:n,validated:t})}})}),t}function Us(n,t,e){return{uiType:al(),owner:n,name:t,config:e,validated:{}}}function Ws(n){return B(n,function(n){return n.fold(on.none,on.some,on.none,on.none).map(function(n){return mt(n.name,n.schema.concat([Zu(kl())]))}).toArray()})}function Gs(n){return S(n,Ps)}function Xs(n,t,e){return function(n,e,t){var i={},o={};return bn(t,function(n){n.fold(function(o){i[o.pname]=il(!0,function(n,t,e){return o.factory.sketch(Ls(n,o,t,e))})},function(n){var t=e.parts[n.name];o[n.name]=nn(n.factory.sketch(Ls(e,n,t[kl()]),t))},function(o){i[o.pname]=il(!1,function(n,t,e){return o.factory.sketch(Ls(n,o,t,e))})},function(r){i[r.pname]=ul(!0,function(t,n,e){var o=t[r.name];return S(o,function(n){return r.factory.sketch(Dn(r.defaults(t,n,e),n,r.overrides(t,n)))})})})}),{internals:nn(i),externals:nn(o)}}(0,t,e)}function Ys(n,t,e){return Ns(on.some(n),t,t.components,e)}function qs(n,t,e){var o=t.partUids[e];return n.getSystem().getByUid(o).toOption()}function Ks(n,t,e){return qs(n,t,e).getOrDie("Could not find part: "+e)}function Js(n,t,e){var o={},r=t.partUids,i=n.getSystem();return bn(e,function(n){o[n]=nn(i.getByUid(r[n]))}),o}function $s(n,t){var e=n.getSystem();return P(t.partUids,function(n,t){return nn(e.getByUid(n))})}function Qs(n){return wn(n.partUids)}function Zs(n,t,e){var o={},r=t.partUids,i=n.getSystem();return bn(e,function(n){o[n]=nn(i.getByUid(r[n]).getOrDie())}),o}function nf(t,n){var e=Gs(n);return K(S(e,function(n){return{key:n,value:t+"-"+n}}))}function tf(t){return ce("partUids","partUids",Rn(function(n){return nf(n.uid,t)}),de())}function ef(n,t,e,o,r){var i=function(n,t){return(0<n.length?[mt("parts",n)]:[]).concat([ct("uid"),St("dom",{}),St("components",[]),Zu("originalSpec"),St("debug.sketcher",{})]).concat(t)}(o,r);return ot(n+" [SpecSchema]",qn(i.concat(t)),e)}function of(n,t,e,o,r){var i=Bl(r),u=Ws(e),a=tf(e),c=ef(n,t,i,u,[a]),s=Xs(0,c,e);return o(c,Ys(n,c,s.internals()),i,s.externals())}var rf=function rI(e,o){var t=function(n){return e(n)?on.from(n.dom().nodeValue):on.none()};return{get:function(n){if(!e(n))throw new Error("Can only get "+o+" value of a "+o+" node");return t(n).getOr("")},getOption:t,set:function(n,t){if(!e(n))throw new Error("Can only set raw "+o+" value of a "+o+" node");n.dom().nodeValue=t}}}(Pr,"text"),uf=function(n,t,e,o){return Pr(t)?function(t,e,o,r){var n=t.dom().createRange();n.selectNode(e.dom());var i=n.getClientRects();return Du(i,function(n){return Ha(n,o,r)?on.some(n):on.none()}).map(function(n){return _c(t,e,o,r,n)})}(n,t,e,o):function(t,n,e,o){var r=t.dom().createRange(),i=Bo(n);return Du(i,function(n){return r.selectNode(n.dom()),Ha(r.getBoundingClientRect(),e,o)?uf(t,n,e,o):on.none()})}(n,t,e,o)},af=["img","br"],cf=function(n,i){var u=function(n){for(var t=Bo(n),e=t.length-1;0<=e;e--){var o=t[e];if(i(o))return on.some(o);var r=u(o);if(r.isSome())return r}return on.none()};return u(n)},sf=(document.caretPositionFromPoint||document.caretRangeFromPoint,yo("element","offset")),ff=Tn([{screen:["point"]},{absolute:["point","scrollLeft","scrollTop"]}]),lf=ff.screen,df=ff.absolute,mf=function(n,t,e,o){var r=n,i=t,u=e,a=o;n<0&&(r=0,u=e+n),t<0&&(i=0,a=o+t);var c=lf(Iu(r,i));return on.some(Pu(c,u,a))},gf=function(n,i,u,a,c){return n.map(function(n){var t=[i,n.point()],e=function(n,t,e,o){return n.fold(t,e,o)}(a,function(){return Yc(t)},function(){return Yc(t)},function(){return function(n){var t=S(n,Wc);return Xc(t)}(t)}),o=zu(e.left(),e.top(),n.width(),n.height()),r=Ma(c,u,u.showAbove?[ca,sa,ua,aa,oc,rc]:[ua,aa,ca,sa,rc,rc],u.showAbove?[sa,ca,aa,ua,oc,rc]:[aa,ua,sa,ca,rc,oc]);return Da({anchorBox:o,bubble:u.bubble.getOr(Ea()),overrides:u.overrides,layouts:r,placer:on.none()})})},pf=yo("element","offset"),hf=[ht("getSelection"),ct("root"),ht("bubble"),_a(),St("overrides",{}),St("showAbove",!1),Qu("placement",function(n,t,e){var o=Oo(t.root).dom(),r=qc(n,0,t),i=Jc(o,t).bind(function(n){return Uc(o,Tc.exactFromRange(n)).orThunk(function(){var t=we.fromText("\ufeff");return Ao(n.start(),t),Uc(o,Tc.exact(t,0,t,1)).map(function(n){return Pi(t),n})}).bind(function(n){return mf(n.left(),n.top(),n.width(),n.height())})}),u=Jc(o,t).bind(function(n){return Hr(n.start())?on.some(n.start()):Eo(n.start())}).getOr(n.element());return gf(i,r,t,e,u)})],vf=[ct("node"),ct("root"),ht("bubble"),_a(),St("overrides",{}),St("showAbove",!1),Qu("placement",function(r,i,u){var a=qc(r,0,i);return i.node.bind(function(n){var t=n.dom().getBoundingClientRect(),e=mf(t.left,t.top,t.width,t.height),o=i.node.getOr(r.element());return gf(e,a,i,u,o)})})],bf=[ct("item"),_a(),St("overrides",{}),Qu("placement",function(n,t,e){var o=Ba(e,t.item.element()),r=Ma(n.element(),t,[ts,es,os,rs],[es,ts,rs,os]);return on.some(Da({anchorBox:o,bubble:Ea(),overrides:t.overrides,layouts:r,placer:on.none()}))})],yf=it("anchor",{selection:hf,node:vf,hotspot:wc,submenu:bf,makeshift:Sc}),xf=yo("anchorBox","origin"),wf=Tn([{fit:["reposition"]},{nofit:["reposition","deltaW","deltaH"]}]),Sf=nn(function(n,t){fs(n,t),xr(n,{"overflow-x":"hidden","overflow-y":"auto"})}),Cf=nn(function(n,t){fs(n,t)}),kf=So(["bounds","origin","preference","maxHeightFunction","maxWidthFunction"],[]),Of=function(n,t,e,o){var r=cs(n,t,e,o);ss(t,r,o),function(n,t){var e=t.classes();pr(n,e.off),gr(n,e.on)}(t,r),function(n,t,e){e.maxHeightFunction()(n,t.maxHeight())}(t,r,o),function(n,t,e){e.maxWidthFunction()(n,t.maxWidth())}(t,r,o)},Ef=function(n,t,e,o,r,i){var u=i.map(xu);return Tf(n,t,e,o,r,u)},Tf=function(r,i,n,t,u,a){var c=ot("positioning anchor.info",yf,t);ka(function(){yr(u.element(),"position","fixed");var n=Sr(u.element(),"visibility");yr(u.element(),"visibility","hidden");var t=i.useFixed()?function(){var n=v.document.documentElement;return yc(0,0,n.clientWidth,n.clientHeight)}():function(n){var t=du(n.element()),e=n.element().dom().getBoundingClientRect();return bc(t.left(),t.top(),e.width,e.height)}(r),e=c.placement,o=a.map(nn).or(i.getBounds);e(r,c,t).each(function(n){n.placer.getOr(ms)(r,t,n,o,u)}),n.fold(function(){kr(u.element(),"visibility")},function(n){yr(u.element(),"visibility",n)}),Sr(u.element(),"left").isNone()&&Sr(u.element(),"top").isNone()&&Sr(u.element(),"right").isNone()&&Sr(u.element(),"bottom").isNone()&&Sr(u.element(),"position").is("fixed")&&kr(u.element(),"position")},u.element())},Bf=/* */Object.freeze({position:function(n,t,e,o,r){Ef(n,t,e,o,r,on.none())},positionWithin:Ef,positionWithinBounds:Tf,getMode:function(n,t,e){return t.useFixed()?"fixed":"absolute"}}),Df=[St("useFixed",u),ht("getBounds")],Af=ya({fields:Df,name:"positioning",active:dc,apis:Bf}),_f=function(n){oo(n,ki());var t=n.components();bn(t,_f)},Mf=function(n){var t=n.components();bn(t,Mf),oo(n,Ci())},Ff=function(n,t,e){n.getSystem().addToWorld(t),e(n.element(),t.element()),$e(n.element())&&Mf(t),n.syncComponents()},If=function(n,t,e){e(n,t.element());var o=Bo(t.element());bn(o,function(n){t.getByDom(n).each(Mf)})},Rf=function(n,t,e){var o=t.getAttachPoint(n);yr(n.element(),"position",Af.getMode(o)),function(t,n,e,o){Sr(t.element(),n).fold(function(){jo(t.element(),e)},function(n){Po(t.element(),e,n)}),yr(t.element(),n,o)}(n,"visibility",t.cloakVisibilityAttr,"hidden")},Vf=function(n,t,e){!function(t){return x(["top","left","right","bottom"],function(n){return Sr(t,n).isSome()})}(n.element())&&kr(n.element(),"position"),function(n,t,e){if(Lo(n.element(),e)){var o=zo(n.element(),e);yr(n.element(),t,o)}else kr(n.element(),t)}(n,"visibility",t.cloakVisibilityAttr)},Nf=/* */Object.freeze({cloak:Rf,decloak:Vf,open:Cs,openWhileCloaked:function(n,t,e,o,r){Rf(n,t),Cs(n,t,e,o),r(),Vf(n,t)},close:ks,isOpen:Os,isPartOf:function(t,e,n,o){return Os(0,0,n)&&n.get().exists(function(n){return e.isPartOf(t,n,o)})},getState:function(n,t,e){return e.get()},setContent:function(n,t,e,o){return e.get().map(function(){return Ss(n,t,e,o)})}}),Hf=/* */Object.freeze({events:function(e,o){return co([lo(hi(),function(n,t){ks(n,e,o)})])}}),Pf=[qu("onOpen"),qu("onClose"),ct("isPartOf"),ct("getAttachPoint"),St("cloakVisibilityAttr","data-precloak-visibility")],zf=ya({fields:Pf,name:"sandboxing",active:Hf,apis:Nf,state:/* */Object.freeze({init:function(){var t=ye(on.none()),n=nn("not-implemented");return nu({readState:n,isOpen:function(){return t.get().isSome()},clear:function(){t.set(on.none())},set:function(n){t.set(on.some(n))},get:function(n){return t.get()}})}})}),Lf=nn("dismiss.popups"),jf=nn("reposition.popups"),Uf=nn("mouse.released"),Wf=qn([St("isExtraPart",nn(!1)),wt("fireEventInstead",[St("event",Oi())])]),Gf=qn([St("isExtraPart",nn(!1)),wt("fireEventInstead",[St("event",Ei())]),dt("doReposition")]),Xf=/* */Object.freeze({onLoad:Bs,onUnload:Ds,setValue:function(n,t,e,o){t.store.manager.setValue(n,t,e,o)},getValue:function(n,t,e){return t.store.manager.getValue(n,t,e)},getState:function(n,t,e){return e}}),Yf=/* */Object.freeze({events:function(e,o){var n=e.resetOnDom?[Ii(function(n,t){Bs(n,e,o)}),Ri(function(n,t){Ds(n,e,o)})]:[ga(e,o,Bs)];return co(n)}}),qf=/* */Object.freeze({memory:As,dataset:_s,manual:function(){return nu({readState:function(){}})},init:function(n){return n.store.manager.state(n)}}),Kf=[ht("initialValue"),ct("getFallbackEntry"),ct("getDataKey"),ct("setValue"),Qu("manager",{setValue:Ms,getValue:function(n,t,e){var o=t.store,r=o.getDataKey(n);return e.lookup(r).fold(function(){return o.getFallbackEntry(r)},function(n){return n})},onLoad:function(t,e,o){e.store.initialValue.each(function(n){Ms(t,e,o,n)})},onUnload:function(n,t,e){e.clear()},state:_s})],Jf=[ct("getValue"),St("setValue",Z),ht("initialValue"),Qu("manager",{setValue:function(n,t,e,o){t.store.setValue(n,o),t.onSetValue(n,o)},getValue:function(n,t,e){return t.store.getValue(n)},onLoad:function(t,e,n){e.store.initialValue.each(function(n){e.store.setValue(t,n)})},onUnload:Z,state:Zi.init})],$f=[ht("initialValue"),Qu("manager",{setValue:function(n,t,e,o){e.set(o),t.onSetValue(n,o)},getValue:function(n,t,e){return e.get()},onLoad:function(n,t,e){t.store.initialValue.each(function(n){e.isNotSet()&&e.set(n)})},onUnload:function(n,t,e){e.clear()},state:As})],Qf=[Ct("store",{mode:"memory"},it("mode",{memory:$f,manual:Jf,dataset:Kf})),qu("onSetValue"),St("resetOnDom",!1)],Zf=ya({fields:Qf,name:"representing",active:Yf,apis:Xf,extra:{setValueFrom:function(n,t){var e=Zf.getValue(t);Zf.setValue(n,e)}},state:qf}),nl=Fs,tl=Rs,el="placeholder",ol=Tn([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),rl=function(i,u,a,c){return Vs(i,0,a,c).fold(function(n,t){var e=t(u,a.config,a.validated),o=Nn(e,"components").getOr([]),r=B(o,function(n){return rl(i,u,n,c)});return[N(N({},e),{components:r})]},function(n,t){var e=t(u,a.config,a.validated);return a.validated.preprocess.getOr(l)(e)})},il=ol.single,ul=ol.multiple,al=nn(el),cl=Tn([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),sl=St("factory",{sketch:l}),fl=St("schema",[]),ll=ct("name"),dl=ce("pname","pname",In(function(n){return"<alloy."+Xo(n.name)+">"}),de()),ml=At("schema",function(){return[ht("preprocess")]}),gl=St("defaults",nn({})),pl=St("overrides",nn({})),hl=re([sl,fl,ll,dl,gl,pl]),vl=re([sl,fl,ll,gl,pl]),bl=re([sl,fl,ll,dl,gl,pl]),yl=re([sl,ml,ll,ct("unit"),dl,gl,pl]),xl=zs(cl.required,hl),wl=zs(cl.external,vl),Sl=zs(cl.optional,bl),Cl=zs(cl.group,yl),kl=nn("entirety"),Ol=/* */Object.freeze({required:xl,external:wl,optional:Sl,group:Cl,asNamedPart:Hs,name:Ps,asCommon:function(n){return n.fold(l,l,l,l)},original:kl}),El=function(n,t){return{uiType:al(),owner:n,name:t}},Tl=/* */Object.freeze({generate:js,generateOne:Us,schemas:Ws,names:Gs,substitutes:Xs,components:Ys,defaultUids:nf,defaultUidsSchema:tf,getAllParts:$s,getAllPartNames:Qs,getPart:qs,getPartOrDie:Ks,getParts:Js,getPartsOrDie:Zs}),Bl=function(n){return n.hasOwnProperty("uid")?n:N(N({},n),{uid:Yo("uid")})};function Dl(n){var t=ot("Sketcher for "+n.name,Kl,n),e=P(t.apis,$o),o=P(t.extraApis,function(n,t){return Ko(n,t)});return N(N({name:nn(t.name),partFields:nn([]),configFields:nn(t.configFields),sketch:function(n){return function(n,t,e,o){var r=Bl(o);return e(ef(n,t,r,[],[]),r)}(t.name,t.configFields,t.factory,n)}},e),o)}function Al(n){var t=ot("Sketcher for "+n.name,Jl,n),e=js(t.name,t.partFields),o=P(t.apis,$o),r=P(t.extraApis,function(n,t){return Ko(n,t)});return N(N({name:nn(t.name),partFields:nn(t.partFields),configFields:nn(t.configFields),sketch:function(n){return of(t.name,t.configFields,t.partFields,t.factory,n)},parts:nn(e)},o),r)}function _l(n){return"input"===Ke(n)&&"radio"!==zo(n,"type")||"textarea"===Ke(n)}function Ml(e,o,n,r){var t=zc(e.element(),"."+o.highlightClass);bn(t,function(t){x(r,function(n){return n.element()===t})||(dr(t,o.highlightClass),e.getSystem().getByDom(t).each(function(n){o.onDehighlight(e,n),oo(n,Mi())}))})}function Fl(n,t,e,o){Ml(n,t,0,[o]),nd(n,t,e,o)||(fr(o.element(),t.highlightClass),t.onHighlight(n,o),oo(o,_i()))}function Il(e,t,n,o){var r=zc(e.element(),"."+t.itemClass);return T(r,function(n){return mr(n,t.highlightClass)}).bind(function(n){var t=is(n,o,0,r.length-1);return e.getSystem().getByDom(r[t]).toOption()})}function Rl(n,t,e){var o=A(n.slice(0,t)),r=A(n.slice(t+1));return E(o.concat(r),e)}function Vl(n,t,e){var o=A(n.slice(0,t));return E(o,e)}function Nl(n,t,e){var o=n.slice(0,t),r=n.slice(t+1);return E(r.concat(o),e)}function Hl(n,t,e){var o=n.slice(t+1);return E(o,e)}function Pl(e){return function(n){var t=n.raw();return vn(e,t.which)}}function zl(n){return function(t){return D(n,function(n){return n(t)})}}function Ll(n){return!0===n.raw().shiftKey}function jl(n){return!0===n.raw().ctrlKey}function Ul(n,t){return{matches:n,classification:t}}function Wl(n,t,e){t.exists(function(t){return e.exists(function(n){return jt(n,t)})})||ro(n,Ti(),{prevFocus:t,newFocus:e})}function Gl(){function r(n){return Ca(n.element())}return{get:r,set:function(n,t){var e=r(n);n.getSystem().triggerFocus(t,n.element());var o=r(n);Wl(n,e,o)}}}function Xl(){function r(n){return ad.getHighlighted(n).map(function(n){return n.element()})}return{get:r,set:function(t,n){var e=r(t);t.getSystem().getByDom(n).fold(Z,function(n){ad.highlight(t,n)});var o=r(t);Wl(t,e,o)}}}var Yl,ql,Kl=qn([ct("name"),ct("factory"),ct("configFields"),St("apis",{}),St("extraApis",{})]),Jl=qn([ct("name"),ct("factory"),ct("configFields"),ct("partFields"),St("apis",{}),St("extraApis",{})]),$l=/* */Object.freeze({getCurrent:function(n,t,e){return t.find(n)}}),Ql=[ct("find")],Zl=ya({fields:Ql,name:"composing",apis:$l}),nd=function(n,t,e,o){return mr(o.element(),t.highlightClass)},td=function(n,t,e,o){var r=zc(n.element(),"."+t.itemClass);return on.from(r[o]).fold(function(){return an.error("No element found with index "+o)},n.getSystem().getByDom)},ed=function(t,n,e){return ku(t.element(),"."+n.itemClass).bind(function(n){return t.getSystem().getByDom(n).toOption()})},od=function(t,n,e){var o=zc(t.element(),"."+n.itemClass);return(0<o.length?on.some(o[o.length-1]):on.none()).bind(function(n){return t.getSystem().getByDom(n).toOption()})},rd=function(t,n,e){var o=zc(t.element(),"."+n.itemClass);return Bu(S(o,function(n){return t.getSystem().getByDom(n).toOption()}))},id=/* */Object.freeze({dehighlightAll:function(n,t,e){return Ml(n,t,0,[])},dehighlight:function(n,t,e,o){nd(n,t,e,o)&&(dr(o.element(),t.highlightClass),t.onDehighlight(n,o),oo(o,Mi()))},highlight:Fl,highlightFirst:function(t,e,o){ed(t,e).each(function(n){Fl(t,e,o,n)})},highlightLast:function(t,e,o){od(t,e).each(function(n){Fl(t,e,o,n)})},highlightAt:function(t,e,o,n){td(t,e,o,n).fold(function(n){throw new Error(n)},function(n){Fl(t,e,o,n)})},highlightBy:function(t,e,o,n){var r=rd(t,e);E(r,n).each(function(n){Fl(t,e,o,n)})},isHighlighted:nd,getHighlighted:function(t,n,e){return ku(t.element(),"."+n.highlightClass).bind(function(n){return t.getSystem().getByDom(n).toOption()})},getFirst:ed,getLast:od,getPrevious:function(n,t,e){return Il(n,t,0,-1)},getNext:function(n,t,e){return Il(n,t,0,1)},getCandidates:rd}),ud=[ct("highlightClass"),ct("itemClass"),qu("onHighlight"),qu("onDehighlight")],ad=ya({fields:ud,name:"highlighting",apis:id}),cd=b(Ll);(ql=Yl=Yl||{}).OnFocusMode="onFocus",ql.OnEnterOrSpaceMode="onEnterOrSpace",ql.OnApiMode="onApi";function sd(n,t,e,i,u){function a(t,e,n,o,r){return function(n,t){return E(n,function(n){return n.matches(t)}).map(function(n){return n.classification})}(n(t,e,o,r),e.event()).bind(function(n){return n(t,e,o,r)})}var o={schema:function(){return n.concat([St("focusManager",Gl()),Ct("focusInside","onFocus",Zn(function(n){return vn(["onFocus","onEnterOrSpace","onApi"],n)?an.value(n):an.error("Invalid value for focusInside")})),Qu("handler",o),Qu("state",t),Qu("sendFocusIn",u)])},processKey:a,toEvents:function(o,r){var n=o.focusInside!==Yl.OnFocusMode?on.none():u(o).map(function(e){return lo(ci(),function(n,t){e(n,o,r),t.stop()})});return co(n.toArray().concat([lo(ni(),function(n,t){a(n,t,e,o,r).fold(function(){!function(t,e){var n=Pl([32].concat([13]))(e.event());o.focusInside===Yl.OnEnterOrSpaceMode&&n&&Ut(t,e)&&u(o).each(function(n){n(t,o,r),e.stop()})}(n,t)},function(n){t.stop()})}),lo(ti(),function(n,t){a(n,t,i,o,r).each(function(n){t.stop()})})]))}};return o}function fd(n){function i(n,t){var e=n.visibilitySelector.bind(function(n){return Ou(t,n)}).getOr(t);return 0<su(e)}function t(t,e){(function(n,t){var e=zc(n.element(),t.selector),o=C(e,function(n){return i(t,n)});return on.from(o[t.firstTabstop])})(t,e).each(function(n){e.focusManager.set(t,n)})}function u(t,n,e,o,r){return r(n,e,function(n){return function(n,t){return i(n,t)&&n.useTabstopAt(t)}(o,n)}).fold(function(){return o.cyclic?on.some(!0):on.none()},function(n){return o.focusManager.set(t,n),on.some(!0)})}function a(t,n,e,o){var r=zc(t.element(),e.selector);return function(n,t){return t.focusManager.get(n).bind(function(n){return Ou(n,t.selector)})}(t,e).bind(function(n){return T(r,d(jt,n)).bind(function(n){return u(t,r,n,e,o)})})}var e=[ht("onEscape"),ht("onEnter"),St("selector",'[data-alloy-tabstop="true"]:not(:disabled)'),St("firstTabstop",0),St("useTabstopAt",nn(!0)),ht("visibilitySelector")].concat([n]),o=nn([Ul(zl([Ll,Pl([9])]),function(n,t,e,o){var r=e.cyclic?Rl:Vl;return a(n,0,e,r)}),Ul(Pl([9]),function(n,t,e,o){var r=e.cyclic?Nl:Hl;return a(n,0,e,r)}),Ul(Pl([27]),function(t,e,n,o){return n.onEscape.bind(function(n){return n(t,e)})}),Ul(zl([cd,Pl([13])]),function(t,e,n,o){return n.onEnter.bind(function(n){return n(t,e)})})]),r=nn([]);return sd(e,Zi.init,o,r,function(){return on.some(t)})}function ld(n,t,e){return _l(e)&&Pl([32])(t.event())?on.none():function(n,t,e){return uo(n,e,di()),on.some(!0)}(n,0,e)}function dd(n,t){return on.some(!0)}function md(n,t,e){return e.execute(n,t,n.element())}function gd(n){var e=ye(on.none());return nu({readState:function(){return e.get().map(function(n){return{numRows:n.numRows(),numColumns:n.numColumns()}}).getOr({numRows:"?",numColumns:"?"})},setGridSize:function(n,t){e.set(on.some({numRows:nn(n),numColumns:nn(t)}))},getNumRows:function(){return e.get().map(function(n){return n.numRows()})},getNumColumns:function(){return e.get().map(function(n){return n.numColumns()})}})}function pd(i){return function(n,t,e,o){var r=i(n.element());return Em(r,n,t,e,o)}}function hd(n,t){var e=Aa(n,t);return pd(e)}function vd(n,t){var e=Aa(t,n);return pd(e)}function bd(r){return function(n,t,e,o){return Em(r,n,t,e,o)}}function yd(n){return!function(n){return n.offsetWidth<=0&&n.offsetHeight<=0}(n.dom())}function xd(n,t,e){var o=d(jt,t),r=zc(n,e);return function(t,n){return T(t,n).map(function(n){return Am({index:n,candidates:t})})}(C(r,yd),o)}function wd(n,t){return T(n,function(n){return jt(t,n)})}function Sd(e,n,o,t){return t(Math.floor(n/o),n%o).bind(function(n){var t=n.row()*o+n.column();return 0<=t&&t<e.length?on.some(e[t]):on.none()})}function Cd(r,n,i,u,a){return Sd(r,n,u,function(n,t){var e=n===i-1?r.length-n*u:u,o=is(t,a,0,e-1);return on.some({row:nn(n),column:nn(o)})})}function kd(i,n,u,a,c){return Sd(i,n,a,function(n,t){var e=is(n,c,0,u-1),o=e===u-1?i.length-e*a:a,r=us(t,0,o-1);return on.some({row:nn(e),column:nn(r)})})}function Od(t,e,n){ku(t.element(),e.selector).each(function(n){e.focusManager.set(t,n)})}function Ed(r){return function(n,t,e,o){return xd(n,t,e.selector).bind(function(n){return r(n.candidates(),n.index(),o.getNumRows().getOr(e.initSize.numRows),o.getNumColumns().getOr(e.initSize.numColumns))})}}function Td(n,t,e,o){return e.captureTab?on.some(!0):on.none()}function Bd(n,t,e,r){var i=function(n,t,e){var o=is(t,r,0,e.length-1);return o===n?on.none():function(n){return"button"===Ke(n)&&"disabled"===zo(n,"disabled")}(e[o])?i(n,o,e):on.from(e[o])};return xd(n,e,t).bind(function(n){var t=n.index(),e=n.candidates();return i(t,t,e)})}function Dd(t,e,o){return function(n,t){return t.focusManager.get(n).bind(function(n){return Ou(n,t.selector)})}(t,o).bind(function(n){return o.execute(t,e,n)})}function Ad(t,e){e.getInitial(t).orThunk(function(){return ku(t.element(),e.selector)}).each(function(n){e.focusManager.set(t,n)})}function _d(n,t,e){return Bd(n,e.selector,t,-1)}function Md(n,t,e){return Bd(n,e.selector,t,1)}function Fd(o){return function(n,t,e){return o(n,t,e).bind(function(){return e.executeOnMove?Dd(n,t,e):on.some(!0)})}}function Id(n,t,e,o){return e.onEscape(n,t)}function Rd(n,t,e){return on.from(n[t]).bind(function(n){return on.from(n[e]).map(function(n){return jm({rowIndex:t,columnIndex:e,cell:n})})})}function Vd(n,t,e,o){var r=n[t].length,i=is(e,o,0,r-1);return Rd(n,t,i)}function Nd(n,t,e,o){var r=is(e,o,0,n.length-1),i=n[r].length,u=us(t,0,i-1);return Rd(n,r,u)}function Hd(n,t,e,o){var r=n[t].length,i=us(e+o,0,r-1);return Rd(n,t,i)}function Pd(n,t,e,o){var r=us(e+o,0,n.length-1),i=n[r].length,u=us(t,0,i-1);return Rd(n,r,u)}function zd(t,e){e.previousSelector(t).orThunk(function(){var n=e.selectors;return ku(t.element(),n.cell)}).each(function(n){e.focusManager.set(t,n)})}function Ld(n,t){return function(r,e,i){var u=i.cycles?n:t;return Ou(e,i.selectors.row).bind(function(n){var t=zc(n,i.selectors.cell);return wd(t,e).bind(function(e){var o=zc(r,i.selectors.row);return wd(o,n).bind(function(n){var t=function(n,t){return S(n,function(n){return zc(n,t.selectors.cell)})}(o,i);return u(t,n,e).map(function(n){return n.cell()})})})})}}function jd(t,e,o){return o.focusManager.get(t).bind(function(n){return o.execute(t,e,n)})}function Ud(t,e){ku(t.element(),e.selector).each(function(n){e.focusManager.set(t,n)})}function Wd(n,t,e){return Bd(n,e.selector,t,-1)}function Gd(n,t,e){return Bd(n,e.selector,t,1)}function Xd(n,t,e,o){var r=n.getSystem().build(o);Ff(n,r,e)}function Yd(n,t,e,o){var r=dg(n);E(r,function(n){return jt(o.element(),n.element())}).each(bs)}function qd(t,n,e,o,r){var i=dg(t);return on.from(i[o]).map(function(n){return Yd(t,0,0,n),r.each(function(n){Xd(t,0,function(n,t){!function(n,t,e){Do(n,e).fold(function(){Hi(n,t)},function(n){Ao(n,t)})}(n,t,o)},n)}),n})}function Kd(n,t){return{key:n,value:{config:{},me:function(n,t){var e=co(t);return ya({fields:[ct("enabled")],name:n,active:{events:nn(e)}})}(n,t),configAsRaw:nn({}),initialConfig:{},state:Zi}}}function Jd(n,t){t.ignore||(wa(n.element()),t.onFocus(n))}function $d(n,t,e){var o=t.aria;o.update(n,o,e.get())}function Qd(t,n,e){n.toggleClass.each(function(n){e.get()?fr(t.element(),n):dr(t.element(),n)})}function Zd(n,t,e){bg(n,t,e,!e.get())}function nm(n,t,e){e.set(!0),Qd(n,t,e),$d(n,t,e)}function tm(n,t,e){e.set(!1),Qd(n,t,e),$d(n,t,e)}function em(n,t,e){bg(n,t,e,t.selected)}function om(){function n(n,t){t.stop(),io(n)}return[lo(ri(),n),lo(gi(),n),vo(Ur()),vo(Yr())]}function rm(n){return co(H([n.map(function(e){return Ni(function(n,t){e(n),t.stop()})}).toArray(),om()]))}function im(n){(Ca(n.element()).isNone()||vg.isFocused(n))&&(vg.isFocused(n)||vg.focus(n),ro(n,kg,{item:n}))}function um(n){ro(n,Og,{item:n})}function am(n,t){var e={};Cn(n,function(n,t){bn(n,function(n){e[n]=t})});var o=t,r=function(n){return kn(n,function(n,t){return{k:n,v:t}})}(t),i=P(r,function(n,t){return[t].concat(Ng(e,o,r,t))});return P(e,function(n){return Nn(i,n).getOr([n])})}function cm(n){return n.x()}function sm(n,t){return n.x()+n.width()/2-t.width()/2}function fm(n,t){return n.x()+n.width()-t.width()}function lm(n){return n.y()}function dm(n,t){return n.y()+n.height()-t.height()}function mm(n,t,e){return Ya(cm(n),dm(n,t),e.innerSoutheast(),Ka(),"layout-se")}function gm(n,t,e){return Ya(fm(n,t),dm(n,t),e.innerSouthwest(),Ja(),"layout-sw")}function pm(n,t,e){return Ya(cm(n),lm(n),e.innerNortheast(),$a(),"layout-ne")}function hm(n,t,e){return Ya(fm(n,t),lm(n),e.innerNorthwest(),Qa(),"layout-nw")}function vm(n){var t=function e(n){return n.uid!==undefined}(n)&&$(n,"uid")?n.uid:Yo("memento");return{get:function(n){return n.getSystem().getByUid(t).getOrDie()},getOpt:function(n){return n.getSystem().getByUid(t).toOption()},asSpec:function(){return N(N({},n),{uid:t})}}}function bm(n){return on.from(n()["temporary-placeholder"]).getOr("!not found!")}function ym(n,t){return on.from(t()[n]).getOrThunk(function(){return bm(t)})}var xm,wm=fd(At("cyclic",nn(!1))),Sm=fd(At("cyclic",nn(!0))),Cm=[St("execute",ld),St("useSpace",!1),St("useEnter",!0),St("useControlEnter",!1),St("useDown",!1)],km=sd(Cm,Zi.init,function(n,t,e,o){var r=e.useSpace&&!_l(n.element())?[32]:[],i=e.useEnter?[13]:[],u=e.useDown?[40]:[],a=r.concat(i).concat(u);return[Ul(Pl(a),md)].concat(e.useControlEnter?[Ul(zl([jl,Pl([13])]),md)]:[])},function(n,t,e,o){return e.useSpace&&!_l(n.element())?[Ul(Pl([32]),dd)]:[]},function(){return on.none()}),Om=/* */Object.freeze({flatgrid:gd,init:function(n){return n.state(n)}}),Em=function(t,e,n,o,r){return o.focusManager.get(e).bind(function(n){return t(e.element(),n,o,r)}).map(function(n){return o.focusManager.set(e,n),!0})},Tm=bd,Bm=bd,Dm=bd,Am=So(["index","candidates"],[]),_m=[ct("selector"),St("execute",ld),Ku("onEscape"),St("captureTab",!1),Xa()],Mm=Ed(function(n,t,e,o){return Cd(n,t,e,o,-1)}),Fm=Ed(function(n,t,e,o){return Cd(n,t,e,o,1)}),Im=Ed(function(n,t,e,o){return kd(n,t,e,o,-1)}),Rm=Ed(function(n,t,e,o){return kd(n,t,e,o,1)}),Vm=nn([Ul(Pl([37]),hd(Mm,Fm)),Ul(Pl([39]),vd(Mm,Fm)),Ul(Pl([38]),Tm(Im)),Ul(Pl([40]),Bm(Rm)),Ul(zl([Ll,Pl([9])]),Td),Ul(zl([cd,Pl([9])]),Td),Ul(Pl([27]),function(n,t,e,o){return e.onEscape(n,t)}),Ul(Pl([32].concat([13])),function(t,e,o,n){return function(n,t){return t.focusManager.get(n).bind(function(n){return Ou(n,t.selector)})}(t,o).bind(function(n){return o.execute(t,e,n)})})]),Nm=nn([Ul(Pl([32]),dd)]),Hm=sd(_m,gd,Vm,Nm,function(){return on.some(Od)}),Pm=[ct("selector"),St("getInitial",on.none),St("execute",ld),Ku("onEscape"),St("executeOnMove",!1),St("allowVertical",!0)],zm=nn([Ul(Pl([32]),dd)]),Lm=sd(Pm,Zi.init,function(n,t,e,o){var r=[37].concat(e.allowVertical?[38]:[]),i=[39].concat(e.allowVertical?[40]:[]);return[Ul(Pl(r),Fd(hd(_d,Md))),Ul(Pl(i),Fd(vd(_d,Md))),Ul(Pl([13]),Dd),Ul(Pl([32]),Dd),Ul(Pl([27]),Id)]},zm,function(){return on.some(Ad)}),jm=So(["rowIndex","columnIndex","cell"],[]),Um=[mt("selectors",[ct("row"),ct("cell")]),St("cycles",!0),St("previousSelector",on.none),St("execute",ld)],Wm=Ld(function(n,t,e){return Vd(n,t,e,-1)},function(n,t,e){return Hd(n,t,e,-1)}),Gm=Ld(function(n,t,e){return Vd(n,t,e,1)},function(n,t,e){return Hd(n,t,e,1)}),Xm=Ld(function(n,t,e){return Nd(n,e,t,-1)},function(n,t,e){return Pd(n,e,t,-1)}),Ym=Ld(function(n,t,e){return Nd(n,e,t,1)},function(n,t,e){return Pd(n,e,t,1)}),qm=nn([Ul(Pl([37]),hd(Wm,Gm)),Ul(Pl([39]),vd(Wm,Gm)),Ul(Pl([38]),Tm(Xm)),Ul(Pl([40]),Bm(Ym)),Ul(Pl([32].concat([13])),function(t,e,o){return Ca(t.element()).bind(function(n){return o.execute(t,e,n)})})]),Km=nn([Ul(Pl([32]),dd)]),Jm=sd(Um,Zi.init,qm,Km,function(){return on.some(zd)}),$m=[ct("selector"),St("execute",ld),St("moveOnTab",!1)],Qm=nn([Ul(Pl([38]),Dm(Wd)),Ul(Pl([40]),Dm(Gd)),Ul(zl([Ll,Pl([9])]),function(n,t,e){return e.moveOnTab?Dm(Wd)(n,t,e):on.none()}),Ul(zl([cd,Pl([9])]),function(n,t,e){return e.moveOnTab?Dm(Gd)(n,t,e):on.none()}),Ul(Pl([13]),jd),Ul(Pl([32]),jd)]),Zm=nn([Ul(Pl([32]),dd)]),ng=sd($m,Zi.init,Qm,Zm,function(){return on.some(Ud)}),tg=[Ku("onSpace"),Ku("onEnter"),Ku("onShiftEnter"),Ku("onLeft"),Ku("onRight"),Ku("onTab"),Ku("onShiftTab"),Ku("onUp"),Ku("onDown"),Ku("onEscape"),St("stopSpaceKeyup",!1),ht("focusIn")],eg=sd(tg,Zi.init,function(n,t,e){return[Ul(Pl([32]),e.onSpace),Ul(zl([cd,Pl([13])]),e.onEnter),Ul(zl([Ll,Pl([13])]),e.onShiftEnter),Ul(zl([Ll,Pl([9])]),e.onShiftTab),Ul(zl([cd,Pl([9])]),e.onTab),Ul(Pl([38]),e.onUp),Ul(Pl([40]),e.onDown),Ul(Pl([37]),e.onLeft),Ul(Pl([39]),e.onRight),Ul(Pl([32]),e.onSpace),Ul(Pl([27]),e.onEscape)]},function(n,t,e){return e.stopSpaceKeyup?[Ul(Pl([32]),dd)]:[]},function(n){return n.focusIn}),og=wm.schema(),rg=Sm.schema(),ig=Lm.schema(),ug=Hm.schema(),ag=Jm.schema(),cg=km.schema(),sg=ng.schema(),fg=eg.schema(),lg=xa({branchKey:"mode",branches:/* */Object.freeze({acyclic:og,cyclic:rg,flow:ig,flatgrid:ug,matrix:ag,execution:cg,menu:sg,special:fg}),name:"keying",active:{events:function(n,t){return n.handler.toEvents(n,t)}},apis:{focusIn:function(t,e,o){e.sendFocusIn(e).fold(function(){t.getSystem().triggerFocus(t.element(),t.element())},function(n){n(t,e,o)})},setGridSize:function(n,t,e,o,r){$(e,"setGridSize")?e.setGridSize(o,r):v.console.error("Layout does not support setGridSize")}},state:Om}),dg=function(n,t){return n.components()},mg=ya({fields:[],name:"replacing",apis:/* */Object.freeze({append:function(n,t,e,o){Xd(n,0,Hi,o)},prepend:function(n,t,e,o){Xd(n,0,Mo,o)},remove:Yd,replaceAt:qd,replaceBy:function(t,n,e,o,r){var i=dg(t);return T(i,o).bind(function(n){return qd(t,0,0,n,r)})},set:function(t,n,e,o){ka(function(){var n=S(o,t.getSystem().build);ps(t,n)},t.element())},contents:dg})}),gg=/* */Object.freeze({focus:Jd,blur:function(n,t){t.ignore||function(n){n.dom().blur()}(n.element())},isFocused:function(n){return function(n){var t=Co(n).dom();return n.dom()===t.activeElement}(n.element())}}),pg=/* */Object.freeze({exhibit:function(n,t){var e=t.ignore?{}:{attributes:{tabindex:"-1"}};return Zo(e)},events:function(e){return co([lo(ci(),function(n,t){Jd(n,e),t.stop()})].concat(e.stopMousedown?[lo(Yr(),function(n,t){t.event().prevent()})]:[]))}}),hg=[qu("onFocus"),St("stopMousedown",!1),St("ignore",!1)],vg=ya({fields:hg,name:"focusing",active:pg,apis:gg}),bg=function(n,t,e,o){(o?nm:tm)(n,t,e)},yg=/* */Object.freeze({onLoad:em,toggle:Zd,isOn:function(n,t,e){return e.get()},on:nm,off:tm,set:bg}),xg=/* */Object.freeze({exhibit:function(n,t,e){return Zo({})},events:function(n,t){var e=function(t,e,o){return Ni(function(n){o(n,t,e)})}(n,t,Zd),o=ga(n,t,em);return co(H([n.toggleOnExecute?[e]:[],[o]]))}}),wg=function(n,t,e){Po(n.element(),"aria-expanded",e)},Sg=[St("selected",!1),ht("toggleClass"),St("toggleOnExecute",!0),Ct("aria",{mode:"none"},it("mode",{pressed:[St("syncWithExpanded",!1),Qu("update",function(n,t,e){Po(n.element(),"aria-pressed",e),t.syncWithExpanded&&wg(n,t,e)})],checked:[Qu("update",function(n,t,e){Po(n.element(),"aria-checked",e)})],expanded:[Qu("update",wg)],selected:[Qu("update",function(n,t,e){Po(n.element(),"aria-selected",e)})],none:[Qu("update",Z)]}))],Cg=ya({fields:Sg,name:"toggling",active:xg,apis:yg,state:(xm=!1,{init:function(){var t=ye(xm);return{get:function(){return t.get()},set:function(n){return t.set(n)},clear:function(){return t.set(xm)},readState:function(){return t.get()}}}})}),kg="alloy.item-hover",Og="alloy.item-focus",Eg=nn(kg),Tg=nn(Og),Bg=[ct("data"),ct("components"),ct("dom"),St("hasSubmenu",!1),ht("toggling"),nl("itemBehaviours",[Cg,vg,lg,Zf]),St("ignoreFocus",!1),St("domModification",{}),Qu("builder",function(n){return{dom:n.dom,domModification:N(N({},n.domModification),{attributes:N(N(N({role:n.toggling.isSome()?"menuitemcheckbox":"menuitem"},n.domModification.attributes),{"aria-haspopup":n.hasSubmenu}),n.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:tl(n.itemBehaviours,[n.toggling.fold(Cg.revoke,function(n){return Cg.config(N({aria:{mode:"checked"}},n))}),vg.config({ignore:n.ignoreFocus,stopMousedown:n.ignoreFocus,onFocus:function(n){um(n)}}),lg.config({mode:"execution"}),Zf.config({store:{mode:"memory",initialValue:n.data}}),Kd("item-type-events",g(om(),[lo($r(),im),lo(mi(),vg.focus)]))]),components:n.components,eventOrder:n.eventOrder}}),St("eventOrder",{})],Dg=[ct("dom"),ct("components"),Qu("builder",function(n){return{dom:n.dom,components:n.components,events:co([function(n){return lo(n,function(n,t){t.stop()})}(mi())])}})],Ag=nn([xl({name:"widget",overrides:function(t){return{behaviours:ba([Zf.config({store:{mode:"manual",getValue:function(n){return t.data},setValue:function(){}}})])}}})]),_g=[ct("uid"),ct("data"),ct("components"),ct("dom"),St("autofocus",!1),St("ignoreFocus",!1),nl("widgetBehaviours",[Zf,vg,lg]),St("domModification",{}),tf(Ag()),Qu("builder",function(e){function o(n){return qs(n,e,"widget").map(function(n){return lg.focusIn(n),n})}function n(n,t){return _l(t.event().target())||e.autofocus&&t.setSource(n.element()),on.none()}var t=Xs(0,e,Ag()),r=Ys("item-widget",e,t.internals());return{dom:e.dom,components:r,domModification:e.domModification,events:co([Ni(function(n,t){o(n).each(function(n){t.stop()})}),lo($r(),im),lo(mi(),function(n,t){e.autofocus?o(n):vg.focus(n)})]),behaviours:tl(e.widgetBehaviours,[Zf.config({store:{mode:"memory",initialValue:e.data}}),vg.config({ignore:e.ignoreFocus,onFocus:function(n){um(n)}}),lg.config({mode:"special",focusIn:e.autofocus?function(n){o(n)}:cc(),onLeft:n,onRight:n,onEscape:function(n,t){return vg.isFocused(n)||e.autofocus?(e.autofocus&&t.setSource(n.element()),on.none()):(vg.focus(n),on.some(!0))}})])}})],Mg=it("type",{widget:_g,item:Bg,separator:Dg}),Fg=nn([Cl({factory:{sketch:function(n){var t=ot("menu.spec item",Mg,n);return t.builder(t)}},name:"items",unit:"item",defaults:function(n,t){return t.hasOwnProperty("uid")?t:N(N({},t),{uid:Yo("item")})},overrides:function(n,t){return{type:t.type,ignoreFocus:n.fakeFocus,domModification:{classes:[n.markers.item]}}}})]),Ig=nn([ct("value"),ct("items"),ct("dom"),ct("components"),St("eventOrder",{}),Fs("menuBehaviours",[ad,Zf,Zl,lg]),Ct("movement",{mode:"menu",moveOnTab:!0},it("mode",{grid:[Xa(),Qu("config",function(n,t){return{mode:"flatgrid",selector:"."+n.markers.item,initSize:{numColumns:t.initSize.numColumns,numRows:t.initSize.numRows},focusManager:n.focusManager}})],matrix:[Qu("config",function(n,t){return{mode:"matrix",selectors:{row:t.rowSelector,cell:"."+n.markers.item},focusManager:n.focusManager}}),ct("rowSelector")],menu:[St("moveOnTab",!0),Qu("config",function(n,t){return{mode:"menu",selector:"."+n.markers.item,moveOnTab:t.moveOnTab,focusManager:n.focusManager}})]})),st("markers",Wa()),St("fakeFocus",!1),St("focusManager",Gl()),qu("onHighlight")]),Rg=nn("alloy.menu-focus"),Vg=Al({name:"Menu",configFields:Ig(),partFields:Fg(),factory:function(n,t,e,o){return{uid:n.uid,dom:n.dom,markers:n.markers,behaviours:Rs(n.menuBehaviours,[ad.config({highlightClass:n.markers.selectedItem,itemClass:n.markers.item,onHighlight:n.onHighlight}),Zf.config({store:{mode:"memory",initialValue:n.value}}),Zl.config({find:on.some}),lg.config(n.movement.config(n,n.movement))]),events:co([lo(Tg(),function(t,e){var n=e.event();t.getSystem().getByDom(n.target()).each(function(n){ad.highlight(t,n),e.stop(),ro(t,Rg(),{menu:t,item:n})})}),lo(Eg(),function(n,t){var e=t.event().item();ad.highlight(n,e)})]),components:t,eventOrder:n.eventOrder,domModification:{attributes:{role:"menu"}}}}}),Ng=function(e,o,r,n){return Nn(r,n).bind(function(n){return Nn(e,n).bind(function(n){var t=Ng(e,o,r,n);return on.some([n].concat(t))})}).getOr([])},Hg=function(n){return"prepared"===n.type?on.some(n.menu):on.none()},Pg={init:function(){function r(n,e,o){return f(n).bind(function(t){return function(e){return I(i.get(),function(n,t){return n===e})}(n).bind(function(n){return e(n).map(function(n){return{triggeredMenu:t,triggeringItem:n,triggeringPath:o}})})})}var i=ye({}),u=ye({}),a=ye({}),c=ye(on.none()),s=ye({}),f=function(n){return t(n).bind(Hg)},t=function(n){return Nn(u.get(),n)},e=function(n){return Nn(i.get(),n)};return{setMenuBuilt:function(n,t){var e;u.set(N(N({},u.get()),((e={})[n]={type:"prepared",menu:t},e)))},setContents:function(n,t,e,o){c.set(on.some(n)),i.set(e),u.set(t),s.set(o);var r=am(o,e);a.set(r)},expand:function(e){return Nn(i.get(),e).map(function(n){var t=Nn(a.get(),e).getOr([]);return[n].concat(t)})},refresh:function(n){return Nn(a.get(),n)},collapse:function(n){return Nn(a.get(),n).bind(function(n){return 1<n.length?on.some(n.slice(1)):on.none()})},lookupMenu:t,lookupItem:e,otherMenus:function(n){var t=s.get();return _(wn(t),n)},getPrimary:function(){return c.get().bind(f)},getMenus:function(){return u.get()},clear:function(){i.set({}),u.set({}),a.set({}),c.set(on.none())},isClear:function(){return c.get().isNone()},getTriggeringPath:function(n,o){var t=C(e(n).toArray(),function(n){return f(n).isSome()});return Nn(a.get(),n).bind(function(n){var e=A(t.concat(n));return function(n){for(var t=[],e=0;e<n.length;e++){var o=n[e];if(!o.isSome())return on.none();t.push(o.getOrDie())}return on.some(t)}(B(e,function(n,t){return r(n,o,e.slice(0,t+1)).fold(function(){return c.get().is(n)?[]:[on.none()]},function(n){return[on.some(n)]})}))})}}},extractPreparedMenu:Hg},zg=nn("collapse-item"),Lg=Dl({name:"TieredMenu",configFields:[$u("onExecute"),$u("onEscape"),Ju("onOpenMenu"),Ju("onOpenSubmenu"),Ju("onRepositionMenu"),qu("onCollapseMenu"),St("highlightImmediately",!0),mt("data",[ct("primary"),ct("menus"),ct("expansions")]),St("fakeFocus",!1),qu("onHighlight"),qu("onHover"),Gu(),ct("dom"),St("navigateOnHover",!0),St("stayInDom",!1),Fs("tmenuBehaviours",[lg,ad,Zl,mg]),St("eventOrder",{})],apis:{collapseMenu:function(n,t){n.collapseMenu(t)},highlightPrimary:function(n,t){n.highlightPrimary(t)},repositionMenus:function(n,t){n.repositionMenus(t)}},factory:function(a,n){function e(n){var t=function(o,r,n){return P(n,function(n,t){function e(){return Vg.sketch(N(N({dom:n.dom},n),{value:t,items:n.items,markers:a.markers,fakeFocus:a.fakeFocus,onHighlight:a.onHighlight,focusManager:a.fakeFocus?Xl():Gl()}))}return t===r?{type:"prepared",menu:o.getSystem().build(e())}:{type:"notbuilt",nbMenu:e}})}(n,a.data.primary,a.data.menus),e=o();return g.setContents(a.data.primary,t,a.data.expansions,e),g.getPrimary()}function c(n){return Zf.getValue(n).value}function u(t,n){ad.highlight(t,n),ad.getHighlighted(n).orThunk(function(){return ad.getFirst(n)}).each(function(n){uo(t,n.element(),mi())})}function s(t,n){return Bu(S(n,function(n){return t.lookupMenu(n).bind(function(n){return"prepared"===n.type?on.some(n.menu):on.none()})}))}function f(t,n,e){var o=s(n,n.otherMenus(e));bn(o,function(n){pr(n.element(),[a.markers.backgroundMenu]),a.stayInDom||mg.remove(t,n)})}function l(n,o){var t=function(o){return r.get().getOrThunk(function(){var e={},n=zc(o.element(),"."+a.markers.item),t=C(n,function(n){return"true"===zo(n,"aria-haspopup")});return bn(t,function(n){o.getSystem().getByDom(n).each(function(n){var t=c(n);e[t]=n})}),r.set(on.some(e)),e})}(n);Cn(t,function(n,t){var e=vn(o,t);Po(n.element(),"aria-expanded",e)})}function d(o,r,i){return on.from(i[0]).bind(function(n){return r.lookupMenu(n).bind(function(n){if("notbuilt"===n.type)return on.none();var t=n.menu,e=s(r,i.slice(1));return bn(e,function(n){fr(n.element(),a.markers.backgroundMenu)}),$e(t.element())||mg.append(o,au(t)),pr(t.element(),[a.markers.backgroundMenu]),u(o,t),f(o,r,i),on.some(t)})})}var m,t,r=ye(on.none()),g=Pg.init(),o=function(n){return P(a.data.menus,function(n,t){return B(n.items,function(n){return"separator"===n.type?[]:[n.data.value]})})};(t=m=m||{})[t.HighlightSubmenu=0]="HighlightSubmenu",t[t.HighlightParent=1]="HighlightParent";function i(r,i,u){void 0===u&&(u=m.HighlightSubmenu);var n=c(i);return g.expand(n).bind(function(o){return l(r,o),on.from(o[0]).bind(function(e){return g.lookupMenu(e).bind(function(n){var t=function(n,t,e){if("notbuilt"!==e.type)return e.menu;var o=n.getSystem().build(e.nbMenu());return g.setMenuBuilt(t,o),o}(r,e,n);return $e(t.element())||mg.append(r,au(t)),a.onOpenSubmenu(r,i,t,A(o)),u===m.HighlightSubmenu?(ad.highlightFirst(t),d(r,g,o)):(ad.dehighlightAll(t),on.some(i))})})})}function p(t,e){var n=c(e);return g.collapse(n).bind(function(n){return l(t,n),d(t,g,n).map(function(n){return a.onCollapseMenu(t,e,n),n})})}function h(e){return function(t,n){return Ou(n.getSource(),"."+a.markers.item).bind(function(n){return t.getSystem().getByDom(n).toOption().bind(function(n){return e(t,n).map(function(){return!0})})})}}function v(n){return ad.getHighlighted(n).bind(ad.getHighlighted)}var b=co([lo(Rg(),function(e,o){var n=o.event().item();g.lookupItem(c(n)).each(function(){var n=o.event().menu();ad.highlight(e,n);var t=c(o.event().item());g.refresh(t).each(function(n){return f(e,g,n)})})}),Ni(function(t,n){var e=n.event().target();t.getSystem().getByDom(e).each(function(n){0===c(n).indexOf("collapse-item")&&p(t,n),i(t,n,m.HighlightSubmenu).fold(function(){a.onExecute(t,n)},function(){})})}),Ii(function(t,n){e(t).each(function(n){mg.append(t,au(n)),a.onOpenMenu(t,n),a.highlightImmediately&&u(t,n)})})].concat(a.navigateOnHover?[lo(Eg(),function(n,t){var e=t.event().item();!function(t,n){var e=c(n);g.refresh(e).bind(function(n){return l(t,n),d(t,g,n)})}(n,e),i(n,e,m.HighlightParent),a.onHover(n,e)})]:[])),y={collapseMenu:function(t){v(t).each(function(n){p(t,n)})},highlightPrimary:function(t){g.getPrimary().each(function(n){u(t,n)})},repositionMenus:function(o){g.getPrimary().bind(function(t){return v(o).bind(function(n){var t=c(n),e=R(g.getMenus()),o=Bu(S(e,Pg.extractPreparedMenu));return g.getTriggeringPath(t,function(n){return function(n,t,e){return Du(t,function(n){if(!n.getSystem().isConnected())return on.none();var t=ad.getCandidates(n);return E(t,function(n){return c(n)===e})})}(0,o,n)})}).map(function(n){return{primary:t,triggeringPath:n}})}).fold(function(){(function(n){return on.from(n.components()[0]).filter(function(n){return"menu"===zo(n.element(),"role")})})(o).each(function(n){a.onRepositionMenu(o,n,[])})},function(n){var t=n.primary,e=n.triggeringPath;a.onRepositionMenu(o,t,e)})}};return{uid:a.uid,dom:a.dom,markers:a.markers,behaviours:Rs(a.tmenuBehaviours,[lg.config({mode:"special",onRight:h(function(n,t){return _l(t.element())?on.none():i(n,t,m.HighlightSubmenu)}),onLeft:h(function(n,t){return _l(t.element())?on.none():p(n,t)}),onEscape:h(function(n,t){return p(n,t).orThunk(function(){return a.onEscape(n,t).map(function(){return n})})}),focusIn:function(t,n){g.getPrimary().each(function(n){uo(t,n.element(),mi())})}}),ad.config({highlightClass:a.markers.selectedMenu,itemClass:a.markers.menu}),Zl.config({find:function(n){return ad.getHighlighted(n)}}),mg.config({})]),eventOrder:a.eventOrder,apis:y,events:b}},extraApis:{tieredData:function(n,t,e){return{primary:n,menus:t,expansions:e}},singleData:function(n,t){return{primary:n,menus:q(n,t),expansions:{}}},collapseItem:function(n){return{value:Xo(zg()),meta:{text:n}}}}}),jg=Dl({name:"InlineView",configFields:[ct("lazySink"),qu("onShow"),qu("onHide"),xt("onEscape"),Fs("inlineBehaviours",[zf,Zf,lc]),wt("fireDismissalEventInstead",[St("event",Oi())]),wt("fireRepositionEventInstead",[St("event",Ei())]),St("getRelated",on.none),St("eventOrder",on.none)],factory:function(i,n){function t(e){zf.isOpen(e)&&Zf.getValue(e).each(function(n){switch(n.mode){case"menu":zf.getState(e).each(function(n){Lg.repositionMenus(n)});break;case"position":var t=i.lazySink(e).getOrDie();Af.positionWithinBounds(t,n.anchor,e,n.getBounds())}})}var o=function(n,t,e,o){r(n,t,e,function(){return o.map(function(n){return xu(n)})})},r=function(n,t,e,o){var r=i.lazySink(n).getOrDie();zf.openWhileCloaked(n,e,function(){return Af.positionWithinBounds(r,t,n,o())}),Zf.setValue(n,on.some({mode:"position",anchor:t,getBounds:o}))},u=function(n,t,e,o){var r=function(n,t,r,e,i){function u(){return n.lazySink(t)}function a(n){return function(n){return 2===n.length}(n)?o:{}}var o="horizontal"===e.type?{layouts:{onLtr:function(){return da()},onRtl:function(){return ma()}}}:{};return Lg.sketch({dom:{tag:"div"},data:e.data,markers:e.menu.markers,onEscape:function(){return zf.close(t),n.onEscape.map(function(n){return n(t)}),on.some(!0)},onExecute:function(){return on.some(!0)},onOpenMenu:function(n,t){Af.positionWithinBounds(u().getOrDie(),r,t,i())},onOpenSubmenu:function(n,t,e,o){var r=u().getOrDie();Af.position(r,N({anchor:"submenu",item:t},a(o)),e)},onRepositionMenu:function(n,t,e){var o=u().getOrDie();Af.positionWithinBounds(o,r,t,i()),bn(e,function(n){var t=a(n.triggeringPath);Af.position(o,N({anchor:"submenu",item:n.triggeringItem},t),n.triggeredMenu)})}})}(i,n,t,e,o);zf.open(n,r),Zf.setValue(n,on.some({mode:"menu",menu:r}))},e={setContent:function(n,t){zf.setContent(n,t)},showAt:function(n,t,e){o(n,t,e,on.none())},showWithin:o,showWithinBounds:r,showMenuAt:function(n,t,e){u(n,t,e,function(){return on.none()})},showMenuWithinBounds:u,hide:function(n){Zf.setValue(n,on.none()),zf.close(n)},getContent:function(n){return zf.getState(n)},reposition:t,isOpen:zf.isOpen};return{uid:i.uid,dom:i.dom,behaviours:Rs(i.inlineBehaviours,[zf.config({isPartOf:function(n,t,e){return Lu(t,e)||function(n,t){return i.getRelated(n).exists(function(n){return Lu(n,t)})}(n,e)},getAttachPoint:function(n){return i.lazySink(n).getOrDie()},onOpen:function(n){i.onShow(n)},onClose:function(n){i.onHide(n)}}),Zf.config({store:{mode:"memory",initialValue:on.none()}}),lc.config({channels:N(N({},Es(N({isExtraPart:nn(!1)},i.fireDismissalEventInstead.map(function(n){return{fireEventInstead:{event:n.event}}}).getOr({})))),Ts(N(N({isExtraPart:nn(!1)},i.fireRepositionEventInstead.map(function(n){return{fireEventInstead:{event:n.event}}}).getOr({})),{doReposition:t})))})]),eventOrder:i.eventOrder,apis:e}},apis:{showAt:function(n,t,e,o){n.showAt(t,e,o)},showWithin:function(n,t,e,o,r){n.showWithin(t,e,o,r)},showWithinBounds:function(n,t,e,o,r){n.showWithinBounds(t,e,o,r)},showMenuAt:function(n,t,e,o){n.showMenuAt(t,e,o)},showMenuWithinBounds:function(n,t,e,o,r){n.showMenuWithinBounds(t,e,o,r)},hide:function(n,t){n.hide(t)},isOpen:function(n,t){return n.isOpen(t)},getContent:function(n,t){return n.getContent(t)},setContent:function(n,t,e){n.setContent(t,e)},reposition:function(n,t){n.reposition(t)}}}),Ug=function(n,t,e){return Ya(sm(n,t),lm(n),e.innerNorth(),nc(),"layout-n")},Wg=function(n,t,e){return Ya(sm(n,t),dm(n,t),e.innerSouth(),Za(),"layout-s")},Gg=Dl({name:"Button",factory:function(n){function e(t){return Nn(n.dom,"attributes").bind(function(n){return Nn(n,t)})}var t=rm(n.action),o=n.dom.tag;return{uid:n.uid,dom:n.dom,components:n.components,events:t,behaviours:tl(n.buttonBehaviours,[vg.config({}),lg.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==o)return{role:e("role").getOr("button")};var n=e("type").getOr("button"),t=e("role").map(function(n){return{role:n}}).getOr({});return N({type:n},t)}()},eventOrder:n.eventOrder}},configFields:[St("uid",undefined),ct("dom"),St("components",[]),nl("buttonBehaviours",[vg,lg]),ht("action"),ht("role"),St("eventOrder",{})]}),Xg={success:"checkmark",error:"warning",err:"error",warning:"warning",warn:"warning",info:"info"},Yg=Dl({name:"Notification",factory:function(t){function e(n){return{dom:{tag:"div",classes:["tox-bar"],attributes:{style:"width: "+n+"%"}}}}function o(n){return{dom:{tag:"div",classes:["tox-text"],innerHtml:n+"%"}}}var r=vm({dom:{tag:"p",innerHtml:t.translationProvider(t.text)},behaviours:ba([mg.config({})])}),i=vm({dom:{tag:"div",classes:t.progress?["tox-progress-bar","tox-progress-indicator"]:["tox-progress-bar"]},components:[{dom:{tag:"div",classes:["tox-bar-container"]},components:[e(0)]},o(0)],behaviours:ba([mg.config({})])}),n={updateProgress:function(n,t){n.getSystem().isConnected()&&i.getOpt(n).each(function(n){mg.set(n,[{dom:{tag:"div",classes:["tox-bar-container"]},components:[e(t)]},o(t)])})},updateText:function(n,t){if(n.getSystem().isConnected()){var e=r.get(n);mg.set(e,[Ir(t)])}}},u=H([t.icon.toArray(),t.level.toArray(),t.level.bind(function(n){return on.from(Xg[n])}).toArray()]);return{uid:t.uid,dom:{tag:"div",attributes:{role:"alert"},classes:t.level.map(function(n){return["tox-notification","tox-notification--in","tox-notification--"+n]}).getOr(["tox-notification","tox-notification--in"])},components:[{dom:{tag:"div",classes:["tox-notification__icon"],innerHtml:function(n,t){return Du(n,function(n){return on.from(t()[n])}).getOrThunk(function(){return bm(t)})}(u,t.iconProvider)}},{dom:{tag:"div",classes:["tox-notification__body"]},components:[r.asSpec()],behaviours:ba([mg.config({})])}].concat(t.progress?[i.asSpec()]:[]).concat(Gg.sketch({dom:{tag:"button",classes:["tox-notification__dismiss","tox-button","tox-button--naked","tox-button--icon"]},components:[{dom:{tag:"div",classes:["tox-icon"],innerHtml:ym("close",t.iconProvider),attributes:{"aria-label":t.translationProvider("Close")}}}],action:function(n){t.onAction(n)}})),apis:n}},configFields:[ht("level"),ct("progress"),ct("icon"),ct("onAction"),ct("text"),ct("iconProvider"),ct("translationProvider")],apis:{updateProgress:function(n,t,e){n.updateProgress(t,e)},updateText:function(n,t,e){n.updateText(t,e)}}}),qg=tinymce.util.Tools.resolve("tinymce.util.Delay");function Kg(n,u,o){var a=u.backstage;return{open:function(n,t){function e(){t(),jg.hide(i)}var r=uu(Yg.sketch({text:n.text,level:vn(["success","error","warning","warn","info"],n.type)?n.type:undefined,progress:!0===n.progressBar,icon:on.from(n.icon),onAction:e,iconProvider:a.shared.providers.icons,translationProvider:a.shared.providers.translate})),i=uu(jg.sketch({dom:{tag:"div",classes:["tox-notifications-container"]},lazySink:u.backstage.shared.getSink,fireDismissalEventInstead:{}}));return o.add(i),0<n.timeout&&qg.setTimeout(function(){e()},n.timeout),{close:e,moveTo:function(n,t){jg.showAt(i,{anchor:"makeshift",x:n,y:t},au(r))},moveRel:function(n,t){if("banner"!==t){var e=function(n){switch(n){case"bc-bc":return Wg;case"tc-tc":return Ug;case"tc-bc":return oc;case"bc-tc":default:return rc}}(t),o={anchor:"node",root:zr(),node:on.some(we.fromDom(n)),layouts:{onRtl:function(){return[e]},onLtr:function(){return[e]}}};jg.showAt(i,o,au(r))}else jg.showAt(i,u.backstage.shared.anchors.banner(),au(r))},text:function(n){Yg.updateText(r,n)},settings:n,getEl:function(){return r.element().dom()},progressBar:{value:function(n){Yg.updateProgress(r,n)}}}},close:function(n){n.close()},reposition:function(n){!function(n){bn(n,function(n){return n.moveTo(0,0)})}(n),function(e){0<e.length&&(yn(e).each(function(n){return n.moveRel(null,"banner")}),bn(e,function(n,t){0<t&&n.moveRel(e[t-1].getEl(),"bc-tc")}))}(n)},getArgs:function(n){return n.settings}}}function Jg(e,o){var r=null;return{cancel:function(){null!==r&&(v.clearTimeout(r),r=null)},throttle:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];null!==r&&v.clearTimeout(r),r=v.setTimeout(function(){e.apply(null,n),r=null},o)}}}function $g(n,t,e,o,r){var i=new Ap(t,r||n.getRoot());return Fp(n,t,on.some(e),o,i.prev,on.none())}function Qg(t,e){return Ip(we.fromDom(t.selection.getNode())).getOrThunk(function(){var n=we.fromHtml('<span data-mce-autocompleter="1" data-mce-bogus="1"></span>',t.getDoc());return Hi(n,we.fromDom(e.extractContents())),e.insertNode(n.dom()),Eo(n).each(function(n){return n.dom().normalize()}),Ic(n).map(function(n){t.selection.setCursorLocation(n.dom(),function(n){return"img"===Ke(n)?1:Ac(n).fold(function(){return Bo(n).length},function(n){return n.length})}(n))}),n})}function Zg(n,t){return n.toString().substring(t.length).replace(/\u00A0/g," ").replace(/\uFEFF/g,"")}function np(n,u,a,c){return void 0===c&&(c=0),function(n){return n.collapsed&&3===n.startContainer.nodeType}(u)?$g(n,u.startContainer,u.startOffset,function(e,o,r,n){var i=n.getOr(r.length);return function(n,t,e,o){var r;for(r=t-1;0<=r;r--){var i=n.charAt(r);if(Rp.test(i))return on.none();if(i===e)break}return-1===r||t-r<o?on.none():on.some(n.substring(r+1,t))}(r,i,a,1).fold(function(){return r.match(Rp)?e.abort():e.kontinue()},function(n){var t=u.cloneRange();return t.setStart(o,i-n.length-1),t.setEnd(u.endContainer,u.endOffset),r.length<c?e.abort():e.finish({text:Zg(t,a),range:t,triggerChar:a})})}).fold(on.none,on.none,on.some):on.none()}function tp(e,n,o,t){return void 0===t&&(t=0),Ip(we.fromDom(n.startContainer)).fold(function(){return np(e,n,o,t)},function(n){var t=e.createRng();return t.selectNode(n.dom()),on.some({range:t,text:Zg(t,o),triggerChar:o})})}function ep(n,t){return{element:n,offset:t}}function op(t,e){var n=e(),o=t.selection.getRng();return function(t,e,n){return Du(n.triggerChars,function(n){return tp(t,e,n)})}(t.dom,o,n).bind(function(n){return zp(t,e,n)})}function rp(n){var t=n.ui.registry.getAll().popups,e=P(t,function(n){return function(n){return tt("Autocompleter",Up,n)}(n).fold(function(n){throw new Error(le(n))},function(n){return n})}),o=function(n){var t={};return bn(n,function(n){t[n]={}}),wn(t)}(On(e,function(n){return n.ch})),r=R(e);return{dataset:e,triggerChars:o,lookupByChar:function(t){return C(r,function(n){return n.ch===t})}}}function ip(n,o,t){var r=zc(n.element(),"."+t);if(0<r.length){var e=T(r,function(n){var t=n.dom().getBoundingClientRect().top,e=r[0].dom().getBoundingClientRect().top;return Math.abs(t-e)>o}).getOr(r.length);return on.some({numColumns:e,numRows:Math.ceil(r.length/e)})}return on.none()}function up(n,t){return ba([Kd(n,t)])}function ap(n,t,e){n.getSystem().broadcastOn([Zp],{})}function cp(n){var t=we.fromHtml(n),e=Bo(t),o=function(n){var t=n.dom().attributes!==undefined?n.dom().attributes:[];return O(t,function(n,t){var e;return"class"===t.name?n:N(N({},n),((e={})[t.name]=t.value,e))},{})}(t),r=function(n){return Array.prototype.slice.call(n.dom().classList,0)}(t),i=0===e.length?{}:{innerHtml:Vo(t)};return N({tag:Ke(t),classes:r,attributes:o},i)}function sp(n){return Nn(ch,n).getOr(ih)}function fp(n){return{dom:{tag:"div",classes:[fh],innerHtml:n}}}function lp(n){return{dom:{tag:"div",classes:[lh]},components:[Ir(rh.translate(n))]}}function dp(n,t){return{dom:{tag:"div",classes:[lh]},components:[{dom:{tag:n.tag,attributes:{style:n.styleAttr}},components:[Ir(rh.translate(t))]}]}}function mp(n){return{dom:{tag:"div",classes:["tox-collection__item-accessory"],innerHtml:ph(n)}}}function gp(n){return{dom:{tag:"div",classes:[fh,"tox-collection__item-checkmark"],innerHtml:ym("checkmark",n)}}}function pp(n,t,e,o,r){var i=e?n.checkMark.orThunk(function(){return t.or(on.some("")).map(fp)}):on.none(),u=n.ariaLabel.map(function(n){return{attributes:{title:rh.translate(n)}}}).getOr({});return{dom:An({tag:"div",classes:[ih,uh].concat(r?["tox-collection__item-icon-rtl"]:[])},u),optComponents:[i,n.htmlContent.fold(function(){return n.textContent.map(o)},function(n){return on.some(function(n){return{dom:{tag:"div",classes:[lh],innerHtml:n}}}(n))}),n.shortcutContent.map(mp),n.caret]}}function hp(n,t,e,o){void 0===o&&(o=on.none());var r=rh.isRtl()&&n.iconContent.exists(function(n){return vn(vh,n)}),i=n.iconContent.map(function(n){return rh.isRtl()&&vn(hh,n)?n+"-rtl":n}).map(function(n){return function(n,t,e){return on.from(t()[n]).or(e).getOrThunk(function(){return bm(t)})}(n,t.icons,o)}),u=on.from(n.meta).fold(function(){return lp},function(n){return En(n,"style")?d(dp,n.style):lp});return"color"===n.presets?function(n,t,e,o){var r,i,u;return{dom:(r=ah,i=e.getOr(""),u=n.map(function(n){return' title="'+o.translate(n)+'"'}).getOr(""),cp("custom"===t?'<button class="'+r+' tox-swatches__picker-btn"'+u+">"+i+"</button>":"remove"===t?'<div class="'+r+' tox-swatch--remove"'+u+">"+i+"</div>":'<div class="'+r+'" style="background-color: '+t+'" data-mce-color="'+t+'"'+u+"></div>")),optComponents:[]}}(n.ariaLabel,n.value,i,t):pp(n,i,e,u,r)}function vp(n,t,e){t.disabled&&yh(n,t)}function bp(n,t){return!0===t.useNative&&vn(bh,Ke(n.element()))}function yp(n){Po(n.element(),"disabled","disabled")}function xp(n){jo(n.element(),"disabled")}function wp(n){Po(n.element(),"aria-disabled","true")}function Sp(n){Po(n.element(),"aria-disabled","false")}function Cp(t,n,e){n.disableClass.each(function(n){dr(t.element(),n)}),(bp(t,n)?xp:Sp)(t),n.onEnabled(t)}function kp(n,t){return bp(n,t)?function(n){return Lo(n.element(),"disabled")}(n):function(n){return"true"===zo(n.element(),"aria-disabled")}(n)}function Op(n,t){var e=n.getApi(t);return function(n){n(e)}}function Ep(e,o){return Ii(function(n){Op(e,n)(function(n){var t=e.onSetup(n);null!==t&&t!==undefined&&o.set(t)})})}function Tp(t,e){return Ri(function(n){return Op(t,n)(e.get())})}var Bp,Dp,Ap=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),_p=Tn([{aborted:[]},{edge:["element"]},{success:["info"]}]),Mp=Tn([{abort:[]},{kontinue:[]},{finish:["info"]}]),Fp=function(t,e,n,o,r,i){function u(){return i.fold(_p.aborted,_p.edge)}function a(){var n=r();return n?Fp(t,n,on.none(),o,r,on.some(e)):u()}if(function(n,t){return n.isBlock(t)||vn(["BR","IMG","HR","INPUT"],t.nodeName)||"false"===n.getContentEditable(t)}(t,e))return u();if(function(n){return n.nodeType===v.Node.TEXT_NODE}(e)){var c=e.textContent;return o(Mp,e,c,n).fold(_p.aborted,function(){return a()},_p.success)}return a()},Ip=function(n){return Ou(n,"[data-mce-autocompleter]")},Rp=/[\u00a0 \t\r\n]/,Vp=function(e,n){n.on("keypress compositionend",e.onKeypress.throttle),n.on("remove",e.onKeypress.cancel);function o(n,t){ro(n,ni(),{raw:t})}n.on("keydown",function(t){function n(){return e.getView().bind(ad.getHighlighted)}8===t.which&&e.onKeypress.throttle(t),e.isActive()&&(27===t.which&&e.cancelIfNecessary(),e.isMenuOpen()?13===t.which?(n().each(io),t.preventDefault()):40===t.which?(n().fold(function(){e.getView().each(ad.highlightFirst)},function(n){o(n,t)}),t.preventDefault(),t.stopImmediatePropagation()):37!==t.which&&38!==t.which&&39!==t.which||n().each(function(n){o(n,t),t.preventDefault(),t.stopImmediatePropagation()}):13!==t.which&&38!==t.which&&40!==t.which||e.cancelIfNecessary())}),n.on("NodeChange",function(n){e.isActive()&&!e.isProcessingAction()&&Ip(we.fromDom(n.element)).isNone()&&e.cancelIfNecessary()})},Np=tinymce.util.Tools.resolve("tinymce.util.Promise"),Hp=function(n){if(function(n){return n.nodeType===v.Node.TEXT_NODE}(n))return ep(n,n.data.length);var t=n.childNodes;return 0<t.length?Hp(t[t.length-1]):ep(n,t.length)},Pp=function(n,t){var e=n.childNodes;return 0<e.length&&t<e.length?Pp(e[t],0):0<e.length&&function(n){return n.nodeType===v.Node.ELEMENT_NODE}(n)&&e.length===t?Hp(e[e.length-1]):ep(n,t)},zp=function(t,n,e,o){void 0===o&&(o={});var r=n(),i=t.selection.getRng().startContainer.nodeValue,u=C(r.lookupByChar(e.triggerChar),function(n){return e.text.length>=n.minChars&&n.matches.getOrThunk(function(){return function(e){function o(n,t,e,o){var r=o.getOr(e.length);return 0===r?n.kontinue():n.finish(/\s/.test(e.charAt(r-1)))}return function(n){var t=Pp(n.startContainer,n.startOffset);return $g(e,t.element,t.offset,o).fold(nn(!0),nn(!0),l)}}(t.dom)})(e.range,i,e.text)});if(0===u.length)return on.none();var a=Np.all(S(u,function(t){return t.fetch(e.text,t.maxResults,o).then(function(n){return{matchText:e.text,items:n,columns:t.columns,onAction:t.onAction}})}));return on.some({lookupData:a,context:e})},Lp=re([ft("type"),yt("text")]),jp=re([At("type",function(){return"autocompleteitem"}),At("active",function(){return!1}),At("disabled",function(){return!1}),St("meta",{}),ft("value"),yt("text"),yt("icon")]),Up=re([ft("type"),ft("ch"),kt("minChars",1),St("columns",1),kt("maxResults",10),xt("matches"),dt("fetch"),dt("onAction")]),Wp=[Tt("disabled",!1),yt("text"),yt("shortcut"),ce("value","value",In(function(){return Xo("menuitem-value")}),de()),St("meta",{})],Gp=re([ft("type"),Bt("onSetup",function(){return Z}),Bt("onAction",Z),yt("icon")].concat(Wp)),Xp=re([ft("type"),dt("getSubmenuItems"),Bt("onSetup",function(){return Z}),yt("icon")].concat(Wp)),Yp=re([ft("type"),Tt("active",!1),Bt("onSetup",function(){return Z}),dt("onAction")].concat(Wp)),qp=re([ft("type"),Tt("active",!1),yt("icon")].concat(Wp)),Kp=re([ft("type"),lt("fancytype",["inserttable","colorswatch"]),Bt("onAction",Z)]),Jp=function(n){return up(Xo("unnamed-events"),n)},$p=[ct("lazySink"),ct("tooltipDom"),St("exclusive",!0),St("tooltipComponents",[]),St("delay",300),Et("mode","normal",["normal","follow-highlight"]),St("anchor",function(n){return{anchor:"hotspot",hotspot:n,layouts:{onLtr:nn([rc,oc,ua,ca,aa,sa]),onRtl:nn([rc,oc,ua,ca,aa,sa])}}}),qu("onHide"),qu("onShow")],Qp=/* */Object.freeze({init:function(){function e(){o.get().each(function(n){v.clearTimeout(n)})}var o=ye(on.none()),t=ye(on.none()),n=nn("not-implemented");return nu({getTooltip:function(){return t.get()},isShowing:function(){return t.get().isSome()},setTooltip:function(n){t.set(on.some(n))},clearTooltip:function(){t.set(on.none())},clearTimer:e,resetTimer:function(n,t){e(),o.set(on.some(v.setTimeout(function(){n()},t)))},readState:n})}}),Zp=Xo("tooltip.exclusive"),nh=Xo("tooltip.show"),th=Xo("tooltip.hide"),eh=/* */Object.freeze({hideAllExclusive:ap,setComponents:function(n,t,e,o){e.getTooltip().each(function(n){n.getSystem().isConnected()&&mg.set(n,o)})}}),oh=ya({fields:$p,name:"tooltipping",active:/* */Object.freeze({events:function(o,r){function e(t){r.getTooltip().each(function(n){bs(n),o.onHide(t,n),r.clearTooltip()}),r.clearTimer()}return co(H([[lo(nh,function(n){r.resetTimer(function(){!function(t){if(!r.isShowing()){ap(t);var n=o.lazySink(t).getOrDie(),e=t.getSystem().build({dom:o.tooltipDom,components:o.tooltipComponents,events:co("normal"===o.mode?[lo($r(),function(n){oo(t,nh)}),lo(Kr(),function(n){oo(t,th)})]:[]),behaviours:ba([mg.config({})])});r.setTooltip(e),hs(n,e),o.onShow(t,e),Af.position(n,o.anchor(t),e)}}(n)},o.delay)}),lo(th,function(n){r.resetTimer(function(){e(n)},o.delay)}),lo(li(),function(n,t){vn(t.channels(),Zp)&&e(n)}),Ri(function(n){e(n)})],"normal"===o.mode?[lo(Qr(),function(n){oo(n,nh)}),lo(si(),function(n){oo(n,th)}),lo($r(),function(n){oo(n,nh)}),lo(Kr(),function(n){oo(n,th)})]:[lo(_i(),function(n,t){oo(n,nh)}),lo(Mi(),function(n){oo(n,th)})]]))}}),state:Qp,apis:eh}),rh=tinymce.util.Tools.resolve("tinymce.util.I18n"),ih="tox-menu-nav__js",uh="tox-collection__item",ah="tox-swatch",ch={normal:ih,color:ah},sh="tox-collection__item--enabled",fh="tox-collection__item-icon",lh="tox-collection__item-label",dh="tox-collection__item-caret",mh="tox-collection__item--active",gh=tinymce.util.Tools.resolve("tinymce.Env"),ph=function(n){var e=gh.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl",access:"Shift+Alt"},t=n.split("+"),o=S(t,function(n){var t=n.toLowerCase().trim();return En(e,t)?e[t]:n});return gh.mac?o.join(""):o.join("+")},hh=["list-num-default","list-num-lower-alpha","list-num-lower-greek","list-num-lower-roman","list-num-upper-alpha","list-num-upper-roman"],vh=["list-bull-circle","list-bull-default","list-bull-square"],bh=["input","button","textarea","select"],yh=function(t,n,e){n.disableClass.each(function(n){fr(t.element(),n)}),(bp(t,n)?yp:wp)(t),n.onDisabled(t)},xh=/* */Object.freeze({enable:Cp,disable:yh,isDisabled:kp,onLoad:vp,set:function(n,t,e,o){(o?yh:Cp)(n,t,e)}}),wh=/* */Object.freeze({exhibit:function(n,t,e){return Zo({classes:t.disabled?t.disableClass.map(M).getOr([]):[]})},events:function(e,n){return co([so(di(),function(n,t){return kp(n,e)}),ga(e,n,vp)])}}),Sh=[St("disabled",!1),St("useNative",!0),ht("disableClass"),qu("onDisabled"),qu("onEnabled")],Ch=ya({fields:Sh,name:"disabling",active:wh,apis:xh}),kh=function(n){return Ch.config({disabled:n,disableClass:"tox-collection__item--state-disabled"})},Oh=function(n){return Ch.config({disabled:n})},Eh=function(n){return Ch.config({disabled:n,disableClass:"tox-tbtn--disabled"})},Th=function(n){return Ch.config({disabled:n,disableClass:"tox-tbtn--disabled",useNative:!1})};(Dp=Bp=Bp||{})[Dp.CLOSE_ON_EXECUTE=0]="CLOSE_ON_EXECUTE",Dp[Dp.BUBBLE_TO_SANDBOX=1]="BUBBLE_TO_SANDBOX";function Bh(n){return B(n,function(n){return n.toArray()})}function Dh(n,t,e){var o=ye(Z);return{type:"item",dom:t.dom,components:Bh(t.optComponents),data:n.data,eventOrder:Ih,hasSubmenu:n.triggersSubmenu,itemBehaviours:ba([Kd("item-events",[function(e,o){return Ni(function(n,t){Op(e,n)(e.onAction),e.triggersSubmenu||o!==Fh.CLOSE_ON_EXECUTE||(oo(n,hi()),t.stop())})}(n,e),Ep(n,o),Tp(n,o)]),kh(n.disabled),mg.config({})].concat(n.itemBehaviours))}}function Ah(n){return{value:n.value,meta:An({text:n.text.getOr("")},n.meta)}}function _h(n,t){var e=function(n){return Rh.DOM.encode(n)}(rh.translate(n));if(0<t.length){var o=new RegExp(function(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(t),"gi");return e.replace(o,function(n){return'<span class="tox-autocompleter-highlight">'+n+"</span>"})}return e}function Mh(t,e,n){function o(n){return ro(n,Hh,{row:t,col:e})}function r(n,t){t.stop(),o(n)}var i;return uu({dom:{tag:"div",attributes:(i={role:"button"},i["aria-labelledby"]=n,i)},behaviours:ba([Kd("insert-table-picker-cell",[lo($r(),vg.focus),lo(di(),o),lo(ri(),r),lo(gi(),r)]),Cg.config({toggleClass:"tox-insert-table-picker__selected",toggleOnExecute:!1}),vg.config({onFocus:function(n){return ro(n,Nh,{row:t,col:e})}})])})}var Fh=Bp,Ih={"alloy.execute":["disabling","alloy.base.behaviour","toggling","item-events"]},Rh=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Vh=nn(js("item-widget",Ag())),Nh=Xo("cell-over"),Hh=Xo("cell-execute");function Ph(n){return{value:nn(n)}}function zh(n){return Jh.test(n)||$h.test(n)}function Lh(n){var t=function(n){var t=n.value().replace(Jh,function(n,t,e,o){return t+t+e+e+o+o});return{value:nn(t)}}(n),e=$h.exec(t.value());return null===e?["FFFFFF","FF","FF","FF"]:e}function jh(n){var t=n.toString(16);return 1===t.length?"0"+t:t}function Uh(n){var t=jh(n.red())+jh(n.green())+jh(n.blue());return Ph(t)}function Wh(n,t,e,o){return{red:nn(n),green:nn(t),blue:nn(e),alpha:nn(o)}}function Gh(n){var t=parseInt(n,10);return t.toString()===n&&0<=t&&t<=255}function Xh(n){var t,e,o,r=(n.hue()||0)%360,i=n.saturation()/100,u=n.value()/100;if(i=Zh(0,Qh(i,1)),u=Zh(0,Qh(u,1)),0===i)return t=e=o=nv(255*u),Wh(t,e,o,1);var a=r/60,c=u*i,s=c*(1-Math.abs(a%2-1)),f=u-c;switch(Math.floor(a)){case 0:t=c,e=s,o=0;break;case 1:t=s,e=c,o=0;break;case 2:t=0,e=c,o=s;break;case 3:t=0,e=s,o=c;break;case 4:t=s,e=0,o=c;break;case 5:t=c,e=0,o=s;break;default:t=e=o=0}return t=nv(255*(t+f)),e=nv(255*(e+f)),o=nv(255*(o+f)),Wh(t,e,o,1)}function Yh(n){var t=Lh(n),e=parseInt(t[1],16),o=parseInt(t[2],16),r=parseInt(t[3],16);return Wh(e,o,r,1)}function qh(n,t,e,o){var r=parseInt(n,10),i=parseInt(t,10),u=parseInt(e,10),a=parseFloat(o);return Wh(r,i,u,a)}function Kh(n){return"rgba("+n.red()+","+n.green()+","+n.blue()+","+n.alpha()+")"}var Jh=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,$h=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,Qh=Math.min,Zh=Math.max,nv=Math.round,tv=/^rgb\((\d+),\s*(\d+),\s*(\d+)\)/,ev=/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d?(?:\.\d+)?)\)/,ov=nn(Wh(255,0,0,1)),rv=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),iv="tinymce-custom-colors";function uv(n){var t=[],u=v.document.createElement("canvas");u.height=1,u.width=1;for(var a=u.getContext("2d"),c=function(n,t){var e=t/255;return("0"+Math.round(n*e+255*(1-e)).toString(16)).slice(-2).toUpperCase()},e=function(n){if(/^[0-9A-Fa-f]{6}$/.test(n))return"#"+n.toUpperCase();a.clearRect(0,0,u.width,u.height),a.fillStyle="#FFFFFF",a.fillStyle=n,a.fillRect(0,0,1,1);var t=a.getImageData(0,0,1,1).data,e=t[0],o=t[1],r=t[2],i=t[3];return"#"+c(e,i)+c(o,i)+c(r,i)},o=0;o<n.length;o+=2)t.push({text:n[o+1],value:e(n[o]),type:"choiceitem"});return t}function av(n){return n.getParam("color_map")}function cv(n,e){var o;return n.dom.getParents(n.selection.getStart(),function(n){var t;(t=n.style["forecolor"===e?"color":"background-color"])&&(o=o||t)}),o}function sv(n){return Math.max(5,Math.ceil(Math.sqrt(n)))}function fv(n){var t=Iv(n),e=sv(t.length);return Mv(n,e)}function lv(t,e,n,o){"custom"===n?jv(t)(function(n){n.each(function(n){Vv(n),t.execCommand("mceApplyTextcolor",e,n),o(n)})},"#000000"):"remove"===n?(o(""),t.execCommand("mceRemoveTextcolor",e)):(o(n),t.execCommand("mceApplyTextcolor",e,n))}function dv(n,t){return n.concat(Rv().concat(function(n){var t="choiceitem",e={type:t,text:"Remove color",icon:"color-swatch-remove-color",value:"remove"};return n?[e,{type:t,text:"Custom color",icon:"color-picker",value:"custom"}]:[e]}(t)))}function mv(t,e){return function(n){n(dv(t,e))}}function gv(n,t,e){var o,r;o="forecolor"===t?"tox-icon-text-color__color":"tox-icon-highlight-bg-color__color",r=e,n.setIconFill(o,r),n.setIconStroke(o,r)}function pv(o,e,r,n,i){o.ui.registry.addSplitButton(e,{tooltip:n,presets:"color",icon:"forecolor"===e?"text-color":"highlight-bg-color",select:function(e){return on.from(cv(o,r)).bind(function(n){return function(n){if("transparent"===n)return on.some(Wh(0,0,0,0));var t=tv.exec(n);if(null!==t)return on.some(qh(t[1],t[2],t[3],"1"));var e=ev.exec(n);return null!==e?on.some(qh(e[1],e[2],e[3],e[4])):on.none()}(n).map(function(n){var t=Uh(n).value();return Vt(e.toLowerCase(),t)})}).getOr(!1)},columns:fv(o),fetch:mv(Iv(o),Fv(o)),onAction:function(n){null!==i.get()&&lv(o,r,i.get(),function(){})},onItemAction:function(n,t){lv(o,r,t,function(n){i.set(n),Lv(o,{name:e,color:n})})},onSetup:function(t){null!==i.get()&&gv(t,e,i.get());function n(n){n.name===e&&gv(t,n.name,n.color)}return o.on("TextColorChange",n),function(){o.off("TextColorChange",n)}}})}function hv(t,n,e,o){t.ui.registry.addNestedMenuItem(n,{text:o,icon:"forecolor"===n?"text-color":"highlight-bg-color",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"colorswatch",onAction:function(n){lv(t,e,n.value,Z)}}]}})}function vv(e,o){return function(n){var t=w(n,o);return S(t,function(n){return{dom:e,components:n}})}}function bv(n,e){var o=[],r=[];return bn(n,function(n,t){e(n,t)?(0<r.length&&o.push(r),r=[],En(n.dom,"innerHtml")&&r.push(n)):r.push(n)}),0<r.length&&o.push(r),S(o,function(n){return{dom:{tag:"div",classes:["tox-collection__group"]},components:n}})}function yv(t,e,n){return{dom:{tag:"div",classes:["tox-menu","tox-collection"].concat(1===t?["tox-collection--list"]:["tox-collection--grid"])},components:[Vg.parts().items({preprocess:function(n){return"auto"!==t&&1<t?vv({tag:"div",classes:["tox-collection__group"]},t)(n):bv(n,function(n,t){return"separator"===e[t].type})}})]}}function xv(n){return{backgroundMenu:"tox-background-menu",selectedMenu:"tox-selected-menu",selectedItem:"tox-collection__item--active",hasIcons:"tox-menu--has-icons",menu:function(n){return"color"===n?"tox-swatches":"tox-menu"}(n),tieredMenu:"tox-tiered-menu"}}function wv(n){var t=xv(n);return{backgroundMenu:t.backgroundMenu,selectedMenu:t.selectedMenu,menu:t.menu,selectedItem:t.selectedItem,item:sp(n)}}function Sv(n,t,e){var o=xv(e);return{dom:{tag:"div",classes:H([[o.tieredMenu]])},markers:wv(e)}}function Cv(n){return n.icon!==undefined||"togglemenuitem"===n.type||"choicemenuitem"===n.type}function kv(n){return v.console.error(le(n)),v.console.log(n),on.none()}function Ov(n,t,e,o,r){var i=function(e){return{dom:{tag:"div",classes:["tox-collection","tox-collection--horizontal"]},components:[Vg.parts().items({preprocess:function(n){return bv(n,function(n,t){return"separator"===e[t].type})}})]}}(e);return{value:n,dom:i.dom,components:i.components,items:e}}function Ev(n,t,e,o,r){var i;return"color"===r?{value:n,dom:(i=function(n){return{dom:{tag:"div",classes:["tox-menu","tox-swatches-menu"]},components:[{dom:{tag:"div",classes:["tox-swatches"]},components:[Vg.parts().items({preprocess:"auto"!==n?vv({tag:"div",classes:["tox-swatches__row"]},n):l})]}]}}(o)).dom,components:i.components,items:e}:"normal"===r&&"auto"===o?{value:n,dom:(i=yv(o,e)).dom,components:i.components,items:e}:"normal"===r&&1===o?{value:n,dom:(i=yv(1,e)).dom,components:i.components,items:e}:"normal"===r?{value:n,dom:(i=yv(o,e)).dom,components:i.components,items:e}:"listpreview"!==r||"auto"===o?{value:n,dom:function(n,t,e){var o=xv(e);return{tag:"div",classes:H([[o.menu,"tox-menu-"+t+"-column"],n?[o.hasIcons]:[]])}}(t,o,r),components:Wv,items:e}:{value:n,dom:(i=function(n){return{dom:{tag:"div",classes:["tox-menu","tox-collection","tox-collection--toolbar","tox-collection--toolbar-lg"]},components:[Vg.parts().items({preprocess:vv({tag:"div",classes:["tox-collection__group"]},n)})]}}(o)).dom,components:i.components,items:e}}function Tv(n,t,e,o,r,i,u,a){var c=function(n){return x(n,Cv)}(t),s=Gv(t,e,o,"color"!==r?"normal":"color",i,u,a);return Ev(n,c,s,o,r)}function Bv(n,t){var e=wv(t);return 1===n?{mode:"menu",moveOnTab:!0}:"auto"===n?{mode:"grid",selector:"."+e.item,initSize:{numColumns:1,numRows:1}}:{mode:"matrix",rowSelector:"."+("color"===t?"tox-swatches__row":"tox-collection__group")}}var Dv="choiceitem",Av=[{type:Dv,text:"Light Green",value:"#BFEDD2"},{type:Dv,text:"Light Yellow",value:"#FBEEB8"},{type:Dv,text:"Light Red",value:"#F8CAC6"},{type:Dv,text:"Light Purple",value:"#ECCAFA"},{type:Dv,text:"Light Blue",value:"#C2E0F4"},{type:Dv,text:"Green",value:"#2DC26B"},{type:Dv,text:"Yellow",value:"#F1C40F"},{type:Dv,text:"Red",value:"#E03E2D"},{type:Dv,text:"Purple",value:"#B96AD9"},{type:Dv,text:"Blue",value:"#3598DB"},{type:Dv,text:"Dark Turquoise",value:"#169179"},{type:Dv,text:"Orange",value:"#E67E23"},{type:Dv,text:"Dark Red",value:"#BA372A"},{type:Dv,text:"Dark Purple",value:"#843FA1"},{type:Dv,text:"Dark Blue",value:"#236FA1"},{type:Dv,text:"Light Gray",value:"#ECF0F1"},{type:Dv,text:"Medium Gray",value:"#CED4D9"},{type:Dv,text:"Gray",value:"#95A5A6"},{type:Dv,text:"Dark Gray",value:"#7E8C8D"},{type:Dv,text:"Navy Blue",value:"#34495E"},{type:Dv,text:"Black",value:"#000000"},{type:Dv,text:"White",value:"#ffffff"}],_v=function iI(t){void 0===t&&(t=10);var n,e=rv.getItem(iv),o=cn(e)?JSON.parse(e):[],r=t-(n=o).length<0?n.slice(0,t):n,i=function(n){r.splice(n,1)};return{add:function(n){(function(n,t){var e=y(n,t);return-1===e?on.none():on.some(e)})(r,n).each(i),r.unshift(n),r.length>t&&r.pop(),rv.setItem(iv,JSON.stringify(r))},state:function(){return r.slice(0)}}}(10),Mv=function(n,t){return n.getParam("color_cols",t,"number")},Fv=function(n){return!1!==n.getParam("custom_colors")},Iv=function(n){var t=av(n);return t!==undefined?uv(t):Av},Rv=function(){return S(_v.state(),function(n){return{type:Dv,text:n,value:n}})},Vv=function(n){_v.add(n)},Nv=function(n){return n.fire("SkinLoaded")},Hv=function(n){return n.fire("ResizeEditor")},Pv=function(n,t){return n.fire("ScrollContent",t)},zv=function(n,t){return n.fire("ResizeContent",t)},Lv=function(n,t){return n.fire("TextColorChange",t)},jv=function(i){return function(n,t){var e,o={colorpicker:t},r=(e=n,function(n){var t=n.getData();e(on.from(t.colorpicker)),n.close()});i.windowManager.open({title:"Color Picker",size:"normal",body:{type:"panel",items:[{type:"colorpicker",name:"colorpicker",label:"Color"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o,onAction:function(n,t){"hex-valid"===t.name&&(t.value?n.enable("ok"):n.disable("ok"))},onSubmit:r,onClose:function(){},onCancel:function(){n(on.none())}})}},Uv={register:function(n){!function(e){e.addCommand("mceApplyTextcolor",function(n,t){!function(n,t,e){n.undoManager.transact(function(){n.focus(),n.formatter.apply(t,{value:e}),n.nodeChanged()})}(e,n,t)}),e.addCommand("mceRemoveTextcolor",function(n){!function(n,t){n.undoManager.transact(function(){n.focus(),n.formatter.remove(t,{value:null},null,!0),n.nodeChanged()})}(e,n)})}(n);var t=ye(null),e=ye(null);pv(n,"forecolor","forecolor","Text color",t),pv(n,"backcolor","hilitecolor","Background color",e),hv(n,"forecolor","forecolor","Text color"),hv(n,"backcolor","hilitecolor","Background color")},getColors:dv,getFetch:mv,colorPickerDialog:jv,getCurrentColor:cv,getColorCols:fv,calcCols:sv},Wv=[Vg.parts().items({})],Gv=function(n,e,o,r,i,u,a){return Bu(S(n,function(t){return"choiceitem"===t.type?function(n){return tt("choicemenuitem",qp,n)}(t).fold(kv,function(n){return on.some(function(t,n,e,o,r,i,u){var a=hp({presets:e,textContent:n?t.text:on.none(),htmlContent:on.none(),ariaLabel:t.text,iconContent:t.icon,shortcutContent:n?t.shortcut:on.none(),checkMark:n?on.some(gp(u.icons)):on.none(),caret:on.none(),value:t.value},u,!0);return Dn(Dh({data:Ah(t),disabled:t.disabled,getApi:function(t){return{setActive:function(n){Cg.set(t,n)},isActive:function(){return Cg.isOn(t)},isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}},onAction:function(n){return o(t.value)},onSetup:function(n){return n.setActive(r),function(){}},triggersSubmenu:!1,itemBehaviours:[]},a,i),{toggling:{toggleClass:sh,toggleOnExecute:!1,selected:t.active}})}(n,1===o,r,e,u(t.value),i,a))}):on.none()}))};var Xv,Yv,qv={inserttable:function uI(o){var n=Xo("size-label"),i=function(n,t,e){for(var o=[],r=0;r<t;r++){for(var i=[],u=0;u<e;u++)i.push(Mh(r,u,n));o.push(i)}return o}(n,10,10),u=vm({dom:{tag:"span",classes:["tox-insert-table-picker__label"],attributes:{id:n}},components:[Ir("0x0")],behaviours:ba([mg.config({})])});return{type:"widget",data:{value:Xo("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[Vh().widget({dom:{tag:"div",classes:["tox-insert-table-picker"]},components:function(n){return B(n,function(n){return S(n,au)})}(i).concat(u.asSpec()),behaviours:ba([Kd("insert-table-picker",[ho(Nh,function(n,t,e){var o=e.event().row(),r=e.event().col();!function(n,t,e,o,r){for(var i=0;i<o;i++)for(var u=0;u<r;u++)Cg.set(n[i][u],i<=t&&u<=e)}(i,o,r,10,10),mg.set(u.get(n),[function(n,t){return Ir(t+1+"x"+(n+1))}(o,r)])}),ho(Hh,function(n,t,e){o.onAction({numRows:e.event().row()+1,numColumns:e.event().col()+1}),oo(n,hi())})]),lg.config({initSize:{numRows:10,numColumns:10},mode:"flatgrid",selector:'[role="button"]'})])})]}},colorswatch:function aI(t,n){var e=Uv.getColors(n.colorinput.getColors(),n.colorinput.hasCustomColors()),o=n.colorinput.getColorCols(),r=Tv(Xo("menu-value"),e,function(n){t.onAction({value:n})},o,"color",Fh.CLOSE_ON_EXECUTE,function(){return!1},n.shared.providers),i=Dn(N(N({},r),{markers:wv("color"),movement:Bv(o,"color")}));return{type:"widget",data:{value:Xo("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[Vh().widget(Vg.sketch(i))]}}},Kv=function(t,e,n,o,r,i,u,a){void 0===a&&(a=!0);var c=hp({presets:o,textContent:on.none(),htmlContent:n?t.text.map(function(n){return _h(n,e)}):on.none(),ariaLabel:t.text,iconContent:t.icon,shortcutContent:on.none(),checkMark:on.none(),caret:on.none(),value:t.value},u.providers,a,t.icon);return Dh({data:Ah(t),disabled:t.disabled,getApi:function(){return{}},onAction:function(n){return r(t.value,t.meta)},onSetup:function(){return function(){}},triggersSubmenu:!1,itemBehaviours:function(n,t){return V(n,"tooltipWorker").map(function(e){return[oh.config({lazySink:t.getSink,tooltipDom:{tag:"div",classes:["tox-tooltip-worker-container"]},tooltipComponents:[],anchor:function(n){return{anchor:"submenu",item:n,overrides:{maxHeightFunction:Cf}}},mode:"follow-highlight",onShow:function(t,n){e(function(n){oh.setComponents(t,[ru({element:we.fromDom(n)})])})}})]}).getOr([])}(t.meta,u)},c,i)},Jv=function(n){var t=n.text.fold(function(){return{}},function(n){return{innerHtml:n}});return{type:"separator",dom:N({tag:"div",classes:[uh,"tox-collection__group-heading"]},t),components:[]}},$v=function(n,t,e,o){void 0===o&&(o=!0);var r=hp({presets:"normal",iconContent:n.icon,textContent:n.text,htmlContent:on.none(),ariaLabel:n.text,caret:on.none(),checkMark:on.none(),shortcutContent:n.shortcut},e,o);return Dh({data:Ah(n),getApi:function(t){return{isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}},disabled:n.disabled,onAction:n.onAction,onSetup:n.onSetup,triggersSubmenu:!1,itemBehaviours:[]},r,t)},Qv=function(n,t,e,o,r){void 0===o&&(o=!0),void 0===r&&(r=!1);var i=r?function(n){return{dom:{tag:"div",classes:[dh],innerHtml:ym("chevron-down",n)}}}(e.icons):function(n){return{dom:{tag:"div",classes:[dh],innerHtml:ym("chevron-right",n)}}}(e.icons),u=hp({presets:"normal",iconContent:n.icon,textContent:n.text,htmlContent:on.none(),ariaLabel:n.text,caret:on.some(i),checkMark:on.none(),shortcutContent:n.shortcut},e,o);return Dh({data:Ah(n),getApi:function(t){return{isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}},disabled:n.disabled,onAction:Z,onSetup:n.onSetup,triggersSubmenu:!0,itemBehaviours:[]},u,t)},Zv=function(n,t,e){var o=hp({iconContent:on.none(),textContent:n.text,htmlContent:on.none(),ariaLabel:n.text,checkMark:on.some(gp(e.icons)),caret:on.none(),shortcutContent:n.shortcut,presets:"normal",meta:n.meta},e,!0);return Dn(Dh({data:Ah(n),disabled:n.disabled,getApi:function(t){return{setActive:function(n){Cg.set(t,n)},isActive:function(){return Cg.isOn(t)},isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}},onAction:n.onAction,onSetup:n.onSetup,triggersSubmenu:!1,itemBehaviours:[]},o,t),{toggling:{toggleClass:sh,toggleOnExecute:!1,selected:n.active}})},nb=function(t,e){return function(n,t){return Object.prototype.hasOwnProperty.call(n,t)?on.some(n[t]):on.none()}(qv,t.fancytype).map(function(n){return n(t,e)})};(Yv=Xv=Xv||{})[Yv.ContentFocus=0]="ContentFocus",Yv[Yv.UiFocus=1]="UiFocus";function tb(n){return n.icon!==undefined||"togglemenuitem"===n.type||"choicemenuitem"===n.type}function eb(n){return x(n,tb)}function ob(n,t,e,o,r){function i(n){return r?N(N({},n),{shortcut:on.none(),icon:n.text.isSome()?on.none():n.icon}):n}var u=e.shared.providers;switch(n.type){case"menuitem":return function(n){return tt("menuitem",Gp,n)}(n).fold(kv,function(n){return on.some($v(i(n),t,u,o))});case"nestedmenuitem":return function(n){return tt("nestedmenuitem",Xp,n)}(n).fold(kv,function(n){return on.some(Qv(i(n),t,u,o,r))});case"togglemenuitem":return function(n){return tt("togglemenuitem",Yp,n)}(n).fold(kv,function(n){return on.some(Zv(i(n),t,u))});case"separator":return function(n){return tt("separatormenuitem",Lp,n)}(n).fold(kv,function(n){return on.some(Jv(n))});case"fancymenuitem":return function(n){return tt("fancymenuitem",Kp,n)}(n).fold(kv,function(n){return nb(i(n),e)});default:return v.console.error("Unknown item in general menu",n),on.none()}}function rb(n,t,e,o,r,i){var u=1===o,a=!u||eb(n);return Bu(S(n,function(n){return"separator"===n.type?function(n){return tt("Autocompleter.Separator",Lp,n)}(n).fold(kv,function(n){return on.some(Jv(n))}):function(n){return tt("Autocompleter.Item",jp,n)}(n).fold(kv,function(n){return on.some(Kv(n,t,u,"normal",e,r,i,a))})}))}function ib(n,t,e,o,r){var i=eb(t),u=Bu(S(t,function(n){function t(n){return ob(n,e,o,function(n){return r?!n.hasOwnProperty("text"):i}(n),r)}return"nestedmenuitem"===n.type&&n.getSubmenuItems().length<=0?t(An(n,{disabled:!0})):t(n)}));return(r?Ov:Ev)(n,i,u,1,"normal")}function ub(n){return Lg.singleData(n.value,n)}function ab(n){function t(){n.stopPropagation()}function e(){n.preventDefault()}var o=we.fromDom(n.target),r=i(e,t);return function(n,t,e,o,r,i,u){return{target:nn(n),x:nn(t),y:nn(e),stop:o,prevent:r,kill:i,raw:nn(u)}}(o,n.clientX,n.clientY,t,e,r,n)}function cb(n,t,e,o,r){var i=function(t,e){return function(n){t(n)&&e(ab(n))}}(e,o);return n.dom().addEventListener(t,i,r),{unbind:d(mb,n,t,i,r)}}function sb(n,t,e){return function(n,t,e,o){return cb(n,t,e,o,!1)}(n,t,gb,e)}function fb(n,t,e){return function(n,t,e,o){return cb(n,t,e,o,!0)}(n,t,gb,e)}function lb(n,t,e){return Ou(n,t,e).isSome()}var db=function(u,a){function e(){return s.get().isSome()}function c(){e()&&jg.hide(l)}function i(n,t,e,o){n.matchLength=t.text.length;var r=Du(e,function(n){return on.from(n.columns)}).getOr(1);jg.showAt(l,{anchor:"node",root:we.fromDom(u.getBody()),node:on.from(n.element)},Vg.sketch(function(n,t,e,o){var r=e===Xv.ContentFocus?Xl():Gl(),i=Bv(t,o),u=wv(o);return{dom:n.dom,components:n.components,items:n.items,value:n.value,markers:{selectedItem:u.selectedItem,item:u.item},movement:i,fakeFocus:e===Xv.ContentFocus,focusManager:r,menuBehaviours:Jp("auto"!==t?[]:[Ii(function(o,n){ip(o,4,u.item).each(function(n){var t=n.numColumns,e=n.numRows;lg.setGridSize(o,e,t)})})])}}(Ev("autocompleter-value",!0,o,r,"normal"),r,Xv.ContentFocus,"normal"))),jg.getContent(l).each(ad.highlightFirst)}var s=ye(on.none()),f=ye(!1),l=uu(jg.sketch({dom:{tag:"div",classes:["tox-autocompleter"]},components:[],fireDismissalEventInstead:{},inlineBehaviours:ba([Kd("dismissAutocompleter",[lo(Oi(),function(){return d()})])]),lazySink:a.getSink})),d=function(){if(e()){var n=s.get().map(function(n){return n.element});Ip(n.getOr(we.fromDom(u.selection.getNode()))).each(Ro),c(),s.set(on.none()),f.set(!1)}},o=L(function(){return rp(u)}),m=function(n){(function(t){return s.get().map(function(n){return tp(u.dom,u.selection.getRng(),n.triggerChar).bind(function(n){return zp(u,o,n,t)})}).getOrThunk(function(){return op(u,o)})})(n).fold(d,function(r){!function(n){if(!e()){var t=Qg(u,n.range);s.set(on.some({triggerChar:n.triggerChar,element:t,matchLength:n.text.length})),f.set(!1)}}(r.context),r.lookupData.then(function(o){s.get().map(function(n){var t=r.context;if(n.triggerChar===t.triggerChar){var e=function(t,n){var e=Du(n,function(n){return on.from(n.columns)}).getOr(1);return B(n,function(i){var n=i.items;return rb(n,i.matchText,function(o,r){var n=u.selection.getRng();tp(u.dom,n,t).fold(function(){return v.console.error("Lost context. Cursor probably moved")},function(n){var t=n.range,e={hide:function(){d()},reload:function(n){c(),m(n)}};f.set(!0),i.onAction(e,t,o,r),f.set(!1)})},e,Fh.BUBBLE_TO_SANDBOX,a)})}(t.triggerChar,o);0<e.length?i(n,t,o,e):10<=t.text.length-n.matchLength?d():c()}})})})},n={onKeypress:Jg(function(n){27!==n.which&&m()},50),cancelIfNecessary:d,isMenuOpen:function(){return jg.isOpen(l)},isActive:e,isProcessingAction:f.get,getView:function(){return jg.getContent(l)}};Vp(n,u)},mb=function(n,t,e,o){n.dom().removeEventListener(t,e,o)},gb=nn(!0),pb=ab;function hb(e,o){var r=null;return{cancel:function(){null!==r&&(v.clearTimeout(r),r=null)},schedule:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];r=v.setTimeout(function(){e.apply(null,n),r=null},o)}}}function vb(n){var t=n.raw();return t.touches===undefined||1!==t.touches.length?on.none():on.some(t.touches[0])}function bb(e){var o=ye(on.none()),r=ye(!1),i=hb(function(n){e.triggerEvent(pi(),n),r.set(!0)},400),u=K([{key:Ur(),value:function(e){return vb(e).each(function(n){i.cancel();var t={x:nn(n.clientX),y:nn(n.clientY),target:e.target};i.schedule(e),r.set(!1),o.set(on.some(t))}),on.none()}},{key:Wr(),value:function(n){return i.cancel(),vb(n).each(function(t){o.get().each(function(n){!function(n,t){var e=Math.abs(n.clientX-t.x()),o=Math.abs(n.clientY-t.y());return 5<e||5<o}(t,n)||o.set(on.none())})}),on.none()}},{key:Gr(),value:function(t){i.cancel();return o.get().filter(function(n){return jt(n.target(),t.target())}).map(function(n){return r.get()?(t.prevent(),!1):e.triggerEvent(gi(),t)})}}]);return{fireIfReady:function(t,n){return Nn(u,n).bind(function(n){return n(t)})}}}function yb(t,n){var e=ot("Getting GUI events settings",kb,n),o=bb(e),r=S(["touchstart","touchmove","touchend","touchcancel","gesturestart","mousedown","mouseup","mouseover","mousemove","mouseout","click"].concat(["selectstart","input","contextmenu","change","transitionend","drag","dragstart","dragend","dragenter","dragleave","dragover","drop","keyup"]),function(n){return sb(t,n,function(t){o.fireIfReady(t,n).each(function(n){n&&t.kill()}),e.triggerEvent(n,t)&&t.kill()})}),i=ye(on.none()),u=sb(t,"paste",function(t){o.fireIfReady(t,"paste").each(function(n){n&&t.kill()}),e.triggerEvent("paste",t)&&t.kill(),i.set(on.some(v.setTimeout(function(){e.triggerEvent(fi(),t)},0)))}),a=sb(t,"keydown",function(n){e.triggerEvent("keydown",n)?n.kill():!0===e.stopBackspace&&function(n){return 8===n.raw().which&&!vn(["input","textarea"],Ke(n.target()))&&!lb(n.target(),'[contenteditable="true"]')}(n)&&n.prevent()}),c=function(n,t){return Cb?fb(n,"focus",t):sb(n,"focusin",t)}(t,function(n){e.triggerEvent("focusin",n)&&n.kill()}),s=ye(on.none()),f=function(n,t){return Cb?fb(n,"blur",t):sb(n,"focusout",t)}(t,function(n){e.triggerEvent("focusout",n)&&n.kill(),s.set(on.some(v.setTimeout(function(){e.triggerEvent(si(),n)},0)))});return{unbind:function(){bn(r,function(n){n.unbind()}),a.unbind(),c.unbind(),f.unbind(),u.unbind(),i.get().each(v.clearTimeout),s.get().each(v.clearTimeout)}}}function xb(n,t){var e=Nn(n,"target").map(function(n){return n()}).getOr(t);return ye(e)}function wb(n,o,t,e,r,i){var u=n(o,e),a=function(n,t){var e=ye(!1),o=ye(!1);return{stop:function(){e.set(!0)},cut:function(){o.set(!0)},isStopped:e.get,isCut:o.get,event:nn(n),setSource:t.set,getSource:t.get}}(t,r);return u.fold(function(){return i.logEventNoHandlers(o,e),Ob.complete()},function(t){var e=t.descHandler();return nr(e)(a),a.isStopped()?(i.logEventStopped(o,t.element(),e.purpose()),Ob.stopped()):a.isCut()?(i.logEventCut(o,t.element(),e.purpose()),Ob.complete()):Eo(t.element()).fold(function(){return i.logNoParent(o,t.element(),e.purpose()),Ob.complete()},function(n){return i.logEventResponse(o,t.element(),e.purpose()),Ob.resume(n)})})}function Sb(n,t,e){var o=function(n){var t=ye(!1);return{stop:function(){t.set(!0)},cut:Z,isStopped:t.get,isCut:nn(!1),event:nn(n),setSource:r("Cannot set source of a broadcasted event"),getSource:r("Cannot get source of a broadcasted event")}}(t);return bn(n,function(n){var t=n.descHandler();nr(t)(o)}),o.isStopped()}var Cb=Ht().browser.isFirefox(),kb=qn([dt("triggerEvent"),St("stopBackspace",!0)]),Ob=Tn([{stopped:[]},{resume:["element"]},{complete:[]}]),Eb=function(t,e,o,n,r,i){return wb(t,e,o,n,r,i).fold(function(){return!0},function(n){return Eb(t,e,o,n,r,i)},function(){return!1})},Tb=function(n,t,e,o,r){var i=xb(e,o);return Eb(n,t,e,o,i,r)},Bb=yo("element","descHandler"),Db=function(n,t){return{id:nn(n),descHandler:nn(t)}};function Ab(){var i={};return{registerId:function(o,r,n){Cn(n,function(n,t){var e=i[t]!==undefined?i[t]:{};e[r]=tu(n,o),i[t]=e})},unregisterId:function(e){Cn(i,function(n,t){n.hasOwnProperty(e)&&delete n[e]})},filterByType:function(n){return Nn(i,n).map(function(n){return On(n,function(n,t){return Db(t,n)})}).getOr([])},find:function(n,t,e){var o=Vn(t)(i);return jr(e,function(n){return function(e,o){return qi(o).fold(function(){return on.none()},function(n){var t=Vn(n);return e.bind(t).map(function(n){return Bb(o,n)})})}(o,n)},n)}}}function _b(){function o(n){var t=n.element();return qi(t).fold(function(){return function(n,t){var e=Xo(Gi+n);return Yi(t,e),e}("uid-",n.element())},function(n){return n})}var r=Ab(),i={},u=function(n){qi(n.element()).each(function(n){delete i[n],r.unregisterId(n)})};return{find:function(n,t,e){return r.find(n,t,e)},filter:function(n){return r.filterByType(n)},register:function(n){var t=o(n);$(i,t)&&function(n,t){var e=i[t];if(e!==n)throw new Error('The tagId "'+t+'" is already used by: '+Go(e.element())+"\nCannot use it for: "+Go(n.element())+"\nThe conflicting element is"+($e(e.element())?" ":" not ")+"already in the DOM");u(n)}(n,t);var e=[n];r.registerId(e,t,n.events()),i[t]=n},unregister:u,getById:function(n){return Vn(n)(i)}}}function Mb(e){function o(t){return Eo(e.element()).fold(function(){return!0},function(n){return jt(t,n)})}function r(n,t){return u.find(o,n,t)}function i(e){var n=u.filter(li());bn(n,function(n){var t=n.descHandler();nr(t)(e)})}var u=_b(),n=yb(e.element(),{triggerEvent:function(t,e){return Wu(t,e.target(),function(n){return function(n,t,e,o){var r=e.target();return Tb(n,t,e,r,o)}(r,t,e,n)})}}),a={debugInfo:nn("real"),triggerEvent:function(t,e,o){Wu(t,e,function(n){Tb(r,t,o,e,n)})},triggerFocus:function(t,e){qi(t).fold(function(){wa(t)},function(n){Wu(ci(),t,function(n){!function(n,t,e,o,r){var i=xb(e,o);wb(n,t,e,o,i,r)}(r,ci(),{originator:nn(e),kill:Z,prevent:Z,target:nn(t)},t,n)})})},triggerEscape:function(n,t){a.triggerEvent("keydown",n.element(),t.event())},getByUid:function(n){return g(n)},getByDom:function(n){return p(n)},build:uu,addToGui:function(n){s(n)},removeFromGui:function(n){f(n)},addToWorld:function(n){t(n)},removeFromWorld:function(n){c(n)},broadcast:function(n){l(n)},broadcastOn:function(n,t){d(n,t)},broadcastEvent:function(n,t){m(n,t)},isConnected:nn(!0)},t=function(n){n.connect(a),Pr(n.element())||(u.register(n),bn(n.components(),t),a.triggerEvent(bi(),n.element(),{target:nn(n.element())}))},c=function(n){Pr(n.element())||(bn(n.components(),c),u.unregister(n)),n.disconnect()},s=function(n){hs(e,n)},f=function(n){bs(n)},l=function(n){i({universal:nn(!0),data:nn(n)})},d=function(n,t){i({universal:nn(!1),channels:nn(n),data:nn(t)})},m=function(n,t){var e=u.filter(n);return Sb(e,t)},g=function(n){return u.getById(n).fold(function(){return an.error(new Error('Could not find component with uid: "'+n+'" in system.'))},an.value)},p=function(n){var t=qi(n).getOr("not found");return g(t)};return t(e),{root:nn(e),element:e.element,destroy:function(){n.unbind(),Pi(e.element())},add:s,remove:f,getByUid:g,getByDom:p,addToWorld:t,removeFromWorld:c,broadcast:l,broadcastOn:d,broadcastEvent:m}}function Fb(n){return n.getParam("height",Math.max(n.getElement().offsetHeight,200))}function Ib(n){return n.getParam("width",Rh.DOM.getStyle(n.getElement(),"width"))}function Rb(n){return on.from(n.settings.min_width).filter(mn)}function Vb(n){return on.from(n.settings.min_height).filter(mn)}function Nb(n){return on.from(n.getParam("max_width")).filter(mn)}function Hb(n){return on.from(n.getParam("max_height")).filter(mn)}function Pb(n){return!1!==n.getParam("menubar",!0,"boolean")}function zb(n){var t=n.getParam("toolbar",!0),e=!0===t,o=cn(t),r=fn(t)&&0<t.length;return!Xb(n)&&(r||o||e)}function Lb(t){var n=wn(t.settings),e=C(n,function(n){return/^toolbar([1-9])$/.test(n)}),o=S(e,function(n){return t.getParam(n,!1,"string")}),r=C(o,function(n){return"string"==typeof n});return 0<r.length?on.some(r):on.none()}var jb,Ub,Wb=Dl({name:"Container",factory:function(n){var t=n.dom,e=t.attributes,o=c(t,["attributes"]);return{uid:n.uid,dom:N({tag:"div",attributes:N({role:"presentation"},e)},o),components:n.components,behaviours:Is(n.containerBehaviours),events:n.events,domModification:n.domModification,eventOrder:n.eventOrder}},configFields:[St("components",[]),Fs("containerBehaviours",[]),St("events",{}),St("domModification",{}),St("eventOrder",{})]}),Gb=tinymce.util.Tools.resolve("tinymce.EditorManager"),Xb=function(n){return Lb(n).fold(function(){return 0<n.getParam("toolbar",[],"string[]").length},function(){return!0})};(Ub=jb=jb||{})["default"]="",Ub.floating="floating",Ub.sliding="sliding",Ub.scrolling="scrolling";function Yb(n){return n.getParam("toolbar_drawer","","string")}function qb(n){var t=function(n){return n.getParam("fixed_toolbar_container","","string")}(n);return 0<t.length&&n.inline?ku(zr(),t):on.none()}function Kb(n){return n.inline&&qb(n).isSome()}function Jb(n){return n.inline&&!Pb(n)&&!zb(n)&&!Xb(n)}function $b(n){return(n.getParam("toolbar_sticky",!1,"boolean")||n.inline)&&!Kb(n)&&!Jb(n)}function Qb(n){return n.touches===undefined||1!==n.touches.length?on.none():on.some(n.touches[0])}function Zb(n){return ba([vg.config({onFocus:!1===n.selectOnFocus?Z:function(n){var t=n.element(),e=Er(t);t.dom().setSelectionRange(0,e.length)}})])}function ny(n){return{tag:n.tag,attributes:N({type:"text"},n.inputAttributes),styles:n.inputStyles,classes:n.inputClasses}}var ty,ey,oy,ry,iy=function(e){var o=ye(on.none()),r=ye(!1),i=Jg(function(n){e.fire("longpress",N(N({},n),{type:"longpress"})),r.set(!0)},400);e.on("touchstart",function(e){Qb(e).each(function(n){i.cancel();var t={x:nn(n.clientX),y:nn(n.clientY),target:nn(e.target)};i.throttle(e),r.set(!1),o.set(on.some(t))})},!0),e.on("touchmove",function(n){i.cancel(),Qb(n).each(function(t){o.get().each(function(n){!function(n,t){var e=Math.abs(n.clientX-t.x()),o=Math.abs(n.clientY-t.y());return 5<e||5<o}(t,n)||(o.set(on.none()),r.set(!1),e.fire("longpresscancel"))})})},!0),e.on("touchend touchcancel",function(t){i.cancel(),"touchcancel"!==t.type&&o.get().filter(function(n){return n.target().isEqualNode(t.target)}).each(function(){r.get()?t.preventDefault():e.fire("tap",{touches:t.touches}).isDefaultPrevented()&&t.preventDefault()})},!0)},uy=Xo("form-component-change"),ay=Xo("form-close"),cy=Xo("form-cancel"),sy=Xo("form-action"),fy=Xo("form-submit"),ly=Xo("form-block"),dy=Xo("form-unblock"),my=Xo("form-tabchange"),gy=Xo("form-resize"),py=nn([St("prefix","form-field"),Fs("fieldBehaviours",[Zl,Zf])]),hy=nn([Sl({schema:[ct("dom")],name:"label"}),Sl({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:n.text}}}},schema:[ct("text")],name:"aria-descriptor"}),xl({factory:{sketch:function(n){var t=X(n,["factory"]);return n.factory.sketch(t)}},schema:[ct("factory")],name:"field"})]),vy=Al({name:"FormField",configFields:py(),partFields:hy(),factory:function(r,n,t,e){var o=Rs(r.fieldBehaviours,[Zl.config({find:function(n){return qs(n,r,"field")}}),Zf.config({store:{mode:"manual",getValue:function(n){return Zl.getCurrent(n).bind(Zf.getValue)},setValue:function(n,t){Zl.getCurrent(n).each(function(n){Zf.setValue(n,t)})}}})]),i=co([Ii(function(n,t){var o=Js(n,r,["label","field","aria-descriptor"]);o.field().each(function(e){var t=Xo(r.prefix);o.label().each(function(n){Po(n.element(),"for",t),Po(e.element(),"id",t)}),o["aria-descriptor"]().each(function(n){var t=Xo(r.prefix);Po(n.element(),"id",t),Po(e.element(),"aria-describedby",t)})})})]),u={getField:function(n){return qs(n,r,"field")},getLabel:function(n){return qs(n,r,"label")}};return{uid:r.uid,dom:r.dom,components:n,behaviours:o,events:i,apis:u}},apis:{getField:function(n,t){return n.getField(t)},getLabel:function(n,t){return n.getLabel(t)}}}),by=nn([ht("data"),St("inputAttributes",{}),St("inputStyles",{}),St("tag","input"),St("inputClasses",[]),qu("onSetValue"),St("styles",{}),St("eventOrder",{}),Fs("inputBehaviours",[Zf,vg]),St("selectOnFocus",!0)]),yy=Dl({name:"Input",configFields:by(),factory:function(n,t){return{uid:n.uid,dom:ny(n),components:[],behaviours:function(n){return N(N({},Zb(n)),Rs(n.inputBehaviours,[Zf.config({store:{mode:"manual",initialValue:n.data.getOr(undefined),getValue:function(n){return Er(n.element())},setValue:function(n,t){Er(n.element())!==t&&Tr(n.element(),t)}},onSetValue:n.onSetValue})]))}(n),eventOrder:n.eventOrder}}}),xy={},wy={exports:xy};ty=undefined,ey=xy,oy=wy,ry=undefined,function(n){"object"==typeof ey&&void 0!==oy?oy.exports=n():"function"==typeof ty&&ty.amd?ty([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function f(i,u,a){function c(t,n){if(!u[t]){if(!i[t]){var e="function"==typeof ry&&ry;if(!n&&e)return e(t,!0);if(s)return s(t,!0);var o=new Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}var r=u[t]={exports:{}};i[t][0].call(r.exports,function(n){return c(i[t][1][n]||n)},r,r.exports,f,i,u,a)}return u[t].exports}for(var s="function"==typeof ry&&ry,n=0;n<a.length;n++)c(a[n]);return c}({1:[function(n,t,e){var o,r,i=t.exports={};function u(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function c(n){if(o===setTimeout)return setTimeout(n,0);if((o===u||!o)&&setTimeout)return o=setTimeout,setTimeout(n,0);try{return o(n,0)}catch(t){try{return o.call(null,n,0)}catch(t){return o.call(this,n,0)}}}!function(){try{o="function"==typeof setTimeout?setTimeout:u}catch(n){o=u}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(n){r=a}}();var s,f=[],l=!1,d=-1;function m(){l&&s&&(l=!1,s.length?f=s.concat(f):d=-1,f.length&&g())}function g(){if(!l){var n=c(m);l=!0;for(var t=f.length;t;){for(s=f,f=[];++d<t;)s&&s[d].run();d=-1,t=f.length}s=null,l=!1,function e(n){if(r===clearTimeout)return clearTimeout(n);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(n);try{return r(n)}catch(t){try{return r.call(null,n)}catch(t){return r.call(this,n)}}}(n)}}function p(n,t){this.fun=n,this.array=t}function h(){}i.nextTick=function(n){var t=new Array(arguments.length-1);if(1<arguments.length)for(var e=1;e<arguments.length;e++)t[e-1]=arguments[e];f.push(new p(n,t)),1!==f.length||l||c(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,l,t){(function(t){function o(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],f(n,this)}function r(o,r){for(;3===o._state;)o=o._value;0!==o._state?(o._handled=!0,i._immediateFn(function(){var n=1===o._state?r.onFulfilled:r.onRejected;if(null!==n){var t;try{t=n(o._value)}catch(e){return void a(r.promise,e)}u(r.promise,t)}else(1===o._state?u:a)(r.promise,o._value)})):o._deferreds.push(r)}function u(n,t){try{if(t===n)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if(t instanceof i)return n._state=3,n._value=t,void c(n);if("function"==typeof e)return void f(function o(n,t){return function(){n.apply(t,arguments)}}(e,t),n)}n._state=1,n._value=t,c(n)}catch(r){a(n,r)}}function a(n,t){n._state=2,n._value=t,c(n)}function c(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var t=0,e=n._deferreds.length;t<e;t++)r(n,n._deferreds[t]);n._deferreds=null}function s(n,t,e){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof t?t:null,this.promise=e}function f(n,t){var e=!1;try{n(function(n){e||(e=!0,u(t,n))},function(n){e||(e=!0,a(t,n))})}catch(o){if(e)return;e=!0,a(t,o)}}var n,e;n=this,e=setTimeout,i.prototype["catch"]=function(n){return this.then(null,n)},i.prototype.then=function(n,t){var e=new this.constructor(o);return r(this,new s(n,t,e)),e},i.all=function(n){var c=Array.prototype.slice.call(n);return new i(function(r,i){if(0===c.length)return r([]);var u=c.length;function a(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void e.call(n,function(n){a(t,n)},i)}c[t]=n,0==--u&&r(c)}catch(o){i(o)}}for(var n=0;n<c.length;n++)a(n,c[n])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(n){n(t)})},i.reject=function(e){return new i(function(n,t){t(e)})},i.race=function(r){return new i(function(n,t){for(var e=0,o=r.length;e<o;e++)r[e].then(n,t)})},i._immediateFn="function"==typeof t?function(n){t(n)}:function(n){e(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==l&&l.exports?l.exports=i:n.Promise||(n.Promise=i)}).call(this,n("timers").setImmediate)},{timers:3}],3:[function(c,n,s){(function(n,t){var o=c("process/browser.js").nextTick,e=Function.prototype.apply,r=Array.prototype.slice,i={},u=0;function a(n,t){this._id=n,this._clearFn=t}s.setTimeout=function(){return new a(e.call(setTimeout,window,arguments),clearTimeout)},s.setInterval=function(){return new a(e.call(setInterval,window,arguments),clearInterval)},s.clearTimeout=s.clearInterval=function(n){n.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(window,this._id)},s.enroll=function(n,t){clearTimeout(n._idleTimeoutId),n._idleTimeout=t},s.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},s._unrefActive=s.active=function(n){clearTimeout(n._idleTimeoutId);var t=n._idleTimeout;0<=t&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},t))},s.setImmediate="function"==typeof n?n:function(n){var t=u++,e=!(arguments.length<2)&&r.call(arguments,1);return i[t]=!0,o(function(){i[t]&&(e?n.apply(null,e):n.call(null),s.clearImmediate(t))}),t},s.clearImmediate="function"==typeof t?t:function(n){delete i[n]}}).call(this,c("timers").setImmediate,c("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,t,e){var o=n("promise-polyfill"),r="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:r.Promise||o}},{"promise-polyfill":2}]},{},[4])(4)});function Sy(n){v.setTimeout(function(){throw n},0)}function Cy(n){var t=Ke(n);return vn(Hy,t)}function ky(n,t){var e=t.getRoot(n).getOr(n.element());dr(e,t.invalidClass),t.notify.each(function(t){Cy(n.element())&&Po(n.element(),"aria-invalid",!1),t.getContainer(n).each(function(n){No(n,t.validHtml)}),t.onValid(n)})}function Oy(t,n,e,o){var r=n.getRoot(t).getOr(t.element());fr(r,n.invalidClass),n.notify.each(function(n){Cy(t.element())&&Po(t.element(),"aria-invalid",!0),n.getContainer(t).each(function(n){No(n,o)}),n.onInvalid(t,o)})}function Ey(t,n,e){return n.validator.fold(function(){return Ny(an.value(!0))},function(n){return n.validate(t)})}function Ty(t,e,n){return e.notify.each(function(n){n.onValidate(t)}),Ey(t,e).map(function(n){return t.getSystem().isConnected()?n.fold(function(n){return Oy(t,e,0,n),an.error(n)},function(n){return ky(t,e),an.value(n)}):an.error("No longer in system")})}function By(n,t,e,o){var r=Xy(n,t,e,o);return vy.sketch(r)}function Dy(n,t){return vy.parts().label({dom:{tag:"label",classes:["tox-label"],innerHtml:t.translate(n)}})}var Ay,_y,My=wy.exports.boltExport,Fy=function(n){var e=on.none(),t=[],o=function(n){r()?u(n):t.push(n)},r=function(){return e.isSome()},i=function(n){bn(n,u)},u=function(t){e.each(function(n){v.setTimeout(function(){t(n)},0)})};return n(function(n){e=on.some(n),i(t),t=[]}),{get:o,map:function(e){return Fy(function(t){o(function(n){t(e(n))})})},isReady:r}},Iy={nu:Fy,pure:function(t){return Fy(function(n){n(t)})}},Ry=function(e){function n(n){e().then(n,Sy)}return{map:function(n){return Ry(function(){return e().then(n)})},bind:function(t){return Ry(function(){return e().then(function(n){return t(n).toPromise()})})},anonBind:function(n){return Ry(function(){return e().then(function(){return n.toPromise()})})},toLazy:function(){return Iy.nu(n)},toCached:function(){var n=null;return Ry(function(){return null===n&&(n=e()),n})},toPromise:e,get:n}},Vy=function(n){return Ry(function(){return new My(n)})},Ny=function(n){return Ry(function(){return My.resolve(n)})},Hy=["input","textarea"],Py=/* */Object.freeze({markValid:ky,markInvalid:Oy,query:Ey,run:Ty,isInvalid:function(n,t){var e=t.getRoot(n).getOr(n.element());return mr(e,t.invalidClass)}}),zy=/* */Object.freeze({events:function(t,n){return t.validator.map(function(n){return co([lo(n.onEvent,function(n){Ty(n,t).get(l)})].concat(n.validateOnLoad?[Ii(function(n){Ty(n,t).get(Z)})]:[]))}).getOr({})}}),Ly=[ct("invalidClass"),St("getRoot",on.none),wt("notify",[St("aria","alert"),St("getContainer",on.none),St("validHtml",""),qu("onValid"),qu("onInvalid"),qu("onValidate")]),wt("validator",[ct("validate"),St("onEvent","input"),St("validateOnLoad",!0)])],jy=ya({fields:Ly,name:"invalidating",active:zy,apis:Py,extra:{validation:function(e){return function(n){var t=Zf.getValue(n);return Ny(e(t))}}}}),Uy=/* */Object.freeze({exhibit:function(n,t){return Zo({attributes:K([{key:t.tabAttr,value:"true"}])})}}),Wy=[St("tabAttr","data-alloy-tabstop")],Gy=ya({fields:Wy,name:"tabstopping",active:Uy}),Xy=function(n,t,e,o){return{dom:Yy(e),components:n.toArray().concat([t]),fieldBehaviours:ba(o)}},Yy=function(n){return{tag:"div",classes:["tox-form__group"].concat(n)}},qy=/* */Object.freeze({getCoupled:function(n,t,e,o){return e.getOrCreate(n,t,o)}}),Ky=[st("others",nt(an.value,de()))],Jy=ya({fields:Ky,name:"coupling",apis:qy,state:/* */Object.freeze({init:function(n){var i={},t=nn({});return nu({readState:t,getOrCreate:function(e,o,r){var n=wn(o.others);if(n)return Nn(i,r).getOrThunk(function(){var n=Nn(o.others,r).getOrDie("No information found for coupled component: "+r)(e),t=e.getSystem().build(n);return i[r]=t});throw new Error("Cannot find coupled component: "+r+". Known coupled components: "+JSON.stringify(n,null,2))}})}})}),$y=nn("sink"),Qy=nn(Sl({name:$y(),overrides:nn({dom:{tag:"div"},behaviours:ba([Af.config({useFixed:a})]),events:co([vo(ni()),vo(Yr()),vo(ri())])})}));(_y=Ay=Ay||{})[_y.HighlightFirst=0]="HighlightFirst",_y[_y.HighlightNone=1]="HighlightNone";function Zy(n,t){var e=n.getHotspot(t).getOr(t),o=n.getAnchorOverrides();return n.layouts.fold(function(){return{anchor:"hotspot",hotspot:e,overrides:o}},function(n){return{anchor:"hotspot",hotspot:e,overrides:o,layouts:n}})}function nx(n,t,e,o,r,i,u){return function(n,t,r,e,i,o,u){var a=function(n,t,e){return(0,n.fetch)(e).map(t)}(n,t,e),c=Sw(e,n);return a.map(function(n){return n.bind(function(n){return on.from(Lg.sketch(N(N({},o.menu()),{uid:Yo(""),data:n,highlightImmediately:u===Ay.HighlightFirst,onOpenMenu:function(n,t){var e=c().getOrDie();Af.position(e,r,t),zf.decloak(i)},onOpenSubmenu:function(n,t,e){var o=c().getOrDie();Af.position(o,{anchor:"submenu",item:t},e),zf.decloak(i)},onRepositionMenu:function(n,t,e){var o=c().getOrDie();Af.position(o,r,t),bn(e,function(n){Af.position(o,{anchor:"submenu",item:n.triggeringItem},n.triggeredMenu)})},onEscape:function(){return vg.focus(e),zf.close(i),on.some(!0)}})))})})}(n,t,Zy(n,e),e,o,r,u).map(function(n){return n.fold(function(){zf.isOpen(o)&&zf.close(o)},function(n){zf.cloak(o),zf.open(o,n),i(o)}),o})}function tx(n,t,e,o,r,i,u){return zf.close(o),Ny(o)}function ex(n,t,e,o,r,i){var u=Jy.getCoupled(e,"sandbox");return(zf.isOpen(u)?tx:nx)(n,t,e,u,o,r,i)}function ox(n,t,e){var o=Zl.getCurrent(t).getOr(t),r=mu(n.element());e?yr(o.element(),"min-width",r+"px"):function(n,t){Vu.set(n,t)}(o.element(),r)}function rx(n){zf.getState(n).each(function(n){Lg.repositionMenus(n)})}function ix(o,r,i){var u=Eu(),n=Sw(r,o);return{dom:{tag:"div",classes:o.sandboxClasses,attributes:{id:u.id(),role:"listbox"}},behaviours:tl(o.sandboxBehaviours,[Zf.config({store:{mode:"memory",initialValue:r}}),zf.config({onOpen:function(n,t){var e=Zy(o,r);u.link(r.element()),o.matchWidth&&ox(e.hotspot,t,o.useMinWidth),o.onOpen(e,n,t),i!==undefined&&i.onOpen!==undefined&&i.onOpen(n,t)},onClose:function(n,t){u.unlink(r.element()),i!==undefined&&i.onClose!==undefined&&i.onClose(n,t)},isPartOf:function(n,t,e){return Lu(t,e)||Lu(r,e)},getAttachPoint:function(){return n().getOrDie()}}),Zl.config({find:function(n){return zf.getState(n).bind(function(n){return Zl.getCurrent(n)})}}),lc.config({channels:N(N({},Es({isExtraPart:nn(!1)})),Ts({isExtraPart:nn(!1),doReposition:rx}))})])}}function ux(n){var t=Jy.getCoupled(n,"sandbox");rx(t)}function ax(){return[St("sandboxClasses",[]),nl("sandboxBehaviours",[Zl,lc,zf,Zf])]}function cx(e,t,o){function r(n,t){ro(n,Bw,{value:t})}var n=vy.parts().field({factory:yy,inputClasses:["tox-textfield"],onSetValue:function(n){return jy.run(n).get(function(){})},inputBehaviours:ba([Gy.config({}),jy.config({invalidClass:"tox-textbox-field-invalid",getRoot:function(n){return Eo(n.element())},notify:{onValid:function(n){var t=Zf.getValue(n);ro(n,Tw,{color:t})}},validator:{validateOnLoad:!1,validate:function(n){var t=Zf.getValue(n);if(0===t.length)return Ny(an.value(!0));var e=we.fromTag("span");yr(e,"background-color",t);var o=Sr(e,"background-color").fold(function(){return an.error("blah")},function(n){return an.value(t)});return Ny(o)}}})]),selectOnFocus:!1}),i=e.label.map(function(n){return Dy(n,t.providers)}),u=vm(function(e,o){return Ow.sketch({dom:e.dom,components:e.components,toggleClass:"mce-active",dropdownBehaviours:ba([Ew.config({}),Gy.config({})]),layouts:e.layouts,sandboxClasses:["tox-dialog__popups"],lazySink:o.getSink,fetch:function(t){return Vy(function(n){return e.fetch(n)}).map(function(n){return on.from(ub(Dn(Tv(Xo("menu-value"),n,function(n){e.onItemAction(t,n)},e.columns,e.presets,Fh.CLOSE_ON_EXECUTE,function(){return!1},o.providers),{movement:Bv(e.columns,e.presets)})))})},parts:{menu:Sv(0,0,e.presets)}})}({dom:{tag:"span",attributes:{"aria-label":t.providers.translate("Color swatch")}},layouts:on.some({onRtl:function(){return[ua]},onLtr:function(){return[aa]}}),components:[],fetch:Uv.getFetch(o.getColors(),o.hasCustomColors()),columns:o.getColorCols(),presets:"color",onItemAction:function(n,e){u.getOpt(n).each(function(t){"custom"===e?o.colorPicker(function(n){n.fold(function(){return oo(t,Dw)},function(n){r(t,n),Vv(n)})},"#ffffff"):r(t,"remove"===e?"":e)})}},t));return vy.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:i.toArray().concat([{dom:{tag:"div",classes:["tox-color-input"]},components:[n,u.asSpec()]}]),fieldBehaviours:ba([Kd("form-field-events",[lo(Tw,function(n,t){u.getOpt(n).each(function(n){yr(n.element(),"background-color",t.event().color())}),ro(n,uy,{name:e.name})}),lo(Bw,function(t,e){vy.getField(t).each(function(n){Zf.setValue(n,e.event().value()),Zl.getCurrent(t).each(vg.focus)})}),lo(Dw,function(t,n){vy.getField(t).each(function(n){Zl.getCurrent(t).each(vg.focus)})})])])})}function sx(n,t,e){return{hue:nn(n),saturation:nn(t),value:nn(e)}}function fx(t){return Sl({name:t+"-edge",overrides:function(n){return n.model.manager.edgeActions[t].fold(function(){return{}},function(o){return{events:co([mo(Ur(),o,[n]),mo(Yr(),o,[n]),mo(qr(),function(n,t,e){e.mouseIsDown.get()&&o(n,e)},[n])])}})}})}function lx(n){var t=n.event().raw();if(function(n){return-1!==n.type.indexOf("touch")}(t)){var e=t;return e.touches!==undefined&&1===e.touches.length?on.some(e.touches[0]).map(function(n){return Iu(n.clientX,n.clientY)}):on.none()}var o=t;return o.clientX!==undefined?on.some(o).map(function(n){return Iu(n.clientX,n.clientY)}):on.none()}function dx(n){return n.model.minX}function mx(n){return n.model.minY}function gx(n){return n.model.minX-1}function px(n){return n.model.minY-1}function hx(n){return n.model.maxX}function vx(n){return n.model.maxY}function bx(n){return n.model.maxX+1}function yx(n){return n.model.maxY+1}function xx(n,t,e){return t(n)-e(n)}function wx(n){return xx(n,hx,dx)}function Sx(n){return xx(n,vx,mx)}function Cx(n){return wx(n)/2}function kx(n){return Sx(n)/2}function Ox(n){return n.stepSize}function Ex(n){return n.snapToGrid}function Tx(n){return n.snapStart}function Bx(n){return n.rounded}function Dx(n,t){return n[t+"-edge"]!==undefined}function Ax(n){return Dx(n,"left")}function _x(n){return Dx(n,"right")}function Mx(n){return Dx(n,"top")}function Fx(n){return Dx(n,"bottom")}function Ix(n){return n.model.value.get()}function Rx(n){return{x:nn(n)}}function Vx(n){return{y:nn(n)}}function Nx(n,t){return{x:nn(n),y:nn(t)}}function Hx(n,t){ro(n,jw(),{value:t})}function Px(n,t,e,o){return n<t?n:e<n?e:n===t?t-1:Math.max(t,n-o)}function zx(n,t,e,o){return e<n?n:n<t?t:n===e?e+1:Math.min(e,n+o)}function Lx(n,t,e){return Math.max(t,Math.min(e,n))}function jx(n){var t=n.min,e=n.max,o=n.range,r=n.value,i=n.step,u=n.snap,a=n.snapStart,c=n.rounded,s=n.hasMinEdge,f=n.hasMaxEdge,l=n.minBound,d=n.maxBound,m=n.screenRange,g=s?t-1:t,p=f?e+1:e;if(r<l)return g;if(d<r)return p;var h=function(n,t,e){return Math.min(e,Math.max(n,t))-t}(r,l,d),v=Lx(h/m*o+t,g,p);return u&&t<=v&&v<=e?function(u,e,a,c,n){return n.fold(function(){var n=u-e,t=Math.round(n/c)*c;return Lx(e+t,e-1,a+1)},function(n){var t=(u-n)%c,e=Math.round(t/c),o=Math.floor((u-n)/c),r=Math.floor((a-n)/c),i=n+Math.min(r,o+e)*c;return Math.max(n,i)})}(v,t,e,i,a):c?Math.round(v):v}function Ux(n){var t=n.min,e=n.max,o=n.range,r=n.value,i=n.hasMinEdge,u=n.hasMaxEdge,a=n.maxBound,c=n.maxOffset,s=n.centerMinEdge,f=n.centerMaxEdge;return r<t?i?0:s:e<r?u?a:f:(r-t)/o*c}function Wx(n){return n.element().dom().getBoundingClientRect()}function Gx(n,t){return n[t]}function Xx(n){var t=Wx(n);return Gx(t,Uw)}function Yx(n){var t=Wx(n);return Gx(t,"right")}function qx(n){var t=Wx(n);return Gx(t,"top")}function Kx(n){var t=Wx(n);return Gx(t,"bottom")}function Jx(n){var t=Wx(n);return Gx(t,"width")}function $x(n){var t=Wx(n);return Gx(t,"height")}function Qx(n,t,e){return(n+t)/2-e}function Zx(n,t){var e=Wx(n),o=Wx(t),r=Gx(e,Uw),i=Gx(e,"right"),u=Gx(o,Uw);return Qx(r,i,u)}function nw(n,t){var e=Wx(n),o=Wx(t),r=Gx(e,"top"),i=Gx(e,"bottom"),u=Gx(o,"top");return Qx(r,i,u)}function tw(n,t){ro(n,jw(),{value:t})}function ew(n){return{x:nn(n)}}function ow(n,t,e){var o={min:dx(t),max:hx(t),range:wx(t),value:e,step:Ox(t),snap:Ex(t),snapStart:Tx(t),rounded:Bx(t),hasMinEdge:Ax(t),hasMaxEdge:_x(t),minBound:Xx(n),maxBound:Yx(n),screenRange:Jx(n)};return jx(o)}function rw(e){return function(n,t){return function(n,t,e){var o=(0<n?zx:Px)(Ix(e).x(),dx(e),hx(e),Ox(e));return tw(t,ew(o)),on.some(o)}(e,n,t).map(function(){return!0})}}function iw(n,t,e,o,r,i){var u=function(t,n,e,o,r){var i=Jx(t),u=o.bind(function(n){return on.some(Zx(n,t))}).getOr(0),a=r.bind(function(n){return on.some(Zx(n,t))}).getOr(i),c={min:dx(n),max:hx(n),range:wx(n),value:e,hasMinEdge:Ax(n),hasMaxEdge:_x(n),minBound:Xx(t),minOffset:0,maxBound:Yx(t),maxOffset:i,centerMinEdge:u,centerMaxEdge:a};return Ux(c)}(t,i,e,o,r);return Xx(t)-Xx(n)+u}function uw(n,t){ro(n,jw(),{value:t})}function aw(n){return{y:nn(n)}}function cw(n,t,e){var o={min:mx(t),max:vx(t),range:Sx(t),value:e,step:Ox(t),snap:Ex(t),snapStart:Tx(t),rounded:Bx(t),hasMinEdge:Mx(t),hasMaxEdge:Fx(t),minBound:qx(n),maxBound:Kx(n),screenRange:$x(n)};return jx(o)}function sw(e){return function(n,t){return function(n,t,e){var o=(0<n?zx:Px)(Ix(e).y(),mx(e),vx(e),Ox(e));return uw(t,aw(o)),on.some(o)}(e,n,t).map(function(){return!0})}}function fw(n,t,e,o,r,i){var u=function(t,n,e,o,r){var i=$x(t),u=o.bind(function(n){return on.some(nw(n,t))}).getOr(0),a=r.bind(function(n){return on.some(nw(n,t))}).getOr(i),c={min:mx(n),max:vx(n),range:Sx(n),value:e,hasMinEdge:Mx(n),hasMaxEdge:Fx(n),minBound:qx(t),minOffset:0,maxBound:Kx(t),maxOffset:i,centerMinEdge:u,centerMaxEdge:a};return Ux(c)}(t,i,e,o,r);return qx(t)-qx(n)+u}function lw(n,t){ro(n,jw(),{value:t})}function dw(n,t){return{x:nn(n),y:nn(t)}}function mw(e,o){return function(n,t){return function(n,t,e,o){var r=0<n?zx:Px,i=t?Ix(o).x():r(Ix(o).x(),dx(o),hx(o),Ox(o)),u=t?r(Ix(o).y(),mx(o),vx(o),Ox(o)):Ix(o).y();return lw(e,dw(i,u)),on.some(i)}(e,o,n,t).map(function(){return!0})}}function gw(n){return"<alloy.field."+n+">"}function pw(n){return function(n){return CS[n]}(n)}function hw(n,t,e){return Zf.config(Dn({store:{mode:"manual",getValue:t,setValue:e}},n.map(function(n){return{store:{initialValue:n}}}).getOr({})))}function vw(n,t,e){return hw(n,function(n){return t(n.element())},function(n,t){return e(n.element(),t)})}function bw(e,t){function o(n,t){t.stop()}function r(n){return function(t,e){bn(n,function(n){n(t,e)})}}function i(n,t){if(!Ch.isDisabled(n)){var e=t.event().raw();a(n,e.dataTransfer.files)}}function u(n,t){var e=t.event().raw().target.files;a(n,e)}var a=function(n,t){Zf.setValue(n,function(n){var t=new RegExp("("+".jpg,.jpeg,.png,.gif".split(/\s*,\s*/).join("|")+")$","i");return C(xn(n),function(n){return t.test(n.name)})}(t)),ro(n,uy,{name:e.name})},c=vm({dom:{tag:"input",attributes:{type:"file",accept:"image/*"},styles:{display:"none"}},behaviours:ba([Kd("input-file-events",[vo(ri()),vo(gi())])])}),n=e.label.map(function(n){return Dy(n,t)}),s=vy.parts().field({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"div",classes:["tox-dropzone-container"]},behaviours:ba([DS([]),xS(),Ch.config({}),Cg.config({toggleClass:"dragenter",toggleOnExecute:!1}),Kd("dropzone-events",[lo("dragenter",r([o,Cg.toggle])),lo("dragleave",r([o,Cg.toggle])),lo("dragover",o),lo("drop",r([o,i])),lo(oi(),u)])]),components:[{dom:{tag:"div",classes:["tox-dropzone"],styles:{}},components:[{dom:{tag:"p",innerHtml:t.translate("Drop an image here")}},Gg.sketch({dom:{tag:"button",innerHtml:t.translate("Browse for an image"),styles:{position:"relative"},classes:["tox-button","tox-button--secondary"]},components:[c.asSpec()],action:function(n){c.get(n).element().dom().click()},buttonBehaviours:ba([Gy.config({})])})]}]}}}});return By(n,s,["tox-form__group--stretched"],[])}function yw(n){return{dom:{tag:"div",styles:{width:"1px",height:"1px",outline:"none"},attributes:{tabindex:"0"},classes:n},behaviours:ba([vg.config({ignore:!0}),Gy.config({})])}}function xw(n,t){ro(n,ni(),{raw:{which:9,shiftKey:t}})}function ww(n,t){var e=RS&&n.sandboxed,o=N(N({},n.label.map(function(n){return{title:n}}).getOr({})),e?{sandbox:"allow-scripts allow-same-origin"}:{}),r=function(o){var r=ye("");return{getValue:function(n){return r.get()},setValue:function(n,t){if(o)Po(n.element(),"srcdoc",t);else{Po(n.element(),"src","javascript:''");var e=n.element().dom().contentWindow.document;e.open(),e.write(t),e.close()}r.set(t)}}}(e),i=n.label.map(function(n){return Dy(n,t)}),u=vy.parts().field({factory:{sketch:function(n){return IS({uid:n.uid,dom:{tag:"iframe",attributes:o},behaviours:ba([Gy.config({}),vg.config({}),TS(on.none(),r.getValue,r.setValue)])})}}});return By(i,u,["tox-form__group--stretched"],[])}var Sw=function(t,n){return t.getSystem().getByUid(n.uid+"-"+$y()).map(function(n){return function(){return an.value(n)}}).getOrThunk(function(){return n.lazySink.fold(function(){return function(){return an.error(new Error("No internal sink is specified, nor could an external sink be found"))}},function(n){return function(){return n(t)}})})},Cw=nn([ct("dom"),ct("fetch"),qu("onOpen"),Ku("onExecute"),St("getHotspot",on.some),St("getAnchorOverrides",nn({})),St("layouts",on.none()),Fs("dropdownBehaviours",[Cg,Jy,lg,vg]),ct("toggleClass"),St("eventOrder",{}),ht("lazySink"),St("matchWidth",!1),St("useMinWidth",!1),ht("role")].concat(ax())),kw=nn([wl({schema:[Gu()],name:"menu",defaults:function(n){return{onExecute:n.onExecute}}}),Qy()]),Ow=Al({name:"Dropdown",configFields:Cw(),partFields:kw(),factory:function(t,n,e,o){function r(n){zf.getState(n).each(function(n){Lg.highlightPrimary(n)})}function i(n,t){return io(n),on.some(!0)}var u,a,c={expand:function(n){Cg.isOn(n)||ex(t,function(n){return n},n,o,Z,Ay.HighlightNone).get(Z)},open:function(n){Cg.isOn(n)||ex(t,function(n){return n},n,o,Z,Ay.HighlightFirst).get(Z)},isOpen:Cg.isOn,close:function(n){Cg.isOn(n)&&ex(t,function(n){return n},n,o,Z,Ay.HighlightFirst).get(Z)},repositionMenus:function(n){Cg.isOn(n)&&ux(n)}};return{uid:t.uid,dom:t.dom,components:n,behaviours:Rs(t.dropdownBehaviours,[Cg.config({toggleClass:t.toggleClass,aria:{mode:"expanded"}}),Jy.config({others:{sandbox:function(n){return ix(t,n,{onOpen:function(){Cg.on(n)},onClose:function(){Cg.off(n)}})}}}),lg.config({mode:"special",onSpace:i,onEnter:i,onDown:function(n,t){if(Ow.isOpen(n)){var e=Jy.getCoupled(n,"sandbox");r(e)}else Ow.open(n);return on.some(!0)},onEscape:function(n,t){return Ow.isOpen(n)?(Ow.close(n),on.some(!0)):on.none()}}),vg.config({})]),events:rm(on.some(function(n){ex(t,function(n){return n},n,o,r,Ay.HighlightFirst).get(Z)})),eventOrder:N(N({},t.eventOrder),(u={},u[di()]=["disabling","toggling","alloy.base.behaviour"],u)),apis:c,domModification:{attributes:N(N({"aria-haspopup":"true"},t.role.fold(function(){return{}},function(n){return{role:n}})),"button"===t.dom.tag?{type:(a="type",Nn(t.dom,"attributes").bind(function(n){return Nn(n,a)})).getOr("button")}:{})}}},apis:{open:function(n,t){return n.open(t)},expand:function(n,t){return n.expand(t)},close:function(n,t){return n.close(t)},isOpen:function(n,t){return n.isOpen(t)},repositionMenus:function(n,t){return n.repositionMenus(t)}}}),Ew=ya({fields:[],name:"unselecting",active:/* */Object.freeze({events:function(n){return co([so(ui(),nn(!0))])},exhibit:function(n,t){return Zo({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),Tw=Xo("color-input-change"),Bw=Xo("color-swatch-change"),Dw=Xo("color-picker-cancel"),Aw=nn(Xo("rgb-hex-update")),_w=nn(Xo("slider-update")),Mw=nn(Xo("palette-update")),Fw=Sl({schema:[ct("dom")],name:"label"}),Iw=fx("top-left"),Rw=fx("top"),Vw=fx("top-right"),Nw=fx("right"),Hw=fx("bottom-right"),Pw=fx("bottom"),zw=fx("bottom-left"),Lw=[Fw,fx("left"),Nw,Rw,Pw,Iw,Vw,zw,Hw,xl({name:"thumb",defaults:nn({dom:{styles:{position:"absolute"}}}),overrides:function(n){return{events:co([po(Ur(),n,"spectrum"),po(Wr(),n,"spectrum"),po(Gr(),n,"spectrum"),po(Yr(),n,"spectrum"),po(qr(),n,"spectrum"),po(Jr(),n,"spectrum")])}}}),xl({schema:[At("mouseIsDown",function(){return ye(!1)})],name:"spectrum",overrides:function(e){function o(t,n){return r.getValueFromEvent(n).map(function(n){return r.setValueFrom(t,e,n)})}var r=e.model.manager;return{behaviours:ba([lg.config({mode:"special",onLeft:function(n){return r.onLeft(n,e)},onRight:function(n){return r.onRight(n,e)},onUp:function(n){return r.onUp(n,e)},onDown:function(n){return r.onDown(n,e)}}),vg.config({})]),events:co([lo(Ur(),o),lo(Wr(),o),lo(Yr(),o),lo(qr(),function(n,t){e.mouseIsDown.get()&&o(n,t)})])}}})],jw=nn("slider.change.value"),Uw="left",Ww=rw(-1),Gw=rw(1),Xw=on.none,Yw=on.none,qw={"top-left":on.none(),top:on.none(),"top-right":on.none(),right:on.some(function(n,t){Hx(n,Rx(bx(t)))}),"bottom-right":on.none(),bottom:on.none(),"bottom-left":on.none(),left:on.some(function(n,t){Hx(n,Rx(gx(t)))})},Kw=/* */Object.freeze({setValueFrom:function(n,t,e){var o=ow(n,t,e),r=ew(o);return tw(n,r),o},setToMin:function(n,t){var e=dx(t);tw(n,ew(e))},setToMax:function(n,t){var e=hx(t);tw(n,ew(e))},findValueOfOffset:ow,getValueFromEvent:function(n){return lx(n).map(function(n){return n.left()})},findPositionOfValue:iw,setPositionFromValue:function(n,t,e,o){var r=Ix(e),i=iw(n,o.getSpectrum(n),r.x(),o.getLeftEdge(n),o.getRightEdge(n),e),u=mu(t.element())/2;yr(t.element(),"left",i-u+"px")},onLeft:Ww,onRight:Gw,onUp:Xw,onDown:Yw,edgeActions:qw}),Jw=on.none,$w=on.none,Qw=sw(-1),Zw=sw(1),nS={"top-left":on.none(),top:on.some(function(n,t){Hx(n,Vx(px(t)))}),"top-right":on.none(),right:on.none(),"bottom-right":on.none(),bottom:on.some(function(n,t){Hx(n,Vx(yx(t)))}),"bottom-left":on.none(),left:on.none()},tS=/* */Object.freeze({setValueFrom:function(n,t,e){var o=cw(n,t,e),r=aw(o);return uw(n,r),o},setToMin:function(n,t){var e=mx(t);uw(n,aw(e))},setToMax:function(n,t){var e=vx(t);uw(n,aw(e))},findValueOfOffset:cw,getValueFromEvent:function(n){return lx(n).map(function(n){return n.top()})},findPositionOfValue:fw,setPositionFromValue:function(n,t,e,o){var r=Ix(e),i=fw(n,o.getSpectrum(n),r.y(),o.getTopEdge(n),o.getBottomEdge(n),e),u=su(t.element())/2;yr(t.element(),"top",i-u+"px")},onLeft:Jw,onRight:$w,onUp:Qw,onDown:Zw,edgeActions:nS}),eS=mw(-1,!1),oS=mw(1,!1),rS=mw(-1,!0),iS=mw(1,!0),uS={"top-left":on.some(function(n,t){Hx(n,Nx(gx(t),px(t)))}),top:on.some(function(n,t){Hx(n,Nx(Cx(t),px(t)))}),"top-right":on.some(function(n,t){Hx(n,Nx(bx(t),px(t)))}),right:on.some(function(n,t){Hx(n,Nx(bx(t),kx(t)))}),"bottom-right":on.some(function(n,t){Hx(n,Nx(bx(t),yx(t)))}),bottom:on.some(function(n,t){Hx(n,Nx(Cx(t),yx(t)))}),"bottom-left":on.some(function(n,t){Hx(n,Nx(gx(t),yx(t)))}),left:on.some(function(n,t){Hx(n,Nx(gx(t),kx(t)))})},aS=/* */Object.freeze({setValueFrom:function(n,t,e){var o=ow(n,t,e.left()),r=cw(n,t,e.top()),i=dw(o,r);return lw(n,i),i},setToMin:function(n,t){var e=dx(t),o=mx(t);lw(n,dw(e,o))},setToMax:function(n,t){var e=hx(t),o=vx(t);lw(n,dw(e,o))},getValueFromEvent:function(n){return lx(n)},setPositionFromValue:function(n,t,e,o){var r=Ix(e),i=iw(n,o.getSpectrum(n),r.x(),o.getLeftEdge(n),o.getRightEdge(n),e),u=fw(n,o.getSpectrum(n),r.y(),o.getTopEdge(n),o.getBottomEdge(n),e),a=mu(t.element())/2,c=su(t.element())/2;yr(t.element(),"left",i-a+"px"),yr(t.element(),"top",u-c+"px")},onLeft:eS,onRight:oS,onUp:rS,onDown:iS,edgeActions:uS}),cS=Al({name:"Slider",configFields:[St("stepSize",1),St("onChange",Z),St("onChoose",Z),St("onInit",Z),St("onDragStart",Z),St("onDragEnd",Z),St("snapToGrid",!1),St("rounded",!0),ht("snapStart"),st("model",it("mode",{x:[St("minX",0),St("maxX",100),At("value",function(n){return ye(n.mode.minX)}),ct("getInitialValue"),Qu("manager",Kw)],y:[St("minY",0),St("maxY",100),At("value",function(n){return ye(n.mode.minY)}),ct("getInitialValue"),Qu("manager",tS)],xy:[St("minX",0),St("maxX",100),St("minY",0),St("maxY",100),At("value",function(n){return ye({x:nn(n.mode.minX),y:nn(n.mode.minY)})}),ct("getInitialValue"),Qu("manager",aS)]})),Fs("sliderBehaviours",[lg,Zf]),At("mouseIsDown",function(){return ye(!1)})],partFields:Lw,factory:function(i,n,t,e){function u(n){return Ks(n,i,"thumb")}function a(n){return Ks(n,i,"spectrum")}function o(n){return qs(n,i,"left-edge")}function r(n){return qs(n,i,"right-edge")}function c(n){return qs(n,i,"top-edge")}function s(n){return qs(n,i,"bottom-edge")}function f(n,t){v.setPositionFromValue(n,t,i,{getLeftEdge:o,getRightEdge:r,getTopEdge:c,getBottomEdge:s,getSpectrum:a})}function l(n,t){h.value.set(t);var e=u(n);return f(n,e),i.onChange(n,e,t),on.some(!0)}function d(e){var n=i.mouseIsDown.get();i.mouseIsDown.set(!1),n&&qs(e,i,"thumb").each(function(n){var t=h.value.get();i.onChoose(e,n,t)})}function m(n,t){t.stop(),i.mouseIsDown.set(!0),i.onDragStart(n,u(n))}function g(n,t){t.stop(),i.onDragEnd(n,u(n)),d(n)}var p,h=i.model,v=h.manager;return{uid:i.uid,dom:i.dom,components:n,behaviours:Rs(i.sliderBehaviours,[lg.config({mode:"special",focusIn:function(n){return qs(n,i,"spectrum").map(lg.focusIn).map(nn(!0))}}),Zf.config({store:{mode:"manual",getValue:function(n){return h.value.get()}}}),lc.config({channels:(p={},p[Uf()]={onReceive:d},p)})]),events:co([lo(jw(),function(n,t){l(n,t.event().value())}),Ii(function(n,t){var e=h.getInitialValue();h.value.set(e);var o=u(n);f(n,o);var r=a(n);i.onInit(n,o,r,h.value.get())}),lo(Ur(),m),lo(Gr(),g),lo(Yr(),m),lo(Jr(),g)]),apis:{resetToMin:function(n){v.setToMin(n,i)},resetToMax:function(n){v.setToMax(n,i)},changeValue:l,refresh:f},domModification:{styles:{position:"relative"}}}},apis:{resetToMin:function(n,t){n.resetToMin(t)},resetToMax:function(n,t){n.resetToMax(t)},refresh:function(n,t){n.refresh(t)}}}),sS=function(n,t){var e=cS.parts().spectrum({dom:{tag:"div",classes:[t("hue-slider-spectrum")],attributes:{role:"presentation"}}}),o=cS.parts().thumb({dom:{tag:"div",classes:[t("hue-slider-thumb")],attributes:{role:"presentation"}}});return cS.sketch({dom:{tag:"div",classes:[t("hue-slider")],attributes:{role:"presentation"}},rounded:!1,model:{mode:"y",getInitialValue:nn({y:nn(0)})},components:[e,o],sliderBehaviours:ba([vg.config({})]),onChange:function(n,t,e){ro(n,_w(),{value:e})}})},fS=[Fs("formBehaviours",[Zf])],lS=function(o,n,t){return{uid:o.uid,dom:o.dom,components:n,behaviours:Rs(o.formBehaviours,[Zf.config({store:{mode:"manual",getValue:function(n){var t=$s(n,o);return P(t,function(n,t){return n().bind(function(n){return function(n,t){return n.fold(function(){return an.error(t)},an.value)}(Zl.getCurrent(n),"missing current")}).map(Zf.getValue)})},setValue:function(e,n){Cn(n,function(t,n){qs(e,o,n).each(function(n){Zl.getCurrent(n).each(function(n){Zf.setValue(n,t)})})})}}})]),apis:{getField:function(n,t){return qs(n,o,t).bind(Zl.getCurrent)}}}},dS={getField:$o(function(n,t,e){return n.getField(t,e)}),sketch:function(n){var e,t=(e=[],{field:function(n,t){return e.push(n),Us("form",gw(n),t)},record:function(){return e}}),o=n(t),r=t.record(),i=S(r,function(n){return xl({name:n,pname:gw(n)})});return of("form",fS,i,lS,o)}},mS=Xo("valid-input"),gS=Xo("invalid-input"),pS=Xo("validating-input"),hS="colorcustom.rgb.",vS=function(d,m,g,p){function h(n,t,e,o,r){var i=d(hS+"range"),u=[vy.parts().label({dom:{tag:"label",innerHtml:e,attributes:{"aria-label":o}}}),vy.parts().field({data:r,factory:yy,inputAttributes:N({type:"text"},"hex"===t?{"aria-live":"polite"}:{}),inputClasses:[m("textfield")],inputBehaviours:ba([function(t,o){return jy.config({invalidClass:m("invalid"),notify:{onValidate:function(n){ro(n,pS,{type:t})},onValid:function(n){ro(n,mS,{type:t,value:Zf.getValue(n)})},onInvalid:function(n){ro(n,gS,{type:t,value:Zf.getValue(n)})}},validator:{validate:function(n){var t=Zf.getValue(n),e=o(t)?an.value(!0):an.error(d("aria.input.invalid"));return Ny(e)},validateOnLoad:!1}})}(t,n),Gy.config({})]),onSetValue:function(n){jy.isInvalid(n)&&jy.run(n).get(Z)}})],a="hex"!==t?[vy.parts()["aria-descriptor"]({text:i})]:[];return{dom:{tag:"div",attributes:{role:"presentation"}},components:u.concat(a)}}function v(n,t){var e=t.red(),o=t.green(),r=t.blue();Zf.setValue(n,{red:e,green:o,blue:r})}function b(n,t){y.getOpt(n).each(function(n){yr(n.element(),"background-color","#"+t.value())})}var y=vm({dom:{tag:"div",classes:[m("rgba-preview")],styles:{"background-color":"white"},attributes:{role:"presentation"}}});return Dl({factory:function(){function r(n){return u[n]().get()}function i(n,t){u[n]().set(t)}function t(n,t){var e=t.event();"hex"!==e.type()?i(e.type(),on.none()):p(n)}function o(e,n,t){var o=parseInt(t,10);i(n,on.some(o)),r("red").bind(function(e){return r("green").bind(function(t){return r("blue").map(function(n){return Wh(e,t,n,1)})})}).each(function(n){var t=function(t,n){var e=Uh(n);return dS.getField(t,"hex").each(function(n){vg.isFocused(n)||Zf.setValue(t,{hex:e.value()})}),e}(e,n);b(e,t)})}function e(n,t){var e=t.event();!function(n){return"hex"===n.type()}(e)?o(n,e.type(),e.value()):function(n,t){g(n);var e=Ph(t);i("hex",on.some(t));var o=Yh(e);v(n,o),a(o),ro(n,Aw(),{hex:e}),b(n,e)}(n,e.value())}function n(n){return{label:d(hS+n+".label"),description:d(hS+n+".description")}}var u={red:nn(ye(on.some(255))),green:nn(ye(on.some(255))),blue:nn(ye(on.some(255))),hex:nn(ye(on.some("ffffff")))},a=function(n){var t=n.red(),e=n.green(),o=n.blue();i("red",on.some(t)),i("green",on.some(e)),i("blue",on.some(o))},c=n("red"),s=n("green"),f=n("blue"),l=n("hex");return Dn(dS.sketch(function(n){return{dom:{tag:"form",classes:[m("rgb-form")],attributes:{"aria-label":d("aria.color.picker")}},components:[n.field("red",vy.sketch(h(Gh,"red",c.label,c.description,255))),n.field("green",vy.sketch(h(Gh,"green",s.label,s.description,255))),n.field("blue",vy.sketch(h(Gh,"blue",f.label,f.description,255))),n.field("hex",vy.sketch(h(zh,"hex",l.label,l.description,"ffffff"))),y.asSpec()],formBehaviours:ba([jy.config({invalidClass:m("form-invalid")}),Kd("rgb-form-events",[lo(mS,e),lo(gS,t),lo(pS,t)])])}}),{apis:{updateHex:function(n,t){Zf.setValue(n,{hex:t.value()}),function(n,t){var e=Yh(t);v(n,e),a(e)}(n,t),b(n,t)}}})},name:"RgbForm",configFields:[],apis:{updateHex:function(n,t,e){n.updateHex(t,e)}},extraApis:{}})},bS=function(n,o){function r(n,t){var e=n.width,o=n.height,r=n.getContext("2d");if(null!==r){r.fillStyle=t,r.fillRect(0,0,e,o);var i=r.createLinearGradient(0,0,e,0);i.addColorStop(0,"rgba(255,255,255,1)"),i.addColorStop(1,"rgba(255,255,255,0)"),r.fillStyle=i,r.fillRect(0,0,e,o);var u=r.createLinearGradient(0,0,0,o);u.addColorStop(0,"rgba(0,0,0,0)"),u.addColorStop(1,"rgba(0,0,0,1)"),r.fillStyle=u,r.fillRect(0,0,e,o)}}var i=cS.parts().spectrum({dom:{tag:"canvas",attributes:{role:"presentation"},classes:[o("sv-palette-spectrum")]}}),u=cS.parts().thumb({dom:{tag:"div",attributes:{role:"presentation"},classes:[o("sv-palette-thumb")],innerHtml:"<div class="+o("sv-palette-inner-thumb")+' role="presentation"></div>'}});return Dl({factory:function(n){var t=nn({x:nn(0),y:nn(0)}),e=ba([Zl.config({find:on.some}),vg.config({})]);return cS.sketch({dom:{tag:"div",attributes:{role:"presentation"},classes:[o("sv-palette")]},model:{mode:"xy",getInitialValue:t},rounded:!1,components:[i,u],onChange:function(n,t,e){ro(n,Mw(),{value:e})},onInit:function(n,t,e,o){r(e.element().dom(),Kh(ov()))},sliderBehaviours:e})},name:"SaturationBrightnessPalette",configFields:[],apis:{setRgba:function(n,t,e){!function(n,t){var e=n.components()[0].element().dom();r(e,Kh(t))}(t,e)}},extraApis:{}})},yS=function(l,d){return Dl({name:"ColourPicker",configFields:[ct("dom"),St("onValidHex",Z),St("onInvalidHex",Z)],factory:function(n){function t(n,e){u.getOpt(n).each(function(n){var t=Yh(e);s.paletteRgba().set(t),i.setRgba(n,t)})}function e(n,t){f.getOpt(n).each(function(n){r.updateHex(n,t)})}function a(t,e,n){bn(n,function(n){n(t,e)})}var o,c,r=vS(l,d,n.onValidHex,n.onInvalidHex),i=bS(l,d),s={paletteRgba:nn(ye(ov()))},u=vm(i.sketch({})),f=vm(r.sketch({}));return{uid:n.uid,dom:n.dom,components:[u.asSpec(),sS(l,d),f.asSpec()],behaviours:ba([Kd("colour-picker-events",[lo(Mw(),(c=[e],function(n,t){var e=t.event().value(),o=function(n){var t,e=0,o=0,r=n.red()/255,i=n.green()/255,u=n.blue()/255,a=Math.min(r,Math.min(i,u)),c=Math.max(r,Math.max(i,u));return a===c?sx(0,0,100*(o=a)):(e=60*((e=r===a?3:u===a?1:5)-(r===a?i-u:u===a?r-i:u-r)/(c-a)),t=(c-a)/c,o=c,sx(Math.round(e),Math.round(100*t),Math.round(100*o)))}(s.paletteRgba().get()),r=sx(o.hue(),e.x(),100-e.y()),i=Xh(r),u=Uh(i);a(n,u,c)})),lo(_w(),(o=[t,e],function(n,t){var e=function(n){var t=sx((100-n)/100*360,100,100),e=Xh(t);return Uh(e)}(t.event().value().y());a(n,e,o)}))]),Zl.config({find:function(n){return f.getOpt(n)}}),lg.config({mode:"acyclic"})])}}})},xS=function(){return Zl.config({find:on.some})},wS=function(n){return Zl.config({find:n.getOpt})},SS=function(n){return Zl.config({find:function(t){return Do(t.element(),n).bind(function(n){return t.getSystem().getByDom(n).toOption()})}})},CS={"colorcustom.rgb.red.label":"R","colorcustom.rgb.red.description":"Red component","colorcustom.rgb.green.label":"G","colorcustom.rgb.green.description":"Green component","colorcustom.rgb.blue.label":"B","colorcustom.rgb.blue.description":"Blue component","colorcustom.rgb.hex.label":"#","colorcustom.rgb.hex.description":"Hex color code","colorcustom.rgb.range":"Range 0 to 255","colorcustom.sb.saturation":"Saturation","colorcustom.sb.brightness":"Brightness","colorcustom.sb.picker":"Saturation and Brightness Picker","colorcustom.sb.palette":"Saturation and Brightness Palette","colorcustom.sb.instructions":"Use arrow keys to select saturation and brightness, on x and y axes","colorcustom.hue.hue":"Hue","colorcustom.hue.slider":"Hue Slider","colorcustom.hue.palette":"Hue Palette","colorcustom.hue.instructions":"Use arrow keys to select a hue","aria.color.picker":"Color Picker","aria.input.invalid":"Invalid input"},kS=tinymce.util.Tools.resolve("tinymce.Resource"),OS=re([St("preprocess",l),St("postprocess",l)]),ES=function(r,n){var i=ot("RepresentingConfigs.memento processors",OS,n);return Zf.config({store:{mode:"manual",getValue:function(n){var t=r.get(n),e=Zf.getValue(t);return i.postprocess(e)},setValue:function(n,t){var e=i.preprocess(t),o=r.get(n);Zf.setValue(o,e)}}})},TS=hw,BS=function(n){return vw(n,Vo,No)},DS=function(n){return Zf.config({store:{mode:"memory",initialValue:n}})},AS=Xo("alloy-fake-before-tabstop"),_S=Xo("alloy-fake-after-tabstop"),MS=function(n){return lb(n,["."+AS,"."+_S].join(","),nn(!1))},FS=function(n,t){var e=t.element();mr(e,AS)?xw(n,!0):mr(e,_S)&&xw(n,!1)},IS=function(n){return{dom:{tag:"div",classes:["tox-navobj"]},components:[yw([AS]),n,yw([_S])],behaviours:ba([SS(1)])}},RS=!(Ht().browser.isIE()||Ht().browser.isEdge());function VS(n,t){return PS(v.document.createElement("canvas"),n,t)}function NS(n){var t=VS(n.width,n.height);return HS(t).drawImage(n,0,0),t}function HS(n){return n.getContext("2d")}function PS(n,t,e){return n.width=t,n.height=e,n}function zS(n){return n.naturalWidth||n.width}function LS(n){return n.naturalHeight||n.height}var jS,US,WS=window.Promise?window.Promise:(jS=GS.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(n){v.setTimeout(n,1)},US=Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)},GS.prototype["catch"]=function(n){return this.then(null,n)},GS.prototype.then=function(e,o){var r=this;return new GS(function(n,t){YS.call(r,new $S(e,o,n,t))})},GS.all=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var c=Array.prototype.slice.call(1===n.length&&US(n[0])?n[0]:n);return new GS(function(r,i){if(0===c.length)return r([]);var u=c.length;function a(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void e.call(n,function(n){a(t,n)},i)}c[t]=n,0==--u&&r(c)}catch(o){i(o)}}for(var n=0;n<c.length;n++)a(n,c[n])})},GS.resolve=function(t){return t&&"object"==typeof t&&t.constructor===GS?t:new GS(function(n){n(t)})},GS.reject=function(e){return new GS(function(n,t){t(e)})},GS.race=function(r){return new GS(function(n,t){for(var e=0,o=r;e<o.length;e++)o[e].then(n,t)})},GS);function GS(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],QS(n,XS(qS,this),XS(KS,this))}function XS(n,t){return function(){return n.apply(t,arguments)}}function YS(o){var r=this;null!==this._state?jS(function(){var n=r._state?o.onFulfilled:o.onRejected;if(null!==n){var t;try{t=n(r._value)}catch(e){return void o.reject(e)}o.resolve(t)}else(r._state?o.resolve:o.reject)(r._value)}):this._deferreds.push(o)}function qS(n){try{if(n===this)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void QS(XS(t,n),XS(qS,this),XS(KS,this))}this._state=!0,this._value=n,JS.call(this)}catch(e){KS.call(this,e)}}function KS(n){this._state=!1,this._value=n,JS.call(this)}function JS(){for(var n=0,t=this._deferreds;n<t.length;n++){var e=t[n];YS.call(this,e)}this._deferreds=[]}function $S(n,t,e,o){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof t?t:null,this.resolve=e,this.reject=o}function QS(n,t,e){var o=!1;try{n(function(n){o||(o=!0,t(n))},function(n){o||(o=!0,e(n))})}catch(r){if(o)return;o=!0,e(r)}}function ZS(e){return new WS(function(n,t){(function p(n){var t=n.split(","),e=/data:([^;]+)/.exec(t[0]);if(!e)return on.none();for(var o=e[1],r=t[1],i=v.atob(r),u=i.length,a=Math.ceil(u/1024),c=new Array(a),s=0;s<a;++s){for(var f=1024*s,l=Math.min(1024+f,u),d=new Array(l-f),m=f,g=0;m<l;++g,++m)d[g]=i[m].charCodeAt(0);c[s]=new Uint8Array(d)}return on.some(new v.Blob(c,{type:o}))})(e).fold(function(){t("uri is not base64: "+e)},n)})}function nC(n,o,r){return o=o||"image/png",v.HTMLCanvasElement.prototype.toBlob?new WS(function(t,e){n.toBlob(function(n){n?t(n):e()},o,r)}):ZS(n.toDataURL(o,r))}function tC(n){return function t(a){return new WS(function(n,t){var e=v.URL.createObjectURL(a),o=new v.Image,r=function(){o.removeEventListener("load",i),o.removeEventListener("error",u)};function i(){r(),n(o)}function u(){r(),t("Unable to load data of type "+a.type+": "+e)}o.addEventListener("load",i),o.addEventListener("error",u),o.src=e,o.complete&&i()})}(n).then(function(n){!function e(n){v.URL.revokeObjectURL(n.src)}(n);var t=VS(zS(n),LS(n));return HS(t).drawImage(n,0,0),t})}function eC(n,t,e){var o=t.type;function r(t,e){return n.then(function(n){return function o(n,t,e){return t=t||"image/png",n.toDataURL(t,e)}(n,t,e)})}return{getType:nn(o),toBlob:function i(){return WS.resolve(t)},toDataURL:function u(){return e},toBase64:function a(){return e.split(",")[1]},toAdjustedBlob:function c(t,e){return n.then(function(n){return nC(n,t,e)})},toAdjustedDataURL:r,toAdjustedBase64:function s(n,t){return r(n,t).then(function(n){return n.split(",")[1]})},toCanvas:function f(){return n.then(NS)}}}function oC(t){return function n(e){return new WS(function(n){var t=new v.FileReader;t.onloadend=function(){n(t.result)},t.readAsDataURL(e)})}(t).then(function(n){return eC(tC(t),t,n)})}function rC(t,n){return nC(t,n).then(function(n){return eC(WS.resolve(t),n,t.toDataURL())})}function iC(n,t,e){var o="string"==typeof n?parseFloat(n):n;return e<o?o=e:o<t&&(o=t),o}var uC=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];function aC(n,t){for(var e,o=[],r=new Array(25),i=0;i<5;i++){for(var u=0;u<5;u++)o[u]=t[u+5*i];for(u=0;u<5;u++){for(var a=e=0;a<5;a++)e+=n[u+5*a]*o[a];r[u+5*i]=e}}return r}function cC(t,e){return t.toCanvas().then(function(n){return function i(n,t,e){var o=HS(n);var r=function B(n,t){for(var e,o,r,i,u=n.data,a=t[0],c=t[1],s=t[2],f=t[3],l=t[4],d=t[5],m=t[6],g=t[7],p=t[8],h=t[9],v=t[10],b=t[11],y=t[12],x=t[13],w=t[14],S=t[15],C=t[16],k=t[17],O=t[18],E=t[19],T=0;T<u.length;T+=4)e=u[T],o=u[T+1],r=u[T+2],i=u[T+3],u[T]=e*a+o*c+r*s+i*f+l,u[T+1]=e*d+o*m+r*g+i*p+h,u[T+2]=e*v+o*b+r*y+i*x+w,u[T+3]=e*S+o*C+r*k+i*O+E;return n}(o.getImageData(0,0,n.width,n.height),e);return o.putImageData(r,0,0),rC(n,t)}(n,t.getType(),e)})}function sC(t,e){return t.toCanvas().then(function(n){return function u(n,t,e){var o=HS(n);var r=o.getImageData(0,0,n.width,n.height),i=o.getImageData(0,0,n.width,n.height);return i=function w(n,t,e){function o(n,t,e){return e<n?n=e:n<t&&(n=t),n}for(var r=Math.round(Math.sqrt(e.length)),i=Math.floor(r/2),u=n.data,a=t.data,c=n.width,s=n.height,f=0;f<s;f++)for(var l=0;l<c;l++){for(var d=0,m=0,g=0,p=0;p<r;p++)for(var h=0;h<r;h++){var v=o(l+h-i,0,c-1),b=4*(o(f+p-i,0,s-1)*c+v),y=e[p*r+h];d+=u[b]*y,m+=u[1+b]*y,g+=u[2+b]*y}var x=4*(f*c+l);a[x]=o(d,0,255),a[1+x]=o(m,0,255),a[2+x]=o(g,0,255)}return t}(r,i,e),o.putImageData(i,0,0),rC(n,t)}(n,t.getType(),e)})}function fC(e){return function(n,t){return cC(n,e([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],t))}}function lC(n,t,e,o){return cC(n,function r(n,t,e,o){return aC(n,[t=iC(t,0,2),0,0,0,0,0,e=iC(e,0,2),0,0,0,0,0,o=iC(o,0,2),0,0,0,0,0,1,0,0,0,0,0,1])}([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],t,e,o))}var dC=function cI(t){return function(n){return cC(n,t)}}([-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0,0,0,0,0,1]),mC=fC(function sI(n,t){return aC(n,[1,0,0,0,t=iC(255*t,-255,255),0,1,0,0,t,0,0,1,0,t,0,0,0,1,0,0,0,0,0,1])}),gC=fC(function fI(n,t){var e;return t=iC(t,-1,1),aC(n,[(e=(t*=100)<0?127+t/100*127:127*(e=0===(e=t%1)?uC[t]:uC[Math.floor(t)]*(1-e)+uC[Math.floor(t)+1]*e)+127)/127,0,0,0,.5*(127-e),0,e/127,0,0,.5*(127-e),0,0,e/127,0,.5*(127-e),0,0,0,1,0,0,0,0,0,1])}),pC=function lI(t){return function(n){return sC(n,t)}}([0,-1,0,-1,5,-1,0,-1,0]),hC=function dI(c){return function(t,e){return t.toCanvas().then(function(n){return function(n,t,e){var o=HS(n),r=new Array(256);for(var i=0;i<r.length;i++)r[i]=c(i,e);var u=function a(n,t){for(var e=n.data,o=0;o<e.length;o+=4)e[o]=t[e[o]],e[o+1]=t[e[o+1]],e[o+2]=t[e[o+2]];return n}(o.getImageData(0,0,n.width,n.height),r);return o.putImageData(u,0,0),rC(n,t)}(n,t.getType(),e)})}}(function(n,t){return 255*Math.pow(n/255,1-t)});function vC(n,t,e){var o=zS(n),r=LS(n),i=t/o,u=e/r,a=!1;(i<.5||2<i)&&(i=i<.5?.5:2,a=!0),(u<.5||2<u)&&(u=u<.5?.5:2,a=!0);var c=function s(u,a,c){return new WS(function(n){var t=zS(u),e=LS(u),o=Math.floor(t*a),r=Math.floor(e*c),i=VS(o,r);HS(i).drawImage(u,0,0,t,e,0,0,o,r),n(i)})}(n,i,u);return a?c.then(function(n){return vC(n,t,e)}):c}function bC(t,e){return t.toCanvas().then(function(n){return function a(n,t,e){var o=VS(n.width,n.height),r=HS(o),i=0,u=0;90!==(e=e<0?360+e:e)&&270!==e||PS(o,o.height,o.width);90!==e&&180!==e||(i=o.width);270!==e&&180!==e||(u=o.height);return r.translate(i,u),r.rotate(e*Math.PI/180),r.drawImage(n,0,0),rC(o,t)}(n,t.getType(),e)})}function yC(t,e){return t.toCanvas().then(function(n){return function i(n,t,e){var o=VS(n.width,n.height),r=HS(o);"v"===e?(r.scale(1,-1),r.drawImage(n,0,-o.height)):(r.scale(-1,1),r.drawImage(n,-o.width,0));return rC(o,t)}(n,t.getType(),e)})}function xC(t,e,o,r,i){return t.toCanvas().then(function(n){return function a(n,t,e,o,r,i){var u=VS(r,i);return HS(u).drawImage(n,-e,-o),rC(u,t)}(n,t.getType(),e,o,r,i)})}function wC(n){return dC(n)}function SC(n){return pC(n)}function CC(n,t){return hC(n,t)}function kC(n,t){return mC(n,t)}function OC(n,t){return gC(n,t)}function EC(n,t){return yC(n,t)}function TC(n,t,e){return function r(t,e,o){return t.toCanvas().then(function(n){return vC(n,e,o).then(function(n){return rC(n,t.getType())})})}(n,t,e)}function BC(n,t){return bC(n,t)}function DC(n,t){return N({dom:{tag:"span",innerHtml:n,classes:["tox-icon","tox-tbtn__icon-wrap"]}},t)}function AC(n,t){return DC(ym(n,t),{})}function _C(n,t){return DC(ym(n,t),{behaviours:ba([mg.config({})])})}function MC(n,t,e){return{dom:{tag:"span",innerHtml:e.translate(n),classes:[t+"__select-label"]},behaviours:ba([mg.config({})])}}function FC(n,t,o){function e(n,t){var e=Zf.getValue(n);return vg.focus(e),ro(e,"keydown",{raw:t.event().raw()}),Ow.close(e),on.some(!0)}var r=ye(Z),i=n.text.map(function(n){return vm(MC(n,t,o.providers))}),u=n.icon.map(function(n){return vm(_C(n,o.providers.icons))}),a=n.role.fold(function(){return{}},function(n){return{role:n}}),c=n.tooltip.fold(function(){return{}},function(n){var t=o.providers.translate(n);return{title:t,"aria-label":t}});return vm(Ow.sketch(N(N({},a),{dom:{tag:"button",classes:[t,t+"--select"].concat(S(n.classes,function(n){return t+"--"+n})),attributes:N({},c)},components:Bh([u.map(function(n){return n.asSpec()}),i.map(function(n){return n.asSpec()}),on.some({dom:{tag:"div",classes:[t+"__select-chevron"],innerHtml:ym("chevron-down",o.providers.icons)}})]),matchWidth:!0,useMinWidth:!0,dropdownBehaviours:ba(g(n.dropdownBehaviours,[Oh(n.disabled),Ew.config({}),mg.config({}),Kd("dropdown-events",[Ep(n,r),Tp(n,r)]),Kd("menubutton-update-display-text",[lo(rk,function(t,e){i.bind(function(n){return n.getOpt(t)}).each(function(n){mg.set(n,[Ir(o.providers.translate(e.event().text()))])})}),lo(ik,function(t,e){u.bind(function(n){return n.getOpt(t)}).each(function(n){mg.set(n,[_C(e.event().icon(),o.providers.icons)])})})])])),eventOrder:Dn(ok,{mousedown:["focusing","alloy.base.behaviour","item-type-events","normal-dropdown-events"]}),sandboxBehaviours:ba([lg.config({mode:"special",onLeft:e,onRight:e})]),lazySink:o.getSink,toggleClass:t+"--active",parts:{menu:Sv(0,n.columns,n.presets)},fetch:function(){return Vy(n.fetch)}}))).asSpec()}function IC(n){return"separator"===n.type}function RC(n,e){var t=O(n,function(n,t){return function(n){return cn(n)}(t)?""===t?n:"|"===t?0<n.length&&!IC(n[n.length-1])?n.concat([uk]):n:En(e,t.toLowerCase())?n.concat([e[t.toLowerCase()]]):n:n.concat([t])},[]);return 0<t.length&&IC(t[t.length-1])&&t.pop(),t}function VC(n,t){return function(n){return En(n,"getSubmenuItems")}(n)?function(n,t){var e=n.getSubmenuItems(),o=ak(e,t);return{item:n,menus:Dn(o.menus,q(n.value,o.items)),expansions:Dn(o.expansions,q(n.value,n.value))}}(n,t):{item:n,menus:{},expansions:{}}}function NC(n,e,o,t){var r=Xo("primary-menu"),i=ak(n,o.shared.providers.menuItems());if(0===i.items.length)return on.none();var u=ib(r,i.items,e,o,t),a=P(i.menus,function(n,t){return ib(t,n,e,o,!1)}),c=Dn(a,q(r,u));return on.from(Lg.tieredData(r,c,i.expansions))}function HC(e){return{isDisabled:function(){return Ch.isDisabled(e)},setDisabled:function(n){return Ch.set(e,n)},setActive:function(n){var t=e.element();n?(fr(t,"tox-tbtn--enabled"),Po(t,"aria-pressed",!0)):(dr(t,"tox-tbtn--enabled"),jo(t,"aria-pressed"))},isActive:function(){return mr(e.element(),"tox-tbtn--enabled")}}}function PC(n,t,e,o){return FC({text:n.text,icon:n.icon,tooltip:n.tooltip,role:o,fetch:function(t){n.fetch(function(n){t(NC(n,Fh.CLOSE_ON_EXECUTE,e,!1))})},onSetup:n.onSetup,getApi:HC,columns:1,presets:"normal",classes:[],dropdownBehaviours:[Gy.config({})]},t,e.shared)}function zC(t,o,r){return function(n){n(S(t,function(n){var t=n.text.fold(function(){return{}},function(n){return{text:n}});return N(N({type:n.type},t),{onAction:function(e){return function(n){var t=!n.isActive();n.setActive(t),e.storage.set(t),r.shared.getSink().each(function(n){o().getOpt(n).each(function(n){wa(n.element()),ro(n,sy,{name:e.name,value:e.storage.get()})})})}}(n),onSetup:function(t){return function(n){n.setActive(t.storage.get())}}(n)})}))}}function LC(n,t,e,o,r){void 0===e&&(e=[]);var i=t.fold(function(){return{}},function(n){return{action:n}}),u=N({buttonBehaviours:ba([Oh(n.disabled),Gy.config({}),Kd("button press",[fo("click"),fo("mousedown")])].concat(e)),eventOrder:{click:["button press","alloy.base.behaviour"],mousedown:["button press","alloy.base.behaviour"]}},i),a=Dn(u,{dom:o});return Dn(a,{components:r})}function jC(n,t,e,o){void 0===o&&(o=[]);var r={tag:"button",classes:["tox-tbtn"],attributes:n.tooltip.map(function(n){return{"aria-label":e.translate(n),title:e.translate(n)}}).getOr({})},i=n.icon.map(function(n){return AC(n,e.icons)}),u=Bh([i]);return LC(n,t,o,r,u)}function UC(n,t,e,o){void 0===o&&(o=[]);var r=jC(n,on.some(t),e,o);return Gg.sketch(r)}function WC(n,t,e,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=e.translate(n.text),u=n.icon?n.icon.map(function(n){return AC(n,e.icons)}):on.none(),a=u.isSome()?Bh([u]):[],c=u.isSome()?{}:{innerHtml:i},s=g(n.primary||n.borderless?["tox-button"]:["tox-button","tox-button--secondary"],u.isSome()?["tox-button--icon"]:[],n.borderless?["tox-button--naked"]:[],r),f=N(N({tag:"button",classes:s},c),{attributes:{title:i}});return LC(n,t,o,f,a)}function GC(n,t,e,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=WC(n,on.some(t),e,o,r);return Gg.sketch(i)}function XC(t,e){return function(n){"custom"===e?ro(n,sy,{name:t,value:{}}):"submit"===e?oo(n,fy):"cancel"===e?oo(n,cy):v.console.error("Unknown button type: ",e)}}function YC(n,t,e){if(function(n,t){return"menu"===t}(0,t)){var o=n,r=N(N({},n),{fetch:zC(o.items,function(){return i},e)}),i=vm(PC(r,"tox-tbtn",e,on.none()));return i.asSpec()}if(function(n,t){return"custom"===t||"cancel"===t||"submit"===t}(0,t)){var u=XC(n.name,t),a=N(N({},n),{borderless:!1});return GC(a,u,e.shared.providers,[])}v.console.error("Unknown footer button type: ",t)}function qC(n,t){var e=XC(n.name,"custom");return function(n,t){return By(n,t,[],[])}(on.none(),vy.parts().field(N({factory:Gg},WC(n,on.some(e),t,[DS(""),xS()]))))}function KC(n,t){return xl({factory:vy,name:n,overrides:function(o){return{fieldBehaviours:ba([Kd("coupled-input-behaviour",[lo(ei(),function(e){(function(n,t,e){return qs(n,t,e).bind(Zl.getCurrent)})(e,o,t).each(function(t){qs(e,o,"lock").each(function(n){Cg.isOn(n)&&o.onLockedChange(e,t,n)})})})])])}}})}function JC(n){var t=/^\s*(\d+(?:\.\d+)?)\s*(|cm|mm|in|px|pt|pc|em|ex|ch|rem|vw|vh|vmin|vmax|%)\s*$/.exec(n);if(null===t)return an.error(n);var e=parseFloat(t[1]),o=t[2];return an.value({value:e,unit:o})}function $C(n,t){function e(n){return Object.prototype.hasOwnProperty.call(o,n)}var o={"":96,px:96,pt:72,cm:2.54,pc:12,mm:25.4,"in":1};return n.unit===t?on.some(n.value):e(n.unit)&&e(t)?o[n.unit]===o[t]?on.some(n.value):on.some(n.value/o[n.unit]*o[t]):on.none()}function QC(n){return on.none()}function ZC(n,t){return function(n,t,e){return n.isSome()&&t.isSome()?on.some(e(n.getOrDie(),t.getOrDie())):on.none()}(JC(n).toOption(),JC(t).toOption(),function(n,t){return $C(n,t.unit).map(function(n){return t.value/n}).map(function(n){return function(t,e){return function(n){return $C(n,e).map(function(n){return{value:n*t,unit:e}})}}(n,t.unit)}).getOr(QC)}).getOr(QC)}function nk(o,t){function n(n){return{dom:{tag:"div",classes:["tox-form__group"]},components:n}}function e(e){return vy.parts().field({factory:yy,inputClasses:["tox-textfield"],inputBehaviours:ba([Ch.config({disabled:o.disabled}),Gy.config({}),Kd("size-input-events",[lo(Qr(),function(n,t){ro(n,i,{isField1:e})}),lo(oi(),function(n,t){ro(n,uy,{name:o.name})})])]),selectOnFocus:!1})}function r(n){return{dom:{tag:"label",classes:["tox-label"],innerHtml:t.translate(n)}}}var a=QC,i=Xo("ratio-event"),u=fk.parts().lock({dom:{tag:"button",classes:["tox-lock","tox-button","tox-button--naked","tox-button--icon"],attributes:{title:t.translate(o.label.getOr("Constrain proportions"))}},components:[{dom:{tag:"span",classes:["tox-icon","tox-lock-icon__lock"],innerHtml:ym("lock",t.icons)}},{dom:{tag:"span",classes:["tox-icon","tox-lock-icon__unlock"],innerHtml:ym("unlock",t.icons)}}],buttonBehaviours:ba([Oh(o.disabled),Gy.config({})])}),c=fk.parts().field1(n([vy.parts().label(r("Width")),e(!0)])),s=fk.parts().field2(n([vy.parts().label(r("Height")),e(!1)]));return fk.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:[{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:[c,s,n([r("&nbsp;"),u])]}],field1Name:"width",field2Name:"height",locked:!0,markers:{lockClass:"tox-locked"},onLockedChange:function(n,t,e){JC(Zf.getValue(n)).each(function(n){a(n).each(function(n){Zf.setValue(t,function(n){var t,e={"":0,px:0,pt:1,mm:1,pc:2,ex:2,em:2,ch:2,rem:2,cm:3,"in":4,"%":4},o=n.value.toFixed((t=n.unit)in e?e[t]:1);return-1!==o.indexOf(".")&&(o=o.replace(/\.?0*$/,"")),o+n.unit}(n))})})},coupledFieldBehaviours:ba([Ch.config({disabled:o.disabled,onDisabled:function(n){fk.getField1(n).bind(vy.getField).each(Ch.disable),fk.getField2(n).bind(vy.getField).each(Ch.disable),fk.getLock(n).each(Ch.disable)},onEnabled:function(n){fk.getField1(n).bind(vy.getField).each(Ch.enable),fk.getField2(n).bind(vy.getField).each(Ch.enable),fk.getLock(n).each(Ch.enable)}}),Kd("size-input-events2",[lo(i,function(n,t){var e=t.event().isField1(),o=e?fk.getField1(n):fk.getField2(n),r=e?fk.getField2(n):fk.getField1(n),i=o.map(Zf.getValue).getOr(""),u=r.map(Zf.getValue).getOr("");a=ZC(i,u)})])])})}function tk(r,c){function n(n,t,e,o){return vm(GC({name:n,text:n,disabled:e,primary:o,icon:on.none(),borderless:!1},t,c))}function t(n,t,e,o){return vm(UC({name:n,icon:on.some(n),tooltip:on.some(t),disabled:o,primary:!1,borderless:!1},e,c))}function u(n,e){n.map(function(n){var t=n.get(e);t.hasConfigured(Ch)&&Ch.disable(t)})}function a(n,e){n.map(function(n){var t=n.get(e);t.hasConfigured(Ch)&&Ch.enable(t)})}function i(n,t,e){ro(n,t,e)}function e(n){return oo(n,pk.disable())}function o(n){return oo(n,pk.enable())}function s(n,t){e(n),i(n,lk.transform(),{transform:t}),o(n)}function f(n){return function(){Q.getOpt(n).each(function(n){mg.set(n,[J])})}}function l(n,t){e(n),i(n,lk.transformApply(),{transform:t,swap:f(n)}),o(n)}function d(){return n("Back",function(n){return i(n,lk.back(),{swap:f(n)})},!1,!1)}function m(){return vm({dom:{tag:"div",classes:["tox-spacer"]},behaviours:ba([Ch.config({})])})}function g(){return n("Apply",function(n){return i(n,lk.apply(),{swap:f(n)})},!0,!0)}function p(){return function(n){var t=r.getRect();return function(n,t,e,o,r){return xC(n,t,e,o,r)}(n,t.x,t.y,t.w,t.h)}}function h(t,e){return function(n){return t(n,e)}}function v(n,t){!function(n,t){e(n),i(n,lk.tempTransform(),{transform:t}),o(n)}(n,t)}function b(n,t,e,o,r){var i=cS.parts().label({dom:{tag:"label",classes:["tox-label"],innerHtml:c.translate(n)}}),u=cS.parts().spectrum({dom:{tag:"div",classes:["tox-slider__rail"],attributes:{role:"presentation"}}}),a=cS.parts().thumb({dom:{tag:"div",classes:["tox-slider__handle"],attributes:{role:"presentation"}}});return vm(cS.sketch({dom:{tag:"div",classes:["tox-slider"],attributes:{role:"presentation"}},model:{mode:"x",minX:e,maxX:r,getInitialValue:nn({x:nn(o)})},components:[i,u,a],sliderBehaviours:ba([vg.config({})]),onChoose:t}))}function y(n,t,e,o,r){return[d(),function(n,r,t,e,o){return b(n,function(n,t,e){var o=h(r,e.x()/100);s(n,o)},t,e,o)}(n,t,e,o,r),g()]}function x(n,t,e,o,r){var i=y(n,t,e,o,r);return Wb.sketch({dom:k,components:i.map(function(n){return n.asSpec()}),containerBehaviours:ba([Kd("image-tools-filter-panel-buttons-events",[lo(pk.disable(),function(n,t){u(i,n)}),lo(pk.enable(),function(n,t){a(i,n)})])])})}function w(t,e,o){return function(n){return function(n,t,e,o){return lC(n,t,e,o)}(n,t,e,o)}}function S(n){return b(n,function(a,n,t){var e=j.getOpt(a),o=W.getOpt(a),r=U.getOpt(a);e.each(function(u){o.each(function(i){r.each(function(n){var t=Zf.getValue(u).x()/100,e=Zf.getValue(n).x()/100,o=Zf.getValue(i).x()/100,r=w(t,e,o);s(a,r)})})})},0,100,200)}function C(t,e,o){return function(n){i(n,lk.swap(),{transform:e,swap:function(){Q.getOpt(n).each(function(n){mg.set(n,[t]),o(n)})}})}}var k={tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools-edit-panel"]},O=Z,E=[d(),m(),n("Apply",function(n){var t=p();l(n,t),r.hideCrop()},!1,!0)],T=Wb.sketch({dom:k,components:E.map(function(n){return n.asSpec()}),containerBehaviours:ba([Kd("image-tools-crop-buttons-events",[lo(pk.disable(),function(n,t){u(E,n)}),lo(pk.enable(),function(n,t){a(E,n)})])])}),B=vm(nk({name:"size",label:on.none(),constrain:!0,disabled:!1},c)),D=[d(),m(),B,m(),n("Apply",function(o){B.getOpt(o).each(function(n){var t=Zf.getValue(n),e=function(t,e){return function(n){return TC(n,t,e)}}(parseInt(t.width,10),parseInt(t.height,10));l(o,e)})},!1,!0)],A=Wb.sketch({dom:k,components:D.map(function(n){return n.asSpec()}),containerBehaviours:ba([Kd("image-tools-resize-buttons-events",[lo(pk.disable(),function(n,t){u(D,n)}),lo(pk.enable(),function(n,t){a(D,n)})])])}),_=h(EC,"h"),M=h(EC,"v"),F=h(BC,-90),I=h(BC,90),R=[d(),m(),t("flip-horizontally","Flip horizontally",function(n){v(n,_)},!1),t("flip-vertically","Flip vertically",function(n){v(n,M)},!1),t("rotate-left","Rotate counterclockwise",function(n){v(n,F)},!1),t("rotate-right","Rotate clockwise",function(n){v(n,I)},!1),m(),g()],V=Wb.sketch({dom:k,components:R.map(function(n){return n.asSpec()}),containerBehaviours:ba([Kd("image-tools-fliprotate-buttons-events",[lo(pk.disable(),function(n,t){u(R,n)}),lo(pk.enable(),function(n,t){a(R,n)})])])}),N=[d(),m(),g()],H=Wb.sketch({dom:k,components:N.map(function(n){return n.asSpec()})}),P=x("Brightness",kC,-100,0,100),z=x("Contrast",OC,-100,0,100),L=x("Gamma",CC,-100,0,100),j=S("R"),U=S("G"),W=S("B"),G=[d(),j,U,W,g()],X=Wb.sketch({dom:k,components:G.map(function(n){return n.asSpec()})}),Y=on.some(SC),q=on.some(wC),K=[t("crop","Crop",C(T,on.none(),function(n){r.showCrop()}),!1),t("resize","Resize",C(A,on.none(),function(n){B.getOpt(n).each(function(n){var t=r.getMeasurements(),e=t.width,o=t.height;Zf.setValue(n,{width:e,height:o})})}),!1),t("orientation","Orientation",C(V,on.none(),O),!1),t("brightness","Brightness",C(P,on.none(),O),!1),t("sharpen","Sharpen",C(H,Y,O),!1),t("contrast","Contrast",C(z,on.none(),O),!1),t("color-levels","Color levels",C(X,on.none(),O),!1),t("gamma","Gamma",C(L,on.none(),O),!1),t("invert","Invert",C(H,q,O),!1)],J=Wb.sketch({dom:k,components:K.map(function(n){return n.asSpec()})}),$=Wb.sketch({dom:{tag:"div"},components:[J],containerBehaviours:ba([mg.config({})])}),Q=vm($);return{memContainer:Q,getApplyButton:function(n){return Q.getOpt(n).map(function(n){var t=n.components()[0];return t.components()[t.components().length-1]})}}}var ek=Xo("toolbar.button.execute"),ok={"alloy.execute":["disabling","alloy.base.behaviour","toggling","toolbar-button-events"]},rk=Xo("update-menu-text"),ik=Xo("update-menu-icon"),uk={type:"separator"},ak=function(n,r){var t=RC(cn(n)?n.split(" "):n,r);return k(t,function(n,t){var e=function(n){if(IC(n))return n;var t=Nn(n,"value").getOrThunk(function(){return Xo("generated-menu-item")});return Dn({value:t},n)}(t),o=VC(e,r);return{menus:Dn(n.menus,o.menus),items:[o.item].concat(n.items),expansions:Dn(n.expansions,o.expansions)}},{menus:{},expansions:{},items:[]})},ck=nn([St("field1Name","field1"),St("field2Name","field2"),Ju("onLockedChange"),Xu(["lockClass"]),St("locked",!1),nl("coupledFieldBehaviours",[Zl,Zf])]),sk=nn([KC("field1","field2"),KC("field2","field1"),xl({factory:Gg,schema:[ct("dom")],name:"lock",overrides:function(n){return{buttonBehaviours:ba([Cg.config({selected:n.locked,toggleClass:n.markers.lockClass,aria:{mode:"pressed"}})])}}})]),fk=Al({name:"FormCoupledInputs",configFields:ck(),partFields:sk(),factory:function(o,n,t,e){return{uid:o.uid,dom:o.dom,components:n,behaviours:tl(o.coupledFieldBehaviours,[Zl.config({find:on.some}),Zf.config({store:{mode:"manual",getValue:function(n){var t,e=Zs(n,o,["field1","field2"]);return(t={})[o.field1Name]=Zf.getValue(e.field1()),t[o.field2Name]=Zf.getValue(e.field2()),t},setValue:function(n,t){var e=Zs(n,o,["field1","field2"]);$(t,o.field1Name)&&Zf.setValue(e.field1(),t[o.field1Name]),$(t,o.field2Name)&&Zf.setValue(e.field2(),t[o.field2Name])}}})]),apis:{getField1:function(n){return qs(n,o,"field1")},getField2:function(n){return qs(n,o,"field2")},getLock:function(n){return qs(n,o,"lock")}}}},apis:{getField1:function(n,t){return n.getField1(t)},getField2:function(n,t){return n.getField2(t)},getLock:function(n,t){return n.getLock(t)}}}),lk={undo:nn(Xo("undo")),redo:nn(Xo("redo")),zoom:nn(Xo("zoom")),back:nn(Xo("back")),apply:nn(Xo("apply")),swap:nn(Xo("swap")),transform:nn(Xo("transform")),tempTransform:nn(Xo("temp-transform")),transformApply:nn(Xo("transform-apply"))},dk=nn("save-state"),mk=nn("disable"),gk=nn("enable"),pk={formActionEvent:sy,saveState:dk,disable:mk,enable:gk},hk=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),vk=tinymce.util.Tools.resolve("tinymce.geom.Rect"),bk=tinymce.util.Tools.resolve("tinymce.util.Observable"),yk=tinymce.util.Tools.resolve("tinymce.util.Tools"),xk=tinymce.util.Tools.resolve("tinymce.util.VK");function wk(n){var t,e;if(n.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),e=0;e<t.length;e++)n[t[e]]=n.changedTouches[0][t[e]]}function Sk(n,r){var i,u,t,a,c,f,l,d=r.document||v.document;r=r||{};var m=d.getElementById(r.handle||n);t=function(n){var t,e,o=function s(n){var t,e,o,r,i,u,a,c=Math.max;return t=n.documentElement,e=n.body,o=c(t.scrollWidth,e.scrollWidth),r=c(t.clientWidth,e.clientWidth),i=c(t.offsetWidth,e.offsetWidth),u=c(t.scrollHeight,e.scrollHeight),a=c(t.clientHeight,e.clientHeight),{width:o<i?r:o,height:u<c(t.offsetHeight,e.offsetHeight)?a:u}}(d);wk(n),n.preventDefault(),u=n.button,t=m,f=n.screenX,l=n.screenY,e=v.window.getComputedStyle?v.window.getComputedStyle(t,null).getPropertyValue("cursor"):t.runtimeStyle.cursor,i=hk("<div></div>").css({position:"absolute",top:0,left:0,width:o.width,height:o.height,zIndex:2147483647,opacity:1e-4,cursor:e}).appendTo(d.body),hk(d).on("mousemove touchmove",c).on("mouseup touchend",a),r.start(n)},c=function(n){if(wk(n),n.button!==u)return a(n);n.deltaX=n.screenX-f,n.deltaY=n.screenY-l,n.preventDefault(),r.drag(n)},a=function(n){wk(n),hk(d).off("mousemove touchmove",c).off("mouseup touchend",a),i.remove(),r.stop&&r.stop(n)},this.destroy=function(){hk(m).off()},hk(m).on("mousedown touchstart",t)}function Ck(t){function u(n,s){c.getOpt(n).each(function(n){var e=l.get(),o=mu(n.element()),r=su(n.element()),i=s.dom().naturalWidth*e,u=s.dom().naturalHeight*e,a=Math.max(0,o/2-i/2),c=Math.max(0,r/2-u/2),t={left:a.toString()+"px",top:c.toString()+"px",width:i.toString()+"px",height:u.toString()+"px",position:"absolute"};xr(s,t),f.getOpt(n).each(function(n){xr(n.element(),t)}),d.get().each(function(n){var t=m.get();n.setRect({x:t.x*e+a,y:t.y*e+c,w:t.w*e,h:t.h*e}),n.setClampRect({x:a,y:c,w:i,h:u}),n.setViewPortRect({x:0,y:0,w:o,h:r})})})}function e(n,t){var i=we.fromTag("img");return Po(i,"src",t),function(e){return new Np(function(n){var t=function(){e.removeEventListener("load",t),n(e)};e.complete?n(e):e.addEventListener("load",t)})}(i.dom()).then(function(){return c.getOpt(n).map(function(n){var t=ru({element:i});mg.replaceAt(n,1,on.some(t));var e=a.get(),o={x:0,y:0,w:i.dom().naturalWidth,h:i.dom().naturalHeight};a.set(o);var r=vk.inflate(o,-20,-20);return m.set(r),e.w===o.w&&e.h===o.h||function(n,u){c.getOpt(n).each(function(n){var t=mu(n.element()),e=su(n.element()),o=u.dom().naturalWidth,r=u.dom().naturalHeight,i=Math.min(t/o,e/r);1<=i?l.set(1):l.set(i)})}(n,i),u(n,i),i})})}var f=vm({dom:{tag:"div",classes:["tox-image-tools__image-bg"],attributes:{role:"presentation"}}}),l=ye(1),d=ye(on.none()),m=ye({x:0,y:0,w:1,h:1}),a=ye({x:0,y:0,w:1,h:1}),n=Wb.sketch({dom:{tag:"div",classes:["tox-image-tools__image"]},components:[f.asSpec(),{dom:{tag:"img",attributes:{src:t}}},{dom:{tag:"div"},behaviours:ba([Kd("image-panel-crop-events",[Ii(function(n){c.getOpt(n).each(function(n){var t=n.element().dom(),e=Tk({x:10,y:10,w:100,h:100},{x:0,y:0,w:200,h:200},{x:0,y:0,w:200,h:200},t,function(){});e.toggleVisibility(!1),e.on("updateRect",function(n){var t=n.rect,e=l.get(),o={x:Math.round(t.x/e),y:Math.round(t.y/e),w:Math.round(t.w/e),h:Math.round(t.h/e)};m.set(o)}),d.set(on.some(e))})})])])}],containerBehaviours:ba([mg.config({}),Kd("image-panel-events",[Ii(function(n){e(n,t)})])])}),c=vm(n);return{memContainer:c,updateSrc:e,zoom:function(n,t){var e=l.get(),o=0<t?Math.min(2,e+.1):Math.max(.1,e-.1);l.set(o),c.getOpt(n).each(function(n){var t=n.components()[1].element();u(n,t)})},showCrop:function(){d.get().each(function(n){n.toggleVisibility(!0)})},hideCrop:function(){d.get().each(function(n){n.toggleVisibility(!1)})},getRect:function(){return m.get()},getMeasurements:function(){var n=a.get();return{width:n.w,height:n.h}}}}function kk(n,t,e,o,r){return UC({name:n,icon:on.some(t),disabled:e,tooltip:on.some(n),primary:!1,borderless:!1},o,r)}function Ok(n,t){t?Ch.enable(n):Ch.disable(n)}var Ek=0,Tk=function(s,e,f,o,r){var l,t,i,u="tox-",a="tox-crid-"+Ek++,c=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}];i=["top","right","bottom","left"];var d=function(n,t){return{x:t.x+n.x,y:t.y+n.y,w:t.w,h:t.h}},m=function(n,t){return{x:t.x-n.x,y:t.y-n.y,w:t.w,h:t.h}};function g(n,t,e,o){var r,i,u,a,c;r=t.x,i=t.y,u=t.w,a=t.h,r+=e*n.deltaX,i+=o*n.deltaY,(u+=e*n.deltaW)<20&&(u=20),(a+=o*n.deltaH)<20&&(a=20),c=s=vk.clamp({x:r,y:i,w:u,h:a},f,"move"===n.name),c=m(f,c),l.fire("updateRect",{rect:c}),v(c)}function p(t){function n(n,t){t.h<0&&(t.h=0),t.w<0&&(t.w=0),hk("#"+a+"-"+n,o).css({left:t.x,top:t.y,width:t.w,height:t.h})}yk.each(c,function(n){hk("#"+a+"-"+n.name,o).css({left:t.w*n.xMul+t.x,top:t.h*n.yMul+t.y})}),n("top",{x:e.x,y:e.y,w:e.w,h:t.y-e.y}),n("right",{x:t.x+t.w,y:t.y,w:e.w-t.x-t.w+e.x,h:t.h}),n("bottom",{x:e.x,y:t.y+t.h,w:e.w,h:e.h-t.y-t.h+e.y}),n("left",{x:e.x,y:t.y,w:t.x-e.x,h:t.h}),n("move",t)}function h(n){p(s=n)}function v(n){h(d(f,n))}return function b(){hk('<div id="'+a+'" class="'+u+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(o),yk.each(i,function(n){hk("#"+a,o).append('<div id="'+a+"-"+n+'"class="'+u+'croprect-block" style="display: none" data-mce-bogus="all">')}),yk.each(c,function(n){hk("#"+a,o).append('<div id="'+a+"-"+n.name+'" class="'+u+"croprect-handle "+u+"croprect-handle-"+n.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+n.label+'" aria-grabbed="false" title="'+n.label+'">')}),t=yk.map(c,function n(t){var e;return new Sk(a,{document:o.ownerDocument,handle:a+"-"+t.name,start:function(){e=s},drag:function(n){g(t,e,n.deltaX,n.deltaY)}})}),p(s),hk(o).on("focusin focusout",function(n){hk(n.target).attr("aria-grabbed","focus"===n.type?"true":"false")}),hk(o).on("keydown",function(t){var i;function n(n,t,e,o,r){n.stopPropagation(),n.preventDefault(),g(i,e,o,r)}switch(yk.each(c,function(n){if(t.target.id===a+"-"+n.name)return i=n,!1}),t.keyCode){case xk.LEFT:n(t,0,s,-10,0);break;case xk.RIGHT:n(t,0,s,10,0);break;case xk.UP:n(t,0,s,0,-10);break;case xk.DOWN:n(t,0,s,0,10);break;case xk.ENTER:case xk.SPACEBAR:t.preventDefault(),r()}})}(),l=yk.extend({toggleVisibility:function y(n){var t;t=yk.map(c,function(n){return"#"+a+"-"+n.name}).concat(yk.map(i,function(n){return"#"+a+"-"+n})).join(","),n?hk(t,o).show():hk(t,o).hide()},setClampRect:function x(n){f=n,p(s)},setRect:h,getInnerRect:function(){return m(f,s)},setInnerRect:v,setViewPortRect:function w(n){e=n,p(s)},destroy:function n(){yk.each(t,function(n){n.destroy()}),t=[]}},bk)};function Bk(n){var t=ye(n),e=ye(on.none()),o=function s(){var e=[],o=-1;function n(){return 0<o}function t(){return-1!==o&&o<e.length-1}return{data:e,add:function r(n){var t;return t=e.splice(++o),e.push(n),{state:n,removed:t}},undo:function i(){if(n())return e[--o]},redo:function u(){if(t())return e[++o]},canUndo:n,canRedo:t}}();function r(n){t.set(n)}function i(n){v.URL.revokeObjectURL(n.url)}function u(n){var t=a(n);return r(t),function(n){yk.each(n,i)}(o.add(t).removed),t.url}o.add(n);var a=function(n){return{blob:n,url:v.URL.createObjectURL(n)}},c=function(){e.get().each(i),e.set(on.none())};return{getBlobState:function(){return t.get()},setBlobState:r,addBlobState:u,getTempState:function(){return e.get().fold(function(){return t.get()},function(n){return n})},updateTempState:function(n){var t=a(n);return c(),e.set(on.some(t)),t.url},addTempState:function(n){var t=a(n);return e.set(on.some(t)),t.url},applyTempState:function(t){return e.get().fold(function(){},function(n){u(n.blob),t()})},destroyTempState:c,undo:function(){var n=o.undo();return r(n),n.url},redo:function(){var n=o.redo();return r(n),n.url},getHistoryStates:function(){return{undoEnabled:o.canUndo(),redoEnabled:o.canRedo()}}}}function Dk(n,t){function i(n){var t=s.getHistoryStates();m.updateButtonUndoStates(n,t.undoEnabled,t.redoEnabled),ro(n,pk.formActionEvent,{name:pk.saveState(),value:t.undoEnabled})}function u(n){return n.toBlob()}function a(n){ro(n,pk.formActionEvent,{name:pk.disable(),value:{}})}function r(t,n,e,o,r){return a(t),function(n){return oC(n)}(n).then(e).then(u).then(o).then(function(n){return l(t,n).then(function(n){return i(t),r(),f(t),n})})["catch"](function(n){return v.console.log(n),f(t),n})}function c(n,t,e){var o=s.getBlobState().blob;r(n,o,t,function(n){return s.updateTempState(n)},e)}var s=Bk(n.currentState),f=function(n){e.getApplyButton(n).each(function(n){Ch.enable(n)}),ro(n,pk.formActionEvent,{name:pk.enable(),value:{}})},l=function(n,t){return a(n),o.updateSrc(n,t)},d=function(n){var t=s.getBlobState().url;return s.destroyTempState(),i(n),t},o=Ck(n.currentState.url),m=function(n){var o=vm(kk("Undo","undo",!0,function(n){ro(n,lk.undo(),{direction:1})},n)),r=vm(kk("Redo","redo",!0,function(n){ro(n,lk.redo(),{direction:1})},n));return{container:Wb.sketch({dom:{tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools__sidebar"]},components:[o.asSpec(),r.asSpec(),kk("Zoom in","zoom-in",!1,function(n){ro(n,lk.zoom(),{direction:1})},n),kk("Zoom out","zoom-out",!1,function(n){ro(n,lk.zoom(),{direction:-1})},n)]}),updateButtonUndoStates:function(n,t,e){o.getOpt(n).each(function(n){Ok(n,t)}),r.getOpt(n).each(function(n){Ok(n,e)})}}}(t),e=tk(o,t);return{dom:{tag:"div",attributes:{role:"presentation"}},components:[e.memContainer.asSpec(),o.memContainer.asSpec(),m.container],behaviours:ba([Zf.config({store:{mode:"manual",getValue:function(){return s.getBlobState()}}}),Kd("image-tools-events",[lo(lk.undo(),function(t,n){var e=s.undo();l(t,e).then(function(n){f(t),i(t)})}),lo(lk.redo(),function(t,n){var e=s.redo();l(t,e).then(function(n){f(t),i(t)})}),lo(lk.zoom(),function(n,t){var e=t.event().direction();o.zoom(n,e)}),lo(lk.back(),function(n,t){!function(t){var n=d(t);l(t,n).then(function(n){f(t)})}(n),t.event().swap()(),o.hideCrop()}),lo(lk.apply(),function(n,t){s.applyTempState(function(){d(n),t.event().swap()()})}),lo(lk.transform(),function(n,t){return c(n,t.event().transform(),Z)}),lo(lk.tempTransform(),function(n,t){return function(n,t){var e=s.getTempState().blob;r(n,e,t,function(n){return s.addTempState(n)},Z)}(n,t.event().transform())}),lo(lk.transformApply(),function(n,t){return function(e,n,t){var o=s.getBlobState().blob;r(e,o,n,function(n){var t=s.addBlobState(n);return d(e),t},t)}(n,t.event().transform(),t.event().swap())}),lo(lk.swap(),function(t,n){!function(n){m.updateButtonUndoStates(n,!1,!1)}(t);var e=n.event().transform(),o=n.event().swap();e.fold(function(){o()},function(n){c(t,n,o)})})]),xS()])}}function Ak(e,t){var n=e.label.map(function(n){return Dy(n,t)}),o=[Ch.config({disabled:e.disabled}),lg.config({mode:"execution",useEnter:!0!==e.multiline,useControlEnter:!0===e.multiline,execute:function(n){return oo(n,fy),on.some(!0)}}),Kd("textfield-change",[lo(ei(),function(n,t){ro(n,uy,{name:e.name})}),lo(fi(),function(n,t){ro(n,uy,{name:e.name})})]),Gy.config({})],r=e.validation.map(function(o){return jy.config({getRoot:function(n){return Eo(n.element())},invalidClass:"tox-invalid",validator:{validate:function(n){var t=Zf.getValue(n),e=o.validator(t);return Ny(!0===e?an.value(t):an.error(e))},validateOnLoad:o.validateOnLoad}})}).toArray(),i=e.placeholder.fold(nn({}),function(n){return{placeholder:t.translate(n)}}),u=e.inputMode.fold(nn({}),function(n){return{inputmode:n}}),a=N(N({},i),u),c=vy.parts().field({tag:!0===e.multiline?"textarea":"input",inputAttributes:a,inputClasses:[e.classname],inputBehaviours:ba(H([o,r])),selectOnFocus:!1,factory:yy}),s=(e.flex?["tox-form__group--stretched"]:[]).concat(e.maximized?["tox-form-group--maximize"]:[]),f=[Ch.config({disabled:e.disabled,onDisabled:function(n){vy.getField(n).each(Ch.disable)},onEnabled:function(n){vy.getField(n).each(Ch.enable)}})];return By(n,c,s,f)}function _k(n){var t=ye(null);return nu({readState:function(){return{timer:null!==t.get()?"set":"unset"}},setTimer:function(n){t.set(n)},cancel:function(){var n=t.get();null!==n&&n.cancel()}})}function Mk(n,t,e){var o=Zf.getValue(e);Zf.setValue(t,o),CE(t)}function Fk(n,t){var e=n.element(),o=Er(e),r=e.dom();"number"!==zo(e,"type")&&t(r,o)}function Ik(n,t,e){if(n.selectsOver){var o=Zf.getValue(t),r=n.getDisplayText(o),i=Zf.getValue(e);return 0===n.getDisplayText(i).indexOf(r)?on.some(function(){Mk(0,t,e),function(n,e){Fk(n,function(n,t){return n.setSelectionRange(e,t.length)})}(t,r.length)}):on.none()}return on.none()}function Rk(n){return BE(Vy(n))}function Vk(n){return{type:"menuitem",value:n.url,text:n.title,meta:{attach:n.attach},onAction:function(){}}}function Nk(n,t){return{type:"menuitem",value:t,text:n,meta:{attach:undefined},onAction:function(){}}}function Hk(n,t){return function(n){return S(n,Vk)}(function(t,n){return C(n,function(n){return n.type===t})}(n,t))}function Pk(n,t){var e=n.toLowerCase();return C(t,function(n){var t=n.meta!==undefined&&n.meta.text!==undefined?n.meta.text:n.text;return Vt(t.toLowerCase(),e)||Vt(n.value.toLowerCase(),e)})}function zk(e,n,o){var t=Zf.getValue(n),r=t.meta.text!==undefined?t.meta.text:t.value;return o.getLinkInformation().fold(function(){return[]},function(n){var t=Pk(r,function(n){return S(n,function(n){return Nk(n,n)})}(o.getHistory(e)));return"file"===e?function(n){return O(n,function(n,t){return 0===n.length||0===t.length?n.concat(t):n.concat(AE,t)},[])}([t,Pk(r,function(n){return Hk("header",n.targets)}(n)),Pk(r,H([function(n){return on.from(n.anchorTop).map(function(n){return Nk("<top>",n)}).toArray()}(n),function(n){return Hk("anchor",n.targets)}(n),function(n){return on.from(n.anchorBottom).map(function(n){return Nk("<bottom>",n)}).toArray()}(n)]))]):t})}function Lk(r,o,i){function u(n){var t=Zf.getValue(n);i.addToHistory(t.value,r.filetype)}var n,t,e,a,c,s=o.shared.providers,f=vy.parts().field({factory:TE,dismissOnBlur:!0,inputClasses:["tox-textfield"],sandboxClasses:["tox-dialog__popups"],inputAttributes:{"aria-errormessage":_E,type:"url"},minChars:0,responseTime:0,fetch:function(n){var t=zk(r.filetype,n,i),e=NC(t,Fh.BUBBLE_TO_SANDBOX,o,!1);return Ny(e)},getHotspot:function(n){return h.getOpt(n)},onSetValue:function(n,t){n.hasConfigured(jy)&&jy.run(n).get(Z)},typeaheadBehaviours:ba(H([i.getValidationHandler().map(function(e){return jy.config({getRoot:function(n){return Eo(n.element())},invalidClass:"tox-control-wrap--status-invalid",notify:{onInvalid:function(n,t){d.getOpt(n).each(function(n){Po(n.element(),"title",s.translate(t))})}},validator:{validate:function(n){var t=Zf.getValue(n);return DE(function(o){e({type:r.filetype,url:t.value},function(n){if("invalid"===n.status){var t=an.error(n.message);o(t)}else{var e=an.value(n.message);o(e)}})})},validateOnLoad:!1}})}).toArray(),[Ch.config({disabled:r.disabled}),Gy.config({}),Kd("urlinput-events",H(["file"===r.filetype?[lo(ei(),function(n){ro(n,uy,{name:r.name})})]:[],[lo(oi(),function(n){ro(n,uy,{name:r.name}),u(n)}),lo(fi(),function(n){ro(n,uy,{name:r.name}),u(n)})]]))]])),eventOrder:(n={},n[ei()]=["streaming","urlinput-events","invalidating"],n),model:{getDisplayText:function(n){return n.value},selectsOver:!1,populateFromBrowse:!1},markers:{openClass:"tox-textfield--popup-open"},lazySink:o.shared.getSink,parts:{menu:Sv(0,0,"normal")},onExecute:function(n,t,e){ro(t,fy,{})},onItemExecute:function(n,t,e,o){u(n),ro(n,uy,{name:r.name})}}),l=r.label.map(function(n){return Dy(n,s)}),d=vm((t="invalid",e=on.some(_E),void 0===(a="warning")&&(a=t),void 0===c&&(c=t),{dom:{tag:"div",classes:["tox-icon","tox-control-wrap__status-icon-"+t],innerHtml:ym(a,s.icons),attributes:N({title:s.translate(c),"aria-live":"polite"},e.fold(function(){return{}},function(n){return{id:n}}))}})),m=vm({dom:{tag:"div",classes:["tox-control-wrap__status-icon-wrap"]},components:[d.asSpec()]}),g=i.getUrlPicker(r.filetype),p=Xo("browser.url.event"),h=vm({dom:{tag:"div",classes:["tox-control-wrap"]},components:[f,m.asSpec()],behaviours:ba([Ch.config({disabled:r.disabled})])}),v=vm(GC({name:r.name,icon:on.some("browse"),text:r.label.getOr(""),disabled:r.disabled,primary:!1,borderless:!0},function(n){return oo(n,p)},s,[],["tox-browse-url"]));return vy.sketch({dom:Yy([]),components:l.toArray().concat([{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:H([[h.asSpec()],g.map(function(){return v.asSpec()}).toArray()])}]),fieldBehaviours:ba([Ch.config({disabled:r.disabled,onDisabled:function(n){vy.getField(n).each(Ch.disable),v.getOpt(n).each(Ch.disable)},onEnabled:function(n){vy.getField(n).each(Ch.enable),v.getOpt(n).each(Ch.enable)}}),Kd("url-input-events",[lo(p,function(o){Zl.getCurrent(o).each(function(t){var e=Zf.getValue(t);g.each(function(n){n(e).get(function(n){Zf.setValue(t,n),ro(o,uy,{name:r.name})})})})})])])})}function jk(u,t){function n(o){return function(t,e){Ou(e.event().target(),"[data-collection-item-value]").each(function(n){o(t,e,n,zo(n,"data-collection-item-value"))})}}var e=u.label.map(function(n){return Dy(n,t)}),o=n(function(n,t,e,o){t.stop(),ro(n,sy,{name:u.name,value:o})}),r=[lo($r(),n(function(n,t,e){wa(e)})),lo(ri(),o),lo(gi(),o),lo(Qr(),n(function(n,t,e){ku(n.element(),"."+mh).each(function(n){dr(n,mh)}),fr(e,mh)})),lo(Zr(),n(function(n){ku(n.element(),"."+mh).each(function(n){dr(n,mh)})})),Ni(n(function(n,t,e,o){ro(n,sy,{name:u.name,value:o})}))],i=vy.parts().field({dom:{tag:"div",classes:["tox-collection"].concat(1!==u.columns?["tox-collection--grid"]:["tox-collection--list"])},components:[],factory:{sketch:l},behaviours:ba([mg.config({}),Zf.config({store:{mode:"memory",initialValue:[]},onSetValue:function(o,n){!function(n,t){var e=S(t,function(n){var t=rh.translate(n.text),e=1===u.columns?'<div class="tox-collection__item-label">'+t+"</div>":"",o='<div class="tox-collection__item-icon">'+n.icon+"</div>",r={_:" "," - ":" ","-":" "},i=t.replace(/\_| \- |\-/g,function(n){return r[n]});return'<div class="tox-collection__item" tabindex="-1" data-collection-item-value="'+function(n){return'"'===n?"&quot;":n}(n.value)+'" title="'+i+'" aria-label="'+i+'">'+o+e+"</div>"}),o=1<u.columns&&"auto"!==u.columns?w(e,u.columns):[e],r=S(o,function(n){return'<div class="tox-collection__group">'+n.join("")+"</div>"});No(n.element(),r.join(""))}(o,n),"auto"===u.columns&&ip(o,5,"tox-collection__item").each(function(n){var t=n.numRows,e=n.numColumns;lg.setGridSize(o,t,e)}),oo(o,gy)}}),Gy.config({}),lg.config(function(n,t){return 1===n?{mode:"menu",moveOnTab:!1,selector:".tox-collection__item"}:"auto"===n?{mode:"flatgrid",selector:".tox-collection__item",initSize:{numColumns:1,numRows:1}}:{mode:"matrix",selectors:{row:"color"===t?".tox-swatches__row":".tox-collection__group",cell:"color"===t?"."+ah:"."+uh}}}(u.columns,"normal")),Kd("collection-events",r)])});return By(e,i,["tox-form__group--collection"],[])}function Uk(r){return function(t,e,o){return Nn(e,"name").fold(function(){return r(e,o)},function(n){return t.field(n,r(e,o))})}}function Wk(t,n,e){var o=Dn(e,{shared:{interpreter:function(n){return IE(t,n,o)}}});return IE(t,n,o)}function Gk(n){return{colorPicker:function(e){return function(n,t){Uv.colorPickerDialog(e)(n,t)}}(n),hasCustomColors:function(n){return function(){return Fv(n)}}(n),getColors:function(n){return function(){return Iv(n)}}(n),getColorCols:function(n){return function(){return Uv.getColorCols(n)}}(n)}}function Xk(e){return function(n){return on.from(n.getParam("style_formats")).filter(fn)}(e).map(function(n){var t=function(t,n){function e(n){bn(n,function(n){t.formatter.has(n.name)||t.formatter.register(n.name,n.format)})}var o=PE(n);return t.formatter?e(o.customFormats):t.on("init",function(){e(o.customFormats)}),o.formats}(e,n);return function(n){return n.getParam("style_formats_merge",!1,"boolean")}(e)?HE.concat(t):t}).getOr(HE)}function Yk(n,t,e){var o={type:"formatter",isSelected:t(n.format),getStylePreview:e(n.format)};return Dn(n,o)}function qk(r,n,i,u){var o=function(n){return S(n,function(n){var t=wn(n);if($(n,"items")){var e=o(n.items);return Dn(function(n){var t={type:"submenu",isSelected:nn(!1),getStylePreview:function(){return on.none()}};return Dn(n,t)}(n),{getStyleItems:function(){return e}})}return $(n,"format")?function(n){return Yk(n,i,u)}(n):1===t.length&&vn(t,"title")?Dn(n,{type:"separator"}):function(n){var t=Xo(n.title),e={type:"formatter",format:t,isSelected:i(t),getStylePreview:u(t)},o=Dn(n,e);return r.formatter.register(t,o),o}(n)})};return o(n)}function Kk(t){return function(n){if(n&&1===n.nodeType){if(n.contentEditable===t)return!0;if(n.getAttribute("data-mce-contenteditable")===t)return!0}return!1}}function Jk(n,t,e,o,r){return{type:n,title:t,url:e,level:o,attach:r}}function $k(n){return n.innerText||n.textContent}function Qk(n){return function(n){return n&&"A"===n.nodeName&&(n.id||n.name)!==undefined}(n)&&UE(n)}function Zk(n){return n&&/^(H[1-6])$/.test(n.nodeName)}function nO(n){return Zk(n)&&UE(n)}function tO(n){var t=function(n){return n.id?n.id:Xo("h")}(n);return Jk("header",$k(n),"#"+t,function(n){return Zk(n)?parseInt(n.nodeName.substr(1),10):0}(n),function(){n.id=t})}function eO(n){var t=n.id||n.name,e=$k(n);return Jk("anchor",e||"#"+t,"#"+t,0,Z)}function oO(n){return function(n,t){return S(zc(we.fromDom(t),n),function(n){return n.dom()})}("h1,h2,h3,h4,h5,h6,a:not([href])",n)}function rO(n){return 0<zE(n.title).length}function iO(n){return cn(n)&&/^https?/.test(n)}function uO(n){return sn(n)&&I(n,function(n){return!function(n){return fn(n)&&n.length<=5&&D(n,iO)}(n)}).isNone()}function aO(){var n,t=v.localStorage.getItem(GE);if(null===t)return{};try{n=JSON.parse(t)}catch(e){if(e instanceof SyntaxError)return v.console.log("Local storage "+GE+" was not valid JSON",e),{};throw e}return uO(n)?n:(v.console.log("Local storage "+GE+" was not valid format",n),{})}function cO(n){var t=aO();return Object.prototype.hasOwnProperty.call(t,n)?t[n]:[]}function sO(t,n){if(iO(t)){var e=aO(),o=Object.prototype.hasOwnProperty.call(e,n)?e[n]:[],r=C(o,function(n){return n!==t});e[n]=[t].concat(r).slice(0,5),function(n){if(!uO(n))throw new Error("Bad format for history:\n"+JSON.stringify(n));v.localStorage.setItem(GE,JSON.stringify(n))}(e)}}function fO(n){return!!n}function lO(n){return P(yk.makeMap(n,/[, ]/),fO)}function dO(n,t,e){var o=function(n,t){return XE.call(n,t)?on.some(n[t]):on.none()}(n,t).getOr(e);return cn(o)?on.some(o):on.none()}function mO(n){return on.some(n.file_picker_callback).filter(dn)}function gO(n,t){var e=function(n){var t=on.some(n.file_picker_types).filter(fO),e=on.some(n.file_browser_callback_types).filter(fO),o=t.or(e).map(lO);return mO(n).fold(function(){return!1},function(n){return o.fold(function(){return!0},function(n){return 0<wn(n).length&&n})})}(n);return ln(e)?e?mO(n):on.none():e[t]?mO(n):on.none()}function pO(t){return{getHistory:cO,addToHistory:sO,getLinkInformation:function(){return function(n){return!1===n.settings.typeahead_urls?on.none():on.some({targets:WE(n.getBody()),anchorTop:dO(n.settings,"anchor_top","#top").getOrUndefined(),anchorBottom:dO(n.settings,"anchor_bottom","#bottom").getOrUndefined()})}(t)},getValidationHandler:function(){return function(n){return on.from(n.settings.file_picker_validator_handler).filter(dn).orThunk(function(){return on.from(n.settings.filepicker_validator_handler).filter(dn)})}(t)},getUrlPicker:function(n){return function(r,i){return gO(r.settings,i).map(function(o){return function(t){return Vy(function(e){var n=yk.extend({filetype:i},on.from(t.meta).getOr({}));o.call(r,function(n,t){if(!cn(n))throw new Error("Expected value to be string");if(t!==undefined&&!sn(t))throw new Error("Expected meta to be a object");e({value:n,meta:t})},t.value,n)})}})}(t,n)}}}function hO(n,t,e,o){var r=ye(!1),i={shared:{providers:{icons:function(){return t.ui.registry.getAll().icons},menuItems:function(){return t.ui.registry.getAll().menuItems},translate:rh.translate},interpreter:function(n){return function(n,t){return IE(FE,n,t)}(n,i)},anchors:NE(t,e,o),getSink:function(){return an.value(n)}},urlinput:pO(t),styleselect:function(e){function o(n){return function(){return e.formatter.match(n)}}function r(t){return function(){var n=e.formatter.get(t);return n!==undefined?on.some({tag:0<n.length&&(n[0].inline||n[0].block)||"div",styleAttr:e.formatter.getCssText(t)}):on.none()}}var i=function(n){var t=n.items;return t!==undefined&&0<t.length?B(t,i):[n.format]},u=ye([]),a=ye([]),c=ye([]),s=ye([]),f=ye(!1);e.on("init",function(){var n=Xk(e),t=qk(e,n,o,r);u.set(t),a.set(B(t,i))}),e.on("addStyleModifications",function(n){var t=qk(e,n.items,o,r);c.set(t),f.set(n.replace),s.set(B(t,i))});return{getData:function(){var n=f.get()?[]:u.get(),t=c.get();return n.concat(t)},getFlattenedKeys:function(){var n=f.get()?[]:a.get(),t=s.get();return n.concat(t)}}}(t),colorinput:Gk(t),dialog:function(n){return{isDraggableModal:function(n){return function(){return function(n){return n.getParam("draggable_modal",!1,"boolean")}(n)}}(n)}}(t),isContextMenuOpen:function(){return r.get()},setContextMenuState:function(n){return r.set(n)}};return i}function vO(n,t,o){var e=function(n,e){return O(n,function(t,n){return e(n,t.len).fold(nn(t),function(n){return{len:n.finish(),list:t.list.concat([n])}})},{len:0,list:[]}).list}(n,function(n,t){var e=o(n);return on.some({element:nn(n),start:nn(t),finish:nn(t+e),width:nn(e)})}),r=C(e,function(n){return n.finish()<=t}),i=k(r,function(n,t){return n+t.width()},0),u=e.slice(r.length);return{within:nn(r),extra:nn(u),withinWidth:nn(i)}}function bO(n){return S(n,function(n){return n.element()})}function yO(n,t,e,o){var r=function(n,t,e){var o=vO(t,n,e);return 0===o.extra().length?on.some(o):on.none()}(n,t,e).getOrThunk(function(){return vO(t,n-e(o),e)}),i=r.within(),u=r.extra(),a=r.withinWidth();return 1===u.length&&u[0].width()<=e(o)?function(n,t,e){var o=bO(n.concat(t));return $E(o,[],e)}(i,u,a):1<=u.length?function(n,t,e,o){var r=bO(n).concat([e]);return $E(r,bO(t),o)}(i,u,o,a):function(n,t,e){return $E(bO(n),[],e)}(i,0,a)}function xO(n,t){var e=S(t,function(n){return au(n)});JE.setGroups(n,e)}function wO(n,t,e,o){var r=Ks(n,t,"primary"),i=qs(n,t,"overflow-button"),u=Jy.getCoupled(n,"overflowGroup");yr(r.element(),"visibility","hidden");var a=function(n,t){return n.bind(function(t){return Ca(t.element()).bind(function(n){return t.getSystem().getByDom(n).toOption()})}).orThunk(function(){return t.filter(vg.isFocused)})}(e,i);e.each(function(n){JE.setGroups(n,[])});var c=t.builtGroups.get();xO(r,c.concat([u]));var s=mu(r.element()),f=yO(s,c,function(n){return mu(n.element())},u);0===f.extra().length?(mg.remove(r,u),e.each(function(n){JE.setGroups(n,[])})):(xO(r,f.within()),e.each(function(n){xO(n,f.extra())})),kr(r.element(),"visibility"),Or(r.element()),e.each(function(t){i.each(function(n){return Cg.set(n,o(t))}),a.each(vg.focus)})}function SO(o,n,t,e,r){var i="alloy.toolbar.toggle";return{uid:o.uid,dom:o.dom,components:n,behaviours:Rs(o.splitToolbarBehaviours,[Jy.config({others:N(N({},r.coupling),{overflowGroup:function(t){return nT.sketch(N(N({},e["overflow-group"]()),{items:[Gg.sketch(N(N({},e["overflow-button"]()),{action:function(n){oo(t,i)}}))]}))}})}),Kd("toolbar-toggle-events",[lo(i,function(n){r.apis.toggle(n)})])]),apis:N({setGroups:function(n,t){!function(n,t){var e=S(t,n.getSystem().build);o.builtGroups.set(e)}(n,t),r.apis.refresh(n)},getMoreButton:function(n){return function(n){return qs(n,o,"overflow-button")}(n)}},r.apis),domModification:{attributes:{role:"group"}}}}function CO(n){return n.getSystem().isConnected()}function kO(n,t,e){var o=t.lazySink(n).getOrDie(),r=t.getAnchor(n),i=t.getOverflowBounds.map(function(n){return n()});Af.positionWithinBounds(o,r,e,i)}function OO(t,e){var n=zf.getState(Jy.getCoupled(t,"sandbox"));wO(t,e,n,CO),n.each(function(n){return kO(t,e,n)})}function EO(t,e){zf.getState(Jy.getCoupled(t,"sandbox")).each(function(n){return kO(t,e,n)})}function TO(t,n){return n.getAnimationRoot.fold(function(){return t.element()},function(n){return n(t)})}function BO(n){return n.dimension.property}function DO(n,t){return n.dimension.getDimension(t)}function AO(n,t){var e=TO(n,t);pr(e,[t.shrinkingClass,t.growingClass])}function _O(n,t){dr(n.element(),t.openClass),fr(n.element(),t.closedClass),yr(n.element(),BO(t),"0px"),Or(n.element())}function MO(n,t){dr(n.element(),t.closedClass),fr(n.element(),t.openClass),kr(n.element(),BO(t))}function FO(n,t,e,o){e.setCollapsed(),yr(n.element(),BO(t),DO(t,n.element())),Or(n.element()),AO(n,t),_O(n,t),t.onStartShrink(n),t.onShrunk(n)}function IO(n,t,e,o){var r=o.getOrThunk(function(){return DO(t,n.element())});e.setCollapsed(),yr(n.element(),BO(t),r),Or(n.element());var i=TO(n,t);dr(i,t.growingClass),fr(i,t.shrinkingClass),_O(n,t),t.onStartShrink(n)}function RO(n,t,e){var o=DO(t,n.element());("0px"===o?FO:IO)(n,t,e,on.some(o))}function VO(n,t,e){var o=TO(n,t),r=mr(o,t.shrinkingClass),i=DO(t,n.element());MO(n,t);var u=DO(t,n.element());(r?function(){yr(n.element(),BO(t),i),Or(n.element())}:function(){_O(n,t)})(),dr(o,t.shrinkingClass),fr(o,t.growingClass),MO(n,t),yr(n.element(),BO(t),u),e.setExpanded(),t.onStartGrow(n)}function NO(n,t,e){var o=TO(n,t);return!0===mr(o,t.growingClass)}function HO(n,t,e){var o=TO(n,t);return!0===mr(o,t.shrinkingClass)}function PO(n){return cT.hasGrown(n)}function zO(n,t){var e=n.outerContainer;!function(n,t){var e=n.outerContainer.element();t&&(n.mothership.broadcastOn([Lf()],{target:e}),n.uiMothership.broadcastOn([Lf()],{target:e})),n.mothership.broadcastOn([gT],{readonly:t}),n.uiMothership.broadcastOn([gT],{readonly:t})}(n,t),Lt("*",e.element()).forEach(function(n){e.getSystem().getByDom(n).each(function(n){n.hasConfigured(Ch)&&Ch.set(n,t)})})}function LO(n,t){n.on("init",function(){n.readonly&&zO(t,!0)}),n.on("SwitchMode",function(){return zO(t,n.readonly)}),function(n){return n.getParam("readonly",!1,"boolean")}(n)&&n.setMode("readonly")}function jO(e){var n;return lc.config({channels:(n={},n[gT]={schema:pT,onReceive:function(n,t){e(n).each(function(n){!function(t,e){Lt("*",t.element()).forEach(function(n){t.getSystem().getByDom(n).each(function(n){n.hasConfigured(Ch)&&Ch.set(n,e)})})}(n,t.readonly)})}},n)})}function UO(n){var t=n.title.fold(function(){return{}},function(n){return{attributes:{title:n}}});return{dom:N({tag:"div",classes:["tox-toolbar__group"]},t),components:[nT.parts().items({})],items:n.items,markers:{itemSelector:"*:not(.tox-split-button) > .tox-tbtn:not([disabled]), .tox-split-button:not([disabled]), .tox-toolbar-nav-js:not([disabled])"},tgroupBehaviours:ba([Gy.config({}),vg.config({})])}}function WO(n){return nT.sketch(UO(n))}function GO(e,n,t){var o=Ii(function(n){var t=S(e.initGroups,WO);JE.setGroups(n,t)});return ba([lg.config({mode:n,onEscape:e.onEscape,selector:".tox-toolbar__group"}),Kd("toolbar-events",[o]),jO(t)])}function XO(n,t){var e=n.cyclicKeying?"cyclic":"acyclic";return{uid:n.uid,dom:{tag:"div",classes:["tox-toolbar-overlord"]},parts:{"overflow-group":UO({title:on.none(),items:[]}),"overflow-button":jC({name:"more",icon:on.some("more-drawer"),disabled:!1,tooltip:on.some("More..."),primary:!1,borderless:!1},on.none(),n.backstage.shared.providers)},splitToolbarBehaviours:GO(n,e,t)}}function YO(r){var n=XO(r,rT.getOverflow),t=rT.parts().primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}});return rT.sketch(N(N({},n),{lazySink:r.getSink,getAnchor:function(){return r.backstage.shared.anchors.toolbarOverflow()},getOverflowBounds:function(){var n=r.moreDrawerData.lazyHeader().element(),t=wu(n),e=ko(n),o=wu(e);return yu(t.x()+4,o.y(),t.width()-8,o.height())},parts:N(N({},n.parts),{overflow:{dom:{tag:"div",classes:["tox-toolbar__overflow"]}}}),components:[t],markers:{overflowToggledClass:"tox-tbtn--enabled"}}))}function qO(n){var t=dT.parts().primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}}),e=dT.parts().overflow({dom:{tag:"div",classes:["tox-toolbar__overflow"]}}),o=XO(n,dT.getOverflow);return dT.sketch(N(N({},o),{components:[t,e],markers:{openClass:"tox-toolbar__overflow--open",closedClass:"tox-toolbar__overflow--closed",growingClass:"tox-toolbar__overflow--growing",shrinkingClass:"tox-toolbar__overflow--shrinking",overflowToggledClass:"tox-tbtn--enabled"},onOpened:function(n){n.getSystem().broadcastOn([mT()],{type:"opened"})},onClosed:function(n){n.getSystem().broadcastOn([mT()],{type:"closed"})}}))}function KO(n){var t=n.cyclicKeying?"cyclic":"acyclic";return JE.sketch({uid:n.uid,dom:{tag:"div",classes:["tox-toolbar"].concat(n.type===jb.scrolling?["tox-toolbar--scrolling"]:[])},components:[JE.parts().groups({})],toolbarBehaviours:GO(n,t,nn(on.none()))})}function JO(n){return tt("toolbarbutton",vT,n)}function $O(n){return tt("menubutton",yT,n)}function QO(n){return tt("ToggleButton",ST,n)}function ZO(t){return{isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}}function nE(t){return{setActive:function(n){Cg.set(t,n)},isActive:function(){return Cg.isOn(t)},isDisabled:function(){return Ch.isDisabled(t)},setDisabled:function(n){return Ch.set(t,n)}}}function tE(n,t){return n.map(function(n){return{"aria-label":t.translate(n),title:t.translate(n)}}).getOr({})}function eE(t,e,n,o,r,i){function u(n){return rh.isRtl()&&vn(jT,n)?n+"-rtl":n}var a,c=rh.isRtl()&&t.exists(function(n){return vn(UT,n)});return{dom:{tag:"button",classes:["tox-tbtn"].concat(e.isSome()?["tox-tbtn--select"]:[]).concat(c?["tox-tbtn__icon-rtl"]:[]),attributes:tE(n,i)},components:Bh([t.map(function(n){return AC(u(n),i.icons)}),e.map(function(n){return MC(n,"tox-tbtn",i)})]),eventOrder:(a={},a[Yr()]=["focusing","alloy.base.behaviour","common-button-display-events"],a),buttonBehaviours:ba([Kd("common-button-display-events",[lo(Yr(),function(n,t){t.event().prevent(),oo(n,LT)})])].concat(o.map(function(n){return RT.config({channel:n,initialData:{icon:t,text:e},renderComponents:function(n,t){return Bh([n.icon.map(function(n){return AC(u(n),i.icons)}),n.text.map(function(n){return MC(n,"tox-tbtn",i)})])}})}).toArray()).concat(r.getOr([])))}}function oE(n,t,e){var o=ye(Z),r=eE(n.icon,n.text,n.tooltip,on.none(),on.none(),e);return Gg.sketch({dom:r.dom,components:r.components,eventOrder:ok,buttonBehaviours:ba([Kd("toolbar-button-events",[function(e){return Ni(function(t,n){Op(e,t)(function(n){ro(t,ek,{buttonApi:n}),e.onAction(n)})})}({onAction:n.onAction,getApi:t.getApi}),Ep(t,o),Tp(t,o)]),Th(n.disabled)].concat(t.toolbarButtonBehaviours))})}function rE(t,n){function e(e){return{isDisabled:function(){return Ch.isDisabled(e)},setDisabled:function(n){return Ch.set(e,n)},setIconFill:function(n,t){ku(e.element(),'svg path[id="'+n+'"], rect[id="'+n+'"]').each(function(n){Po(n,"fill",t)})},setIconStroke:function(n,t){ku(e.element(),'svg path[id="'+n+'"], rect[id="'+n+'"]').each(function(n){Po(n,"stroke",t)})},setActive:function(t){Po(e.element(),"aria-pressed",t),ku(e.element(),"span").each(function(n){e.getSystem().getByDom(n).each(function(n){return Cg.set(n,t)})})},isActive:function(){return ku(e.element(),"span").exists(function(n){return e.getSystem().getByDom(n).exists(Cg.isOn)})}}}var o,r=Xo("channel-update-split-dropdown-display"),i=ye(Z),u={getApi:e,onSetup:t.onSetup};return zT.sketch({dom:{tag:"div",classes:["tox-split-button"],attributes:An({"aria-pressed":!1},tE(t.tooltip,n.providers))},onExecute:function(n){t.onAction(e(n))},onItemExecute:function(n,t,e){},splitDropdownBehaviours:ba([Eh(!1),Kd("split-dropdown-events",[lo(LT,vg.focus),Ep(u,i),Tp(u,i)]),Ew.config({})]),eventOrder:(o={},o[Ci()]=["alloy.base.behaviour","split-dropdown-events"],o),toggleClass:"tox-tbtn--enabled",lazySink:n.getSink,fetch:function(e,r,o){return function(t){return Vy(function(n){return r.fetch(n)}).map(function(n){return on.from(ub(Dn(Tv(Xo("menu-value"),n,function(n){r.onItemAction(e(t),n)},r.columns,r.presets,Fh.CLOSE_ON_EXECUTE,r.select.getOr(function(){return!1}),o),{movement:Bv(r.columns,r.presets),menuBehaviours:Jp("auto"!==r.columns?[]:[Ii(function(o,n){ip(o,4,sp(r.presets)).each(function(n){var t=n.numRows,e=n.numColumns;lg.setGridSize(o,t,e)})})])})))})}}(e,t,n.providers),parts:{menu:Sv(0,t.columns,t.presets)},components:[zT.parts().button(eE(t.icon,t.text,on.none(),on.some(r),on.some([Cg.config({toggleClass:"tox-tbtn--enabled",toggleOnExecute:!1})]),n.providers)),zT.parts().arrow({dom:{tag:"button",classes:["tox-tbtn","tox-split-button__chevron"],innerHtml:ym("chevron-down",n.providers.icons)}}),zT.parts()["aria-descriptor"]({text:n.providers.translate("To open the popup, press Shift+Enter")})]})}function iE(o,r){return lo(ek,function(n,t){var e=function(n){return{hide:function(){return oo(n,hi())},getValue:function(){return Zf.getValue(n)}}}(o.get(n));r.onAction(e,t.event().buttonApi())})}function uE(n,t,e){var o={backstage:{shared:{providers:e}}};return"contextformtogglebutton"===t.type?function(n,t,e){var o=t.original,r=(o.primary,c(o,["primary"])),i=et(QO(N(N({},r),{type:"togglebutton",onAction:function(){}})));return GT(i,e.backstage.shared.providers,[iE(n,t)])}(n,t,o):function(n,t,e){var o=t.original,r=(o.primary,c(o,["primary"])),i=et(JO(N(N({},r),{type:"button",onAction:function(){}})));return WT(i,e.backstage.shared.providers,[iE(n,t)])}(n,t,o)}function aE(n,t){var e=Math.max(t.x(),n.x()),o=n.right()-e,r=t.width()-(e-t.x());return{x:e,width:Math.min(o,r)}}function cE(n){var t=Pb(n)||zb(n)||Xb(n),e=vu(v.window),o=xu(we.fromDom(n.getContentAreaContainer()));return n.inline&&!t?function(n,t,e){var o=aE(t,e),r=o.x,i=o.width;return yu(r,e.y(),i,e.height())}(0,o,e):n.inline?function(n,t,e){var o=aE(t,e),r=o.x,i=o.width,u=we.fromDom(n.getContainer()),a=ku(u,".tox-editor-header").getOr(u),c=xu(a),s=e.height(),f=e.y();if(c.y()>=t.bottom()){var l=Math.min(s+f,c.y());return yu(r,f,i,l-f)}var d=Math.max(f,c.bottom());return yu(r,d,i,s-(d-f))}(n,o,e):function(n,t,e){var o=aE(t,e),r=o.x,i=o.width,u=we.fromDom(n.getContainer()),a=ku(u,".tox-editor-header").getOr(u),c=xu(u),s=xu(a),f=Math.max(e.y(),t.y(),s.bottom()),l=c.bottom()-f,d=e.height()-(f-e.y()),m=Math.min(l,d);return yu(r,f,i,m)}(n,o,e)}function sE(t,n){return Du(n,function(n){return n.predicate(t.dom())?on.some({toolbarApi:n,elem:t}):on.none()})}function fE(o,r){return function(t){function n(){t.setActive(o.formatter.match(r));var n=o.formatter.formatChanged(r,t.setActive).unbind;e.set(on.some(n))}var e=ye(on.none());return o.initialized?n():o.on("init",n),function(){return e.get().each(function(n){return n()})}}}function lE(t){return function(n){return function(){t.undoManager.transact(function(){t.focus(),t.execCommand("mceToggleFormat",!1,n.format)})}}}function dE(n,t,e){var o=e.dataset,r="basic"===o.type?function(){return S(o.data,function(n){return Yk(n,e.isSelectedFor,e.getPreviewFor)})}:o.getData;return{items:function(n,u,a){function r(n,t,e,o){var r=u.shared.providers.translate(n.title);if("separator"===n.type)return on.some({type:"separator",text:r});if("submenu"!==n.type)return on.some(N({type:"togglemenuitem",text:r,active:n.isSelected(o),disabled:e,onAction:a.onAction(n)},n.getStylePreview().fold(function(){return{}},function(n){return{meta:{style:n}}})));var i=B(n.getStyleItems(),function(n){return c(n,t,o)});return 0===t&&i.length<=0?on.none():on.some({type:"nestedmenuitem",text:r,disabled:i.length<=0,getSubmenuItems:function(){return B(n.getStyleItems(),function(n){return c(n,t,o)})}})}function i(n){var t=a.getCurrentValue(),e=a.shouldHide?0:1;return B(n,function(n){return c(n,e,t)})}var c=function(n,t,e){var o="formatter"===n.type&&a.isInvalid(n);return 0===t?o?[]:r(n,t,!1,e).toArray():r(n,t,o,e).toArray()};return{validateItems:i,getFetch:function(o,r){return function(n){var t=r(),e=i(t);n(NC(e,Fh.CLOSE_ON_EXECUTE,o,!1))}}}}(0,t,e),getStyleItems:r}}function mE(o,n,t){var e=dE(0,n,t),r=e.items,i=e.getStyleItems;return FC({text:t.icon.isSome()?on.none():on.some(""),icon:t.icon,tooltip:on.from(t.tooltip),role:on.none(),fetch:r.getFetch(n,i),onSetup:function(e){return t.setInitialValue.each(function(n){return n(e.getComponent())}),t.nodeChangeHandler.map(function(n){var t=n(e.getComponent());return o.on("NodeChange",t),function(){o.off("NodeChange",t)}}).getOr(Z)},getApi:function(n){return{getComponent:function(){return n}}},columns:1,presets:"normal",classes:t.icon.isSome()?[]:["bespoke"],dropdownBehaviours:[]},"tox-tbtn",n.shared)}var gE,pE,hE,vE,bE=Dl({name:"HtmlSelect",configFields:[ct("options"),Fs("selectBehaviours",[vg,Zf]),St("selectClasses",[]),St("selectAttributes",{}),ht("data")],factory:function(e,n){var t=S(e.options,function(n){return{dom:{tag:"option",value:n.value,innerHtml:n.text}}}),o=e.data.map(function(n){return q("initialValue",n)}).getOr({});return{uid:e.uid,dom:{tag:"select",classes:e.selectClasses,attributes:e.selectAttributes},components:t,behaviours:Rs(e.selectBehaviours,[vg.config({}),Zf.config({store:N({mode:"manual",getValue:function(n){return Er(n.element())},setValue:function(n,t){E(e.options,function(n){return n.value===t}).isSome()&&Tr(n.element(),t)}},o)})])}}}),yE=/* */Object.freeze({events:function(n,t){var e=n.stream.streams.setup(n,t);return co([lo(n.event,e),Ri(function(){return t.cancel()})].concat(n.cancelEvent.map(function(n){return[lo(n,function(){return t.cancel()})]}).getOr([])))}}),xE=/* */Object.freeze({throttle:_k,init:function(n){return n.stream.streams.state(n)}}),wE=[st("stream",it("mode",{throttle:[ct("delay"),St("stopEvent",!0),Qu("streams",{setup:function(n,t){var e=n.stream,o=Jg(n.onStream,e.delay);return t.setTimer(o),function(n,t){o.throttle(n,t),e.stopEvent&&t.stop()}},state:_k})]})),St("event","input"),ht("cancelEvent"),Ju("onStream")],SE=ya({fields:wE,name:"streaming",active:yE,state:xE}),CE=function(n){Fk(n,function(n,t){return n.setSelectionRange(t.length,t.length)})},kE=nn("alloy.typeahead.itemexecute"),OE=nn([ht("lazySink"),ct("fetch"),St("minChars",5),St("responseTime",1e3),qu("onOpen"),St("getHotspot",on.some),St("getAnchorOverrides",nn({})),St("layouts",on.none()),St("eventOrder",{}),Dt("model",{},[St("getDisplayText",function(n){return n.meta!==undefined&&n.meta.text!==undefined?n.meta.text:n.value}),St("selectsOver",!0),St("populateFromBrowse",!0)]),qu("onSetValue"),Ku("onExecute"),qu("onItemExecute"),St("inputClasses",[]),St("inputAttributes",{}),St("inputStyles",{}),St("matchWidth",!0),St("useMinWidth",!1),St("dismissOnBlur",!0),Xu(["openClass"]),ht("initialData"),Fs("typeaheadBehaviours",[vg,Zf,SE,lg,Cg,Jy]),At("previewing",function(){return ye(!0)})].concat(by()).concat(ax())),EE=nn([wl({schema:[Gu()],name:"menu",overrides:function(o){return{fakeFocus:!0,onHighlight:function(t,e){o.previewing.get()?t.getSystem().getByUid(o.uid).each(function(n){Ik(o.model,n,e).fold(function(){return ad.dehighlight(t,e)},function(n){return n()})}):t.getSystem().getByUid(o.uid).each(function(n){o.model.populateFromBrowse&&Mk(o.model,n,e)}),o.previewing.set(!1)},onExecute:function(n,t){return n.getSystem().getByUid(o.uid).toOption().map(function(n){return ro(n,kE(),{item:t}),!0})},onHover:function(n,t){o.previewing.set(!1),n.getSystem().getByUid(o.uid).each(function(n){o.model.populateFromBrowse&&Mk(o.model,n,t)})}}}})]),TE=Al({name:"Typeahead",configFields:OE(),partFields:EE(),factory:function(r,n,t,i){function e(n,t,e){r.previewing.set(!1);var o=Jy.getCoupled(n,"sandbox");if(zf.isOpen(o))Zl.getCurrent(o).each(function(n){ad.getHighlighted(n).fold(function(){e(n)},function(){ao(o,n.element(),"keydown",t)})});else{nx(r,u(n),n,o,i,function(n){Zl.getCurrent(n).each(e)},Ay.HighlightFirst).get(Z)}}var o=Zb(r),u=function(o){return function(n){return n.map(function(n){var t=R(n.menus),e=B(t,function(n){return C(n.items,function(n){return"item"===n.type})});return Zf.getState(o).update(S(e,function(n){return n.data})),n})}},a=[vg.config({}),Zf.config({onSetValue:r.onSetValue,store:N({mode:"dataset",getDataKey:function(n){return Er(n.element())},getFallbackEntry:function(n){return{value:n,meta:{}}},setValue:function(n,t){Tr(n.element(),r.model.getDisplayText(t))}},r.initialData.map(function(n){return q("initialValue",n)}).getOr({}))}),SE.config({stream:{mode:"throttle",delay:r.responseTime,stopEvent:!1},onStream:function(n,t){var e=Jy.getCoupled(n,"sandbox");if(vg.isFocused(n)&&Er(n.element()).length>=r.minChars){var o=Zl.getCurrent(e).bind(function(n){return ad.getHighlighted(n).map(Zf.getValue)});r.previewing.set(!0);nx(r,u(n),n,e,i,function(n){Zl.getCurrent(e).each(function(n){o.fold(function(){r.model.selectsOver&&ad.highlightFirst(n)},function(t){ad.highlightBy(n,function(n){return Zf.getValue(n).value===t.value}),ad.getHighlighted(n).orThunk(function(){return ad.highlightFirst(n),on.none()})})})},Ay.HighlightFirst).get(Z)}},cancelEvent:vi()}),lg.config({mode:"special",onDown:function(n,t){return e(n,t,ad.highlightFirst),on.some(!0)},onEscape:function(n){var t=Jy.getCoupled(n,"sandbox");return zf.isOpen(t)?(zf.close(t),on.some(!0)):on.none()},onUp:function(n,t){return e(n,t,ad.highlightLast),on.some(!0)},onEnter:function(t){var n=Jy.getCoupled(t,"sandbox"),e=zf.isOpen(n);if(e&&!r.previewing.get())return Zl.getCurrent(n).bind(function(n){return ad.getHighlighted(n)}).map(function(n){return ro(t,kE(),{item:n}),!0});var o=Zf.getValue(t);return oo(t,vi()),r.onExecute(n,t,o),e&&zf.close(n),on.some(!0)}}),Cg.config({toggleClass:r.markers.openClass,aria:{mode:"expanded"}}),Jy.config({others:{sandbox:function(n){return ix(r,n,{onOpen:function(){return Cg.on(n)},onClose:function(){return Cg.off(n)}})}}}),Kd("typeaheadevents",[Ni(function(n){var t=Z;ex(r,u(n),n,i,t,Ay.HighlightFirst).get(Z)}),lo(kE(),function(n,t){var e=Jy.getCoupled(n,"sandbox");Mk(r.model,n,t.event().item()),oo(n,vi()),r.onItemExecute(n,e,t.event().item(),Zf.getValue(n)),zf.close(e),CE(n)})].concat(r.dismissOnBlur?[lo(si(),function(n){var t=Jy.getCoupled(n,"sandbox");Ca(t.element()).isNone()&&zf.close(t)})]:[]))];return{uid:r.uid,dom:ny(Dn(r,{inputAttributes:{role:"combobox","aria-autocomplete":"list","aria-haspopup":"true"}})),behaviours:N(N({},o),Rs(r.typeaheadBehaviours,a)),eventOrder:r.eventOrder}}}),BE=function(i){return N(N({},i),{toCached:function(){return BE(i.toCached())},bindFuture:function(t){return BE(i.bind(function(n){return n.fold(function(n){return Ny(an.error(n))},function(n){return t(n)})}))},bindResult:function(t){return BE(i.map(function(n){return n.bind(t)}))},mapResult:function(t){return BE(i.map(function(n){return n.map(t)}))},mapError:function(t){return BE(i.map(function(n){return n.mapError(t)}))},foldResult:function(t,e){return i.map(function(n){return n.fold(t,e)})},withTimeout:function(n,r){return BE(Vy(function(t){var e=!1,o=v.setTimeout(function(){e=!0,t(an.error(r()))},n);i.get(function(n){e||(v.clearTimeout(o),t(n))})}))}})},DE=Rk,AE={type:"separator"},_E=Xo("aria-invalid"),ME={bar:Uk(function(n,t){return function(n,t){return{dom:{tag:"div",classes:["tox-bar","tox-form__controls-h-stack"]},components:S(n.items,t.interpreter)}}(n,t.shared)}),collection:Uk(function(n,t){return jk(n,t.shared.providers)}),alertbanner:Uk(function(n,t){return function(t,n){return Wb.sketch({dom:{tag:"div",attributes:{role:"alert"},classes:["tox-notification","tox-notification--in","tox-notification--"+t.level]},components:[{dom:{tag:"div",classes:["tox-notification__icon"]},components:[Gg.sketch({dom:{tag:"button",classes:["tox-button","tox-button--naked","tox-button--icon"],innerHtml:ym(t.icon,n.icons),attributes:{title:n.translate(t.iconTooltip)}},action:function(n){ro(n,sy,{name:"alert-banner",value:t.url})}})]},{dom:{tag:"div",classes:["tox-notification__body"],innerHtml:n.translate(t.text)}}]})}(n,t.shared.providers)}),input:Uk(function(n,t){return function(n,t){return Ak({name:n.name,multiline:!1,label:n.label,inputMode:n.inputMode,placeholder:n.placeholder,flex:!1,disabled:n.disabled,classname:"tox-textfield",validation:on.none(),maximized:n.maximized},t)}(n,t.shared.providers)}),textarea:Uk(function(n,t){return function(n,t){return Ak({name:n.name,multiline:!0,label:n.label,inputMode:on.none(),placeholder:n.placeholder,flex:!0,disabled:n.disabled,classname:"tox-textarea",validation:on.none(),maximized:n.maximized},t)}(n,t.shared.providers)}),label:Uk(function(n,t){return function(n,t){var e={dom:{tag:"label",innerHtml:t.providers.translate(n.label),classes:["tox-label"]}},o=S(n.items,t.interpreter);return{dom:{tag:"div",classes:["tox-form__group"]},components:[e].concat(o),behaviours:ba([xS(),mg.config({}),BS(on.none()),lg.config({mode:"acyclic"})])}}(n,t.shared)}),iframe:(gE=function(n,t){return ww(n,t.shared.providers)},function(n,t,e){var o=Dn(t,{source:"dynamic"});return Uk(gE)(n,o,e)}),button:Uk(function(n,t){return qC(n,t.shared.providers)}),checkbox:Uk(function(n,t){return function(e,t){function n(n){return n.element().dom().click(),on.some(!0)}function o(n){return{dom:{tag:"span",classes:["tox-icon","tox-checkbox-icon__"+n],innerHtml:ym("checked"===n?"selected":"unselected",t.icons)}}}var r=Zf.config({store:{mode:"manual",getValue:function(n){return n.element().dom().checked},setValue:function(n,t){n.element().dom().checked=t}}}),i=vy.parts().field({factory:{sketch:l},dom:{tag:"input",classes:["tox-checkbox__input"],attributes:{type:"checkbox"}},behaviours:ba([xS(),Ch.config({disabled:e.disabled}),Gy.config({}),vg.config({}),r,lg.config({mode:"special",onEnter:n,onSpace:n,stopSpaceKeyup:!0}),Kd("checkbox-events",[lo(oi(),function(n,t){ro(n,uy,{name:e.name})})])])}),u=vy.parts().label({dom:{tag:"span",classes:["tox-checkbox__label"],innerHtml:t.translate(e.label)},behaviours:ba([Ew.config({})])}),a=vm({dom:{tag:"div",classes:["tox-checkbox__icons"]},components:[o("checked"),o("unchecked")]});return vy.sketch({dom:{tag:"label",classes:["tox-checkbox"]},components:[i,a.asSpec(),u],fieldBehaviours:ba([Ch.config({disabled:e.disabled,disableClass:"tox-checkbox--disabled",onDisabled:function(n){vy.getField(n).each(Ch.disable)},onEnabled:function(n){vy.getField(n).each(Ch.enable)}})])})}(n,t.shared.providers)}),colorinput:Uk(function(n,t){return cx(n,t.shared,t.colorinput)}),colorpicker:Uk(function(n){function t(n){return"tox-"+n}var e=yS(pw,t),r=vm(e.sketch({dom:{tag:"div",classes:[t("color-picker-container")],attributes:{role:"presentation"}},onValidHex:function(n){ro(n,sy,{name:"hex-valid",value:!0})},onInvalidHex:function(n){ro(n,sy,{name:"hex-valid",value:!1})}}));return{dom:{tag:"div"},components:[r.asSpec()],behaviours:ba([Zf.config({store:{mode:"manual",getValue:function(n){var t=r.get(n);return Zl.getCurrent(t).bind(function(n){return Zf.getValue(n).hex}).map(function(n){return"#"+n}).getOr("")},setValue:function(n,t){var e=/^#([a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?)/.exec(t),o=r.get(n);Zl.getCurrent(o).fold(function(){v.console.log("Can not find form")},function(n){Zf.setValue(n,{hex:on.from(e[1]).getOr("")}),dS.getField(n,"hex").each(function(n){oo(n,ei())})})}}}),xS()])}}),dropzone:Uk(function(n,t){return bw(n,t.shared.providers)}),grid:Uk(function(n,t){return function(n,t){return{dom:{tag:"div",classes:["tox-form__grid","tox-form__grid--"+n.columns+"col"]},components:S(n.items,t.interpreter)}}(n,t.shared)}),selectbox:Uk(function(n,t){return function(e,t){var n=S(e.items,function(n){return{text:t.translate(n.text),value:n.value}}),o=e.label.map(function(n){return Dy(n,t)}),r=vy.parts().field({dom:{},selectAttributes:{size:e.size},options:n,factory:bE,selectBehaviours:ba([Ch.config({disabled:e.disabled}),Gy.config({}),Kd("selectbox-change",[lo(oi(),function(n,t){ro(n,uy,{name:e.name})})])])}),i=1<e.size?on.none():on.some({dom:{tag:"div",classes:["tox-selectfield__icon-js"],innerHtml:ym("chevron-down",t.icons)}}),u={dom:{tag:"div",classes:["tox-selectfield"]},components:H([[r],i.toArray()])};return vy.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:H([o.toArray(),[u]]),fieldBehaviours:ba([Ch.config({disabled:e.disabled,onDisabled:function(n){vy.getField(n).each(Ch.disable)},onEnabled:function(n){vy.getField(n).each(Ch.enable)}})])})}(n,t.shared.providers)}),sizeinput:Uk(function(n,t){return nk(n,t.shared.providers)}),urlinput:Uk(function(n,t){return Lk(n,t,t.urlinput)}),customeditor:Uk(function(e){var o=ye(on.none()),t=vm({dom:{tag:e.tag}}),r=ye(on.none());return{dom:{tag:"div",classes:["tox-custom-editor"]},behaviours:ba([Kd("editor-foo-events",[Ii(function(n){t.getOpt(n).each(function(t){(!function(n){return Object.prototype.hasOwnProperty.call(n,"init")}(e)?kS.load(e.scriptId,e.scriptUrl).then(function(n){return n(t.element().dom(),e.settings)}):e.init(t.element().dom())).then(function(t){r.get().each(function(n){t.setValue(n)}),r.set(on.none()),o.set(on.some(t))})})})]),Zf.config({store:{mode:"manual",getValue:function(){return o.get().fold(function(){return r.get().getOr("")},function(n){return n.getValue()})},setValue:function(n,t){o.get().fold(function(){r.set(on.some(t))},function(n){return n.setValue(t)})}}}),xS()]),components:[t.asSpec()]}}),htmlpanel:Uk(function(n){return"presentation"===n.presets?Wb.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:n.html}}):Wb.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:n.html,attributes:{role:"document"}},containerBehaviours:ba([Gy.config({}),vg.config({})])})}),imagetools:Uk(function(n,t){return Dk(n,t.shared.providers)}),table:Uk(function(n,t){return function(n,t){function e(n){return{dom:{tag:"th",innerHtml:t.translate(n)}}}function o(n){return{dom:{tag:"td",innerHtml:t.translate(n)}}}function r(n){return{dom:{tag:"tr"},components:S(n,o)}}var i,u;return{dom:{tag:"table",classes:["tox-dialog__table"]},components:[(u=n.header,{dom:{tag:"thead"},components:[{dom:{tag:"tr"},components:S(u,e)}]}),(i=n.cells,{dom:{tag:"tbody"},components:S(i,r)})],behaviours:ba([Gy.config({}),vg.config({})])}}(n,t.shared.providers)}),panel:Uk(function(n,t){return function(n,t){return{dom:{tag:"div",classes:n.classes},components:S(n.items,t.shared.interpreter)}}(n,t)})},FE={field:function(n,t){return t}},IE=function(t,e,o){return Nn(ME,e.type).fold(function(){return v.console.error('Unknown factory type "'+e.type+'", defaulting to container: ',e),e},function(n){return n(t,e,o)})},RE=nn(function(n,t){!function(n,t){var e=Vu.max(n,t,["margin-left","border-left-width","padding-left","padding-right","border-right-width","margin-right"]);yr(n,"max-width",e+"px")}(n,Math.floor(t))}),VE={valignCentre:[],alignCentre:[],alignLeft:[],alignRight:[],right:[],left:[],bottom:[],top:[]},NE=function(n,t,e){function o(){return we.fromDom(n.getBody())}var r=Kb(n);return{toolbar:function(n,t,e){return e?function(){return{anchor:"node",root:n(),node:on.from(n()),bubble:Oa(-12,-12,VE),layouts:{onRtl:function(){return[pm]},onLtr:function(){return[hm]}},overrides:{maxHeightFunction:Cf()}}}:function(){return{anchor:"hotspot",hotspot:t(),bubble:Oa(-12,12,VE),layouts:{onRtl:function(){return[ua]},onLtr:function(){return[aa]}},overrides:{maxHeightFunction:Cf()}}}}(o,t,r),toolbarOverflow:function(n){return function(){return{anchor:"hotspot",hotspot:n(),overrides:{maxWidthFunction:RE()},layouts:{onRtl:function(){return[ua,aa]},onLtr:function(){return[aa,ua]}}}}}(e),banner:function(n,t,e){return e?function(){return{anchor:"node",root:n(),node:on.from(n()),layouts:{onRtl:function(){return[Ug]},onLtr:function(){return[Ug]}}}}:function(){return{anchor:"hotspot",hotspot:t(),layouts:{onRtl:function(){return[rc]},onLtr:function(){return[rc]}}}}}(o,t,r),cursor:function(t,n){return function(){return{anchor:"selection",root:n(),getSelection:function(){var n=t.selection.getRng();return on.some(Tc.range(we.fromDom(n.startContainer),n.startOffset,we.fromDom(n.endContainer),n.endOffset))}}}}(n,o),node:function(t){return function(n){return{anchor:"node",root:t(),node:n}}}(o)}},HE=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strike-through",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Align",items:[{title:"Left",icon:"align-left",format:"alignleft"},{title:"Center",icon:"align-center",format:"aligncenter"},{title:"Right",icon:"align-right",format:"alignright"},{title:"Justify",icon:"align-justify",format:"alignjustify"}]}],PE=function(n){return O(n,function(n,t){if(function(n){return En(n,"items")}(t)){var e=PE(t.items);return{customFormats:n.customFormats.concat(e.customFormats),formats:n.formats.concat([{title:t.title,items:e.formats}])}}if(function(n){return En(n,"inline")}(t)||function(n){return En(n,"block")}(t)||function(n){return En(n,"selector")}(t)){var o="custom-"+t.title.toLowerCase();return{customFormats:n.customFormats.concat([{name:o,format:t}]),formats:n.formats.concat([{title:t.title,format:o,icon:t.icon}])}}return N(N({},n),{formats:n.formats.concat(t)})},{customFormats:[],formats:[]})},zE=yk.trim,LE=Kk("true"),jE=Kk("false"),UE=function(n){return function(n){for(;n=n.parentNode;){var t=n.contentEditable;if(t&&"inherit"!==t)return LE(n)}return!1}(n)&&!jE(n)},WE=function(n){var t=oO(n);return C(function(n){return S(C(n,nO),tO)}(t).concat(function(n){return S(C(n,Qk),eO)}(t)),rO)},GE="tinymce-url-history",XE=Object.prototype.hasOwnProperty,YE="contexttoolbar-hide",qE=nn([ct("dom"),St("shell",!0),Fs("toolbarBehaviours",[mg])]),KE=nn([Sl({name:"groups",overrides:function(n){return{behaviours:ba([mg.config({})])}}})]),JE=Al({name:"Toolbar",configFields:qE(),partFields:KE(),factory:function(t,n,e,o){var r=function(n){return t.shell?on.some(n):qs(n,t,"groups")},i=t.shell?{behaviours:[mg.config({})],components:[]}:{behaviours:[],components:n};return{uid:t.uid,dom:t.dom,components:i.components,behaviours:Rs(t.toolbarBehaviours,i.behaviours),apis:{setGroups:function(n,t){r(n).fold(function(){throw v.console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(n){mg.set(n,t)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(n,t,e){n.setGroups(t,e)}}}),$E=yo("within","extra","withinWidth"),QE=nn([ct("items"),Xu(["itemSelector"]),Fs("tgroupBehaviours",[lg])]),ZE=nn([Cl({name:"items",unit:"item"})]),nT=Al({name:"ToolbarGroup",configFields:QE(),partFields:ZE(),factory:function(n,t,e,o){return{uid:n.uid,dom:n.dom,components:t,behaviours:Rs(n.tgroupBehaviours,[lg.config({mode:"flow",selector:n.markers.itemSelector})]),domModification:{attributes:{role:"toolbar"}}}}}),tT=nn([Fs("splitToolbarBehaviours",[Jy]),At("builtGroups",function(){return ye([])})]),eT=nn([Xu(["overflowToggledClass"]),ct("getAnchor"),xt("getOverflowBounds"),ct("lazySink")].concat(tT())),oT=nn([xl({factory:JE,schema:qE(),name:"primary"}),wl({factory:JE,schema:qE(),name:"overflow",overrides:function(t){return{toolbarBehaviours:ba([lg.config({mode:"cyclic",onEscape:function(n){return qs(n,t,"overflow-button").each(vg.focus),on.none()}})])}}}),wl({name:"overflow-button",overrides:function(n){return{dom:{attributes:{"aria-haspopup":"true"}},buttonBehaviours:ba([Cg.config({toggleClass:n.markers.overflowToggledClass,aria:{mode:"expanded"},toggleOnExecute:!1})])}}}),wl({name:"overflow-group"})]),rT=Al({name:"SplitFloatingToolbar",configFields:eT(),partFields:oT(),factory:function(t,n,e,o){return SO(t,n,0,o,{coupling:{sandbox:function(n){return function(o,e){var r=Eu();return{dom:{tag:"div",attributes:{id:r.id()}},behaviours:ba([lg.config({mode:"special",onEscape:function(n){return zf.close(n),on.some(!0)}}),zf.config({onOpen:function(n,t){OO(o,e),qs(o,e,"overflow-button").each(function(n){Cg.on(n),r.link(n.element())}),lg.focusIn(t)},onClose:function(){qs(o,e,"overflow-button").each(function(n){Cg.off(n),vg.focus(n),r.unlink(n.element())})},isPartOf:function(n,t,e){return Lu(t,e)||Lu(o,e)},getAttachPoint:function(){return e.lazySink(o).getOrDie()}}),lc.config({channels:N({},Ts({isExtraPart:nn(!1),doReposition:function(){return EO(o,e)}}))})])}}(n,t)}},apis:{refresh:function(n){return OO(n,t)},toggle:function(n){return function(n,t,e){var o=Jy.getCoupled(n,"sandbox");zf.isOpen(o)?zf.close(o):zf.open(o,e.overflow())}(n,0,o)},getOverflow:function(n){return zf.getState(Jy.getCoupled(n,"sandbox"))},reposition:function(n){return EO(n,t)}}})},apis:{setGroups:function(n,t,e){n.setGroups(t,e)},refresh:function(n,t){n.refresh(t)},reposition:function(n,t){n.reposition(t)},getMoreButton:function(n,t){return n.getMoreButton(t)},getOverflow:function(n,t){return n.getOverflow(t)},toggle:function(n,t){n.toggle(t)}}}),iT=/* */Object.freeze({refresh:function(n,t,e){if(e.isExpanded()){kr(n.element(),BO(t));var o=DO(t,n.element());yr(n.element(),BO(t),o)}},grow:function(n,t,e){e.isExpanded()||VO(n,t,e)},shrink:function(n,t,e){e.isExpanded()&&RO(n,t,e)},immediateShrink:function(n,t,e){e.isExpanded()&&FO(n,t,e)},hasGrown:function(n,t,e){return e.isExpanded()},hasShrunk:function(n,t,e){return e.isCollapsed()},isGrowing:NO,isShrinking:HO,isTransitioning:function(n,t,e){return!0===NO(n,t)||!0===HO(n,t)},toggleGrow:function(n,t,e){(e.isExpanded()?RO:VO)(n,t,e)},disableTransitions:AO}),uT=/* */Object.freeze({exhibit:function(n,t){var e=t.expanded;return Zo(e?{classes:[t.openClass],styles:{}}:{classes:[t.closedClass],styles:q(t.dimension.property,"0px")})},events:function(e,o){return co([bo(ii(),function(n,t){t.event().raw().propertyName===e.dimension.property&&(AO(n,e),o.isExpanded()&&kr(n.element(),e.dimension.property),(o.isExpanded()?e.onGrown:e.onShrunk)(n))})])}}),aT=[ct("closedClass"),ct("openClass"),ct("shrinkingClass"),ct("growingClass"),ht("getAnimationRoot"),qu("onShrunk"),qu("onStartShrink"),qu("onGrown"),qu("onStartGrow"),St("expanded",!1),st("dimension",it("property",{width:[Qu("property","width"),Qu("getDimension",function(n){return mu(n)+"px"})],height:[Qu("property","height"),Qu("getDimension",function(n){return su(n)+"px"})]}))],cT=ya({fields:aT,name:"sliding",active:uT,apis:iT,state:/* */Object.freeze({init:function(n){var t=ye(n.expanded);return nu({isExpanded:function(){return!0===t.get()},isCollapsed:function(){return!1===t.get()},setCollapsed:d(t.set,!1),setExpanded:d(t.set,!0),readState:function(){return"expanded: "+t.get()}})}})}),sT=nn([Xu(["closedClass","openClass","shrinkingClass","growingClass","overflowToggledClass"]),qu("onOpened"),qu("onClosed")].concat(tT())),fT=nn([xl({factory:JE,schema:qE(),name:"primary"}),xl({factory:JE,schema:qE(),name:"overflow",overrides:function(t){return{toolbarBehaviours:ba([cT.config({dimension:{property:"height"},closedClass:t.markers.closedClass,openClass:t.markers.openClass,shrinkingClass:t.markers.shrinkingClass,growingClass:t.markers.growingClass,onShrunk:function(n){qs(n,t,"overflow-button").each(function(n){Cg.off(n),vg.focus(n)}),t.onClosed(n)},onGrown:function(n){lg.focusIn(n),t.onOpened(n)},onStartGrow:function(n){qs(n,t,"overflow-button").each(Cg.on)}}),lg.config({mode:"acyclic",onEscape:function(n){return qs(n,t,"overflow-button").each(vg.focus),on.some(!0)}})])}}}),wl({name:"overflow-button",overrides:function(n){return{buttonBehaviours:ba([Cg.config({toggleClass:n.markers.overflowToggledClass,aria:{mode:"pressed"},toggleOnExecute:!1})])}}}),wl({name:"overflow-group"})]),lT=function(n,t){var e=qs(n,t,"overflow");wO(n,t,e,PO),e.each(cT.refresh)},dT=Al({name:"SplitSlidingToolbar",configFields:sT(),partFields:fT(),factory:function(t,n,e,o){return SO(t,n,0,o,{coupling:{},apis:{refresh:function(n){return lT(n,t)},toggle:function(n){return function(t,e){qs(t,e,"overflow").each(function(n){lT(t,e),cT.toggleGrow(n)})}(n,t)},getOverflow:function(n){return qs(n,t,"overflow")}}})},apis:{setGroups:function(n,t,e){n.setGroups(t,e)},refresh:function(n,t){n.refresh(t)},getMoreButton:function(n,t){return n.getMoreButton(t)},getOverflow:function(n,t){return n.getOverflow(t)},toggle:function(n,t){n.toggle(t)}}}),mT=nn(Xo("toolbar-height-change")),gT="silver.readonly",pT=re([(pE="readonly",st(pE,pe))]),hT=[Tt("disabled",!1),yt("tooltip"),yt("icon"),yt("text"),Bt("onSetup",function(){return Z})],vT=re([ft("type"),dt("onAction")].concat(hT)),bT=[yt("text"),yt("tooltip"),yt("icon"),dt("fetch"),Bt("onSetup",function(){return Z})],yT=re(g([ft("type")],bT)),xT=re([ft("type"),yt("tooltip"),yt("icon"),yt("text"),xt("select"),dt("fetch"),Bt("onSetup",function(){return Z}),Et("presets","normal",["normal","color","listpreview"]),St("columns",1),dt("onAction"),dt("onItemAction")]),wT=[Tt("active",!1)].concat(hT),ST=re(wT.concat([ft("type"),dt("onAction")])),CT=[Bt("predicate",function(){return!1}),Et("scope","node",["node","editor"]),Et("position","selection",["node","selection","line"])],kT=hT.concat([St("type","contextformbutton"),St("primary",!1),dt("onAction"),At("original",l)]),OT=wT.concat([St("type","contextformbutton"),St("primary",!1),dt("onAction"),At("original",l)]),ET=hT.concat([St("type","contextformbutton")]),TT=wT.concat([St("type","contextformtogglebutton")]),BT=it("type",{contextformbutton:kT,contextformtogglebutton:OT}),DT=re([St("type","contextform"),Bt("initValue",function(){return""}),yt("label"),pt("commands",BT),vt("launch",it("type",{contextformbutton:ET,contextformtogglebutton:TT}))].concat(CT)),AT=re([St("type","contexttoolbar"),ft("items")].concat(CT)),_T=/* */Object.freeze({getState:function(n,t,e){return e}}),MT=/* */Object.freeze({events:function(i,u){function o(o,r){i.updateState.each(function(n){var t=n(o,r);u.set(t)}),i.renderComponents.each(function(n){var t=n(r,u.get()),e=S(t,o.getSystem().build);ps(o,e)})}return co([lo(li(),function(n,t){var e=i.channel;vn(t.channels(),e)&&o(n,t.data())}),Ii(function(t,n){i.initialData.each(function(n){o(t,n)})})])}}),FT=/* */Object.freeze({init:function(n){var t=ye(on.none());return{readState:function(){return t.get().fold(function(){return"none"},function(n){return n})},get:function(){return t.get()},set:function(n){return t.set(n)},clear:function(){return t.set(on.none())}}}}),IT=[ct("channel"),ht("renderComponents"),ht("updateState"),ht("initialData")],RT=ya({fields:IT,name:"reflecting",active:MT,apis:_T,state:FT}),VT=nn([ct("toggleClass"),ct("fetch"),Ju("onExecute"),St("getHotspot",on.some),St("getAnchorOverrides",nn({})),St("layouts",on.none()),Ju("onItemExecute"),ht("lazySink"),ct("dom"),qu("onOpen"),Fs("splitDropdownBehaviours",[Jy,lg,vg]),St("matchWidth",!1),St("useMinWidth",!1),St("eventOrder",{}),ht("role")].concat(ax())),NT=xl({factory:Gg,schema:[ct("dom")],name:"arrow",defaults:function(n){return{buttonBehaviours:ba([vg.revoke()])}},overrides:function(t){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(n){n.getSystem().getByUid(t.uid).each(io)},buttonBehaviours:ba([Cg.config({toggleOnExecute:!1,toggleClass:t.toggleClass})])}}}),HT=xl({factory:Gg,schema:[ct("dom")],name:"button",defaults:function(n){return{buttonBehaviours:ba([vg.revoke()])}},overrides:function(e){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(t){t.getSystem().getByUid(e.uid).each(function(n){e.onExecute(n,t)})}}}}),PT=nn([NT,HT,Sl({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:n.text}}}},schema:[ct("text")],name:"aria-descriptor"}),wl({schema:[Gu()],name:"menu",defaults:function(o){return{onExecute:function(t,e){t.getSystem().getByUid(o.uid).each(function(n){o.onItemExecute(n,t,e)})}}}}),Qy()]),zT=Al({name:"SplitDropdown",configFields:VT(),partFields:PT(),factory:function(o,n,t,e){function r(n){Zl.getCurrent(n).each(function(n){ad.highlightFirst(n),lg.focusIn(n)})}function i(n){ex(o,function(n){return n},n,e,r,Ay.HighlightFirst).get(Z)}function u(n){var t=Ks(n,o,"button");return io(t),on.some(!0)}var a=An(co([Ii(function(e,n){qs(e,o,"aria-descriptor").each(function(n){var t=Xo("aria");Po(n.element(),"id",t),Po(e.element(),"aria-describedby",t)})})]),rm(on.some(i))),c={repositionMenus:function(n){Cg.isOn(n)&&ux(n)}};return{uid:o.uid,dom:o.dom,components:n,apis:c,eventOrder:N(N({},o.eventOrder),{"alloy.execute":["disabling","toggling","alloy.base.behaviour"]}),events:a,behaviours:Rs(o.splitDropdownBehaviours,[Jy.config({others:{sandbox:function(n){var t=Ks(n,o,"arrow");return ix(o,n,{onOpen:function(){Cg.on(t),Cg.on(n)},onClose:function(){Cg.off(t),Cg.off(n)}})}}}),lg.config({mode:"special",onSpace:u,onEnter:u,onDown:function(n){return i(n),on.some(!0)}}),vg.config({}),Cg.config({toggleOnExecute:!1,aria:{mode:"expanded"}})]),domModification:{attributes:{role:o.role.getOr("button"),"aria-haspopup":!0}}}},apis:{repositionMenus:function(n,t){return n.repositionMenus(t)}}}),LT=Xo("focus-button"),jT=["checklist","ordered-list"],UT=["indent","outdent","table-insert-column-after","table-insert-column-before","unordered-list"],WT=function(n,t,e){return oE(n,{toolbarButtonBehaviours:[].concat(0<e.length?[Kd("toolbarButtonWith",e)]:[]),getApi:ZO,onSetup:n.onSetup},t)},GT=function(n,t,e){return Dn(oE(n,{toolbarButtonBehaviours:[mg.config({}),Cg.config({toggleClass:"tox-tbtn--enabled",aria:{mode:"pressed"},toggleOnExecute:!1})].concat(0<e.length?[Kd("toolbarToggleButtonWith",e)]:[]),getApi:nE,onSetup:n.onSetup},t))},XT=function(n,t,e){var o=t.label.fold(function(){return{}},function(n){return{"aria-label":n}}),r=vm(yy.sketch({inputClasses:["tox-toolbar-textfield","tox-toolbar-nav-js"],data:t.initValue(),inputAttributes:o,selectOnFocus:!0,inputBehaviours:ba([lg.config({mode:"special",onEnter:function(n){return i.findPrimary(n).map(function(n){return io(n),!0})},onLeft:function(n,t){return t.cut(),on.none()},onRight:function(n,t){return t.cut(),on.none()}})])})),i=function(t,n,e){var o=S(n,function(n){return vm(uE(t,n,e))});return{asSpecs:function(){return S(o,function(n){return n.asSpec()})},findPrimary:function(e){return Du(n,function(n,t){return n.primary?on.from(o[t]).bind(function(n){return n.getOpt(e)}).filter(b(Ch.isDisabled)):on.none()})}}}(r,t.commands,e.shared.providers);return KO({type:n,uid:Xo("context-toolbar"),initGroups:[{title:on.none(),items:[r.asSpec()]},{title:on.none(),items:i.asSpecs()}],onEscape:on.none,cyclicKeying:!0,backstage:e,getSink:function(){return an.error("")}})},YT=function(t,e){function n(n){return n.dom()===e.getBody()}var o=we.fromDom(e.selection.getNode());return sE(o,t.inNodeScope).orThunk(function(){return sE(o,t.inEditorScope).orThunk(function(){return function(n,t,e){for(var o=n.dom(),r=dn(e)?e:nn(!1);o.parentNode;){o=o.parentNode;var i=we.fromDom(o),u=t(i);if(u.isSome())return u;if(r(i))break}return on.none()}(o,function(n){return sE(n,t.inNodeScope)},n)})})},qT=function(e,r){function o(t,e){var o=et(function(n){return tt("ContextForm",DT,n)}(e));(n[t]=o).launch.map(function(n){c["form:"+t]=N(N({},e.launch),{type:"contextformtogglebutton"===n.type?"togglebutton":"button",onAction:function(){r(o)}})}),"editor"===o.scope?a.push(o):u.push(o),s[t]=o}function i(t,e){(function(n){return tt("ContextToolbar",AT,n)})(e).each(function(n){"editor"===e.scope?a.push(n):u.push(n),s[t]=n})}var n={},u=[],a=[],c={},s={},t=wn(e);return bn(t,function(n){var t=e[n];"contextform"===t.type?o(n,t):"contexttoolbar"===t.type&&i(n,t)}),{forms:n,inNodeScope:u,inEditorScope:a,lookupTable:s,formNavigators:c}},KT=Xo("forward-slide"),JT=Xo("backward-slide"),$T=Xo("change-slide-event"),QT="tox-pop--resizing";(vE=hE=hE||{})[vE.SemiColon=0]="SemiColon",vE[vE.Space=1]="Space";function ZT(n,t,e,o){return{type:"basic",data:function(n){return S(n,function(n){var t=n,e=n,o=n.split("=");return 1<o.length&&(t=o[0],e=o[1]),{title:t,format:e}})}(function(n,t){return t===hE.SemiColon?n.replace(/;$/,"").split(";"):n.split(" ")}(Nn(n.settings,t).getOr(e),o))}}function nB(e){function t(n){var t=E(RD,function(n){return e.formatter.match(n.format)}).fold(function(){return"left"},function(n){return n.title.toLowerCase()});ro(n,ik,{icon:"align-"+t})}var n=on.some(function(n){return function(){return t(n)}}),o=on.some(function(n){return t(n)}),r=function(n){return{type:"basic",data:n}}(RD);return{tooltip:"Align",icon:on.some("align-left"),isSelectedFor:function(n){return function(){return e.formatter.match(n)}},getCurrentValue:nn(on.none()),getPreviewFor:function(n){return function(){return on.none()}},onAction:lE(e),setInitialValue:o,nodeChangeHandler:n,dataset:r,shouldHide:!1,isInvalid:function(n){return!e.formatter.canApply(n.format)}}}function tB(n){var t=n.split(/\s*,\s*/);return S(t,function(n){return n.replace(/^['"]+|['"]+$/g,"")})}function eB(r){function i(){function e(n){return n?tB(n)[0]:""}var n=r.queryCommandValue("FontName"),t=u.data,o=n?n.toLowerCase():"";return{matchOpt:E(t,function(n){var t=n.format;return t.toLowerCase()===o||e(t).toLowerCase()===e(o).toLowerCase()}).orThunk(function(){return function(n){var t;return 0===n.indexOf("-apple-system")&&(t=tB(n.toLowerCase()),D(VD,function(n){return-1<t.indexOf(n.toLowerCase())}))}(o)?on.from({title:"System Font",format:o}):on.none()}),font:n}}function t(n){var t=i(),e=t.matchOpt,o=t.font,r=e.fold(function(){return o},function(n){return n.title});ro(n,rk,{text:r})}var n=on.some(function(n){return function(){return t(n)}}),e=on.some(function(n){return t(n)}),u=ZT(r,"font_formats","Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",hE.SemiColon);return{tooltip:"Fonts",icon:on.none(),isSelectedFor:function(t){return function(n){return n.exists(function(n){return n.format===t})}},getCurrentValue:function(){return i().matchOpt},getPreviewFor:function(n){return function(){return on.some({tag:"div",styleAttr:-1===n.indexOf("dings")?"font-family:"+n:""})}},onAction:function(n){return function(){r.undoManager.transact(function(){r.focus(),r.execCommand("FontName",!1,n.format)})}},setInitialValue:e,nodeChangeHandler:n,dataset:u,shouldHide:!1,isInvalid:function(){return!1}}}function oB(n,t){return/[0-9.]+px$/.test(n)?function(n,t){var e=Math.pow(10,t);return Math.round(n*e)/e}(72*parseInt(n,10)/96,t||0)+"pt":n}function rB(e){function i(){var o=on.none(),r=u.data,i=e.queryCommandValue("FontSize");if(i)for(var n=function(n){var t=oB(i,n),e=function(n){return V(ND,n).getOr("")}(t);o=E(r,function(n){return n.format===i||n.format===t||n.format===e})},t=3;o.isNone()&&0<=t;t--)n(t);return{matchOpt:o,px:i}}function t(n){var t=i(),e=t.matchOpt,o=t.px,r=e.fold(function(){return o},function(n){return n.title});ro(n,rk,{text:r})}var n=nn(nn(on.none())),o=on.some(function(n){return function(){return t(n)}}),r=on.some(function(n){return t(n)}),u=ZT(e,"fontsize_formats","8pt 10pt 12pt 14pt 18pt 24pt 36pt",hE.Space);return{tooltip:"Font sizes",icon:on.none(),isSelectedFor:function(t){return function(n){return n.exists(function(n){return n.format===t})}},getPreviewFor:n,getCurrentValue:function(){return i().matchOpt},onAction:function(n){return function(){e.undoManager.transact(function(){e.focus(),e.execCommand("FontSize",!1,n.format)})}},setInitialValue:r,nodeChangeHandler:o,dataset:u,shouldHide:!1,isInvalid:function(){return!1}}}function iB(e,n,t){var o=n();return Du(t,function(t){return E(o,function(n){return e.formatter.matchNode(t,n.format)})}).orThunk(function(){return e.formatter.match("p")?on.some({title:"Paragraph",format:"p"}):on.none()})}function uB(n){var t=n.selection.getStart(!0)||n.getBody();return n.dom.getParents(t,function(){return!0},n.getBody())}function aB(o){function e(n,t){var e=function(n){return iB(o,function(){return r.data},n)}(n).fold(function(){return"Paragraph"},function(n){return n.title});ro(t,rk,{text:e})}var n=on.some(function(t){return function(n){return e(n.parents,t)}}),t=on.some(function(n){var t=uB(o);e(t,n)}),r=ZT(o,"block_formats","Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre",hE.SemiColon);return{tooltip:"Blocks",icon:on.none(),isSelectedFor:function(n){return function(){return o.formatter.match(n)}},getCurrentValue:nn(on.none()),getPreviewFor:function(t){return function(){var n=o.formatter.get(t);return on.some({tag:0<n.length&&(n[0].inline||n[0].block)||"div",styleAttr:o.formatter.getCssText(t)})}},onAction:lE(o),setInitialValue:t,nodeChangeHandler:n,dataset:r,shouldHide:!1,isInvalid:function(n){return!o.formatter.canApply(n.format)}}}function cB(i,n){function e(n,t){var e=function(n){var t=n.items;return t!==undefined&&0<t.length?B(t,e):[{title:n.title,format:n.format}]},o=B(Xk(i),e),r=iB(i,function(){return o},n).fold(function(){return"Paragraph"},function(n){return n.title});ro(t,rk,{text:r})}var t=on.some(function(t){return function(n){return e(n.parents,t)}}),o=on.some(function(n){var t=uB(i);e(t,n)});return{tooltip:"Formats",icon:on.none(),isSelectedFor:function(n){return function(){return i.formatter.match(n)}},getCurrentValue:nn(on.none()),getPreviewFor:function(t){return function(){var n=i.formatter.get(t);return n!==undefined?on.some({tag:0<n.length&&(n[0].inline||n[0].block)||"div",styleAttr:i.formatter.getCssText(t)}):on.none()}},onAction:lE(i),setInitialValue:o,nodeChangeHandler:t,shouldHide:i.getParam("style_formats_autohide",!1,"boolean"),isInvalid:function(n){return!i.formatter.canApply(n.format)},dataset:n}}function sB(o,r){return function(n,t){var e=o(n).mapError(function(n){return le(n)}).getOrDie();return r(e,t)}}function fB(n){var t=n.toolbar,e=n.buttons;return!1===t?[]:t===undefined||!0===t?function(e){var n=S(HD,function(n){var t=C(n.items,function(n){return En(e,n)||En(zD,n)});return{name:n.name,items:t}});return C(n,function(n){return 0<n.items.length})}(e):cn(t)?function(n){var t=n.split("|");return S(t,function(n){return{items:n.trim().split(" ")}})}(t):function(n){return h(n,function(n){return En(n,"name")&&En(n,"items")})}(t)?t:(v.console.error("Toolbar type should be string, string[], boolean or ToolbarGroup[]"),[])}function lB(t,e,o,r,n){return V(e,o.toLowerCase()).orThunk(function(){return n.bind(function(n){return Du(n,function(n){return V(e,n+o.toLowerCase())})})}).fold(function(){return V(zD,o.toLowerCase()).map(function(n){return n(t,r)}).orThunk(function(){return on.none()})},function(n){return function(t,e){return V(PD,t.type).fold(function(){return v.console.error("skipping button defined by",t),on.none()},function(n){return on.some(n(t,e))})}(n,r)})}function dB(e,o,r,i){var n=fB(o),t=S(n,function(n){var t=B(n.items,function(n){return 0===n.trim().length?[]:lB(e,o.buttons,n,r,i).toArray()});return{title:on.from(e.translate(n.name)),items:t}});return C(t,function(n){return 0<n.items.length})}function mB(e){return(Sr(e,"position").is("fixed")?on.none():To(e)).orThunk(function(){var n=we.fromTag("span");Ao(e,n);var t=To(n);return Pi(n),t}).map(du).getOrThunk(function(){return Iu(0,0)})}function gB(t){return function(n){return n.translate(-t.left(),-t.top())}}function pB(t){return function(n){return n.translate(t.left(),t.top())}}function hB(e){return function(n,t){return O(e,function(n,t){return t(n)},Iu(n,t))}}function vB(n,t,e){return n.fold(hB([pB(e),gB(t)]),hB([gB(t)]),hB([]))}function bB(n,t,e){return n.fold(hB([pB(e)]),hB([]),hB([pB(t)]))}function yB(n,t,e){return n.fold(hB([]),hB([gB(e)]),hB([pB(t),gB(e)]))}function xB(n,t,e){return n.fold(function(n,t){return{position:"absolute",left:n+"px",top:t+"px"}},function(n,t){return{position:"absolute",left:n-e.left()+"px",top:t-e.top()+"px"}},function(n,t){return{position:"fixed",left:n+"px",top:t+"px"}})}function wB(n,i,u,a){function t(o,r){return function(n,t){var e=o(i,u,a);return r(n.getOr(e.left()),t.getOr(e.top()))}}return n.fold(t(yB,ZD.offset),t(bB,ZD.absolute),t(vB,ZD.fixed))}function SB(n,t){var e=n.element();fr(e,t.transitionClass),dr(e,t.fadeOutClass),fr(e,t.fadeInClass),t.onShow(n)}function CB(n,t){var e=n.element();fr(e,t.transitionClass),dr(e,t.fadeInClass),fr(e,t.fadeOutClass),t.onHide(n)}function kB(n,t,e){return D(n,function(n){switch(n){case"bottom":return function(n,t){return n.bottom()<=t.bottom()}(t,e);case"top":return function(n,t){return n.y()>=t.y()}(t,e)}})}function OB(n,t){return Lo(n,t)?on.some(parseInt(zo(n,t),10)):on.none()}function EB(r,n){return OB(r,n.leftAttr).bind(function(o){return OB(r,n.topAttr).map(function(n){var t=mu(r),e=su(r);return yu(o,n,t,e)})})}function TB(n,t,e){var o=zo(n,t.positionAttr);switch(function(n,t){jo(n,t.leftAttr),jo(n,t.topAttr),jo(n,t.positionAttr)}(n,t),o){case"static":return on.some(oA["static"]());case"absolute":return on.some(oA.absolute(e.x(),e.y()));default:return on.none()}}function BB(n,t,e,o,r){var i=xu(n);if(kB(t.modes,i,e))return on.none();var u=r(),a=wr(n,"position");!function(n,t,e,o,r){Po(n,t.leftAttr,e),Po(n,t.topAttr,o),Po(n,t.positionAttr,r)}(n,t,i.x(),i.y(),a);var c=tA(i.x(),i.y()),s=vB(c,o,u),f=tA(e.x(),e.y()),l=vB(f,o,u),d=i.y()<=e.y()?l.top():l.top()+e.height()-i.height();return on.some(oA.fixed(s.left(),d))}function DB(n,t,e,o,r){var i=n.element();return Sr(i,"position").is("fixed")?function(t,e,o){return EB(t,e).filter(function(n){return kB(e.modes,n,o)}).bind(function(n){return TB(t,e,n)})}(i,t,e):BB(i,t,e,o,r)}function AB(t,n){bn(["left","top","position"],function(n){return kr(t.element(),n)}),n.onUndocked(t)}function _B(n,t,e,o,r){var i=xB(r,0,o);xr(n.element(),i),("fixed"===i.position?t.onDocked:t.onUndocked)(n)}function MB(o,n,r,i,u){void 0===u&&(u=!1),n.contextual.each(function(e){e.lazyContext(o).each(function(n){var t=function(n,t){return n.y()<t.bottom()&&n.bottom()>t.y()}(n,i);t!==r.isVisible()&&(r.setVisible(t),u&&!t?(gr(o.element(),[e.fadeOutClass]),e.onHide(o)):(t?SB:CB)(o,e))})})}function FB(r,i,n){var u=r.element();n.setDocked(!1),function(n,t){var e=n.element();return EB(e,t).bind(function(n){return TB(e,t,n)})}(r,i).each(function(n){n.fold(function(){return AB(r,i)},function(n,t){var e=Co(u),o=(pu(e),mB(u));_B(r,i,0,o,tA(n,t))},Z)}),n.setVisible(!0),i.contextual.each(function(n){pr(u,[n.fadeInClass,n.fadeOutClass,n.transitionClass]),n.onShow(r)}),rA(r,i,n)}function IB(n,t,e){e.isDocked()&&FB(n,t,e)}function RB(o){var r=o.element();Eo(r).each(function(n){if(cA.isDocked(o)){var t=mu(n);yr(r,"width",t+"px");var e=fu(r);yr(n,"padding-top",e+"px")}else kr(r,"width"),kr(n,"padding-top")})}function VB(n,t){t?(dr(n,sA.fadeOutClass),gr(n,[sA.transitionClass,sA.fadeInClass])):(dr(n,sA.fadeInClass),gr(n,[sA.fadeOutClass,sA.transitionClass]))}function NB(n,t){var e=we.fromDom(n.getContainer());t?(fr(e,fA),dr(e,lA)):(fr(e,lA),dr(e,fA))}function HB(i,e){function o(t){e().each(function(n){return t(n.element())})}function n(n){i.inline||RB(n),NB(i,cA.isDocked(n)),n.getSystem().broadcastOn([jf()],{}),e().each(function(n){return n.getSystem().broadcastOn([jf()],{})})}var r=ye(on.none()),t=i.inline?[]:function(){var n;return[lc.config({channels:(n={},n[mT()]={onReceive:RB},n)})]}();return g([vg.config({}),cA.config({leftAttr:"data-dock-left",topAttr:"data-dock-top",positionAttr:"data-dock-pos",contextual:N({lazyContext:function(n){var t=fu(n.element()),e=i.inline?i.getContentAreaContainer():i.getContainer(),o=xu(we.fromDom(e)),r=o.height()-t;return on.some(yu(o.x(),o.y(),o.width(),r))},onShow:function(){o(function(n){return VB(n,!0)})},onShown:function(t){o(function(n){return pr(n,[sA.transitionClass,sA.fadeInClass])}),r.get().each(function(n){!function(t,e){var o=Co(e);Sa(o).filter(function(n){return!jt(e,n)}).filter(function(n){return jt(n,we.fromDom(o.dom().body))||Ye(t,n)}).each(function(){return wa(e)})}(t.element(),n),r.set(on.none())})},onHide:function(n){r.set(function(n,t){return Ca(n).orThunk(function(){return t().toOption().bind(function(n){return Ca(n.element())})})}(n.element(),e)),o(function(n){return VB(n,!1)})},onHidden:function(){o(function(n){return pr(n,[sA.transitionClass])})}},sA),modes:["top"],onDocked:n,onUndocked:n})],t)}function PB(n){return"<alloy.field."+n+">"}function zB(n){return{element:function(){return n.element().dom()}}}function LB(e,o){var r=S(wn(o),function(n){var t=o[n],e=et(function(n){return tt("sidebar",CA,n)}(t));return{name:n,getApi:zB,onSetup:e.onSetup,onShow:e.onShow,onHide:e.onHide}});return S(r,function(n){var t=ye(Z);return e.slot(n.name,{dom:{tag:"div",classes:["tox-sidebar__pane"]},behaviours:Jp([Ep(n,t),Tp(n,t),lo(Bi(),function(t,n){var e=n.event();E(r,function(n){return n.name===e.name()}).each(function(n){(e.visible()?n.onShow:n.onHide)(n.getApi(t))})})])})})}function jB(n,t){Zl.getCurrent(n).each(function(n){return mg.set(n,[function(t){return SA.sketch(function(n){return{dom:{tag:"div",classes:["tox-sidebar__pane-container"]},components:LB(n,t),slotBehaviours:Jp([Ii(function(n){return SA.hideAllSlots(n)})])}})}(t)])})}function UB(n){return Zl.getCurrent(n).bind(function(n){return cT.isGrowing(n)||cT.hasGrown(n)?Zl.getCurrent(n).bind(function(t){return E(SA.getSlotNames(t),function(n){return SA.isShowing(t,n)})}):on.none()})}function WB(n,t,e){var o=n.element();!0===t?(mg.set(n,[function(n){return{dom:{tag:"div",attributes:{"aria-label":n.translate("Loading...")},classes:["tox-throbber__busy-spinner"]},components:[{dom:cp('<div class="tox-spinner"><div></div><div></div><div></div></div>')}],behaviours:ba([lg.config({mode:"special",onTab:function(){return on.some(!0)},onShiftTab:function(){return on.some(!0)}}),vg.config({})])}}(e)]),kr(o,"display"),jo(o,"aria-hidden")):(mg.set(n,[]),yr(o,"display","none"),Po(o,"aria-hidden","true"))}function GB(n){return"string"==typeof n?n.split(" "):n}function XB(e,o){var r=An(IA,o.menus),t=0<wn(o.menus).length,n=o.menubar===undefined||!0===o.menubar?GB("file edit view insert format tools table help"):GB(!1===o.menubar?"":o.menubar),i=C(n,function(n){return t&&o.menus.hasOwnProperty(n)&&o.menus[n].hasOwnProperty("items")||IA.hasOwnProperty(n)}),u=S(i,function(n){var t=r[n];return function(n,e,t){var o=function(n){return n.getParam("removed_menuitems","")}(t).split(/[ ,]/);return{text:n.title,getItems:function(){return B(n.items,function(n){var t=n.toLowerCase();return 0===t.trim().length?[]:x(o,function(n){return n===t})?[]:"separator"===t||"|"===t?[{type:"separator"}]:e.menuItems[t]?[e.menuItems[t]]:[]})}}}({title:t.title,items:GB(t.items)},o,e)});return C(u,function(n){return 0<n.getItems().length&&x(n.getItems(),function(n){return"separator"!==n.type})})}function YB(n,t){var e,o=function(n){var t=n.settings,e=t.skin,o=t.skin_url;if(!1!==e){var r=e||"oxide";o=o?n.documentBaseURI.toAbsolute(o):Gb.baseURL+"/skins/ui/"+r}return o}(t);o&&(e=o+"/skin.min.css",t.contentCSS.push(o+(n?"/content.inline":"/content")+".min.css")),!1===function(n){return!1===n.getParam("skin")}(t)&&e?Rh.DOM.styleSheetLoader.load(e,RA(t)):RA(t)()}function qB(t,n,e,o){var r=n.outerContainer,i=e.toolbar,u=e.buttons;if(h(i,cn)){var a=i.map(function(n){return dB(t,{toolbar:n,buttons:u},{backstage:o},on.none())});FA.setToolbars(r,a)}else FA.setToolbar(r,dB(t,e,{backstage:o},on.none()))}function KB(n){return function(n){var t=Fb(n),e=Vb(n),o=Hb(n);return UA(t).map(function(n){return jA(n,e,o)})}(n).getOr(Fb(n))}function JB(n){var t=Ib(n),e=Rb(n),o=Nb(n);return UA(t).map(function(n){return jA(n,e,o)})}function $B(n,t){return function(){n.execCommand("mceToggleFormat",!1,t)}}function QB(n){!function(e){yk.each([{name:"bold",text:"Bold",icon:"bold"},{name:"italic",text:"Italic",icon:"italic"},{name:"underline",text:"Underline",icon:"underline"},{name:"strikethrough",text:"Strikethrough",icon:"strike-through"},{name:"subscript",text:"Subscript",icon:"subscript"},{name:"superscript",text:"Superscript",icon:"superscript"}],function(n,t){e.ui.registry.addToggleButton(n.name,{tooltip:n.text,icon:n.icon,onSetup:fE(e,n.name),onAction:$B(e,n.name)})});for(var n=1;n<=6;n++){var t="h"+n;e.ui.registry.addToggleButton(t,{text:t.toUpperCase(),tooltip:"Heading "+n,onSetup:fE(e,t),onAction:$B(e,t)})}}(n),function(t){yk.each([{name:"cut",text:"Cut",action:"Cut",icon:"cut"},{name:"copy",text:"Copy",action:"Copy",icon:"copy"},{name:"paste",text:"Paste",action:"Paste",icon:"paste"},{name:"help",text:"Help",action:"mceHelp",icon:"help"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all"},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document"},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting"},{name:"remove",text:"Remove",action:"Delete",icon:"remove"}],function(n){t.ui.registry.addButton(n.name,{tooltip:n.text,icon:n.icon,onAction:function(){return t.execCommand(n.action)}})})}(n),function(t){yk.each([{name:"blockquote",text:"Blockquote",action:"mceBlockQuote",icon:"quote"}],function(n){t.ui.registry.addToggleButton(n.name,{tooltip:n.text,icon:n.icon,onAction:function(){return t.execCommand(n.action)},onSetup:fE(t,n.name)})})}(n)}function ZB(n,t,e){function o(){return!!t.undoManager&&t.undoManager[e]()}function r(){n.setDisabled(t.readonly||!o())}return n.setDisabled(!o()),t.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",r),function(){return t.off("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",r)}}function nD(n,t){return{anchor:"makeshift",x:n,y:t}}function tD(n){return"longpress"===n.type||0===n.type.indexOf("touch")}function eD(n,t){var e=Rh.DOM.getPos(n);return function(n,t,e){return nD(n.x+t,n.y+e)}(t,e.x,e.y)}function oD(n,t){return"contextmenu"===t.type?n.inline?function(n){if(tD(n)){var t=n.touches[0];return nD(t.pageX,t.pageY)}return nD(n.pageX,n.pageY)}(t):eD(n.getContentAreaContainer(),function(n){if(tD(n)){var t=n.touches[0];return nD(t.clientX,t.clientY)}return nD(n.clientX,n.clientY)}(t)):ZA(n)}function rD(n){return{anchor:"node",node:on.some(we.fromDom(n.selection.getNode())),root:we.fromDom(n.getBody())}}function iD(n,t,e,o,r,i){var u=e(),a=function(n,t,e){return e?rD(n):oD(n,t)}(n,t,i);NC(u,Fh.CLOSE_ON_EXECUTE,o,!1).map(function(n){t.preventDefault(),jg.showMenuAt(r,a,{menu:{markers:wv("normal")},data:n})})}function uD(t,e,n,o,r,i){var u=function(n,t){var e=t?rD(n):ZA(n);return N({bubble:Oa(0,12,t_),layouts:n_,overrides:{maxWidthFunction:RE(),maxHeightFunction:Cf()}},e)}(t,i);NC(n,Fh.CLOSE_ON_EXECUTE,o,!0).map(function(n){e.preventDefault(),jg.showMenuWithinBounds(r,u,{menu:{markers:wv("normal")},data:n,type:"horizontal"},function(){return on.some(cE(t))}),t.fire(YE)})}function aD(t,e,o,r,i,u){function n(){var n=o();uD(t,e,n,r,i,u)}var a=Ht(),c=a.os.isiOS(),s=a.os.isOSX(),f=a.os.isAndroid();if(!s&&!c||u)f&&!u&&t.selection.setCursorLocation(e.target,0),n();else{var l=function(){!function(n){function t(){qg.setEditorTimeout(n,function(){n.selection.setRng(e)},10),i()}var e=n.selection.getRng();n.once("touchend",t);function o(n){n.preventDefault(),n.stopImmediatePropagation()}n.on("mousedown",o,!0);function r(){return i()}n.once("longpresscancel",r);var i=function(){n.off("touchend",t),n.off("longpresscancel",r),n.off("mousedown",o)}}(t),n()};!function(n,t){var e=n.selection;if(e.isCollapsed()||t.touches.length<1)return!1;var o=t.touches[0],r=e.getRng();return Uc(n.getWin(),Tc.domRange(r)).exists(function(n){return n.left()<=o.clientX&&n.right()>=o.clientX&&n.top()<=o.clientY&&n.bottom()>=o.clientY})}(t,e)?(t.once("selectionchange",l),t.once("touchend",function(){return t.off("selectionchange",l)})):l()}}function cD(n){return"string"==typeof n?n.split(/[ ,]/):n}function sD(n){return cn(n)?"|"===n:"separator"===n.type}function fD(n,t){if(0===t.length)return n;var e=F(n).filter(function(n){return!sD(n)}).fold(function(){return[]},function(n){return[i_]});return n.concat(e).concat(t).concat([i_])}function lD(i,n,t){function e(n){return jg.hide(a)}function o(o){var n="longpress"===o.type;if(e_(i)&&o.preventDefault(),!function(n,t){return t.ctrlKey&&!e_(n)}(i,o)&&!r_(i)){var r=!n&&(2!==o.button||o.target===i.getBody());(u()?aD:iD)(i,o,function(){var n=r?i.selection.getStart(!0):o.target,t=i.ui.registry.getAll(),e=o_(i);return function(r,n,i){var t=O(n,function(n,t){if(En(r,t)){var e=r[t].update(i);if(cn(e))return fD(n,e.split(" "));if(0<e.length){var o=S(e,u_);return fD(n,o)}return n}return n.concat([t])},[]);return 0<t.length&&sD(t[t.length-1])&&t.pop(),t}(t.contextMenus,e,n)},t,a,r)}}var u=Ht().deviceType.isTouch,a=uu(jg.sketch({dom:{tag:"div"},lazySink:n,onEscape:function(){return i.focus()},onShow:function(){return t.setContextMenuState(!0)},onHide:function(){return t.setContextMenuState(!1)},fireDismissalEventInstead:{},inlineBehaviours:ba([Kd("dismissContextMenu",[lo(Oi(),function(n,t){zf.close(n),i.focus()})])])}));i.on("init",function(){var n="ResizeEditor ScrollContent ScrollWindow longpresscancel"+(u()?"":" ResizeWindow");i.on(n,e),i.on(u()?"longpress":"longpress contextmenu",o)})}function dD(n,t){n.getSystem().addToGui(t),function(n){Eo(n.element()).filter(Hr).each(function(t){Sr(t,"z-index").each(function(n){Po(t,a_,n)}),yr(t,"z-index",wr(n.element(),"z-index"))})}(t)}function mD(n){!function(n){Eo(n.element()).filter(Hr).each(function(n){var t=zo(n,a_);Lo(n,a_)?yr(n,"z-index",t):kr(n,"z-index"),jo(n,a_)})}(n),n.getSystem().removeFromGui(n)}function gD(n,t,e){return n.getSystem().build(Wb.sketch({dom:{styles:{left:"0px",top:"0px",width:"100%",height:"100%",position:"fixed","z-index":"1000000000000000"},classes:[t]},events:e}))}function pD(n,t,e,o){return function(n,t){var e=n.element(),o=parseInt(zo(e,t.leftAttr),10),r=parseInt(zo(e,t.topAttr),10);return isNaN(o)||isNaN(r)?on.none():on.some(Iu(o,r))}(n,t).fold(function(){return e},function(n){return eA(n.left()+o.left(),n.top()+o.top())})}function hD(n,t,e,o,r,i){var u=pD(n,t,e,o),a=t.mustSnap?f_(n,t,u,r,i):l_(n,t,u,r,i),c=vB(u,r,i);return function(n,t,e){var o=n.element();Po(o,t.leftAttr,e.left()+"px"),Po(o,t.topAttr,e.top()+"px")}(n,t,c),a.fold(function(){return{coord:eA(c.left(),c.top()),extra:on.none()}},function(n){return{coord:n.output(),extra:n.extra()}})}function vD(n,t){!function(n,t){var e=n.element();jo(e,t.leftAttr),jo(e,t.topAttr)}(n,t)}function bD(n,e,o,r){return Du(n,function(n){var t=n.sensor();return function(n,t,e,o,r,i){var u=bB(n,r,i),a=bB(t,r,i);return Math.abs(u.left()-a.left())<=e&&Math.abs(u.top()-a.top())<=o}(e,t,n.range().left(),n.range().top(),o,r)?on.some({output:nn(wB(n.output(),e,o,r)),extra:n.extra}):on.none()})}function yD(t){return function(n,t,e,o){return n.isSome()&&t.isSome()&&e.isSome()?on.some(o(n.getOrDie(),t.getOrDie(),e.getOrDie())):on.none()}(Sr(t,"left"),Sr(t,"top"),Sr(t,"position"),function(n,t,e){return("fixed"===e?eA:nA)(parseInt(n,10),parseInt(t,10))}).getOrThunk(function(){var n=du(t);return tA(n.left(),n.top())})}function xD(e,n,o,r,i,u,t){return function(n,t,e,o,r){var i=r.bounds,u=bB(t,e,o),a=us(u.left(),i.x(),i.x()+i.width()-r.width),c=us(u.top(),i.y(),i.y()+i.height()-r.height),s=tA(a,c);return t.fold(function(){var n=yB(s,e,o);return nA(n.left(),n.top())},function(){return s},function(){var n=vB(s,e,o);return eA(n.left(),n.top())})}(0,n.fold(function(){var n=function(n,e,o){return n.fold(function(n,t){return ZD.offset(n+e,t+o)},function(n,t){return ZD.absolute(n+e,t+o)},function(n,t){return ZD.fixed(n+e,t+o)})}(o,u.left(),u.top()),t=vB(n,r,i);return eA(t.left(),t.top())},function(t){var n=hD(e,t,o,u,r,i);return n.extra.each(function(n){t.onSensor(e,n)}),n.coord}),r,i,t)}function wD(n,t){return{bounds:n.getBounds(),height:fu(t.element()),width:gu(t.element())}}function SD(t,e,n,o,r){var i=n.update(o,r),u=n.getStartData().getOrThunk(function(){return wD(e,t)});i.each(function(n){!function(n,t,e,o){var r=t.getTarget(n.element());if(t.repositionTarget){var i=Co(n.element()),u=pu(i),a=mB(r),c=yD(r),s=xD(n,t.snaps,c,u,a,o,e),f=xB(s,0,a);xr(r,f)}t.onDrag(n,r,o)}(t,e,u,n)})}function CD(t,n,e,o){n.each(mD),e.snaps.each(function(n){vD(t,n)});var r=e.getTarget(t.element());o.reset(),e.onDrop(t,r)}function kD(n){return function(t,e){function o(n){e.setStartData(wD(t,n))}return co(g([lo(wi(),function(n){e.getStartData().each(function(){return o(n)})})],n(t,e,o)))}}function OD(u,a,c){return[lo(Yr(),function(t,n){if(0===n.event().raw().button){n.stop();var e=function(){return CD(t,on.some(i),u,a)},o=hb(e,200),r={drop:e,delayDrop:o.schedule,forceDrop:e,move:function(n){o.cancel(),SD(t,u,a,d_,n)}},i=gD(t,u.blockerClass,function(e){return co([lo(Yr(),e.forceDrop),lo(Jr(),e.drop),lo(qr(),function(n,t){e.move(t.event())}),lo(Kr(),e.delayDrop)])}(r));c(t),dD(t,i)}})]}function ED(i,u,a){var c=ye(on.none());return[lo(Ur(),function(t,n){n.stop();function e(){CD(t,c.get(),i,u),c.set(on.none())}var o={drop:e,delayDrop:function(){},forceDrop:e,move:function(n){SD(t,i,u,g_,n)}},r=gD(t,i.blockerClass,function(e){return co([lo(Ur(),e.forceDrop),lo(Gr(),e.drop),lo(Xr(),e.drop),lo(Wr(),function(n,t){e.move(t.event())})])}(o));c.set(on.some(r));a(t),dD(t,r)}),lo(Wr(),function(n,t){t.stop(),SD(n,i,u,g_,t.event())}),lo(Gr(),function(n,t){t.stop(),CD(n,c.get(),i,u),c.set(on.none())}),lo(Xr(),function(n){CD(n,c.get(),i,u),c.set(on.none())})]}function TD(n,r,i,u,t,e){return n.fold(function(){return w_.snap({sensor:tA(i-20,u-20),range:Iu(t,e),output:tA(on.some(i),on.some(u)),extra:{td:r}})},function(n){var t=i-20,e=u-20,o=n.element().dom().getBoundingClientRect();return w_.snap({sensor:tA(t,e),range:Iu(40,40),output:tA(on.some(i-o.width/2),on.some(u-o.height/2)),extra:{td:r}})})}function BD(n,o,r){return{getSnapPoints:n,leftAttr:"data-drag-left",topAttr:"data-drag-top",onSensor:function(n,t){var e=t.td;!function(n,t){return n.exists(function(n){return jt(n,t)})}(o.get(),e)&&(o.set(on.some(e)),r(e))},mustSnap:!0}}function DD(n){return vm(Gg.sketch({dom:{tag:"div",classes:["tox-selector"]},buttonBehaviours:ba([w_.config({mode:"mouseOrTouch",blockerClass:"blocker",snaps:n}),Ew.config({})]),eventOrder:{mousedown:["dragging","alloy.base.behaviour"],touchstart:["dragging","alloy.base.behaviour"]}}))}var AD,_D,MD,FD,ID,RD=[{title:"Left",icon:"align-left",format:"alignleft"},{title:"Center",icon:"align-center",format:"aligncenter"},{title:"Right",icon:"align-right",format:"alignright"},{title:"Justify",icon:"align-justify",format:"alignjustify"}],VD=["-apple-system","Segoe UI","Roboto","Helvetica Neue","sans-serif"],ND={"8pt":"1","10pt":"2","12pt":"3","14pt":"4","18pt":"5","24pt":"6","36pt":"7"},HD=[{name:"history",items:["undo","redo"]},{name:"styles",items:["styleselect"]},{name:"formatting",items:["bold","italic"]},{name:"alignment",items:["alignleft","aligncenter","alignright","alignjustify"]},{name:"indentation",items:["outdent","indent"]},{name:"permanent pen",items:["permanentpen"]},{name:"comments",items:["addcomment"]}],PD={button:sB(JO,function(n,t){return function(n,t){return WT(n,t,[])}(n,t.backstage.shared.providers)}),togglebutton:sB(QO,function(n,t){return function(n,t){return GT(n,t,[])}(n,t.backstage.shared.providers)}),menubutton:sB($O,function(n,t){return PC(n,"tox-tbtn",t.backstage,on.none())}),splitbutton:sB(function(n){return tt("SplitButton",xT,n)},function(n,t){return rE(n,t.backstage.shared)}),styleSelectButton:function(n,t){return function(n,t){var e=N({type:"advanced"},t.styleselect);return mE(n,t,cB(n,e))}(n,t.backstage)},fontsizeSelectButton:function(n,t){return function(n,t){return mE(n,t,rB(n))}(n,t.backstage)},fontSelectButton:function(n,t){return function(n,t){return mE(n,t,eB(n))}(n,t.backstage)},formatButton:function(n,t){return function(n,t){return mE(n,t,aB(n))}(n,t.backstage)},alignMenuButton:function(n,t){return function(n,t){return mE(n,t,nB(n))}(n,t.backstage)}},zD={styleselect:PD.styleSelectButton,fontsizeselect:PD.fontsizeSelectButton,fontselect:PD.fontSelectButton,formatselect:PD.formatButton,align:PD.alignMenuButton},LD={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"]},jD={maxHeightFunction:Cf(),maxWidthFunction:RE()},UD={onLtr:function(){return[oc,rc,ca,ua,sa,aa,Ug,Wg,pm,mm,hm,gm]},onRtl:function(){return[oc,rc,sa,aa,ca,ua,Ug,Wg,hm,gm,pm,mm]}},WD={onLtr:function(){return[rc,ua,aa,ca,sa,oc,Ug,Wg,pm,mm,hm,gm]},onRtl:function(){return[rc,aa,ua,sa,ca,oc,Ug,Wg,hm,gm,pm,mm]}},GD=function(u,n,e,a){function c(){return cE(u)}function s(){if(l()&&a.backstage.isContextMenuOpen())return!0;var n=function(){var n=g.get().map(function(n){return n.getBoundingClientRect()}).getOrThunk(function(){return u.selection.getRng().getBoundingClientRect()}),t=u.inline?pu().top():wu(we.fromDom(u.getBody())).y();return{y:n.top+t,bottom:n.bottom+t}}(),t=c();return!function(n,t,e,o){return Math.max(n,e)<=Math.min(t,o)}(n.y,n.bottom,t.y(),t.bottom())}function t(){jg.hide(d)}function o(){m.get().each(function(n){var t=d.element();kr(t,"display"),s()?yr(t,"display","none"):Af.positionWithinBounds(e,n,d,on.some(c()))})}function f(n){return{dom:{tag:"div",classes:["tox-pop__dialog"]},components:[n],behaviours:ba([lg.config({mode:"acyclic"}),Kd("pop-dialog-wrap-events",[Ii(function(n){u.shortcuts.add("ctrl+F9","focus statusbar",function(){return lg.focusIn(n)})}),Ri(function(n){u.shortcuts.remove("ctrl+F9")})])])}}var l=Ht().deviceType.isTouch,d=uu(function(n){var e=ye([]);return jg.sketch({dom:{tag:"div",classes:["tox-pop"]},fireDismissalEventInstead:{event:"doNotDismissYet"},onShow:function(n){e.set([]),jg.getContent(n).each(function(n){kr(n.element(),"visibility")}),dr(n.element(),QT),kr(n.element(),"width")},inlineBehaviours:ba([Kd("context-toolbar-events",[bo(ii(),function(n,t){jg.getContent(n).each(function(n){}),dr(n.element(),QT),kr(n.element(),"width")}),lo($T,function(t,e){kr(t.element(),"width");var n=mu(t.element());jg.setContent(t,e.event().contents()),fr(t.element(),QT);var o=mu(t.element());yr(t.element(),"width",n+"px"),jg.getContent(t).each(function(n){e.event().focus().bind(function(n){return wa(n),Ca(t.element())}).orThunk(function(){return lg.focusIn(n),Sa()})}),qg.setTimeout(function(){yr(t.element(),"width",o+"px")},0)}),lo(KT,function(n,t){jg.getContent(n).each(function(n){e.set(e.get().concat([{bar:n,focus:Sa()}]))}),ro(n,$T,{contents:t.event().forwardContents(),focus:on.none()})}),lo(JT,function(t,n){F(e.get()).each(function(n){e.set(e.get().slice(0,e.get().length-1)),ro(t,$T,{contents:au(n.bar),focus:n.focus})})})]),lg.config({mode:"special",onEscape:function(t){return F(e.get()).fold(function(){return n.onEscape()},function(n){return oo(t,JT),on.some(!0)})}})]),lazySink:function(){return an.value(n.sink)}})}({sink:e,onEscape:function(){return u.focus(),on.some(!0)}})),m=ye(on.none()),g=ye(on.none()),r=ye(null),p=L(function(){return qT(n,function(n){var t=h(n);ro(d,KT,{forwardContents:f(t)})})}),h=function(n){var t,e,o=u.ui.registry.getAll().buttons,r=Yb(u)===jb.scrolling?jb.scrolling:jb["default"],i=p();return"contexttoolbar"===n.type?(t=An(o,i.formNavigators),e=dB(u,{buttons:t,toolbar:n.items},a,on.some(["form:"])),KO({type:r,uid:Xo("context-toolbar"),initGroups:e,onEscape:on.none,cyclicKeying:!0,backstage:a.backstage,getSink:function(){return an.error("")}})):XT(r,n,a.backstage)};u.on("contexttoolbar-show",function(t){var n=p();Nn(n.lookupTable,t.toolbarKey).each(function(n){y(n,t.target===u?on.none():on.some(t)),jg.getContent(d).each(lg.focusIn)})});function v(n,t){var e="node"===n?a.backstage.shared.anchors.node(t):a.backstage.shared.anchors.cursor();return Dn(e,function(n,t){return"line"===n?{bubble:Oa(12,0,LD),layouts:{onLtr:function(){return[fa]},onRtl:function(){return[la]}},overrides:jD}:{bubble:Oa(0,12,LD),layouts:t?WD:UD,overrides:jD}}(n,l()))}function i(){var n=p();YT(n,u).fold(function(){m.set(on.none()),jg.hide(d)},function(n){y(n.toolbarApi,on.some(n.elem.dom()))})}function b(n){x(),r.set(n)}var y=function(n,t){if(x(),!l()||!a.backstage.isContextMenuOpen()){var e=h(n),o=t.map(we.fromDom),r=v(n.position,o);m.set(on.some(r)),g.set(t);var i=d.element();kr(i,"display"),jg.showWithinBounds(d,r,f(e),function(){return on.some(c())}),s()&&yr(i,"display","none")}},x=function(){var n=r.get();null!==n&&(qg.clearTimeout(n),r.set(null))};u.on("init",function(){u.on(YE,t),u.on("ScrollContent ScrollWindow longpress",o),u.on("click keyup SetContent ObjectResized ResizeEditor",function(n){b(qg.setEditorTimeout(u,i,0))}),u.on("focusout",function(n){qg.setEditorTimeout(u,function(){Ca(e.element()).isNone()&&Ca(d.element()).isNone()&&(m.set(on.none()),jg.hide(d))},0)}),u.on("SwitchMode",function(){u.readonly&&(m.set(on.none()),jg.hide(d))}),u.on("NodeChange",function(n){Ca(d.element()).fold(function(){b(qg.setEditorTimeout(u,i,0))},function(n){})})})},XD=function(n,o,r){function t(t,e){bn([o,r],function(n){n.broadcastEvent(t,e)})}function e(t,e){bn([o,r],function(n){n.broadcastOn([t],e)})}function i(n){return e(Lf(),{target:n.target()})}function u(n){return e(Lf(),{target:we.fromDom(n.target)})}function a(n){0===n.button&&e(Uf(),{target:we.fromDom(n.target)})}function c(n){return t(wi(),pb(n))}function s(n){e(jf(),{}),t(Si(),pb(n))}function f(){return e(jf(),{})}var l=sb(we.fromDom(v.document),"touchstart",i),d=sb(we.fromDom(v.document),"touchmove",function(n){return t(yi(),n)}),m=sb(we.fromDom(v.document),"touchend",function(n){return t(xi(),n)}),g=sb(we.fromDom(v.document),"mousedown",i),p=sb(we.fromDom(v.document),"mouseup",function(n){0===n.raw().button&&e(Uf(),{target:n.target()})});n.on("PostRender",function(){n.on("click",u),n.on("tap",u),n.on("mouseup",a),n.on("ScrollWindow",c),n.on("ResizeWindow",s),n.on("ResizeEditor",f)}),n.on("remove",function(){n.off("click",u),n.off("tap",u),n.off("mouseup",a),n.off("ScrollWindow",c),n.off("ResizeWindow",s),n.off("ResizeEditor",f),g.unbind(),l.unbind(),d.unbind(),m.unbind(),p.unbind()}),n.on("detach",function(){ws(o),ws(r),o.destroy(),r.destroy()})},YD=Tl,qD=Ol,KD=nn([St("shell",!1),ct("makeItem"),St("setupItem",Z),nl("listBehaviours",[mg])]),JD=Sl({name:"items",overrides:function(n){return{behaviours:ba([mg.config({})])}}}),$D=nn([JD]),QD=Al({name:nn("CustomList")(),configFields:KD(),partFields:$D(),factory:function(s,n,t,e){var o=s.shell?{behaviours:[mg.config({})],components:[]}:{behaviours:[],components:n},r=function(n){return s.shell?on.some(n):qs(n,s,"items")};return{uid:s.uid,dom:s.dom,components:o.components,behaviours:Rs(s.listBehaviours,o.behaviours),apis:{setItems:function(a,c){r(a).fold(function(){throw v.console.error("Custom List was defined to not be a shell, but no item container was specified in components"),new Error("Custom List was defined to not be a shell, but no item container was specified in components")},function(t){var n=mg.contents(t),e=c.length,o=e-n.length,r=0<o?function(n,t){for(var e=[],o=0;o<n;o++)e.push(t(o));return e}(o,function(){return s.makeItem()}):[],i=n.slice(e);bn(i,function(n){return mg.remove(t,n)}),bn(r,function(n){return mg.append(t,n)});var u=mg.contents(t);bn(u,function(n,t){s.setupItem(a,n,c[t],t)})})}}}},apis:{setItems:function(n,t,e){n.setItems(t,e)}}}),ZD=Tn([{offset:["x","y"]},{absolute:["x","y"]},{fixed:["x","y"]}]),nA=ZD.offset,tA=ZD.absolute,eA=ZD.fixed,oA=Tn([{"static":[]},{absolute:["x","y"]},{fixed:["x","y"]}]),rA=function(n,t,e){n.getSystem().isConnected()&&function(e,o,r){var i=o.lazyViewport(e),n=e.element(),t=Co(n),u=pu(t),a=L(function(){return mB(n)}),c=r.isDocked();c&&MB(e,o,r,i),DB(e,o,i,u,a).each(function(n){r.setDocked(!c),n.fold(function(){return AB(e,o)},function(n,t){return _B(e,o,0,a(),tA(n,t))},function(n,t){MB(e,o,r,i,!0),_B(e,o,0,a(),eA(n,t))})})}(n,t,e)},iA=/* */Object.freeze({refresh:rA,reset:IB,isDocked:function(n,t,e){return e.isDocked()}}),uA=/* */Object.freeze({events:function(o,r){return co([bo(ii(),function(t,e){o.contextual.each(function(n){mr(t.element(),n.transitionClass)&&(pr(t.element(),[n.transitionClass,n.fadeInClass]),(r.isVisible()?n.onShown:n.onHidden)(t));e.stop()})}),lo(wi(),function(n,t){rA(n,o,r)}),lo(Si(),function(n,t){IB(n,o,r)})])}}),aA=[wt("contextual",[ft("fadeInClass"),ft("fadeOutClass"),ft("transitionClass"),dt("lazyContext"),qu("onShow"),qu("onShown"),qu("onHide"),qu("onHidden")]),Bt("lazyViewport",Su),ft("leftAttr"),ft("topAttr"),ft("positionAttr"),(AD="modes",_D=["top","bottom"],MD=ge,Ct(AD,_D,Kn(MD))),qu("onDocked"),qu("onUndocked")],cA=ya({fields:aA,name:"docking",active:uA,apis:iA,state:/* */Object.freeze({init:function(){var t=ye(!1),e=ye(!0);return nu({isDocked:function(){return t.get()},setDocked:function(n){return t.set(n)},isVisible:function(){return e.get()},setVisible:function(n){return e.set(n)},readState:function(){return"docked:  "+t.get()+", visible: "+e.get()}})}})}),sA={fadeInClass:"tox-editor-dock-fadein",fadeOutClass:"tox-editor-dock-fadeout",transitionClass:"tox-editor-dock-transition"},fA="tox-tinymce--toolbar-sticky-on",lA="tox-tinymce--toolbar-sticky-off",dA=/* */Object.freeze({setup:function(n,t){n.inline||(n.on("ResizeWindow ResizeEditor ResizeContent",function(){t().each(RB)}),n.on("SkinLoaded",function(){t().each(cA.reset)}),n.on("FullscreenStateChanged",function(){t().each(cA.refresh)})),n.on("PostRender",function(){NB(n,!1)})},isDocked:function(n){return n().map(cA.isDocked).getOr(!1)},getBehaviours:HB}),mA=Z,gA=u,pA=nn([]),hA=/* */Object.freeze({setup:mA,isDocked:gA,getBehaviours:pA}),vA=Dl({factory:function(t,o){var n={focus:lg.focusIn,setMenus:function(n,t){var e=S(t,function(t){var n={type:"menubutton",text:t.text,fetch:function(n){n(t.getItems())}},e=$O(n).mapError(function(n){return le(n)}).getOrDie();return PC(e,"tox-mbtn",o.backstage,on.some("menuitem"))});mg.set(n,e)}};return{uid:t.uid,dom:t.dom,components:[],behaviours:ba([mg.config({}),Kd("menubar-events",[Ii(function(n){t.onSetup(n)}),lo($r(),function(e,n){ku(e.element(),".tox-mbtn--active").each(function(t){Ou(n.event().target(),".tox-mbtn").each(function(n){jt(t,n)||e.getSystem().getByDom(t).each(function(t){e.getSystem().getByDom(n).each(function(n){Ow.expand(n),Ow.close(t),vg.focus(n)})})})})}),lo(Ti(),function(e,n){n.event().prevFocus().bind(function(n){return e.getSystem().getByDom(n).toOption()}).each(function(t){n.event().newFocus().bind(function(n){return e.getSystem().getByDom(n).toOption()}).each(function(n){Ow.isOpen(t)&&(Ow.expand(n),Ow.close(t))})})})]),lg.config({mode:"flow",selector:".tox-mbtn",onEscape:function(n){return t.onEscape(n),on.some(!0)}}),Gy.config({})]),apis:n,domModification:{attributes:{role:"menubar"}}}},name:"silver.Menubar",configFields:[ct("dom"),ct("uid"),ct("onEscape"),ct("backstage"),St("onSetup",Z)],apis:{focus:function(n,t){n.focus(t)},setMenus:function(n,t,e){n.setMenus(t,e)}}}),bA="container",yA=[Fs("slotBehaviours",[])],xA=function(r,n,t){function e(n){return Qs(r)}function o(e,o){return void 0===o&&(o=undefined),function(n,t){return qs(n,r,t).map(function(n){return e(n,t)}).getOr(o)}}function i(n,t){return"true"!==zo(n.element(),"aria-hidden")}var u,a=o(i,!1),c=o(function(n,t){if(i(n)){var e=n.element();yr(e,"display","none"),Po(e,"aria-hidden","true"),ro(n,Bi(),{name:t,visible:!1})}}),s=(u=c,function(t,n){bn(n,function(n){return u(t,n)})}),f=o(function(n,t){if(!i(n)){var e=n.element();kr(e,"display"),jo(e,"aria-hidden"),ro(n,Bi(),{name:t,visible:!0})}}),l={getSlotNames:e,getSlot:function(n,t){return qs(n,r,t)},isShowing:a,hideSlot:c,hideAllSlots:function(n){return s(n,e())},showSlot:f};return{uid:r.uid,dom:r.dom,components:n,behaviours:Is(r.slotBehaviours),apis:l}},wA=P({getSlotNames:function(n,t){return n.getSlotNames(t)},getSlot:function(n,t,e){return n.getSlot(t,e)},isShowing:function(n,t,e){return n.isShowing(t,e)},hideSlot:function(n,t,e){return n.hideSlot(t,e)},hideAllSlots:function(n,t){return n.hideAllSlots(t)},showSlot:function(n,t,e){return n.showSlot(t,e)}},$o),SA=N(N({},wA),{sketch:function(n){var e,t=(e=[],{slot:function(n,t){return e.push(n),Us(bA,PB(n),t)},record:function(){return e}}),o=n(t),r=t.record(),i=S(r,function(n){return xl({name:n,pname:PB(n)})});return of(bA,yA,i,xA,o)}}),CA=re([yt("icon"),yt("tooltip"),Bt("onShow",Z),Bt("onHide",Z),Bt("onSetup",function(){return Z})]),kA=Xo("FixSizeEvent"),OA=Xo("AutoSizeEvent"),EA=qD.optional({factory:vA,name:"menubar",schema:[ct("backstage")]}),TA=qD.optional({factory:{sketch:function(n){return QD.sketch({uid:n.uid,dom:n.dom,listBehaviours:ba([lg.config({mode:"acyclic",selector:".tox-toolbar"})]),makeItem:function(){return KO({type:n.split,uid:Xo("multiple-toolbar-item"),backstage:n.backstage,cyclicKeying:!1,getSink:n.getSink,initGroups:[],onEscape:function(){return on.none()}})},setupItem:function(n,t,e,o){JE.setGroups(t,e)},shell:!0})}},name:"multiple-toolbar",schema:[ct("dom"),ct("onEscape")]}),BA=qD.optional({factory:{sketch:function(n){return function(n){return n.split===jb.sliding?qO:n.split===jb.floating?YO:KO}(n)({type:n.split,uid:n.uid,onEscape:function(){return n.onEscape(),on.some(!0)},cyclicKeying:!1,initGroups:[],getSink:n.getSink,backstage:n.backstage,moreDrawerData:{lazyToolbar:n.lazyToolbar,lazyMoreButton:n.lazyMoreButton,lazyHeader:n.lazyHeader}})}},name:"toolbar",schema:[ct("dom"),ct("onEscape"),ct("getSink")]}),DA=qD.optional({factory:{sketch:function(n){var t=n.editor,e=n.sticky?HB:pA;return{uid:n.uid,dom:n.dom,components:n.components,behaviours:ba(e(t,n.getSink))}}},name:"header",schema:[ct("dom")]}),AA=qD.optional({name:"socket",schema:[ct("dom")]}),_A=qD.optional({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"div",classes:["tox-sidebar"],attributes:{role:"complementary"}},components:[{dom:{tag:"div",classes:["tox-sidebar__slider"]},components:[],behaviours:ba([Gy.config({}),vg.config({}),cT.config({dimension:{property:"width"},closedClass:"tox-sidebar--sliding-closed",openClass:"tox-sidebar--sliding-open",shrinkingClass:"tox-sidebar--sliding-shrinking",growingClass:"tox-sidebar--sliding-growing",onShrunk:function(n){Zl.getCurrent(n).each(SA.hideAllSlots),oo(n,OA)},onGrown:function(n){oo(n,OA)},onStartGrow:function(n){ro(n,kA,{width:Sr(n.element(),"width").getOr("")})},onStartShrink:function(n){ro(n,kA,{width:mu(n.element())+"px"})}}),mg.config({}),Zl.config({find:function(n){var t=mg.contents(n);return yn(t)}})])}],behaviours:ba([SS(0),Kd("sidebar-sliding-events",[lo(kA,function(n,t){yr(n.element(),"width",t.event().width())}),lo(OA,function(n,t){kr(n.element(),"width")})])])}}},name:"sidebar",schema:[ct("dom")]}),MA=qD.optional({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"div",attributes:{"aria-hidden":"true"},classes:["tox-throbber"],styles:{display:"none"}},behaviours:ba([mg.config({})]),components:[]}}},name:"throbber",schema:[ct("dom")]}),FA=Al({name:"OuterContainer",factory:function(e,n,t){var o={getSocket:function(n){return YD.getPart(n,e,"socket")},setSidebar:function(n,t){YD.getPart(n,e,"sidebar").each(function(n){return jB(n,t)})},toggleSidebar:function(n,t){YD.getPart(n,e,"sidebar").each(function(n){return function(n,e){Zl.getCurrent(n).each(function(t){Zl.getCurrent(t).each(function(n){cT.hasGrown(t)?SA.isShowing(n,e)?cT.shrink(t):(SA.hideAllSlots(n),SA.showSlot(n,e)):(SA.hideAllSlots(n),SA.showSlot(n,e),cT.grow(t))})})}(n,t)})},whichSidebar:function(n){return YD.getPart(n,e,"sidebar").bind(UB).getOrNull()},getHeader:function(n){return YD.getPart(n,e,"header")},getToolbar:function(n){return YD.getPart(n,e,"toolbar")},setToolbar:function(n,t){YD.getPart(n,e,"toolbar").each(function(n){n.getApis().setGroups(n,t)})},setToolbars:function(n,t){YD.getPart(n,e,"multiple-toolbar").each(function(n){QD.setItems(n,t)})},refreshToolbar:function(n){YD.getPart(n,e,"toolbar").each(function(n){return n.getApis().refresh(n)})},getMoreButton:function(n){return YD.getPart(n,e,"toolbar").bind(function(n){return n.getApis().getMoreButton(n)})},getThrobber:function(n){return YD.getPart(n,e,"throbber")},focusToolbar:function(n){YD.getPart(n,e,"toolbar").orThunk(function(){return YD.getPart(n,e,"multiple-toolbar")}).each(function(n){lg.focusIn(n)})},setMenubar:function(n,t){YD.getPart(n,e,"menubar").each(function(n){vA.setMenus(n,t)})},focusMenubar:function(n){YD.getPart(n,e,"menubar").each(function(n){vA.focus(n)})}};return{uid:e.uid,dom:e.dom,components:n,apis:o,behaviours:e.behaviours}},configFields:[ct("dom"),ct("behaviours")],partFields:[DA,EA,BA,TA,AA,_A,MA],apis:{getSocket:function(n,t){return n.getSocket(t)},setSidebar:function(n,t,e){n.setSidebar(t,e)},toggleSidebar:function(n,t,e){n.toggleSidebar(t,e)},whichSidebar:function(n,t){return n.whichSidebar(t)},getHeader:function(n,t){return n.getHeader(t)},getToolbar:function(n,t){return n.getToolbar(t)},setToolbar:function(n,t,e){var o=S(e,function(n){return WO(n)});n.setToolbar(t,o)},setToolbars:function(n,t,e){var o=S(e,function(n){return S(n,WO)});n.setToolbars(t,o)},getMoreButton:function(n,t){return n.getMoreButton(t)},refreshToolbar:function(n,t){return n.refreshToolbar(t)},getThrobber:function(n,t){return n.getThrobber(t)},setMenubar:function(n,t,e){n.setMenubar(t,e)},focusMenubar:function(n,t){n.focusMenubar(t)},focusToolbar:function(n,t){n.focusToolbar(t)}}}),IA={file:{title:"File",items:"newdocument restoredraft | preview | print | deleteallconversations"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall | searchreplace"},view:{title:"View",items:"code | visualaid visualchars visualblocks | spellchecker | preview fullscreen | showcomments"},insert:{title:"Insert",items:"image link media addcomment pageembed template codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor toc | insertdatetime"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript codeformat | formats blockformats fontformats fontsizes align | forecolor backcolor | removeformat"},tools:{title:"Tools",items:"spellchecker spellcheckerlanguage | a11ycheck code wordcount"},table:{title:"Table",items:"inserttable | cell row column | advtablesort | tableprops deletetable"},help:{title:"Help",items:"help"}},RA=function(n){function t(){n._skinLoaded=!0,Nv(n)}return function(){n.initialized?t():n.on("init",t)}},VA=d(YB,!1),NA=d(YB,!0),HA=Rh.DOM,PA=Ht(),zA=PA.os.isiOS()&&PA.os.version.major<=12,LA={render:function(e,o,n,t,r){var i=ye(0);VA(e),function(n,t){If(n,t,_o)}(we.fromDom(r.targetNode),o.mothership),xs(zr(),o.uiMothership),e.on("PostRender",function(){qB(e,o,n,t),i.set(e.getWin().innerWidth),FA.setMenubar(o.outerContainer,XB(e,n)),FA.setSidebar(o.outerContainer,n.sidebar),function(r){function n(n){var t=r.getDoc().documentElement,e=u.get(),o=a.get();e.left()!==i.innerWidth||e.top()!==i.innerHeight?(u.set(Iu(i.innerWidth,i.innerHeight)),zv(r,n)):o.left()===t.offsetWidth&&o.top()===t.offsetHeight||(a.set(Iu(t.offsetWidth,t.offsetHeight)),zv(r,n))}function t(n){return Pv(r,n)}var i=r.getWin(),e=r.getDoc().documentElement,u=ye(Iu(i.innerWidth,i.innerHeight)),a=ye(Iu(e.offsetWidth,e.offsetHeight));HA.bind(i,"resize",n),HA.bind(i,"scroll",t);var o=fb(we.fromDom(r.getBody()),"load",n);r.on("remove",function(){o.unbind(),HA.unbind(i,"resize",n),HA.unbind(i,"scroll",t)})}(e)});var u=FA.getSocket(o.outerContainer).getOrDie("Could not find expected socket element");if(!0===zA){xr(u.element(),{overflow:"scroll","-webkit-overflow-scrolling":"touch"});var a=function(e,o){var r=null;return{cancel:function(){null!==r&&(v.clearTimeout(r),r=null)},throttle:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];null===r&&(r=v.setTimeout(function(){e.apply(null,n),r=null},o))}}}(function(){e.fire("ScrollContent")},20);sb(u.element(),"scroll",a.throttle)}LO(e,o),e.addCommand("ToggleSidebar",function(n,t){FA.toggleSidebar(o.outerContainer,t),e.fire("ToggleSidebar")}),e.addQueryValueHandler("ToggleSidebar",function(){return FA.whichSidebar(o.outerContainer)});var c=Yb(e);return c!==jb.sliding&&c!==jb.floating||e.on("ResizeWindow ResizeEditor ResizeContent",function(){var n=e.getWin().innerWidth;n!==i.get()&&(FA.refreshToolbar(o.outerContainer),i.set(n))}),{iframeContainer:u.element().dom(),editorContainer:o.outerContainer.element().dom()}}},jA=function(t,n,e){var o=n.filter(function(n){return t<n}),r=e.filter(function(n){return n<t});return o.or(r).getOr(t)},UA=function(n){return/^[0-9\.]+(|px)$/i.test(""+n)?on.some(parseInt(""+n,10)):on.none()},WA=function(n){return mn(n)?n+"px":n},GA={render:function(t,i,e,o,n){var u,r=Rh.DOM,a=Kb(t),c=$b(t),s=we.fromDom(n.targetNode),f=Nb(t).or(JB(t)),l=Yb(t),d=l===jb.sliding||l===jb.floating;NA(t);function m(n){void 0===n&&(n=!1),d&&FA.refreshToolbar(i.outerContainer),a||function(n){var t=d?n.fold(function(){return 0},function(n){return 1<n.components().length?su(n.components()[1].element()):0}):0,e=du(s),o=e.top()-su(u.element())+t;xr(i.outerContainer.element(),{position:"absolute",top:Math.round(o)+"px",left:Math.round(e.left())+"px"});var r=f.getOrThunk(function(){var n=UA(wr(zr(),"margin-left")).getOr(0);return mu(zr())-e.left()+n});yr(u.element(),"max-width",r+"px")}(FA.getToolbar(i.outerContainer)),c&&(n?cA.reset(u):cA.refresh(u))}function g(){yr(i.outerContainer.element(),"display","flex"),r.addClass(t.getBody(),"mce-edit-focus"),kr(i.uiMothership.element(),"display"),m()}function p(){i.outerContainer&&(yr(i.outerContainer.element(),"display","none"),r.removeClass(t.getBody(),"mce-edit-focus")),yr(i.uiMothership.element(),"display","none")}function h(){if(u)g();else{u=FA.getHeader(i.outerContainer).getOrDie();var n=function(n){return qb(n).getOr(zr())}(t);xs(n,i.mothership),xs(n,i.uiMothership),qB(t,i,e,o),FA.setMenubar(i.outerContainer,XB(t,e)),g(),t.on("activate",g),t.on("deactivate",p),t.on("NodeChange SkinLoaded ResizeWindow",function(){t.hidden||m(!0)}),t.nodeChanged()}}return t.on("focus",h),t.on("blur hide",p),t.on("init",function(){t.hasFocus()&&h()}),LO(t,i),{editorContainer:i.outerContainer.element().dom()}}},XA=function(t){yk.each([{name:"alignleft",text:"Align left",cmd:"JustifyLeft",icon:"align-left"},{name:"aligncenter",text:"Align center",cmd:"JustifyCenter",icon:"align-center"},{name:"alignright",text:"Align right",cmd:"JustifyRight",icon:"align-right"},{name:"alignjustify",text:"Justify",cmd:"JustifyFull",icon:"align-justify"}],function(n){t.ui.registry.addToggleButton(n.name,{tooltip:n.text,onAction:function(){return t.execCommand(n.cmd)},icon:n.icon,onSetup:fE(t,n.name)})});var n="alignnone",e="No alignment",o="JustifyNone",r="align-none";t.ui.registry.addButton(n,{tooltip:e,onAction:function(){return t.execCommand(o)},icon:r})},YA=function(n){QB(n),function(t){yk.each([{name:"bold",text:"Bold",action:"Bold",icon:"bold",shortcut:"Meta+B"},{name:"italic",text:"Italic",action:"Italic",icon:"italic",shortcut:"Meta+I"},{name:"underline",text:"Underline",action:"Underline",icon:"underline",shortcut:"Meta+U"},{name:"strikethrough",text:"Strikethrough",action:"Strikethrough",icon:"strike-through",shortcut:""},{name:"subscript",text:"Subscript",action:"Subscript",icon:"subscript",shortcut:""},{name:"superscript",text:"Superscript",action:"Superscript",icon:"superscript",shortcut:""},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting",shortcut:""},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document",shortcut:""},{name:"cut",text:"Cut",action:"Cut",icon:"cut",shortcut:"Meta+X"},{name:"copy",text:"Copy",action:"Copy",icon:"copy",shortcut:"Meta+C"},{name:"paste",text:"Paste",action:"Paste",icon:"paste",shortcut:"Meta+V"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all",shortcut:"Meta+A"}],function(n){t.ui.registry.addMenuItem(n.name,{text:n.text,icon:n.icon,shortcut:n.shortcut,onAction:function(){return t.execCommand(n.action)}})}),t.ui.registry.addMenuItem("codeformat",{text:"Code",icon:"sourcecode",onAction:$B(t,"code")})}(n)},qA=function(n){!function(t){t.ui.registry.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onSetup:function(n){return ZB(n,t,"hasUndo")},onAction:function(){return t.execCommand("undo")}}),t.ui.registry.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onSetup:function(n){return ZB(n,t,"hasRedo")},onAction:function(){return t.execCommand("redo")}})}(n),function(t){t.ui.registry.addButton("undo",{tooltip:"Undo",icon:"undo",onSetup:function(n){return ZB(n,t,"hasUndo")},onAction:function(){return t.execCommand("undo")}}),t.ui.registry.addButton("redo",{tooltip:"Redo",icon:"redo",onSetup:function(n){return ZB(n,t,"hasRedo")},onAction:function(){return t.execCommand("redo")}})}(n)},KA=function(n){!function(n){n.ui.registry.addButton("visualaid",{tooltip:"Visual aids",text:"Visual aids",onAction:function(){return n.execCommand("mceToggleVisualAid")}})}(n),function(t){t.ui.registry.addToggleMenuItem("visualaid",{text:"Visual aids",onSetup:function(n){return function(t,n){t.setActive(n.hasVisual);function e(n){t.setActive(n.hasVisual)}return n.on("VisualAid",e),function(){return n.off("VisualAid",e)}}(n,t)},onAction:function(){t.execCommand("mceToggleVisualAid")}})}(n)},JA=function(n){!function(t){t.ui.registry.addButton("outdent",{tooltip:"Decrease indent",icon:"outdent",onSetup:function(n){return function(n,t){n.setDisabled(!t.queryCommandState("outdent"));function e(){n.setDisabled(!t.queryCommandState("outdent"))}return t.on("NodeChange",e),function(){return t.off("NodeChange",e)}}(n,t)},onAction:function(){return t.execCommand("outdent")}}),t.ui.registry.addButton("indent",{tooltip:"Increase indent",icon:"indent",onAction:function(){return t.execCommand("indent")}})}(n)},$A=function(n,t){!function(n,t){var e=dE(0,t,nB(n));n.ui.registry.addNestedMenuItem("align",{text:t.shared.providers.translate("Align"),getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t),function(n,t){var e=dE(0,t,eB(n));n.ui.registry.addNestedMenuItem("fontformats",{text:t.shared.providers.translate("Fonts"),getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t),function(n,t){var e=N({type:"advanced"},t.styleselect),o=dE(0,t,cB(n,e));n.ui.registry.addNestedMenuItem("formats",{text:"Formats",getSubmenuItems:function(){return o.items.validateItems(o.getStyleItems())}})}(n,t),function(n,t){var e=dE(0,t,aB(n));n.ui.registry.addNestedMenuItem("blockformats",{text:"Blocks",getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t),function(n,t){var e=dE(0,t,rB(n));n.ui.registry.addNestedMenuItem("fontsizes",{text:"Font sizes",getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t)},QA=function(n,t){XA(n),YA(n),$A(n,t),qA(n),Uv.register(n),KA(n),JA(n)},ZA=function(n){return{anchor:"selection",root:we.fromDom(n.selection.getNode())}},n_={onLtr:function(){return[rc,ua,aa,ca,sa,oc,Ug,Wg,pm,mm,hm,gm]},onRtl:function(){return[rc,aa,ua,sa,ca,oc,Ug,Wg,hm,gm,pm,mm]}},t_={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"]},e_=function(n){return n.settings.contextmenu_never_use_native||!1},o_=function(n){return function(n,t,e){var o=n.ui.registry.getAll().contextMenus;return V(n.settings,t).map(cD).getOrThunk(function(){return C(cD(e),function(n){return En(o,n)})})}(n,"contextmenu","link linkchecker image imagetools table spellchecker configurepermanentpen")},r_=function(n){return!1===n.getParam("contextmenu")},i_={type:"separator"},u_=function(t){if(cn(t))return t;switch(t.type){case"separator":return i_;case"submenu":return{type:"nestedmenuitem",text:t.text,icon:t.icon,getSubmenuItems:function(){var n=t.getSubmenuItems();return cn(n)?n:S(n,u_)}};default:return{type:"menuitem",text:t.text,icon:t.icon,onAction:function(n){return function(){return n()}}(t.onAction)}}},a_="data-initial-z-index",c_=wt("snaps",[ct("getSnapPoints"),qu("onSensor"),ct("leftAttr"),ct("topAttr"),St("lazyViewport",Su),St("mustSnap",!1)]),s_=[St("useFixed",u),ct("blockerClass"),St("getTarget",l),St("onDrag",Z),St("repositionTarget",!0),St("onDrop",Z),Bt("getBounds",Su),c_],f_=function(n,t,r,i,u){var e=t.getSnapPoints(n);return bD(e,r,i,u).orThunk(function(){return O(e,function(t,e){var n=e.sensor(),o=function(n,t,e,o,r,i){var u=bB(n,r,i),a=bB(t,r,i),c=Math.abs(u.left()-a.left()),s=Math.abs(u.top()-a.top());return Iu(c,s)}(r,n,e.range().left(),e.range().top(),i,u);return t.deltas.fold(function(){return{deltas:on.some(o),snap:on.some(e)}},function(n){return(o.left()+o.top())/2<=(n.left()+n.top())/2?{deltas:on.some(o),snap:on.some(e)}:t})},{deltas:on.none(),snap:on.none()}).snap.map(function(n){return{output:nn(wB(n.output(),r,i,u)),extra:n.extra}})})},l_=function(n,t,e,o,r){var i=t.getSnapPoints(n);return bD(i,e,o,r)},d_=/* */Object.freeze({getData:function(n){return on.from(Iu(n.x(),n.y()))},getDelta:function(n,t){return Iu(t.left()-n.left(),t.top()-n.top())}}),m_=g(s_,[Qu("dragger",{handlers:kD(OD)})]),g_=/* */Object.freeze({getData:function(n){var t=n.raw().touches;return 1===t.length?function(n){var t=n[0];return on.some(Iu(t.clientX,t.clientY))}(t):on.none()},getDelta:function(n,t){return Iu(t.left()-n.left(),t.top()-n.top())}}),p_=m_,h_=g(s_,[Qu("dragger",{handlers:kD(ED)})]),v_=g(s_,[Qu("dragger",{handlers:kD(function(n,t,e){return g(OD(n,t,e),ED(n,t,e))})})]),b_=/* */Object.freeze({mouse:p_,touch:h_,mouseOrTouch:v_}),y_=/* */Object.freeze({init:function(){var o=on.none(),t=on.none(),n=nn({});return nu({readState:n,reset:function(){o=on.none(),t=on.none()},update:function(t,n){return t.getData(n).bind(function(n){return function(t,e){var n=o.map(function(n){return t.getDelta(n,e)});return o=on.some(e),n}(t,n)})},getStartData:function(){return t},setStartData:function(n){t=on.some(n)}})}}),x_=/* */Object.freeze({snapTo:function(n,t,e,o){var r=t.getTarget(n.element());if(t.repositionTarget){var i=Co(n.element()),u=pu(i),a=mB(r),c=function(n,t,e){return{coord:wB(n.output(),n.output(),t,e),extra:n.extra()}}(o,u,a),s=xB(c.coord,0,a);xr(r,s)}}}),w_=xa({branchKey:"mode",branches:b_,name:"dragging",active:{events:function(n,t){return n.dragger.handlers(n,t)}},extra:{snap:So(["sensor","range","output"],["extra"])},state:y_,apis:x_}),S_=Ht(),C_=function(c,e){function t(n){var t=wu(n);return TD(g.getOpt(e),n,t.x(),t.y(),t.width(),t.height())}function o(n){var t=wu(n);return TD(p.getOpt(e),n,t.right(),t.bottom(),t.width(),t.height())}function r(n,t,e,o){var r=e(t);w_.snapTo(n,r),function(n,t,e,o){var r=t.dom().getBoundingClientRect();kr(n.element(),"display");var i=Oo(we.fromDom(c.getBody())).dom().innerHeight,u=e(r),a=o(r,i);(u||a)&&yr(n.element(),"display","none")}(n,t,function(n){return n[o]<0},function(n,t){return n[o]>t})}function i(n){return r(h,n,t,"top")}function u(n){return r(v,n,o,"bottom")}var a=ye([]),s=ye([]),n=ye(!1),f=ye(on.none()),l=ye(on.none()),d=BD(function(){return S(a.get(),function(n){return t(n)})},f,function(t){l.get().each(function(n){c.fire("TableSelectorChange",{start:t,finish:n})})}),m=BD(function(){return S(s.get(),function(n){return o(n)})},l,function(t){f.get().each(function(n){c.fire("TableSelectorChange",{start:n,finish:t})})}),g=DD(d),p=DD(m),h=uu(g.asSpec()),v=uu(p.asSpec());S_.deviceType.isTouch()&&(c.on("TableSelectionChange",function(t){n.get()||(hs(e,h),hs(e,v),n.set(!0)),f.set(on.some(t.start)),l.set(on.some(t.finish)),t.otherCells.each(function(n){a.set(n.upOrLeftCells),s.set(n.downOrRightCells),i(t.start),u(t.finish)})}),c.on("ResizeEditor ResizeWindow ScrollContent",function(){f.get().each(i),l.get().each(u)}),c.on("TableSelectionClear",function(){n.get()&&(bs(h),bs(v),n.set(!1)),f.set(on.none()),l.set(on.none())}))};(ID=FD=FD||{})[ID.None=0]="None",ID[ID.Both=1]="Both",ID[ID.Vertical=2]="Vertical";function k_(n,t,e){var o=we.fromDom(n.getContainer()),r=function(n,t,e,o,r){var i={};return i.height=jA(o+t.top(),Vb(n),Hb(n)),e===FD.Both&&(i.width=jA(r+t.left(),Rb(n),Nb(n))),i}(n,t,e,su(o),mu(o));Cn(r,function(n,t){return yr(o,t,WA(n))}),Hv(n)}function O_(n){if(1===n.nodeType){if("BR"===n.nodeName||n.getAttribute("data-mce-bogus"))return!0;if("bookmark"===n.getAttribute("data-mce-type"))return!0}return!1}function E_(o,t){var r,n,e;return{dom:{tag:"div",classes:["tox-statusbar"]},components:(n=function(){var n=[];return o.getParam("elementpath",!0,"boolean")&&n.push(pM(o,{})),Vt(o.settings.plugins,"wordcount")&&n.push(function(n,o){function r(n,t,e){return mg.set(n,[Ir(o.translate(["{0} "+e,t[e]]))])}return Gg.sketch({dom:{tag:"button",classes:["tox-statusbar__wordcount"]},components:[],buttonBehaviours:ba([Gy.config({}),mg.config({}),Zf.config({store:{mode:"memory",initialValue:{mode:"words",count:{words:0,characters:0}}}}),Kd("wordcount-events",[Ni(function(n){var t=Zf.getValue(n),e="words"===t.mode?"characters":"words";Zf.setValue(n,{mode:e,count:t.count}),r(n,t.count,e)}),Ii(function(e){n.on("wordCountUpdate",function(n){var t=Zf.getValue(e).mode;Zf.setValue(e,{mode:t,count:n.wordCount}),r(e,n.wordCount,t)})})])])})}(o,t)),o.getParam("branding",!0,"boolean")&&n.push(function(){var n=rh.translate(["Powered by {0}","Tiny"]);return{dom:{tag:"span",classes:["tox-statusbar__branding"],innerHtml:'<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce&amp;utm_content=v5" rel="noopener" target="_blank" tabindex="-1" aria-label="'+n+'">'+n+"</a>"}}}()),0<n.length?[{dom:{tag:"div",classes:["tox-statusbar__text-container"]},components:n}]:[]}(),e=function(n){var t=!Vt(n.settings.plugins,"autoresize"),e=n.getParam("resize",t);return!1===e?FD.None:"both"===e?FD.Both:FD.Vertical}(o),e!==FD.None&&n.push((r=e,{dom:{tag:"div",classes:["tox-statusbar__resize-handle"],attributes:{title:t.translate("Resize")},innerHtml:ym("resize-handle",t.icons)},behaviours:ba([w_.config({mode:"mouse",repositionTarget:!1,onDrag:function(n,t,e){k_(o,e,r)},blockerClass:"tox-blocker"})])})),n)}}function T_(n){return[ft("type"),function(n){return st(n,me)}("columns"),n]}function B_(t){return ce("items","items",Mn(),Kn(Zn(function(n){return tt("Checking item of "+t,gF,n).fold(function(n){return an.error(le(n))},function(n){return an.value(n)})})))}function D_(n){return cn(n.type)&&cn(n.name)}function A_(n){var t=function(n){return C(DF(n),D_)}(n),e=B(t,function(t){return function(n){return on.from(AF[n.type])}(t).fold(function(){return[]},function(n){return[st(t.name,n)]})});return re(e)}function __(n){return{internalDialog:et(function(n){return tt("dialog",BF,n)}(n)),dataValidator:A_(n),initialData:n.initialData}}function M_(n){var e=[],o={};return Cn(n,function(n,t){n.fold(function(){e.push(t)},function(n){o[t]=n})}),0<e.length?an.error(e):an.value(o)}function F_(n){return yn(function(n,t){var e=gn.call(n,0);return e.sort(t),e}(n,function(n,t){return t<n?-1:n<t?1:0}))}function I_(n,t){yr(n,"height",t+"px"),Ht().browser.isIE()?kr(n,"flex-basis"):yr(n,"flex-basis",t+"px")}function R_(n,o,r){Cu(n,'[role="dialog"]').each(function(e){ku(e,'[role="tablist"]').each(function(t){r.get().map(function(n){return yr(o,"height","0"),yr(o,"flex-basis","0"),Math.min(n,function(n,t,e){var o,r=ko(n).dom(),i=Cu(n,".tox-dialog-wrap").getOr(n);o="fixed"===wr(i,"position")?Math.max(r.clientHeight,v.window.innerHeight):Math.max(r.offsetHeight,r.scrollHeight);var u=su(t),a=t.dom().offsetLeft>=e.dom().offsetLeft+mu(e)?Math.max(su(e),u):u,c=parseInt(wr(n,"margin-top"),10)||0,s=parseInt(wr(n,"margin-bottom"),10)||0;return o-(su(n)+c+s-a)}(e,o,t))}).each(function(n){I_(o,n)})})})}function V_(n){return ku(n,'[role="tabpanel"]')}function N_(r){var i;return{smartTabHeight:(i=ye(on.none()),{extraEvents:[Ii(function(n){var t=n.element();V_(t).each(function(o){yr(o,"visibility","hidden"),n.getSystem().getByDom(o).toOption().each(function(n){var t=function(o,r,i){return S(o,function(n,t){mg.set(i,o[t].view());var e=r.dom().getBoundingClientRect();return mg.set(i,[]),e.height})}(r,o,n),e=F_(t);i.set(e)}),R_(t,o,i),kr(o,"visibility"),function(n,t){yn(n).each(function(n){return WF.showTab(t,n.value)})}(r,n),qg.requestAnimationFrame(function(){R_(t,o,i)})})}),lo(Si(),function(n){var t=n.element();V_(t).each(function(n){R_(t,n,i)})}),lo(gy,function(n,t){var r=n.element();V_(r).each(function(t){var n=Sa();yr(t,"visibility","hidden");var e=Sr(t,"height").map(function(n){return parseInt(n,10)});kr(t,"height"),kr(t,"flex-basis");var o=t.dom().getBoundingClientRect().height;e.forall(function(n){return n<o})?(i.set(on.from(o)),R_(r,t,i)):e.each(function(n){I_(t,n)}),kr(t,"visibility"),n.each(wa)})})],selectFirst:!1}),naiveTabHeight:{extraEvents:[],selectFirst:!0}}}function H_(n,t,e,o){return{dom:{tag:"div",classes:["tox-dialog__content-js"],attributes:N(N({},t.map(function(n){return{id:n}}).getOr({})),o?{"aria-live":"polite"}:{})},components:[],behaviours:ba([SS(0),RT.config({channel:KF,updateState:function(n,t){return on.some({isTabPanel:function(){return"tabpanel"===t.body.type}})},renderComponents:function(n){switch(n.body.type){case"tabpanel":return[function(n,e){function o(n){var t=Zf.getValue(n),e=M_(t).getOr({}),o=i.get(),r=Dn(o,e);i.set(r)}function r(n){var t=i.get();Zf.setValue(n,t)}var i=ye({}),u=ye(null),t=S(n.tabs,function(n){return{value:n.name,dom:{tag:"div",classes:["tox-dialog__body-nav-item"],innerHtml:e.shared.providers.translate(n.title)},view:function(){return[dS.sketch(function(t){return{dom:{tag:"div",classes:["tox-form"]},components:S(n.items,function(n){return Wk(t,n,e)}),formBehaviours:ba([lg.config({mode:"acyclic",useTabstopAt:b(MS)}),Kd("TabView.form.events",[Ii(r),Ri(o)]),lc.config({channels:K([{key:GF,value:{onReceive:o}},{key:XF,value:{onReceive:r}}])})])}})]}}}),a=N_(t).smartTabHeight;return WF.sketch({dom:{tag:"div",classes:["tox-dialog__body"]},onChangeTab:function(n,t,e){var o=Zf.getValue(t);ro(n,my,{name:o,oldName:u.get()}),u.set(o)},tabs:t,components:[WF.parts().tabbar({dom:{tag:"div",classes:["tox-dialog__body-nav"]},components:[HF.parts().tabs({})],markers:{tabClass:"tox-tab",selectedClass:"tox-dialog__body-nav-item--active"},tabbarBehaviours:ba([Gy.config({})])}),WF.parts().tabview({dom:{tag:"div",classes:["tox-dialog__body-content"]}})],selectFirst:a.selectFirst,tabSectionBehaviours:ba([Kd("tabpanel",a.extraEvents),lg.config({mode:"acyclic"}),Zl.config({find:function(n){return yn(WF.getViewItems(n))}}),Zf.config({store:{mode:"manual",getValue:function(n){return n.getSystem().broadcastOn([GF],{}),i.get()},setValue:function(n,t){i.set(t),n.getSystem().broadcastOn([XF],{})}}})])})}(n.body,e)];default:return[function(n,e){var t=vm(dS.sketch(function(t){return{dom:{tag:"div",classes:["tox-form"].concat(n.classes)},components:S(n.items,function(n){return Wk(t,n,e)})}}));return{dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[t.asSpec()]}],behaviours:ba([lg.config({mode:"acyclic",useTabstopAt:b(MS)}),wS(t),ES(t,{postprocess:function(n){return M_(n).fold(function(n){return v.console.error(n),{}},function(n){return n})}})])}}(n.body,e)]}},initialData:n})])}}function P_(n,e){return[ho(Qr(),FS),n(ay,function(n,t){e.onClose(),t.onClose()}),n(cy,function(n,t,e,o){t.onCancel(n),oo(o,ay)}),lo(dy,function(n,t){return e.onUnblock()}),lo(ly,function(n,t){return e.onBlock(t.event())})]}function z_(n,t){function e(n,t){return Wb.sketch({dom:{tag:"div",classes:["tox-dialog__footer-"+n]},components:S(t,function(n){return n.memento.asSpec()})})}var o=function(n,t){for(var e=[],o=[],r=0,i=n.length;r<i;r++){var u=n[r];(t(u,r)?e:o).push(u)}return{pass:e,fail:o}}(t.map(function(n){return n.footerButtons}).getOr([]),function(n){return"start"===n.align});return[e("start",o.pass),e("end",o.fail)]}function L_(n,o){return{dom:cp('<div class="tox-dialog__footer"></div>'),components:[],behaviours:ba([RT.config({channel:JF,initialData:n,updateState:function(n,t){var e=S(t.buttons,function(n){var t=vm(function(n,t){return YC(n,n.type,t)}(n,o));return{name:n.name,align:n.align,memento:t}});return on.some({lookupByName:function(n,t){return function(t,n,e){return E(n,function(n){return n.name===e}).bind(function(n){return n.memento.getOpt(t)})}(n,e,t)},footerButtons:e})},renderComponents:z_})])}}function j_(n,t){return wM.parts().footer(L_(n,t))}function U_(t,e){if(t.getRoot().getSystem().isConnected()){var o=Zl.getCurrent(t.getFormWrapper()).getOr(t.getFormWrapper());return dS.getField(o,e).fold(function(){var n=t.getFooter();return RT.getState(n).get().bind(function(n){return n.lookupByName(o,e)})},function(n){return on.some(n)})}return on.none()}function W_(u,o,a){function n(n){var t=u.getRoot();t.getSystem().isConnected()&&n(t)}var c={getData:function(){var n=u.getRoot(),t=n.getSystem().isConnected()?u.getFormWrapper():n,e=Zf.getValue(t),o=P(a,function(n){return n.get()});return N(N({},e),o)},setData:function(i){n(function(n){var t=c.getData(),e=An(t,i),o=function(n,t){var e=n.getRoot();return RT.getState(e).get().map(function(n){return et(tt("data",n.dataValidator,t))}).getOr(t)}(u,e),r=u.getFormWrapper();Zf.setValue(r,o),Cn(a,function(n,t){En(e,t)&&n.set(e[t])})})},disable:function(n){U_(u,n).each(Ch.disable)},enable:function(n){U_(u,n).each(Ch.enable)},focus:function(n){U_(u,n).each(vg.focus)},block:function(t){if(!cn(t))throw new Error("The dialogInstanceAPI.block function should be passed a blocking message of type string as an argument");n(function(n){ro(n,ly,{message:t})})},unblock:function(){n(function(n){oo(n,dy)})},showTab:function(e){n(function(n){var t=u.getBody();RT.getState(t).get().exists(function(n){return n.isTabPanel()})&&Zl.getCurrent(t).each(function(n){WF.showTab(n,e)})})},redial:function(e){n(function(n){var t=o(e);n.getSystem().broadcastOn([YF],t),n.getSystem().broadcastOn([qF],t.internalDialog),n.getSystem().broadcastOn([KF],t.internalDialog),n.getSystem().broadcastOn([JF],t.internalDialog),c.setData(t.initialData)})},close:function(){n(function(n){oo(n,ay)})}};return c}function G_(n,t){return{dom:{tag:"div",styles:{display:"none"},classes:["tox-dialog__header"]},components:[n,t]}}function X_(n,t){return wM.parts().close(Gg.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":t.translate("Close")}},action:n,buttonBehaviours:ba([Gy.config({})])}))}function Y_(){return wM.parts().title({dom:{tag:"div",classes:["tox-dialog__title"],innerHtml:"",styles:{display:"none"}}})}function q_(n,t){return wM.parts().body({dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[{dom:cp("<p>"+t.translate(n)+"</p>")}]}]})}function K_(n){return wM.parts().footer({dom:{tag:"div",classes:["tox-dialog__footer"]},components:n})}function J_(n,t){return[Wb.sketch({dom:{tag:"div",classes:["tox-dialog__footer-start"]},components:n}),Wb.sketch({dom:{tag:"div",classes:["tox-dialog__footer-end"]},components:t})]}function $_(t){var n,e="tox-dialog",o=e+"-wrap",r=o+"__backdrop",i=e+"__disable-scroll";return wM.sketch({lazySink:t.lazySink,onEscape:function(n){return t.onEscape(n),on.some(!0)},useTabstopAt:function(n){return!MS(n)},dom:{tag:"div",classes:[e].concat(t.extraClasses),styles:N({position:"relative"},t.extraStyles)},components:g([t.header,t.body],t.footer.toArray()),parts:{blocker:{dom:cp('<div class="'+o+'"></div>'),components:[{dom:{tag:"div",classes:nI?[r,r+"--opaque"]:[r]}}]}},dragBlockClass:o,modalBehaviours:ba(g([vg.config({}),Kd("dialog-events",t.dialogEvents.concat([bo(Qr(),function(n,t){lg.focusIn(n)})])),Kd("scroll-lock",[Ii(function(){fr(zr(),i)}),Ri(function(){dr(zr(),i)})])],t.extraBehaviours)),eventOrder:N((n={},n[di()]=["dialog-events"],n[Ci()]=["scroll-lock","dialog-events","alloy.base.behaviour"],n[ki()]=["alloy.base.behaviour","dialog-events","scroll-lock"],n),t.eventOrder)})}function Q_(n){return Gg.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":n.translate("Close"),title:n.translate("Close")}},components:[{dom:{tag:"div",classes:["tox-icon"],innerHtml:'<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M17.953 7.453L13.422 12l4.531 4.547-1.406 1.406L12 13.422l-4.547 4.531-1.406-1.406L10.578 12 6.047 7.453l1.406-1.406L12 10.578l4.547-4.531z" fill-rule="evenodd"></path></svg>'}}],action:function(n){oo(n,cy)}})}function Z_(n,t,e){function o(n){return[Ir(e.translate(n.title))]}return{dom:{tag:"div",classes:["tox-dialog__title"],attributes:N({},t.map(function(n){return{id:n}}).getOr({}))},components:o(n),behaviours:ba([RT.config({channel:qF,renderComponents:o})])}}function nM(){return{dom:cp('<div class="tox-dialog__draghandle"></div>')}}function tM(n,t){return function(n,t){var e=wM.parts().title(Z_(n,on.none(),t)),o=wM.parts().draghandle(nM()),r=wM.parts().close(Q_(t)),i=[e].concat(n.draggable?[o]:[]).concat([r]);return Wb.sketch({dom:cp('<div class="tox-dialog__header"></div>'),components:i})}({title:t.shared.providers.translate(n),draggable:t.dialog.isDraggableModal()},t.shared.providers)}function eM(n,t){return{onClose:function(){return t.closeWindow()},onBlock:function(e){wM.setBusy(n(),function(n,t){return{dom:{tag:"div",classes:["tox-dialog__busy-spinner"],attributes:{"aria-label":e.message()},styles:{left:"0px",right:"0px",bottom:"0px",top:"0px",position:"absolute"}},behaviours:t,components:[{dom:cp('<div class="tox-spinner"><div></div><div></div><div></div></div>')}]}})},onUnblock:function(){wM.setIdle(n())}}}function oM(n,t,e,o){var r;return uu($_(N(N({},n),{lazySink:o.shared.getSink,extraBehaviours:g([RT.config({channel:YF,updateState:function(n,t){return on.some(t)},initialData:t}),DS({})],n.extraBehaviours),onEscape:function(n){oo(n,cy)},dialogEvents:e,eventOrder:(r={},r[li()]=["reflecting","receiving"],r[Ci()]=["scroll-lock","reflecting","messages","dialog-events","alloy.base.behaviour"],r[ki()]=["alloy.base.behaviour","dialog-events","messages","reflecting","scroll-lock"],r)})))}function rM(n){return S(n,function(n){return"menu"===n.type?function(n){var t=S(n.items,function(n){var t=ye(!1);return N(N({},n),{storage:t})});return N(N({},n),{items:t})}(n):n})}function iM(n){return O(n,function(n,t){return"menu"!==t.type?n:O(t.items,function(n,t){return n[t.name]=t.storage,n},n)},{})}function uM(n,t,e){var o=tM(n.internalDialog.title,e),r=function(n,t){var e=H_(n,on.none(),t,!1);return wM.parts().body(e)}({body:n.internalDialog.body},e),i=rM(n.internalDialog.buttons),u=iM(i),a=j_({buttons:i},e),c=ZF(function(){return d},eM(function(){return l},t)),s="normal"!==n.internalDialog.size?"large"===n.internalDialog.size?["tox-dialog--width-lg"]:["tox-dialog--width-md"]:[],f={header:o,body:r,footer:on.some(a),extraClasses:s,extraBehaviours:[],extraStyles:{}},l=oM(f,n,c,e),d=W_({getRoot:function(){return l},getBody:function(){return wM.getBody(l)},getFooter:function(){return wM.getFooter(l)},getFormWrapper:function(){var n=wM.getBody(l);return Zl.getCurrent(n).getOr(n)}},t.redial,u);return{dialog:l,instanceApi:d}}function aM(n,t,e,o){var r,i,u=Xo("dialog-label"),a=Xo("dialog-content"),c=vm(function(n,t,e){return Wb.sketch({dom:cp('<div class="tox-dialog__header"></div>'),components:[Z_(n,on.some(t),e),nM(),Q_(e)],containerBehaviours:ba([w_.config({mode:"mouse",blockerClass:"blocker",getTarget:function(n){return Ou(n,'[role="dialog"]').getOrDie()},snaps:{getSnapPoints:function(){return[]},leftAttr:"data-drag-left",topAttr:"data-drag-top"}})])})}({title:n.internalDialog.title,draggable:!0},u,e.shared.providers)),s=vm(function(n,t,e,o){return H_(n,on.some(t),e,o)}({body:n.internalDialog.body},a,e,o)),f=rM(n.internalDialog.buttons),l=iM(f),d=vm(function(n,t){return L_(n,t)}({buttons:f},e)),m=ZF(function(){return p},{onBlock:function(){},onUnblock:function(){},onClose:function(){return t.closeWindow()}}),g=uu({dom:{tag:"div",classes:["tox-dialog","tox-dialog-inline"],attributes:(r={role:"dialog"},r["aria-labelledby"]=u,r["aria-describedby"]=""+a,r)},eventOrder:(i={},i[li()]=[RT.name(),lc.name()],i[di()]=["execute-on-form"],i[Ci()]=["reflecting","execute-on-form"],i),behaviours:ba([lg.config({mode:"cyclic",onEscape:function(n){return oo(n,ay),on.some(!0)},useTabstopAt:function(n){return!MS(n)&&("button"!==Ke(n)||"disabled"!==zo(n,"disabled"))}}),RT.config({channel:YF,updateState:function(n,t){return on.some(t)},initialData:n}),vg.config({}),Kd("execute-on-form",m.concat([bo(Qr(),function(n,t){lg.focusIn(n)})])),DS({})]),components:[c.asSpec(),s.asSpec(),d.asSpec()]}),p=W_({getRoot:function(){return g},getFooter:function(){return d.get(g)},getBody:function(){return s.get(g)},getFormWrapper:function(){var n=s.get(g);return Zl.getCurrent(n).getOr(n)}},t.redial,l);return{dialog:g,instanceApi:p}}function cM(n){return sn(n)&&-1!==eI.indexOf(n.mceAction)}function sM(e,n,o,t){var r,i=tM(e.title,t),u=function(n){var t={dom:{tag:"div",classes:["tox-dialog__content-js"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-iframe"]},components:[IS({dom:{tag:"iframe",attributes:{src:n.url}},behaviours:ba([Gy.config({}),vg.config({})])})]}],behaviours:ba([lg.config({mode:"acyclic",useTabstopAt:b(MS)})])};return wM.parts().body(t)}(e),a=e.buttons.bind(function(n){return 0===n.length?on.none():on.some(j_({buttons:n},t))}),c=QF(function(){return h},eM(function(){return p},n)),s=N(N({},e.height.fold(function(){return{}},function(n){return{height:n+"px","max-height":n+"px"}})),e.width.fold(function(){return{}},function(n){return{width:n+"px","max-width":n+"px"}})),f=e.width.isNone()&&e.height.isNone()?["tox-dialog--width-lg"]:[],l=new tI(e.url,{base_uri:new tI(v.window.location.href)}),d=l.protocol+"://"+l.host+(l.port?":"+l.port:""),m=ye(on.none()),g=[Kd("messages",[Ii(function(){var n=sb(we.fromDom(v.window),"message",function(n){if(l.isSameOrigin(new tI(n.raw().origin))){var t=n.raw().data;cM(t)?function(n,t,e){switch(e.mceAction){case"insertContent":n.insertContent(e.content);break;case"setContent":n.setContent(e.content);break;case"execCommand":var o=!!ln(e.ui)&&e.ui;n.execCommand(e.cmd,o,e.value);break;case"close":t.close();break;case"block":t.block(e.message);break;case"unblock":t.unblock()}}(o,h,t):function(n){return!cM(n)&&sn(n)&&En(n,"mceAction")}(t)&&e.onMessage(h,t)}});m.set(on.some(n))}),Ri(function(){m.get().each(function(n){return n.unbind()})})]),lc.config({channels:(r={},r[$F]={onReceive:function(n,t){ku(n.element(),"iframe").each(function(n){n.dom().contentWindow.postMessage(t,d)})}},r)})],p=oM({header:i,body:u,footer:a,extraClasses:f,extraBehaviours:g,extraStyles:s},e,c,t),h=function(t){function n(n){t.getSystem().isConnected()&&n(t)}return{block:function(t){if(!cn(t))throw new Error("The urlDialogInstanceAPI.block function should be passed a blocking message of type string as an argument");n(function(n){ro(n,ly,{message:t})})},unblock:function(){n(function(n){oo(n,dy)})},close:function(){n(function(n){oo(n,ay)})},sendMessage:function(t){n(function(n){n.getSystem().broadcastOn([$F],t)})}}}(p);return{dialog:p,instanceApi:h}}var fM,lM,dM,mM,gM,pM=function(i,r){r.delimiter||(r.delimiter="\xbb");return{dom:{tag:"div",classes:["tox-statusbar__path"],attributes:{role:"navigation"}},behaviours:ba([lg.config({mode:"flow",selector:"div[role=button]"}),Gy.config({}),mg.config({}),Kd("elementPathEvents",[Ii(function(e,n){i.shortcuts.add("alt+F11","focus statusbar elementpath",function(){return lg.focusIn(e)}),i.on("NodeChange",function(n){var t=function(n){for(var t=[],e=n.length;0<e--;){var o=n[e];if(1===o.nodeType&&!O_(o)){var r=i.fire("ResolveName",{name:o.nodeName.toLowerCase(),target:o});if(r.isDefaultPrevented()||t.push({name:r.name,element:o}),r.isPropagationStopped())break}}return t}(n.parents);0<t.length&&mg.set(e,function(n){var t=S(n||[],function(t,n){return Gg.sketch({dom:{tag:"div",classes:["tox-statusbar__path-item"],attributes:{role:"button","data-index":n,"tab-index":-1,"aria-level":n+1},innerHtml:t.name},action:function(n){i.focus(),i.selection.select(t.element),i.nodeChanged()}})}),o={dom:{tag:"div",classes:["tox-statusbar__path-divider"],attributes:{"aria-hidden":!0},innerHtml:" "+r.delimiter+" "}};return O(t.slice(1),function(n,t){var e=n;return e.push(o),e.push(t),e},[t[0]])}(t))})})])]),components:[]}},hM=function(l){function d(){return e.bind(FA.getHeader)}function m(){return an.value(v)}function n(){return e.bind(function(n){return FA.getMoreButton(n)}).getOrDie("Could not find more button element")}function g(){return e.bind(function(n){return FA.getThrobber(n)}).getOrDie("Could not find throbber element")}var t=l.inline,p=t?GA:LA,h=$b(l)?dA:hA,e=on.none(),o=Ht(),r=o.browser.isIE()?["tox-platform-ie"]:[],i=o.deviceType.isTouch()?["tox-platform-touch"]:[],u=rh.isRtl()?{attributes:{dir:"rtl"}}:{},v=uu({dom:N({tag:"div",classes:["tox","tox-silver-sink","tox-tinymce-aux"].concat(r).concat(i)},u),behaviours:ba([Af.config({useFixed:function(){return h.isDocked(d)}})])}),a=vm({dom:{tag:"div",classes:["tox-anchorbar"]}}),b=hO(v,l,function(){return e.bind(function(n){return a.getOpt(n)}).getOrDie("Could not find a anchor bar element")},n),c=FA.parts().menubar({dom:{tag:"div",classes:["tox-menubar"]},backstage:b,onEscape:function(){l.focus()}}),s=Yb(l),f=FA.parts().toolbar({dom:{tag:"div",classes:["tox-toolbar"]},getSink:m,backstage:b,onEscape:function(){l.focus()},split:s,lazyToolbar:function(){return e.bind(function(n){return FA.getToolbar(n)}).getOrDie("Could not find more toolbar element")},lazyMoreButton:n,lazyHeader:function(){return d().getOrDie("Could not find header element")}}),y=FA.parts()["multiple-toolbar"]({dom:{tag:"div",classes:["tox-toolbar-overlord"]},onEscape:function(){},split:s}),x=FA.parts().socket({dom:{tag:"div",classes:["tox-edit-area"]}}),w=FA.parts().sidebar({dom:{tag:"div",classes:["tox-sidebar"]}}),S=FA.parts().throbber({dom:{tag:"div",classes:["tox-throbber"]},backstage:b}),C=l.getParam("statusbar",!0,"boolean")&&!t?on.some(E_(l,b.shared.providers)):on.none(),k={dom:{tag:"div",classes:["tox-sidebar-wrap"]},components:[x,w]},O=Xb(l),E=zb(l),T=Pb(l),B=FA.parts().header({dom:{tag:"div",classes:["tox-editor-header"]},components:H([T?[c]:[],O?[y]:E?[f]:[],Kb(l)?[]:[a.asSpec()]]),sticky:$b(l),editor:l,getSink:m}),D=H([[B],t?[]:[k]]),A=H([[{dom:{tag:"div",classes:["tox-editor-container"]},components:D}],t?[]:C.toArray(),[S]]),_=Jb(l),M=N(N({role:"application"},rh.isRtl()?{dir:"rtl"}:{}),_?{"aria-hidden":"true"}:{}),F=uu(FA.sketch({dom:{tag:"div",classes:["tox","tox-tinymce"].concat(t?["tox-tinymce-inline"]:[]).concat(i).concat(r),styles:N({visibility:"hidden"},_?{opacity:"0",border:"0"}:{}),attributes:M},components:A,behaviours:ba([lg.config({mode:"cyclic",selector:".tox-menubar, .tox-toolbar, .tox-toolbar__primary, .tox-toolbar__overflow--open, .tox-sidebar__overflow--open, .tox-statusbar__path, .tox-statusbar__wordcount, .tox-statusbar__branding a"})])}));e=on.some(F),l.shortcuts.add("alt+F9","focus menubar",function(){FA.focusMenubar(F)}),l.shortcuts.add("alt+F10","focus toolbar",function(){FA.focusToolbar(F)});var I=Mb(F),R=Mb(v);XD(l,I,R),iy(l);function V(){var n=WA(KB(l)),t=WA(function(n){return JB(n).getOr(Ib(n))}(l));return l.inline||(Cr("div","width",t)&&yr(F.element(),"width",t),Cr("div","height",n)?yr(F.element(),"height",n):yr(F.element(),"height","200px")),n}return{mothership:I,uiMothership:R,backstage:b,renderUI:function(){h.setup(l,d),QA(l,b),lD(l,m,b),function(o){var r=o.ui.registry.getAll().sidebars;bn(wn(r),function(t){function e(){return on.from(o.queryCommandValue("ToggleSidebar")).is(t)}var n=r[t];o.ui.registry.addToggleButton(t,{icon:n.icon,tooltip:n.tooltip,onAction:function(n){o.execCommand("ToggleSidebar",!1,t),n.setActive(e())},onSetup:function(n){function t(){return n.setActive(e())}return o.on("ToggleSidebar",t),function(){o.off("ToggleSidebar",t)}}})})}(l),function(e,t,o){function r(n){n!==i.get()&&(WB(t(),n,o.providers),i.set(n))}var i=ye(!1),u=ye(on.none());e.on("ProgressState",function(n){if(u.get().each(qg.clearTimeout),mn(n.time)){var t=qg.setEditorTimeout(e,function(){return r(n.state)},n.time);u.set(on.some(t))}else r(n.state),u.set(on.none())})}(l,g,b.shared);var n=l.ui.registry.getAll(),t=n.buttons,e=n.menuItems,o=n.contextToolbars,r=n.sidebars,i=Lb(l),u={menuItems:e,menus:l.settings.menu?P(l.settings.menu,function(n){return An(n,{items:n.items})}):{},menubar:l.settings.menubar,toolbar:i.getOrThunk(function(){return l.getParam("toolbar",!0)}),buttons:t,sidebar:r};GD(l,o,v,{backstage:b}),C_(l,v);var a=l.getElement(),c=V(),s={mothership:I,uiMothership:R,outerContainer:F},f={targetNode:a,height:c};return p.render(l,s,u,b,f)},getUi:function(){return{channels:{broadcastAll:R.broadcast,broadcastOn:R.broadcastOn,register:function(){}}}}}},vM=function(n,t){var e=on.from(zo(n,"id")).fold(function(){var n=Xo("dialog-label");return Po(t,"id",n),n},l);Po(n,"aria-labelledby",e)},bM=nn([ct("lazySink"),ht("dragBlockClass"),Bt("getBounds",Su),St("useTabstopAt",nn(!0)),St("eventOrder",{}),Fs("modalBehaviours",[lg]),Ku("onExecute"),$u("onEscape")]),yM={sketch:l},xM=nn([Sl({name:"draghandle",overrides:function(n,t){return{behaviours:ba([w_.config({mode:"mouse",getTarget:function(n){return Cu(n,'[role="dialog"]').getOr(n)},blockerClass:n.dragBlockClass.getOrDie(new Error("The drag blocker class was not specified for a dialog with a drag handle: \n"+JSON.stringify(t,null,2)).message),getBounds:n.getDragBounds})])}}}),xl({schema:[ct("dom")],name:"title"}),xl({factory:yM,schema:[ct("dom")],name:"close"}),xl({factory:yM,schema:[ct("dom")],name:"body"}),Sl({factory:yM,schema:[ct("dom")],name:"footer"}),wl({factory:{sketch:function(n,t){return N(N({},n),{dom:t.dom,components:t.components})}},schema:[St("dom",{tag:"div",styles:{position:"fixed",left:"0px",top:"0px",right:"0px",bottom:"0px"}}),St("components",[])],name:"blocker"})]),wM=Al({name:"ModalDialog",configFields:bM(),partFields:xM(),factory:function(o,n,t,r){var a=Xo("alloy.dialog.busy"),c=Xo("alloy.dialog.idle"),s=ba([lg.config({mode:"special",onTab:function(){return on.some(!0)},onShiftTab:function(){return on.some(!0)}}),vg.config({})]),e=Xo("modal-events"),i=N(N({},o.eventOrder),{"alloy.system.attached":[e].concat(o.eventOrder["alloy.system.attached"]||[])});return{uid:o.uid,dom:o.dom,components:n,apis:{show:function(i){var n=o.lazySink(i).getOrDie(),u=ye(on.none()),t=r.blocker(),e=n.getSystem().build(N(N({},t),{components:t.components.concat([au(i)]),behaviours:ba([vg.config({}),Kd("dialog-blocker-events",[bo(Qr(),function(){lg.focusIn(i)}),lo(c,function(n,t){Lo(i.element(),"aria-busy")&&(jo(i.element(),"aria-busy"),u.get().each(function(n){return mg.remove(i,n)}))}),lo(a,function(n,t){Po(i.element(),"aria-busy","true");var e=t.event().getBusySpec();u.get().each(function(n){mg.remove(i,n)});var o=e(i,s),r=n.getSystem().build(o);u.set(on.some(r)),mg.append(i,au(r)),r.hasConfigured(lg)&&lg.focusIn(r)})])])}));hs(n,e),lg.focusIn(i)},hide:function(t){Eo(t.element()).each(function(n){t.getSystem().getByDom(n).each(function(n){bs(n)})})},getBody:function(n){return Ks(n,o,"body")},getFooter:function(n){return Ks(n,o,"footer")},setIdle:function(n){oo(n,c)},setBusy:function(n,t){ro(n,a,{getBusySpec:t})}},eventOrder:i,domModification:{attributes:{role:"dialog","aria-modal":"true"}},behaviours:Rs(o.modalBehaviours,[mg.config({}),lg.config({mode:"cyclic",onEnter:o.onExecute,onEscape:o.onEscape,useTabstopAt:o.useTabstopAt}),Kd(e,[Ii(function(n){vM(n.element(),Ks(n,o,"title").element()),function(n,t){var e=on.from(zo(n,"id")).fold(function(){var n=Xo("dialog-describe");return Po(t,"id",n),n},l);Po(n,"aria-describedby",e)}(n.element(),Ks(n,o,"body").element())})])])}},apis:{show:function(n,t){n.show(t)},hide:function(n,t){n.hide(t)},getBody:function(n,t){return n.getBody(t)},getFooter:function(n,t){return n.getFooter(t)},setBusy:function(n,t,e){n.setBusy(t,e)},setIdle:function(n,t){n.setIdle(t)}}}),SM=[ft("type"),ft("text"),lt("level",["info","warn","error","success"]),ft("icon"),St("url","")],CM=re(SM),kM=[ft("type"),ft("text"),Tt("disabled",!1),Tt("primary",!1),ce("name","name",In(function(){return Xo("button-name")}),ge),yt("icon"),Tt("borderless",!1)],OM=re(kM),EM=[ft("type"),ft("name"),ft("label"),Tt("disabled",!1)],TM=re(EM),BM=pe,DM=[ft("type"),ft("name")],AM=DM.concat([yt("label")]),_M=re(AM),MM=ge,FM=re(AM),IM=ge,RM=re(AM),VM=Kn(se),NM=AM.concat([Tt("sandboxed",!0)]),HM=re(NM),PM=ge,zM=AM.concat([yt("inputMode"),yt("placeholder"),Tt("maximized",!1),Tt("disabled",!1)]),LM=re(zM),jM=ge,UM=AM.concat([gt("items",[ft("text"),ft("value")]),kt("size",1),Tt("disabled",!1)]),WM=re(UM),GM=ge,XM=AM.concat([Tt("constrain",!0),Tt("disabled",!1)]),YM=re(XM),qM=re([ft("width"),ft("height")]),KM=AM.concat([yt("placeholder"),Tt("maximized",!1),Tt("disabled",!1)]),JM=re(KM),$M=ge,QM=AM.concat([Et("filetype","file",["image","media","file"]),St("disabled",!1)]),ZM=re(QM),nF=re([ft("value"),St("meta",{})]),tF=DM.concat([Ot("tag","textarea"),ft("scriptId"),ft("scriptUrl"),(fM="settings",lM=undefined,Ct(fM,lM,be))]),eF=DM.concat([Ot("tag","textarea"),dt("init")]),oF=Zn(function(n){return tt("customeditor.old",qn(eF),n).orThunk(function(){return tt("customeditor.new",qn(tF),n)})}),rF=ge,iF=[ft("type"),ft("html"),Et("presets","presentation",["presentation","document"])],uF=re(iF),aF=AM.concat([st("currentState",re([ct("blob"),ft("url")]))]),cF=re(aF),sF=AM.concat([St("columns","auto")]),fF=re(sF),lF=(dM=[ft("value"),ft("text"),ft("icon")],ue(dM)),dF=[ft("type"),pt("header",ge),pt("cells",Kn(ge))],mF=re(dF),gF=fe(function(){return rt("type",{alertbanner:CM,bar:re(function(n){return[ft("type"),n]}(B_("bar"))),button:OM,checkbox:TM,colorinput:_M,colorpicker:FM,dropzone:RM,grid:re(T_(B_("grid"))),iframe:HM,input:LM,selectbox:WM,sizeinput:YM,textarea:JM,urlinput:ZM,customeditor:oF,htmlpanel:uF,imagetools:cF,collection:fF,label:re(function(n){return[ft("type"),ft("label"),n]}(B_("label"))),table:mF,panel:hF})}),pF=[ft("type"),St("classes",[]),pt("items",gF)],hF=re(pF),vF=[ce("name","name",In(function(){return Xo("tab-name")}),ge),ft("title"),pt("items",gF)],bF=[ft("type"),gt("tabs",vF)],yF=re(bF),xF=re([ft("type"),ft("name"),Tt("active",!1)].concat(Wp)),wF=pe,SF=[ce("name","name",In(function(){return Xo("button-name")}),ge),yt("icon"),Et("align","end",["start","end"]),Tt("primary",!1),Tt("disabled",!1)],CF=g(SF,[ft("text")]),kF=g([lt("type",["submit","cancel","custom"])],CF),OF=g([lt("type",["menu"]),yt("text"),yt("tooltip"),yt("icon"),pt("items",xF),Bt("onSetup",function(){return Z})],SF),EF=CF,TF=it("type",{submit:kF,cancel:kF,custom:kF,menu:OF}),BF=re([ft("title"),st("body",rt("type",{panel:hF,tabpanel:yF})),Ot("size","normal"),pt("buttons",TF),St("initialData",{}),Bt("onAction",Z),Bt("onChange",Z),Bt("onSubmit",Z),Bt("onClose",Z),Bt("onCancel",Z),St("onTabChange",Z)]),DF=function(n){return sn(n)?[n].concat(B(R(n),DF)):fn(n)?B(n,DF):[]},AF={checkbox:BM,colorinput:MM,colorpicker:IM,dropzone:VM,input:jM,iframe:PM,sizeinput:qM,selectbox:GM,size:qM,textarea:$M,urlinput:nF,customeditor:rF,collection:lF,togglemenuitem:wF},_F=re(g([lt("type",["cancel","custom"])],EF)),MF=re([ft("title"),ft("url"),bt("height"),bt("width"),(mM="buttons",gM=_F,vt(mM,Kn(gM))),Bt("onAction",Z),Bt("onCancel",Z),Bt("onClose",Z),Bt("onMessage",Z)]),FF={open:function(n,t){var e=__(t);return n(e.internalDialog,e.initialData,e.dataValidator)},openUrl:function(n,t){return n(et(function(n){return tt("dialog",MF,n)}(t)))},redial:function(n){return __(n)}},IF=Dl({name:"TabButton",configFields:[St("uid",undefined),ct("value"),ce("dom","dom",Rn(function(n){return{attributes:{role:"tab",id:Xo("aria"),"aria-selected":"false"}}}),de()),ht("action"),St("domModification",{}),Fs("tabButtonBehaviours",[vg,lg,Zf]),ct("view")],factory:function(n,t){return{uid:n.uid,dom:n.dom,components:n.components,events:rm(n.action),behaviours:Rs(n.tabButtonBehaviours,[vg.config({}),lg.config({mode:"execution",useSpace:!0,useEnter:!0}),Zf.config({store:{mode:"memory",initialValue:n.value}})]),domModification:n.domModification}}}),RF=nn([ct("tabs"),ct("dom"),St("clickToDismiss",!1),Fs("tabbarBehaviours",[ad,lg]),Xu(["tabClass","selectedClass"])]),VF=Cl({factory:IF,name:"tabs",unit:"tab",overrides:function(o,n){function r(n,t){ad.dehighlight(n,t),ro(n,Ai(),{tabbar:n,button:t})}function i(n,t){ad.highlight(n,t),ro(n,Di(),{tabbar:n,button:t})}return{action:function(n){var t=n.getSystem().getByUid(o.uid).getOrDie(),e=ad.isHighlighted(t,n);(e&&o.clickToDismiss?r:e?Z:i)(t,n)},domModification:{classes:[o.markers.tabClass]}}}}),NF=nn([VF]),HF=Al({name:"Tabbar",configFields:RF(),partFields:NF(),factory:function(n,t,e,o){return{uid:n.uid,dom:n.dom,components:t,"debug.sketcher":"Tabbar",domModification:{attributes:{role:"tablist"}},behaviours:Rs(n.tabbarBehaviours,[ad.config({highlightClass:n.markers.selectedClass,itemClass:n.markers.tabClass,onHighlight:function(n,t){Po(t.element(),"aria-selected","true")},onDehighlight:function(n,t){Po(t.element(),"aria-selected","false")}}),lg.config({mode:"flow",getInitial:function(n){return ad.getHighlighted(n).map(function(n){return n.element()})},selector:"."+n.markers.tabClass,executeOnMove:!0})])}}}),PF=Dl({name:"Tabview",configFields:[Fs("tabviewBehaviours",[mg])],factory:function(n,t){return{uid:n.uid,dom:n.dom,behaviours:Rs(n.tabviewBehaviours,[mg.config({})]),domModification:{attributes:{role:"tabpanel"}}}}}),zF=nn([St("selectFirst",!0),qu("onChangeTab"),qu("onDismissTab"),St("tabs",[]),Fs("tabSectionBehaviours",[])]),LF=xl({factory:HF,schema:[ct("dom"),mt("markers",[ct("tabClass"),ct("selectedClass")])],name:"tabbar",defaults:function(n){return{tabs:n.tabs}}}),jF=xl({factory:PF,name:"tabview"}),UF=nn([LF,jF]),WF=Al({name:"TabSection",configFields:zF(),partFields:UF(),factory:function(r,n,t,e){function o(n,t){qs(n,r,"tabbar").each(function(n){t(n).each(io)})}return{uid:r.uid,dom:r.dom,components:n,behaviours:Is(r.tabSectionBehaviours),events:co(H([r.selectFirst?[Ii(function(n,t){o(n,ad.getFirst)})]:[],[lo(Di(),function(n,t){!function(o){var t=Zf.getValue(o);qs(o,r,"tabview").each(function(e){E(r.tabs,function(n){return n.value===t}).each(function(n){var t=n.view();Po(e.element(),"aria-labelledby",zo(o.element(),"id")),mg.set(e,t),r.onChangeTab(e,o,t)})})}(t.event().button())}),lo(Ai(),function(n,t){var e=t.event().button();r.onDismissTab(n,e)})]])),apis:{getViewItems:function(n){return qs(n,r,"tabview").map(function(n){return mg.contents(n)}).getOr([])},showTab:function(n,e){o(n,function(t){var n=ad.getCandidates(t);return E(n,function(n){return Zf.getValue(n)===e}).filter(function(n){return!ad.isHighlighted(t,n)})})}}}},apis:{getViewItems:function(n,t){return n.getViewItems(t)},showTab:function(n,t,e){n.showTab(t,e)}}}),GF="send-data-to-section",XF="send-data-to-view",YF=Xo("update-dialog"),qF=Xo("update-title"),KF=Xo("update-body"),JF=Xo("update-footer"),$F=Xo("body-send-message"),QF=function(i,n){function t(n,r){return lo(n,function(e,o){u(e,function(n,t){r(i(),n,o.event(),e)})})}var u=function(t,e){RT.getState(t).get().each(function(n){e(n,t)})};return g(P_(t,n),[t(sy,function(n,t,e){t.onAction(n,{name:e.name()})})])},ZF=function(i,n){function t(n,r){return lo(n,function(e,o){u(e,function(n,t){r(i(),n,o.event(),e)})})}var u=function(t,e){RT.getState(t).get().each(function(n){e(n.internalDialog,t)})};return g(P_(t,n),[t(fy,function(n,t){return t.onSubmit(n)}),t(uy,function(n,t,e){t.onChange(n,{name:e.name()})}),t(sy,function(n,t,e,o){function r(){return lg.focusIn(o)}var i=Sa();t.onAction(n,{name:e.name(),value:e.value()}),Sa().fold(function(){r()},function(n){!Ye(o.element(),n)||Lo(n,"disabled")?r():Ye(n,i.getOrNull())&&Lo(i.getOrDie(),"disabled")&&r()})}),t(my,function(n,t,e){t.onTabChange(n,{newTabName:e.name(),oldTabName:e.oldName()})}),Ri(function(n){var t=i();Zf.setValue(n,t.getData())})])},nI=gh.deviceType.isTouch(),tI=tinymce.util.Tools.resolve("tinymce.util.URI"),eI=["insertContent","setContent","execCommand","close","block","unblock"],oI=function(n){var l=n.backstage,d=n.editor,m=$b(d),e=function(c){var s=c.backstage.shared;return{open:function(n,t){function e(){wM.hide(u),t()}var o=vm(YC({name:"close-alert",text:"OK",primary:!0,align:"end",disabled:!1,icon:on.none()},"cancel",c.backstage)),r=Y_(),i=X_(e,s.providers),u=uu($_({lazySink:function(){return s.getSink()},header:G_(r,i),body:q_(n,s.providers),footer:on.some(K_(J_([],[o.asSpec()]))),onEscape:e,extraClasses:["tox-alert-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[lo(cy,e)],eventOrder:{}}));wM.show(u);var a=o.get(u);vg.focus(a)}}}(n),o=function(s){var f=s.backstage.shared;return{open:function(n,t){function e(n){wM.hide(a),t(n)}var o=vm(YC({name:"yes",text:"Yes",primary:!0,align:"end",disabled:!1,icon:on.none()},"submit",s.backstage)),r=YC({name:"no",text:"No",primary:!0,align:"end",disabled:!1,icon:on.none()},"cancel",s.backstage),i=Y_(),u=X_(function(){return e(!1)},f.providers),a=uu($_({lazySink:function(){return f.getSink()},header:G_(i,u),body:q_(n,f.providers),footer:on.some(K_(J_([],[r,o.asSpec()]))),onEscape:function(){return e(!1)},extraClasses:["tox-confirm-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[lo(cy,function(){return e(!1)}),lo(fy,function(){return e(!0)})],eventOrder:{}}));wM.show(a);var c=o.get(a);vg.focus(c)}}}(n),r=function(n,e){return FF.openUrl(function(n){var t=sM(n,{closeWindow:function(){wM.hide(t.dialog),e(t.instanceApi)}},d,l);return wM.show(t.dialog),t.instanceApi},n)},i=function(n,i){return FF.open(function(n,t,e){var o=t,r=uM({dataValidator:e,initialData:o,internalDialog:n},{redial:FF.redial,closeWindow:function(){wM.hide(r.dialog),i(r.instanceApi)}},l);return wM.show(r.dialog),r.instanceApi.setData(o),r.instanceApi},n)},u=function(n,c,s,f){return FF.open(function(n,t,e){function o(){return i.on(function(n){cA.refresh(n)})}var r=function(n,t){return et(tt("data",t,n))}(t,e),i=function(){var t=ye(on.none());return{clear:function(){t.set(on.none())},set:function(n){t.set(on.some(n))},isSet:function(){return t.get().isSome()},on:function(n){t.get().each(n)}}}(),u=aM({dataValidator:e,initialData:r,internalDialog:n},{redial:FF.redial,closeWindow:function(){i.on(jg.hide),d.off("ResizeEditor",o),i.clear(),s(u.instanceApi)}},l,f),a=uu(jg.sketch({lazySink:l.shared.getSink,dom:{tag:"div",classes:[]},fireDismissalEventInstead:{},inlineBehaviours:ba(g([Kd("window-manager-inline-events",[lo(Oi(),function(n,t){oo(u.dialog,cy)})])],function(n,t){return t?[]:[cA.config({contextual:{lazyContext:function(){return on.some(xu(we.fromDom(n.getContentAreaContainer())))},fadeInClass:"tox-dialog-dock-fadein",fadeOutClass:"tox-dialog-dock-fadeout",transitionClass:"tox-dialog-dock-transition"},leftAttr:"data-dock-left",topAttr:"data-dock-top",positionAttr:"data-dock-pos",modes:["top"]})]}(d,m)))}));return i.set(a),jg.showWithin(a,c,au(u.dialog),on.some(zr())),m||(cA.refresh(a),d.on("ResizeEditor",o)),u.instanceApi.setData(r),lg.focusIn(u.dialog),u.instanceApi},n)};return{open:function(n,t,e){return t!==undefined&&"toolbar"===t.inline?u(n,l.shared.anchors.toolbar(),e,t.ariaAttrs):t!==undefined&&"cursor"===t.inline?u(n,l.shared.anchors.cursor(),e,t.ariaAttrs):i(n,e)},openUrl:function(n,t){return r(n,t)},alert:function(n,t){e.open(n,function(){t()})},close:function(n){n.close()},confirm:function(n,t){o.open(n,function(n){t(n)})}}};!function mI(){n.add("silver",function(n){var t=hM(n),e=t.uiMothership,o=t.backstage,r=t.renderUI,i=t.getUi;db(n,o.shared);var u=oI({editor:n,backstage:o});return{renderUI:r,getWindowManagerImpl:nn(u),getNotificationManagerImpl:function(){return Kg(0,{backstage:o},e)},ui:i()}})}()}(window);
\ No newline at end of file
diff --git a/website/js/vendor/tinymce/js/tinymce/tinymce.min.js b/website/js/vendor/tinymce/js/tinymce/tinymce.min.js
deleted file mode 100644 (file)
index 9f63063..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.5 (2019-12-19)
- */
-!function(j){"use strict";function i(){}var q=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},$=function(e){return function(){return e}},W=function(e){return e};function d(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}function s(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}}function e(){return u}var t,c=$(!1),a=$(!0),u=(t={fold:function(e,t){return e()},is:c,isSome:c,isNone:a,getOr:o,getOrThunk:r,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:$(null),getOrUndefined:$(undefined),or:o,orThunk:r,map:e,each:i,bind:e,exists:c,forall:a,filter:e,equals:n,equals_:n,toArray:function(){return[]},toString:$("none()")},Object.freeze&&Object.freeze(t),t);function n(e){return e.isNone()}function r(e){return e()}function o(e){return e}function l(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}}function f(e,t){return O.call(e,t)}function h(e,t){return-1<f(e,t)}function C(e,t){for(var n=0,r=e.length;n<r;n++){if(t(e[n],n))return!0}return!1}function z(e,t){for(var n=0,r=e.length;n<r;n++){t(e[n],n)}}function y(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n}function m(e,t,n){return function(e,t){for(var n=e.length-1;0<=n;n--){t(e[n],n)}}(e,function(e){n=t(n,e)}),n}function b(e,t,n){return z(e,function(e){n=t(n,e)}),n}function g(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return k.some(o)}return k.none()}function p(e,t){for(var n=0,r=e.length;n<r;n++){if(t(e[n],n))return k.some(n)}return k.none()}function v(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!A(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);H.apply(t,e[n])}return t}(X(e,t))}function w(e,t){for(var n=0,r=e.length;n<r;++n){if(!0!==t(e[n],n))return!1}return!0}function x(e,t){return y(e,function(e){return!h(t,e)})}function E(e){return 0===e.length?k.none():k.some(e[0])}function N(e){return 0===e.length?k.none():k.some(e[e.length-1])}var S=function(n){function e(){return o}function t(e){return e(n)}var r=$(n),o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:a,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return S(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:u},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(c,function(e){return t(n,e)})}};return o},k={some:S,none:e,from:function(e){return null===e||e===undefined?u:S(e)}},K=l("string"),T=l("object"),A=l("array"),M=l("null"),R=l("boolean"),D=l("function"),_=l("number"),B=Array.prototype.slice,O=Array.prototype.indexOf,H=Array.prototype.push,X=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r},Y=function(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o)?n:r).push(a)}return{pass:n,fail:r}},P=D(Array.from)?Array.from:function(e){return B.call(e)},G=function(){return(G=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function L(t){return function(e){return!!e&&e.nodeType===t}}function V(e){var n=e.map(function(e){return e.toLowerCase()});return function(e){if(e&&e.nodeName){var t=e.nodeName.toLowerCase();return h(n,t)}return!1}}function I(t){return function(e){if(Fe(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}}function F(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}return undefined}(e,t);if(!n)return{major:0,minor:0};function r(e){return Number(t.replace(n,"$"+e))}return Ze(r(1),r(2))}function U(e,t){return function(){return t===e}}function J(e,t){return function(){return t===e}}function Q(e,t){var n=String(t).toLowerCase();return g(e,function(e){return e.search(n)})}function Z(e,t){return-1!==e.indexOf(t)}function ee(e,t){return function(e,t,n){return""===t||!(e.length<t.length)&&e.substr(n,n+t.length)===t}(e,t,0)}function te(e){return e.replace(/^\s+|\s+$/g,"")}function ne(e){return e.replace(/\s+$/g,"")}function re(t){return function(e){return Z(e,t)}}function oe(){return pt.get()}function ie(e){return e.dom().nodeName.toLowerCase()}function ae(t){return function(e){return function(e){return e.dom().nodeType}(e)===t}}function ue(e,t){for(var n=Et(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}}function se(e,n){return St(e,function(e,t){return{k:t,v:n(e,t)}})}function ce(e,n){var r={},o={};return ue(e,function(e,t){(n(e,t)?r:o)[t]=e}),{t:r,f:o}}function le(e,t){return kt(e,t)?k.from(e[t]):k.none()}function fe(e){return e.style!==undefined&&D(e.style.getPropertyValue)}function de(e){var t=zt(e)?e.dom().parentNode:e.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}function he(e,t,n){if(!(K(n)||R(n)||_(n)))throw j.console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}function me(e,t){var n=e.dom();ue(t,function(e,t){he(n,t,e)})}function ge(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n}function pe(e,t){e.dom().removeAttribute(t)}function ve(e,t){var n=e.dom(),r=j.window.getComputedStyle(n).getPropertyValue(t),o=""!==r||de(e)?r:At(n,t);return null===o?undefined:o}function ye(e,t){var n=e.dom(),r=At(n,t);return k.from(r).filter(function(e){return 0<e.length})}function be(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(t.length!==n.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+n.length+" arguments");var r={};return z(t,function(e,t){r[e]=$(n[t])}),r}}function Ce(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)}function we(e,t){var n=e.dom();if(n.nodeType!==Dt)return!1;var r=n;if(r.matches!==undefined)return r.matches(t);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(t);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(t);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function xe(e){return e.nodeType!==Dt&&e.nodeType!==_t||0===e.childElementCount}function ze(e,t){return e.dom()===t.dom()}function Ee(e){return yt.fromDom(e.dom().ownerDocument)}function Ne(e){return yt.fromDom(e.dom().ownerDocument.defaultView)}function Se(e){return k.from(e.dom().parentNode).map(yt.fromDom)}function ke(e){return k.from(e.dom().previousSibling).map(yt.fromDom)}function Te(e){return k.from(e.dom().nextSibling).map(yt.fromDom)}function Ae(e){return function(e){var t=B.call(e,0);return t.reverse(),t}(Mt(e,ke))}function Me(e){return Mt(e,Te)}function Re(e){return X(e.dom().childNodes,yt.fromDom)}function De(e,t){var n=e.dom().childNodes;return k.from(n[t]).map(yt.fromDom)}function _e(e){return De(e,0)}function Be(e){return De(e,e.dom().childNodes.length-1)}function Oe(e){return g(e,xt)}function He(e,t){return e.children&&h(e.children,t)}var Pe,Le,Ve,Ie,Fe=L(1),Ue=V(["textarea","input"]),je=L(3),qe=L(8),$e=L(9),We=L(11),Ke=V(["br"]),Xe=I("true"),Ye=I("false"),Ge={isText:je,isElement:Fe,isComment:qe,isDocument:$e,isDocumentFragment:We,isBr:Ke,isContentEditableTrue:Xe,isContentEditableFalse:Ye,isRestrictedNode:function(e){return!!e&&!Object.getPrototypeOf(e)},matchNodeNames:V,hasPropValue:function(t,n){return function(e){return Fe(e)&&e[t]===n}},hasAttribute:function(t,e){return function(e){return Fe(e)&&e.hasAttribute(t)}},hasAttributeValue:function(t,n){return function(e){return Fe(e)&&e.getAttribute(t)===n}},matchStyleValues:function(r,e){var o=e.toLowerCase().split(" ");return function(e){var t;if(Fe(e))for(t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}},isBogus:function(e){return Fe(e)&&e.hasAttribute("data-mce-bogus")},isBogusAll:function(e){return Fe(e)&&"all"===e.getAttribute("data-mce-bogus")},isTable:function(e){return Fe(e)&&"TABLE"===e.tagName},isTextareaOrInput:Ue},Je=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return Je(t())}}},Qe=function(){return Ze(0,0)},Ze=function(e,t){return{major:e,minor:t}},et={nu:Ze,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?Qe():F(e,n)},unknown:Qe},tt="Firefox",nt=function(e){var t=e.current;return{current:t,version:e.version,isEdge:U("Edge",t),isChrome:U("Chrome",t),isIE:U("IE",t),isOpera:U("Opera",t),isFirefox:U(tt,t),isSafari:U("Safari",t)}},rt={unknown:function(){return nt({current:undefined,version:et.unknown()})},nu:nt,edge:$("Edge"),chrome:$("Chrome"),ie:$("IE"),opera:$("Opera"),firefox:$(tt),safari:$("Safari")},ot="Windows",it="Android",at="Solaris",ut="FreeBSD",st=function(e){var t=e.current;return{current:t,version:e.version,isWindows:J(ot,t),isiOS:J("iOS",t),isAndroid:J(it,t),isOSX:J("OSX",t),isLinux:J("Linux",t),isSolaris:J(at,t),isFreeBSD:J(ut,t)}},ct={unknown:function(){return st({current:undefined,version:et.unknown()})},nu:st,windows:$(ot),ios:$("iOS"),android:$(it),linux:$("Linux"),osx:$("OSX"),solaris:$(at),freebsd:$(ut)},lt=function(e,n){return Q(e,n).map(function(e){var t=et.detect(e.versionRegexes,n);return{current:e.name,version:t}})},ft=function(e,n){return Q(e,n).map(function(e){var t=et.detect(e.versionRegexes,n);return{current:e.name,version:t}})},dt=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ht=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Z(e,"edge/")&&Z(e,"chrome")&&Z(e,"safari")&&Z(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,dt],search:function(e){return Z(e,"chrome")&&!Z(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Z(e,"msie")||Z(e,"trident")}},{name:"Opera",versionRegexes:[dt,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:re("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:re("firefox")},{name:"Safari",versionRegexes:[dt,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Z(e,"safari")||Z(e,"mobile/"))&&Z(e,"applewebkit")}}],mt=[{name:"Windows",search:re("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Z(e,"iphone")||Z(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:re("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:re("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:re("linux"),versionRegexes:[]},{name:"Solaris",search:re("sunos"),versionRegexes:[]},{name:"FreeBSD",search:re("freebsd"),versionRegexes:[]}],gt={browsers:$(ht),oses:$(mt)},pt=Je(function(e,t){var n=gt.browsers(),r=gt.oses(),o=lt(n,e).fold(rt.unknown,rt.nu),i=ft(r,e).fold(ct.unknown,ct.nu);return{browser:o,os:i,deviceType:function(e,t,n,r){var o=e.isiOS()&&!0===/ipad/i.test(n),i=e.isiOS()&&!o,a=e.isiOS()||e.isAndroid(),u=a||r("(pointer:coarse)"),s=o||!i&&a&&r("(min-device-width:768px)"),c=i||a&&!s,l=t.isSafari()&&e.isiOS()&&!1===/safari/i.test(n),f=!c&&!s&&!l;return{isiPad:$(o),isiPhone:$(i),isTablet:$(s),isPhone:$(c),isTouch:$(u),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:$(l),isDesktop:$(f)}}(i,o,e,t)}}(j.navigator.userAgent,function(e){return j.window.matchMedia(e).matches})),vt=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:$(e)}},yt={fromHtml:function(e,t){var n=(t||j.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw j.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return vt(n.childNodes[0])},fromTag:function(e,t){var n=(t||j.document).createElement(e);return vt(n)},fromText:function(e,t){var n=(t||j.document).createTextNode(e);return vt(n)},fromDom:vt,fromPoint:function(e,t,n){var r=e.dom();return k.from(r.elementFromPoint(t,n)).map(vt)}},bt=(j.Node.ATTRIBUTE_NODE,j.Node.CDATA_SECTION_NODE,j.Node.COMMENT_NODE,j.Node.DOCUMENT_NODE),Ct=(j.Node.DOCUMENT_TYPE_NODE,j.Node.DOCUMENT_FRAGMENT_NODE,j.Node.ELEMENT_NODE),wt=j.Node.TEXT_NODE,xt=(j.Node.PROCESSING_INSTRUCTION_NODE,j.Node.ENTITY_REFERENCE_NODE,j.Node.ENTITY_NODE,j.Node.NOTATION_NODE,"undefined"!=typeof j.window?j.window:Function("return this;")(),ae(Ct)),zt=ae(wt),Et=Object.keys,Nt=Object.hasOwnProperty,St=function(e,r){var o={};return ue(e,function(e,t){var n=r(e,t);o[n.k]=n.v}),o},kt=function(e,t){return Nt.call(e,t)},Tt=function(e,t,n){he(e.dom(),t,n)},At=function(e,t){return fe(e)?e.style.getPropertyValue(t):""},Mt=function(e,t){for(var n=[],r=function(e){return n.push(e),t(e)},o=t(e);(o=o.bind(r)).isSome(););return n},Rt=function(e,t){return Ce(e,t,j.Node.DOCUMENT_POSITION_CONTAINED_BY)},Dt=Ct,_t=bt,Bt=oe().browser.isIE()?function(e,t){return Rt(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},Ot=(be("element","offset"),oe().browser),Ht={getPos:function(e,t,n){var r,o,i=0,a=0,u=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===ve(yt.fromDom(e),"position"))return{x:i=(o=t.getBoundingClientRect()).left+(u.documentElement.scrollLeft||e.scrollLeft)-u.documentElement.clientLeft,y:a=o.top+(u.documentElement.scrollTop||e.scrollTop)-u.documentElement.clientTop};for(r=t;r&&r!==n&&r.nodeType&&!He(r,n);)i+=r.offsetLeft||0,a+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!==n&&r.nodeType&&!He(r,n);)i-=r.scrollLeft||0,a-=r.scrollTop||0,r=r.parentNode;a+=function(e){return Ot.isFirefox()&&"table"===ie(e)?Oe(Re(e)).filter(function(e){return"caption"===ie(e)}).bind(function(o){return Oe(Me(o)).map(function(e){var t=e.dom().offsetTop,n=o.dom().offsetTop,r=o.dom().offsetHeight;return t<=n?-r:0})}).getOr(0):0}(yt.fromDom(t))}return{x:i,y:a}}},Pt={},Lt={exports:Pt};Pe=undefined,Le=Pt,Ve=Lt,Ie=undefined,function(e){"object"==typeof Le&&void 0!==Ve?Ve.exports=e():"function"==typeof Pe&&Pe.amd?Pe([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=e()}(function(){return function l(i,a,u){function s(t,e){if(!a[t]){if(!i[t]){var n="function"==typeof Ie&&Ie;if(!e&&n)return n(t,!0);if(c)return c(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=a[t]={exports:{}};i[t][0].call(o.exports,function(e){return s(i[t][1][e]||e)},o,o.exports,l,i,a,u)}return a[t].exports}for(var c="function"==typeof Ie&&Ie,e=0;e<u.length;e++)s(u[e]);return s}({1:[function(e,t,n){var r,o,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function s(e){if(r===setTimeout)return setTimeout(e,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{o="function"==typeof clearTimeout?clearTimeout:u}catch(e){o=u}}();var c,l=[],f=!1,d=-1;function h(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&m())}function m(){if(!f){var e=s(h);f=!0;for(var t=l.length;t;){for(c=l,l=[];++d<t;)c&&c[d].run();d=-1,t=l.length}c=null,f=!1,function n(e){if(o===clearTimeout)return clearTimeout(e);if((o===u||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(e);try{return o(e)}catch(t){try{return o.call(null,e)}catch(t){return o.call(this,e)}}}(e)}}function g(e,t){this.fun=e,this.array=t}function p(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new g(e,t)),1!==l.length||f||s(m)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=p,i.addListener=p,i.once=p,i.off=p,i.removeListener=p,i.removeAllListeners=p,i.emit=p,i.prependListener=p,i.prependOnceListener=p,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(e,f,t){(function(t){function r(){}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(e,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var e=1===r._state?o.onFulfilled:o.onRejected;if(null!==e){var t;try{t=e(r._value)}catch(n){return void u(o.promise,n)}a(o.promise,t)}else(1===r._state?a:u)(o.promise,r._value)})):r._deferreds.push(o)}function a(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof i)return e._state=3,e._value=t,void s(e);if("function"==typeof n)return void l(function r(e,t){return function(){e.apply(t,arguments)}}(n,t),e)}e._state=1,e._value=t,s(e)}catch(o){u(e,o)}}function u(e,t){e._state=2,e._value=t,s(e)}function s(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)o(e,e._deferreds[t]);e._deferreds=null}function c(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function l(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,u(t,e))})}catch(r){if(n)return;n=!0,u(t,r)}}var e,n;e=this,n=setTimeout,i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(r);return o(this,new c(e,t,n)),n},i.all=function(e){var s=Array.prototype.slice.call(e);return new i(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i._immediateFn="function"==typeof t?function(e){t(e)}:function(e){n(e,0)},i._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i._setImmediateFn=function(e){i._immediateFn=e},i._setUnhandledRejectionFn=function(e){i._unhandledRejectionFn=e},void 0!==f&&f.exports?f.exports=i:e.Promise||(e.Promise=i)}).call(this,e("timers").setImmediate)},{timers:3}],3:[function(s,e,c){(function(e,t){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},a=0;function u(e,t){this._id=e,this._clearFn=t}c.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(e){e.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},c.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},c._unrefActive=c.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},c.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&o.call(arguments,1);return i[t]=!0,r(function(){i[t]&&(n?e.apply(null,n):e.call(null),c.clearImmediate(t))}),t},c.clearImmediate="function"==typeof t?t:function(e){delete i[e]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(e,t,n){var r=e("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function Vt(e){j.setTimeout(function(){throw e},0)}function It(i,e){return e(function(n){var r=[],o=0;0===i.length?n([]):z(i,function(e,t){e.get(function(t){return function(e){r[t]=e,++o>=i.length&&n(r)}}(t))})})}var Ft,Ut,jt,qt=Lt.exports.boltExport,$t=function(e){var n=k.none(),t=[],r=function(e){o()?a(e):t.push(e)},o=function(){return n.isSome()},i=function(e){z(e,a)},a=function(t){n.each(function(e){j.setTimeout(function(){t(e)},0)})};return e(function(e){n=k.some(e),i(t),t=[]}),{get:r,map:function(n){return $t(function(t){r(function(e){t(n(e))})})},isReady:o}},Wt={nu:$t,pure:function(t){return $t(function(e){e(t)})}},Kt=function(n){function e(e){n().then(e,Vt)}return{map:function(e){return Kt(function(){return n().then(e)})},bind:function(t){return Kt(function(){return n().then(function(e){return t(e).toPromise()})})},anonBind:function(e){return Kt(function(){return n().then(function(){return e.toPromise()})})},toLazy:function(){return Wt.nu(e)},toCached:function(){var e=null;return Kt(function(){return null===e&&(e=n()),e})},toPromise:n,get:e}},Xt={nu:function(e){return Kt(function(){return new qt(e)})},pure:function(e){return Kt(function(){return qt.resolve(e)})}},Yt=function(e){return It(e,Xt.nu)},Gt=function(n){return{is:function(e){return n===e},isValue:a,isError:c,getOr:$(n),getOrThunk:$(n),getOrDie:$(n),or:function(e){return Gt(n)},orThunk:function(e){return Gt(n)},fold:function(e,t){return t(n)},map:function(e){return Gt(e(n))},mapError:function(e){return Gt(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return k.some(n)}}},Jt=function(n){return{is:c,isValue:c,isError:a,getOr:W,getOrThunk:function(e){return e()},getOrDie:function(){return function(e){return function(){throw new Error(e)}}(String(n))()},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return Jt(n)},mapError:function(e){return Jt(e(n))},each:i,bind:function(e){return Jt(n)},exists:c,forall:a,toOption:k.none}},Qt={value:Gt,error:Jt,fromOption:function(e,t){return e.fold(function(){return Jt(t)},Gt)}},Zt=window.Promise?window.Promise:(Ft=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},Ut=tn.immediateFn||"function"==typeof j.setImmediate&&j.setImmediate||function(e){j.setTimeout(e,1)},tn.prototype["catch"]=function(e){return this.then(null,e)},tn.prototype.then=function(n,r){var o=this;return new tn(function(e,t){nn.call(o,new un(n,r,e,t))})},tn.all=function(){var s=Array.prototype.slice.call(1===arguments.length&&Ft(arguments[0])?arguments[0]:arguments);return new tn(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},tn.resolve=function(t){return t&&"object"==typeof t&&t.constructor===tn?t:new tn(function(e){e(t)})},tn.reject=function(n){return new tn(function(e,t){t(n)})},tn.race=function(o){return new tn(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},tn);function en(e,t){return function(){e.apply(t,arguments)}}function tn(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],sn(e,en(rn,this),en(on,this))}function nn(r){var o=this;null!==this._state?Ut(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(o._value)}catch(n){return void r.reject(n)}r.resolve(t)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function rn(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void sn(en(t,e),en(rn,this),en(on,this))}this._state=!0,this._value=e,an.call(this)}catch(n){on.call(this,n)}}function on(e){this._state=!1,this._value=e,an.call(this)}function an(){for(var e=0,t=this._deferreds.length;e<t;e++)nn.call(this,this._deferreds[e]);this._deferreds=null}function un(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function sn(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(o){if(r)return;r=!0,n(o)}}function cn(e,t){return"number"!=typeof t&&(t=0),j.setTimeout(e,t)}function ln(e,t){return"number"!=typeof t&&(t=1),j.setInterval(e,t)}function fn(n,r){var o,e;return(e=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];j.clearTimeout(o),o=cn(function(){n.apply(this,e)},r)}).stop=function(){j.clearTimeout(o)},e}function dn(e,t,n){var r,o;if(!e)return 0;if(n=n||e,e.length!==undefined){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return 0}else for(r in e)if(e.hasOwnProperty(r)&&!1===t.call(n,e[r],r,e))return 0;return 1}function hn(e,t,n){var r,o;for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1}function mn(e){return null===e||e===undefined?"":(""+e).replace(Tn,"")}function gn(e,t){return t?!("array"!==t||!kn.isArray(e))||typeof e===t:e!==undefined}var pn={requestAnimationFrame:function(e,t){jt?jt.then(e):jt=new Zt(function(e){!function(e,t){var n,r=j.window.requestAnimationFrame,o=["ms","moz","webkit"];for(n=0;n<o.length&&!r;n++)r=j.window[o[n]+"RequestAnimationFrame"];(r=r||function(e){j.window.setTimeout(e,0)})(e,t)}(e,t=t||j.document.body)}).then(e)},setTimeout:cn,setInterval:ln,setEditorTimeout:function(e,t,n){return cn(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r;return r=ln(function(){e.removed?j.clearInterval(r):t()},n)},debounce:fn,throttle:fn,clearInterval:function(e){return j.clearInterval(e)},clearTimeout:function(e){return j.clearTimeout(e)}},vn=j.navigator.userAgent,yn=oe(),bn=yn.browser,Cn=yn.os,wn=yn.deviceType,xn=/WebKit/.test(vn)&&!bn.isEdge(),zn="FormData"in j.window&&"FileReader"in j.window&&"URL"in j.window&&!!j.URL.createObjectURL,En=-1!==vn.indexOf("Windows Phone"),Nn={opera:bn.isOpera(),webkit:xn,ie:!(!bn.isIE()&&!bn.isEdge())&&bn.version.major,gecko:bn.isFirefox(),mac:Cn.isOSX()||Cn.isiOS(),iOS:wn.isiPad()||wn.isiPhone(),android:Cn.isAndroid(),contentEditable:!0,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:!0,range:j.window.getSelection&&"Range"in j.window,documentMode:bn.isIE()?j.document.documentMode||7:10,fileApi:zn,ceFalse:!0,cacheSuffix:null,container:null,experimentalShadowDom:!1,canHaveCSP:!bn.isIE(),desktop:wn.isDesktop(),windowsPhone:En,browser:{current:bn.current,version:bn.version,isChrome:bn.isChrome,isEdge:bn.isEdge,isFirefox:bn.isFirefox,isIE:bn.isIE,isOpera:bn.isOpera,isSafari:bn.isSafari},os:{current:Cn.current,version:Cn.version,isAndroid:Cn.isAndroid,isFreeBSD:Cn.isFreeBSD,isiOS:Cn.isiOS,isLinux:Cn.isLinux,isOSX:Cn.isOSX,isSolaris:Cn.isSolaris,isWindows:Cn.isWindows},deviceType:{isDesktop:wn.isDesktop,isiPad:wn.isiPad,isiPhone:wn.isiPhone,isPhone:wn.isPhone,isTablet:wn.isTablet,isTouch:wn.isTouch,isWebView:wn.isWebView}},Sn=Array.isArray,kn={isArray:Sn,toArray:function(e){var t,n,r=e;if(!Sn(e))for(r=[],t=0,n=e.length;t<n;t++)r[t]=e[t];return r},each:dn,map:function(n,r){var o=[];return dn(n,function(e,t){o.push(r(e,t,n))}),o},filter:function(n,r){var o=[];return dn(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o},indexOf:function(e,t){var n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},reduce:function(e,t,n,r){var o=0;for(arguments.length<3&&(n=e[0]);o<e.length;o++)n=t.call(r,n,e[o],o);return n},findIndex:hn,find:function(e,t,n){var r=hn(e,t,n);return-1!==r?e[r]:undefined},last:function(e){return e[e.length-1]}},Tn=/^\s*|\s*$/g,An=function(e,n,r,o){o=o||this,e&&(r&&(e=e[r]),kn.each(e,function(e,t){if(!1===n.call(o,e,t,r))return!1;An(e,n,r,o)}))},Mn={trim:mn,isArray:kn.isArray,is:gn,toArray:kn.toArray,makeMap:function(e,t,n){var r;for(t=t||",","string"==typeof(e=e||[])&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n},each:kn.each,map:kn.map,grep:kn.filter,inArray:kn.indexOf,hasOwn:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},extend:function(e,t){for(var n,r,o,i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];var u,s=arguments;for(n=1,r=s.length;n<r;n++)for(o in t=s[n])t.hasOwnProperty(o)&&(u=t[o])!==undefined&&(e[o]=u);return e},create:function(e,t,n){var r,o,i,a,u,s=this,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),i=e[3].match(/(^|\.)(\w+)$/i)[2],!(o=s.createNS(e[3].replace(/\.\w+$/,""),n))[i]){if("static"===e[2])return o[i]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[i]));t[i]||(t[i]=function(){},c=1),o[i]=t[i],s.extend(o[i].prototype,t),e[5]&&(r=s.resolve(e[5]).prototype,a=e[5].match(/\.(\w+)$/i)[1],u=o[i],o[i]=c?function(){return r[a].apply(this,arguments)}:function(){return this.parent=r[a],u.apply(this,arguments)},o[i].prototype[i]=o[i],s.each(r,function(e,t){o[i].prototype[t]=r[t]}),s.each(t,function(e,t){r[t]?o[i].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==i&&(o[i].prototype[t]=e)})),s.each(t["static"],function(e,t){o[i][t]=e})}},walk:An,createNS:function(e,t){var n,r;for(t=t||j.window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||j.window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||gn(e,"array")?e:kn.map(e.split(t||","),mn)},_addCacheSuffix:function(e){var t=Nn.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}};function Rn(t){var n;return function(e){return(n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,$(!0))).hasOwnProperty(ie(e))}}function Dn(e){return xt(e)&&!Vn(e)}function _n(e){return xt(e)&&"br"===ie(e)}function Bn(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")}var On,Hn,Pn,Ln=Rn(["h1","h2","h3","h4","h5","h6"]),Vn=Rn(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),In=Rn(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),Fn=Rn(["ul","ol","dl"]),Un=Rn(["li","dd","dt"]),jn=Rn(["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param","embed","source","wbr","track"]),qn=Rn(["thead","tbody","tfoot"]),$n=Rn(["td","th"]),Wn=Rn(["pre","script","textarea","style"]),Kn=function(e,t){var n,r=t.childNodes;if(!Ge.isElement(t)||!Bn(t)){for(n=r.length-1;0<=n;n--)Kn(e,r[n]);if(!1===Ge.isDocument(t)){if(Ge.isText(t)&&0<t.nodeValue.length){var o=Mn.trim(t.nodeValue).length;if(e.isBlock(t.parentNode)||0<o)return;if(0===o&&function(e){var t=e.previousSibling&&"SPAN"===e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"===e.nextSibling.nodeName;return t&&n}(t))return}else if(Ge.isElement(t)&&(1===(r=t.childNodes).length&&Bn(r[0])&&t.parentNode.insertBefore(r[0],t),r.length||jn(yt.fromDom(t))))return;e.remove(t)}return t}},Xn={trimNode:Kn},Yn=Mn.makeMap,Gn=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Jn=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Qn=/[<>&\"\']/g,Zn=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,er={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};Hn={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},Pn={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function tr(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),Hn[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}}On=tr("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);function nr(e,t){return e.replace(t?Gn:Jn,function(e){return Hn[e]||e})}function rr(e,t){return e.replace(t?Gn:Jn,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":Hn[e]||"&#"+e.charCodeAt(0)+";"})}function or(e,t,n){return n=n||On,e.replace(t?Gn:Jn,function(e){return Hn[e]||n[e]||e})}var ir={encodeRaw:nr,encodeAllRaw:function(e){return(""+e).replace(Qn,function(e){return Hn[e]||e})},encodeNumeric:rr,encodeNamed:or,getEncodeFunc:function(e,t){var n=tr(t)||On,r=Yn(e.replace(/\+/g,","));return r.named&&r.numeric?function(e,t){return e.replace(t?Gn:Jn,function(e){return Hn[e]!==undefined?Hn[e]:n[e]!==undefined?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return or(e,t,n)}:or:r.numeric?rr:nr},decode:function(e){return e.replace(Zn,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):er[t]||String.fromCharCode(t):Pn[e]||On[e]||function(e){var t;return(t=yt.fromTag("div").dom()).innerHTML=e,t.textContent||t.innerText||e}(e)})}},ar={},ur={},sr=Mn.makeMap,cr=Mn.each,lr=Mn.extend,fr=Mn.explode,dr=Mn.inArray,hr=function(e,t){return(e=Mn.trim(e))?e.split(t||" "):[]},mr=function(e){function t(e,t,n){function r(e,t){var n,r,o={};for(n=0,r=e.length;n<r;n++)o[e[n]]=t||{};return o}var o,i,a;for(t=t||"","string"==typeof(n=n||[])&&(n=hr(n)),o=(e=hr(e)).length;o--;)a={attributes:r(i=hr([u,t].join(" "))),attributesOrder:i,children:r(n,ur)},c[e[o]]=a}function n(e,t){var n,r,o,i;for(n=(e=hr(e)).length,t=hr(t);n--;)for(r=c[e[n]],o=0,i=t.length;o<i;o++)r.attributes[t[o]]={},r.attributesOrder.push(t[o])}var u,r,o,i,a,s,c={};return ar[e]?ar[e]:(u="id accesskey class dir lang style tabindex title role",r="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",o="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!==e&&(u+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",r+=" article aside details dialog figure main header footer hgroup section nav",o+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==e&&(u+=" xml:lang",o=[o,s="acronym applet basefont big font strike tt"].join(" "),cr(hr(s),function(e){t(e,"",o)}),r=[r,a="center dir isindex noframes"].join(" "),i=[r,o].join(" "),cr(hr(a),function(e){t(e,"",i)})),i=i||[r,o].join(" "),t("html","manifest","head body"),t("head","","base command link meta noscript script style title"),t("title hr noscript br"),t("base","href target"),t("link","href rel media hreflang type sizes hreflang"),t("meta","name http-equiv content charset"),t("style","media type scoped"),t("script","src async defer type charset"),t("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",i),t("address dt dd div caption","",i),t("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",o),t("blockquote","cite",i),t("ol","reversed start type","li"),t("ul","","li"),t("li","value",i),t("dl","","dt dd"),t("a","href target rel media hreflang type",o),t("q","cite",o),t("ins del","cite datetime",i),t("img","src sizes srcset alt usemap ismap width height"),t("iframe","src name width height",i),t("embed","src type width height"),t("object","data type typemustmatch name usemap form width height",[i,"param"].join(" ")),t("param","name value"),t("map","name",[i,"area"].join(" ")),t("area","alt coords shape href target rel media hreflang type"),t("table","border","caption colgroup thead tfoot tbody tr"+("html4"===e?" col":"")),t("colgroup","span","col"),t("col","span"),t("tbody thead tfoot","","tr"),t("tr","","td th"),t("td","colspan rowspan headers",i),t("th","colspan rowspan headers scope abbr",i),t("form","accept-charset action autocomplete enctype method name novalidate target",i),t("fieldset","disabled form name",[i,"legend"].join(" ")),t("label","form for",o),t("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),t("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===e?i:o),t("select","disabled form multiple name required size","option optgroup"),t("optgroup","disabled label","option"),t("option","disabled label selected value"),t("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),t("menu","type label",[i,"li"].join(" ")),t("noscript","",i),"html4"!==e&&(t("wbr"),t("ruby","",[o,"rt rp"].join(" ")),t("figcaption","",i),t("mark rt rp summary bdi","",o),t("canvas","width height",i),t("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[i,"track source"].join(" ")),t("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[i,"track source"].join(" ")),t("picture","","img source"),t("source","src srcset type media sizes"),t("track","kind src srclang label default"),t("datalist","",[o,"option"].join(" ")),t("article section nav aside main header footer","",i),t("hgroup","","h1 h2 h3 h4 h5 h6"),t("figure","",[i,"figcaption"].join(" ")),t("time","datetime",o),t("dialog","open",i),t("command","type label icon disabled checked radiogroup command"),t("output","for form name",o),t("progress","value max",o),t("meter","value min max low high optimum",o),t("details","open",[i,"summary"].join(" ")),t("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==e&&(n("script","language xml:space"),n("style","xml:space"),n("object","declare classid code codebase codetype archive standby align border hspace vspace"),n("embed","align name hspace vspace"),n("param","valuetype type"),n("a","charset name rev shape coords"),n("br","clear"),n("applet","codebase archive code object alt name width height align hspace vspace"),n("img","name longdesc align border hspace vspace"),n("iframe","longdesc frameborder marginwidth marginheight scrolling align"),n("font basefont","size color face"),n("input","usemap align"),n("select","onchange"),n("textarea"),n("h1 h2 h3 h4 h5 h6 div p legend caption","align"),n("ul","type compact"),n("li","type"),n("ol dl menu dir","compact"),n("pre","width xml:space"),n("hr","align noshade size width"),n("isindex","prompt"),n("table","summary width frame rules cellspacing cellpadding align bgcolor"),n("col","width align char charoff valign"),n("colgroup","width align char charoff valign"),n("thead","align char charoff valign"),n("tr","align char charoff valign bgcolor"),n("th","axis align char charoff valign nowrap bgcolor width height"),n("form","accept"),n("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),n("tfoot","align char charoff valign"),n("tbody","align char charoff valign"),n("area","nohref"),n("body","background bgcolor text link vlink alink")),"html4"!==e&&(n("input button select textarea","autofocus"),n("input textarea","placeholder"),n("a","download"),n("link script img","crossorigin"),n("iframe","sandbox seamless allowfullscreen")),cr(hr("a form meter progress dfn"),function(e){c[e]&&delete c[e].children[e]}),delete c.caption.children.table,delete c.script,ar[e]=c)},gr=function(e,n){var r;return e&&(r={},"string"==typeof e&&(e={"*":e}),cr(e,function(e,t){r[t]=r[t.toUpperCase()]="map"===n?sr(e,/[, ]/):fr(e,/[, ]/)})),r};function pr(i){function e(e,t,n){var r=i[e];return r?r=sr(r,/[, ]/,sr(r.toUpperCase(),/[, ]/)):(r=ar[e])||(r=sr(t," ",sr(t.toUpperCase()," ")),r=lr(r,n),ar[e]=r),r}var t,n,r,o,a,u,s,c,l,f,d,h,m,z={},g={},E=[],p={},v={};r=mr((i=i||{}).schema),!1===i.verify_html&&(i.valid_elements="*[*]"),t=gr(i.valid_styles),n=gr(i.invalid_styles,"map"),c=gr(i.valid_classes,"map"),o=e("whitespace_elements","pre script noscript style textarea video audio iframe object code"),a=e("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),u=e("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),s=e("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),f=e("non_empty_elements","td th iframe video audio object script pre code",u),d=e("move_caret_before_on_enter_elements","table",f),h=e("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),l=e("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",h),m=e("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),cr((i.special||"script noscript noframes noembed title style textarea xmp").split(" "),function(e){v[e]=new RegExp("</"+e+"[^>]*>","gi")});function N(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function y(e){var t,n,r,o,i,a,u,s,c,l,f,d,h,m,g,p,v,y,b,C=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,w=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,x=/[*?+]/;if(e)for(e=hr(e,","),z["@"]&&(p=z["@"].attributes,v=z["@"].attributesOrder),t=0,n=e.length;t<n;t++)if(i=C.exec(e[t])){if(m=i[1],c=i[2],g=i[3],s=i[5],a={attributes:d={},attributesOrder:h=[]},"#"===m&&(a.paddEmpty=!0),"-"===m&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),p){for(y in p)d[y]=p[y];h.push.apply(h,v)}if(s)for(r=0,o=(s=hr(s,"|")).length;r<o;r++)if(i=w.exec(s[r])){if(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),m=i[3],b=i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"===f){delete d[l],h.splice(dr(h,l),1);continue}m&&("="===m&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:b}),u.defaultValue=b),":"===m&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:b}),u.forcedValue=b),"<"===m&&(u.validValues=sr(b,"?"))),x.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=N(l),a.attributePatterns.push(u)):(d[l]||h.push(l),d[l]=u)}p||"@"!==c||(p=d,v=h),g&&(a.outputName=c,z[g]=a),x.test(c)?(a.pattern=N(c),E.push(a)):z[c]=a}}function b(e){z={},E=[],y(e),cr(r,function(e,t){g[t]=e.children})}function C(e){var a=/^(~)?(.+)$/;e&&(ar.text_block_elements=ar.block_elements=null,cr(hr(e,","),function(e){var t=a.exec(e),n="~"===t[1],r=n?"span":"div",o=t[2];if(g[o]=g[r],p[o]=r,n||(l[o.toUpperCase()]={},l[o]={}),!z[o]){var i=z[r];delete(i=lr({},i)).removeEmptyAttrs,delete i.removeEmpty,z[o]=i}cr(g,function(e,t){e[r]&&(g[t]=e=lr({},g[t]),e[o]=e[r])})}))}function w(e){var o=/^([+\-]?)(\w+)\[([^\]]+)\]$/;ar[i.schema]=null,e&&cr(hr(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?g[r[2]]:g[r[2]]={"#comment":{}},t=g[r[2]],cr(hr(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})}function x(e){var t,n=z[e];if(n)return n;for(t=E.length;t--;)if((n=E[t]).pattern.test(e))return n}i.valid_elements?b(i.valid_elements):(cr(r,function(e,t){z[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},g[t]=e.children}),"html5"!==i.schema&&cr(hr("strong/b em/i"),function(e){e=hr(e,"/"),z[e[1]].outputName=e[0]}),cr(hr("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){z[e]&&(z[e].removeEmpty=!0)}),cr(hr("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){z[e].paddEmpty=!0}),cr(hr("span"),function(e){z[e].removeEmptyAttrs=!0})),C(i.custom_elements),w(i.valid_children),y(i.extended_valid_elements),w("+ol[ul|ol],+ul[ul|ol]"),cr({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){z[t]&&(z[t].parentsRequired=hr(e))}),i.invalid_elements&&cr(fr(i.invalid_elements),function(e){z[e]&&delete z[e]}),x("span")||y("span[!data-mce-type|*]");return{children:g,elements:z,getValidStyles:function(){return t},getValidClasses:function(){return c},getBlockElements:function(){return l},getInvalidStyles:function(){return n},getShortEndedElements:function(){return u},getTextBlockElements:function(){return h},getTextInlineElements:function(){return m},getBoolAttrs:function(){return s},getElementRule:x,getSelfClosingElements:function(){return a},getNonEmptyElements:function(){return f},getMoveCaretBeforeOnEnterElements:function(){return d},getWhiteSpaceElements:function(){return o},getSpecialElements:function(){return v},isValidChild:function(e,t){var n=g[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=x(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:function(){return p},addValidElements:y,setValidElements:b,addCustomElements:C,addValidChildren:w}}function vr(e,t,n,r){function o(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+o(t)+o(n)+o(r)}function yr(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function br(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function Cr(e,t){var n,r=t||{};for(n in e)Er[n]||(r[n]=e[n]);if(r.target||(r.target=r.srcElement||j.document),Nn.experimentalShadowDom&&(r.target=function(e,t){if(e.composedPath){var n=e.composedPath();if(n&&0<n.length)return n[0]}return t}(e,r.target)),e&&zr.test(e.type)&&e.pageX===undefined&&e.clientX!==undefined){var o=r.target.ownerDocument||j.document,i=o.documentElement,a=o.body;r.pageX=e.clientX+(i&&i.scrollLeft||a&&a.scrollLeft||0)-(i&&i.clientLeft||a&&a.clientLeft||0),r.pageY=e.clientY+(i&&i.scrollTop||a&&a.scrollTop||0)-(i&&i.clientTop||a&&a.clientTop||0)}return r.preventDefault=function(){r.isDefaultPrevented=Sr,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},r.stopPropagation=function(){r.isPropagationStopped=Sr,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},!(r.stopImmediatePropagation=function(){r.isImmediatePropagationStopped=Sr,r.stopPropagation()})===function(e){return e.isDefaultPrevented===Sr||e.isDefaultPrevented===Nr}(r)&&(r.isDefaultPrevented=Nr,r.isPropagationStopped=Nr,r.isImmediatePropagationStopped=Nr),"undefined"==typeof r.metaKey&&(r.metaKey=!1),r}function wr(e,t,n){var r=e.document,o={type:"ready"};if(n.domLoaded)t(o);else{var i=function(){br(e,"DOMContentLoaded",i),br(e,"load",i),n.domLoaded||(n.domLoaded=!0,t(o))};"complete"===r.readyState||"interactive"===r.readyState&&r.body?i():yr(e,"DOMContentLoaded",i),yr(e,"load",i)}}var xr=function(b,e){var C,t,c,l,w=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,x=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,z=/\s*([^:]+):\s*([^;]+);?/g,E=/\s+$/,N={},S="\ufeff";for(b=b||{},e&&(c=e.getValidStyles(),l=e.getInvalidStyles()),t=("\\\" \\' \\; \\: ; : "+S).split(" "),C=0;C<t.length;C++)N[t[C]]=S+C,N[S+C]=t[C];return{toHex:function(e){return e.replace(w,vr)},parse:function(e){function t(e,t,n){var r,o,i,a;if((r=p[e+"-top"+t])&&(o=p[e+"-right"+t])&&(i=p[e+"-bottom"+t])&&(a=p[e+"-left"+t])){var u=[r,o,i,a];for(C=u.length-1;C--&&u[C]===u[C+1];);-1<C&&n||(p[e+t]=-1===C?u[0]:u.join(" "),delete p[e+"-top"+t],delete p[e+"-right"+t],delete p[e+"-bottom"+t],delete p[e+"-left"+t])}}function n(e){var t,n=p[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return!1;return p[e]=n[0],!0}}function r(e){return f=!0,N[e]}function u(e,t){return f&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return N[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function o(e){return String.fromCharCode(parseInt(e.slice(1),16))}function i(e){return e.replace(/\\[0-9a-f]+/gi,o)}function a(e,t,n,r,o,i){if(o=o||i)return"'"+(o=u(o)).replace(/\'/g,"\\'")+"'";if(t=u(t||n||r),!b.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!b.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return v&&(t=v.call(y,t,"style")),"url('"+t.replace(/\'/g,"\\'")+"')"}var s,c,l,f,d,h,m,g,p={},v=b.url_converter,y=b.url_converter_scope||this;if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,r).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,r)});s=z.exec(e);)if(z.lastIndex=s.index+s[0].length,c=s[1].replace(E,"").toLowerCase(),l=s[2].replace(E,""),c&&l){if(c=i(c),l=i(l),-1!==c.indexOf(S)||-1!==c.indexOf('"'))continue;if(!b.allow_script_urls&&("behavior"===c||/expression\s*\(|\/\*|\*\//.test(l)))continue;"font-weight"===c&&"700"===l?l="bold":"color"!==c&&"background-color"!==c||(l=l.toLowerCase()),l=(l=l.replace(w,vr)).replace(x,a),p[c]=f?u(l,!0):l}t("border","",!0),t("border","-width"),t("border","-color"),t("border","-style"),t("padding",""),t("margin",""),d="border",m="border-style",g="border-color",n(h="border-width")&&n(m)&&n(g)&&(p[d]=p[h]+" "+p[m]+" "+p[g],delete p[h],delete p[m],delete p[g]),"medium none"===p.border&&delete p.border,"none"===p["border-image"]&&delete p["border-image"]}return p},serialize:function(i,e){function t(e){var t,n,r,o;if(t=c[e])for(n=0,r=t.length;n<r;n++)e=t[n],(o=i[e])&&(s+=(0<s.length?" ":"")+e+": "+o+";")}var n,r,o,a,u,s="";if(e&&c)t("*"),t(e);else for(n in i)!(r=i[n])||l&&(o=n,a=e,u=void 0,(u=l["*"])&&u[o]||(u=l[a])&&u[o])||(s+=(0<s.length?" ":"")+n+": "+r+";");return s}}},zr=/^(?:mouse|contextmenu)|click/,Er={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1,mozPressure:1},Nr=function(){return!1},Sr=function(){return!0},kr=(Tr.prototype.bind=function(e,t,n,r){function o(e){d.executeHandlers(Cr(e||h.event),i)}var i,a,u,s,c,l,f,d=this,h=j.window;if(e&&3!==e.nodeType&&8!==e.nodeType){e[d.expando]?i=e[d.expando]:(i=d.count++,e[d.expando]=i,d.events[i]={}),r=r||e;var m=t.split(" ");for(u=m.length;u--;)l=o,c=f=!1,"DOMContentLoaded"===(s=m[u])&&(s="ready"),d.domLoaded&&"ready"===s&&"complete"===e.readyState?n.call(r,Cr({type:s})):(d.hasMouseEnterLeave||(c=d.mouseEnterLeave[s])&&(l=function(e){var t,n;if(t=e.currentTarget,(n=e.relatedTarget)&&t.contains)n=t.contains(n);else for(;n&&n!==t;)n=n.parentNode;n||((e=Cr(e||h.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,d.executeHandlers(e,i))}),d.hasFocusIn||"focusin"!==s&&"focusout"!==s||(f=!0,c="focusin"===s?"focus":"blur",l=function(e){(e=Cr(e||h.event)).type="focus"===e.type?"focusin":"focusout",d.executeHandlers(e,i)}),(a=d.events[i][s])?"ready"===s&&d.domLoaded?n(Cr({type:s})):a.push({func:n,scope:r}):(d.events[i][s]=a=[{func:n,scope:r}],a.fakeName=c,a.capture=f,a.nativeHandler=l,"ready"===s?wr(e,l,d):yr(e,c||s,l,f)));return e=a=0,n}},Tr.prototype.unbind=function(e,t,n){var r,o,i,a,u,s;if(!e||3===e.nodeType||8===e.nodeType)return this;if(r=e[this.expando]){if(s=this.events[r],t){var c=t.split(" ");for(i=c.length;i--;)if(o=s[u=c[i]]){if(n)for(a=o.length;a--;)if(o[a].func===n){var l=o.nativeHandler,f=o.fakeName,d=o.capture;(o=o.slice(0,a).concat(o.slice(a+1))).nativeHandler=l,o.fakeName=f,o.capture=d,s[u]=o}n&&0!==o.length||(delete s[u],br(e,o.fakeName||u,o.nativeHandler,o.capture))}}else{for(u in s)o=s[u],br(e,o.fakeName||u,o.nativeHandler,o.capture);s={}}for(u in s)return this;delete this.events[r];try{delete e[this.expando]}catch(h){e[this.expando]=null}}return this},Tr.prototype.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return this;var o=Cr(null,n);for(o.type=t,o.target=e;(r=e[this.expando])&&this.executeHandlers(o,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!o.isPropagationStopped(););return this},Tr.prototype.clean=function(e){var t,n;if(!e||3===e.nodeType||8===e.nodeType)return this;if(e[this.expando]&&this.unbind(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(this.unbind(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[this.expando]&&this.unbind(e);return this},Tr.prototype.destroy=function(){this.events={}},Tr.prototype.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1},Tr.prototype.executeHandlers=function(e,t){var n,r,o,i,a=this.events[t];if(n=a&&a[e.type])for(r=0,o=n.length;r<o;r++)if((i=n[r])&&!1===i.func.call(i.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return},Tr.Event=new Tr,Tr);function Tr(){this.domLoaded=!1,this.events={},this.count=1,this.expando="mce-data-"+(+new Date).toString(32),this.hasMouseEnterLeave="onmouseenter"in j.document.documentElement,this.hasFocusIn="onfocusin"in j.document.documentElement,this.count=1}function Ar(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)}var Mr,Rr,Dr,_r,Br,Or,Hr,Pr,Lr,Vr,Ir,Fr,Ur,jr,qr,$r,Wr,Kr,Xr="sizzle"+-new Date,Yr=j.window.document,Gr=0,Jr=0,Qr=Mo(),Zr=Mo(),eo=Mo(),to=function(e,t){return e===t&&(Ir=!0),0},no=typeof undefined,ro={}.hasOwnProperty,oo=[],io=oo.pop,ao=oo.push,uo=oo.push,so=oo.slice,co=oo.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},lo="[\\x20\\t\\r\\n\\f]",fo="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ho="\\["+lo+"*("+fo+")(?:"+lo+"*([*^$|!~]?=)"+lo+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+fo+"))|)"+lo+"*\\]",mo=":("+fo+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ho+")*)|.*)\\)|)",go=new RegExp("^"+lo+"+|((?:^|[^\\\\])(?:\\\\.)*)"+lo+"+$","g"),po=new RegExp("^"+lo+"*,"+lo+"*"),vo=new RegExp("^"+lo+"*([>+~]|"+lo+")"+lo+"*"),yo=new RegExp("="+lo+"*([^\\]'\"]*?)"+lo+"*\\]","g"),bo=new RegExp(mo),Co=new RegExp("^"+fo+"$"),wo={ID:new RegExp("^#("+fo+")"),CLASS:new RegExp("^\\.("+fo+")"),TAG:new RegExp("^("+fo+"|[*])"),ATTR:new RegExp("^"+ho),PSEUDO:new RegExp("^"+mo),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+lo+"*(even|odd|(([+-]|)(\\d*)n|)"+lo+"*(?:([+-]|)"+lo+"*(\\d+)|))"+lo+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+lo+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+lo+"*((?:-\\d)?\\d*)"+lo+"*\\)|)(?=[^-]|$)","i")},xo=/^(?:input|select|textarea|button)$/i,zo=/^h\d$/i,Eo=/^[^{]+\{\s*\[native \w/,No=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,So=/[+~]/,ko=/'|\\/g,To=new RegExp("\\\\([\\da-f]{1,6}"+lo+"?|("+lo+")|.)","ig");try{uo.apply(oo=so.call(Yr.childNodes),Yr.childNodes),oo[Yr.childNodes.length].nodeType}catch(yN){uo={apply:oo.length?function(e,t){ao.apply(e,so.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var Ao=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,h;if((t?t.ownerDocument||t:Yr)!==Ur&&Fr(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Ur).nodeType)&&9!==u)return[];if(qr&&!r){if(o=No.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&Kr(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return uo.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&Rr.getElementsByClassName)return uo.apply(n,t.getElementsByClassName(a)),n}if(Rr.qsa&&(!$r||!$r.test(e))){if(f=l=Xr,d=t,h=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=Or(e),(l=t.getAttribute("id"))?f=l.replace(ko,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+Lo(c[s]);d=So.test(e)&&Ho(t.parentNode)||t,h=c.join(",")}if(h)try{return uo.apply(n,d.querySelectorAll(h)),n}catch(m){}finally{l||t.removeAttribute("id")}}}return Pr(e.replace(go,"$1"),t,n,r)};function Mo(){var n=[];return function r(e,t){return n.push(e+" ")>Dr.cacheLength&&delete r[n.shift()],r[e+" "]=t}}function Ro(e){return e[Xr]=!0,e}function Do(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function _o(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function Bo(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function Oo(a){return Ro(function(i){return i=+i,Ro(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Ho(e){return e&&typeof e.getElementsByTagName!=no&&e}for(Mr in Rr=Ao.support={},Br=Ao.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},Fr=Ao.setDocument=function(e){var t,s=e?e.ownerDocument||e:Yr,n=s.defaultView;return s!==Ur&&9===s.nodeType&&s.documentElement?(jr=(Ur=s).documentElement,qr=!Br(s),n&&n!==function r(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){Fr()},!1):n.attachEvent&&n.attachEvent("onunload",function(){Fr()})),Rr.attributes=!0,Rr.getElementsByTagName=!0,Rr.getElementsByClassName=Eo.test(s.getElementsByClassName),Rr.getById=!0,Dr.find.ID=function(e,t){if(typeof t.getElementById!=no&&qr){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},Dr.filter.ID=function(e){var t=e.replace(To,Ar);return function(e){return e.getAttribute("id")===t}},Dr.find.TAG=Rr.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!=no)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"!==e)return i;for(;n=i[o++];)1===n.nodeType&&r.push(n);return r},Dr.find.CLASS=Rr.getElementsByClassName&&function(e,t){if(qr)return t.getElementsByClassName(e)},Wr=[],$r=[],Rr.disconnectedMatch=!0,$r=$r.length&&new RegExp($r.join("|")),Wr=Wr.length&&new RegExp(Wr.join("|")),t=Eo.test(jr.compareDocumentPosition),Kr=t||Eo.test(jr.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},to=t?function(e,t){if(e===t)return Ir=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!Rr.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===Yr&&Kr(Yr,e)?-1:t===s||t.ownerDocument===Yr&&Kr(Yr,t)?1:Vr?co.call(Vr,e)-co.call(Vr,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Ir=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Vr?co.call(Vr,e)-co.call(Vr,t):0;if(o===i)return Do(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?Do(a[r],u[r]):a[r]===Yr?-1:u[r]===Yr?1:0},s):Ur},Ao.matches=function(e,t){return Ao(e,null,null,t)},Ao.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Ur&&Fr(e),t=t.replace(yo,"='$1']"),Rr.matchesSelector&&qr&&(!Wr||!Wr.test(t))&&(!$r||!$r.test(t)))try{var n=(void 0).call(e,t);if(n||Rr.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(yN){}return 0<Ao(t,Ur,null,[e]).length},Ao.contains=function(e,t){return(e.ownerDocument||e)!==Ur&&Fr(e),Kr(e,t)},Ao.attr=function(e,t){(e.ownerDocument||e)!==Ur&&Fr(e);var n=Dr.attrHandle[t.toLowerCase()],r=n&&ro.call(Dr.attrHandle,t.toLowerCase())?n(e,t,!qr):undefined;return r!==undefined?r:Rr.attributes||!qr?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},Ao.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},Ao.uniqueSort=function(e){var t,n=[],r=0,o=0;if(Ir=!Rr.detectDuplicates,Vr=!Rr.sortStable&&e.slice(0),e.sort(to),Ir){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Vr=null,e},_r=Ao.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=_r(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=_r(t);return n},(Dr=Ao.selectors={cacheLength:50,createPseudo:Ro,match:wo,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(To,Ar),e[3]=(e[3]||e[4]||e[5]||"").replace(To,Ar),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||Ao.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&Ao.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return wo.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&bo.test(n)&&(t=Or(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(To,Ar).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Qr[e+" "];return t||(t=new RegExp("(^|"+lo+")"+e+"("+lo+"|$)"))&&Qr(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!=no&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=Ao.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(h,e,t,m,g){var p="nth"!==h.slice(0,3),v="last"!==h.slice(-4),y="of-type"===e;return 1===m&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=p!=v?"nextSibling":"previousSibling",l=e.parentNode,f=y&&e.nodeName.toLowerCase(),d=!n&&!y;if(l){if(p){for(;c;){for(i=e;i=i[c];)if(y?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===h&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[Xr]||(l[Xr]={}))[h]||[])[0]===Gr&&r[1],a=r[0]===Gr&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[h]=[Gr,u,a];break}}else if(d&&(r=(e[Xr]||(e[Xr]={}))[h])&&r[0]===Gr)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((y?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[Xr]||(i[Xr]={}))[h]=[Gr,a]),i!==e)););return(a-=g)===m||a%m==0&&0<=a/m}}},PSEUDO:function(e,i){var t,a=Dr.pseudos[e]||Dr.setFilters[e.toLowerCase()]||Ao.error("unsupported pseudo: "+e);return a[Xr]?a(i):1<a.length?(t=[e,e,"",i],Dr.setFilters.hasOwnProperty(e.toLowerCase())?Ro(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=co.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:Ro(function(e){var r=[],o=[],u=Hr(e.replace(go,"$1"));return u[Xr]?Ro(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),!o.pop()}}),has:Ro(function(t){return function(e){return 0<Ao(t,e).length}}),contains:Ro(function(t){return t=t.replace(To,Ar),function(e){return-1<(e.textContent||e.innerText||_r(e)).indexOf(t)}}),lang:Ro(function(n){return Co.test(n||"")||Ao.error("unsupported lang: "+n),n=n.replace(To,Ar).toLowerCase(),function(e){var t;do{if(t=qr?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=j.window.location&&j.window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===jr},focus:function(e){return e===Ur.activeElement&&(!Ur.hasFocus||Ur.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!Dr.pseudos.empty(e)},header:function(e){return zo.test(e.nodeName)},input:function(e){return xo.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:Oo(function(){return[0]}),last:Oo(function(e,t){return[t-1]}),eq:Oo(function(e,t,n){return[n<0?n+t:n]}),even:Oo(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:Oo(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:Oo(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:Oo(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=Dr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Dr.pseudos[Mr]=_o(Mr);for(Mr in{submit:!0,reset:!0})Dr.pseudos[Mr]=Bo(Mr);function Po(){}function Lo(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function Vo(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=Jr++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[Gr,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||s){if((r=(o=e[Xr]||(e[Xr]={}))[u])&&r[0]===Gr&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function Io(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function Fo(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function Uo(m,g,p,v,y,e){return v&&!v[Xr]&&(v=Uo(v)),y&&!y[Xr]&&(y=Uo(y,e)),Ro(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function h(e,t,n){for(var r=0,o=t.length;r<o;r++)Ao(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:Fo(l,u,m,n,r),d=p?y||(e?m:c||v)?[]:t:f;if(p&&p(f,d,n,r),v)for(o=Fo(d,s),v(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(y||m){if(y){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);y(null,d=[],o,r)}for(i=d.length;i--;)(a=d[i])&&-1<(o=y?co.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=Fo(d===t?d.splice(c,d.length):d),y?y(null,t,d,r):uo.apply(t,d)})}function jo(e){for(var r,t,n,o=e.length,i=Dr.relative[e[0].type],a=i||Dr.relative[" "],u=i?1:0,s=Vo(function(e){return e===r},a,!0),c=Vo(function(e){return-1<co.call(r,e)},a,!0),l=[function(e,t,n){return!i&&(n||t!==Lr)||((r=t).nodeType?s(e,t,n):c(e,t,n))}];u<o;u++)if(t=Dr.relative[e[u].type])l=[Vo(Io(l),t)];else{if((t=Dr.filter[e[u].type].apply(null,e[u].matches))[Xr]){for(n=++u;n<o&&!Dr.relative[e[n].type];n++);return Uo(1<u&&Io(l),1<u&&Lo(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(go,"$1"),t,u<n&&jo(e.slice(u,n)),n<o&&jo(e=e.slice(n)),n<o&&Lo(e))}l.push(t)}return Io(l)}Po.prototype=Dr.filters=Dr.pseudos,Dr.setFilters=new Po,Or=Ao.tokenize=function(e,t){var n,r,o,i,a,u,s,c=Zr[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],s=Dr.preFilter;a;){for(i in n&&!(r=po.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=vo.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(go," ")}),a=a.slice(n.length)),Dr.filter)Dr.filter.hasOwnProperty(i)&&(!(r=wo[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length)));if(!n)break}return t?a.length:a?Ao.error(e):Zr(e,u).slice(0)},Hr=Ao.compile=function(e,t){var n,r=[],o=[],i=eo[e+" "];if(!i){for(n=(t=t||Or(e)).length;n--;)(i=jo(t[n]))[Xr]?r.push(i):o.push(i);(i=eo(e,function a(p,v){function e(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=Lr,h=e||b&&Dr.find.TAG("*",o),m=Gr+=null==d?1:Math.random()||.1,g=h.length;for(o&&(Lr=t!==Ur&&t);c!==g&&null!=(i=h[c]);c++){if(b&&i){for(a=0;u=p[a++];)if(u(i,t,n)){r.push(i);break}o&&(Gr=m)}y&&((i=!u&&i)&&s--,e&&l.push(i))}if(s+=c,y&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=io.call(r));f=Fo(f)}uo.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&Ao.uniqueSort(r)}return o&&(Gr=m,Lr=d),l}var y=0<v.length,b=0<p.length;return y?Ro(e):e}(o,r))).selector=e}return i},Pr=Ao.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&Or(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&Rr.getById&&9===t.nodeType&&qr&&Dr.relative[i[1].type]){if(!(t=(Dr.find.ID(a.matches[0].replace(To,Ar),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=wo.needsContext.test(e)?0:i.length;o--&&(a=i[o],!Dr.relative[u=a.type]);)if((s=Dr.find[u])&&(r=s(a.matches[0].replace(To,Ar),So.test(i[0].type)&&Ho(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&Lo(i)))return uo.apply(n,r),n;break}}return(c||Hr(e,l))(r,t,!qr,n,So.test(e)&&Ho(t.parentNode)||t),n},Rr.sortStable=Xr.split("").sort(to).join("")===Xr,Rr.detectDuplicates=!!Ir,Fr(),Rr.sortDetached=!0;function qo(e){return void 0!==e}function $o(e){return"string"==typeof e}function Wo(e,t){var n,r,o;for(o=(t=t||Zo).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n}function Ko(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function Xo(e,t,n){var r,o;return t=vi(t)[0],e.each(function(){n&&r===this.parentNode||(r=this.parentNode,o=t.cloneNode(!1),this.parentNode.insertBefore(o,this)),o.appendChild(this)}),e}function Yo(e,t){return new vi.fn.init(e,t)}function Go(e){return null===e||e===undefined?"":(""+e).replace(di,"")}function Jo(e,t){var n,r,o,i;if(e)if((n=e.length)===undefined){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e}function Qo(e,n){var r=[];return Jo(e,function(e,t){n(t,e)&&r.push(t)}),r}var Zo=j.document,ei=Array.prototype.push,ti=Array.prototype.slice,ni=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,ri=kr.Event,oi=Mn.makeMap("children,contents,next,prev"),ii=function(e,t,n,r){var o;if($o(t))t=Wo(t,hi(e[0]));else if(t.length&&!t.nodeType){if(t=vi.makeArray(t),r)for(o=t.length-1;0<=o;o--)ii(e,t[o],n,r);else for(o=0;o<t.length;o++)ii(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},ai=Mn.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),ui=Mn.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),si={"for":"htmlFor","class":"className",readonly:"readOnly"},ci={"float":"cssFloat"},li={},fi={},di=/^\s*|\s*$/g,hi=function(e){return e?9===e.nodeType?e:e.ownerDocument:Zo};Yo.fn=Yo.prototype={constructor:Yo,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return vi(e).attr(t);o.context=t=j.document}if($o(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:ni.exec(e)))return vi(t).find(e);if(n[1])for(r=Wo(e,hi(t)).firstChild;r;)ei.call(o,r),r=r.nextSibling;else{if(!(r=hi(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Mn.toArray(this)},add:function(e,t){var n,r;if($o(e))return this.add(vi(e));if(!1!==t)for(n=vi.unique(this.toArray().concat(vi.makeArray(e))),this.length=n.length,r=0;r<n.length;r++)this[r]=n[r];else ei.apply(this,vi.makeArray(e));return this},attr:function(t,n){var e,r=this;if("object"==typeof t)Jo(t,function(e,t){r.attr(e,t)});else{if(!qo(n)){if(r[0]&&1===r[0].nodeType){if((e=li[t])&&e.get)return e.get(r[0],t);if(ui[t])return r.prop(t)?t:undefined;null===(n=r[0].getAttribute(t,2))&&(n=undefined)}return n}this.each(function(){var e;if(1===this.nodeType){if((e=li[t])&&e.set)return void e.set(this,n);null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2)}})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeof(e=si[e]||e))Jo(e,function(e,t){n.prop(e,t)});else{if(!qo(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1===this.nodeType&&(this[e]=t)})}return n},css:function(n,r){function e(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function o(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var t,i,a=this;if("object"==typeof n)Jo(n,function(e,t){a.css(e,t)});else if(qo(r))n=e(n),"number"!=typeof r||ai[n]||(r=r.toString()+"px"),a.each(function(){var e=this.style;if((i=fi[n])&&i.set)i.set(this,r);else{try{this.style[ci[n]||n]=r}catch(t){}null!==r&&""!==r||(e.removeProperty?e.removeProperty(o(n)):e.removeAttribute(n))}});else{if(t=a[0],(i=fi[n])&&i.get)return i.get(t);if(!t.ownerDocument.defaultView)return t.currentStyle?t.currentStyle[e(n)]:"";try{return t.ownerDocument.defaultView.getComputedStyle(t,null).getPropertyValue(o(n))}catch(u){return undefined}}return a},remove:function(){for(var e,t=this.length;t--;)e=this[t],ri.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(e){var t,n=this;if(qo(e)){t=n.length;try{for(;t--;)n[t].innerHTML=e}catch(r){vi(n[t]).empty().append(e)}return n}return n[0]?n[0].innerHTML:""},text:function(e){var t;if(qo(e)){for(t=this.length;t--;)"innerText"in this[t]?this[t].innerText=e:this[0].textContent=e;return this}return this[0]?this[0].innerText||this[0].textContent:""},append:function(){return ii(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return ii(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&&this[0].parentNode?ii(this,arguments,function(e){this.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?ii(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return vi(e).append(this),this},prependTo:function(e){return vi(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return Xo(this,e)},wrapAll:function(e){return Xo(this,e,!0)},wrapInner:function(e){return this.each(function(){vi(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){vi(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),vi(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?Jo(o.split(" "),function(){e.toggleClass(this,i)}):e.each(function(e,t){var n,r;(r=Ko(t,o))!==i&&(n=t.className,r?t.className=Go((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return Ko(this[0],e)},each:function(e){return Jo(this,e)},on:function(e,t){return this.each(function(){ri.bind(this,e,t)})},off:function(e,t){return this.each(function(){ri.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?ri.fire(this,e.type,e):ri.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new vi(ti.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;t<n;t++)vi.find(e,this[t],r);return vi(r)},filter:function(n){return vi("function"==typeof n?Qo(this.toArray(),function(e,t){return n(t,e)}):vi.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof vi&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&vi(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),vi(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:ei,sort:Array.prototype.sort,splice:Array.prototype.splice},Mn.extend(Yo,{extend:Mn.extend,makeArray:function(e){return function(e){return e&&e===e.window}(e)||e.nodeType?[e]:Mn.toArray(e)},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:Mn.isArray,each:Jo,trim:Go,grep:Qo,find:Ao,expr:Ao.selectors,unique:Ao.uniqueSort,text:Ao.getText,contains:Ao.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!==t[r].nodeType&&t.splice(r,1);return t=1===t.length?vi.find.matchesSelector(t[0],e)?[t[0]]:[]:vi.find.matches(e,t)}});function mi(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof vi&&(n=n[0]);o&&9!==o.nodeType;){if(n!==undefined){if(o===n)break;if("string"==typeof n&&vi(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r}function gi(e,t,n,r){var o=[];for(r instanceof vi&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(r!==undefined){if(e===r)break;if("string"==typeof r&&vi(e).is(r))break}o.push(e)}return o}function pi(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null}Jo({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return mi(e,"parentNode")},next:function(e){return pi(e,"nextSibling",1)},prev:function(e){return pi(e,"previousSibling",1)},children:function(e){return gi(e.firstChild,"nextSibling",1)},contents:function(e){return Mn.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(r,o){Yo.fn[r]=function(t){var n=[];this.each(function(){var e=o.call(n,this,t,n);e&&(vi.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(oi[r]||(n=vi.unique(n)),0===r.indexOf("parents")&&(n=n.reverse()));var e=vi(n);return t?e.filter(t):e}}),Jo({parentsUntil:function(e,t){return mi(e,"parentNode",t)},nextUntil:function(e,t){return gi(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return gi(e,"previousSibling",1,t).slice(1)}},function(o,i){Yo.fn[o]=function(t,e){var n=[];this.each(function(){var e=i.call(n,this,t,n);e&&(vi.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(n=vi.unique(n),0!==o.indexOf("parents")&&"prevUntil"!==o||(n=n.reverse()));var r=vi(n);return e?r.filter(e):r}}),Yo.fn.is=function(e){return!!e&&0<this.filter(e).length},Yo.fn.init.prototype=Yo.fn,Yo.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t=t||r.context,new o.fn.init(e,t)};return vi.extend(o,this),o},Yo.attrHooks=li,Yo.cssHooks=fi;var vi=Yo,yi=(bi.prototype.current=function(){return this.node},bi.prototype.next=function(e){return this.node=this.findSibling(this.node,"firstChild","nextSibling",e),this.node},bi.prototype.prev=function(e){return this.node=this.findSibling(this.node,"lastChild","previousSibling",e),this.node},bi.prototype.prev2=function(e){return this.node=this.findPreviousNode(this.node,"lastChild","previousSibling",e),this.node},bi.prototype.findSibling=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==this.rootNode){if(o=e[n])return o;for(i=e.parentNode;i&&i!==this.rootNode;i=i.parentNode)if(o=i[n])return o}}},bi.prototype.findPreviousNode=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],this.rootNode&&o===this.rootNode)return;if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==this.rootNode)return i}},bi);function bi(e,t){this.node=e,this.rootNode=t,this.current=this.current.bind(this),this.next=this.next.bind(this),this.prev=this.prev.bind(this),this.prev2=this.prev2.bind(this)}function Ci(t,n){Se(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})}function wi(e,t){Te(e).fold(function(){Se(e).each(function(e){Di(e,t)})},function(e){Ci(e,t)})}function xi(t,n){_e(t).fold(function(){Di(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})}function zi(t,e){z(e,function(e){Di(t,e)})}function Ei(e){e.dom().textContent="",z(Re(e),function(e){_i(e)})}function Ni(e){var t=Re(e);0<t.length&&function(t,e){z(e,function(e){Ci(t,e)})}(e,t),_i(e)}function Si(e,t){return e!==undefined?e:t!==undefined?t:0}function ki(e){var t=e!==undefined?e.dom():j.document,n=t.body.scrollLeft||t.documentElement.scrollLeft,r=t.body.scrollTop||t.documentElement.scrollTop;return Oi(n,r)}function Ti(e,t,n){(n!==undefined?n.dom():j.document).defaultView.scrollTo(e,t)}function Ai(e,t){Pi&&D(e.dom().scrollIntoViewIfNeeded)?e.dom().scrollIntoViewIfNeeded(!1):e.dom().scrollIntoView(t)}function Mi(e,t,n,r){return{x:$(e),y:$(t),width:$(n),height:$(r),right:$(e+n),bottom:$(t+r)}}var Ri,Di=function(e,t){e.dom().appendChild(t.dom())},_i=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},Bi=function(n,r){return{left:$(n),top:$(r),translate:function(e,t){return Bi(n+e,r+t)}}},Oi=Bi,Hi=function(e){var t=e.dom(),n=t.ownerDocument.body;return n===t?Oi(n.offsetLeft,n.offsetTop):de(e)?function(e){var t=e.getBoundingClientRect();return Oi(t.left,t.top)}(t):Oi(0,0)},Pi=oe().browser.isSafari(),Li=function(e){var t=e===undefined?j.window:e,n=t.document,r=ki(yt.fromDom(n)),o=t.visualViewport;if(o!==undefined)return Mi(Math.max(o.pageLeft,r.left()),Math.max(o.pageTop,r.top()),o.width,o.height);var i=n.documentElement,a=i.clientWidth,u=i.clientHeight;return Mi(r.left(),r.top(),a,u)},Vi=Mn.each,Ii=Mn.grep,Fi=Nn.ie,Ui=/^([a-z0-9],?)+$/i,ji=/^[ \t\r\n]*$/,qi=function(n,r,o){var i=r.keep_values,e={set:function(e,t,n){r.url_converter&&(t=r.url_converter.call(r.url_converter_scope||o(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},t={style:{set:function(e,t){null===t||"object"!=typeof t?(i&&e.attr("data-mce-style",t),e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return t=n.serialize(n.parse(t),e[0].nodeName)}}};return i&&(t.href=t.src=e),t},$i=function(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName);r=r||null,t.attr("data-mce-style",r)},Wi=function(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o};function Ki(a,u){var s,c=this;void 0===u&&(u={});function l(e){if(e&&a&&"string"==typeof e){var t=a.getElementById(e);return t&&t.id!==e?a.getElementsByName(e)[1]:t}return e}function f(e){return"string"==typeof e&&(e=l(e)),H(e)}function r(e,t,n){var r,o,i=f(e);return i.length&&(o=(r=s[t])&&r.get?r.get(i,t):i.attr(t)),void 0===o&&(o=n||""),o}function d(e){var t=l(e);return t?t.attributes:[]}function o(e,t,n){var r,o;""===n&&(n=null);var i=f(e);r=i.attr(t),i.length&&((o=s[t])&&o.set?o.set(i,n,t):i.attr(t,n),r!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:i,attrName:t,attrValue:n}))}function h(){return u.root_element||a.body}function i(e,t){return Ht.getPos(a.body,l(e),t)}function m(e,t,n){var r=f(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=Nn.browser.isIE()?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:undefined)}function g(e){var t,n;return e=l(e),t=m(e,"width"),n=m(e,"height"),-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px")&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}}function p(e,t){var n;if(!e)return!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(Ui.test(t)){var r=t.toLowerCase().split(/,/),o=e.nodeName.toLowerCase();for(n=r.length-1;0<=n;n--)if(r[n]===o)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<Ao(t,i[0].ownerDocument||i[0],null,i).length}function v(e,t,n,r){var o,i=[],a=l(e);for(r=r===undefined,n=n||("BODY"!==h().nodeName?h().parentNode:null),Mn.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return p(e,o)});a&&a!==n&&a.nodeType&&9!==a.nodeType;){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null}function n(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){return p(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null}function y(e,n,r){var o,t="string"==typeof e?l(e):e;if(!t)return!1;if(Mn.isArray(t)&&(t.length||0===t.length))return o=[],Vi(t,function(e,t){e&&("string"==typeof e&&(e=l(e)),o.push(n.call(r,e,t)))}),o;var i=r||c;return n.call(i,t)}function b(e,t){f(e).each(function(e,n){Vi(t,function(e,t){o(n,t,e)})})}function C(e,r){var t=f(e);Fi?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+r,t.removeChild(t.firstChild)}catch(n){vi("<div></div>").html("<br>"+r).contents().slice(1).appendTo(t)}return r}}):t.html(r)}function w(e,n,r,o,i){return y(e,function(e){var t="string"==typeof n?a.createElement(n):n;return b(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&C(t,o)),i?t:e.appendChild(t)})}function x(e,t,n){return w(a.createElement(e),e,t,n,!0)}function z(e,t){var n=f(e);return t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():n.remove(),1<n.length?n.toArray():n[0]}function E(e,t,n){f(e).toggleClass(t,n).each(function(){""===this.className&&vi(this).attr("class",null)})}function N(t,e,n){return y(e,function(e){return Mn.is(e,"array")&&(t=t.cloneNode(!0)),n&&Vi(Ii(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})}function S(){return a.createRange()}function k(e){if(e&&Ge.isElement(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null}var T={},A=j.window,M={},t=0,e=function U(m,g){void 0===g&&(g={});var p,v=0,y={};function b(e){m.getElementsByTagName("head")[0].appendChild(e)}function n(e,t,n){function r(e){l.status=e,l.passed=[],l.failed=[],u&&(u.onload=null,u.onerror=null,u=null)}function o(){for(var e=l.passed,t=e.length;t--;)e[t]();r(2)}function i(){for(var e=l.failed,t=e.length;t--;)e[t]();r(3)}function a(e,t){e()||((new Date).getTime()-c<p?pn.setTimeout(t):i())}var u,s,c,l,f=function(){a(function(){for(var e,t,n=m.styleSheets,r=n.length;r--;)if((t=(e=n[r]).ownerNode?e.ownerNode:e.owningElement)&&t.id===u.id)return o(),!0},f)},d=function(){a(function(){try{var e=s.sheet.cssRules;return o(),!!e}catch(t){}},d)};if(e=Mn._addCacheSuffix(e),y[e]?l=y[e]:(l={passed:[],failed:[]},y[e]=l),t&&l.passed.push(t),n&&l.failed.push(n),1!==l.status)if(2!==l.status)if(3!==l.status){if(l.status=1,(u=m.createElement("link")).rel="stylesheet",u.type="text/css",u.id="u"+v++,u.async=!1,u.defer=!1,c=(new Date).getTime(),g.contentCssCors&&(u.crossOrigin="anonymous"),g.referrerPolicy&&Tt(yt.fromDom(u),"referrerpolicy",g.referrerPolicy),"onload"in u&&!((h=j.navigator.userAgent.match(/WebKit\/(\d*)/))&&parseInt(h[1],10)<536))u.onload=f,u.onerror=i;else{if(0<j.navigator.userAgent.indexOf("Firefox"))return(s=m.createElement("style")).textContent='@import "'+e+'"',d(),void b(s);f()}var h;b(u),u.href=e}else i();else o()}function t(t){return Xt.nu(function(e){n(t,q(e,$(Qt.value(t))),q(e,$(Qt.error(t))))})}function o(e){return e.fold(W,W)}return p=g.maxLoadTime||5e3,{load:n,loadAll:function(e,n,r){Yt(X(e,t)).get(function(e){var t=Y(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(o)):n(t.pass.map(o))})},_setReferrerPolicy:function(e){g.referrerPolicy=e}}}(a,{contentCssCors:u.contentCssCors,referrerPolicy:u.referrerPolicy}),R=[],D=u.schema?u.schema:pr({}),_=xr({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),B=u.ownEvents?new kr:kr.Event,O=D.getBlockElements(),H=vi.overrideDefaults(function(){return{context:a,element:F.getRoot()}}),P=ir.decode,L=ir.encodeAllRaw,V=function(e,t,n,r){if(Mn.isArray(e)){for(var o=e.length,i=[];o--;)i[o]=V(e[o],t,n,r);return i}return!u.collect||e!==a&&e!==A||R.push([e,t,n,r]),B.bind(e,t,n,r||F)},I=function(e,t,n){var r;if(Mn.isArray(e)){r=e.length;for(var o=[];r--;)o[r]=I(e[r],t,n);return o}if(R&&(e===a||e===A))for(r=R.length;r--;){var i=R[r];e!==i[0]||t&&t!==i[1]||n&&n!==i[2]||B.unbind(i[0],i[1],i[2])}return B.unbind(e,t,n)},F={doc:a,settings:u,win:A,files:M,stdMode:!0,boxModel:!0,styleSheetLoader:e,boundEvents:R,styles:_,schema:D,events:B,isBlock:function(e){if("string"==typeof e)return!!O[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!O[e.nodeName])}return!1},$:H,$$:f,root:null,clone:function(t,e){if(!Fi||1!==t.nodeType||e)return t.cloneNode(e);if(e)return null;var n=a.createElement(t.nodeName);return Vi(d(t),function(e){o(n,e.nodeName,r(t,e.nodeName))}),n},getRoot:h,getViewPort:function(e){var t=Li(e);return{x:t.x(),y:t.y(),w:t.width(),h:t.height()}},getRect:function(e){var t,n;return e=l(e),t=i(e),n=g(e),{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:g,getParent:function(e,t,n){var r=v(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:v,get:l,getNext:function(e,t){return n(e,t,"nextSibling")},getPrev:function(e,t){return n(e,t,"previousSibling")},select:function(e,t){return Ao(e,l(t)||u.root_element||a,[])},is:p,add:w,create:x,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)t.hasOwnProperty(r)&&null!==t[r]&&"undefined"!=typeof t[r]&&(o+=" "+r+'="'+L(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r},remove:z,setStyle:function(e,t,n){var r=K(t)?f(e).css(t,n):f(e).css(t);u.update_styles&&$i(_,r)},getStyle:m,setStyles:function(e,t){var n=f(e).css(t);u.update_styles&&$i(_,n)},removeAllAttribs:function(e){return y(e,function(e){var t,n=e.attributes;for(t=n.length-1;0<=t;t--)e.removeAttributeNode(n.item(t))})},setAttrib:o,setAttribs:b,getAttrib:r,getPos:i,parseStyle:function(e){return _.parse(e)},serializeStyle:function(e,t){return _.serialize(e,t)},addStyle:function(e){var t,n;if(F!==Ki.DOM&&a===j.document){if(T[e])return;T[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){var n;F===Ki.DOM||a!==j.document?(e=e||"",n=a.getElementsByTagName("head")[0],Vi(e.split(","),function(e){var t;e=Mn._addCacheSuffix(e),M[e]||(M[e]=!0,t=x("link",G(G({rel:"stylesheet",type:"text/css",href:e},u.contentCssCors?{crossOrigin:"anonymous"}:{}),u.referrerPolicy?{referrerPolicy:u.referrerPolicy}:{})),n.appendChild(t))})):Ki.DOM.loadCSS(e)},addClass:function(e,t){f(e).addClass(t)},removeClass:function(e,t){E(e,t,!1)},hasClass:function(e,t){return f(e).hasClass(t)},toggleClass:E,show:function(e){f(e).show()},hide:function(e){f(e).hide()},isHidden:function(e){return"none"===f(e).css("display")},uniqueId:function(e){return(e||"mce_")+t++},setHTML:C,getOuterHTML:function(e){var t="string"==typeof e?l(e):e;return Ge.isElement(t)?t.outerHTML:vi("<div></div>").append(vi(t).clone()).html()},setOuterHTML:function(e,t){f(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}z(vi(this).html(t),!0)})},decode:P,encode:L,insertAfter:function(e,t){var r=l(t);return y(e,function(e){var t,n;return t=r.parentNode,(n=r.nextSibling)?t.insertBefore(e,n):t.appendChild(e),e})},replace:N,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=x(e),Vi(d(t),function(e){o(n,e.nodeName,r(t,e.nodeName))}),N(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return _.toHex(Mn.trim(e))},run:y,getAttribs:d,isEmpty:function(e,t){var n,r,o,i,a=0;if(e=e.firstChild){var u=new yi(e,e.parentNode),s=D?D.getWhiteSpaceElements():{};t=t||(D?D.getNonEmptyElements():null);do{if(o=e.nodeType,Ge.isElement(e)){var c=e.getAttribute("data-mce-bogus");if(c){e=u.next("all"===c);continue}if(i=e.nodeName.toLowerCase(),t&&t[i]){if("br"!==i)return!1;a++,e=u.next();continue}for(n=(r=d(e)).length;n--;)if("name"===(i=r[n].nodeName)||"data-mce-bookmark"===i)return!1}if(8===o)return!1;if(3===o&&!ji.test(e.nodeValue))return!1;if(3===o&&e.parentNode&&s[e.parentNode.nodeName]&&ji.test(e.nodeValue))return!1;e=u.next()}while(e)}return a<=1},createRng:S,nodeIndex:Wi,split:function(e,t,n){var r,o,i,a=S();if(e&&t)return a.setStart(e.parentNode,Wi(e)),a.setEnd(t.parentNode,Wi(t)),r=a.extractContents(),(a=S()).setStart(t.parentNode,Wi(t)+1),a.setEnd(e.parentNode,Wi(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(Xn.trimNode(F,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(Xn.trimNode(F,o),e),z(e),n||t},bind:V,unbind:I,fire:function(e,t,n){return B.fire(e,t,n)},getContentEditable:k,getContentEditableParent:function(e){for(var t=h(),n=null;e&&e!==t&&null===(n=k(e));e=e.parentNode);return n},destroy:function(){if(R)for(var e=R.length;e--;){var t=R[e];B.unbind(t[0],t[1],t[2])}Ao.setDocument&&Ao.setDocument()},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}};return s=qi(_,u,function(){return F}),F}(Ri=Ki=Ki||{}).DOM=Ri(j.document),Ri.nodeIndex=Wi;var Xi=Ki,Yi=Xi.DOM,Gi=Mn.each,Ji=Mn.grep,Qi=(Zi.prototype._setReferrerPolicy=function(e){this.settings.referrerPolicy=e},Zi.prototype.loadScript=function(e,t,n){var r,o,i=Yi;o=i.uniqueId(),(r=j.document.createElement("script")).id=o,r.type="text/javascript",r.src=Mn._addCacheSuffix(e),this.settings.referrerPolicy&&i.setAttrib(r,"referrerpolicy",this.settings.referrerPolicy),r.onload=function(){i.remove(o),r&&(r.onreadystatechange=r.onload=r=null),t()},r.onerror=function(){D(n)?n():"undefined"!=typeof j.console&&j.console.log&&j.console.log("Failed to load script: "+e)},(j.document.getElementsByTagName("head")[0]||j.document.body).appendChild(r)},Zi.prototype.isDone=function(e){return 2===this.states[e]},Zi.prototype.markDone=function(e){this.states[e]=2},Zi.prototype.add=function(e,t,n,r){this.states[e]===undefined&&(this.queue.push(e),this.states[e]=0),t&&(this.scriptLoadedCallbacks[e]||(this.scriptLoadedCallbacks[e]=[]),this.scriptLoadedCallbacks[e].push({success:t,failure:r,scope:n||this}))},Zi.prototype.load=function(e,t,n,r){return this.add(e,t,n,r)},Zi.prototype.remove=function(e){delete this.states[e],delete this.scriptLoadedCallbacks[e]},Zi.prototype.loadQueue=function(e,t,n){this.loadScripts(this.queue,e,t,n)},Zi.prototype.loadScripts=function(n,e,t,r){function o(t,e){Gi(a.scriptLoadedCallbacks[e],function(e){D(e[t])&&e[t].call(e.scope)}),a.scriptLoadedCallbacks[e]=undefined}var i,a=this,u=[];a.queueLoadedCallbacks.push({success:e,failure:r,scope:t||this}),(i=function(){var e=Ji(n);if(n.length=0,Gi(e,function(e){2!==a.states[e]?3!==a.states[e]?1!==a.states[e]&&(a.states[e]=1,a.loading++,a.loadScript(e,function(){a.states[e]=2,a.loading--,o("success",e),i()},function(){a.states[e]=3,a.loading--,u.push(e),o("failure",e),i()})):o("failure",e):o("success",e)}),!a.loading){var t=a.queueLoadedCallbacks.slice(0);a.queueLoadedCallbacks.length=0,Gi(t,function(e){0===u.length?D(e.success)&&e.success.call(e.scope):D(e.failure)&&e.failure.call(e.scope,u)})}})()},Zi.ScriptLoader=new Zi,Zi);function Zi(e){void 0===e&&(e={}),this.states={},this.queue=[],this.scriptLoadedCallbacks={},this.queueLoadedCallbacks=[],this.loading=0,this.settings=e}var ea,ta={},na=Je("en"),ra={getData:function(){return se(ta,function(e){return G({},e)})},setCode:function(e){e&&na.set(e)},getCode:function(){return na.get()},add:function(e,t){var n=ta[e];for(var r in n||(ta[e]=n={}),t)n[r.toLowerCase()]=t[r]},translate:function(e){function r(e){return D(e)?Object.prototype.toString.call(e):a(e)?"":""+e}function t(e){var t=r(e),n=t.toLowerCase();return kt(i,n)?r(i[n]):t}function n(e){return e.replace(/{context:\w+}$/,"")}function o(e){return e}var i=ta[na.get()]||{},a=function(e){return""===e||null===e||e===undefined};if(a(e))return o("");if(function(e){return T(e)&&kt(e,"raw")}(e))return o(r(e.raw));if(function(e){return A(e)&&1<e.length}(e)){var u=e.slice(1);return o(n(t(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return kt(u,t)?r(u[t]):e})))}return o(n(t(e)))},isRtl:function(){return le(ta,na.get()).bind(function(e){return le(e,"_dir")}).exists(function(e){return"rtl"===e})},hasCode:function(e){return kt(ta,e)}},oa=Mn.each;function ia(){function i(e){var t;return c[e]&&(t=c[e].dependencies),t||[]}function a(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}}function u(e,n,t,r){var o=i(e);oa(o,function(e){var t=a(n,e);f(t.resource,t,undefined,undefined)}),t&&(r?t.call(r):t.call(Qi))}var r=this,o=[],s={},c={},l=[],f=function(e,t,n,r,o){if(!s[e]){var i="string"==typeof t?t:t.prefix+t.resource+t.suffix;0!==i.indexOf("/")&&-1===i.indexOf("://")&&(i=ia.baseURL+"/"+i),s[e]=i.substring(0,i.lastIndexOf("/")),c[e]?u(e,t,n,r):Qi.ScriptLoader.add(i,function(){return u(e,t,n,r)},r,o)}};return{items:o,urls:s,lookup:c,_listeners:l,get:function(e){return c[e]?c[e].instance:undefined},dependencies:i,requireLangPack:function(e,t){var n=ra.getCode();if(n&&!1!==ia.languageLoad){if(t)if(-1!==(t=","+t+",").indexOf(","+n.substr(0,2)+","))n=n.substr(0,2);else if(-1===t.indexOf(","+n+","))return;Qi.ScriptLoader.add(s[e]+"/langs/"+n+".js")}},add:function(t,e,n){o.push(e),c[t]={instance:e,dependencies:n};var r=Y(l,function(e){return e.name===t});return l=r.fail,oa(r.pass,function(e){e.callback()}),e},remove:function(e){delete s[e],delete c[e]},createUrl:a,addComponents:function(e,t){var n=r.urls[e];oa(t,function(e){Qi.ScriptLoader.add(n+"/"+e)})},load:f,waitFor:function(e,t){c.hasOwnProperty(e)?t():l.push({name:e,callback:t})}}}(ea=ia=ia||{}).PluginManager=ea(),ea.ThemeManager=ea();function aa(n,r){var o=null;return{cancel:function(){null!==o&&(j.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null===o&&(o=j.setTimeout(function(){n.apply(null,e),o=null},r))}}}function ua(e,t){var n=ge(e,t);return n===undefined||""===n?[]:n.split(" ")}function sa(e){return e.dom().classList!==undefined}function ca(e,t){return function(e,t,n){var r=ua(e,t).concat([n]);return Tt(e,t,r.join(" ")),!0}(e,"class",t)}function la(e,t){return function(e,t,n){var r=y(ua(e,t),function(e){return e!==n});return 0<r.length?Tt(e,t,r.join(" ")):pe(e,t),!1}(e,"class",t)}function fa(e,t){sa(e)?e.dom().classList.add(t):ca(e,t)}function da(e){0===(sa(e)?e.dom().classList:function(e){return ua(e,"class")}(e)).length&&pe(e,"class")}function ha(e,t){return sa(e)&&e.dom().classList.contains(t)}function ma(e,t){return function(e,t){var n=t===undefined?j.document:t.dom();return xe(n)?[]:X(n.querySelectorAll(e),yt.fromDom)}(t,e)}var ga=ia,pa=function(e,t){var n=[];return z(Re(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(pa(e,t))}),n};function va(e,t,n,r,o){return e(n,r)?k.some(n):D(o)&&o(n)?k.none():t(n,r,o)}function ya(e,t,n){for(var r=e.dom(),o=D(n)?n:$(!1);r.parentNode;){r=r.parentNode;var i=yt.fromDom(r);if(t(i))return k.some(i);if(o(i))break}return k.none()}function ba(e,t,n){return va(function(e,t){return t(e)},ya,e,t,n)}function Ca(e,t,n){return ya(e,function(e){return we(e,t)},n)}function wa(e,t){return function(e,t){var n=t===undefined?j.document:t.dom();return xe(n)?k.none():k.from(n.querySelector(e)).map(yt.fromDom)}(t,e)}function xa(e,t,n){return va(we,Ca,e,t,n)}function za(r,e){function t(e,t){return function(e,t){var n=e.dom();return!(!n||!n.hasAttribute)&&n.hasAttribute(t)}(e,t)?k.some(ge(e,t)):k.none()}var n=r.selection.getRng(),o=yt.fromDom(n.startContainer),i=yt.fromDom(r.getBody()),a=e.fold(function(){return"."+nu()},function(e){return"["+ru()+'="'+e+'"]'}),u=De(o,n.startOffset).getOr(o);return xa(u,a,function(e){return ze(e,i)}).bind(function(e){return t(e,""+ou()).bind(function(n){return t(e,""+ru()).map(function(e){var t=iu(r,n);return{uid:n,name:e,elements:t}})})})}function Ea(n,e){function a(e,t){r(e,function(e){return t(e),e})}var o=Je({}),r=function(e,t){var n=o.get(),r=t(n.hasOwnProperty(e)?n[e]:{listeners:[],previous:Je(k.none())});n[e]=r,o.set(n)},t=function(n,r){var o=null;return{cancel:function(){null!==o&&(j.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==o&&j.clearTimeout(o),o=j.setTimeout(function(){n.apply(null,e),o=null},r)}}}(function(){var e=o.get(),t=function(e,t){var n=B.call(e,0);return n.sort(t),n}(Et(e));z(t,function(e){r(e,function(o){var i=o.previous.get();return za(n,k.some(e)).fold(function(){i.isSome()&&(function(t){a(t,function(e){z(e.listeners,function(e){return e(!1,t)})})}(e),o.previous.set(k.none()))},function(e){var t=e.uid,n=e.name,r=e.elements;i.is(t)||(function(t,n,r){a(t,function(e){z(e.listeners,function(e){return e(!0,t,{uid:n,nodes:X(r,function(e){return e.dom()})})})})}(n,t,r),o.previous.set(k.some(t)))}),{previous:o.previous,listeners:o.listeners}})})},30);return n.on("remove",function(){t.cancel()}),n.on("NodeChange",function(){t.throttle()}),{addListener:function(e,t){r(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}}function Na(e,n){e.on("init",function(){e.serializer.addNodeFilter("span",function(e){z(e,function(t){(function(e){return k.from(e.attr(ru())).bind(n.lookup)})(t).each(function(e){!1===e.persistent&&t.unwrap()})})})})}function Sa(e,t){return yt.fromDom(e.dom().cloneNode(t))}function ka(e){return Sa(e,!1)}function Ta(e){return Sa(e,!0)}function Aa(e,t){var n=Ee(e).dom(),r=yt.fromDom(n.createDocumentFragment()),o=function(e,t){var n=(t||j.document).createElement("div");return n.innerHTML=e,Re(yt.fromDom(n))}(t,n);zi(r,o),Ei(e),Di(e,r)}function Ma(e){return du(e)&&(e=e.parentNode),fu(e)&&e.hasAttribute("data-mce-caret")}function Ra(e){return du(e)&&su(e.data)}function Da(e){return Ma(e)||Ra(e)}function _a(e){return e.firstChild!==e.lastChild||!Ge.isBr(e.firstChild)}function Ba(e){var t=e.container();return!(!e||!Ge.isText(t))&&(t.data.charAt(e.offset())===cu||e.isAtStart()&&Ra(t.previousSibling))}function Oa(e){var t=e.container();return!(!e||!Ge.isText(t))&&(t.data.charAt(e.offset()-1)===cu||e.isAtEnd()&&Ra(t.nextSibling))}function Ha(e,t,n){var r,o;return(r=t.ownerDocument.createElement(e)).setAttribute("data-mce-caret",n?"before":"after"),r.setAttribute("data-mce-bogus","all"),r.appendChild(function(){var e=j.document.createElement("br");return e.setAttribute("data-mce-bogus","1"),e}()),o=t.parentNode,n?o.insertBefore(r,t):t.nextSibling?o.insertBefore(r,t.nextSibling):o.appendChild(r),r}function Pa(e){return e&&e.hasAttribute("data-mce-caret")?(function(e){var t=e.getElementsByTagName("br"),n=t[t.length-1];Ge.isBogus(n)&&n.parentNode.removeChild(n)}(e),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null}function La(e){return!xu(e)&&(yu(e)?!bu(e.parentNode):Cu(e)||vu(e)||wu(e)||zu(e))}function Va(e,t){return La(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(zu(e))return!1;if(gu(e))return!0}return!0}(e,t)}function Ia(e){return e?{left:Eu(e.left),top:Eu(e.top),bottom:Eu(e.bottom),right:Eu(e.right),width:Eu(e.width),height:Eu(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function Fa(e,t){return e=Ia(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e}function Ua(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2}function ja(e,t){return e.bottom-e.height/2<t.top||!(e.top>t.bottom)&&Ua(t.top-e.bottom,e,t)}function qa(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&Ua(t.bottom-e.top,e,t)}function $a(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}function Wa(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null}function Ka(e,t){return 1===e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e}function Xa(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&Nu.test(e)}function Ya(e,t,n){return e.isSome()&&t.isSome()?k.some(n(e.getOrDie(),t.getOrDie())):k.none()}function Ga(e){return e&&/[\r\n\t ]/.test(e)}function Ja(e){return!!e.setStart&&!!e.setEnd}function Qa(e){var t,n=e.startContainer,r=e.startOffset;return!!(Ga(e.toString())&&Bu(n.parentNode)&&Ge.isText(n)&&(t=n.data,Ga(t[r-1])||Ga(t[r+1])))}function Za(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom}function eu(e,t){var n=Fa(e,t);return n.width=1,n.right=n.left+1,n}var tu,nu=$("mce-annotation"),ru=$("data-mce-annotation"),ou=$("data-mce-annotation-uid"),iu=function(e,t){var n=yt.fromDom(e.getBody());return ma(n,"["+ou()+'="'+t+'"]')},au=0,uu="\ufeff",su=function(e){return e===uu},cu=uu,lu=function(e){return e.replace(new RegExp(uu,"g"),"")},fu=Ge.isElement,du=Ge.isText,hu=function(e){return du(e)&&e.data[0]===cu},mu=function(e){return du(e)&&e.data[e.data.length-1]===cu},gu=Ge.isContentEditableTrue,pu=Ge.isContentEditableFalse,vu=Ge.isBr,yu=Ge.isText,bu=Ge.matchNodeNames(["script","style","textarea"]),Cu=Ge.matchNodeNames(["img","input","textarea","hr","iframe","video","audio","object"]),wu=Ge.matchNodeNames(["table"]),xu=Da,zu=function(e){return!1===function(e){return Ge.isElement(e)&&"true"===e.getAttribute("unselectable")}(e)&&pu(e)},Eu=Math.round,Nu=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),Su=[].slice,ku=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Su.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}},Tu=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Su.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}},Au=Ge.isElement,Mu=La,Ru=Ge.matchStyleValues("display","block table"),Du=Ge.matchStyleValues("float","left right"),_u=ku(Au,Mu,s(Du)),Bu=s(Ge.matchStyleValues("white-space","pre pre-line pre-wrap")),Ou=Ge.isText,Hu=Ge.isBr,Pu=Xi.nodeIndex,Lu=Ka,Vu=function(e){return"createRange"in e?e.createRange():Xi.DOM.createRng()},Iu=function(e){var t,n;return t=0<(n=e.getClientRects()).length?Ia(n[0]):Ia(e.getBoundingClientRect()),!Ja(e)&&Hu(e)&&Za(t)?function(e){var t,n=e.ownerDocument,r=Vu(n),o=n.createTextNode("\xa0"),i=e.parentNode;return i.insertBefore(o,e),r.setStart(o,0),r.setEnd(o,1),t=Ia(r.getBoundingClientRect()),i.removeChild(o),t}(e):Za(t)&&Ja(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&Ge.isText(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),Iu(i)}return null}(e):t},Fu=function(e){function r(e){0!==e.height&&(0<i.length&&function(e,t){return e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right}(e,i[i.length-1])||i.push(e))}function t(e,t){var n=Vu(e.ownerDocument);if(t<e.data.length){if(Xa(e.data[t]))return i;if(Xa(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!Qa(n)))return r(eu(Iu(n),!1)),i}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),Qa(n)||r(eu(Iu(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),Qa(n)||r(eu(Iu(n),!0)))}var n,o,i=[];if(Ou(e.container()))return t(e.container(),e.offset()),i;if(Au(e.container()))if(e.isAtEnd())o=Lu(e.container(),e.offset()),Ou(o)&&t(o,o.data.length),_u(o)&&!Hu(o)&&r(eu(Iu(o),!1));else{if(o=Lu(e.container(),e.offset()),Ou(o)&&t(o,0),_u(o)&&e.isAtEnd())return r(eu(Iu(o),!1)),i;n=Lu(e.container(),e.offset()-1),_u(n)&&!Hu(n)&&(!Ru(n)&&!Ru(o)&&_u(o)||r(eu(Iu(n),!1))),_u(o)&&r(eu(Iu(o),!0))}return i};function Uu(t,n,e){function r(){return e=e||Fu(Uu(t,n))}return{container:$(t),offset:$(n),toRange:function(){var e;return(e=Vu(t.ownerDocument)).setStart(t,n),e.setEnd(t,n),e},getClientRects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return Ou(t),0===n},isAtEnd:function(){return Ou(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return Lu(t,e?n-1:n)}}}(tu=Uu=Uu||{}).fromRangeStart=function(e){return tu(e.startContainer,e.startOffset)},tu.fromRangeEnd=function(e){return tu(e.endContainer,e.endOffset)},tu.after=function(e){return tu(e.parentNode,Pu(e)+1)},tu.before=function(e){return tu(e.parentNode,Pu(e))},tu.isAbove=function(e,t){return Ya(E(t.getClientRects()),N(e.getClientRects()),ja).getOr(!1)},tu.isBelow=function(e,t){return Ya(N(t.getClientRects()),E(e.getClientRects()),qa).getOr(!1)},tu.isAtStart=function(e){return!!e&&e.isAtStart()},tu.isAtEnd=function(e){return!!e&&e.isAtEnd()},tu.isTextPosition=function(e){return!!e&&Ge.isText(e.container())},tu.isElementPosition=function(e){return!1===tu.isTextPosition(e)};function ju(t){return function(e){return t===e}}function qu(e){return(_s(e)?"text()":e.nodeName.toLowerCase())+"["+function(e){var r,t,n;return r=Ps(Hs(e)),t=kn.findIndex(r,ju(e),e),r=r.slice(0,t+1),n=kn.reduce(r,function(e,t,n){return _s(t)&&_s(r[n-1])&&e++,e},0),r=kn.filter(r,Ge.matchNodeNames([e.nodeName])),(t=kn.findIndex(r,ju(e),e))-n}(e)+"]"}function $u(e,t){var n,r,o,i,a,u=[];return n=t.container(),r=t.offset(),_s(n)?o=function(e,t){for(;(e=e.previousSibling)&&_s(e);)t+=e.data.length;return t}(n,r):(r>=(i=n.childNodes).length?(o="after",r=i.length-1):o="before",n=i[r]),u.push(qu(n)),a=function(e,t,n){var r=[];for(t=t.parentNode;t!==e&&(!n||!n(t));t=t.parentNode)r.push(t);return r}(e,n),a=kn.filter(a,s(Ge.isBogus)),(u=u.concat(kn.map(a,function(e){return qu(e)}))).reverse().join("/")+","+o}function Wu(e,t){var n,r,o;return t?(t=(n=t.split(","))[0].split("/"),o=1<n.length?n[1]:"before",(r=kn.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),function(e,t,n){var r=Ps(e);return r=kn.filter(r,function(e,t){return!_s(e)||!_s(r[t-1])}),(r=kn.filter(r,Ge.matchNodeNames([t])))[n]}(e,t[1],parseInt(t[2],10))):null},e))?_s(r)?function(e,t){for(var n,r=e,o=0;_s(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!_s(r.nextSibling)){e=r,t=n;break}o+=n,r=r.nextSibling}return _s(e)&&t>e.data.length&&(t=e.data.length),Ds(e,t)}(r,parseInt(o,10)):(o="after"===o?Os(r)+1:Os(r),Ds(r.parentNode,o)):null):null}function Ku(e,t){Ge.isText(t)&&0===t.data.length&&e.remove(t)}function Xu(e,t,n){Ge.isDocumentFragment(n)?function(t,e,n){var r=k.from(n.firstChild),o=k.from(n.lastChild);e.insertNode(n),r.each(function(e){return Ku(t,e.previousSibling)}),o.each(function(e){return Ku(t,e.nextSibling)})}(e,t,n):function(e,t,n){t.insertNode(n),Ku(e,n.previousSibling),Ku(e,n.nextSibling)}(e,t,n)}function Yu(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(Ge.isText(a)?s.push(n?function(e,t,n){var r,o;for(o=e(t.data.slice(0,n)).length,r=t.previousSibling;r&&Ge.isText(r);r=r.previousSibling)o+=e(r.data).length;return o}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s}function Gu(e,t,n){var r=0;return Mn.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r}function Ju(e,t){var n,r,o,i=t?"start":"end";n=e[i+"Container"],r=e[i+"Offset"],Ge.isElement(n)&&"TR"===n.nodeName&&(n=(o=n.childNodes)[Math.min(t?r:r-1,o.length-1)])&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r))}function Qu(e){return Ju(e,!0),Ju(e,!1),e}function Zu(e,t){var n;if(Ge.isElement(e)&&(e=Ka(e,t),Ls(e)))return e;if(Da(e)){if(Ge.isText(e)&&Ma(e)&&(e=e.parentNode),n=e.previousSibling,Ls(n))return n;if(n=e.nextSibling,Ls(n))return n}}function es(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(Ls(r)||"IMG"===o)return{name:o,index:Gu(n.dom,o,r)};var a=function(e){return Zu(e.startContainer,e.startOffset)||Zu(e.endContainer,e.endOffset)}(i);return a?{name:o=a.tagName,index:Gu(n.dom,o,a)}:function(e,t,n,r){var o=t.dom,i={};return i.start=Yu(o,e,n,r,!0),t.isCollapsed()||(i.end=Yu(o,e,n,r,!1)),i}(e,n,t,i)}function ts(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,"&#xFEFF;"):e.create("span",r)}function ns(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:Gu(n,u,a)};var s=Qu(r.cloneRange());if(!i){s.collapse(!1);var c=ts(n,o+"_end",t);Xu(n,s,c)}(r=Qu(r)).collapse(!0);var l=ts(n,o+"_start",t);return Xu(n,r,l),e.moveToBookmark({id:o,keep:1}),{id:o}}function rs(e){return Ge.isElement(e)&&e.id===Is}function os(e,t){for(;t&&t!==e;){if(t.id===Is)return t;t=t.parentNode}return null}function is(e){var t=e.parentNode;t&&t.removeChild(e)}function as(e,t){0===t.length?is(e):e.nodeValue=t}function us(e){var t=lu(e);return{count:e.length-t.length,text:t}}function ss(e,t){return js(e),t}function cs(e,t){var n=t.container(),r=function(e,t){var n=f(e,t);return-1===n?k.none():k.some(n)}(P(n.childNodes),e).map(function(e){return e<t.offset()?Ds(n,t.offset()-1):t}).getOr(t);return js(e),r}function ls(e,t){return Us(e)&&t.container()===e?function(e,t){var n=us(e.data.substr(0,t.offset())),r=us(e.data.substr(t.offset())),o=n.text+r.text;return 0<o.length?(as(e,o),Ds(e,t.offset()-n.count)):t}(e,t):ss(e,t)}function fs(e,t,n){var r,o,i,a,u,s=Fa(t.getBoundingClientRect(),n);return i="BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,e.scrollTop||r.scrollTop):(u=e.getBoundingClientRect(),o=e.scrollLeft-u.left,e.scrollTop-u.top),s.left+=o,s.right+=o,s.top+=i,s.bottom+=i,s.width=1,0<(a=t.offsetWidth-t.clientWidth)&&(n&&(a*=-1),s.left+=a,s.right+=a),s}function ds(i,a,e){var t,u,s=Je(k.none()),c=function(){!function(e){var t,n,r,o,i;for(t=vi("*[contentEditable=false]",e),o=0;o<t.length;o++)r=(n=t[o]).previousSibling,mu(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(i.length-1,1)),r=n.nextSibling,hu(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(0,1))}(i),u&&(qs.remove(u),u=null),s.get().each(function(e){vi(e.caret).remove(),s.set(k.none())}),pn.clearInterval(t)},l=function(){t=pn.setInterval(function(){e()?vi("div.mce-visual-caret",i).toggleClass("mce-visual-caret-hidden"):vi("div.mce-visual-caret",i).addClass("mce-visual-caret-hidden")},500)};return{show:function(t,e){var n,r;if(c(),function(e){return Ge.isElement(e)&&/^(TD|TH)$/i.test(e.tagName)}(e))return null;if(!a(e))return u=function(e,t){var n,r,o;if(r=e.ownerDocument.createTextNode(cu),o=e.parentNode,t){if(n=e.previousSibling,du(n)){if(Da(n))return n;if(mu(n))return n.splitText(n.data.length-1)}o.insertBefore(r,e)}else{if(n=e.nextSibling,du(n)){if(Da(n))return n;if(hu(n))return n.splitText(1),n}e.nextSibling?o.insertBefore(r,e.nextSibling):o.appendChild(r)}return r}(e,t),r=e.ownerDocument.createRange(),Ws(u.nextSibling)?(r.setStart(u,0),r.setEnd(u,0)):(r.setStart(u,1),r.setEnd(u,1)),r;u=Ha("p",e,t),n=fs(i,e,t),vi(u).css("top",n.top);var o=vi('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(i)[0];return s.set(k.some({caret:o,element:e,before:t})),s.get().each(function(e){t&&vi(e.caret).addClass("mce-visual-caret-before")}),l(),(r=e.ownerDocument.createRange()).setStart(u,0),r.setEnd(u,0),r},hide:c,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){s.get().each(function(e){var t=fs(i,e.element,e.before);vi(e.caret).css(G({},t))})},destroy:function(){return pn.clearInterval(t)}}}function hs(){return $s.isIE()||$s.isEdge()||$s.isFirefox()}function ms(e){return Ws(e)||Ge.isTable(e)&&hs()}function gs(e){return 0<e}function ps(e){return e<0}function vs(e,t){for(var n;n=e(t);)if(!Gs(n))return n;return null}function ys(e,t,n,r,o){var i=new yi(e,r);if(ps(t)){if((Ks(e)||Gs(e))&&n(e=vs(i.prev,!0)))return e;for(;e=vs(i.prev,o);)if(n(e))return e}if(gs(t)){if((Ks(e)||Gs(e))&&n(e=vs(i.next,!0)))return e;for(;e=vs(i.next,o);)if(n(e))return e}return null}function bs(e,t){for(;e&&e!==t;){if(Xs(e))return e;e=e.parentNode}return null}function Cs(e,t,n){return bs(e.container(),n)===bs(t.container(),n)}function ws(e,t){var n,r;return t?(n=t.container(),r=t.offset(),Js(n)?n.childNodes[r+e]:null):null}function xs(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function zs(e,t,n){var r,o,i,a;for(o=e?"previousSibling":"nextSibling";n&&n!==t;){if(r=n[o],Ys(r)&&(r=r[o]),Ks(r)){if(a=n,bs(r,i=t)===bs(a,i))return r;break}if(Qs(r))break;n=n.parentNode}return null}function Es(e,t,n){var r,o,i,a,u=d(zs,!0,t),s=d(zs,!1,t);if(o=n.startContainer,i=n.startOffset,Ma(o)){if(Js(o)||(o=o.parentNode),"before"===(a=o.getAttribute("data-mce-caret"))&&(r=o.nextSibling,ms(r)))return Zs(r);if("after"===a&&(r=o.previousSibling,ms(r)))return ec(r)}if(!n.collapsed)return n;if(Ge.isText(o)){if(Ys(o)){if(1===e){if(r=s(o))return Zs(r);if(r=u(o))return ec(r)}if(-1===e){if(r=u(o))return ec(r);if(r=s(o))return Zs(r)}return n}if(mu(o)&&i>=o.data.length-1)return 1===e&&(r=s(o))?Zs(r):n;if(hu(o)&&i<=1)return-1===e&&(r=u(o))?ec(r):n;if(i===o.data.length)return(r=s(o))?Zs(r):n;if(0===i)return(r=u(o))?ec(r):n}return n}function Ns(e,t){return k.from(ws(e?0:-1,t)).filter(Ks)}function Ss(e,t,n){var r=Es(e,t,n);return-1===e?Uu.fromRangeStart(r):Uu.fromRangeEnd(r)}function ks(e){return k.from(e.getNode()).map(yt.fromDom)}function Ts(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function As(e,t){var n=Cs(e,t);return!(n||!Ge.isBr(e.getNode()))||n}var Ms,Rs,Ds=Uu,_s=Ge.isText,Bs=Ge.isBogus,Os=Xi.nodeIndex,Hs=function(e){var t=e.parentNode;return Bs(t)?Hs(t):t},Ps=function(e){return e?kn.reduce(e.childNodes,function(e,t){return Bs(t)&&"BR"!==t.nodeName?e=e.concat(Ps(t)):e.push(t),e},[]):[]},Ls=Ge.isContentEditableFalse,Vs={getBookmark:function(e,t,n){return 2===t?es(lu,n,e):3===t?function(e){var t=e.getRng();return{start:$u(e.dom.getRoot(),Ds.fromRangeStart(t)),end:$u(e.dom.getRoot(),Ds.fromRangeEnd(t))}}(e):t?function(e){return{rng:e.getRng()}}(e):ns(e,!1)},getUndoBookmark:d(es,W,!0),getPersistentBookmark:ns},Is="_mce_caret",Fs=Ge.isElement,Us=Ge.isText,js=function(e){if(Fs(e)&&Da(e)&&(_a(e)?e.removeAttribute("data-mce-caret"):is(e)),Us(e)){var t=lu(function(e){try{return e.nodeValue}catch(t){return""}}(e));as(e,t)}},qs={removeAndReposition:function(e,t){return Ds.isTextPosition(t)?ls(e,t):function(e,t){return t.container()===e.parentNode?cs(e,t):ss(e,t)}(e,t)},remove:js},$s=oe().browser,Ws=Ge.isContentEditableFalse,Ks=Ge.isContentEditableFalse,Xs=Ge.matchStyleValues("display","block table table-cell table-caption list-item"),Ys=Da,Gs=Ma,Js=Ge.isElement,Qs=La,Zs=d(xs,!0),ec=d(xs,!1);(Rs=Ms=Ms||{})[Rs.Backwards=-1]="Backwards",Rs[Rs.Forwards=1]="Forwards";function tc(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null}function nc(e,t){if(gs(e)){if(Ac(t.previousSibling)&&!Sc(t.previousSibling))return Ds.before(t);if(Sc(t))return Ds(t,0)}if(ps(e)){if(Ac(t.nextSibling)&&!Sc(t.nextSibling))return Ds.after(t);if(Sc(t))return Ds(t,t.data.length)}return ps(e)?Tc(t)?Ds.before(t):Ds.after(t):Ds.before(t)}function rc(t){return{next:function(e){return Dc(Ms.Forwards,e,t)},prev:function(e){return Dc(Ms.Backwards,e,t)}}}function oc(e){return Ds.isTextPosition(e)?0===e.offset():La(e.getNode())}function ic(e){if(Ds.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return La(e.getNode(!0))}function ac(e,t){return!Ds.isTextPosition(e)&&!Ds.isTextPosition(t)&&e.getNode()===t.getNode(!0)}function uc(e,t,n){return e?!ac(t,n)&&!function(e){return!Ds.isTextPosition(e)&&Ge.isBr(e.getNode())}(t)&&ic(t)&&oc(n):!ac(n,t)&&oc(t)&&ic(n)}function sc(t,n,r){return _c(t,n,r).bind(function(e){return Cs(r,e,n)&&uc(t,r,e)?_c(t,n,e):k.some(e)})}function cc(e,t){var n=e?t.firstChild:t.lastChild;return Ge.isText(n)?k.some(Ds(n,e?0:n.data.length)):n?La(n)?k.some(e?Ds.before(n):function(e){return Ge.isBr(e)?Ds.before(e):Ds.after(e)}(n)):function(e,t,n){var r=e?Ds.before(n):Ds.after(n);return _c(e,t,r)}(e,t,n):k.none()}function lc(e,t){return Ge.isElement(t)&&e.isBlock(t)&&!t.innerHTML&&!Nn.ie&&(t.innerHTML='<br data-mce-bogus="1" />'),t}function fc(e,t){return Pc.lastPositionIn(e).fold(function(){return!1},function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})}function dc(e,t,n){return!(!function(e){return!1===e.hasChildNodes()}(t)||!os(e,t))&&(function(e,t){var n=e.ownerDocument.createTextNode(cu);e.appendChild(n),t.setStart(n,0),t.setEnd(n,0)}(t,n),!0)}function hc(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,dc(c,i,r))return!0;if(s[o]>u.length-1)return!!dc(c,i,r)||fc(i,r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return!0}function mc(e){return Ge.isText(e)&&0<e.data.length}function gc(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,s=(u=(o="start"===t?l?c.hasChildNodes()?(r=c.firstChild,1):mc(c.nextSibling)?(r=c.nextSibling,0):mc(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)+1):e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,1):mc(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)):e.nodeIndex(c),r),o),!l){for(a=c.previousSibling,i=c.nextSibling,Mn.each(Mn.grep(c.childNodes),function(e){Ge.isText(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&Ge.isText(a)&&!Nn.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),s=(u=a,o))}return k.some(Ds(u,s))}return k.none()}function pc(e){return e&&/^(IMG)$/.test(e.nodeName)}function vc(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),"fontFamily"===n&&(t=t.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+t}function yc(e,t){for(void 0===t&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)(e=e.childNodes[t])&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function bc(e,t){for(var n=t;n;){if(1===n.nodeType&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t}function Cc(e,t,n,r){var o,i,a=n.nodeValue;return void 0===r&&(r=e?a.length:0),e?(o=a.lastIndexOf(" ",r),-1!==(o=(i=a.lastIndexOf("\xa0",r))<o?o:i)&&!t&&(o<r||!e)&&o<=a.length&&o++):(o=a.indexOf(" ",r),i=a.indexOf("\xa0",r),o=-1!==o&&(-1===i||o<i)?o:i),o}function wc(e,t,n,r,o,i){var a,u,s;if(3===n.nodeType){if(-1!==(u=Cc(o,i,n,r)))return{container:n,offset:u};s=n}for(var c=new yi(n,e.getParent(n,e.isBlock)||t);a=c[o?"prev":"next"]();)if(3!==a.nodeType||qc(a.parentNode)){if(e.isBlock(a)||jc.isEq(a,"BR"))break}else if(-1!==(u=Cc(o,i,s=a)))return{container:a,offset:u};if(s)return{container:s,offset:r=o?0:s.length}}function xc(e,t,n,r,o){var i,a,u,s;for(3===r.nodeType&&0===r.nodeValue.length&&r[o]&&(r=r[o]),i=$c(e,r),a=0;a<i.length;a++)for(u=0;u<t.length;u++)if(!("collapsed"in(s=t[u])&&s.collapsed!==n.collapsed)&&e.is(i[a],s.selector))return i[a];return r}function zc(t,e,n,r){var o,i=t.dom,a=i.getRoot();if(e[0].wrapper||(o=i.getParent(n,e[0].block,a)),!o){var u=i.getParent(n,"LI,TD,TH");o=i.getParent(3===n.nodeType?n.parentNode:n,function(e){return e!==a&&Kc(t,e)},u)}if(o&&e[0].wrapper&&(o=$c(i,o,"ul,ol").reverse()[0]||o),!o)for(o=n;o[r]&&!i.isBlock(o[r])&&(o=o[r],!jc.isEq(o,"br")););return o||n}function Ec(e,t,n,r,o,i,a){var u,s,c,l,f,d;if(u=s=a?n:o,l=a?"previousSibling":"nextSibling",f=e.getRoot(),3===u.nodeType&&!Wc(u)&&(a?0<r:i<u.nodeValue.length))return u;for(;;){if(!t[0].block_expand&&e.isBlock(s))return s;for(c=s[l];c;c=c[l])if(!qc(c)&&!Wc(c)&&("BR"!==(d=c).nodeName||!d.getAttribute("data-mce-bogus")||d.nextSibling))return s;if(s===f||s.parentNode===f){u=s;break}s=s.parentNode}return u}var Nc=Ge.isContentEditableFalse,Sc=Ge.isText,kc=Ge.isElement,Tc=Ge.isBr,Ac=La,Mc=function(e){return Cu(e)||function(e){return!!zu(e)&&!0!==b(P(e.getElementsByTagName("*")),function(e,t){return e||gu(t)},!1)}(e)},Rc=Va,Dc=function(e,t,n){var r,o,i,a,u;if(!kc(n)||!t)return null;if(t.isEqual(Ds.after(n))&&n.lastChild){if(u=Ds.after(n.lastChild),ps(e)&&Ac(n.lastChild)&&kc(n.lastChild))return Tc(n.lastChild)?Ds.before(n.lastChild):u}else u=t;var s=u.container(),c=u.offset();if(Sc(s)){if(ps(e)&&0<c)return Ds(s,--c);if(gs(e)&&c<s.length)return Ds(s,++c);r=s}else{if(ps(e)&&0<c&&(o=tc(s,c-1),Ac(o)))return!Mc(o)&&(i=ys(o,e,Rc,o))?Sc(i)?Ds(i,i.data.length):Ds.after(i):Sc(o)?Ds(o,o.data.length):Ds.before(o);if(gs(e)&&c<s.childNodes.length&&(o=tc(s,c),Ac(o)))return Tc(o)?function(e,t){var n=t.nextSibling;return n&&Ac(n)?Sc(n)?Ds(n,0):Ds.before(n):Dc(Ms.Forwards,Ds.after(t),e)}(n,o):!Mc(o)&&(i=ys(o,e,Rc,o))?Sc(i)?Ds(i,0):Ds.before(i):Sc(o)?Ds(o,0):Ds.after(o);r=o||u.getNode()}return(gs(e)&&u.isAtEnd()||ps(e)&&u.isAtStart())&&(r=ys(r,e,$(!0),n,!0),Rc(r,n))?nc(e,r):(o=ys(r,e,Rc,n),!(a=kn.last(y(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNode;return n}(s,n),Nc)))||o&&a.contains(o)?o?nc(e,o):null:u=gs(e)?Ds.after(a):Ds.before(a))},_c=function(e,t,n){var r=rc(t);return k.from(e?r.next(n):r.prev(n))},Bc=function(t,n,e,r){return sc(t,n,e).bind(function(e){return r(e)?Bc(t,n,e,r):k.some(e)})},Oc=d(_c,!0),Hc=d(_c,!1),Pc={fromPosition:_c,nextPosition:Oc,prevPosition:Hc,navigate:sc,navigateIgnore:Bc,positionIn:cc,firstPositionIn:d(cc,!0),lastPositionIn:d(cc,!1)},Lc=function(e,t){var n=e.dom;if(t){if(function(e){return Mn.isArray(e.start)}(t))return function(e,t){var n=e.createRng();return hc(e,!0,t,n)&&hc(e,!1,t,n)?k.some(n):k.none()}(n,t);if(function(e){return"string"==typeof e.start}(t))return k.some(function(e,t){var n,r;return n=e.createRng(),r=Wu(e.getRoot(),t.start),n.setStart(r.container(),r.offset()),r=Wu(e.getRoot(),t.end),n.setEnd(r.container(),r.offset()),n}(n,t));if(function(e){return e.hasOwnProperty("id")}(t))return function(r,e){var t=gc(r,"start",e),n=gc(r,"end",e);return Ya(t,n.or(t),function(e,t){var n=r.createRng();return n.setStart(lc(r,e.container()),e.offset()),n.setEnd(lc(r,t.container()),t.offset()),n})}(n,t);if(function(e){return e.hasOwnProperty("name")}(t))return function(n,e){return k.from(n.select(e.name)[e.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t})}(n,t);if(function(e){return e.hasOwnProperty("rng")}(t))return k.some(t.rng)}return k.none()},Vc=function(e,t,n){return Vs.getBookmark(e,t,n)},Ic=function(t,e){Lc(t,e).each(function(e){t.setRng(e)})},Fc=function(e){return Ge.isElement(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},Uc=function(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)},jc={isInlineBlock:pc,moveStart:function(e,t,n){var r,o,i,a=n.startOffset,u=n.startContainer;if((n.startContainer!==n.endContainer||!pc(n.startContainer.childNodes[n.startOffset]))&&1===u.nodeType)for(a<(i=u.childNodes).length?(u=i[a],r=new yi(u,e.getParent(u,e.isBlock))):(u=i[i.length-1],(r=new yi(u,e.getParent(u,e.isBlock))).next(!0)),o=r.current();o;o=r.next())if(3===o.nodeType&&!Uc(o))return n.setStart(o,0),void t.setRng(n)},getNonWhiteSpaceSibling:function(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1===e.nodeType||!Uc(e))return e},isTextBlock:function(e,t){return t.nodeType&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]},isValid:function(e,t,n){return e.schema.isValidChild(t,n)},isWhiteSpaceNode:Uc,replaceVars:function(e,n){return"string"!=typeof e?e=e(n):n&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e},isEq:function(e,t){return e=""+((e=e||"").nodeName||e),t=""+((t=t||"").nodeName||t),e.toLowerCase()===t.toLowerCase()},normalizeStyleValue:vc,getStyle:function(e,t,n){return vc(e,e.getStyle(t,n),n)},getTextDecoration:function(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,"text-decoration"))&&"none"!==n}),n},getParents:function(e,t,n){return e.getParents(t,n,e.getRoot())}},qc=Fc,$c=jc.getParents,Wc=jc.isWhiteSpaceNode,Kc=jc.isTextBlock,Xc=function(e,t,n,r){var o,i=t.startContainer,a=t.startOffset,u=t.endContainer,s=t.endOffset,c=e.dom;return 1===i.nodeType&&i.hasChildNodes()&&3===(i=Ka(i,a)).nodeType&&(a=0),1===u.nodeType&&u.hasChildNodes()&&3===(u=Ka(u,t.collapsed?s:s-1)).nodeType&&(s=u.nodeValue.length),i=bc(c,i),u=bc(c,u),(qc(i.parentNode)||qc(i))&&(i=qc(i)?i:i.parentNode,3===(i=t.collapsed?i.previousSibling||i:i.nextSibling||i).nodeType&&(a=t.collapsed?i.length:0)),(qc(u.parentNode)||qc(u))&&(u=qc(u)?u:u.parentNode,3===(u=t.collapsed?u.nextSibling||u:u.previousSibling||u).nodeType&&(s=t.collapsed?0:u.length)),t.collapsed&&((o=wc(c,e.getBody(),i,a,!0,r))&&(i=o.container,a=o.offset),(o=wc(c,e.getBody(),u,s,!1,r))&&(u=o.container,s=o.offset)),n[0].inline&&(u=r?u:function(e,t){var n=yc(e,t);if(n.node){for(;n.node&&0===n.offset&&n.node.previousSibling;)n=yc(n.node.previousSibling);n.node&&0<n.offset&&3===n.node.nodeType&&" "===n.node.nodeValue.charAt(n.offset-1)&&1<n.offset&&(e=n.node).splitText(n.offset-1)}return e}(u,s)),(n[0].inline||n[0].block_expand)&&(n[0].inline&&3===i.nodeType&&0!==a||(i=Ec(c,n,i,a,u,s,!0)),n[0].inline&&3===u.nodeType&&s!==u.nodeValue.length||(u=Ec(c,n,i,a,u,s,!1))),n[0].selector&&!1!==n[0].expand&&!n[0].inline&&(i=xc(c,n,t,i,"previousSibling"),u=xc(c,n,t,u,"nextSibling")),(n[0].block||n[0].selector)&&(i=zc(e,n,i,"previousSibling"),u=zc(e,n,u,"nextSibling"),n[0].block&&(c.isBlock(i)||(i=Ec(c,n,i,a,u,s,!0)),c.isBlock(u)||(u=Ec(c,n,i,a,u,s,!1)))),1===i.nodeType&&(a=c.nodeIndex(i),i=i.parentNode),1===u.nodeType&&(s=c.nodeIndex(u)+1,u=u.parentNode),{startContainer:i,startOffset:a,endContainer:u,endOffset:s}},Yc=Mn.each,Gc=function(e,t,o){var n,r,i,a,u,s,c,l=t.startContainer,f=t.startOffset,d=t.endContainer,h=t.endOffset;if(0<(c=e.select("td[data-mce-selected],th[data-mce-selected]")).length)Yc(c,function(e){o([e])});else{var m=function(e){var t;return 3===(t=e[0]).nodeType&&t===l&&f>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===h&&0<e.length&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e},g=function(e,t,n){for(var r=[];e&&e!==n;e=e[t])r.push(e);return r},p=function(e,t){do{if(e.parentNode===t)return e;e=e.parentNode}while(e)},v=function(e,t,n){var r=n?"nextSibling":"previousSibling";for(u=(a=e).parentNode;a&&a!==t;a=u)u=a.parentNode,(s=g(a===e?a:a[r],r)).length&&(n||s.reverse(),o(m(s)))};if(1===l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[f]),1===d.nodeType&&d.hasChildNodes()&&(d=function(e,t){var n=e.childNodes;return--t>n.length-1?t=n.length-1:t<0&&(t=0),n[t]||e}(d,h)),l===d)return o(m([l]));for(n=e.findCommonAncestor(l,d),a=l;a;a=a.parentNode){if(a===d)return v(l,n,!0);if(a===n)break}for(a=d;a;a=a.parentNode){if(a===l)return v(d,n);if(a===n)break}r=p(l,n)||l,i=p(d,n)||d,v(l,r,!0),(s=g(r===l?r:r.nextSibling,"nextSibling",i===d?i.nextSibling:i)).length&&o(m(s)),v(d,i)}};function Jc(e){return ol.get(e)}function Qc(t,n,r,o){return Se(n).fold(function(){return"skipping"},function(e){return"br"===o||function(e){return zt(e)&&"\ufeff"===Jc(e)}(n)?"valid":function(e){return xt(e)&&ha(e,nu())}(n)?"existing":rs(n)?"caret":jc.isValid(t,r,o)&&jc.isValid(t,ie(e),r)?"valid":"invalid-child"})}function Zc(e,t,n,r){var o=t.uid,i=void 0===o?function(e){var t=(new Date).getTime();return e+"_"+Math.floor(1e9*Math.random())+ ++au+String(t)}("mce-annotation"):o,a=function h(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(t,["uid"]),u=yt.fromTag("span",e);fa(u,nu()),Tt(u,""+ou(),i),Tt(u,""+ru(),n);var s=r(i,a),c=s.attributes,l=void 0===c?{}:c,f=s.classes,d=void 0===f?[]:f;return me(u,l),function(t,e){z(e,function(e){fa(t,e)})}(u,d),u}function el(n,e,t,r,o){function i(){c.set(k.none())}function a(e){z(e,l)}var u=[],s=Zc(n.getDoc(),o,t,r),c=Je(k.none()),l=function(e){switch(Qc(n,e,"span",ie(e))){case"invalid-child":i();var t=Re(e);a(t),i();break;case"valid":!function(e,t){Ci(e,t),Di(t,e)}(e,c.get().getOrThunk(function(){var e=ka(s);return u.push(e),c.set(k.some(e)),e}))}};return Gc(n.dom,e,function(e){i(),function(e){var t=X(e,yt.fromDom);a(t)}(e)}),u}function tl(o,i,a,u){o.undoManager.transact(function(){var e=o.selection.getRng();if(e.collapsed&&function(e,t){var n=Xc(e,t,[{inline:!0}],function(e){return 3===e.startContainer.nodeType&&e.startContainer.nodeValue.length>=e.startOffset&&"\xa0"===e.startContainer.nodeValue[e.startOffset]}(t));t.setStart(n.startContainer,n.startOffset),t.setEnd(n.endContainer,n.endOffset),e.selection.setRng(t)}(o,e),o.selection.getRng().collapsed){var t=Zc(o.getDoc(),u,i,a.decorate);Aa(t,"\xa0"),o.selection.getRng().insertNode(t.dom()),o.selection.select(t.dom())}else{var n=Vs.getPersistentBookmark(o.selection,!1),r=o.selection.getRng();el(o,r,i,a.decorate,u),o.selection.moveToBookmark(n)}})}function nl(r){var o=function(){var n={};return{register:function(e,t){n[e]={name:e,settings:t}},lookup:function(e){return n.hasOwnProperty(e)?k.from(n[e]).map(function(e){return e.settings}):k.none()}}}();Na(r,o);var n=Ea(r);return{register:function(e,t){o.register(e,t)},annotate:function(t,n){o.lookup(t).each(function(e){tl(r,t,e,n)})},annotationChanged:function(e,t){n.addListener(e,t)},remove:function(e){za(r,k.some(e)).each(function(e){var t=e.elements;z(t,Ni)})},getAll:function(e){var t=function(e,t){var n=yt.fromDom(e.getBody()),r=ma(n,"["+ru()+'="'+t+'"]'),o={};return z(r,function(e){var t=ge(e,ou()),n=o.hasOwnProperty(t)?o[t]:[];o[t]=n.concat([e])}),o}(r,e);return se(t,function(e){return X(e,function(e){return e.dom()})})}}}function rl(e,t,n){var r=n?"lastChild":"firstChild",o=n?"prev":"next";if(e[r])return e[r];if(e!==t){var i=e[o];if(i)return i;for(var a=e.parent;a&&a!==t;a=a.parent)if(i=a[o])return i}}var ol=function bN(n,r){var t=function(e){return n(e)?k.from(e.dom().nodeValue):k.none()};return{get:function(e){if(!n(e))throw new Error("Can only get "+r+" value of a "+r+" node");return t(e).getOr("")},getOption:t,set:function(e,t){if(!n(e))throw new Error("Can only set raw "+r+" value of a "+r+" node");e.dom().nodeValue=t}}}(zt,"text"),il=/^[ \t\r\n]*$/,al={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11},ul=(sl.create=function(e,t){var n=new sl(e,al[e]||1);if(t)for(var r in t)n.attr(r,t[r]);return n},sl.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},sl.prototype.attr=function(e,t){var n;if("string"!=typeof e){for(var r in e)this.attr(r,e[r]);return this}if(n=this.attributes){if(t===undefined)return n.map[e];if(null===t){if(e in n.map){delete n.map[e];for(var o=n.length;o--;)if(n[o].name===e)return n.splice(o,1),this}return this}if(e in n.map){for(o=n.length;o--;)if(n[o].name===e){n[o].value=t;break}}else n.push({name:e,value:t});return n.map[e]=t,this}},sl.prototype.clone=function(){var e,t=new sl(this.name,this.type);if(e=this.attributes){var n=[];n.map={};for(var r=0,o=e.length;r<o;r++){var i=e[r];"id"!==i.name&&(n[n.length]={name:i.name,value:i.value},n.map[i.name]=i.value)}t.attributes=n}return t.value=this.value,t.shortEnded=this.shortEnded,t},sl.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},sl.prototype.unwrap=function(){for(var e=this.firstChild;e;){var t=e.next;this.insert(e,this,!0),e=t}this.remove()},sl.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},sl.prototype.append=function(e){e.parent&&e.remove();var t=this.lastChild;return t?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=this,e},sl.prototype.insert=function(e,t,n){e.parent&&e.remove();var r=t.parent||this;return n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},sl.prototype.getAll=function(e){for(var t=[],n=this.firstChild;n;n=rl(n,this))n.name===e&&t.push(n);return t},sl.prototype.empty=function(){if(this.firstChild){for(var e=[],t=this.firstChild;t;t=rl(t,this))e.push(t);for(var n=e.length;n--;)(t=e[n]).parent=t.firstChild=t.lastChild=t.next=t.prev=null}return this.firstChild=this.lastChild=null,this},sl.prototype.isEmpty=function(e,t,n){void 0===t&&(t={});var r=this.firstChild;if(r)do{if(1===r.type){if(r.attr("data-mce-bogus"))continue;if(e[r.name])return!1;for(var o=r.attributes.length;o--;){var i=r.attributes[o].name;if("name"===i||0===i.indexOf("data-mce-bookmark"))return!1}}if(8===r.type)return!1;if(3===r.type&&!il.test(r.value))return!1;if(3===r.type&&r.parent&&t[r.parent.name]&&il.test(r.value))return!1;if(n&&n(r))return!1}while(r=rl(r,this));return!0},sl.prototype.walk=function(e){return rl(this,null,e)},sl);function sl(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}function cl(e,t,n){var r,o,i,a,u=1;for(a=e.getShortEndedElements(),(i=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex=r=n;o=i.exec(t);){if(r=i.lastIndex,"/"===o[1])u--;else if(!o[1]){if(o[2]in a)continue;u++}if(0===u)break}return r}function ll(e,t){var n=e.exec(t);if(n){var r=n[1],o=n[2];return"string"==typeof r&&"data-mce-bogus"===r.toLowerCase()?o:null}return null}function fl(V,I){void 0===I&&(I=pr());function e(){}!1!==(V=V||{}).fix_self_closing&&(V.fix_self_closing=!0);var F=V.comment?V.comment:e,U=V.cdata?V.cdata:e,j=V.text?V.text:e,q=V.start?V.start:e,$=V.end?V.end:e,W=V.pi?V.pi:e,K=V.doctype?V.doctype:e;return{parse:function(e){function t(e){var t,n;for(t=_.length;t--&&_[t].name!==e;);if(0<=t){for(n=_.length-1;t<=n;n--)(e=_[n]).valid&&$(e.name);_.length=t}}function n(e,t,n,r,o){var i,a;if(n=(t=t.toLowerCase())in h?t:O(n||r||o||""),g&&!l&&!1===function(e){return 0===e.indexOf("data-")||0===e.indexOf("aria-")}(t)){if(!(i=C[t])&&w){for(a=w.length;a--&&!(i=w[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if(H[t]&&!V.allow_script_urls){var u=n.replace(/[\s\u0000-\u001F]+/g,"");try{u=decodeURIComponent(u)}catch(s){u=unescape(u)}if(P.test(u))return;if(function(e,t){return!e.allow_html_data_urls&&(/^data:image\//i.test(t)?!1===e.allow_svg_data_urls&&/^data:image\/svg\+xml/i.test(t):/^data:/i.test(t))}(V,u))return}l&&(t in H||0===t.indexOf("on"))||(c.map[t]=n,c.push({name:t,value:n}))}var r,o,i,c,a,u,s,l,f,d,h,m,g,p,v,y,b,C,w,x,z,E,N,S,k,T,A,M,R,D=0,_=[],B=0,O=ir.decode,H=Mn.makeMap("src,href,data,background,formaction,poster,xlink:href"),P=/((java|vb)script|mhtml):/i;for(k=new RegExp("<(?:(?:!--([\\w\\W]*?)--!?>)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),T=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,d=I.getShortEndedElements(),S=V.self_closing_elements||I.getSelfClosingElements(),h=I.getBoolAttrs(),g=V.validate,f=V.remove_internals,R=V.fix_self_closing,A=I.getSpecialElements(),N=e+">";r=k.exec(N);){if(D<r.index&&j(O(e.substr(D,r.index-D))),o=r[6])":"===(o=o.toLowerCase()).charAt(0)&&(o=o.substr(1)),t(o);else if(o=r[7]){if(r.index+r[0].length>e.length){j(O(e.substr(r.index))),D=r.index+r[0].length;continue}":"===(o=o.toLowerCase()).charAt(0)&&(o=o.substr(1)),m=o in d,R&&S[o]&&0<_.length&&_[_.length-1].name===o&&t(o);var L=ll(T,r[8]);if(null!==L){if("all"===L){D=cl(I,e,k.lastIndex),k.lastIndex=D;continue}v=!1}if(!g||(p=I.getElementRule(o))){if(v=!0,g&&(C=p.attributes,w=p.attributePatterns),(b=r[8])?((l=-1!==b.indexOf("data-mce-type"))&&f&&(v=!1),(c=[]).map={},b.replace(T,n)):(c=[]).map={},g&&!l){if(x=p.attributesRequired,z=p.attributesDefault,E=p.attributesForced,p.removeEmptyAttrs&&!c.length&&(v=!1),E)for(a=E.length;a--;)s=(y=E[a]).name,"{$uid}"===(M=y.value)&&(M="mce_"+B++),c.map[s]=M,c.push({name:s,value:M});if(z)for(a=z.length;a--;)(s=(y=z[a]).name)in c.map||("{$uid}"===(M=y.value)&&(M="mce_"+B++),c.map[s]=M,c.push({name:s,value:M}));if(x){for(a=x.length;a--&&!(x[a]in c.map););-1===a&&(v=!1)}if(y=c.map["data-mce-bogus"]){if("all"===y){D=cl(I,e,k.lastIndex),k.lastIndex=D;continue}v=!1}}v&&q(o,c,m)}else v=!1;if(i=A[o]){i.lastIndex=D=r.index+r[0].length,D=(r=i.exec(e))?(v&&(u=e.substr(D,r.index-D)),r.index+r[0].length):(u=e.substr(D),e.length),v&&(0<u.length&&j(u,!0),$(o)),k.lastIndex=D;continue}m||(b&&b.indexOf("/")===b.length-1?v&&$(o):_.push({name:o,valid:v}))}else(o=r[1])?(">"===o.charAt(0)&&(o=" "+o),V.allow_conditional_comments||"[if"!==o.substr(0,3).toLowerCase()||(o=" "+o),F(o)):(o=r[2])?U(o.replace(/<!--|-->/g,"")):(o=r[3])?K(o):(o=r[4])&&W(o,r[5]);D=r.index+r[0].length}for(D<e.length&&j(O(e.substr(D))),a=_.length-1;0<=a;a--)(o=_[a]).valid&&$(o.name)}}}(fl=fl||{}).findEndTag=cl;function dl(e,t){var n,r,o,i,a,u=t,s=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,c=e.schema;for(u=function(e,t){var n=new RegExp(["\\s?("+e.join("|")+')="[^"]+"'].join("|"),"gi");return t.replace(n,"")}(e.getTempAttrs(),u),a=c.getShortEndedElements();i=s.exec(u);)r=s.lastIndex,o=i[0].length,n=a[i[1]]?r:of.findEndTag(c,u,r),u=u.substring(0,r-o)+u.substring(n),s.lastIndex=r-o;return lu(u)}function hl(e,t,n){var r=e.getParam(t,n);if(-1===r.indexOf("="))return r;var o=e.getParam(t,"","hash");return o.hasOwnProperty(e.id)?o[e.id]:n}function ml(e,t,n){var r;if(t.format=t.format?t.format:"html",t.get=!0,t.getInner=!0,t.no_events||e.fire("BeforeGetContent",t),"raw"===t.format)r=Mn.trim(af.trimExternal(e.serializer,n.innerHTML));else if("text"===t.format)r=lu(n.innerText||n.textContent);else{if("tree"===t.format)return e.serializer.serialize(n,t);r=function(e,t){var n=mf(e),r=new RegExp("^(<"+n+"[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/"+n+">[\r\n]*|<br \\/>[\r\n]*)$");return t.replace(r,"")}(e,e.serializer.serialize(n,t))}return"text"===t.format||Wn(yt.fromDom(n))?t.content=r:t.content=Mn.trim(r),t.no_events||e.fire("GetContent",t),t.content}function gl(e){var u,s,c,l,f,d=[];return u=(e=e||{}).indent,s=Ff(e.indent_before||""),c=Ff(e.indent_after||""),l=ir.getEncodeFunc(e.entity_encoding||"raw",e.entities),f="html"===e.element_format,{start:function(e,t,n){var r,o,i,a;if(u&&s[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n"),d.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],d.push(" ",i.name,'="',l(i.value,!0),'"');d[d.length]=!n||f?">":" />",n&&u&&c[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n")},end:function(e){var t;d.push("</",e,">"),u&&c[e]&&0<d.length&&0<(t=d[d.length-1]).length&&"\n"!==t&&d.push("\n")},text:function(e,t){0<e.length&&(d[d.length]=t?e:l(e))},cdata:function(e){d.push("<![CDATA[",e,"]]>")},comment:function(e){d.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?d.push("<?",e," ",l(t),"?>"):d.push("<?",e,"?>"),u&&d.push("\n")},doctype:function(e){d.push("<!DOCTYPE",e,">",u?"\n":"")},reset:function(){d.length=0},getContent:function(){return d.join("").replace(/\n$/,"")}}}function pl(t,m){void 0===m&&(m=pr());var g=gl(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f,d;d=t.validate,f={3:function(e){g.text(e.value,e.raw)},8:function(e){g.comment(e.value)},7:function(e){g.pi(e.name,e.value)},10:function(e){g.doctype(e.value)},4:function(e){g.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;h(e),e=e.next;);}},g.reset();var h=function(e){var t,n,r,o,i,a,u,s,c,l=f[e.type];if(l)l(e);else{if(t=e.name,n=e.shortEnded,r=e.attributes,d&&r&&1<r.length&&((a=[]).map={},c=m.getElementRule(e.name))){for(u=0,s=c.attributesOrder.length;u<s;u++)(o=c.attributesOrder[u])in r.map&&(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));for(u=0,s=r.length;u<s;u++)(o=r[u].name)in a.map||(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));r=a}if(g.start(e.name,r,n),!n){if(e=e.firstChild)for(;h(e),e=e.next;);g.end(t)}}};return 1!==e.type||t.inner?f[11](e):h(e),g.getContent()}}}function vl(e,t,n){var r=function(e,n,t){var r={},o={},i=[];for(var a in t.firstChild&&Uf(t.firstChild,function(t){z(e,function(e){e.name===t.name&&(r[e.name]?r[e.name].nodes.push(t):r[e.name]={filter:e,nodes:[t]})}),z(n,function(e){"string"==typeof t.attr(e.name)&&(o[e.name]?o[e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})})}),r)r.hasOwnProperty(a)&&i.push(r[a]);for(var a in o)o.hasOwnProperty(a)&&i.push(o[a]);return i}(e,t,n);z(r,function(t){z(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})})}function yl(e){var t=Ee(e).dom();return e.dom()===t.activeElement}function bl(e){var t=e!==undefined?e.dom():j.document;return k.from(t.activeElement).map(yt.fromDom)}function Cl(e,t){var n=zt(t)?Jc(t).length:Re(t).length+1;return n<e?n:e<0?0:e}function wl(e){return Xf.range(e.start(),Cl(e.soffset(),e.start()),e.finish(),Cl(e.foffset(),e.finish()))}function xl(e,t){return!Ge.isRestrictedNode(t.dom())&&(Bt(e,t)||ze(e,t))}function zl(t){return function(e){return xl(t,e.start())&&xl(t,e.finish())}}function El(e){return!0===e.inline||Yf.isIE()}function Nl(e){return Xf.range(yt.fromDom(e.startContainer),e.startOffset,yt.fromDom(e.endContainer),e.endOffset)}function Sl(e){var t=e.getSelection();return(t&&0!==t.rangeCount?k.from(t.getRangeAt(0)):k.none()).map(Nl)}function kl(e){var t=Ne(e);return Sl(t.dom()).filter(zl(e))}function Tl(e,t){return k.from(t).filter(zl(e)).map(wl)}function Al(e){var t=j.document.createRange();try{return t.setStart(e.start().dom(),e.soffset()),t.setEnd(e.finish().dom(),e.foffset()),k.some(t)}catch(n){return k.none()}}function Ml(t){return(t.bookmark?t.bookmark:k.none()).bind(function(e){return Tl(yt.fromDom(t.getBody()),e)}).bind(Al)}function Rl(t,e){oe().browser.isIE()?function(e){e.on("focusout",function(){Gf(e)})}(t):function(e,t){e.on("mouseup touchend",function(e){t.throttle()})}(t,e),t.on("keyup NodeChange",function(e){!function(e){return"nodechange"===e.type&&e.selectionChange}(e)&&Gf(t)})}function Dl(e){return Zf.isEditorUIElement(e)}function _l(t,e){var n=t?t.settings.custom_ui_selector:"";return null!==td.getParent(e,function(e){return Dl(e)||!!n&&t.dom.is(e,n)})}function Bl(r,e){var t=e.editor;ed(t),t.on("focusin",function(){var e=r.focusedEditor;e!==this&&(e&&e.fire("blur",{focusedEditor:this}),r.setActive(this),(r.focusedEditor=this).fire("focus",{blurredEditor:e}),this.focus(!0))}),t.on("focusout",function(){var t=this;pn.setEditorTimeout(t,function(){var e=r.focusedEditor;_l(t,function(){try{return j.document.activeElement}catch(e){return j.document.body}}())||e!==t||(t.fire("blur",{focusedEditor:null}),r.focusedEditor=null)})}),rf||(rf=function(e){var t,n=r.activeEditor;t=e.target,n&&t.ownerDocument===j.document&&(t===j.document.body||_l(n,t)||r.focusedEditor!==n||(n.fire("blur",{focusedEditor:null}),r.focusedEditor=null))},td.bind(j.document,"focusin",rf))}function Ol(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(td.unbind(j.document,"focusin",rf),rf=null)}function Hl(t,e){return function(e){return e.collapsed?k.from(Ka(e.startContainer,e.startOffset)).map(yt.fromDom):k.none()}(e).bind(function(e){return qn(e)?k.some(e):!1===Bt(t,e)?k.some(t):k.none()})}function Pl(t,e){Hl(yt.fromDom(t.getBody()),e).bind(function(e){return Pc.firstPositionIn(e.dom())}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})}function Ll(e){if(e.setActive)try{e.setActive()}catch(t){e.focus()}else e.focus()}function Vl(e){return yl(e)||function(t){return bl(Ee(t)).filter(function(e){return t.dom().contains(e.dom())})}(e).isSome()}function Il(e){return e.inline?function(e){var t=e.getBody();return t&&Vl(yt.fromDom(t))}(e):function(e){return e.iframeElement&&yl(yt.fromDom(e.iframeElement))}(e)}function Fl(e){return e instanceof ul}function Ul(e,t){e.dom.setHTML(e.getBody(),t),function(r){ud(r)&&Pc.firstPositionIn(r.getBody()).each(function(e){var t=e.getNode(),n=Ge.isTable(t)?Pc.firstPositionIn(t).getOr(e):e;r.selection.setRng(n.toRange())})}(e)}function jl(t,n,r){return void 0===r&&(r={}),r.format=r.format?r.format:"html",r.set=!0,r.content=Fl(n)?"":n,Fl(n)||r.no_events||(t.fire("BeforeSetContent",r),n=r.content),k.from(t.getBody()).fold($(n),function(e){return Fl(n)?function(e,t,n,r){vl(e.parser.getNodeFilters(),e.parser.getAttributeFilters(),n);var o=pl({validate:e.validate},e.schema).serialize(n);return r.content=Wn(yt.fromDom(t))?o:Mn.trim(o),Ul(e,r.content),r.no_events||e.fire("SetContent",r),n}(t,e,n,r):function(e,t,n,r){var o,i;return 0===n.length||/^\s+$/.test(n)?(i='<br data-mce-bogus="1">',"TABLE"===t.nodeName?n="<tr><td>"+i+"</td></tr>":/^(UL|OL)$/.test(t.nodeName)&&(n="<li>"+i+"</li>"),n=(o=mf(e))&&e.schema.isValidChild(t.nodeName.toLowerCase(),o.toLowerCase())?(n=i,e.dom.createHTML(o,e.settings.forced_root_block_attrs,n)):n||'<br data-mce-bogus="1">',Ul(e,n),e.fire("SetContent",r)):("raw"!==r.format&&(n=pl({validate:e.validate},e.schema).serialize(e.parser.parse(n,{isRootContent:!0,insert:!0}))),r.content=Wn(yt.fromDom(t))?n:Mn.trim(n),Ul(e,r.content),r.no_events||e.fire("SetContent",r)),r.content}(t,e,n,r)})}function ql(e){return k.from(e).each(function(e){return e.destroy()})}function $l(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement();r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&pd.remove(o.nextSibling),fd(e),e.editorManager.remove(e),!e.inline&&r&&function(e){pd.setStyle(e.id,"display",e.orgDisplay)}(e),dd(e),pd.remove(e.getContainer()),ql(t),ql(n),e.destroy()}}function Wl(e,t){var n=e.selection,r=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),ql(n),ql(r)),function(e){var t=e.formElement;t&&(t._mceOldSubmit&&(t.submit=t._mceOldSubmit,t._mceOldSubmit=null),pd.unbind(t,"submit reset",e.formEventDelegate))}(e),function(e){e.contentAreaContainer=e.formElement=e.container=e.editorContainer=null,e.bodyElement=e.contentDocument=e.contentWindow=null,e.iframeElement=e.targetElm=null,e.selection&&(e.selection=e.selection.win=e.selection.dom=e.selection.dom.doc=null)}(e),e.destroyed=!0):e.remove())}function Kl(a){return function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o=e[r];for(var i in o)vd.call(o,i)&&(n[i]=a(n[i],o[i]))}return n}}function Xl(e){var t=A(e)?e.join(" "):e,n=X(K(t)?t.split(" "):[],te);return y(n,function(e){return 0<e.length})}function Yl(e,t){return e.sections().hasOwnProperty(t)}function Gl(e,t,n,r){var o=Xl(n.forced_plugins),i=Xl(r.plugins),a=function(e,t){return Yl(e,t)?e.sections()[t]:{}}(t,"mobile"),u=a.plugins?Xl(a.plugins):i,s=function(e,t){return[].concat(Xl(e)).concat(Xl(t))}(o,e&&function(e,t,n){var r=e.sections();return Yl(e,t)&&r[t].theme===n}(t,"mobile","mobile")?function(e){return y(e,d(h,Nd))}(u):e&&Yl(t,"mobile")?u:i);return Mn.extend(r,{plugins:s.join(" ")})}function Jl(e,t,n,r,o){var i=e?{mobile:function(e){return G(G(G({},Sd),{resize:!1,toolbar_drawer:"scrolling",toolbar_sticky:!1}),e?{menubar:!1}:{})}(t)}:{},a=function(n,e){var t=ce(e,function(e,t){return h(n,t)});return Cd(t.t,t.f)}(["mobile"],yd(i,o)),u=Mn.extend(n,r,a.settings(),function(e,t){return e&&Yl(t,"mobile")}(e,a)?function(e,t,n){void 0===n&&(n={});var r=e.sections(),o=r.hasOwnProperty(t)?r[t]:{};return Mn.extend({},n,o)}(a,"mobile"):{},{validate:!0,external_plugins:function(e,t){var n=t.external_plugins?t.external_plugins:{};return e&&e.external_plugins?Mn.extend({},e.external_plugins,n):n}(r,a.settings())});return Gl(e,a,r,u)}function Ql(e,t,n,r,o){var i=function(e,t,n,r){var o={id:e,theme:"silver",toolbar_drawer:"floating",plugins:"",document_base_url:t,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,inline_styles:!0,convert_fonts_to_spans:!0,indent:!0,indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:r.convertURL,url_converter_scope:r};return G(G({},o),n?Sd:{})}(t,n,xd,e);return Jl(zd||Ed,zd,i,r,o)}function Zl(e,t,n){return k.from(t.settings[n]).filter(e)}function ef(e,t,n,r){var o=t in e.settings?e.settings[t]:n;return"hash"===r?function(e){var n={};return"string"==typeof e?z(0<e.indexOf("=")?e.split(/[;,](?![^=;,]*(?:[;,]|$))/):e.split(","),function(e){var t=e.split("=");1<t.length?n[Mn.trim(t[0])]=Mn.trim(t[1]):n[Mn.trim(t[0])]=Mn.trim(t[0])}):n=e,n}(o):"string"===r?Zl(K,e,t).getOr(n):"number"===r?Zl(_,e,t).getOr(n):"boolean"===r?Zl(R,e,t).getOr(n):"object"===r?Zl(T,e,t).getOr(n):"array"===r?Zl(A,e,t).getOr(n):"string[]"===r?Zl(function(t){return function(e){return A(e)&&w(e,t)}}(K),e,t).getOr(n):"function"===r?Zl(D,e,t).getOr(n):o}function tf(e,t){return t.dom()[e]}function nf(e,t){return parseInt(ve(t,e),10)}var rf,of=fl,af={trimExternal:dl,trimInternal:dl},uf=function(e){return e.getParam("iframe_attrs",{})},sf=function(e){return e.getParam("doctype","<!DOCTYPE html>")},cf=function(e){return e.getParam("document_base_url","")},lf=function(e){return hl(e,"body_id","tinymce")},ff=function(e){return hl(e,"body_class","")},df=function(e){return e.getParam("content_security_policy","")},hf=function(e){return e.getParam("br_in_pre",!0)},mf=function(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":!0===t?"p":t},gf=function(e){return e.getParam("forced_root_block_attrs",{})},pf=function(e){return e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption")},vf=function(e){return e.getParam("no_newline_selector","")},yf=function(e){return e.getParam("keep_styles",!0)},bf=function(e){return e.getParam("end_container_on_empty_block",!1)},Cf=function(e){return Mn.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large"))},wf=function(e){return Mn.explode(e.getParam("font_size_classes",""))},xf=function(e){return e.getParam("icons","","string")},zf=function(e){return e.getParam("icons_url","","string")},Ef=function(e){return e.getParam("images_dataimg_filter",$(!0),"function")},Nf=function(e){return e.getParam("automatic_uploads",!0,"boolean")},Sf=function(e){return e.getParam("images_reuse_filename",!1,"boolean")},kf=function(e){return e.getParam("images_replace_blob_uris",!0,"boolean")},Tf=function(e){return e.getParam("images_upload_url","","string")},Af=function(e){return e.getParam("images_upload_base_path","","string")},Mf=function(e){return e.getParam("images_upload_credentials",!1,"boolean")},Rf=function(e){return e.getParam("images_upload_handler",null,"function")},Df=function(e){return e.getParam("content_css_cors",!1,"boolean")},_f=function(e){return e.getParam("referrer_policy","","string")},Bf=function(e){return e.getParam("language","en","string")},Of=function(e){return e.getParam("language_url","","string")},Hf=function(e){return e.getParam("indent_use_margin",!1)},Pf=function(e){return e.getParam("indentation","40px","string")},Lf=function(e){var t=e.settings.content_css;return K(t)?X(t.split(","),te):A(t)?t:!1===t||e.inline?[]:["default"]},Vf=function(e){return e.getParam("directionality",ra.isRtl()?"rtl":undefined)},If=function(e){return e.getParam("inline_boundaries_selector","a[href],code,.mce-annotation","string")},Ff=Mn.makeMap,Uf=function(e,t){t(e),e.firstChild&&Uf(e.firstChild,t),e.next&&Uf(e.next,t)},jf=function(a){if(!A(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};return z(a,function(e,r){var t=Et(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!A(i))throw new Error("case arguments must be an array");u.push(o),n[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var n=new Array(e),t=0;t<n.length;t++)n[t]=arguments[t];return{fold:function(){if(arguments.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+arguments.length);return arguments[r].apply(null,n)},match:function(e){var t=Et(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(","));if(!w(u,function(e){return h(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+u.join(", "));return e[o].apply(null,n)},log:function(e){j.console.log(e,{constructors:u,constructor:o,params:n})}}}}),n},qf={create:be("start","soffset","finish","foffset")},$f=jf([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Wf=($f.before,$f.on,$f.after,function(e){return e.fold(W,W,W)}),Kf=jf([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Xf={domRange:Kf.domRange,relative:Kf.relative,exact:Kf.exact,exactFromRange:function(e){return Kf.exact(e.start(),e.soffset(),e.finish(),e.foffset())},getWin:function(e){var t=function(e){return e.match({domRange:function(e){return yt.fromDom(e.startContainer)},relative:function(e,t){return Wf(e)},exact:function(e,t,n,r){return e}})}(e);return Ne(t)},range:qf.create},Yf=oe().browser,Gf=function(e){var t=El(e)?kl(yt.fromDom(e.getBody())):k.none();e.bookmark=t.isSome()?t:e.bookmark},Jf=function(t){Ml(t).each(function(e){t.selection.setRng(e)})},Qf=Ml,Zf={isEditorUIElement:function(e){var t=e.className.toString();return-1!==t.indexOf("tox-")||-1!==t.indexOf("mce-")}},ed=function(e){var t=aa(function(){Gf(e)},0);e.on("init",function(){e.inline&&function(e,t){function n(){t.throttle()}Xi.DOM.bind(j.document,"mouseup",n),e.on("remove",function(){Xi.DOM.unbind(j.document,"mouseup",n)})}(e,t),Rl(e,t)}),e.on("remove",function(){t.cancel()})},td=Xi.DOM,nd=function(e){e.on("AddEditor",d(Bl,e)),e.on("RemoveEditor",d(Ol,e))},rd=function(e){var t=e.classList;return t!==undefined&&(t.contains("tox-edit-area")||t.contains("tox-edit-area__iframe")||t.contains("mce-content-body"))},od=_l,id=function(e){return e.editorManager.setActive(e)},ad=function(e,t){e.removed||(t?id(e):function(t){var e=t.selection,n=t.getBody(),r=e.getRng();t.quirks.refreshContentEditable(),t.bookmark!==undefined&&!1===Il(t)&&Qf(t).each(function(e){t.selection.setRng(e),r=e});var o=function(t,e){return t.dom.getParent(e,function(e){return"true"===t.dom.getContentEditable(e)})}(t,e.getNode());if(t.$.contains(n,o))return Ll(o),Pl(t,r),id(t);t.inline||(Nn.opera||Ll(n),t.getWin().focus()),(Nn.gecko||t.inline)&&(Ll(n),Pl(t,r)),id(t)}(e))},ud=Il,sd=function(e){return Il(e)||function(t){return bl().filter(function(e){return!rd(e.dom())&&od(t,e.dom())}).isSome()}(e)},cd=function(e,t){return e.fire("PreProcess",t)},ld=function(e,t){return e.fire("PostProcess",t)},fd=function(e){return e.fire("remove")},dd=function(e){return e.fire("detach")},hd=function(e,t){return e.fire("SwitchMode",{mode:t})},md=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},gd=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},pd=Xi.DOM,vd=Object.prototype.hasOwnProperty,yd=Kl(function(e,t){return T(e)&&T(t)?yd(e,t):t}),bd=Kl(function(e,t){return t}),Cd=be("sections","settings"),wd=oe().deviceType,xd=wd.isTouch(),zd=wd.isPhone(),Ed=wd.isTablet(),Nd=["lists","autolink","autosave"],Sd={table_grid:!1,object_resizing:!1,resize:!1},kd=d(tf,"clientWidth"),Td=d(tf,"clientHeight"),Ad=d(nf,"margin-top"),Md=d(nf,"margin-left"),Rd=function(e,t,n){var r=yt.fromDom(e.getBody()),o=e.inline?r:function(e){return yt.fromDom(e.dom().ownerDocument.documentElement)}(r),i=function(e,t,n,r){var o=function(e){return e.dom().getBoundingClientRect()}(t);return{x:n-(e?o.left+t.dom().clientLeft+Md(t):0),y:r-(e?o.top+t.dom().clientTop+Ad(t):0)}}(e.inline,o,t,n);return function(e,t,n){var r=kd(e),o=Td(e);return 0<=t&&0<=n&&t<=r&&n<=o}(o,i.x,i.y)},Dd=function(e){return function(e){return k.from(e).map(yt.fromDom)}(e.inline?e.getBody():e.getContentAreaContainer()).map(function(e){return Bt(Ee(e),e)}).getOr(!1)};function _d(n){function r(){var e=n.theme;return e&&e.getNotificationManagerImpl?e.getNotificationManagerImpl():function t(){function e(){throw new Error("Theme did not provide a NotificationManager implementation.")}return{open:e,close:e,reposition:e,getArgs:e}}()}function o(){0<u.length&&r().reposition(u)}function i(t){p(u,function(e){return e===t}).each(function(e){u.splice(e,1)})}function t(t){if(!n.removed&&Dd(n))return g(u,function(e){return function(e,t){return!(e.type!==t.type||e.text!==t.text||e.progressBar||e.timeout||t.progressBar||t.timeout)}(r().getArgs(e),t)}).getOrThunk(function(){n.editorManager.setActive(n);var e=r().open(t,function(){i(e),o()});return function(e){u.push(e)}(e),o(),e})}var a,u=[];return(a=n).on("SkinLoaded",function(){var e=a.settings.service_message;e&&t({text:e,type:"warning",timeout:0})}),a.on("ResizeEditor ResizeWindow NodeChange",function(){pn.requestAnimationFrame(o)}),a.on("remove",function(){z(u.slice(),function(e){r().close(e)})}),{open:t,close:function(){k.from(u[0]).each(function(e){r().close(e),i(e),o()})},getNotifications:function(){return u}}}function Bd(n){function r(){var e=n.theme;return e&&e.getWindowManagerImpl?e.getWindowManagerImpl():function t(){function e(){throw new Error("Theme did not provide a WindowManager implementation.")}return{open:e,openUrl:e,alert:e,confirm:e,close:e,getParams:e,setParams:e}}()}function o(e,t){return function(){return t?t.apply(e,arguments):undefined}}function i(e){s.push(e),function(e){n.fire("OpenWindow",{dialog:e})}(e)}function a(t){!function(e){n.fire("CloseWindow",{dialog:e})}(t),0===(s=y(s,function(e){return e!==t})).length&&n.focus()}function u(e){n.editorManager.setActive(n),Gf(n);var t=e();return i(t),t}var s=[];return n.on("remove",function(){z(s,function(e){r().close(e)})}),{open:function(e,t){return u(function(){return r().open(e,t,a)})},openUrl:function(e){return u(function(){return r().openUrl(e,a)})},alert:function(e,t,n){r().alert(e,o(n||this,t))},confirm:function(e,t,n){r().confirm(e,o(n||this,t))},close:function(){k.from(s[s.length-1]).each(function(e){r().close(e),a(e)})}}}function Od(e,t){e.notificationManager.open({type:"error",text:t})}function Hd(e,t){e._skinLoaded?Od(e,t):e.on("SkinLoaded",function(){Od(e,t)})}function Pd(e){j.console.error(e)}function Ld(e,t,n){return n?"Failed to load "+e+": "+n+" from url "+t:"Failed to load "+e+" url: "+t}var Vd,Id=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=j.window.console;r&&(r.error?r.error.apply(r,arguments):r.log.apply(r,arguments))},Fd={pluginLoadError:function(e,t){Pd(Ld("plugin",e,t))},iconsLoadError:function(e,t){Pd(Ld("icons",e,t))},languageLoadError:function(e,t){Pd(Ld("language",e,t))},pluginInitError:function(e,t,n){var r=ra.translate(["Failed to initialize plugin: {0}",t]);Id(r,n),Hd(e,r)},uploadError:function(e,t){Hd(e,ra.translate(["Failed to upload image: {0}",t]))},displayError:Hd,initError:Id},Ud=(Vd={},{add:function(e,t){Vd[e]=t},get:function(e){return Vd[e]?Vd[e]:{icons:{}}},has:function(e){return kt(Vd,e)}}),jd=ga.PluginManager,qd=ga.ThemeManager;function $d(s,a){function n(e,t,n,r){var o,i;(o=new j.XMLHttpRequest).open("POST",a.url),o.withCredentials=a.credentials,o.upload.onprogress=function(e){r(e.loaded/e.total*100)},o.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e;o.status<200||300<=o.status?n("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?t(function(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}(a.basePath,e.location)):n("Invalid JSON: "+o.responseText)},(i=new j.FormData).append("file",e.blob(),e.filename()),o.send(i)}function c(e,t){return{url:t,blobInfo:e,status:!0}}function l(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function f(e,t){Mn.each(o[e],function(e){e(t)}),delete o[e]}function r(e,t){return e=Mn.grep(e,function(e){return!s.isUploaded(e.blobUri())}),Zt.all(Mn.map(e,function(e){return s.isPending(e.blobUri())?function(e){var t=e.blobUri();return new Zt(function(e){o[t]=o[t]||[],o[t].push(e)})}(e):function(i,a,u){return s.markPending(i.blobUri()),new Zt(function(t){function e(){}var n;try{var r=function(){n&&(n.close(),e)};a(i,function(e){r(),s.markUploaded(i.blobUri(),e),f(i.blobUri(),c(i,e)),t(c(i,e))},function(e){r(),s.removeFailed(i.blobUri()),f(i.blobUri(),l(i,e)),t(l(i,e))},function(e){e<0||100<e||(n=n||u()).progressBar.value(e)})}catch(o){t(l(i,o.message))}})}(e,a.handler,t)}))}var o={};return!1===D(a.handler)&&(a.handler=n),{upload:function(e,t){return!a.url&&function(e){return e===n}(a.handler)?new Zt(function(e){e([])}):r(e,t)}}}function Wd(e){var t,n,r=decodeURIComponent(e).split(",");return(n=/data:([^;]+)/.exec(r[0]))&&(t=n[1]),{type:t,data:r[1]}}function Kd(e){return(e||"blobid")+Jd++}var Xd=function(e){return 0===e.indexOf("blob:")?function(i){return new Zt(function(e,t){function n(){t("Cannot convert "+i+" to Blob. Resource might not exist or is inaccessible.")}try{var r=new j.XMLHttpRequest;r.open("GET",i,!0),r.responseType="blob",r.onload=function(){200===this.status?e(this.response):n()},r.onerror=n,r.send()}catch(o){n()}})}(e):0===e.indexOf("data:")?function(i){return new Zt(function(e){var t,n,r,o=Wd(i);try{t=j.atob(o.data)}catch(yN){return void e(new j.Blob([]))}for(n=new Uint8Array(t.length),r=0;r<n.length;r++)n[r]=t.charCodeAt(r);e(new j.Blob([n],{type:o.type}))})}(e):null},Yd=function(n){return new Zt(function(e){var t=new j.FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(n)})},Gd=Wd,Jd=0;function Qd(o,i){var a={};return{findAll:function(e,n){var t;n=n||$(!0),t=y(function(e){return e?P(e.getElementsByTagName("img")):[]}(e),function(e){var t=e.src;return!!Nn.fileApi&&(!e.hasAttribute("data-mce-bogus")&&(!e.hasAttribute("data-mce-placeholder")&&(!(!t||t===Nn.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e)))))});var r=X(t,function(n){if(a[n.src])return new Zt(function(t){a[n.src].then(function(e){if("string"==typeof e)return e;t({image:n,blobInfo:e.blobInfo})})});var e=new Zt(function(e,t){!function(n,r,o,t){var i,a;0!==r.src.indexOf("blob:")?(i=Gd(r.src).data,(a=n.findFirst(function(e){return e.base64()===i}))?o({image:r,blobInfo:a}):Xd(r.src).then(function(e){a=n.create(Kd(),e,i),n.add(a),o({image:r,blobInfo:a})},function(e){t(e)})):(a=n.getByUri(r.src))?o({image:r,blobInfo:a}):Xd(r.src).then(function(t){Yd(t).then(function(e){i=Gd(e).data,a=n.create(Kd(),t,i),n.add(a),o({image:r,blobInfo:a})})},function(e){t(e)})}(i,n,e,t)}).then(function(e){return delete a[e.image.src],e})["catch"](function(e){return delete a[n.src],e});return a[n.src]=e});return Zt.all(r)}}}var Zd=0,eh=function(e){return e+Zd+++function(){function e(){return Math.round(4294967295*Math.random()).toString(36)}return"s"+(new Date).getTime().toString(36)+e()+e()+e()}()};function th(o){function t(t){return function(e){return o.selection?t(e):[]}}function r(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e}function i(e,t,n){return e=r(e,'src="'+t+'"','src="'+n+'"'),e=r(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function n(t,n){z(o.undoManager.data,function(e){"fragmented"===e.type?e.fragments=X(e.fragments,function(e){return i(e,t,n)}):e.content=i(e.content,t,n)})}function a(){return o.notificationManager.open({text:o.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})}function u(e,t){h.removeByUri(e.src),n(e.src,t),o.$(e).attr({src:Sf(o)?t+"?"+(new Date).getTime():t,"data-mce-src":o.convertURL(t,"src")})}function s(n){return f=f||$d(m,{url:Tf(o),basePath:Af(o),credentials:Mf(o),handler:Rf(o)}),p().then(t(function(r){var e;return e=X(r,function(e){return e.blobInfo}),f.upload(e,a).then(t(function(e){var t=X(e,function(e,t){var n=r[t].image;return e.status&&kf(o)?u(n,e.url):e.error&&Fd.uploadError(o,e.error),{element:n,status:e.status}});return n&&n(t),t}))}))}function e(e){if(Nf(o))return s(e)}function c(t){return!1!==w(g,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||Ef(o)(t))}function l(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=m.getResultUri(n);if(t)return'src="'+t+'"';var r=h.getByUri(n);return(r=r||b(o.editorManager.get(),function(e,t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null))?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})}var f,d,h=function(){var n=[],o=function(e){var t,n;if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");return t=e.id||eh("blobid"),n=e.name||t,{id:$(t),name:$(n),filename:$(n+"."+function(e){return{"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"}[e.toLowerCase()]||"dat"}(e.blob.type)),blob:$(e.blob),base64:$(e.base64),blobUri:$(e.blobUri||j.URL.createObjectURL(e.blob)),uri:$(e.uri)}},t=function(t){return e(function(e){return e.id()===t})},e=function(e){return y(n,e)[0]};return{create:function(e,t,n,r){if(K(e))return o({id:e,name:r,blob:t,base64:n});if(T(e))return o(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t,getByUri:function(t){return e(function(e){return e.blobUri()===t})},findFirst:e,removeByUri:function(t){n=y(n,function(e){return e.blobUri()!==t||(j.URL.revokeObjectURL(e.blobUri()),!1)})},destroy:function(){z(n,function(e){j.URL.revokeObjectURL(e.blobUri())}),n=[]}}}(),m=function v(){function n(e,t){return{status:e,resultUri:t}}function t(e){return e in r}var r={};return{hasBlobUri:t,getResultUri:function(e){var t=r[e];return t?t.resultUri:null},isPending:function(e){return!!t(e)&&1===r[e].status},isUploaded:function(e){return!!t(e)&&2===r[e].status},markPending:function(e){r[e]=n(1,null)},markUploaded:function(e,t){r[e]=n(2,t)},removeFailed:function(e){delete r[e]},destroy:function(){r={}}}}(),g=[],p=function(){return(d=d||Qd(m,h)).findAll(o.getBody(),c).then(t(function(e){return e=y(e,function(e){return"string"!=typeof e||(Fd.displayError(o,e),!1)}),z(e,function(e){n(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))};return o.on("SetContent",function(){Nf(o)?e():p()}),o.on("RawSaveContent",function(e){e.content=l(e.content)}),o.on("GetContent",function(e){e.source_view||"raw"===e.format||(e.content=l(e.content))}),o.on("PostRender",function(){o.parser.addNodeFilter("img",function(e){z(e,function(e){var t=e.attr("src");if(!h.getByUri(t)){var n=m.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:h,addFilter:function(e){g.push(e)},uploadImages:s,uploadImagesAuto:e,scanForImages:p,destroy:function(){h.destroy(),m.destroy(),d=f=null}}}function nh(e,t,n){return Bt(t,e)?function(e){return e.slice(0,-1)}(function(e,t){for(var n=D(t)?t:c,r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,a=yt.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(e,function(e){return n(e)||ze(e,t)})):[]}function rh(e,t){return nh(e,t,$(!1))}function oh(e,t){return e.hasOwnProperty(t.nodeName)}function ih(e,t){if(Ge.isText(t)){if(0===t.nodeValue.length)return!0;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||oh(e,t.nextSibling)))return!0}return!1}function ah(e){var t,n,r,o,i,a,u,s,c,l,f=e.dom,d=e.selection,h=e.schema,m=h.getBlockElements(),g=d.getStart(),p=e.getBody(),v=mf(e);if(g&&Ge.isElement(g)&&v&&(l=p.nodeName.toLowerCase(),h.isValidChild(l,v.toLowerCase())&&!function(t,e,n){return C(lh(yt.fromDom(n),yt.fromDom(e)),function(e){return oh(t,e.dom())})}(m,p,g))){for(n=(t=d.getRng()).startContainer,r=t.startOffset,o=t.endContainer,i=t.endOffset,c=ud(e),g=p.firstChild;g;)if(y=m,b=g,Ge.isText(b)||Ge.isElement(b)&&!oh(y,b)&&!Fc(b)){if(ih(m,g)){g=(u=g).nextSibling,f.remove(u);continue}a||(a=f.create(v,gf(e)),g.parentNode.insertBefore(a,g),s=!0),g=(u=g).nextSibling,a.appendChild(u)}else a=null,g=g.nextSibling;var y,b;s&&c&&(t.setStart(n,r),t.setEnd(o,i),d.setRng(t),e.nodeChanged())}}function uh(o,e){return Ya(function(e){var t=e.startContainer,n=e.startOffset;return Ge.isText(t)?0===n?k.some(yt.fromDom(t)):k.none():k.from(t.childNodes[n]).map(yt.fromDom)}(e),function(e){var t=e.endContainer,n=e.endOffset;return Ge.isText(t)?n===t.data.length?k.some(yt.fromDom(t)):k.none():k.from(t.childNodes[n-1]).map(yt.fromDom)}(e),function(e,t){var n=g(mh(o),d(ze,e)),r=g(gh(o),d(ze,t));return n.isSome()&&r.isSome()}).getOr(!1)}function sh(e,t,n,r){var o=n,i=new yi(n,o),a=e.schema.getNonEmptyElements();do{if(3===n.nodeType&&0!==Mn.trim(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n))}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))}function ch(e){var t=e.selection.getSel();return t&&0<t.rangeCount}var lh=rh,fh=function(e,t){return[e].concat(rh(e,t))},dh=function(e){mf(e)&&e.on("NodeChange",d(ah,e))},hh=function(e,t){return e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset},mh=function(t){return _e(t).fold($([t]),function(e){return[t].concat(mh(e))})},gh=function(t){return Be(t).fold($([t]),function(e){return"br"===ie(e)?ke(e).map(function(e){return[t].concat(gh(e))}).getOr([]):[t].concat(gh(e))})},ph=(vh.prototype.nodeChanged=function(e){var t,n,r,o=this.editor.selection;this.editor.initialized&&o&&!this.editor.settings.disable_nodechange&&!this.editor.readonly&&(r=this.editor.getBody(),(t=o.getStart(!0)||r).ownerDocument===this.editor.getDoc()&&this.editor.dom.isChildOf(t,r)||(t=r),n=[],this.editor.dom.getParent(t,function(e){if(e===r)return!0;n.push(e)}),(e=e||{}).element=t,e.parents=n,this.editor.fire("NodeChange",e))},vh.prototype.isSameElementPath=function(e){var t,n;if((n=this.editor.$(e).parentsUntil(this.editor.getBody()).add(e)).length===this.lastPath.length){for(t=n.length;0<=t&&n[t]===this.lastPath[t];t--);if(-1===t)return this.lastPath=n,!0}return this.lastPath=n,!1},vh);function vh(r){var o;this.lastPath=[],this.editor=r;var t=this;"onselectionchange"in r.getDoc()||r.on("NodeChange click mouseup keyup focus",function(e){var t,n;n={startContainer:(t=r.selection.getRng()).startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset},"nodechange"!==e.type&&hh(n,o)||r.fire("SelectionChange"),o=n}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!e||!Nn.range&&r.selection.isCollapsed()||ch(r)&&!t.isSameElementPath(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("mouseup",function(e){!e.isDefaultPrevented()&&ch(r)&&("IMG"===r.selection.getNode().nodeName?pn.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())})}function yh(e){return/^[\r\n\t ]$/.test(e)}function bh(e){return!yh(e)&&!Mh(e)}function Ch(n,r,o){return k.from(o.container()).filter(Ge.isText).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})}function wh(e){var t=e.container();return Ge.isText(t)&&0===t.data.length}function xh(t,n){return function(e){return k.from(ws(t?0:-1,e)).filter(n).isSome()}}function zh(e){return"IMG"===e.nodeName&&"block"===ve(yt.fromDom(e),"display")}function Eh(e){return Ge.isContentEditableFalse(e)&&!Ge.isBogusAll(e)}function Nh(e){return b(e,function(e,t){return e.concat(function(t){function e(e){return X(e,function(e){return(e=Ia(e)).node=t,e})}if(Ge.isElement(t))return e(t.getClientRects());if(Ge.isText(t)){var n=t.ownerDocument.createRange();return n.setStart(t,0),n.setEnd(t,t.data.length),e(n.getClientRects())}}(t))},[])}var Sh,kh,Th,Ah={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,END:35,HOME:36,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(e){return Nn.mac?e.metaKey:e.ctrlKey&&!e.altKey}},Mh=(Sh="\xa0",function(e){return Sh===e}),Rh=d(Ch,!0,yh),Dh=d(Ch,!1,yh),_h=xh(!0,zh),Bh=xh(!1,zh),Oh=xh(!0,Ge.isTable),Hh=xh(!1,Ge.isTable),Ph=xh(!0,Eh),Lh=xh(!1,Eh);(Th=kh=kh||{})[Th.Up=-1]="Up",Th[Th.Down=1]="Down";function Vh(o,i,a,e,u,t){function n(e){var t,n,r;for(r=Nh([e]),-1===o&&(r=r.reverse()),t=0;t<r.length;t++)if(n=r[t],!a(n,s)){if(0<l.length&&i(n,kn.last(l))&&c++,n.line=c,u(n))return!0;l.push(n)}}var r,s,c=0,l=[];return(s=kn.last(t.getClientRects()))&&(n(r=t.getNode()),function(e,t,n,r){for(;r=ys(r,e,Va,t);)if(n(r))return}(o,e,n,r)),l}function Ih(t){return function(e){return function(e,t){return t.line>e}(t,e)}}function Fh(t){return function(e){return function(e,t){return t.line===e}(t,e)}}function Uh(e,t){return Math.abs(e.left-t)}function jh(e,t){return Math.abs(e.right-t)}function qh(e,t){return e>=t.left&&e<=t.right}function $h(e,o){return kn.reduce(e,function(e,t){var n,r;return n=Math.min(Uh(e,o),jh(e,o)),r=Math.min(Uh(t,o),jh(t,o)),qh(o,t)?t:qh(o,e)?e:r===n&&Ym(t.node)?t:r<n?t:e})}function Wh(e,t,n,r){for(;r=Gm(r,e,Va,t);)if(n(r))return}function Kh(e,t,n){var r,o=Nh(function(e){return y(P(e.getElementsByTagName("*")),ms)}(e)),i=y(o,function(e){return n>=e.top&&n<=e.bottom});return(r=(r=$h(i,t))&&$h(function(e,r){function t(t,e){var n;return n=y(Nh([e]),function(e){return!t(e,r)}),o=o.concat(n),0===n.length}var o=[];return o.push(r),Wh(kh.Up,e,d(t,ja),r.node),Wh(kh.Down,e,d(t,qa),r.node),o}(e,r),t))&&ms(r.node)?function(e,t){return{node:e.node,before:Uh(e,t)<jh(e,t)}}(r,t):null}function Xh(e){var t,n,r,o;return o=e.getBoundingClientRect(),n=(t=e.ownerDocument).documentElement,r=t.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}}function Yh(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Gh(i,a){return function(e){if(function(e){return 0===e.button}(e)){var t=g(a.dom.getParents(e.target),Tu(Zm,eg)).getOr(null);if(function(e,t){return Zm(t)&&t!==e}(a.getBody(),t)){var n=a.dom.getPos(t),r=a.getBody(),o=a.getDoc().documentElement;i.element=t,i.screenX=e.screenX,i.screenY=e.screenY,i.maxX=(a.inline?r.scrollWidth:o.offsetWidth)-2,i.maxY=(a.inline?r.scrollHeight:o.offsetHeight)-2,i.relX=e.pageX-n.x,i.relY=e.pageY-n.y,i.width=t.offsetWidth,i.height=t.offsetHeight,i.ghost=function(e,t,n,r){var o=t.cloneNode(!0);e.dom.setStyles(o,{width:n,height:r}),e.dom.setAttrib(o,"data-mce-selected",null);var i=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(a,t,i.width,i.height)}}}}function Jh(r,o){return function(e){if(r.dragging&&function(e,t,n){return t!==n&&!e.dom.isChildOf(t,n)&&!Zm(t)}(o,function(e){var t=e.getSel().getRangeAt(0).startContainer;return 3===t.nodeType?t.parentNode:t}(o.selection),r.element)){var t=function(e){var t=e.cloneNode(!0);return t.removeAttribute("data-mce-selected"),t}(r.element),n=o.fire("drop",{targetClone:t,clientX:e.clientX,clientY:e.clientY});n.isDefaultPrevented()||(t=n.targetClone,o.undoManager.transact(function(){Yh(r.element),o.insertContent(o.dom.getOuterHTML(t)),o._selectionOverrides.hideFakeCaret()}))}tg(r)}}function Qh(e){var t,n,r,o,i,a,u={};t=Xi.DOM,a=j.document,n=Gh(u,e),r=function(r,o){var i=pn.throttle(function(e,t){o._selectionOverrides.hideFakeCaret(),o.selection.placeCaretAt(e,t)},0);return function(e){var t=Math.max(Math.abs(e.screenX-r.screenX),Math.abs(e.screenY-r.screenY));if(function(e){return e.element}(r)&&!r.dragging&&10<t){if(o.fire("dragstart",{target:r.element}).isDefaultPrevented())return;r.dragging=!0,o.focus()}if(r.dragging){var n=function(e,t){return{pageX:t.pageX-e.relX,pageY:t.pageY+5}}(r,Qm(o,e));!function(e,t){e.parentNode!==t&&t.appendChild(e)}(r.ghost,o.getBody()),function(e,t,n,r,o,i){var a=0,u=0;e.style.left=t.pageX+"px",e.style.top=t.pageY+"px",t.pageX+n>o&&(a=t.pageX+n-o),t.pageY+r>i&&(u=t.pageY+r-i),e.style.width=n-a+"px",e.style.height=r-u+"px"}(r.ghost,n,r.width,r.height,r.maxX,r.maxY),i(e.clientX,e.clientY)}}}(u,e),o=Jh(u,e),i=function(e,t){return function(){e.dragging&&t.fire("dragend"),tg(e)}}(u,e),e.on("mousedown",n),e.on("mousemove",r),e.on("mouseup",o),t.bind(a,"mousemove",r),t.bind(a,"mouseup",i),e.on("remove",function(){t.unbind(a,"mousemove",r),t.unbind(a,"mouseup",i)})}function Zh(e,t,n,r,o){return t._selectionOverrides.showCaret(e,n,r,o)}function em(e,t){return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?null:function(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}(t)}function tm(e,t,n){var r=Es(1,e.getBody(),t),o=Ds.fromRangeStart(r),i=o.getNode();if(og(i))return Zh(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(og(a))return Zh(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return og(e)||rg(e)});return og(u)?Zh(1,e,u,!1,n):null}function nm(e,t,n){if(!t||!t.collapsed)return t;var r=tm(e,t,n);return r||t}function rm(e,t){for(var n=e.getBody();t&&t!==n;){if(ag(t)||ug(t))return t;t=t.parentNode}return null}function om(g){function a(e){e&&g.selection.setRng(e)}function o(){return g.selection.getRng()}function p(e,t,n,r){return void 0===r&&(r=!0),g.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&g.selection.scrollIntoView(t,-1===e),u.show(n,t))}function t(e){return Da(e)||hu(e)||mu(e)}var v,y=g.getBody(),u=ds(g.getBody(),function(e){return g.dom.isBlock(e)},function(){return ud(g)}),b="sel-"+g.dom.uniqueId(),C=function(e){return t(e.startContainer)||t(e.endContainer)},s=function(e){var t=g.schema.getShortEndedElements(),n=g.dom.createRng(),r=e.startContainer,o=e.startOffset,i=e.endContainer,a=e.endOffset;return kt(t,r.nodeName.toLowerCase())?0===o?n.setStartBefore(r):n.setStartAfter(r):n.setStart(r,o),kt(t,i.nodeName.toLowerCase())?0===a?n.setEndBefore(i):n.setEndAfter(i):n.setEnd(i,a),n},c=function(e,t){var n,r,o,i,a,u,s,c,l,f,d=g.$,h=g.dom;if(!e)return null;if(e.collapsed){if(!C(e))if(!1===t){if(c=Ss(-1,y,e),ms(c.getNode(!0)))return p(-1,c.getNode(!0),!1,!1);if(ms(c.getNode()))return p(-1,c.getNode(),!c.isAtEnd(),!1)}else{if(c=Ss(1,y,e),ms(c.getNode()))return p(1,c.getNode(),!c.isAtEnd(),!1);if(ms(c.getNode(!0)))return p(1,c.getNode(!0),!1,!1)}return null}if(i=e.startContainer,a=e.startOffset,u=e.endOffset,3===i.nodeType&&0===a&&ug(i.parentNode)&&(i=i.parentNode,a=h.nodeIndex(i),i=i.parentNode),1!==i.nodeType)return null;if(u===a+1&&i===e.endContainer&&(n=i.childNodes[a]),!ug(n))return null;if(l=f=n.cloneNode(!0),(s=g.fire("ObjectSelected",{target:n,targetClone:l})).isDefaultPrevented())return null;r=wa(yt.fromDom(g.getBody()),"#"+b).fold(function(){return d([])},function(e){return d([e.dom()])}),l=s.targetClone,0===r.length&&(r=d('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",b)).appendTo(g.getBody()),e=g.dom.createRng(),l===f&&Nn.ie?(r.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(l),e.setStartAfter(r[0].firstChild.firstChild),e.setEndAfter(l)):(r.empty().append("\xa0").append(l).append("\xa0"),e.setStart(r[0].firstChild,1),e.setEnd(r[0].lastChild,0)),r.css({top:h.getPos(n,g.getBody()).y}),r[0].focus(),(o=g.selection.getSel()).removeAllRanges(),o.addRange(e);var m=yt.fromDom(n);return z(ma(yt.fromDom(g.getBody()),"*[data-mce-selected]"),function(e){ze(m,e)||pe(e,"data-mce-selected")}),g.dom.getAttrib(n,"data-mce-selected")||n.setAttribute("data-mce-selected","1"),v=n,w(),e},l=function(){v&&(v.removeAttribute("data-mce-selected"),wa(yt.fromDom(g.getBody()),"#"+b).each(_i),v=null),wa(yt.fromDom(g.getBody()),"#"+b).each(_i),v=null},w=function(){u.hide()};return Nn.ceFalse&&function(){g.on("mouseup",function(e){var t=o();t.collapsed&&Rd(g,e.clientX,e.clientY)&&a(tm(g,t,!1))}),g.on("click",function(e){var t;(t=rm(g,e.target))&&(ug(t)&&(e.preventDefault(),g.focus()),ag(t)&&g.dom.isChildOf(t,g.selection.getNode())&&l())}),g.on("blur NewBlock",function(){l()}),g.on("ResizeWindow FullscreenStateChanged",function(){return u.reposition()});function i(e,t){var n=g.dom.getParent(e,g.dom.isBlock),r=g.dom.getParent(t,g.dom.isBlock);return!(!n||!g.dom.isChildOf(n,r)||!1!==ug(rm(g,n)))||n&&!function(e,t){return g.dom.getParent(e,g.dom.isBlock)===g.dom.getParent(t,g.dom.isBlock)}(n,r)&&function(e){var t=rc(e);if(!e.firstChild)return!1;var n=Ds.before(e.firstChild),r=t.next(n);return r&&!Ph(r)&&!Lh(r)}(n)}var n,r;r=!1,(n=g).on("touchstart",function(){r=!1}),n.on("touchmove",function(){r=!0}),n.on("touchend",function(e){if(!r){var t=rm(n,e.target);ug(t)&&(e.preventDefault(),c(em(n,t)))}},!0),g.on("mousedown",function(e){var t,n=e.target;if((n===y||"HTML"===n.nodeName||g.dom.isChildOf(n,y))&&!1!==Rd(g,e.clientX,e.clientY))if(t=rm(g,n))ug(t)?(e.preventDefault(),c(em(g,t))):(l(),ag(t)&&e.shiftKey||Jm(e.clientX,e.clientY,g.selection.getRng())||(w(),g.selection.placeCaretAt(e.clientX,e.clientY)));else if(!1===ms(n)){l(),w();var r=Kh(y,e.clientX,e.clientY);if(r&&!i(e.target,r.node)){e.preventDefault();var o=p(1,r.node,r.before,!1);g.getBody().focus(),a(o)}}}),g.on("keypress",function(e){Ah.modifierPressed(e)||(e.keyCode,ug(g.selection.getNode())&&e.preventDefault())}),g.on("GetSelectionRange",function(e){var t=e.range;if(v){if(!v.parentNode)return void(v=null);(t=t.cloneRange()).selectNode(v),e.range=t}}),g.on("SetSelectionRange",function(e){e.range=s(e.range);var t=c(e.range,e.forward);t&&(e.range=t)});g.on("AfterSetSelectionRange",function(e){var t=e.range;C(t)||function(e){return"mcepastebin"===e.id}(t.startContainer.parentNode)||w(),function(e){return g.dom.hasClass(e,"mce-offscreen-selection")}(t.startContainer.parentNode)||l()}),g.on("copy",function(e){var t=e.clipboardData;if(!e.isDefaultPrevented()&&e.clipboardData&&!Nn.ie){var n=function(){var e=g.dom.get(b);return e?e.getElementsByTagName("*")[0]:e}();n&&(e.preventDefault(),t.clearData(),t.setData("text/html",n.outerHTML),t.setData("text/plain",n.outerText))}}),ng(g),ig(g)}(),{showCaret:p,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Pa(e),a(o()),g.selection.scrollIntoView(e))},hideFakeCaret:w,destroy:function(){u.destroy(),v=null}}}function im(e){return Ge.isElement(e)?e.outerHTML:Ge.isText(e)?ir.encodeRaw(e.data,!1):Ge.isComment(e)?"\x3c!--"+e.data+"--\x3e":""}function am(e,t,n){var r=function(e){var t,n,r;for(r=j.document.createElement("div"),t=j.document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return t}(t);if(e.hasChildNodes()&&n<e.childNodes.length){var o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else e.appendChild(r)}function um(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}}function sm(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}}function cm(e){return"fragmented"===e.type?e.fragments.join(""):e.content}function lm(e){var t=yt.fromTag("body",mg.get().getOrThunk(function(){var e=j.document.implementation.createHTMLDocument("undo");return mg.set(k.some(e)),e}));return Aa(t,cm(e)),z(ma(t,"*[data-mce-bogus]"),Ni),function(e){return e.dom().innerHTML}(t)}function fm(e){return 0===e.get()}function dm(e,t,n){fm(n)&&(e.typing=t)}function hm(e,t){e.typing&&(dm(e,!1,t),e.add())}function mm(n){var r=Je(k.none()),o=Je(0),i=Je(0),a={data:[],typing:!1,beforeChange:function(){!function(e,t,n){fm(t)&&n.set(k.some(Vs.getUndoBookmark(e.selection)))}(n,o,r)},add:function(e,t){return function(e,t,n,r,o,i,a){var u=e.settings,s=gg(e);if(i=i||{},i=Mn.extend(i,s),!1===fm(r)||e.removed)return null;var c=t.data[n.get()];if(e.fire("BeforeAddUndo",{level:i,lastLevel:c,originalEvent:a}).isDefaultPrevented())return null;if(c&&vg(c,i))return null;if(t.data[n.get()]&&o.get().each(function(e){t.data[n.get()].beforeBookmark=e}),u.custom_undo_redo_levels&&t.data.length>u.custom_undo_redo_levels){for(var l=0;l<t.data.length-1;l++)t.data[l]=t.data[l+1];t.data.length--,n.set(t.data.length)}i.bookmark=Vs.getUndoBookmark(e.selection),n.get()<t.data.length-1&&(t.data.length=n.get()+1),t.data.push(i),n.set(t.data.length-1);var f={level:i,lastLevel:c,originalEvent:a};return e.fire("AddUndo",f),0<n.get()&&(e.setDirty(!0),e.fire("change",f)),i}(n,a,i,o,r,e,t)},undo:function(){return function(e,t,n,r){var o;return t.typing&&(t.add(),t.typing=!1,dm(t,!1,n)),0<r.get()&&(r.set(r.get()-1),o=t.data[r.get()],pg(e,o,!0),e.setDirty(!0),e.fire("Undo",{level:o})),o}(n,a,o,i)},redo:function(){return function(e,t,n){var r;return t.get()<n.length-1&&(t.set(t.get()+1),r=n[t.get()],pg(e,r,!1),e.setDirty(!0),e.fire("Redo",{level:r})),r}(n,i,a.data)},clear:function(){!function(e,t,n){t.data=[],n.set(0),t.typing=!1,e.fire("ClearUndos")}(n,a,i)},reset:function(){!function(e){e.clear(),e.add()}(a)},hasUndo:function(){return function(e,t,n){return 0<n.get()||t.typing&&t.data[0]&&!vg(gg(e),t.data[0])}(n,a,i)},hasRedo:function(){return function(e,t){return t.get()<e.data.length-1&&!e.typing}(a,i)},transact:function(e){return function(e,t,n){return hm(e,t),e.beforeChange(),e.ignore(n),e.add()}(a,o,e)},ignore:function(e){!function(e,t){try{e.set(e.get()+1),t()}finally{e.set(e.get()-1)}}(o,e)},extra:function(e,t){!function(e,t,n,r,o){if(t.transact(r)){var i=t.data[n.get()].bookmark,a=t.data[n.get()-1];pg(e,a,!0),t.transact(o)&&(t.data[n.get()-1].beforeBookmark=i)}}(n,a,i,e,t)}};return function(n,r,o){function i(e){dm(r,!1,o),r.add({},e)}var a=Je(!1);n.on("init",function(){r.add()}),n.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(hm(r,o),r.beforeChange())}),n.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&i(e)}),n.on("ObjectResizeStart cut",function(){r.beforeChange()}),n.on("SaveContent ObjectResized blur",i),n.on("dragend",i),n.on("keyup",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(i(),n.nodeChanged()),46!==t&&8!==t||n.nodeChanged(),a.get()&&r.typing&&!1===vg(gg(n),r.data[0])&&(!1===n.isDirty()&&(n.setDirty(!0),n.fire("change",{level:r.data[0],lastLevel:null})),n.fire("TypingUndo"),a.set(!1),n.nodeChanged()))}),n.on("keydown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented())if(33<=t&&t<=36||37<=t&&t<=40||45===t)r.typing&&i(e);else{var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||20<t)||224===t||91===t||r.typing||n||(r.beforeChange(),dm(r,!0,o),r.add({},e),a.set(!0))}}),n.on("mousedown",function(e){r.typing&&i(e)});n.on("input",function(e){e.inputType&&(function(e){return"insertReplacementText"===e.inputType}(e)||function(e){return"insertText"===e.inputType&&null===e.data}(e))&&i(e)}),n.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||n.nodeChanged()})}(n,a,o),function(e){e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo")}(n),a}function gm(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o<r.length;o++)if(!1===r[o].inherit&&e.dom.is(t,r[o].selector))return!0;return!1}function pm(t,e,n,r){var o=t.dom.getRoot();return e!==o&&(e=t.dom.getParent(e,function(e){return!!gm(t,e,n)||(e.parentNode===o||!!xg(t,e,n,r,!0))}),xg(t,e,n,r))}function vm(e,t,n){return!!wg(t,n.inline)||(!!wg(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0))}function ym(e,t,n,r,o,i){var a,u,s,c=n[r];if(n.onmatch)return n.onmatch(t,n,r);if(c)if("undefined"==typeof c.length){for(a in c)if(c.hasOwnProperty(a)){if(u="attributes"===r?e.getAttrib(t,a):jc.getStyle(e,t,a),o&&!u&&!n.exact)return;if((!o||n.exact)&&!wg(u,jc.normalizeStyleValue(e,jc.replaceVars(c[a],i),a)))return}}else for(s=0;s<c.length;s++)if("attributes"===r?e.getAttrib(t,c[s]):jc.getStyle(e,t,c[s]))return n;return n}function bm(e,t){return e.splitText(t)}function Cm(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t===r&&Ge.isText(t)?0<n&&n<t.nodeValue.length&&(t=(r=bm(t,n)).previousSibling,n<o?(t=r=bm(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(Ge.isText(t)&&0<n&&n<t.nodeValue.length&&(t=bm(t,n),n=0),Ge.isText(r)&&0<o&&o<r.nodeValue.length&&(o=(r=bm(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}}function wm(e,t,n){if(0!==n){var r=e.data.slice(t,t+n),o=t+n>=e.data.length,i=0===t;e.replaceData(t,n,function(n,r,o){return b(n,function(e,t){return function(e){return-1!==" \f\n\r\t\x0B".indexOf(e)}(t)||"\xa0"===t?e.previousCharIsSpace||""===e.str&&r||e.str.length===n.length-1&&o?{previousCharIsSpace:!1,str:e.str+"\xa0"}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str}(r,i,o))}}function xm(e,t){var n=e.data.slice(t),r=n.length-function(e){return e.replace(/^\s+/g,"")}(n).length;return wm(e,t,r)}function zm(e,t){var n=yt.fromDom(e);return function(e,t,n){return Ca(e,t,n).isSome()}(yt.fromDom(t),"pre,code",d(ze,n))}function Em(e,t){return La(t)&&!1===function(e,t){return Ge.isText(t)&&/^[ \t\r\n]*$/.test(t.data)&&!1===zm(e,t)}(e,t)||function(e){return Ge.isElement(e)&&"A"===e.nodeName&&e.hasAttribute("name")}(t)||Eg(t)}function Nm(e,t){return function(e,t){var n=e.container(),r=e.offset();return!1===Ds.isTextPosition(e)&&n===t.parentNode&&r>Ds.before(t).offset()}(t,e)?Ds(t.container(),t.offset()-1):t}function Sm(e){return La(e.previousSibling)?k.some(function(e){return Ge.isText(e)?Ds(e,e.data.length):Ds.after(e)}(e.previousSibling)):e.previousSibling?Pc.lastPositionIn(e.previousSibling):k.none()}function km(e){return La(e.nextSibling)?k.some(function(e){return Ge.isText(e)?Ds(e,0):Ds.before(e)}(e.nextSibling)):e.nextSibling?Pc.firstPositionIn(e.nextSibling):k.none()}function Tm(e,t){return Sm(t).orThunk(function(){return km(t)}).orThunk(function(){return function(e,t){var n=Ds.before(t.previousSibling?t.previousSibling:t.parentNode);return Pc.prevPosition(e,n).fold(function(){return Pc.nextPosition(e,Ds.after(t))},k.some)}(e,t)})}function Am(e,t){return km(t).orThunk(function(){return Sm(t)}).orThunk(function(){return function(e,t){return Pc.nextPosition(e,Ds.after(t)).fold(function(){return Pc.prevPosition(e,Ds.before(t))},k.some)}(e,t)})}function Mm(e,t,n){return function(e,t,n){return e?Am(t,n):Tm(t,n)}(e,t,n).map(d(Nm,n))}function Rm(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})}function Dm(e,t){return t&&e.schema.getBlockElements().hasOwnProperty(ie(t))}function _m(e){if(kg(e)){var t=yt.fromHtml('<br data-mce-bogus="1">');return Ei(e),Di(e,t),k.some(Ds.before(t.dom()))}return k.none()}function Bm(e,t,a){var n=ke(e).filter(zt),r=Te(e).filter(zt);return _i(e),function(e,t,n,r){return e.isSome()&&t.isSome()&&n.isSome()?k.some(r(e.getOrDie(),t.getOrDie(),n.getOrDie())):k.none()}(n,r,t,function(e,t,n){var r=e.dom(),o=t.dom(),i=r.data.length;return function(e,t,n){var r=ne(e.data).length;e.appendData(t.data),_i(yt.fromDom(t)),n&&xm(e,r)}(r,o,a),n.container()===o?Ds(r,i):n}).orThunk(function(){return a&&(n.each(function(e){return function(e,t){var n=e.data.slice(0,t),r=n.length-ne(n).length;return wm(e,t-r,r)}(e.dom(),e.dom().length)}),r.each(function(e){return xm(e.dom(),0)})),t})}function Om(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==Ag||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length}function Hm(e){if(e){var t=new yi(e,e);for(e=t.current();e;e=t.next())if(3===e.nodeType)return e}return null}function Pm(e){var t=yt.fromTag("span");return me(t,{id:Mg,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&Di(t,yt.fromText(Ag)),t}function Lm(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(Om(t))Tg(e,!1,yt.fromDom(t),n);else{var i=o.getRng(),a=r.getParent(t,r.isBlock),u=function(e){var t=Hm(e);return t&&t.nodeValue.charAt(0)===Ag&&t.deleteData(0,1),t}(t);i.startContainer===u&&0<i.startOffset&&i.setStart(u,i.startOffset-1),i.endContainer===u&&0<i.endOffset&&i.setEnd(u,i.endOffset-1),r.remove(t,!0),a&&r.isEmpty(a)&&bg(yt.fromDom(a)),o.setRng(i)}}function Vm(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)Lm(e,t,n);else if(!(t=os(e.getBody(),o.getStart())))for(;t=r.get(Mg);)Lm(e,t,!1)}function Im(e,t,n){var r=e.dom,o=r.getParent(n,d(jc.isTextBlock,e));o&&r.isEmpty(o)?n.parentNode.replaceChild(t,n):(yg(yt.fromDom(n)),r.isEmpty(n)?n.parentNode.replaceChild(t,n):r.insertAfter(t,n))}function Fm(e,t){return e.appendChild(t),t}function Um(e,t){var n=m(e,function(e,t){return Fm(e,t.cloneNode(!1))},t);return Fm(n,n.ownerDocument.createTextNode(Ag))}function jm(t){t.on("mouseup keydown",function(e){!function(e,t){var n=e.selection,r=e.getBody();Vm(e,null,!1),8!==t&&46!==t||!n.isCollapsed()||n.getStart().innerHTML!==Ag||Vm(e,os(r,n.getStart())),37!==t&&39!==t||Vm(e,os(r,n.getStart()))}(t,e.keyCode)})}function qm(e,t){return e.schema.getTextInlineElements().hasOwnProperty(ie(t))&&!rs(t.dom())&&!Ge.isBogus(t.dom())}var $m,Wm,Km=d(Vh,kh.Up,ja,qa),Xm=d(Vh,kh.Down,qa,ja),Ym=Ge.isContentEditableFalse,Gm=ys,Jm=function(t,n,e){if(e.collapsed)return!1;if(Nn.browser.isIE()&&e.startOffset===e.endOffset-1&&e.startContainer===e.endContainer){var r=e.startContainer.childNodes[e.startOffset];if(Ge.isElement(r))return C(r.getClientRects(),function(e){return $a(e,t,n)})}return C(e.getClientRects(),function(e){return $a(e,t,n)})},Qm=function(e,t){return function(e,t,n){return{pageX:n.left-e.left+t.left,pageY:n.top-e.top+t.top}}(function(e){return e.inline?Xh(e.getBody()):{left:0,top:0}}(e),function(e){var t=e.getBody();return e.inline?{left:t.scrollLeft,top:t.scrollTop}:{left:0,top:0}}(e),function(e,t){if(t.target.ownerDocument===e.getDoc())return{left:t.pageX,top:t.pageY};var n=Xh(e.getContentAreaContainer()),r=function(e){var t=e.getBody(),n=e.getDoc().documentElement,r={left:t.scrollLeft,top:t.scrollTop},o={left:t.scrollLeft||n.scrollLeft,top:t.scrollTop||n.scrollTop};return e.inline?r:o}(e);return{left:t.pageX-n.left+r.left,top:t.pageY-n.top+r.top}}(e,t))},Zm=Ge.isContentEditableFalse,eg=Ge.isContentEditableTrue,tg=function(e){e.dragging=!1,e.element=null,Yh(e.ghost)},ng=function(e){Qh(e),function(n){n.on("drop",function(e){var t="undefined"!=typeof e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;(Zm(t)||Zm(n.dom.getContentEditableParent(t)))&&e.preventDefault()})}(e)},rg=Ge.isContentEditableTrue,og=Ge.isContentEditableFalse,ig=function(t){var e=aa(function(){if(!t.removed&&t.getBody().contains(j.document.activeElement)&&t.selection.getRng().collapsed){var e=nm(t,t.selection.getRng(),!1);t.selection.setRng(e)}},0);t.on("focus",function(){e.throttle()}),t.on("blur",function(){e.cancel()})},ag=Ge.isContentEditableTrue,ug=Ge.isContentEditableFalse,sg=0,cg=2,lg=1,fg=function(m,g){function p(e,t,n,r){for(var o=e;o-t<r&&o<n&&m[o]===g[o-t];)++o;return function(e,t,n){return{start:e,end:t,diag:n}}(e,o,t)}var e=m.length+g.length+2,v=new Array(e),y=new Array(e),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&m[a]===g[u]?(o.push([0,m[a]]),++a,++u):r-n<t-e?(o.push([2,m[a]]),++a):(o.push([1,g[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,m[s]]);c(i.end,t,i.end-i.diag,r,o)}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0==o||0==i)return null;var a,u,s,c,l,f=o-i,d=i+o,h=(d%2==0?d:1+d)/2;for(v[1+h]=e,y[1+h]=t+1,a=0;a<=h;++a){for(u=-a;u<=a;u+=2){for(s=u+h,u===-a||u!==a&&v[s-1]<v[s+1]?v[s]=v[s+1]:v[s]=v[s-1]+1,l=(c=v[s])-e+n-u;c<t&&l<r&&m[c]===g[l];)v[s]=++c,++l;if(f%2!=0&&f-a<=u&&u<=f+a&&y[s-f]<=v[s])return p(y[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+h-f,u===f-a||u!==f+a&&y[s+1]<=y[s-1]?y[s]=y[s+1]-1:y[s]=y[s-1],l=(c=y[s]-1)-e+n-u;e<=c&&n<=l&&m[c]===g[l];)y[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&y[s]<=v[s+f])return p(y[s],u+e-n,t,r)}}},t=[];return c(0,m.length,0,g.length,t),t},dg=function(e){return y(X(P(e.childNodes),im),function(e){return 0<e.length})},hg=function(e,t){var n=X(P(t.childNodes),im);return function(e,t){var n=0;z(e,function(e){e[0]===sg?n++:e[0]===lg?(am(t,e[1],n),n++):e[0]===cg&&function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var n=e.childNodes[t];n.parentNode.removeChild(n)}}(t,n)})}(fg(n,e),t),t},mg=Je(k.none()),gg=function(n){var e,t,r;return e=dg(n.getBody()),function(e){return-1!==e.indexOf("</iframe>")}(t=(r=v(e,function(e){var t=af.trimInternal(n.serializer,e);return 0<t.length?[t]:[]})).join(""))?um(r):sm(t)},pg=function(e,t,n){"fragmented"===t.type?hg(t.fragments,e.getBody()):e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(n?t.beforeBookmark:t.bookmark)},vg=function(e,t){return!(!e||!t)&&(!!function(e,t){return cm(e)===cm(t)}(e,t)||function(e,t){return lm(e)===lm(t)}(e,t))},yg=function(e){var t=ma(e,"br"),n=y(function(e){for(var t=[],n=e.dom();n;)t.push(yt.fromDom(n)),n=n.lastChild;return t}(e).slice(-1),_n);t.length===n.length&&z(n,_i)},bg=function(e){Ei(e),Di(e,yt.fromHtml('<br data-mce-bogus="1">'))},Cg=function(n){Be(n).each(function(t){ke(t).each(function(e){Vn(n)&&_n(t)&&Vn(e)&&_i(t)})})},wg=jc.isEq,xg=function(e,t,n,r,o){var i,a,u,s,c=e.formatter.get(n),l=e.dom;if(c&&t)for(a=0;a<c.length;a++)if(i=c[a],vm(e.dom,t,i)&&ym(l,t,i,"attributes",o,r)&&ym(l,t,i,"styles",o,r)){if(s=i.classes)for(u=0;u<s.length;u++)if(!e.dom.hasClass(t,s[u]))return;return i}},zg={matchNode:xg,matchName:vm,match:function(e,t,n,r){var o;return r?pm(e,r,t,n):(r=e.selection.getNode(),!!pm(e,r,t,n)||!((o=e.selection.getStart())===r||!pm(e,o,t,n)))},matchAll:function(r,o,i){var e,a=[],u={};return e=r.selection.getStart(),r.dom.getParent(e,function(e){var t,n;for(t=0;t<o.length;t++)n=o[t],!u[n]&&xg(r,e,n,i)&&(u[n]=!0,a.push(n))},r.dom.getRoot()),a},canApply:function(e,t){var n,r,o,i,a,u=e.formatter.get(t),s=e.dom;if(u)for(n=e.selection.getStart(),r=jc.getParents(s,n),i=u.length-1;0<=i;i--){if(!(a=u[i].selector)||u[i].defaultBlock)return!0;for(o=r.length-1;0<=o;o--)if(s.is(r[o],a))return!0}return!1},matchesUnInheritedFormatSelector:gm},Eg=Ge.hasAttribute("data-mce-bookmark"),Ng=Ge.hasAttribute("data-mce-bogus"),Sg=Ge.hasAttributeValue("data-mce-bogus","all"),kg=function(e){return function(e){var t,n=0;if(Em(e,e))return!1;if(!(t=e.firstChild))return!0;var r=new yi(t,e);do{if(Sg(t))t=r.next(!0);else if(Ng(t))t=r.next();else if(Ge.isBr(t))n++,t=r.next();else{if(Em(e,t))return!1;t=r.next()}}while(t);return n<=1}(e.dom())},Tg=function(t,n,e,r){void 0===r&&(r=!0);var o=Mm(n,t.getBody(),e.dom()),i=ya(e,d(Dm,t),function(t){return function(e){return e.dom()===t}}(t.getBody())),a=Bm(e,o,function(e,t){return kt(e.schema.getTextInlineElements(),ie(t))}(t,e));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):i.bind(_m).fold(function(){r&&Rm(t,n,a)},function(e){r&&Rm(t,n,k.some(e))})},Ag=cu,Mg="_mce_caret",Rg={},Dg=kn.filter,_g=kn.each;Wm=function(e){var t,n,r=e.selection.getRng();t=Ge.matchNodeNames(["pre"]),r.collapsed||(n=e.selection.getSelectedBlocks(),_g(Dg(Dg(n,t),function(e){return t(e.previousSibling)&&-1!==kn.indexOf(n,e.previousSibling)}),function(e){!function(e,t){vi(t).remove(),vi(e).append("<br><br>").append(t.childNodes)}(e.previousSibling,e)}))},Rg[$m="pre"]||(Rg[$m]=[]),Rg[$m].push(Wm);function Bg(o){this.compare=function(e,t){if(e.nodeName!==t.nodeName)return!1;function n(n){var r={};return Gg(o.getAttribs(n),function(e){var t=e.nodeName.toLowerCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r}function r(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(void 0===(n=t[r]))return!1;if(e[r]!==n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return!!r(n(e),n(t))&&(!!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))&&(!Fc(e)&&!Fc(t)))}}function Og(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)}function Hg(e,t,n){var r,o,i;return r=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],Ge.isElement(r)&&(i=r.childNodes.length-1,!n&&o&&o--,r=r.childNodes[i<o?i:o]),Ge.isText(r)&&n&&o>=r.nodeValue.length&&(r=new yi(r,e.getBody()).next()||r),Ge.isText(r)&&!n&&0===o&&(r=new yi(r,e.getBody()).prev()||r),r}function Pg(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o}function Lg(e,t,n,r,o){var i=yt.fromDom(t),a=yt.fromDom(e.create(r,o)),u=n?Me(i):Ae(i);return zi(a,u),n?(Ci(i,a),xi(a,i)):(wi(i,a),Di(a,i)),a.dom()}function Vg(e,t,n,r){return!(t=jc.getNonWhiteSpaceSibling(t,n,r))||"BR"===t.nodeName||e.isBlock(t)}function Ig(e,r,o,i,a){var t,n,u,s=e.dom;if(!function(e,t,n){return!!Zg(t,n.inline)||(!!Zg(t,n.block)||(n.selector?Ge.isElement(t)&&e.is(t,n.selector):void 0))}(s,i,r)&&!function(e,t){return t.links&&"A"===e.tagName}(i,r))return!1;if("all"!==r.remove)for(Qg(r.styles,function(e,t){e=jc.normalizeStyleValue(s,jc.replaceVars(e,o),t),"number"==typeof t&&(t=e,a=0),!r.remove_similar&&a&&!Zg(jc.getStyle(s,a,t),e)||s.setStyle(i,t,""),u=1}),u&&""===s.getAttrib(i,"style")&&(i.removeAttribute("style"),i.removeAttribute("data-mce-style")),Qg(r.attributes,function(e,t){var n;if(e=jc.replaceVars(e,o),"number"==typeof t&&(t=e,a=0),r.remove_similar||!a||Zg(s.getAttrib(a,t),e)){if("class"===t&&(e=s.getAttrib(i,t))&&(n="",Qg(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))return void s.setAttrib(i,t,n);"class"===t&&i.removeAttribute("className"),Jg.test(t)&&i.removeAttribute("data-mce-"+t),i.removeAttribute(t)}}),Qg(r.classes,function(e){e=jc.replaceVars(e,o),a&&!s.hasClass(a,e)||s.removeClass(i,e)}),n=s.getAttribs(i),t=0;t<n.length;t++){var c=n[t].nodeName;if(0!==c.indexOf("_")&&0!==c.indexOf("data-"))return!1}return"none"!==r.remove?(function(t,e,n){var r,o=e.parentNode,i=t.dom,a=mf(t);n.block&&(a?o===i.getRoot()&&(n.list_block&&Zg(e,n.list_block)||Qg(Mn.grep(e.childNodes),function(e){jc.isValid(t,a,e.nodeName.toLowerCase())?r?r.appendChild(e):(r=Pg(i,e,a),i.setAttribs(r,t.settings.forced_root_block_attrs)):r=0})):i.isBlock(e)&&!i.isBlock(o)&&(Vg(i,e,!1)||Vg(i,e.firstChild,!0,1)||e.insertBefore(i.create("br"),e.firstChild),Vg(i,e,!0)||Vg(i,e.lastChild,!1,1)||e.appendChild(i.create("br")))),n.selector&&n.inline&&!Zg(n.inline,e)||i.remove(e,1)}(e,i,r),!0):void 0}function Fg(e){return e&&1===e.nodeType&&!Fc(e)&&!rs(e)&&!Ge.isBogus(e)}function Ug(e,t){var n;for(n=e;n;n=n[t]){if(3===n.nodeType&&0!==n.nodeValue.length)return e;if(1===n.nodeType&&!Fc(n))return n}return e}function jg(e,t,n){var r,o,i=new Bg(e);if(t&&n&&(t=Ug(t,"previousSibling"),n=Ug(n,"nextSibling"),i.compare(t,n))){for(r=t.nextSibling;r&&r!==n;)r=(o=r).nextSibling,t.appendChild(o);return e.remove(n),Mn.each(Mn.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n}function qg(n,e){return d(function(e,t){return!(!t||!jc.getStyle(n,t,e))},e)}function $g(r,e,t){return d(function(e,t,n){r.setStyle(n,e,t),""===n.getAttribute("style")&&n.removeAttribute("style"),op(r,n)},e,t)}function Wg(e,t){var n;1===t.nodeType&&t.parentNode&&1===t.parentNode.nodeType&&(n=jc.getTextDecoration(e,t.parentNode),e.getStyle(t,"color")&&n?e.setStyle(t,"text-decoration",n):e.getStyle(t,"text-decoration")===n&&e.setStyle(t,"text-decoration",null))}function Kg(t){var n=Ds.fromRangeStart(t),r=Ds.fromRangeEnd(t),o=t.commonAncestorContainer;return Pc.fromPosition(!1,o,r).map(function(e){return!Cs(n,r,o)&&Cs(n,e,o)?function(e,t,n,r){var o=j.document.createRange();return o.setStart(e,t),o.setEnd(n,r),o}(n.container(),n.offset(),e.container(),e.offset()):t}).getOr(t)}function Xg(e,t,n,r,o){return null===t.get()&&function(t,n){var r=Je({});t.set({}),n.on("NodeChange",function(e){gp(n,e.element,r,t.get())})}(t,e),function(e,t,n,r){var o=e.get();z(t.split(","),function(e){o[e]||(o[e]={similar:r,callbacks:[]}),o[e].callbacks.push(n)}),e.set(o)}(t,n,r,o),{unbind:function(){return function(e,t,n){var r=e.get();z(t.split(","),function(e){r[e].callbacks=y(r[e].callbacks,function(e){return e!==n}),0===r[e].callbacks.length&&delete r[e]}),e.set(r)}(t,n,r)}}}var Yg=function(e,t){_g(Rg[e],function(e){e(t)})},Gg=Mn.each,Jg=/^(src|href|style)$/,Qg=Mn.each,Zg=jc.isEq,ep=Ig,tp=function(a,n,u,e,r){function i(e){var t=function(n,e,r,o,i){var a;return Qg(jc.getParents(n.dom,e.parentNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=zg.matchNode(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a}(a,e,n,u,r);return function(e,t,n,r,o,i,a,u){var s,c,l,f,d,h,m=e.dom;if(n){for(h=n.parentNode,s=r.parentNode;s&&s!==h;s=s.parentNode){for(c=m.clone(s,!1),d=0;d<t.length;d++)if(Ig(e,t[d],u,c,c)){c=0;break}c&&(l&&c.appendChild(l),f=f||c,l=c)}!i||a.mixed&&m.isBlock(n)||(r=m.split(n,r)),l&&(o.parentNode.insertBefore(l,o),f.appendChild(o))}return r}(a,l,t,e,e,!0,f,u)}function s(e){var t=h.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return function(e){return Fc(e)&&Ge.isElement(e)&&("_start"===e.id||"_end"===e.id)}(n)&&(n=n[e?"firstChild":"lastChild"]),Ge.isText(n)&&0===n.data.length&&(n=e?t.previousSibling||t.nextSibling:t.nextSibling||t.previousSibling),h.remove(t,!0),n}function t(e){var t,n,r=e.commonAncestorContainer;if(e=Xc(a,e,l,!0),f.split){if(e=Cm(e),(t=Hg(a,e,!0))!==(n=Hg(a,e))){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"===t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&function(e){return/^(TH|TD)$/.test(e.nodeName)}(n)&&n.firstChild&&(n=n.firstChild||n),Og(h,t,n)){var o=k.from(t.firstChild).getOr(t);return i(Lg(h,o,!0,"span",{id:"_start","data-mce-type":"bookmark"})),void s(!0)}if(Og(h,n,t)){o=k.from(n.lastChild).getOr(n);return i(Lg(h,o,!1,"span",{id:"_end","data-mce-type":"bookmark"})),void s(!1)}t=Pg(h,t,"span",{id:"_start","data-mce-type":"bookmark"}),n=Pg(h,n,"span",{id:"_end","data-mce-type":"bookmark"}),i(t),i(n),t=s(!0),n=s()}else t=n=i(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=h.nodeIndex(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=h.nodeIndex(n)+1}Gc(h,e,function(e){Qg(e,function(e){g(e),Ge.isElement(e)&&"underline"===a.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===jc.getTextDecoration(h,e.parentNode)&&Ig(a,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var o,c,l=a.formatter.get(n),f=l[0],d=!0,h=a.dom,m=a.selection,g=function(e){var t,n,r,o,i;if(Ge.isElement(e)&&h.getContentEditable(e)&&(o=d,d="true"===h.getContentEditable(e),i=!0),t=Mn.grep(e.childNodes),d&&!i)for(n=0,r=l.length;n<r&&!Ig(a,l[n],u,e,e);n++);if(f.deep&&t.length){for(n=0,r=t.length;n<r;n++)g(t[n]);i&&(d=o)}};if(e)e.nodeType?((c=h.createRng()).setStartBefore(e),c.setEndAfter(e),t(c)):t(e);else if("false"!==h.getContentEditable(m.getNode()))m.isCollapsed()&&f.inline&&!h.select("td[data-mce-selected],th[data-mce-selected]").length?function(e,t,n,r){var o,i,a,u,s,c,l,f=e.dom,d=e.selection,h=[],m=d.getRng();for(o=m.startContainer,i=m.startOffset,3===(s=o).nodeType&&(i!==o.nodeValue.length&&(u=!0),s=s.parentNode);s;){if(zg.matchNode(e,s,t,n,r)){c=s;break}s.nextSibling&&(u=!0),h.push(s),s=s.parentNode}if(c)if(u){a=d.getBookmark(),m.collapse(!0);var g=Xc(e,m,e.formatter.get(t),!0);g=Cm(g),e.formatter.remove(t,n,g),d.moveToBookmark(a)}else{l=os(e.getBody(),c);var p=Pm(!1).dom(),v=Um(h,p);Im(e,p,l||c),Lm(e,l,!1),d.setCursorLocation(v,1),f.isEmpty(c)&&f.remove(c)}}(a,n,u,r):(o=Vs.getPersistentBookmark(a.selection,!0),t(m.getRng()),m.moveToBookmark(o),f.inline&&zg.match(a,n,u,m.getStart())&&jc.moveStart(h,m,m.getRng()),a.nodeChanged());else{e=m.getNode();for(var p=0,v=l.length;p<v&&(!l[p].ceFalseOverride||!Ig(a,l[p],u,e,e));p++);}},np=Mn.each,rp=function(e,t,n){np(e.childNodes,function(e){Fg(e)&&(t(e)&&n(e),e.hasChildNodes()&&rp(e,t,n))})},op=function(e,t){"SPAN"===t.nodeName&&0===e.getAttribs(t).length&&e.remove(t,!0)},ip=function(n,e,r,o){np(e,function(t){np(n.dom.select(t.inline,o),function(e){Fg(e)&&ep(n,t,r,e,t.exact?e:null)}),function(r,e,t){if(e.clear_child_styles){var n=e.links?"*:not(a)":"*";np(r.select(n,t),function(n){Fg(n)&&np(e.styles,function(e,t){r.setStyle(n,t,"")})})}}(n.dom,t,o)})},ap=function(e,t,n,r){(t.styles.color||t.styles.textDecoration)&&(Mn.walk(r,d(Wg,e),"childNodes"),Wg(e,r))},up=function(e,t,n,r){t.styles&&t.styles.backgroundColor&&rp(r,qg(e,"fontSize"),$g(e,"backgroundColor",jc.replaceVars(t.styles.backgroundColor,n)))},sp=function(e,t,n,r){"sub"!==t.inline&&"sup"!==t.inline||(rp(r,qg(e,"fontSize"),$g(e,"fontSize","")),e.remove(e.select("sup"===t.inline?"sub":"sup",r),!0))},cp=function(e,t,n,r){r&&!1!==t.merge_siblings&&(r=jg(e,jc.getNonWhiteSpaceSibling(r),r),r=jg(e,r,jc.getNonWhiteSpaceSibling(r,!0)))},lp=function(t,n,r,o,i){zg.matchNode(t,i.parentNode,r,o)&&ep(t,n,o,i)||n.merge_with_parents&&t.dom.getParent(i.parentNode,function(e){if(zg.matchNode(t,e,r,o))return ep(t,n,o,i),!0})},fp=function(e){return e.collapsed?e:Kg(e)},dp=Mn.each,hp=function(m,g,p,r){function v(n,e){if(e=e||C,n){if(e.onformat&&e.onformat(n,e,p,r),dp(e.styles,function(e,t){i.setStyle(n,t,jc.replaceVars(e,p))}),e.styles){var t=i.getAttrib(n,"style");t&&n.setAttribute("data-mce-style",t)}dp(e.attributes,function(e,t){i.setAttrib(n,t,jc.replaceVars(e,p))}),dp(e.classes,function(e){e=jc.replaceVars(e,p),i.hasClass(n,e)||i.addClass(n,e)})}}function y(e,t){var n=!1;return!!C.selector&&(dp(e,function(e){if(!("collapsed"in e&&e.collapsed!==o))return i.is(t,e.selector)&&!rs(t)?(v(t,e),!(n=!0)):void 0}),n)}function e(s,e,t,c){var l,f,d=[],h=!0;l=C.inline||C.block,f=s.create(l),v(f),Gc(s,e,function(e){var a,u=function(e){var t,n,r,o;if(o=h,t=e.nodeName.toLowerCase(),n=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&s.getContentEditable(e)&&(o=h,h="true"===s.getContentEditable(e),r=!0),jc.isEq(t,"br"))return a=0,void(C.block&&s.remove(e));if(C.wrapper&&zg.matchNode(m,e,g,p))a=0;else{if(h&&!r&&C.block&&!C.wrapper&&jc.isTextBlock(m,t)&&jc.isValid(m,n,l))return e=s.rename(e,l),v(e),d.push(e),void(a=0);if(C.selector){var i=y(b,e);if(!C.inline||i)return void(a=0)}!h||r||!jc.isValid(m,l,t)||!jc.isValid(m,n,l)||!c&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||rs(e)||C.inline&&s.isBlock(e)?(a=0,dp(Mn.grep(e.childNodes),u),r&&(h=o),a=0):(a||(a=s.clone(f,!1),e.parentNode.insertBefore(a,e),d.push(a)),a.appendChild(e))}};dp(e,u)}),!0===C.links&&dp(d,function(e){var t=function(e){"A"===e.nodeName&&v(e,C),dp(Mn.grep(e.childNodes),t)};t(e)}),dp(d,function(e){function t(e){var t=!1;return dp(e.childNodes,function(e){if(function(e){return e&&1===e.nodeType&&!Fc(e)&&!rs(e)&&!Ge.isBogus(e)}(e))return t=e,!1}),t}var n,r,o,i,a;(r=0,dp(e.childNodes,function(e){jc.isWhiteSpaceNode(e)||Fc(e)||r++}),n=r,!(1<d.length)&&s.isBlock(e)||0!==n)?(C.inline||C.wrapper)&&(C.exact||1!==n||((i=t(o=e))&&!Fc(i)&&zg.matchName(s,i,C)&&(a=s.clone(i,!1),v(a),s.replace(a,o,!0),s.remove(i,1)),e=a||o),ip(m,b,p,e),lp(m,C,g,p,e),up(s,C,p,e),sp(s,C,p,e),cp(s,C,p,e)):s.remove(e,1)})}var t,n,b=m.formatter.get(g),C=b[0],o=!r&&m.selection.isCollapsed(),i=m.dom,a=m.selection;if("false"!==i.getContentEditable(a.getNode())){if(C){if(r)r.nodeType?y(b,r)||((n=i.createRng()).setStartBefore(r),n.setEndAfter(r),e(i,Xc(m,n,b),0,!0)):e(i,r,0,!0);else if(o&&C.inline&&!i.select("td[data-mce-selected],th[data-mce-selected]").length)!function(e,t,n){var r,o,i,a,u,s,c=e.selection;a=(r=c.getRng()).startOffset,s=r.startContainer.nodeValue,(o=os(e.getBody(),c.getStart()))&&(i=Hm(o));var l=/[^\s\u00a0\u00ad\u200b\ufeff]/;s&&0<a&&a<s.length&&l.test(s.charAt(a))&&l.test(s.charAt(a-1))?(u=c.getBookmark(),r.collapse(!0),r=Xc(e,r,e.formatter.get(t)),r=Cm(r),e.formatter.apply(t,n,r),c.moveToBookmark(u)):(o&&i.nodeValue===Ag||(i=(o=function(e,t){return e.importNode(t,!0)}(e.getDoc(),Pm(!0).dom())).firstChild,r.insertNode(o),a=1),e.formatter.apply(t,n,o),c.setCursorLocation(i,a))}(m,g,p);else{var u=m.selection.getNode();m.settings.forced_root_block||!b[0].defaultBlock||i.getParent(u,i.isBlock)||hp(m,b[0].defaultBlock),m.selection.setRng(fp(m.selection.getRng())),t=Vs.getPersistentBookmark(m.selection,!0),e(i,Xc(m,a.getRng(),b)),C.styles&&ap(i,C,p,u),a.moveToBookmark(t),jc.moveStart(i,a,a.getRng()),m.nodeChanged()}Yg(g,m)}}else{r=a.getNode();for(var s=0,c=b.length;s<c;s++)if(b[s].ceFalseOverride&&i.is(r,b[s].selector))return void v(r,b[s])}},mp={applyFormat:hp},gp=function(r,e,t,n){var o=Et(t.get()),i={},a={},u=y(jc.getParents(r.dom,e),function(e){return 1===e.nodeType&&!e.getAttribute("data-mce-bogus")});ue(n,function(e,n){Mn.each(u,function(t){return r.formatter.matchNode(t,n,{},e.similar)?(-1===o.indexOf(n)&&(z(e.callbacks,function(e){e(!0,{node:t,format:n,parents:u})}),i[n]=e.callbacks),a[n]=e.callbacks,!1):!zg.matchesUnInheritedFormatSelector(r,t,n)&&void 0})});var s=pp(t.get(),a,e,u);t.set(G(G({},i),s))},pp=function(e,n,r,o){return ce(e,function(e,t){return!!kt(n,t)||(z(e,function(e){e(!1,{node:r,format:t,parents:o})}),!1)}).t},vp=function(r){var t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:!0,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(n,e,t){Mn.each(t,function(e,t){r.setAttrib(n,t,e)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]};return Mn.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t};function yp(e,t){function s(e){var t;return r="string"==typeof e?{name:e,classes:[],attrs:{}}:e,function(e,t){t.classes.length&&Rp.addClass(e,t.classes.join(" ")),Rp.setAttribs(e,t.attrs)}(t=Rp.create(r.name),r),t}var n,r,o,c=t&&t.schema||pr({}),l=function(n,e,t){var r,o,i,a=0<e.length&&e[0],u=a&&a.name;if(i=function(e,t){var n="string"!=typeof e?e.nodeName.toLowerCase():e,r=c.getElementRule(n),o=r&&r.parentsRequired;return!(!o||!o.length)&&(t&&-1!==Mn.inArray(o,t)?t:o[0])}(n,u))u===i?(o=e[0],e=e.slice(1)):o=i;else if(a)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=s(o)).appendChild(n),t&&(r||(r=Rp.create("div")).appendChild(n),Mn.each(t,function(e){var t=s(e);r.insertBefore(t,n)})),l(r,e,o&&o.siblings)};return e&&e.length?(r=e[0],n=s(r),(o=Rp.create("div")).appendChild(l(n,e.slice(1),r.siblings)),o):""}function bp(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=Mn.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==Mn.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}if("["===r){var i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/);i&&(a.attrs[i[1]]=i[2])}return""})),a.name=t||"div",a}function Cp(e){var t=function o(e){var n={},r=function(e,t){e&&("string"!=typeof e?Mn.each(e,function(e,t){r(t,e)}):(A(t)||(t=[t]),Mn.each(t,function(e){"undefined"==typeof e.deep&&(e.deep=!e.selector),"undefined"==typeof e.split&&(e.split=!e.selector||e.inline),"undefined"==typeof e.remove&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),n[e]=t))};return r(vp(e.dom)),r(e.settings.formats),{get:function(e){return e?n[e]:n},has:function(e){return kt(n,e)},register:r,unregister:function(e){return e&&n[e]&&delete n[e],n}}}(e),n=Je(null);return Op(e),jm(e),{get:t.get,has:t.has,register:t.register,unregister:t.unregister,apply:d(mp.applyFormat,e),remove:d(tp,e),toggle:d(Bp,e,t),match:d(zg.match,e),matchAll:d(zg.matchAll,e),matchNode:d(zg.matchNode,e),canApply:d(zg.canApply,e),formatChanged:d(Xg,e,n),getCssText:d(_p,e)}}function wp(e,i,a){e.addNodeFilter("font",function(e){z(e,function(e){var t=i.parse(e.attr("style")),n=e.attr("color"),r=e.attr("face"),o=e.attr("size");n&&(t.color=n),r&&(t["font-family"]=r),o&&(t["font-size"]=a[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",i.serialize(t)),function(t,e){z(e,function(e){t.attr(e,null)})}(e,["color","face","size"])})})}function xp(e,t){var n=xr();t.convert_fonts_to_spans&&wp(e,n,Mn.explode(t.font_size_legacy_values)),function(e,n){e.addNodeFilter("strike",function(e){z(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})}(e,n)}function zp(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new ul("br",1)).shortEnded=!0:r.empty().append(new ul("#text",3)).value="\xa0"}function Ep(t,e,n,r){return r.isEmpty(e,n,function(e){return function(e,t){var n=e.getElementRule(t.name);return n&&n.paddEmpty}(t,e)})}function Np(T,A){void 0===A&&(A=pr());var M={},R=[],D={},_={};(T=T||{}).validate=!("validate"in T)||T.validate,T.root_name=T.root_name||"body";var B=function(e){var t,n,r;(n=e.name)in M&&((r=D[n])?r.push(e):D[n]=[e]),t=R.length;for(;t--;)(n=R[t].name)in e.attributes.map&&((r=_[n])?r.push(e):_[n]=[e]);return e},e={schema:A,addAttributeFilter:function(e,n){Up(jp(e),function(e){var t;for(t=0;t<R.length;t++)if(R[t].name===e)return void R[t].callbacks.push(n);R.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(R)},addNodeFilter:function(e,n){Up(jp(e),function(e){var t=M[e];t||(M[e]=t=[]),t.push(n)})},getNodeFilters:function(){var e=[];for(var t in M)M.hasOwnProperty(t)&&e.push({name:t,callbacks:M[t]});return e},filterNode:B,parse:function(e,a){var t,n,r,o,i,u,s,c,l,f,d,h=[];a=a||{},D={},_={},l=qp(Fp("script,style,head,html,body,title,meta,param"),A.getBlockElements());var m,g=A.getNonEmptyElements(),p=A.children,v=T.validate,y="forced_root_block"in a?a.forced_root_block:T.forced_root_block,b=!1===(m=y)?"":!0===m?"p":m,C=A.getWhiteSpaceElements(),w=/^[ \t\r\n]+/,x=/[ \t\r\n]+$/,z=/[ \t\r\n]+/g,E=/^[ \t\r\n]+$/;f=C.hasOwnProperty(a.context)||C.hasOwnProperty(T.root_name);function N(e){var t,n,r,o,i=A.getBlockElements();for(t=e.prev;t&&3===t.type;){if(0<(r=t.value.replace(x,"")).length)return void(t.value=r);if(n=t.next){if(3===n.type&&n.value.length){t=t.prev;continue}if(!i[n.name]&&"script"!==n.name&&"style"!==n.name){t=t.prev;continue}}o=t.prev,t.remove(),t=o}}var S=function(e,t){var n,r=new ul(e,t);return e in M&&((n=D[e])?n.push(r):D[e]=[r]),r};t=of({validate:v,allow_script_urls:T.allow_script_urls,allow_conditional_comments:T.allow_conditional_comments,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(A.getSelfClosingElements()),cdata:function(e){d.append(S("#cdata",4)).value=e},text:function(e,t){var n;f||(e=e.replace(z," "),function(e,t){return e&&(t[e.name]||"br"===e.name)}(d.lastChild,l)&&(e=e.replace(w,""))),0!==e.length&&((n=S("#text",3)).raw=!!t,d.append(n).value=e)},comment:function(e){d.append(S("#comment",8)).value=e},pi:function(e,t){d.append(S(e,7)).value=t,N(d)},doctype:function(e){d.append(S("#doctype",10)).value=e,N(d)},start:function(e,t,n){var r,o,i,a,u;if(i=v?A.getElementRule(e):{}){for((r=S(i.outputName||e,1)).attributes=t,r.shortEnded=n,d.append(r),(u=p[d.name])&&p[r.name]&&!u[r.name]&&h.push(r),o=R.length;o--;)(a=R[o].name)in t.map&&((s=_[a])?s.push(r):_[a]=[r]);l[e]&&N(r),n||(d=r),!f&&C[e]&&(f=!0)}},end:function(e){var t,n,r,o,i;if(n=v?A.getElementRule(e):{}){if(l[e]&&!f){if((t=d.firstChild)&&3===t.type)if(0<(r=t.value.replace(w,"")).length)t.value=r,t=t.next;else for(o=t.next,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.next,0!==r.length&&!E.test(r)||(t.remove(),t=o),t=o;if((t=d.lastChild)&&3===t.type)if(0<(r=t.value.replace(x,"")).length)t.value=r,t=t.prev;else for(o=t.prev,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.prev,0!==r.length&&!E.test(r)||(t.remove(),t=o),t=o}if(f&&C[e]&&(f=!1),n.removeEmpty&&Ep(A,g,C,d)&&!d.attr("name")&&!d.attr("id"))return i=d.parent,l[d.name]?d.empty().remove():d.unwrap(),void(d=i);n.paddEmpty&&(function(e){return Ip(e,"#text")&&"\xa0"===e.firstChild.value}(d)||Ep(A,g,C,d))&&zp(T,a,l,d),d=d.parent}}},A);var k=d=new ul(a.context||T.root_name,11);if(t.parse(e),v&&h.length&&(a.context?a.invalid=!0:function(e){var t,n,r,o,i,a,u,s,c,l,f,d,h,m,g,p;for(d=Fp("tr,td,th,tbody,thead,tfoot,table"),l=A.getNonEmptyElements(),f=A.getWhiteSpaceElements(),h=A.getTextBlockElements(),m=A.getSpecialElements(),t=0;t<e.length;t++)if((n=e[t]).parent&&!n.fixed)if(h[n.name]&&"li"===n.parent.name){for(g=n.next;g&&h[g.name];)g.name="li",g.fixed=!0,n.parent.insert(g,n.parent),g=g.next;n.unwrap(n)}else{for(o=[n],r=n.parent;r&&!A.isValidChild(r.name,n.name)&&!d[r.name];r=r.parent)o.push(r);if(r&&1<o.length){for(o.reverse(),i=a=B(o[0].clone()),c=0;c<o.length-1;c++){for(A.isValidChild(a.name,o[c].name)?(u=B(o[c].clone()),a.append(u)):u=a,s=o[c].firstChild;s&&s!==o[c+1];)p=s.next,u.append(s),s=p;a=u}Ep(A,l,f,i)?r.insert(n,o[0],!0):(r.insert(i,o[0],!0),r.insert(n,i)),r=o[0],(Ep(A,l,f,r)||Ip(r,"br"))&&r.empty().remove()}else if(n.parent){if("li"===n.name){if((g=n.prev)&&("ul"===g.name||"ul"===g.name)){g.append(n);continue}if((g=n.next)&&("ul"===g.name||"ul"===g.name)){g.insert(n,g.firstChild,!0);continue}n.wrap(B(new ul("ul",1)));continue}A.isValidChild(n.parent.name,"div")&&A.isValidChild("div",n.name)?n.wrap(B(new ul("div",1))):m[n.name]?n.empty().remove():n.unwrap()}}}(h)),b&&("body"===k.name||a.isRootContent)&&function(){function e(e){e&&((r=e.firstChild)&&3===r.type&&(r.value=r.value.replace(w,"")),(r=e.lastChild)&&3===r.type&&(r.value=r.value.replace(x,"")))}var t,n,r=k.firstChild;if(A.isValidChild(k.name,b.toLowerCase())){for(;r;)t=r.next,3===r.type||1===r.type&&"p"!==r.name&&!l[r.name]&&!r.attr("data-mce-type")?(n||((n=S(b,1)).attr(T.forced_root_block_attrs),k.insert(n,r)),n.append(r)):(e(n),n=null),r=t;e(n)}}(),!a.invalid){for(c in D)if(D.hasOwnProperty(c)){for(s=M[c],i=(n=D[c]).length;i--;)n[i].parent||n.splice(i,1);for(r=0,o=s.length;r<o;r++)s[r](n,c,a)}for(r=0,o=R.length;r<o;r++)if((s=R[r]).name in _){for(i=(n=_[s.name]).length;i--;)n[i].parent||n.splice(i,1);for(i=0,u=s.callbacks.length;i<u;i++)s.callbacks[i](n,s.name,a)}}return k}};return function(e,g){var p=e.schema;g.remove_trailing_brs&&e.addNodeFilter("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=Mn.extend({},p.getBlockElements()),h=p.getNonEmptyElements(),m=p.getNonEmptyElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){if("br"!==s)break;if("br"===s){o=null;break}}u=u.prev}o&&(o.remove(),Ep(p,h,m,i)&&(c=p.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&zp(g,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==g.padd_empty_with_br&&((l=new ul("#text",3)).value="\xa0",o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r,o=e.length;if(!g.allow_unsafe_link_target)for(;o--;)"a"===(t=e[o]).name&&"_blank"===t.attr("target")&&t.attr("rel",(n=t.attr("rel"),void 0,r=n?Mn.trim(n):"",/\b(noopener)\b/g.test(r)?r:r.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}),g.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),g.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r=e.length;r--;)if("ul"===(n=(t=e[r]).parent).name||"ol"===n.name)if(t.prev&&"li"===t.prev.name)t.prev.append(t);else{var o=new ul("li",1);o.attr("style","list-style-type: none"),t.wrap(o)}}),g.validate&&p.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t,n,r,o,i,a,u,s=e.length,c=p.getValidClasses();s--;){for(n=(t=e[s]).attr("class").split(" "),i="",r=0;r<n.length;r++)o=n[r],u=!1,(a=c["*"])&&a[o]&&(u=!0),a=c[t.name],!u&&a&&a[o]&&(u=!0),u&&(i&&(i+=" "),i+=o);i.length||(i=null),t.attr("class",i)}})}(e,T),Vp(e,T),e}function Sp(e,t,n){-1===Mn.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))}function kp(e,t,n,r,o){return function(e,t,n){return t.no_events||!e?n:ld(e,bd(t,{content:n})).content}(e,o,function(e,t,n){return pl(e,t).serialize(n)}(t,n,r))}function Tp(a,u){var s,c,l,e=["data-mce-selected"];return s=u&&u.dom?u.dom:Xi.DOM,c=u&&u.schema?u.schema:pr(a),a.entity_encoding=a.entity_encoding||"named",a.remove_trailing_brs=!("remove_trailing_brs"in a)||a.remove_trailing_brs,l=Np(a,c),Hp(l,a,s),{schema:c,addNodeFilter:l.addNodeFilter,addAttributeFilter:l.addAttributeFilter,serialize:function(e,t){var n=bd({format:"html"},t||{}),r=Lp(u,e,n),o=function(e,t,n){var r=lu(n.getInner?t.innerHTML:e.getOuterHTML(t));return n.selection||Wn(yt.fromDom(t))?r:Mn.trim(r)}(s,r,n),i=function(e,t,n){var r=n.selection?bd({forced_root_block:!1},n):n,o=e.parse(t,r);return Pp(o),o}(l,o,n);return"tree"===n.format?i:kp(u,a,c,i,n)},addRules:function(e){c.addValidElements(e)},setRules:function(e){c.setValidElements(e)},addTempAttr:d(Sp,l,e),getTempAttrs:function(){return e}}}function Ap(e,t){var n=Tp(e,t);return{schema:n.schema,addNodeFilter:n.addNodeFilter,addAttributeFilter:n.addAttributeFilter,serialize:n.serialize,addRules:n.addRules,setRules:n.setRules,addTempAttr:n.addTempAttr,getTempAttrs:n.getTempAttrs}}var Mp=Mn.each,Rp=Xi.DOM,Dp=function(e){return e&&"string"==typeof e?(e=(e=e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),Mn.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Mn.map(e.split(/(?:~\+|~|\+)/),bp),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[]},_p=function(n,e){var t,r,o,i,a,u,s="";if(!1===(u=n.settings.preview_styles))return"";"string"!=typeof u&&(u="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");function c(e){return e.replace(/%(\w+)/g,"")}if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}return"preview"in e&&!1===(u=e.preview)?"":(t=e.block||e.inline||"span",r=(i=Dp(e.selector)).length?(i[0].name||(i[0].name=t),t=e.selector,yp(i,n)):yp([t],n),o=Rp.select(t,r)[0]||r.firstChild,Mp(e.styles,function(e,t){(e=c(e))&&Rp.setStyle(o,t,e)}),Mp(e.attributes,function(e,t){(e=c(e))&&Rp.setAttrib(o,t,e)}),Mp(e.classes,function(e){e=c(e),Rp.hasClass(o,e)||Rp.addClass(o,e)}),n.fire("PreviewFormats"),Rp.setStyles(r,{position:"absolute",left:-65535}),n.getBody().appendChild(r),a=Rp.getStyle(n.getBody(),"fontSize",!0),a=/px$/.test(a)?parseInt(a,10):0,Mp(u.split(" "),function(e){var t=Rp.getStyle(o,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=Rp.getStyle(n.getBody(),e,!0),"#ffffff"===Rp.toHex(t).toLowerCase())||"color"===e&&"#000000"===Rp.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===a)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*a+"px"}"border"===e&&t&&(s+="padding:0 2px;"),s+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),Rp.remove(r),s)},Bp=function(e,t,n,r,o){var i=t.get(n);!zg.match(e,n,r,o)||"toggle"in i[0]&&!i[0].toggle?mp.applyFormat(e,n,r,o):tp(e,n,r,o)},Op=function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])},Hp=function(t,s,c){t.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n,r=e.length;r--;)(n=e[r]).attr("tabindex",n.attr("data-mce-tabindex")),n.attr(t,null)}),t.addAttributeFilter("src,href,style",function(e,t){for(var n,r,o=e.length,i="data-mce-"+t,a=s.url_converter,u=s.url_converter_scope;o--;)(r=(n=e[o]).attr(i))!==undefined?(n.attr(t,0<r.length?r:null),n.attr(i,null)):(r=n.attr(t),"style"===t?r=c.serializeStyle(c.parseStyle(r),n.name):a&&(r=a.call(u,r,t,n.name)),n.attr(t,0<r.length?r:null))}),t.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)(n=(t=e[r]).attr("class"))&&(n=t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),t.attr("class",0<n.length?n:null))}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r,o=e.length;o--;){if("bookmark"===(r=e[o]).attr("data-mce-type")&&!n.cleanup)k.from(r.firstChild).exists(function(e){return!su(e.value)})?r.unwrap():r.remove()}}),t.addNodeFilter("noscript",function(e){for(var t,n=e.length;n--;)(t=e[n].firstChild)&&(t.value=ir.decode(t.value))}),t.addNodeFilter("script,style",function(e,t){for(var n,r,o,i=e.length,a=function(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")};i--;)r=(n=e[i]).firstChild?n.firstChild.value:"","script"===t?((o=n.attr("type"))&&n.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="// <![CDATA[\n"+a(r)+"\n// ]]>")):"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="\x3c!--\n"+a(r)+"\n--\x3e")}),t.addNodeFilter("#comment",function(e){for(var t,n=e.length;n--;)0===(t=e[n]).value.indexOf("[CDATA[")?(t.name="#cdata",t.type=4,t.value=t.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===t.value.indexOf("mce:protected ")&&(t.name="#text",t.type=3,t.raw=!0,t.value=unescape(t.value).substr(14))}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n,r=e.length;r--;)7===(n=e[r]).type?n.remove():1===n.type&&("input"!==t||n.attr("type")||n.attr("type","text"))}),t.addAttributeFilter("data-mce-type",function(e){z(e,function(e){"format-caret"===e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)})},Pp=function(e){function t(e){return e&&"br"===e.name}var n,r;t(n=e.lastChild)&&t(r=n.prev)&&(n.remove(),r.remove())},Lp=function(e,t,n){return function(e,t){return e&&e.hasEventListeners("PreProcess")&&!t.no_events}(e,n)?function(e,t,n){var r,o,i,a=e.dom;return t=t.cloneNode(!0),(r=j.document.implementation).createHTMLDocument&&(o=r.createHTMLDocument(""),Mn.each("BODY"===t.nodeName?t.childNodes:[t],function(e){o.body.appendChild(o.importNode(e,!0))}),t="BODY"!==t.nodeName?o.body.firstChild:o.body,i=a.doc,a.doc=o),cd(e,bd(n,{node:t})),i&&(a.doc=i),t}(e,t,n):t},Vp=function(e,t){t.inline_styles&&xp(e,t)},Ip=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},Fp=Mn.makeMap,Up=Mn.each,jp=Mn.explode,qp=Mn.extend;function $p(e){return{getBookmark:d(Vc,e),moveToBookmark:d(Ic,e)}}($p=$p||{}).isBookmarkNode=Fc;function Wp(r,a){var u,s,c,l,f,d,h,m,g,p,v,y,i,b,C,w,x,z=a.dom,E=Mn.each,N=a.getDoc(),S=j.document,k=Math.abs,T=Math.round,A=a.getBody();function M(e){return e&&("IMG"===e.nodeName||a.dom.is(e,"figure.image"))}function e(e){var t=e.target;!function(e,t){if("longpress"!==e.type&&0!==e.type.indexOf("touch"))return M(e.target)&&!Jm(e.clientX,e.clientY,t);var n=e.touches[0];return M(e.target)&&!Jm(n.clientX,n.clientY,t)}(e,a.selection.getRng())||e.isDefaultPrevented()||a.selection.select(t)}function R(e){return a.dom.is(e,"figure.image")?e.querySelector("img"):e}function D(e){var t=a.settings.object_resizing;return!1!==t&&!Nn.iOS&&("string"!=typeof t&&(t="table,img,figure.image,div"),"false"!==e.getAttribute("data-mce-resize")&&(e!==a.getBody()&&we(yt.fromDom(e),t)))}function _(e){var t,n,r,o;t=e.screenX-d,n=e.screenY-h,b=t*f[2]+p,C=n*f[3]+v,b=b<5?5:b,C=C<5?5:C,(M(u)&&!1!==a.settings.resize_img_proportional?!Ah.modifierPressed(e):Ah.modifierPressed(e)||M(u)&&f[2]*f[3]!=0)&&(k(t)>k(n)?(C=T(b*y),b=T(C/y)):(b=T(C/y),C=T(b*y))),z.setStyles(R(s),{width:b,height:C}),r=0<(r=f.startPos.x+t)?r:0,o=0<(o=f.startPos.y+n)?o:0,z.setStyles(c,{left:r,top:o,display:"block"}),c.innerHTML=b+" &times; "+C,f[2]<0&&s.clientWidth<=b&&z.setStyle(s,"left",m+(p-b)),f[3]<0&&s.clientHeight<=C&&z.setStyle(s,"top",g+(v-C)),(t=A.scrollWidth-w)+(n=A.scrollHeight-x)!==0&&z.setStyles(c,{left:r-t,top:o-n}),i||(md(a,u,p,v),i=!0)}function n(e){function t(e,t){if(e)do{if(e===t)return!0}while(e=e.parentNode)}var n;i||a.removed||(E(z.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),n="mousedown"===e.type?e.target:r.getNode(),t(n=z.$(n).closest("table,img,figure.image,hr")[0],A)&&(L(),t(r.getStart(!0),n)&&t(r.getEnd(!0),n))?O(n):H())}function o(e){return Xp(function(e,t){for(;t&&t!==e;){if(Yp(t)||Xp(t))return t;t=t.parentNode}return null}(a.getBody(),e))}l={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var B=function(){i=!1;function e(e,t){t&&(u.style[e]||!a.schema.isValid(u.nodeName.toLowerCase(),e)?z.setStyle(R(u),e,t):z.setAttrib(R(u),e,t))}e("width",b),e("height",C),z.unbind(N,"mousemove",_),z.unbind(N,"mouseup",B),S!==N&&(z.unbind(S,"mousemove",_),z.unbind(S,"mouseup",B)),z.remove(s),z.remove(c),O(u),gd(a,u,b,C),z.setAttrib(u,"style",z.getAttrib(u,"style")),a.nodeChanged()},O=function(e){var t,r,o,n,i;H(),P(),t=z.getPos(e,A),m=t.x,g=t.y,i=e.getBoundingClientRect(),r=i.width||i.right-i.left,o=i.height||i.bottom-i.top,u!==e&&(u=e,b=C=0),n=a.fire("ObjectSelected",{target:e}),D(e)&&!n.isDefaultPrevented()?E(l,function(t,e){var n;(n=z.get("mceResizeHandle"+e))&&z.remove(n),n=z.add(A,"div",{id:"mceResizeHandle"+e,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+e+"-resize; margin:0; padding:0"}),11===Nn.ie&&(n.contentEditable=!1),z.bind(n,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),function(e){d=e.screenX,h=e.screenY,p=R(u).clientWidth,v=R(u).clientHeight,y=v/p,(f=t).startPos={x:r*t[0]+m,y:o*t[1]+g},w=A.scrollWidth,x=A.scrollHeight,s=u.cloneNode(!0),z.addClass(s,"mce-clonedresizable"),z.setAttrib(s,"data-mce-bogus","all"),s.contentEditable=!1,s.unSelectabe=!0,z.setStyles(s,{left:m,top:g,margin:0}),s.removeAttribute("data-mce-selected"),A.appendChild(s),z.bind(N,"mousemove",_),z.bind(N,"mouseup",B),S!==N&&(z.bind(S,"mousemove",_),z.bind(S,"mouseup",B)),c=z.add(A,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},p+" &times; "+v)}(e)}),t.elm=n,z.setStyles(n,{left:r*t[0]+m-n.offsetWidth/2,top:o*t[1]+g-n.offsetHeight/2})}):H(),u.setAttribute("data-mce-selected","1")},H=function(){var e,t;for(e in P(),u&&u.removeAttribute("data-mce-selected"),l)(t=z.get("mceResizeHandle"+e))&&(z.unbind(t),z.remove(t))},P=function(){for(var e in l){var t=l[e];t.elm&&(z.unbind(t.elm),delete t.elm)}},L=function(){try{a.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}};return a.on("init",function(){L(),(Nn.browser.isIE()||Nn.browser.isEdge())&&(a.on("mousedown click",function(e){var t=e.target,n=t.nodeName;i||!/^(TABLE|IMG|HR)$/.test(n)||o(t)||(2!==e.button&&a.selection.select(t,"TABLE"===n),"mousedown"===e.type&&a.nodeChanged())}),a.dom.bind(A,"mscontrolselect",function(e){function t(e){pn.setEditorTimeout(a,function(){a.selection.select(e)})}if(o(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}));var t=pn.throttle(function(e){a.composing||n(e)});a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged",t),a.on("keyup compositionend",function(e){u&&"TABLE"===u.nodeName&&t(e)}),a.on("hide blur",H),a.on("contextmenu longpress",e,!0)}),a.on("remove",P),{isResizable:D,showResizeRect:O,hideResizeRect:H,updateResizeRect:n,destroy:function(){u=s=null}}}var Kp=$p,Xp=Ge.isContentEditableFalse,Yp=Ge.isContentEditableTrue;function Gp(e){var t=yt.fromDom(j.document),n=ki(t),r=function(e,t){var n=t.owner(e);return Vv(t,n)}(e,Iv),o=Hi(e),i=m(r,function(e,t){var n=Hi(t);return{left:e.left+n.left(),top:e.top+n.top()}},{left:0,top:0});return Oi(i.left+o.left()+n.left(),i.top+o.top()+n.top())}function Jp(e){return"textarea"===ie(e)}function Qp(e,t){var n=function(e){var t=e.dom().ownerDocument,n=t.body,r=t.defaultView,o=t.documentElement;if(n===e.dom())return Oi(n.offsetLeft,n.offsetTop);var i=Si(r.pageYOffset,o.scrollTop),a=Si(r.pageXOffset,o.scrollLeft),u=Si(o.clientTop,n.clientTop),s=Si(o.clientLeft,n.clientLeft);return Hi(e).translate(a-s,i-u)}(e),r=function(e){return Lv.get(e)}(e);return{element:e,bottom:n.top()+r,pos:n,cleanup:t}}function Zp(e,t){var n=function(e,t){var n=Re(e);if(0===n.length||Jp(e))return{element:e,offset:t};if(t<n.length&&!Jp(n[t]))return{element:n[t],offset:0};var r=n[n.length-1];return Jp(r)?{element:e,offset:t}:"img"===ie(r)?{element:r,offset:1}:zt(r)?{element:r,offset:Jc(r).length}:{element:r,offset:Re(r).length}}(e,t),r=yt.fromHtml('<span data-mce-bogus="all">'+cu+"</span>");return Ci(n.element,r),Qp(r,function(){return _i(r)})}function ev(e){return Qp(yt.fromDom(e),i)}function tv(n,r,o,i){Uv(n,function(e,t){return Fv(n,r,o,i)},o)}function nv(e,t,n,r){var o=yt.fromDom(e.getDoc());n(o,ki(o).top(),t,r)}function rv(e,t,n,r){var o=e.pos;if(n)Ti(o.left(),o.top(),r);else{var i=o.top()-t+(e.bottom-o.top());Ti(o.left(),i,r)}}function ov(e,t,n,r,o){r.pos.top()<t?rv(r,n,!1!==o,e):r.bottom>n+t&&rv(r,n,!0===o,e)}function iv(e,t,n,r){var o=e.dom().defaultView.innerHeight;ov(e,t,o,n,r)}function av(e,t,n,r,o){var i=t.dom().defaultView.innerHeight;ov(t,n,i,r,o);var a=Gp(r.element),u=Li(j.window);a.top()<u.y()?Ai(r.element,!1!==o):a.top()>u.bottom()&&Ai(r.element,!0===o)}function uv(e,t,n){return tv(e,d(iv),t,n)}function sv(e,t,n){return nv(e,ev(t),d(iv),n)}function cv(e,t,n){return tv(e,d(av,e),t,n)}function lv(e,t,n){return nv(e,ev(t),d(av,e),n)}function fv(e){return Ge.isContentEditableTrue(e)||Ge.isContentEditableFalse(e)}function dv(e,t){var n=(t||j.document).createDocumentFragment();return z(e,function(e){n.appendChild(e.dom())}),yt.fromDom(n)}function hv(e,t){var n=parseInt(ge(e,t),10);return isNaN(n)?1:n}function mv(e){return b(e,function(e,t){return t.cells().length>e?t.cells().length:e},0)}function gv(e,t){for(var n=e.rows(),r=0;r<n.length;r++)for(var o=n[r].cells(),i=0;i<o.length;i++)if(ze(o[i],t))return k.some(Yv(i,r));return k.none()}function pv(e,t,n,r,o){for(var i=[],a=e.rows(),u=n;u<=o;u++){var s=a[u].cells(),c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(Xv(a[u].element(),c))}return i}function vv(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t}function yv(e){return y(ey(e),$n)}function bv(e){return ma(e,"td[data-mce-selected],th[data-mce-selected]")}function Cv(e,t){var n=bv(t),r=yv(e);return 0<n.length?n:r}function wv(t,n){return g(t,function(e){return"li"===ie(e)&&uh(e,n)}).fold($([]),function(e){return function(e){return g(e,function(e){return"ul"===ie(e)||"ol"===ie(e)})}(t).map(function(e){return[yt.fromTag("li"),yt.fromTag(ie(e))]}).getOr([])})}function xv(e,t){var n=yt.fromDom(t.commonAncestorContainer),r=fh(n,e),o=y(r,function(e){return Dn(e)||Ln(e)}),i=wv(r,t),a=o.concat(i.length?i:function(t){return Un(t)?Se(t).filter(Fn).fold($([]),function(e){return[t,e]}):Fn(t)?[t]:[]}(n));return X(a,ka)}function zv(){return dv([])}function Ev(e,t){return function(e,t){var n=b(t,function(e,t){return Di(t,e),t},e);return 0<t.length?dv([n]):n}(yt.fromDom(t.cloneContents()),xv(e,t))}function Nv(e,o){return function(e,t){return Ca(t,"table",d(ze,e))}(e,o[0]).bind(function(e){var t=o[0],n=o[o.length-1],r=Gv(e);return Qv(r,t,n).map(function(e){return dv([Jv(e)])})}).getOrThunk(zv)}function Sv(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)}function kv(e,t,n){return Sv(e,t,function(e){return e.nodeName===n})}function Tv(e){return e&&"TABLE"===e.nodeName}function Av(e,t,n){for(var r=new yi(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(Ge.isBr(t))return!0}function Mv(e,t,n,r,o){var i,a,u=e.getRoot(),s=e.schema.getNonEmptyElements(),c=e.getParent(o.parentNode,e.isBlock)||u;if(r&&Ge.isBr(o)&&t&&e.isEmpty(c))return k.some(Uu(o.parentNode,e.nodeIndex(o)));for(var l,f,d=new yi(o,c);a=d[r?"prev":"next"]();){if("false"===e.getContentEditableParent(a)||(f=u,Da(l=a)&&!1===Sv(l,f,rs)))return k.none();if(Ge.isText(a)&&0<a.nodeValue.length)return!1===kv(a,u,"A")?k.some(Uu(a,r?a.nodeValue.length:0)):k.none();if(e.isBlock(a)||s[a.nodeName.toLowerCase()])return k.none();i=a}return n&&i?k.some(Uu(i,0)):k.none()}function Rv(e,t,n,r){var o,i,a,u,s,c,l,f=e.getRoot(),d=!1;if(o=r[(n?"start":"end")+"Container"],i=r[(n?"start":"end")+"Offset"],c=Ge.isElement(o)&&i===o.childNodes.length,u=e.schema.getNonEmptyElements(),s=n,Da(o))return k.none();if(Ge.isElement(o)&&i>o.childNodes.length-1&&(s=!1),Ge.isDocument(o)&&(o=f,i=0),o===f){if(s&&(a=o.childNodes[0<i?i-1:0])){if(Da(a))return k.none();if(u[a.nodeName]||Tv(a))return k.none()}if(o.hasChildNodes()){if(i=Math.min(!s&&0<i?i-1:i,o.childNodes.length-1),o=o.childNodes[i],i=Ge.isText(o)&&c?o.data.length:0,!t&&o===f.lastChild&&Tv(o))return k.none();if(function(e,t){for(;t&&t!==e;){if(Ge.isContentEditableFalse(t))return!0;t=t.parentNode}return!1}(f,o)||Da(o))return k.none();if(o.hasChildNodes()&&!1===Tv(o)){var h=new yi(a=o,f);do{if(Ge.isContentEditableFalse(a)||Da(a)){d=!1;break}if(Ge.isText(a)&&0<a.nodeValue.length){i=s?0:a.nodeValue.length,o=a,d=!0;break}if(u[a.nodeName.toLowerCase()]&&(!(l=a)||!/^(TD|TH|CAPTION)$/.test(l.nodeName))){i=e.nodeIndex(a),o=a.parentNode,s||i++,d=!0;break}}while(a=s?h.next():h.prev())}}}return t&&(Ge.isText(o)&&0===i&&Mv(e,c,t,!0,o).each(function(e){o=e.container(),i=e.offset(),d=!0}),Ge.isElement(o)&&(!(a=(a=o.childNodes[i])||o.childNodes[i-1])||!Ge.isBr(a)||function(e,t){return e.previousSibling&&e.previousSibling.nodeName===t}(a,"A")||Av(e,a,!1)||Av(e,a,!0)||Mv(e,c,t,!0,a).each(function(e){o=e.container(),i=e.offset(),d=!0}))),s&&!t&&Ge.isText(o)&&i===o.nodeValue.length&&Mv(e,c,t,!1,o).each(function(e){o=e.container(),i=e.offset(),d=!0}),d?k.some(Uu(o,i)):k.none()}function Dv(e){return 0===e.dom().length?(_i(e),k.none()):k.some(e)}function _v(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return k.from(i).map(yt.fromDom).map(function(e){return r&&t.collapsed?e:De(e,o(e,a)).getOr(e)}).bind(function(e){return xt(e)?k.some(e):Se(e)}).map(function(e){return e.dom()}).getOr(e)}function Bv(e,t,n){return _v(e,t,!0,n,function(e,t){return Math.min(function(e){return e.dom().childNodes.length}(e),t)})}function Ov(e,t,n){return _v(e,t,!1,n,function(e,t){return 0<t?t-1:t})}function Hv(e,t){for(var n=e;e&&Ge.isText(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}function Pv(e,t,n){if(e&&e.hasOwnProperty(t)){var r=y(e[t],function(e){return e!==n});0===r.length?delete e[t]:e[t]=r}}var Lv=function CN(r,o){function e(e){var t=o(e);if(t<=0||null===t){var n=ve(e,r);return parseFloat(n)||0}return t}function i(o,e){return b(e,function(e,t){var n=ve(o,t),r=n===undefined?0:parseInt(n,10);return isNaN(r)?e:e+r},0)}return{set:function(e,t){if(!_(t)&&!t.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+t);var n=e.dom();fe(n)&&(n.style[r]=t+"px")},get:e,getOuter:e,aggregate:i,max:function(e,t,n){var r=i(e,n);return r<t?t-r:0}}}("height",function(e){var t=e.dom();return de(e)?t.getBoundingClientRect().height:t.offsetHeight}),Vv=function(r,e){return r.view(e).fold($([]),function(e){var t=r.owner(e),n=Vv(r,t);return[e].concat(n)})},Iv=/* */Object.freeze({view:function(e){return(e.dom()===j.document?k.none():k.from(e.dom().defaultView.frameElement)).map(yt.fromDom)},owner:function(e){return Ee(e)}}),Fv=function(e,t,n,r){var o=yt.fromDom(e.getBody()),i=yt.fromDom(e.getDoc());!function(e){e.dom().offsetWidth}(o);var a=ki(i).top(),u=Zp(yt.fromDom(n.startContainer),n.startOffset);t(i,a,u,r),u.cleanup()},Uv=function(e,t,n){var r=n.startContainer,o=n.startOffset,i=n.endContainer,a=n.endOffset;t(yt.fromDom(r),yt.fromDom(i));var u=e.dom.createRng();u.setStart(r,o),u.setEnd(i,a),e.selection.setRng(n)},jv=function(e,t,n){!function(e,t,n){return e.fire("ScrollIntoView",{elm:t,alignToTop:n}).isDefaultPrevented()}(e,t,n)&&(e.inline?sv:lv)(e,t,n)},qv=function(e,t,n){(e.inline?uv:cv)(e,t,n)},$v=function(e,t,n){var r,o,i=n;if(i.caretPositionFromPoint)(o=i.caretPositionFromPoint(e,t))&&((r=n.createRange()).setStart(o.offsetNode,o.offset),r.collapse(!0));else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(i.body.createTextRange){r=i.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(a){r=function(e,n,t){var r,o,i;if(r=t.elementFromPoint(e,n),o=t.body.createTextRange(),r&&"HTML"!==r.tagName||(r=t.body),o.moveToElementText(r),0<(i=(i=Mn.toArray(o.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-(t=Math.abs(Math.max(t.top-n,t.bottom-n)))})).length){n=(i[0].bottom+i[0].top)/2;try{return o.moveToPoint(e,n),o.collapse(!0),o}catch(a){}}return null}(e,t,n)}return function(e,t){var n=e&&e.parentElement?e.parentElement():null;return Ge.isContentEditableFalse(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(n,t,fv))?null:e}(r,n.body)}return r},Wv=function(n,e){return X(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})},Kv=be("element","width","rows"),Xv=be("element","cells"),Yv=be("x","y"),Gv=function(e){var o=Kv(ka(e),0,[]);return z(ma(e,"tr"),function(n,r){z(ma(n,"td,th"),function(e,t){!function(e,t,n,r,o){for(var i=hv(o,"rowspan"),a=hv(o,"colspan"),u=e.rows(),s=n;s<n+i;s++){u[s]||(u[s]=Xv(Ta(r),[]));for(var c=t;c<t+a;c++){u[s].cells()[c]=s===n&&c===t?o:ka(o)}}}(o,function(e,t,n){for(;r=t,o=n,i=void 0,((i=e.rows())[o]?i[o].cells():[])[r];)t++;var r,o,i;return t}(o,t,r),r,n,e)})}),Kv(o.element(),mv(o.rows()),o.rows())},Jv=function(e){return function(e,t){var n=ka(e.element()),r=yt.fromTag("tbody");return zi(r,t),Di(n,r),n}(e,function(e){return X(e.rows(),function(e){var t=X(e.cells(),function(e){var t=Ta(e);return pe(t,"colspan"),pe(t,"rowspan"),t}),n=ka(e.element());return zi(n,t),n})}(e))},Qv=function(n,e,r){return gv(n,e).bind(function(t){return gv(n,r).map(function(e){return function(e,t,n){var r=t.x(),o=t.y(),i=n.x(),a=n.y(),u=o<a?pv(e,r,o,i,a):pv(e,r,a,i,o);return Kv(e.element(),mv(u),u)}(n,t,e)})})},Zv=vv,ey=function(e){return v(e,function(e){var t=Wa(e);return t?[yt.fromDom(t)]:[]})},ty=function(e){return 1<vv(e).length},ny=Cv,ry=function(e){return Cv(Zv(e.selection.getSel()),yt.fromDom(e.getBody()))},oy=function(e,t){var n=ny(t,e);return 0<n.length?Nv(e,n):function(e,t){return 0<t.length&&t[0].collapsed?zv():Ev(e,t[0])}(e,t)},iy=function(e,t){if(void 0===t&&(t={}),t.get=!0,t.format=t.format||"html",t.selection=!0,(t=e.fire("BeforeGetContent",t)).isDefaultPrevented())return e.fire("GetContent",t),t.content;if("text"===t.format)return function(r){return k.from(r.selection.getRng()).map(function(e){var t=r.dom.add(r.getBody(),"div",{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),n=lu(t.innerText);return r.dom.remove(t),n}).getOr("")}(e);t.getInner=!0;var n=function(e,t){var n,r=e.selection.getRng(),o=e.dom.create("body"),i=e.selection.getSel(),a=Wv(e,Zv(i));return(n=t.contextual?oy(yt.fromDom(e.getBody()),a).dom():r.cloneContents())&&o.appendChild(n),e.selection.serializer.serialize(o,t)}(e,t);return"tree"===t.format?n:(t.content=e.selection.isCollapsed()?"":n,e.fire("GetContent",t),t.content)},ay=function(e,t){var n=t.collapsed,r=t.cloneRange(),o=Uu.fromRangeStart(t);return Rv(e,n,!0,r).each(function(e){n&&Uu.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||Rv(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),hh(t,r)?k.none():k.some(r)},uy=function(e,t,n){if((n=function(e,t){return(e=e||{format:"html"}).set=!0,e.selection=!0,e.content=t,e}(n,t)).no_events||!(n=e.fire("BeforeSetContent",n)).isDefaultPrevented()){var r=e.selection.getRng();!function(r,e){var t=k.from(e.firstChild).map(yt.fromDom),n=k.from(e.lastChild).map(yt.fromDom);r.deleteContents(),r.insertNode(e);var o=t.bind(ke).filter(zt).bind(Dv),i=n.bind(Te).filter(zt).bind(Dv);Ya(o,t.filter(zt),function(e,t){!function(e,t){e.insertData(0,t)}(t.dom(),e.dom().data),_i(e)}),Ya(i,n.filter(zt),function(e,t){var n=t.dom().length;t.dom().appendData(e.dom().data),r.setEnd(t.dom(),n),_i(e)}),r.collapse(!1)}(r,r.createContextualFragment(n.content)),e.selection.setRng(r),qv(e,r),n.no_events||e.fire("SetContent",n)}else e.fire("SetContent",n)};function sy(e){return!!e.select}function cy(e){return!(!e||!e.ownerDocument)&&Bt(yt.fromDom(e.ownerDocument),yt.fromDom(e))}function ly(u,s,e,c){function t(e,t){return uy(c,e,t)}function r(){var e,t,n=d();return!(n&&n.anchorNode&&n.focusNode)||((e=u.createRng()).setStart(n.anchorNode,n.anchorOffset),e.collapse(!0),(t=u.createRng()).setStart(n.focusNode,n.focusOffset),t.collapse(!0),e.compareBoundaryPoints(e.START_TO_START,t)<=0)}var n,o,l,f,i=function p(i,n){var a,u;return{selectorChangedWithUnbind:function(e,t){return a||(a={},u={},n.on("NodeChange",function(e){var n=e.element,r=i.getParents(n,null,i.getRoot()),o={};Mn.each(a,function(e,n){Mn.each(r,function(t){if(i.is(t,n))return u[n]||(Mn.each(e,function(e){e(!0,{node:t,selector:n,parents:r})}),u[n]=e),o[n]=e,!1})}),Mn.each(u,function(e,t){o[t]||(delete u[t],Mn.each(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),a[e]||(a[e]=[]),a[e].push(t),{unbind:function(){Pv(a,e,t),Pv(u,e,t)}}}}}(u,c).selectorChangedWithUnbind,a=function(e){var t=h();t.collapse(!!e),m(t)},d=function(){return s.getSelection?s.getSelection():s.document.selection},h=function(){function e(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var t,n,r,o;if(!s)return null;if(null==(o=s.document))return null;if(c.bookmark!==undefined&&!1===ud(c)){var i=Qf(c);if(i.isSome())return i.map(function(e){return Wv(c,[e])[0]}).getOr(o.createRange())}try{(t=d())&&!Ge.isRestrictedNode(t.anchorNode)&&(n=0<t.rangeCount?t.getRangeAt(0):t.createRange?t.createRange():o.createRange())}catch(a){}return(n=(n=Wv(c,[n])[0])||(o.createRange?o.createRange():o.body.createTextRange())).setStart&&9===n.startContainer.nodeType&&n.collapsed&&(r=u.getRoot(),n.setStart(r,0),n.setEnd(r,0)),l&&f&&(0===e(n.START_TO_START,n,l)&&0===e(n.END_TO_END,n,l)?n=f:f=l=null),n},m=function(e,t){var n,r;if(function(e){return!!e&&(!!sy(e)||cy(e.startContainer)&&cy(e.endContainer))}(e)){var o=sy(e)?e:null;if(o){f=null;try{o.select()}catch(i){}}else{if(n=d(),e=c.fire("SetSelectionRange",{range:e,forward:t}).range,n){f=e;try{n.removeAllRanges(),n.addRange(e)}catch(i){}!1===t&&n.extend&&(n.collapse(e.endContainer,e.endOffset),n.extend(e.startContainer,e.startOffset)),l=0<n.rangeCount?n.getRangeAt(0):null}e.collapsed||e.startContainer!==e.endContainer||!n.setBaseAndExtent||Nn.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(r=e.startContainer.childNodes[e.startOffset])&&"IMG"===r.tagName&&(n.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),n.anchorNode===e.startContainer&&n.focusNode===e.endContainer||n.setBaseAndExtent(r,0,r,1)),c.fire("AfterSetSelectionRange",{range:e,forward:t})}}},g={bookmarkManager:null,controlSelection:null,dom:u,win:s,serializer:e,editor:c,collapse:a,setCursorLocation:function(e,t){var n=u.createRng();e?(n.setStart(e,t),n.setEnd(e,t),m(n),a(!1)):(sh(u,n,c.getBody(),!0),m(n))},getContent:function(e){return iy(c,e)},setContent:t,getBookmark:function(e,t){return n.getBookmark(e,t)},moveToBookmark:function(e){return n.moveToBookmark(e)},select:function(e,t){return function(r,e,o){return k.from(e).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(sh(r,n,e,!0),sh(r,n,e,!1)),n})}(u,e,t).each(m),e},isCollapsed:function(){var e=h(),t=d();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:r,setNode:function(e){return t(u.getOuterHTML(e)),e},getNode:function(){return function(e,t){var n,r,o,i,a;return t?(r=t.startContainer,o=t.endContainer,i=t.startOffset,a=t.endOffset,n=t.commonAncestorContainer,!t.collapsed&&(r===o&&a-i<2&&r.hasChildNodes()&&(n=r.childNodes[i]),3===r.nodeType&&3===o.nodeType&&(r=r.length===i?Hv(r.nextSibling,!0):r.parentNode,o=0===a?Hv(o.previousSibling,!1):o.parentNode,r&&r===o))?r:n&&3===n.nodeType?n.parentNode:n):e}(c.getBody(),h())},getSel:d,setRng:m,getRng:h,getStart:function(e){return Bv(c.getBody(),h(),e)},getEnd:function(e){return Ov(c.getBody(),h(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o,i,a=[];if(i=e.getRoot(),n=e.getParent(n||Bv(i,t,t.collapsed),e.isBlock),r=e.getParent(r||Ov(i,t,t.collapsed),e.isBlock),n&&n!==i&&a.push(n),n&&r&&n!==r)for(var u=new yi(o=n,i);(o=u.next())&&o!==r;)e.isBlock(o)&&a.push(o);return r&&n!==r&&r!==i&&a.push(r),a}(u,h(),e,t)},normalize:function(){var e=h(),t=d();if(ty(t)||!ch(c))return e;var n=ay(u,e);return n.each(function(e){m(e,r())}),n.getOr(e)},selectorChanged:function(e,t){return i(e,t),g},selectorChangedWithUnbind:i,getScrollContainer:function(){for(var e,t=u.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){return jv(c,e,t)},placeCaretAt:function(e,t){return m($v(e,t,c.getDoc()))},getBoundingClientRect:function(){var e=h();return e.collapsed?Ds.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){s=l=f=null,o.destroy()}};return n=Kp(g),o=Wp(g,c),g.bookmarkManager=n,g.controlSelection=o,g}function fy(e){return Uy(e)&&e.data[0]===cu}function dy(e){return Uy(e)&&e.data[e.data.length-1]===cu}function hy(e){return e.ownerDocument.createTextNode(cu)}function my(e,t){return e?function(e){if(Uy(e.previousSibling))return dy(e.previousSibling)||e.previousSibling.appendData(cu),e.previousSibling;if(Uy(e))return fy(e)||e.insertData(0,cu),e;var t=hy(e);return e.parentNode.insertBefore(t,e),t}(t):function(e){if(Uy(e.nextSibling))return fy(e.nextSibling)||e.nextSibling.insertData(0,cu),e.nextSibling;if(Uy(e))return dy(e)||e.appendData(cu),e;var t=hy(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t}(t)}function gy(e,t){return Ge.isText(e.container())?my(t,e.container()):my(t,e.getNode())}function py(e,t){var n=t.get();return n&&e.container()===n&&Ra(n)}function vy(e,t){if(!t)return t;var n=t.container(),r=t.offset();return e?Ra(n)?Ge.isText(n.nextSibling)?Ds(n.nextSibling,0):Ds.after(n):Ba(t)?Ds(n,r+1):t:Ra(n)?Ge.isText(n.previousSibling)?Ds(n.previousSibling,n.previousSibling.data.length):Ds.before(n):Oa(t)?Ds(n,r-1):t}function yy(e,t){var n=bs(t,e);return n||e}function by(e,t,n){var r=Ky.normalizeForwards(n),o=yy(t,r.container());return Ky.findRootInline(e,o,r).fold(function(){return Pc.nextPosition(o,r).bind(d(Ky.findRootInline,e,o)).map(function(e){return Yy.before(e)})},k.none)}function Cy(e,t){return null===os(e,t)}function wy(e,t,n){return Ky.findRootInline(e,t,n).filter(d(Cy,t))}function xy(e,t,n){var r=Ky.normalizeBackwards(n);return wy(e,t,r).bind(function(e){return Pc.prevPosition(e,r).isNone()?k.some(Yy.start(e)):k.none()})}function zy(e,t,n){var r=Ky.normalizeForwards(n);return wy(e,t,r).bind(function(e){return Pc.nextPosition(e,r).isNone()?k.some(Yy.end(e)):k.none()})}function Ey(e,t,n){var r=Ky.normalizeBackwards(n),o=yy(t,r.container());return Ky.findRootInline(e,o,r).fold(function(){return Pc.prevPosition(o,r).bind(d(Ky.findRootInline,e,o)).map(function(e){return Yy.after(e)})},k.none)}function Ny(e){return!1===Ky.isRtl(Gy(e))}function Sy(e,t,n){return Xy([by,xy,zy,Ey],[e,t,n]).filter(Ny)}function ky(e){return e.fold($("before"),$("start"),$("end"),$("after"))}function Ty(e){return e.fold(Yy.before,Yy.before,Yy.after,Yy.after)}function Ay(n,e,r,t,o,i){return Ya(Ky.findRootInline(e,r,t),Ky.findRootInline(e,r,o),function(e,t){return e!==t&&Ky.hasSameParentBlock(r,e,t)?Yy.after(n?e:t):i}).getOr(i)}function My(e,t){return e.fold($(!0),function(e){return!function(e,t){return ky(e)===ky(t)&&Gy(e)===Gy(t)}(e,t)})}function Ry(e,t){return e?t.fold(q(k.some,Yy.start),k.none,q(k.some,Yy.after),k.none):t.fold(k.none,q(k.some,Yy.before),k.none,q(k.some,Yy.end))}function Dy(e,t,n,r){var o=Ky.normalizePosition(e,r),i=Sy(t,n,o);return Sy(t,n,o).bind(d(Ry,e)).orThunk(function(){return function(t,n,r,o,e){var i=Ky.normalizePosition(t,e);return Pc.fromPosition(t,r,i).map(d(Ky.normalizePosition,t)).fold(function(){return o.map(Ty)},function(e){return Sy(n,r,e).map(d(Ay,t,n,r,i,e)).filter(d(My,o))}).filter(Ny)}(e,t,n,i,r)})}function _y(e){return D(e.selection.getSel().modify)}function By(e,t,n){var r=e?1:-1;return t.setRng(Ds(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0}function Oy(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)}function Hy(e){return!1!==e.settings.inline_boundaries}function Py(e,t){e?t.setAttribute("data-mce-selected","inline-boundary"):t.removeAttribute("data-mce-selected")}function Ly(t,e,n){return $y(e,n).map(function(e){return Oy(t,e),n})}function Vy(e,t,n){return function(){return!!Hy(t)&&tb(e,t)}}var Iy,Fy,Uy=Ge.isText,jy=d(my,!0),qy=d(my,!1),$y=function(n,e){return e.fold(function(e){qs.remove(n.get());var t=jy(e);return n.set(t),k.some(Ds(t,t.length-1))},function(e){return Pc.firstPositionIn(e).map(function(e){if(py(e,n))return Ds(n.get(),1);qs.remove(n.get());var t=gy(e,!0);return n.set(t),Ds(t,1)})},function(e){return Pc.lastPositionIn(e).map(function(e){if(py(e,n))return Ds(n.get(),n.get().length-1);qs.remove(n.get());var t=gy(e,!1);return n.set(t),Ds(t,t.length-1)})},function(e){qs.remove(n.get());var t=qy(e);return n.set(t),k.some(Ds(t,1))})},Wy=/[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,Ky={isInlineTarget:function(e,t){return we(yt.fromDom(t),If(e))},findRootInline:function(e,t,n){var r=function(e,t,n){return y(Xi.DOM.getParents(n.container(),"*",t),e)}(e,t,n);return k.from(r[r.length-1])},isRtl:function(e){return"rtl"===Xi.DOM.getStyle(e,"direction",!0)||function(e){return Wy.test(e)}(e.textContent)},isAtZwsp:function(e){return Ba(e)||Oa(e)},normalizePosition:vy,normalizeForwards:d(vy,!0),normalizeBackwards:d(vy,!1),hasSameParentBlock:function(e,t,n){var r=bs(t,e),o=bs(n,e);return r&&r===o}},Xy=function(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}return k.none()},Yy=jf([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element"]}]),Gy=function(e){return e.fold(W,W,W,W)},Jy=Sy,Qy=Dy,Zy=(d(Dy,!1),d(Dy,!0),Ty),eb=function(e){return e.fold(Yy.start,Yy.start,Yy.end,Yy.end)},tb=function(e,t){var n=t.selection.getRng(),r=e?Ds.fromRangeEnd(n):Ds.fromRangeStart(n);return!!_y(t)&&(e&&Ba(r)?By(!0,t.selection,r):!(e||!Oa(r))&&By(!1,t.selection,r))},nb={move:function(e,t,n){return function(){return!!Hy(e)&&function(t,n,e){var r=t.getBody(),o=Ds.fromRangeStart(t.selection.getRng()),i=d(Ky.isInlineTarget,t);return Qy(e,i,r,o).bind(function(e){return Ly(t,n,e)})}(e,t,n).isSome()}},moveNextWord:d(Vy,!0),movePrevWord:d(Vy,!1),setupSelectedState:function(t){var n=Je(null),r=d(Ky.isInlineTarget,t);return t.on("NodeChange",function(e){Hy(t)&&(function(e,t,n){var r=y(t.select('*[data-mce-selected="inline-boundary"]'),e),o=y(n,e);z(x(r,o),d(Py,!1)),z(x(o,r),d(Py,!0))}(r,t.dom,e.parents),function(e,t){if(e.selection.isCollapsed()&&!0!==e.composing&&t.get()){var n=Ds.fromRangeStart(e.selection.getRng());Ds.isTextPosition(n)&&!1===Ky.isAtZwsp(n)&&(Oy(e,qs.removeAndReposition(t.get(),n)),t.set(null))}}(t,n),function(n,r,o,e){if(r.selection.isCollapsed()){var t=y(e,n);z(t,function(e){var t=Ds.fromRangeStart(r.selection.getRng());Jy(n,r.getBody(),t).bind(function(e){return Ly(r,o,e)})})}}(r,t,n,e.parents))}),n},setCaretPosition:Oy};(Fy=Iy=Iy||{})[Fy.Br=0]="Br",Fy[Fy.Block=1]="Block",Fy[Fy.Wrap=2]="Wrap",Fy[Fy.Eol=3]="Eol";function rb(e,t){return e===Ms.Backwards?t.reverse():t}function ob(e,t,n,r){for(var o,i,a,u,s,c,l=rc(n),f=r,d=[];f&&(s=l,c=f,o=t===Ms.Forwards?s.next(c):s.prev(c));){if(Ge.isBr(o.getNode(!1)))return t===Ms.Forwards?{positions:rb(t,d).concat([o]),breakType:Iy.Br,breakAt:k.some(o)}:{positions:rb(t,d),breakType:Iy.Br,breakAt:k.some(o)};if(o.isVisible()){if(e(f,o)){var h=(i=t,a=f,u=o,Ge.isBr(u.getNode(i===Ms.Forwards))?Iy.Br:!1===Cs(a,u)?Iy.Block:Iy.Wrap);return{positions:rb(t,d),breakType:h,breakAt:k.some(o)}}d.push(o),f=o}else f=o}return{positions:rb(t,d),breakType:Iy.Eol,breakAt:k.none()}}function ib(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===Ms.Backwards?t.concat(e):[e].concat(t)}).getOr([])}function ab(e,i){return b(e,function(e,o){return e.fold(function(){return k.some(o)},function(r){return Ya(E(r.getClientRects()),E(o.getClientRects()),function(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},k.none())}function ub(t,e){return E(e.getClientRects()).bind(function(e){return ab(t,e.left)})}function sb(e,t,n,r){var o=e===Ms.Forwards,i=o?Ph:Lh;if(!r.collapsed){var a=bx(r);if(yx(a))return Zh(e,t,a,e===Ms.Backwards,!0)}var u=function(e){return Ma(e.startContainer)}(r),s=Ss(e,t.getBody(),r);if(i(s))return em(t,s.getNode(!o));var c=Ky.normalizePosition(o,n(s));if(!c)return u?r:null;if(i(c))return Zh(e,t,c.getNode(!o),o,!0);var l=n(c);return l&&i(l)&&As(c,l)?Zh(e,t,l.getNode(!o),o,!0):u?nm(t,c.toRange(),!0):null}function cb(e,t,n,r){var o,i,a,u,s,c,l,f,d;if(d=bx(r),o=Ss(e,t.getBody(),r),i=n(t.getBody(),Ih(1),o),a=y(i,Fh(1)),s=kn.last(o.getClientRects()),(Ph(o)||Oh(o))&&(d=o.getNode()),(Lh(o)||Hh(o))&&(d=o.getNode(!0)),!s)return null;if(c=s.left,(u=$h(a,c))&&yx(u.node))return l=Math.abs(c-u.left),f=Math.abs(c-u.right),Zh(e,t,u.node,l<f,!0);if(d){var h=function(e,t,n,r){function o(e){return kn.last(e.getClientRects())}var i,a,u,s,c,l,f=rc(t),d=[],h=0;l=o(s=1===e?(i=f.next,a=qa,u=ja,Ds.after(r)):(i=f.prev,a=ja,u=qa,Ds.before(r)));do{if(s.isVisible()&&!u(c=o(s),l)){if(0<d.length&&a(c,kn.last(d))&&h++,(c=Ia(c)).position=s,c.line=h,n(c))return d;d.push(c)}}while(s=i(s));return d}(e,t.getBody(),Ih(1),d);if(u=$h(y(h,Fh(1)),c))return nm(t,u.position.toRange(),!0);if(u=kn.last(y(h,Fh(0))))return nm(t,u.position.toRange(),!0)}}function lb(e,t,n){var r,o,i=rc(e.getBody()),a=d(Ts,i.next),u=d(Ts,i.prev);if(n.collapsed&&e.settings.forced_root_block){if(!(r=e.dom.getParent(n.startContainer,"PRE")))return;(1===t?a(Ds.fromRangeStart(n)):u(Ds.fromRangeStart(n)))||(o=function(e){var t=e.dom.create(mf(e));return(!Nn.ie||11<=Nn.ie)&&(t.innerHTML='<br data-mce-bogus="1">'),t}(e),1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse())}}function fb(t,n){return function(){var e=function(e,t){var n,r=rc(e.getBody()),o=d(Ts,r.next),i=d(Ts,r.prev),a=t?Ms.Forwards:Ms.Backwards,u=t?o:i,s=e.selection.getRng();return(n=sb(a,e,u,s))?n:(n=lb(e,a,s))||null}(t,n);return!!e&&(t.selection.setRng(e),!0)}}function db(t,n){return function(){var e=function(e,t){var n,r=t?1:-1,o=t?Xm:Km,i=e.selection.getRng();return(n=cb(r,e,o,i))?n:(n=lb(e,r,i))||null}(t,n);return!!e&&(t.selection.setRng(e),!0)}}function hb(n,r){return function(){var e=r?Ds.fromRangeEnd(n.selection.getRng()):Ds.fromRangeStart(n.selection.getRng()),t=r?gx(n.getBody(),e):mx(n.getBody(),e);return(r?N(t.positions):E(t.positions)).filter(function(t){return function(e){return t?Lh(e):Ph(e)}}(r)).fold($(!1),function(e){return n.selection.setRng(e.toRange()),!0})}}function mb(e,t,n,r,o){var i=ma(yt.fromDom(n),"td,th,caption").map(function(e){return e.dom()});return function(e,o,i){return b(e,function(e,r){return e.fold(function(){return k.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-o)+Math.abs(e.y-i)),n=Math.sqrt(Math.abs(r.x-o)+Math.abs(r.y-i));return k.some(n<t?r:e)})},k.none())}(y(function(n,e){return v(e,function(e){var t=function(e,t){return{left:e.left-t,top:e.top-t,right:e.right+2*t,bottom:e.bottom+2*t,width:e.width+t,height:e.height+t}}(Ia(e.getBoundingClientRect()),-1);return[{x:t.left,y:n(t),cell:e},{x:t.right,y:n(t),cell:e}]})}(e,i),function(e){return t(e,o)}),r,o).map(function(e){return e.cell})}function gb(t,n){return E(n.getClientRects()).bind(function(e){return Cx(t,e.left,e.top)}).bind(function(e){return ub(function(t){return Pc.lastPositionIn(t).map(function(e){return mx(t,e).positions.concat(e)}).getOr([])}(e),n)})}function pb(t,n){return N(n.getClientRects()).bind(function(e){return wx(t,e.left,e.top)}).bind(function(e){return ub(function(t){return Pc.firstPositionIn(t).map(function(e){return[e].concat(gx(t,e).positions)}).getOr([])}(e),n)})}function vb(e,t){e.selection.setRng(t),qv(e,t)}function yb(e,t,n){var r=e(t,n);return function(e){return e.breakType===Iy.Wrap&&0===e.positions.length}(r)||!Ge.isBr(n.getNode())&&function(e){return e.breakType===Iy.Br&&1===e.positions.length}(r)?!function(t,n,e){return e.breakAt.map(function(e){return t(n,e).breakAt.isSome()}).getOr(!1)}(e,t,r):r.breakAt.isNone()}function bb(e,t,n,r){var o=e.selection.getRng(),i=t?1:-1;if(hs()&&function(e,t,n){var r=Ds.fromRangeStart(t);return Pc.positionIn(!e,n).map(function(e){return e.isEqual(r)}).getOr(!1)}(t,o,n)){var a=Zh(i,e,n,!t,!0);return vb(e,a),!0}return!1}function Cb(e,t){var n=t.getNode(e);return Ge.isElement(n)&&"TABLE"===n.nodeName?k.some(n):k.none()}function wb(n,r,o){var e=Cb(!!r,o),i=!1===r;e.fold(function(){return vb(n,o.toRange())},function(t){return Pc.positionIn(i,n.getBody()).filter(function(e){return e.isEqual(o)}).fold(function(){return vb(n,o.toRange())},function(e){return function(n,r,o,e){var i=mf(r);i?r.undoManager.transact(function(){var e=yt.fromTag(i);me(e,gf(r)),Di(e,yt.fromTag("br")),n?wi(yt.fromDom(o),e):Ci(yt.fromDom(o),e);var t=r.dom.createRng();t.setStart(e.dom(),0),t.setEnd(e.dom(),0),vb(r,t)}):vb(r,e.toRange())}(r,n,t,o)})})}function xb(e,t,n,r){var o=e.selection.getRng(),i=Ds.fromRangeStart(o),a=e.getBody();if(!t&&xx(r,i)){var u=function(t,n,e){return gb(n,e).orThunk(function(){return E(e.getClientRects()).bind(function(e){return ab(px(t,Ds.before(n)),e.left)})}).getOr(Ds.before(n))}(a,n,i);return wb(e,t,u),!0}if(t&&zx(r,i)){u=function(t,n,e){return pb(n,e).orThunk(function(){return E(e.getClientRects()).bind(function(e){return ab(vx(t,Ds.after(n)),e.left)})}).getOr(Ds.after(n))}(a,n,i);return wb(e,t,u),!0}return!1}function zb(t,n){return function(){return k.from(t.dom.getParent(t.selection.getNode(),"td,th")).bind(function(e){return k.from(t.dom.getParent(e,"table")).map(function(e){return bb(t,n,e)})}).getOr(!1)}}function Eb(n,r){return function(){return k.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return k.from(n.dom.getParent(t,"table")).map(function(e){return xb(n,r,e,t)})}).getOr(!1)}}function Nb(e){return h(["figcaption"],ie(e))}function Sb(e){var t=j.document.createRange();return t.setStartBefore(e.dom()),t.setEndBefore(e.dom()),t}function kb(e,t,n){n?Di(e,t):xi(e,t)}function Tb(e,t,n,r){return""===t?function(e,t){var n=yt.fromTag("br");return kb(e,n,t),Sb(n)}(e,r):function(e,t,n,r){var o=yt.fromTag(n),i=yt.fromTag("br");return me(o,r),Di(o,i),kb(e,o,t),Sb(i)}(e,r,t,n)}function Ab(e,t,n){return t?function(e,t){return gx(e,t).breakAt.isNone()}(e.dom(),n):function(e,t){return mx(e,t).breakAt.isNone()}(e.dom(),n)}function Mb(t,n){var r=yt.fromDom(t.getBody()),o=Ds.fromRangeStart(t.selection.getRng()),i=mf(t),a=gf(t);return function(e,t){var n=d(ze,t);return ba(yt.fromDom(e.container()),Vn,n).filter(Nb)}(o,r).exists(function(){if(Ab(r,n,o)){var e=Tb(r,i,a,n);return t.selection.setRng(e),!0}return!1})}function Rb(e,t){return function(){return!!e.selection.isCollapsed()&&Mb(e,t)}}function Db(e,t){return v(function(e){return X(e,function(e){return bd({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:i},e)})}(e),function(e){return function(e,t){return t.keyCode===e.keyCode&&t.shiftKey===e.shiftKey&&t.altKey===e.altKey&&t.ctrlKey===e.ctrlKey&&t.metaKey===e.metaKey}(e,t)?[e]:[]})}function _b(e,t){return{from:$(e),to:$(t)}}function Bb(e,t){var n=yt.fromDom(e),r=yt.fromDom(t.container());return kx(n,r).map(function(e){return function(e,t){return{block:$(e),position:$(t)}}(e,t)})}function Ob(t,n,e){var r=Bb(t,Ds.fromRangeStart(e)),o=r.bind(function(e){return Pc.fromPosition(n,t,e.position()).bind(function(e){return Bb(t,e).map(function(e){return function(t,n,r){return Ge.isBr(r.position().getNode())&&!1===kg(r.block())?Pc.positionIn(!1,r.block().dom()).bind(function(e){return e.isEqual(r.position())?Pc.fromPosition(n,t,e).bind(function(e){return Bb(t,e)}):k.some(r)}).getOr(r):r}(t,n,e)})})});return Ya(r,o,_b).filter(function(e){return function(e){return!1===ze(e.from().block(),e.to().block())}(e)&&function(e){return Se(e.from().block()).bind(function(t){return Se(e.to().block()).filter(function(e){return ze(t,e)})}).isSome()}(e)&&function(e){return!1===Ge.isContentEditableFalse(e.from().block().dom())&&!1===Ge.isContentEditableFalse(e.to().block().dom())}(e)})}function Hb(e){var t=function(e){var t=Re(e);return p(t,Vn).fold(function(){return t},function(e){return t.slice(0,e)})}(e);return z(t,_i),t}function Pb(e,t){var n=fh(t,e);return g(n.reverse(),kg).each(_i)}function Lb(e,t,n,r){if(kg(n))return bg(n),Pc.firstPositionIn(n.dom());(function(e){return 0===y(Ae(e),function(e){return!kg(e)}).length})(r)&&kg(t)&&Ci(r,yt.fromTag("br"));var o=Pc.prevPosition(n.dom(),Ds.before(r.dom()));return z(Hb(t),function(e){Ci(r,e)}),Pb(e,t),o}function Vb(e,t,n){if(kg(n))return _i(n),kg(t)&&bg(t),Pc.firstPositionIn(t.dom());var r=Pc.lastPositionIn(n.dom());return z(Hb(t),function(e){Di(n,e)}),Pb(e,t),r}function Ib(e,t){return Bt(t,e)?function(e,t){var n=fh(t,e);return k.from(n[n.length-1])}(t,e):k.none()}function Fb(e,t){Pc.positionIn(e,t.dom()).map(function(e){return e.getNode()}).map(yt.fromDom).filter(_n).each(_i)}function Ub(e,t,n){return Fb(!0,t),Fb(!1,n),Ib(t,n).fold(d(Vb,e,t,n),d(Lb,e,t,n))}function jb(e,t){var n=yt.fromDom(t),r=d(ze,e);return ya(n,$n,r).isSome()}function qb(e,t){var n=Pc.prevPosition(e.dom(),Ds.fromRangeStart(t)).isNone(),r=Pc.nextPosition(e.dom(),Ds.fromRangeEnd(t)).isNone();return!function(e,t){return jb(e,t.startContainer)||jb(e,t.endContainer)}(e,t)&&n&&r}function $b(e){var t=yt.fromDom(e.getBody()),n=e.selection.getRng();return qb(t,n)?function(e){return e.setContent(""),e.selection.setCursorLocation(),!0}(e):function(n,r){var o=r.getRng();return Ya(kx(n,yt.fromDom(o.startContainer)),kx(n,yt.fromDom(o.endContainer)),function(e,t){return!1===ze(e,t)&&(o.deleteContents(),Rx(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1)}(t,e.selection)}function Wb(e){return ks(e).exists(_n)}function Kb(e,t,n){var r=y(fh(yt.fromDom(n.container()),t),Vn),o=E(r).getOr(t);return Pc.fromPosition(e,o.dom(),n).filter(Wb)}function Xb(e,t){return ks(t).exists(_n)||Kb(!0,e,t).isSome()}function Yb(e,t){return function(e){return k.from(e.getNode(!0)).map(yt.fromDom)}(t).exists(_n)||Kb(!1,e,t).isSome()}function Gb(e,t,n,r){var o=r.getNode(!1===t);return kx(yt.fromDom(e),yt.fromDom(n.getNode())).map(function(e){return kg(e)?Hx.remove(e.dom()):Hx.moveToElement(o)}).orThunk(function(){return k.some(Hx.moveToElement(o))})}function Jb(t,n,r){return Pc.fromPosition(n,t,r).bind(function(e){return function(e){return $n(yt.fromDom(e))||Un(yt.fromDom(e))}(e.getNode())?k.none():function(t,e,n,r){function o(e){return Dn(yt.fromDom(e))&&!Cs(n,r,t)}return Ns(!e,n).fold(function(){return Ns(e,r).fold($(!1),o)},o)}(t,n,r,e)?k.none():n&&Ge.isContentEditableFalse(e.getNode())?Gb(t,n,r,e):!1===n&&Ge.isContentEditableFalse(e.getNode(!0))?Gb(t,n,r,e):n&&Lh(r)?k.some(Hx.moveToPosition(e)):!1===n&&Ph(r)?k.some(Hx.moveToPosition(e)):k.none()})}function Qb(t,e,n){return function(e,t){var n=t.getNode(!1===e),r=e?"after":"before";return Ge.isElement(n)&&n.getAttribute("data-mce-caret")===r}(e,n)?function(e,t){return e&&Ge.isContentEditableFalse(t.nextSibling)?k.some(Hx.moveToElement(t.nextSibling)):!1===e&&Ge.isContentEditableFalse(t.previousSibling)?k.some(Hx.moveToElement(t.previousSibling)):k.none()}(e,n.getNode(!1===e)).fold(function(){return Jb(t,e,n)},k.some):Jb(t,e,n).bind(function(e){return function(t,n,e){return e.fold(function(e){return k.some(Hx.remove(e))},function(e){return k.some(Hx.moveToElement(e))},function(e){return Cs(n,e,t)?k.none():k.some(Hx.moveToPosition(e))})}(t,n,e)})}function Zb(e,t){return k.from(Px(e.getBody(),t))}function eC(t,n){var e=t.selection.getNode();return Zb(t,e).filter(Ge.isContentEditableFalse).fold(function(){return function(e,t,n){var r=Es(t?1:-1,e,n),o=Ds.fromRangeStart(r),i=yt.fromDom(e);return!1===t&&Lh(o)?k.some(Hx.remove(o.getNode(!0))):t&&Ph(o)?k.some(Hx.remove(o.getNode())):!1===t&&Ph(o)&&Yb(i,o)?Bx(i,o).map(function(e){return Hx.remove(e.getNode())}):t&&Lh(o)&&Xb(i,o)?Ox(i,o).map(function(e){return Hx.remove(e.getNode())}):Qb(e,t,o)}(t.getBody(),n,t.selection.getRng()).map(function(e){return e.fold(function(t,n){return function(e){return t._selectionOverrides.hideFakeCaret(),Tg(t,n,yt.fromDom(e)),!0}}(t,n),function(n,r){return function(e){var t=r?Ds.before(e):Ds.after(e);return n.selection.setRng(t.toRange()),!0}}(t,n),function(t){return function(e){return t.selection.setRng(e.toRange()),!0}}(t))}).getOr(!1)},function(){return!0})}function tC(e,t){var n=e.selection.getNode();return!!Ge.isContentEditableFalse(n)&&Zb(e,n.parentNode).filter(Ge.isContentEditableFalse).fold(function(){return function(e){z(ma(e,".mce-offscreen-selection"),_i)}(yt.fromDom(e.getBody())),Tg(e,t,yt.fromDom(e.selection.getNode())),Tx(e),!0},function(){return!0})}function nC(e,t,n,r,o,i){var a=Zh(r,e,i.getNode(!o),o,!0);if(t.collapsed){var u=t.cloneRange();o?u.setEnd(a.startContainer,a.startOffset):u.setStart(a.endContainer,a.endOffset),u.deleteContents()}else t.deleteContents();return e.selection.setRng(a),function(e,t){Ge.isText(t)&&0===t.data.length&&e.remove(t)}(e.dom,n),!0}function rC(t,n){return function(e){return $y(n,e).map(function(e){return nb.setCaretPosition(t,e),!0}).getOr(!1)}}function oC(e,t,n,r){var o=e.getBody(),i=d(Ky.isInlineTarget,e);e.undoManager.ignore(function(){e.selection.setRng(function(e,t){var n=j.document.createRange();return n.setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n}(n,r)),e.execCommand("Delete"),Jy(i,o,Ds.fromRangeStart(e.selection.getRng())).map(eb).map(rC(e,t))}),e.nodeChanged()}function iC(n,r,o,i){var a=function(e,t){var n=bs(t,e);return n||e}(n.getBody(),i.container()),u=d(Ky.isInlineTarget,n),s=Jy(u,a,i);return s.bind(function(e){return o?e.fold($(k.some(eb(e))),k.none,$(k.some(Zy(e))),k.none):e.fold(k.none,$(k.some(Zy(e))),k.none,$(k.some(eb(e))))}).map(rC(n,r)).getOrThunk(function(){var t=Pc.navigate(o,a,i),e=t.bind(function(e){return Jy(u,a,e)});return s.isSome()&&e.isSome()?Ky.findRootInline(u,a,i).map(function(e){return!!function(o){return Ya(Pc.firstPositionIn(o),Pc.lastPositionIn(o),function(e,t){var n=Ky.normalizePosition(!0,e),r=Ky.normalizePosition(!1,t);return Pc.nextPosition(o,n).map(function(e){return e.isEqual(r)}).getOr(!0)}).getOr(!0)}(e)&&(Tg(n,o,yt.fromDom(e)),!0)}).getOr(!1):e.bind(function(e){return t.map(function(e){return o?oC(n,r,i,e):oC(n,r,e,i),!0})}).getOr(!1)})}function aC(e){return 1===Re(e).length}function uC(e,t,n,r){var o=d(qm,t),i=X(y(r,o),function(e){return e.dom()});if(0===i.length)Tg(t,e,n);else{var a=function(e,t){var n=Pm(!1),r=Um(t,n.dom());return Ci(yt.fromDom(e),n),_i(yt.fromDom(e)),Ds(r,0)}(n.dom(),i);t.selection.setRng(a.toRange())}}function sC(n,r){var e=yt.fromDom(n.getBody()),t=yt.fromDom(n.selection.getStart()),o=y(function(e,t){var n=fh(t,e);return p(n,Vn).fold($(n),function(e){return n.slice(0,e)})}(e,t),aC);return N(o).map(function(e){var t=Ds.fromRangeStart(n.selection.getRng());return!(!Ax(r,t,e.dom())||function(e){return rs(e.dom())&&Om(e.dom())}(e))&&(uC(r,n,e,o),!0)}).getOr(!1)}function cC(e,t){return{start:$(e),end:$(t)}}function lC(e,t){return xa(yt.fromDom(e),"td,th",t)}function fC(e,t){return Ca(e,"table",t)}function dC(e){return!1===ze(e.start(),e.end())}function hC(e,n){return fC(e.start(),n).bind(function(t){return fC(e.end(),n).bind(function(e){return function(e,t){return e?k.some(t):k.none()}(ze(t,e),t)})})}function mC(e){return ma(e,"td,th")}function gC(n,e){var t=lC(e.startContainer,n),r=lC(e.endContainer,n);return e.collapsed?k.none():Ya(t,r,cC).fold(function(){return t.fold(function(){return r.bind(function(t){return fC(t,n).bind(function(e){return E(mC(e)).map(function(e){return cC(e,t)})})})},function(t){return fC(t,n).bind(function(e){return N(mC(e)).map(function(e){return cC(t,e)})})})},function(e){return qx(n,e)?k.none():function(t,e){return fC(t.start(),e).bind(function(e){return N(mC(e)).map(function(e){return cC(t.start(),e)})})}(e,n)})}function pC(t,e){return hC(t,e).map(function(e){return function(e,t,n){return{rng:$(e),table:$(t),cells:$(n)}}(t,e,mC(e))})}function vC(e,t){var n=function(t){return function(e){return ze(t,e)}}(e);return function(e,t){var n=lC(e.startContainer,t),r=lC(e.endContainer,t);return Ya(n,r,cC).filter(dC).filter(function(e){return qx(t,e)}).orThunk(function(){return gC(t,e)})}(t,n).bind(function(e){return pC(e,n)})}function yC(e,t){return p(e,function(e){return ze(e,t)})}function bC(n){return function(n){return Ya(yC(n.cells(),n.rng().start()),yC(n.cells(),n.rng().end()),function(e,t){return n.cells().slice(e,t+1)})}(n).map(function(e){var t=n.cells();return e.length===t.length?jx.removeTable(n.table()):jx.emptyCells(e)})}function CC(e,t){return z(t,bg),e.selection.setCursorLocation(t[0].dom(),0),!0}function wC(e,t){return Tg(e,!1,t),!0}function xC(t,e,n){return function(e,t){return vC(e,t).bind(bC)}(e,n).map(function(e){return e.fold(d(wC,t),d(CC,t))})}function zC(t,e,n,r){return $x(e,r).fold(function(){return xC(t,e,n)},function(e){return function(e,t){return Wx(e,t)}(t,e)}).getOr(!1)}function EC(e,t){return g(fh(t,e),$n)}function NC(t,n,r,o,i){return Pc.navigate(r,t.getBody(),i).bind(function(e){return function(e,n,r,o){return Pc.firstPositionIn(e.dom()).bind(function(t){return Pc.lastPositionIn(e.dom()).map(function(e){return n?r.isEqual(t)&&o.isEqual(e):r.isEqual(e)&&o.isEqual(t)})}).getOr(!0)}(o,r,i,e)?function(e,t){return Wx(e,t)}(t,o):function(e,t,n){return $x(e,yt.fromDom(n.getNode())).map(function(e){return!1===ze(e,t)})}(n,o,e)}).or(k.some(!0))}function SC(t,n,r,e){var o=Ds.fromRangeStart(t.selection.getRng());return EC(r,e).bind(function(e){return kg(e)?Wx(t,e):function(e,t,n,r,o){return Pc.navigate(n,e.getBody(),o).bind(function(e){return EC(t,yt.fromDom(e.getNode())).map(function(e){return!1===ze(e,r)})})}(t,r,n,e,o)}).getOr(!1)}function kC(e,t){return e?Oh(t):Hh(t)}function TC(t,n,e){var r=yt.fromDom(t.getBody());return $x(r,e).fold(function(){return SC(t,n,r,e)||function(e,t){var n=Ds.fromRangeStart(e.selection.getRng());return kC(t,n)||Pc.fromPosition(t,e.getBody(),n).map(function(e){return kC(t,e)}).getOr(!1)}(t,n)},function(e){return function(e,t,n,r){var o=Ds.fromRangeStart(e.selection.getRng());return kg(r)?Wx(e,r):NC(e,n,t,r,o)}(t,n,r,e).getOr(!1)})}function AC(e){var t=parseInt(e,10);return isNaN(t)?0:t}function MC(e,t){return(e||function(e){return"table"===ie(e)}(t)?"margin":"padding")+("rtl"===ve(t,"direction")?"-right":"-left")}function RC(e){var t=Yx(e);return!0!==e.readonly&&(1<t.length||function(r,e){return w(e,function(e){var t=MC(Hf(r),e),n=ye(e,t).map(AC).getOr(0);return"false"!==r.dom.getContentEditable(e.dom())&&0<n})}(e,t))}function DC(e){return Fn(e)||Un(e)}function _C(e,t){var n=e.dom,r=e.selection,o=e.formatter,i=Pf(e),a=/[a-z%]+$/i.exec(i)[0],u=parseInt(i,10),s=Hf(e),c=mf(e);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||""!==c||n.getParent(r.getNode(),n.isBlock)||o.apply("div"),z(Yx(e),function(e){!function(e,t,n,r,o,i){var a=MC(n,yt.fromDom(i));if("outdent"===t){var u=Math.max(0,AC(i.style[a])-r);e.setStyle(i,a,u?u+o:"")}else{u=AC(i.style[a])+r+o;e.setStyle(i,a,u)}}(n,t,s,u,a,e.dom())})}function BC(e,t,n){return Pc.navigateIgnore(e,t,n,wh)}function OC(e,t){return g(fh(yt.fromDom(t.container()),e),Vn)}function HC(e,n,r){return BC(e,n.dom(),r).forall(function(t){return OC(n,r).fold(function(){return!1===Cs(t,r,n.dom())},function(e){return!1===Cs(t,r,n.dom())&&Bt(e,yt.fromDom(t.container()))})})}function PC(t,n,r){return OC(n,r).fold(function(){return BC(t,n.dom(),r).forall(function(e){return!1===Cs(e,r,n.dom())})},function(e){return BC(t,e.dom(),r).isNone()})}function LC(e){return k.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))}function VC(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t}function IC(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)}function FC(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e}function UC(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!Ge.isElement(r);)r=r[n?"nextSibling":"previousSibling"];return r===t}function jC(e){e.innerHTML='<br data-mce-bogus="1">'}function qC(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t}function $C(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)}function WC(e,t,n){return!1===Ge.isText(t)?n:e?1===n&&t.data.charAt(n-1)===cu?0:n:n===t.data.length-1&&t.data.charAt(n)===cu?t.data.length:n}function KC(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o}function XC(e,t){var n=mf(e);n&&n.toLowerCase()===t.tagName.toLowerCase()&&e.dom.setAttribs(t,gf(e))}function YC(e,t,n){var r=e.create("span",{},"&nbsp;");n.parentNode.insertBefore(r,n),t.scrollIntoView(r),e.remove(r)}function GC(e,t,n,r){var o=e.createRng();r?(o.setStartBefore(n),o.setEndBefore(n)):(o.setStartAfter(n),o.setEndAfter(n)),t.setRng(o)}function JC(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();ay(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u=a.startOffset,s=a.startContainer;if(1===s.nodeType&&s.hasChildNodes()){var c=u>s.childNodes.length-1;s=s.childNodes[Math.min(u,s.childNodes.length-1)]||s,u=c&&3===s.nodeType?s.nodeValue.length:0}var l=i.getParent(s,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",h=!(!t||!t.ctrlKey);"LI"!==d||h||(l=f),s&&3===s.nodeType&&u>=s.nodeValue.length&&!function(e,t,n){for(var r,o=new yi(t,n),i=e.getNonEmptyElements();r=o.next();)if(i[r.nodeName.toLowerCase()]||0<r.length)return!0}(e.schema,s,l)&&(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0),n=i.create("br"),Xu(i,a,n),YC(i,o,n),GC(i,o,n,r),e.undoManager.add()}function QC(e,t){var n=yt.fromTag("br");Ci(yt.fromDom(t),n),e.undoManager.add()}function ZC(e,t){cz(e.getBody(),t)||wi(yt.fromDom(t),yt.fromTag("br"));var n=yt.fromTag("br");wi(yt.fromDom(t),n),YC(e.dom,e.selection,n.dom()),GC(e.dom,e.selection,n.dom(),!1),e.undoManager.add()}function ew(e){return e&&"A"===e.nodeName&&"href"in e}function tw(e){return e.fold($(!1),ew,ew,$(!1))}function nw(e,t){t.fold(i,d(QC,e),d(ZC,e),i)}function rw(e,t){return oz(e).filter(function(e){return 0<t.length&&we(yt.fromDom(e),t)}).isSome()}function ow(e,t){return dz(e)}function iw(n){return function(e,t){return""===mf(e)===n}}function aw(n){return function(e,t){return az(e)===n}}function uw(n,r){return function(e,t){return iz(e)===n.toUpperCase()===r}}function sw(e){return uw("pre",e)}function cw(n){return function(e,t){return hf(e)===n}}function lw(e,t){return fz(e)}function fw(e,t){return t}function dw(e){var t=mf(e),n=rz(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")}function hw(e,t){return function(n,r){return b(e,function(e,t){return e&&t(n,r)},!0)?k.some(t):k.none()}}function mw(n,r){var e=r.container(),t=r.offset();return Ge.isText(e)?(e.insertData(t,n),k.some(Uu(e,t+n.length))):ks(r).map(function(e){var t=yt.fromText(n);return r.isAtEnd()?wi(e,t):Ci(e,t),Uu(t.dom(),n.length)})}function gw(e){return Uu.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()}function pw(e,t){var n=y(fh(yt.fromDom(t.container()),e),Vn);return E(n).getOr(e)}function vw(e,t){return gw(t)?Dh(t):Dh(t)||Pc.prevPosition(pw(e,t).dom(),t).exists(Dh)}function yw(e,t){return gw(t)?Rh(t):Rh(t)||Pc.nextPosition(pw(e,t).dom(),t).exists(Rh)}function bw(e){return ks(e).bind(function(e){return ba(e,xt)}).exists(function(e){return function(e){return h(["pre","pre-wrap"],e)}(ve(e,"white-space"))})}function Cw(e,t){return function(e,t){return Pc.prevPosition(e.dom(),t).isNone()}(e,t)||function(e,t){return Pc.nextPosition(e.dom(),t).isNone()}(e,t)||Gx(e,t)||Jx(e,t)||Yb(e,t)||Xb(e,t)}function ww(e,t){var n=function(e){var t=e.container(),n=e.offset();return Ge.isText(t)&&n<t.data.length?Uu(t,n+1):e}(t);return!bw(n)&&(Jx(e,n)||Zx(e,n)||Xb(e,n)||yw(e,n))}function xw(e,t){return function(e,t){return!bw(t)&&(Gx(e,t)||Qx(e,t)||Yb(e,t)||vw(e,t))}(e,t)||ww(e,t)}function zw(e,t){return Mh(e.charAt(t))}function Ew(e){var t=e.container();return Ge.isText(t)&&Z(t.data,"\xa0")}function Nw(e){var t=e.data,n=function(e){var n=e.split("");return X(n,function(e,t){return Mh(e)&&0<t&&t<n.length-1&&bh(n[t-1])&&bh(n[t+1])?" ":e}).join("")}(t);return n!==t&&(e.data=n,!0)}function Sw(n,e){return k.some(e).filter(Ew).bind(function(e){var t=e.container();return function(e,t){var n=t.data,r=Uu(t,0);return!(!zw(n,0)||xw(e,r))&&(t.data=" "+n.slice(1),!0)}(n,t)||Nw(t)||function(e,t){var n=t.data,r=Uu(t,n.length-1);return!(!zw(n,n.length-1)||xw(e,r))&&(t.data=n.slice(0,-1)+" ",!0)}(n,t)?k.some(e):k.none()})}function kw(t){var e=yt.fromDom(t.getBody());t.selection.isCollapsed()&&Sw(e,Uu.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})}function Tw(t,n){return function(e){return function(e,t){return!bw(t)&&(Cw(e,t)||vw(e,t)||yw(e,t))}(t,e)?vz(n):yz(n)}}function Aw(e){var t=Ds.fromRangeStart(e.selection.getRng()),n=yt.fromDom(e.getBody());if(e.selection.isCollapsed()){var r=d(Ky.isInlineTarget,e),o=Ds.fromRangeStart(e.selection.getRng());return Jy(r,e.getBody(),o).bind(function(t){return function(e){return e.fold(function(e){return Pc.prevPosition(t.dom(),Ds.before(e))},function(e){return Pc.firstPositionIn(e)},function(e){return Pc.lastPositionIn(e)},function(e){return Pc.nextPosition(t.dom(),Ds.after(e))})}}(n)).bind(Tw(n,t)).exists(function(t){return function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}}(e))}return!1}function Mw(e,t){t.hasAttribute("data-mce-caret")&&(Pa(t),function(e){e.selection.setRng(e.selection.getRng())}(e),e.selection.scrollIntoView(t))}function Rw(e,t){var n=function(e){return wa(yt.fromDom(e.getBody()),"*[data-mce-caret]").fold($(null),function(e){return e.dom()})}(e);if(n)return"compositionstart"===t.type?(t.preventDefault(),t.stopPropagation(),void Mw(e,n)):void(_a(n)&&(Mw(e,n),e.undoManager.add()))}function Dw(t){!function(e){var t=aa(function(){e.composing||kw(e)},0);wz.isIE()&&(e.on("keypress",function(e){t.throttle()}),e.on("remove",function(e){t.cancel()}))}(t),t.on("input",function(e){!1===e.isComposing&&kw(t)})}function _w(a){function e(e,t){try{a.getDoc().execCommand(e,!1,t)}catch(n){}}function u(e){return e.isDefaultPrevented()}function t(){a.shortcuts.add("meta+a",null,"SelectAll")}function n(){a.on("keydown",function(e){if(!u(e)&&e.keyCode===i&&l.isCollapsed()&&0===l.getRng().startOffset){var t=l.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function r(){a.inline||(a.contentStyles.push("body {min-height: 150px}"),a.on("click",function(e){var t;if("HTML"===e.target.nodeName){if(11<Nn.ie)return void a.getBody().focus();t=a.selection.getRng(),a.getBody().focus(),a.selection.setRng(t),a.selection.normalize(),a.nodeChanged()}}))}var o=Mn.each,i=Ah.BACKSPACE,s=Ah.DELETE,c=a.dom,l=a.selection,f=a.settings,d=a.parser,h=Nn.gecko,m=Nn.ie,g=Nn.webkit,p="data:text/mce-internal,",v=m?"Text":"URL";function y(e){var t=c.create("body"),n=e.cloneContents();return t.appendChild(n),l.serializer.serialize(t,{format:"html"})}function b(){var e=c.getAttribs(l.getStart().cloneNode(!1));return function(){var t=l.getStart();t!==a.getBody()&&(c.setAttrib(t,"style",null),o(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function C(){return!l.isCollapsed()&&c.getParent(l.getStart(),c.isBlock)!==c.getParent(l.getEnd(),c.isBlock)}return a.on("keydown",function(e){var t,n,r,o,i;if(!u(e)&&e.keyCode===Ah.BACKSPACE&&(n=(t=l.getRng()).startContainer,r=t.startOffset,o=c.getRoot(),i=n,t.collapsed&&0===r)){for(;i&&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(a.formatter.toggle("blockquote",null,i),(t=c.createRng()).setStart(n,0),t.setEnd(n,0),l.setRng(t))}}),a.on("keydown",function(e){var t,n,r=e.keyCode;if(!u(e)&&(r===s||r===i)){if(t=a.selection.isCollapsed(),n=a.getBody(),t&&!c.isEmpty(n))return;if(!t&&!function(e){var t=y(e),n=c.createRng();return n.selectNode(a.getBody()),t===y(n)}(a.selection.getRng()))return;e.preventDefault(),a.setContent(""),n.firstChild&&c.isBlock(n.firstChild)?a.selection.setCursorLocation(n.firstChild,0):a.selection.setCursorLocation(n,0),a.nodeChanged()}}),Nn.windowsPhone||a.on("keyup focusin mouseup",function(e){Ah.modifierPressed(e)||l.normalize()},!0),g&&(a.inline||c.bind(a.getDoc(),"mousedown mouseup",function(e){var t;if(e.target===a.getDoc().documentElement)if(t=l.getRng(),a.getBody().focus(),"mousedown"===e.type){if(Da(t.startContainer))return;l.placeCaretAt(e.clientX,e.clientY)}else l.setRng(t)}),a.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==c.getContentEditableParent(t)&&(e.preventDefault(),a.selection.select(t),a.nodeChanged()),"A"===t.nodeName&&c.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),l.select(t))}),f.forced_root_block&&a.on("init",function(){e("DefaultParagraphSeparator",mf(a))}),a.on("init",function(){a.dom.bind(a.getBody(),"submit",function(e){e.preventDefault()})}),n(),d.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&e[t].remove()}),Nn.iOS?(a.inline||a.on("keydown",function(){j.document.activeElement===j.document.body&&a.getWin().focus()}),r(),a.on("click",function(e){var t=e.target;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),a.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")):t()),11<=Nn.ie&&(r(),n()),Nn.ie&&(t(),e("AutoUrlDetect",!1),a.on("dragstart",function(e){!function(e){var t,n;e.dataTransfer&&(a.selection.isCollapsed()&&"IMG"===e.target.tagName&&l.select(e.target),0<(t=a.selection.getContent()).length&&(n=p+escape(a.id)+","+escape(t),e.dataTransfer.setData(v,n)))}(e)}),a.on("drop",function(e){if(!u(e)){var t=function(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(v))&&0<=t.indexOf(p)?(t=t.substr(p.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}(e);if(t&&t.id!==a.id){e.preventDefault();var n=$v(e.x,e.y,a.getDoc());l.setRng(n),function(e,t){a.queryCommandSupported("mceInsertClipboardContent")?a.execCommand("mceInsertClipboardContent",!1,{content:e,internal:t}):a.execCommand("mceInsertContent",!1,e)}(t.html,!0)}}})),h&&(a.on("keydown",function(e){if(!u(e)&&e.keyCode===i){if(!a.getBody().getElementsByTagName("hr").length)return;if(l.isCollapsed()&&0===l.getRng().startOffset){var t=l.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return c.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(c.remove(n),e.preventDefault())}}}),j.Range.prototype.getClientRects||a.on("mousedown",function(e){if(!u(e)&&"HTML"===e.target.nodeName){var t=a.getBody();t.blur(),pn.setEditorTimeout(a,function(){t.focus()})}}),a.on("keypress",function(e){var t;if(!u(e)&&(8===e.keyCode||46===e.keyCode)&&C())return t=b(),a.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),c.bind(a.getDoc(),"cut",function(e){var t;!u(e)&&C()&&(t=b(),pn.setEditorTimeout(a,function(){t()}))}),f.readonly||a.on("BeforeExecCommand mousedown",function(){e("StyleWithCSS",!1),e("enableInlineTableEditing",!1),f.object_resizing||e("enableObjectResizing",!1)}),a.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||o(c.select("a"),function(e){var t=e.parentNode,n=c.getRoot();if(t.lastChild===e){for(;t&&!c.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}c.add(t,"br",{"data-mce-bogus":1})}})}),a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"),Nn.mac&&a.on("keydown",function(e){!Ah.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),a.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))}),n()),{refreshContentEditable:function(){},isHidden:function(){var e;return!(!h||a.removed)&&(!(e=a.selection.getSel())||!e.rangeCount||0===e.rangeCount)}}}function Bw(e){return Ge.isElement(e)&&In(yt.fromDom(e))}function Ow(t){t.on("click",function(e){3<=e.detail&&function(e){var t=e.selection.getRng(),n=Uu.fromRangeStart(t),r=Uu.fromRangeEnd(t);if(Uu.isElementPosition(n)){var o=n.container();Bw(o)&&Pc.firstPositionIn(o).each(function(e){return t.setStart(e.container(),e.offset())})}if(Uu.isElementPosition(r)){o=n.container();Bw(o)&&Pc.lastPositionIn(o).each(function(e){return t.setEnd(e.container(),e.offset())})}e.selection.setRng(fp(t))}(t)})}function Hw(e){!function(t){t.on("click",function(e){t.dom.getParent(e.target,"details")&&e.preventDefault()})}(e),function(e){e.parser.addNodeFilter("details",function(e){z(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),e.serializer.addNodeFilter("details",function(e){z(e,function(e){var t=e.attr("data-mce-open");e.attr("open",K(t)?t:null),e.attr("data-mce-open",null)})})}(e)}function Pw(e){e.bindPendingEventDelegates(),e.initialized=!0,e.fire("init"),e.focus(!0),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),function(t){t.settings.auto_focus&&pn.setEditorTimeout(t,function(){var e;(e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus)).destroyed||e.focus()},100)}(e)}function Lw(e,t){var n=e.editorManager.translate("Rich Text Area. Press ALT-0 for help."),r=function(e,t,n,r){var o=yt.fromTag("iframe");return me(o,r),me(o,{id:e+"_ifr",frameBorder:"0",allowTransparency:"true",title:t}),fa(o,"tox-edit-area__iframe"),o}(e.id,n,t.height,uf(e)).dom();r.onload=function(){r.onload=null,e.fire("load")};var o=function(e,t){if(j.document.domain!==j.window.location.hostname&&Nn.browser.isIE()){var n=eh("mce");e[n]=function(){Nz(e)};var r='javascript:(function(){document.open();document.domain="'+j.document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(true);})()";return Sz.setAttrib(t,"src",r),!0}return!1}(e,r);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=r,e.iframeHTML=function(e){var t,n,r;return r=sf(e)+"<html><head>",cf(e)!==e.documentBaseUrl&&(r+='<base href="'+e.documentBaseURI.getURI()+'" />'),r+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',t=lf(e),n=ff(e),df(e)&&(r+='<meta http-equiv="Content-Security-Policy" content="'+df(e)+'" />'),r+='</head><body id="'+t+'" class="mce-content-body '+n+'" data-id="'+e.id+'"><br></body></html>'}(e),Sz.add(t.iframeContainer,r),o}function Vw(e){e.contentCSS=e.contentCSS.concat(function(t){var e=Lf(t),n=t.editorManager.baseURL+"/skins/content",r="content"+t.editorManager.suffix+".css",o=!0===t.inline;return X(e,function(e){return function(e){return/^[a-z0-9\-]+$/i.test(e)}(e)&&!o?n+"/"+e+"/"+r:t.documentBaseURI.toAbsolute(e)})}(e))}function Iw(e){return e.replace(/^\-/,"")}function Fw(e){return{editorContainer:e,iframeContainer:e}}function Uw(e){var t=e.getElement();return e.inline?Fw(null):function(e){var t=Tz.create("div");return Tz.insertAfter(t,e),Fw(t)}(t)}function jw(e){return"-"===e.charAt(0)}function qw(t,e){(function(e){return k.from(zf(e)).filter(function(e){return 0<e.length}).map(function(e){return{url:e,name:k.none()}})})(e).orThunk(function(){return function(t){return k.from(xf(t)).filter(function(e){return 0<e.length&&!Ud.has(e)}).map(function(e){return{url:t.editorManager.baseURL+"/icons/"+e+"/icons.js",name:k.some(e)}})}(e)}).each(function(e){t.add(e.url,i,undefined,function(){Fd.iconsLoadError(e.url,e.name.getOrUndefined())})})}function $w(e,t){var n=Qi.ScriptLoader;!function(e,t,n,r){var o=t.settings,i=o.theme;if(K(i)){if(!jw(i)&&!qd.urls.hasOwnProperty(i)){var a=o.theme_url;a?qd.load(i,t.documentBaseURI.toAbsolute(a)):qd.load(i,"themes/"+i+"/theme"+n+".js")}e.loadQueue(function(){qd.waitFor(i,r)})}else r()}(n,e,t,function(){!function(e,t){var n=Bf(t),r=Of(t);if(!1===ra.hasCode(n)&&"en"!==n){var o=""!==r?r:t.editorManager.baseURL+"/langs/"+n+".js";e.add(o,i,undefined,function(){Fd.languageLoadError(o,n)})}}(n,e),qw(n,e),function(n,r){A(n.plugins)&&(n.plugins=n.plugins.join(" ")),Mn.each(n.external_plugins,function(e,t){jd.load(t,e,i,undefined,function(){Fd.pluginLoadError(t,e)}),n.plugins+=" "+t}),Mn.each(n.plugins.split(/[ ,]/),function(e){if((e=Mn.trim(e))&&!jd.urls[e])if(jw(e)){e=e.substr(1,e.length);var t=jd.dependencies(e);Mn.each(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+r+".js"};e=jd.createUrl(t,e),jd.load(e.resource,e,i,undefined,function(){Fd.pluginLoadError(e.prefix+e.resource+e.suffix,e.resource)})})}else{var n={prefix:"plugins/",resource:e,suffix:"/plugin"+r+".js"};jd.load(e,n,i,undefined,function(){Fd.pluginLoadError(n.prefix+n.resource+n.suffix,e)})}})}(e.settings,t),n.loadQueue(function(){e.removed||Mz(e)},e,function(){e.removed||Mz(e)})})}function Ww(e,t,n){ha(e,t)&&!1===n?function(e,t){sa(e)?e.dom().classList.remove(t):la(e,t);da(e)}(e,t):n&&fa(e,t)}function Kw(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function Xw(e,t){e.dom().contentEditable=t?"true":"false"}function Yw(e,t){var n=yt.fromDom(e.getBody());Ww(n,"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e._selectionOverrides.hideFakeCaret(),function(e){k.from(e.selection.getNode()).each(function(e){e.removeAttribute("data-mce-selected")})}(e),e.readonly=!0,Xw(n,!1),function(e){z(ma(e,'*[contenteditable="true"]'),function(e){Tt(e,_z,"true"),Xw(e,!1)})}(n)):(e.readonly=!1,Xw(n,!0),function(e){z(ma(e,"*["+_z+'="true"]'),function(e){pe(e,_z),Xw(e,!0)})}(n),Kw(e,"StyleWithCSS",!1),Kw(e,"enableInlineTableEditing",!1),Kw(e,"enableObjectResizing",!1),sd(e)&&e.focus(),function(e){e.selection.setRng(e.selection.getRng())}(e),e.nodeChanged())}function Gw(e){return!0===e.readonly}function Jw(t){t.parser.addAttributeFilter("contenteditable",function(e){Gw(t)&&z(e,function(e){e.attr(_z,e.attr("contenteditable")),e.attr("contenteditable","false")})}),t.serializer.addAttributeFilter(_z,function(e){Gw(t)&&z(e,function(e){e.attr("contenteditable",e.attr(_z))})}),t.serializer.addTempAttr(_z)}function Qw(e,t,n,r){var o=n[t.get()],i=n[r];try{i.activate()}catch(yN){return void j.console.error("problem while activating editor mode "+r+":",yN)}o.deactivate(),o.editorReadOnly!==i.editorReadOnly&&Yw(e,i.editorReadOnly),t.set(r),hd(e,r)}function Zw(t){var n=Je("design"),r=Je({design:{activate:i,deactivate:i,editorReadOnly:!1},readonly:{activate:i,deactivate:i,editorReadOnly:!0}});return function(e){e.serializer?Jw(e):e.on("PreInit",function(){Jw(e)})}(t),function(t){t.on("ShowCaret",function(e){Gw(t)&&e.preventDefault()}),t.on("ObjectSelected",function(e){Gw(t)&&e.preventDefault()})}(t),{isReadOnly:function(){return Gw(t)},set:function(e){return function(e,t,n,r){if(r!==n.get()){if(!kt(t,r))throw new Error("Editor mode '"+r+"' is invalid");e.initialized?Qw(e,n,t,r):e.on("init",function(){return Qw(e,n,t,r)})}}(t,r.get(),n,e)},get:function(){return n.get()},register:function(e,t){r.set(function(e,t,n){var r;if(h(Bz,t))throw new Error("Cannot override default mode "+t);return G(G({},e),((r={})[t]=G(G({},n),{deactivate:function(){try{n.deactivate()}catch(yN){j.console.error("problem while deactivating editor mode "+t+":",yN)}}}),r))}(r.get(),e,t))}}}function ex(e){return Mn.grep(e.childNodes,function(e){return"LI"===e.nodeName})}function tx(e){return e&&e.firstChild&&e.firstChild===e.lastChild&&function(e){return"\xa0"===e.data||Ge.isBr(e)}(e.firstChild)}function nx(e){return 0<e.length&&function(e){return!e.firstChild||tx(e)}(e[e.length-1])?e.slice(0,-1):e}function rx(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null}function ox(e,t){var n=Ds.after(e),r=rc(t).prev(n);return r?r.toRange():null}function ix(t,e,n){var r=t.parentNode;return Mn.each(e,function(e){r.insertBefore(e,t)}),function(e,t){var n=Ds.before(e),r=rc(t).next(n);return r?r.toRange():null}(t,n)}function ax(e,t){var n=e.selection.getRng(),r=n.startContainer,o=n.startOffset;n.collapsed&&function(e,t){return Ge.isText(e)&&"\xa0"===e.nodeValue[t-1]}(r,o)&&Ge.isText(r)&&(r.insertData(o-1," "),r.deleteData(o,1),n.setStart(r,o),n.setEnd(r,o),e.selection.setRng(n)),e.selection.setContent(t)}function ux(e,t,n){var r,o,i,a,u,s,c,l,f,d,h,m=e.selection,g=e.dom;if(/^ | $/.test(t)&&(t=function(e,t){var n,r;n=e.startContainer,r=e.startOffset;function o(e){return n[e]&&3===n[e].nodeType}return 3===n.nodeType&&(0<r?t=t.replace(/^&nbsp;/," "):o("previousSibling")||(t=t.replace(/^ /,"&nbsp;")),r<n.length?t=t.replace(/&nbsp;(<br>|)$/," "):o("nextSibling")||(t=t.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),t}(m.getRng(),t)),r=e.parser,h=n.merge,o=pl({validate:e.settings.validate},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',s={content:t,format:"html",selection:!0,paste:n.paste},(s=e.fire("BeforeSetContent",s)).isDefaultPrevented())e.fire("SetContent",{content:s.content,format:"html",selection:!0,paste:n.paste});else{-1===(t=s.content).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var p=(l=m.getRng()).startContainer||(l.parentElement?l.parentElement():null),v=e.getBody();p===v&&m.isCollapsed()&&g.isBlock(v.firstChild)&&function(e,t){return t&&!e.schema.getShortEndedElements()[t.nodeName]}(e,v.firstChild)&&g.isEmpty(v.firstChild)&&((l=g.createRng()).setStart(v.firstChild,0),l.setEnd(v.firstChild,0),m.setRng(l)),m.isCollapsed()||(e.selection.setRng(fp(e.selection.getRng())),e.getDoc().execCommand("Delete",!1,null),t=function(e,t){var n,r;return n=e.startContainer,r=e.startOffset,3===n.nodeType&&e.collapsed&&("\xa0"===n.data[r]?(n.deleteData(r,1),/[\u00a0| ]$/.test(t)||(t+=" ")):"\xa0"===n.data[r-1]&&(n.deleteData(r-1,1),/[\u00a0| ]$/.test(t)||(t=" "+t))),t}(e.selection.getRng(),t));var y={context:(i=m.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0};if(u=r.parse(t,y),!0===n.paste&&Oz(e.schema,u)&&Pz(g,i))return l=Hz(o,g,e.selection.getRng(),u),e.selection.setRng(l),void e.fire("SetContent",s);if(function(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}(u),"mce_marker"===(f=u.lastChild).attr("id"))for(f=(c=f).prev;f;f=f.walk(!0))if(3===f.type||!g.isBlock(f.name)){e.schema.isValidChild(f.parent.name,"span")&&f.parent.insert(c,f,"br"===f.name);break}if(e._selectionOverrides.showBlockCaretContainer(i),y.invalid){for(ax(e,d),i=m.getNode(),a=e.getBody(),9===i.nodeType?i=f=a:f=i;f!==a;)f=(i=f).parentNode;t=i===a?a.innerHTML:g.getOuterHTML(i),t=o.serialize(r.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return o.serialize(u)}))),i===a?g.setHTML(a,t):g.setOuterHTML(i,t)}else!function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,o=n.lastChild;!r||r===o&&"BR"===r.nodeName?e.dom.setHTML(n,t):ax(e,t)}}(e,t=o.serialize(u),i);!function(e,t){var n=e.schema.getTextInlineElements(),r=e.dom;if(t){var o=e.getBody(),i=new Bg(r);Mn.each(r.select("*[data-mce-fragment]"),function(e){for(var t=e.parentNode;t&&t!==o;t=t.parentNode)n[e.nodeName.toLowerCase()]&&i.compare(t,e)&&r.remove(e,!0)})}}(e,h),function(n,e){var t,r,o,i,a,u=n.dom,s=n.selection;if(e){if(n.selection.scrollIntoView(e),t=function(e){for(var t=n.getBody();e&&e!==t;e=e.parentNode)if("false"===n.dom.getContentEditable(e))return e;return null}(e))return u.remove(e),s.select(t);var c=u.createRng();(i=e.previousSibling)&&3===i.nodeType?(c.setStart(i,i.nodeValue.length),Nn.ie||(a=e.nextSibling)&&3===a.nodeType&&(i.appendData(a.data),a.parentNode.removeChild(a))):(c.setStartBefore(e),c.setEndBefore(e));r=u.getParent(e,u.isBlock),u.remove(e),r&&u.isEmpty(r)&&(n.$(r).empty(),c.setStart(r,0),c.setEnd(r,0),Lz(r)||function(e){return!!e.getAttribute("data-mce-fragment")}(r)||!(o=function(e){var t=Ds.fromRangeStart(e);if(t=rc(n.getBody()).next(t))return t.toRange()}(c))?u.add(r,u.create("br",{"data-mce-bogus":"1"})):(c=o,u.remove(r))),s.setRng(c)}}(e,g.get("mce_marker")),function(e){Mn.each(e.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")})}(e.getBody()),function(e,t){k.from(e.getParent(t,"td,th")).map(yt.fromDom).each(Cg)}(e.dom,e.selection.getStart()),e.fire("SetContent",s),e.addVisual()}}function sx(e,t){e.getDoc().execCommand(t,!1,null)}function cx(n){return function(t,e){return k.from(e).map(yt.fromDom).filter(xt).bind(function(e){return function(t,n,e){function r(e){return ye(e,t)}return ba(yt.fromDom(e),function(e){return r(e).isSome()},function(e){return ze(yt.fromDom(n),e)}).bind(r)}(n,t,e.dom()).or(function(e,t){return k.from(Xi.DOM.getStyle(t,e,!0))}(n,e.dom()))}).getOr("")}}function lx(e){return Pc.firstPositionIn(e.getBody()).map(function(e){var t=e.container();return Ge.isText(t)?t.parentNode:t})}function fx(t){return k.from(t.selection.getRng()).bind(function(e){return function(e,t){return e.startContainer===t&&0===e.startOffset}(e,t.getBody())?k.none():k.from(t.selection.getStart(!0))})}function dx(e,t){if(/^[0-9\.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=Cf(e),o=wf(e);return o?o[n-1]||t:r[n-1]||t}return t}return t}function hx(e,t){var n=dx(e,t);e.formatter.toggle("fontname",{value:function(e){var t=e.split(/\s*,\s*/);return X(t,function(e){return-1===e.indexOf(" ")||ee(e,'"')||ee(e,"'")?e:"'"+e+"'"}).join(",")}(n)}),e.nodeChanged()}var mx=d(ob,Uu.isAbove,-1),gx=d(ob,Uu.isBelow,1),px=d(ib,-1,mx),vx=d(ib,1,gx),yx=Ge.isContentEditableFalse,bx=Wa,Cx=d(mb,function(e){return e.bottom},function(e,t){return e.y<t}),wx=d(mb,function(e){return e.top},function(e,t){return e.y>t}),xx=d(yb,mx),zx=d(yb,gx),Ex=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,r)}},Nx=function(e,t){return g(Db(e,t),function(e){return e.action()})},Sx=function(t,n){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t,n){var r=oe().os;Nx([{keyCode:Ah.RIGHT,action:fb(e,!0)},{keyCode:Ah.LEFT,action:fb(e,!1)},{keyCode:Ah.UP,action:db(e,!1)},{keyCode:Ah.DOWN,action:db(e,!0)},{keyCode:Ah.RIGHT,action:zb(e,!0)},{keyCode:Ah.LEFT,action:zb(e,!1)},{keyCode:Ah.UP,action:Eb(e,!1)},{keyCode:Ah.DOWN,action:Eb(e,!0)},{keyCode:Ah.RIGHT,action:nb.move(e,t,!0)},{keyCode:Ah.LEFT,action:nb.move(e,t,!1)},{keyCode:Ah.RIGHT,ctrlKey:!r.isOSX(),altKey:r.isOSX(),action:nb.moveNextWord(e,t)},{keyCode:Ah.LEFT,ctrlKey:!r.isOSX(),altKey:r.isOSX(),action:nb.movePrevWord(e,t)},{keyCode:Ah.UP,action:Rb(e,!1)},{keyCode:Ah.DOWN,action:Rb(e,!0)}],n).each(function(e){n.preventDefault()})}(t,n,e)})},kx=function(e,t){return Bt(e,t)?ba(t,function(e){return In(e)||Un(e)},function(t){return function(e){return ze(t,yt.fromDom(e.dom().parentNode))}}(e)):k.none()},Tx=function(e){e.dom.isEmpty(e.getBody())&&(e.setContent(""),function(e){var t=e.getBody(),n=t.firstChild&&e.dom.isBlock(t.firstChild)?t.firstChild:t;e.selection.setCursorLocation(n,0)}(e))},Ax=function(i,a,u){return Ya(Pc.firstPositionIn(u),Pc.lastPositionIn(u),function(e,t){var n=Ky.normalizePosition(!0,e),r=Ky.normalizePosition(!1,t),o=Ky.normalizePosition(!1,a);return i?Pc.nextPosition(u,o).map(function(e){return e.isEqual(r)&&a.isEqual(n)}).getOr(!1):Pc.prevPosition(u,o).map(function(e){return e.isEqual(n)&&a.isEqual(r)}).getOr(!1)}).getOr(!0)},Mx=function(e,t,n){return n.collapsed?Ob(e,t,n):k.none()},Rx=function(e,t,n,r){return t?Ub(e,r,n):Ub(e,n,r)},Dx=function(t,n){var r=yt.fromDom(t.getBody()),e=Mx(r.dom(),n,t.selection.getRng()).bind(function(e){return Rx(r,n,e.from().block(),e.to().block())});return e.each(function(e){t.selection.setRng(e.toRange())}),e.isSome()},_x=function(e,t){return!e.selection.isCollapsed()&&$b(e)},Bx=d(Kb,!1),Ox=d(Kb,!0),Hx=jf([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),Px=function(e,t){for(;t&&t!==e;){if(Ge.isContentEditableTrue(t)||Ge.isContentEditableFalse(t))return t;t=t.parentNode}return null},Lx=function(e,t){return e.selection.isCollapsed()?eC(e,t):tC(e,t)},Vx=function(e){var t,n=Px(e.getBody(),e.selection.getNode());return Ge.isContentEditableTrue(n)&&e.dom.isBlock(n)&&e.dom.isEmpty(n)&&(t=e.dom.create("br",{"data-mce-bogus":"1"}),e.dom.setHTML(n,""),n.appendChild(t),e.selection.setRng(Ds.before(t).toRange())),!0},Ix=function(e,t){return function(e,t){var n=e.selection.getRng();if(!Ge.isText(n.commonAncestorContainer))return!1;var r=t?Ms.Forwards:Ms.Backwards,o=rc(e.getBody()),i=d(Ts,o.next),a=d(Ts,o.prev),u=t?i:a,s=t?Ph:Lh,c=Ss(r,e.getBody(),n),l=Ky.normalizePosition(t,u(c));if(!l||!As(c,l))return!1;if(s(l))return nC(e,n,c.getNode(),r,t,l);var f=u(l);return!!(f&&s(f)&&As(l,f))&&nC(e,n,c.getNode(),r,t,f)}(e,t)},Fx=function(e,t,n){if(e.selection.isCollapsed()&&function(e){return!1!==e.settings.inline_boundaries}(e)){var r=Ds.fromRangeStart(e.selection.getRng());return iC(e,t,n,r)}return!1},Ux=function(e,t){return!!e.selection.isCollapsed()&&sC(e,t)},jx=jf([{removeTable:["element"]},{emptyCells:["cells"]}]),qx=function(e,t){return hC(t,e).isSome()},$x=function(e,t){return g(fh(t,e),function(e){return"caption"===ie(e)})},Wx=function(e,t){return bg(t),e.selection.setCursorLocation(t.dom(),0),k.some(!0)},Kx=function(e,t){var n=yt.fromDom(e.selection.getStart(!0)),r=ry(e);return e.selection.isCollapsed()&&0===r.length?TC(e,t,n):function(e,t){var n=yt.fromDom(e.getBody()),r=e.selection.getRng(),o=ry(e);return 0!==o.length?CC(e,o):zC(e,n,r,t)}(e,n)},Xx=function(e,t){return!!e.selection.isCollapsed()&&function(t,n){var e=Ds.fromRangeStart(t.selection.getRng());return Pc.fromPosition(n,t.getBody(),e).filter(function(e){return n?_h(e):Bh(e)}).bind(function(e){return k.from(ws(n?0:-1,e))}).map(function(e){return t.selection.select(e),!0}).getOr(!1)}(e,t)},Yx=function(e){return y(X(e.selection.getSelectedBlocks(),yt.fromDom),function(e){return!DC(e)&&!function(e){return Se(e).map(DC).getOr(!1)}(e)&&function(e){return ba(e,function(e){return Ge.isContentEditableTrue(e.dom())||Ge.isContentEditableFalse(e.dom())}).exists(function(e){return Ge.isContentEditableTrue(e.dom())})}(e)})},Gx=d(PC,!1),Jx=d(PC,!0),Qx=d(HC,!1),Zx=d(HC,!0),ez=function(e,t,n){if(e.selection.isCollapsed()&&RC(e)){var r=e.dom,o=e.selection.getRng(),i=Ds.fromRangeStart(o),a=r.getParent(o.startContainer,r.isBlock);if(null!==a&&Gx(yt.fromDom(a),i))return _C(e,"outdent"),!0}return!1},tz=function(t,n){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t,n){Nx([{keyCode:Ah.BACKSPACE,action:Ex(ez,e,!1)},{keyCode:Ah.BACKSPACE,action:Ex(Lx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Lx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Ix,e,!1)},{keyCode:Ah.DELETE,action:Ex(Ix,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Fx,e,t,!1)},{keyCode:Ah.DELETE,action:Ex(Fx,e,t,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Kx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Kx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Xx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Xx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(_x,e,!1)},{keyCode:Ah.DELETE,action:Ex(_x,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Dx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Dx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Ux,e,!1)},{keyCode:Ah.DELETE,action:Ex(Ux,e,!0)}],n).each(function(e){n.preventDefault()})}(t,n,e)}),t.on("keyup",function(e){!1===e.isDefaultPrevented()&&function(e,t){Nx([{keyCode:Ah.BACKSPACE,action:Ex(Vx,e)},{keyCode:Ah.DELETE,action:Ex(Vx,e)}],t)}(t,e)})},nz=function(e,t){var n,r,o=t,i=e.dom,a=e.schema.getMoveCaretBeforeOnEnterElements();if(t){if(/^(LI|DT|DD)$/.test(t.nodeName)){var u=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild);u&&/^(UL|OL|DL)$/.test(u.nodeName)&&t.insertBefore(i.doc.createTextNode("\xa0"),t.firstChild)}if(r=i.createRng(),t.normalize(),t.hasChildNodes()){for(var s=new yi(t,t);n=s.current();){if(Ge.isText(n)){r.setStart(n,0),r.setEnd(n,0);break}if(a[n.nodeName.toLowerCase()]){r.setStartBefore(n),r.setEndBefore(n);break}o=n,n=s.next()}n||(r.setStart(o,0),r.setEnd(o,0))}else Ge.isBr(t)?t.nextSibling&&i.isBlock(t.nextSibling)?(r.setStartBefore(t),r.setEndBefore(t)):(r.setStartAfter(t),r.setEndAfter(t)):(r.setStart(t,0),r.setEnd(t,0));e.selection.setRng(r),e.selection.scrollIntoView(t)}},rz=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},oz=LC,iz=function(e){return LC(e).fold($(""),function(e){return e.nodeName.toUpperCase()})},az=function(e){return LC(e).filter(function(e){return Un(yt.fromDom(e))}).isSome()},uz=function(e,t,n,r,o){var i=e.dom,a=e.selection.getRng();if(n!==e.getBody()){!function(e){return IC(e)&&IC(e.parentNode)}(n)||(o="LI");var u=o?t(o):i.create("BR");if(UC(n,r,!0)&&UC(n,r,!1))VC(n,"LI")?i.insertAfter(u,FC(n)):i.replace(u,n);else if(UC(n,r,!0))VC(n,"LI")?(i.insertAfter(u,FC(n)),u.appendChild(i.doc.createTextNode(" ")),u.appendChild(n)):n.parentNode.insertBefore(u,n);else if(UC(n,r,!1))i.insertAfter(u,FC(n));else{n=FC(n);var s=a.cloneRange();s.setStartAfter(r),s.setEndAfter(n);var c=s.extractContents();"LI"===o&&function(e,t){return e.firstChild&&e.firstChild.nodeName===t}(c,"LI")?(u=c.firstChild,i.insertAfter(c,n)):(i.insertAfter(c,n),i.insertAfter(u,n))}i.remove(r),nz(e,u)}},sz=function(a,e){function t(e){var t,n,r,o=s,i=b.getTextInlineElements();if(e||"TABLE"===m||"HR"===m?(t=y.create(e||p),XC(a,t)):t=c.cloneNode(!1),r=t,!1===yf(a))y.setAttrib(t,"style",null),y.setAttrib(t,"class",null);else do{if(i[o.nodeName]){if(rs(o)||Fc(o))continue;n=o.cloneNode(!1),y.setAttrib(n,"id",""),t.hasChildNodes()?n.appendChild(t.firstChild):r=n,t.appendChild(n)}}while((o=o.parentNode)&&o!==u);return jC(r),t}function n(e){var t,n,r=WC(e,s,i);if(Ge.isText(s)&&(e?0<r:r<s.nodeValue.length))return!1;if(s.parentNode===c&&v&&!e)return!0;if(e&&Ge.isElement(s)&&s===c.firstChild)return!0;if(qC(s,"TABLE")||qC(s,"HR"))return v&&!e||!v&&e;var o=new yi(s,c);for(Ge.isText(s)&&(e&&0===r?o.prev():e||r!==s.nodeValue.length||o.next());t=o.current();){if(Ge.isElement(t)){if(!t.getAttribute("data-mce-bogus")&&(n=t.nodeName.toLowerCase(),C[n]&&"br"!==n))return!1}else if(Ge.isText(t)&&!/^[ \t\r\n]*$/.test(t.nodeValue))return!1;e?o.prev():o.next()}return!0}function r(){f=/^(H[1-6]|PRE|FIGURE)$/.test(m)&&"HGROUP"!==g?t(p):t(),bf(a)&&$C(y,h)&&y.isEmpty(c)?f=y.split(h,c):y.insertAfter(f,c),nz(a,f)}var o,u,s,i,c,l,f,d,h,m,g,p,v,y=a.dom,b=a.schema,C=b.getNonEmptyElements(),w=a.selection.getRng();ay(y,w).each(function(e){w.setStart(e.startContainer,e.startOffset),w.setEnd(e.endContainer,e.endOffset)}),s=w.startContainer,i=w.startOffset,p=mf(a),l=!(!e||!e.shiftKey);var x=!(!e||!e.ctrlKey);Ge.isElement(s)&&s.hasChildNodes()&&(v=i>s.childNodes.length-1,s=s.childNodes[Math.min(i,s.childNodes.length-1)]||s,i=v&&Ge.isText(s)?s.nodeValue.length:0),(u=KC(y,s))&&((p&&!l||!p&&l)&&(s=function(e,t,n,r,o){var i,a,u,s,c,l,f=t||"P",d=e.dom,h=KC(d,r);if(!(a=d.getParent(r,d.isBlock))||!$C(d,a)){if(l=(a=a||h)===e.getBody()||function(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}(a)?a.nodeName.toLowerCase():a.parentNode.nodeName.toLowerCase(),!a.hasChildNodes())return i=d.create(f),XC(e,i),a.appendChild(i),n.setStart(i,0),n.setEnd(i,0),i;for(s=r;s.parentNode!==a;)s=s.parentNode;for(;s&&!d.isBlock(s);)s=(u=s).previousSibling;if(u&&e.schema.isValidChild(l,f.toLowerCase())){for(i=d.create(f),XC(e,i),u.parentNode.insertBefore(i,u),s=u;s&&!d.isBlock(s);)c=s.nextSibling,i.appendChild(s),s=c;n.setStart(r,o),n.setEnd(r,o)}}return r}(a,p,w,s,i)),c=y.getParent(s,y.isBlock),h=c?y.getParent(c.parentNode,y.isBlock):null,m=c?c.nodeName.toUpperCase():"","LI"!==(g=h?h.nodeName.toUpperCase():"")||x||(h=(c=h).parentNode,m=g),/^(LI|DT|DD)$/.test(m)&&y.isEmpty(c)?uz(a,t,h,c,p):p&&c===a.getBody()||(p=p||"P",Ma(c)?(f=Pa(c),y.isEmpty(c)&&jC(c),nz(a,f)):n()?r():n(!0)?(f=c.parentNode.insertBefore(t(),c),nz(a,qC(c,"HR")?f:c)):((o=function(e){var t=e.cloneRange();return t.setStart(e.startContainer,WC(!0,e.startContainer,e.startOffset)),t.setEnd(e.endContainer,WC(!1,e.endContainer,e.endOffset)),t}(w).cloneRange()).setEndAfter(c),function(e){z(pa(yt.fromDom(e),zt),function(e){var t=e.dom();t.nodeValue=lu(t.nodeValue)})}(d=o.extractContents()),function(e){for(;Ge.isText(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(d),f=d.firstChild,y.insertAfter(d,c),function(e,t,n){var r,o=n,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;Ge.isElement(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(r=i.length;r--;)!(o=i[r]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(a=e,(u=o)&&"A"===u.nodeName&&a.isEmpty(u)&&e.remove(o));var a,u}}(y,C,f),function(e,t){var n;t.normalize(),(n=t.lastChild)&&!/^(left|right)$/gi.test(e.getStyle(n,"float",!0))||e.add(t,"br")}(y,c),y.isEmpty(c)&&jC(c),f.normalize(),y.isEmpty(f)?(y.remove(f),r()):nz(a,f)),y.setAttrib(f,"id",""),a.fire("NewBlock",{newBlock:f})))},cz=function(e,t){return!!function(e){return Ge.isBr(e.getNode())}(Ds.after(t))||Pc.nextPosition(e,Ds.after(t)).map(function(e){return Ge.isBr(e.getNode())}).getOr(!1)},lz=function(e,t){var n=function(e){var t=d(Ky.isInlineTarget,e),n=Ds.fromRangeStart(e.selection.getRng());return Jy(t,e.getBody(),n).filter(tw)}(e);n.isSome()?n.each(d(nw,e)):JC(e,t)},fz=function(e){return rw(e,pf(e))},dz=function(e){return rw(e,vf(e))},hz=jf([{br:[]},{block:[]},{none:[]}]),mz=function(e,t){return Xy([hw([ow],hz.none()),hw([uw("summary",!0)],hz.br()),hw([sw(!0),cw(!1),fw],hz.br()),hw([sw(!0),cw(!1)],hz.block()),hw([sw(!0),cw(!0),fw],hz.block()),hw([sw(!0),cw(!0)],hz.br()),hw([aw(!0),fw],hz.br()),hw([aw(!0)],hz.block()),hw([iw(!0),fw,dw],hz.block()),hw([iw(!0)],hz.br()),hw([lw],hz.br()),hw([iw(!1),fw],hz.br()),hw([dw],hz.block())],[e,!(!t||!t.shiftKey)]).getOr(hz.none())},gz=function(e,t){mz(e,t).fold(function(){lz(e,t)},function(){sz(e,t)},i)},pz=function(t){t.on("keydown",function(e){e.keyCode===Ah.ENTER&&function(e,t){t.isDefaultPrevented()||(t.preventDefault(),function(e){e.typing&&(e.typing=!1,e.add())}(e.undoManager),e.undoManager.transact(function(){!1===e.selection.isCollapsed()&&e.execCommand("Delete"),gz(e,t)}))}(t,e)})},vz=d(mw,"\xa0"),yz=d(mw," "),bz=function(t){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t){Nx([{keyCode:Ah.SPACEBAR,action:Ex(Aw,e)}],t).each(function(e){t.preventDefault()})}(t,e)})},Cz=function(e){e.on("keyup compositionstart",d(Rw,e))},wz=oe().browser,xz=function(t){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t){Nx([{keyCode:Ah.END,action:hb(e,!0)},{keyCode:Ah.HOME,action:hb(e,!1)}],t).each(function(e){t.preventDefault()})}(t,e)})},zz=function(e){var t=nb.setupSelectedState(e);Cz(e),Sx(e,t),tz(e,t),pz(e),bz(e),Dw(e),xz(e)},Ez=Xi.DOM,Nz=function(t,e){var n,r,o=t.settings,i=t.getElement(),a=t.getDoc();o.inline||(t.getElement().style.visibility=t.orgVisibility),e||t.inline||(a.open(),a.write(t.iframeHTML),a.close()),t.inline&&(t.on("remove",function(){var e=this.getBody();Ez.removeClass(e,"mce-content-body"),Ez.removeClass(e,"mce-edit-focus"),Ez.setAttrib(e,"contentEditable",null)}),Ez.addClass(i,"mce-content-body"),t.contentDocument=a=j.document,t.contentWindow=j.window,t.bodyElement=i,t.contentAreaContainer=i,o.root_name=i.nodeName.toLowerCase()),(n=t.getBody()).disabled=!0,t.readonly=o.readonly,t.readonly||(t.inline&&"static"===Ez.getStyle(n,"position",!0)&&(n.style.position="relative"),n.contentEditable=t.getParam("content_editable_state",!0)),n.disabled=!1,t.editorUpload=th(t),t.schema=pr(o),t.dom=Xi(a,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:o.force_hex_style_colors,update_styles:!0,root_element:t.inline?t.getBody():null,collect:function(){return t.inline},schema:t.schema,contentCssCors:Df(t),referrerPolicy:_f(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=function(u){var e=Np(u.settings,u.schema);return e.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o,i=e.length,a=u.dom;i--;)if(r=(n=e[i]).attr(t),o="data-mce-"+t,!n.attr(o)){if(0===r.indexOf("data:")||0===r.indexOf("blob:"))continue;"style"===t?((r=a.serializeStyle(a.parseStyle(r),n.name)).length||(r=null),n.attr(o,r),n.attr(t,r)):"tabindex"===t?(n.attr(o,r),n.attr(t,null)):n.attr(o,u.convertURL(r,t,n.name))}}),e.addNodeFilter("script",function(e){for(var t,n,r=e.length;r--;)0!==(n=(t=e[r]).attr("type")||"no/type").indexOf("mce-")&&t.attr("type","mce-"+n)}),e.addNodeFilter("#cdata",function(e){for(var t,n=e.length;n--;)(t=e[n]).type=8,t.name="#comment",t.value="[CDATA["+t.value+"]]"}),e.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t,n=e.length,r=u.schema.getNonEmptyElements();n--;)(t=e[n]).isEmpty(r)&&0===t.getAll("br").length&&(t.append(new ul("br",1)).shortEnded=!0)}),e}(t),t.serializer=Ap(o,t),t.selection=ly(t.dom,t.getWin(),t.serializer,t),t.annotator=nl(t),t.formatter=Cp(t),t.undoManager=mm(t),t._nodeChangeDispatcher=new ph(t),t._selectionOverrides=om(t),Hw(t),Ow(t),zz(t),dh(t),t.fire("PreInit"),o.browser_spellcheck||o.gecko_spellcheck||(a.body.spellcheck=!1,Ez.setAttrib(n,"spellcheck","false")),t.quirks=_w(t),t.fire("PostRender");var u=Vf(t);u!==undefined&&(n.dir=u),o.protect&&t.on("BeforeSetContent",function(t){Mn.each(o.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type}),0<t.contentStyles.length&&(r="",Mn.each(t.contentStyles,function(e){r+=e+"\r\n"}),t.dom.addStyle(r)),function(e){return e.inline?Ez.styleSheetLoader:e.dom.styleSheetLoader}(t).loadAll(t.contentCSS,function(e){Pw(t)},function(e){Pw(t)}),o.content_style&&function(e,t){var n=yt.fromDom(e.getDoc().head),r=yt.fromTag("style");Tt(r,"type","text/css"),Di(r,yt.fromText(t)),Di(n,r)}(t,o.content_style)},Sz=Xi.DOM,kz=function(e,t){var n=Lw(e,t);t.editorContainer&&(Sz.get(t.editorContainer).style.display=e.orgDisplay,e.hidden=Sz.isHidden(t.editorContainer)),e.getElement().style.display="none",Sz.setAttrib(e.id,"aria-hidden","true"),n||Nz(e)},Tz=Xi.DOM,Az=function(t,n,e){var r=jd.get(e),o=jd.urls[e]||t.documentBaseUrl.replace(/\/$/,"");if(e=Mn.trim(e),r&&-1===Mn.inArray(n,e)){if(Mn.each(jd.dependencies(e),function(e){Az(t,n,e)}),t.plugins[e])return;try{var i=new r(t,o,t.$);(t.plugins[e]=i).init&&(i.init(t,o),n.push(e))}catch(yN){Fd.pluginInitError(t,e,yN)}}},Mz=function(e){e.fire("ScriptsLoaded"),function(n){var e=Mn.trim(n.settings.icons),r=n.ui.registry.getAll().icons,t=G(G({},{"accessibility-check":'<svg width="24" height="24"><path d="M12 2a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5c0-.6-.4-1-1-1a1 1 0 0 0-1 1v5c0 .6-.4 1-1 1a1 1 0 0 1-1-1V9H4a1 1 0 1 1 0-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',"action-next":'<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 0 0-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 1 0-1.4-1.4L12 13.6 5.7 7.3z"/></svg>',"action-prev":'<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 0 0 1.4-1.4L12 6.6l-7.7 7.7a1 1 0 0 0 1.4 1.4L12 9.4l6.3 6.3z"/></svg>',"align-center":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"align-justify":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"align-left":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"align-none":'<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 1 1 0-2h9.2zm4 0h.8a1 1 0 0 1 0 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 0 1 0-2h6.8zm4 0H19a1 1 0 0 1 0 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 0 1 0-2h4.4zm4 0H19a1 1 0 0 1 0 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 0 1 0-2h2zm4 0h8a1 1 0 0 1 0 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',"align-right":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"arrow-left":'<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 0 0 1.4-1V6a1 1 0 0 0-1.4-.9l-12 6a1 1 0 0 0 0 1.8z" fill-rule="evenodd"/></svg>',"arrow-right":'<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 0 1 5 18V6a1 1 0 0 1 1.4-.9l12 6a1 1 0 0 1 0 1.8z" fill-rule="evenodd"/></svg>',bold:'<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 0 1-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',bookmark:'<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 0 0-1 1z" fill-rule="nonzero"/></svg>',"border-width":'<svg width="24" height="24"><path d="M5 14.8h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zm-.5 3.7h15c.3 0 .5.2.5.5s-.2.5-.5.5h-15a.5.5 0 1 1 0-1zm.5-8.3h14c.6 0 1 .4 1 1v1c0 .5-.4 1-1 1H5a1 1 0 0 1-1-1v-1c0-.6.4-1 1-1zm0-5.7h14c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-2c0-.6.4-1 1-1z" fill-rule="evenodd"/></svg>',brightness:'<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 0 1-.7-.3A1 1 0 0 1 11 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-1a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H5a1 1 0 0 1-.7-.3A1 1 0 0 1 4 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 0 1-.8.3 1 1 0 0 1-.6-.3l-.8-.7a1 1 0 0 1-.3-.8c0-.2.1-.5.3-.7a1 1 0 0 1 1.4 0zm-10-7l-.7-.8a1 1 0 0 1-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.8-.3zm10 0a1 1 0 0 1-.8.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 0 1 0 1.4l-.8.8a1 1 0 0 1-.6.3 1 1 0 0 1-.8-.3 1 1 0 0 1-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 0 1 3.7 2.4 4 4 0 0 1 0 3.2A4 4 0 0 1 12 16a4 4 0 0 1-3.7-2.4 4 4 0 0 1 0-3.2A4 4 0 0 1 12 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',browse:'<svg width="24" height="24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 1 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 0 1-1.4 1.4L13 13.4V20a1 1 0 0 1-2 0v-6.6z" fill-rule="nonzero"/></svg>',cancel:'<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 1 1 0 14.8 7.4 7.4 0 0 1 0-14.8zM12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',"change-case":'<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 0 1-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 0 1-1 .7h-.2a.7.7 0 0 1-.7-1l4-12a1 1 0 1 1 2 0l4 12a.7.7 0 0 1-.8 1h-.2a1 1 0 0 1-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',"character-count":'<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 0 1-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 0 0-.5-.1 1 1 0 0 0-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 0 0-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 0 0 1.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 0 0-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 0 0-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 0 1-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 0 1-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',"checklist-rtl":'<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checklist:'<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2h-8a1 1 0 0 1 0-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checkmark:'<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 0 1 1.6 1.2l-8 12a1 1 0 0 1-1.5.1l-5-5a1 1 0 1 1 1.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',"chevron-down":'<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 0 1 0-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',"chevron-left":'<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 0 1 0-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',"chevron-right":'<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 0 1 0-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 0 1 0-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',"chevron-up":'<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 0 1 0-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',close:'<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 0 1-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 0 1-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 0 1 1.5-1.5l3.8 3.9 3.8-3.9a1 1 0 0 1 1.5 1.5z" fill-rule="evenodd"/></svg>',"code-sample":'<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 0 1-.8 2 2.8 2.8 0 0 1 .8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 0 1-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 0 1 .8-2 2.8 2.8 0 0 1-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 0 1-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 0 1-.5-.5V17a3 3 0 0 0 1-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',"color-levels":'<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0 1 18 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 0 1-3.7 3 5.7 5.7 0 0 1-3.2 0A5.9 5.9 0 0 1 7.6 18a6.2 6.2 0 0 1-1.4-2.6 6.7 6.7 0 0 1 0-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 0 1 2.3-4A20 20 0 0 1 12 4a26.4 26.4 0 0 1 3.2 3.4 18.2 18.2 0 0 1 2.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 0 0-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 0 1-1.3 3 5.3 5.3 0 0 1-2.3 1.5 4.9 4.9 0 0 1-2 .1 4.3 4.3 0 0 0 2.4.8 4 4 0 0 0 2-.6 4 4 0 0 0 1.5-1.5z" fill-rule="evenodd"/></svg>',"color-picker":'<svg width="24" height="24"><path d="M12 3a9 9 0 0 0 0 18 1.5 1.5 0 0 0 1.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 0 0 5-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3-4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3 4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z" fill-rule="nonzero"/></svg>',"color-swatch-remove-color":'<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',"color-swatch":'<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',"comment-add":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 0v-2H9a1 1 0 0 1 0-2h2V8a1 1 0 0 1 2 0v2z"/></g></svg>',comment:'<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23z"/></svg>',contrast:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4zm-6 8a6 6 0 0 0 6 6V6a6 6 0 0 0-6 6z" fill-rule="evenodd"/></svg>',copy:'<svg width="24" height="24"><path d="M16 3H6a2 2 0 0 0-2 2v11h2V5h10V3zm1 4a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',crop:'<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-2H7V9H5a1 1 0 1 1 0-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',cut:'<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 0 1 0 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2 1.6 1.6 0 0 0-.8 0 2.6 2.6 0 0 0-.8.3 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3 2.8 2.8 0 0 0 1-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3 1.5 1.5 0 0 0-.8 0 1 1 0 0 0-.4.2 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4l.3.4.3.4a2.8 2.8 0 0 0 .8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',"document-properties":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',drag:'<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',duplicate:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7a2 2 0 0 1 2 2v2z"/><path d="M17 14h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1h-1a1 1 0 0 1 0-2h1v-1a1 1 0 0 1 2 0v1z"/></g></svg>',"edit-block":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 0 0-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',"edit-image":'<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 0 0-2-2H7v2h11v9zM6 17h15a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1H6a2 2 0 0 1-2-2V7H3a1 1 0 1 1 0-2h1V4a1 1 0 1 1 2 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',"embed-page":'<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0 1 19 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 0 0 8 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 0 0-4 4.5h2.2zm-3.4 0a12 12 0 0 1 2.8-4 12 12 0 0 0-5 4h2.2z" fill-rule="nonzero"/></svg>',embed:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 0 1 0 .8l-5.6 4A.5.5 0 0 1 9 16V8a.5.5 0 0 1 .8-.4z" fill-rule="nonzero"/></svg>',emoji:'<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16zm0 14.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13z" fill-rule="nonzero"/></svg>',fill:'<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 0 0 2.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',"flip-horizontally":'<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 0 0-2 2zm14-2v2h2a2 2 0 0 0-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 0 0 2-2h-2v2z" fill-rule="nonzero"/></svg>',"flip-vertically":'<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 0 0-2 2v3h2V6h10v3h2V6a2 2 0 0 0-2-2zm2 14h-2v2a2 2 0 0 0 2-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',"format-painter":'<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 0 0-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',fullscreen:'<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 1 1 0-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 1 1-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 1 1 1.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 1 1 0-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 1 1 0 1.7H5a.9.9 0 0 1-.9-.9v-4.4a.9.9 0 1 1 1.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 0 1-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 0 1 0 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',gallery:'<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 1 1 0-4 2 2 0 0 1 0 4zM4.5 4h15a.5.5 0 1 1 0 1h-15a.5.5 0 0 1 0-1zm2-2h11a.5.5 0 1 1 0 1h-11a.5.5 0 0 1 0-1z"/></svg>',gamma:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 0 0-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 0 1 .6.5l.1.3a8.5 8.5 0 0 1 .3.6l1.9 4.6 2-5.2a1 1 0 0 1 1-.6.5.5 0 0 1 .5.6L13 14v2.8a.7.7 0 0 1-1.4 0z" fill-rule="nonzero"/></svg>',help:'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 0 0-6 9 6.3 6.3 0 0 0 1.4 2l1 1a6.3 6.3 0 0 0 3.6 1 6.5 6.5 0 0 0 6-9 6.3 6.3 0 0 0-1.4-2l-1-1a6.3 6.3 0 0 0-3.6-1zM12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4z"/><path d="M9.6 9.7a.7.7 0 0 1-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 0 0-.8.8.8.8 0 0 1-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',"highlight-bg-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 0 1 2.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',home:'<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',"horizontal-rule":'<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',"image-options":'<svg width="24" height="24"><path d="M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill-rule="nonzero"/></svg>',image:'<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4z" fill-rule="nonzero"/></svg>',indent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6z" fill-rule="evenodd"/></svg>',info:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',"insert-character":'<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 0 0 1.8-2.9 6.3 6.3 0 0 0-.1-4.1 5.8 5.8 0 0 0-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 0 0-3.9 1.8 6.3 6.3 0 0 0-1.3 6 6.2 6.2 0 0 0 1.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 0 1 4 11c0-1 .2-1.9.6-2.7A7 7 0 0 1 6.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 0 1 5.7 2 7 7 0 0 1 1.7 2.3 6 6 0 0 1 .2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 0 1-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',"insert-time":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 1 0 0-14 7 7 0 0 0 0 14zm0 2a9 9 0 1 1 0-18 9 9 0 0 1 0 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 0 0-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',invert:'<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 0 1-3.1 1.9 6.1 6.1 0 0 1-5.5-1.6A5.8 5.8 0 0 1 6 14v-.3l.1-1.2A13.9 13.9 0 0 1 7.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 0 0 .2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 0 0-3-4.2L12 6a26.1 26.1 0 0 0-2.2 2.5l-1-1a20.9 20.9 0 0 1 2.9-3.3L12 4l1 .8a22.2 22.2 0 0 1 4 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',italic:'<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',line:'<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',link:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 0 1 1.4 1.4l-2.1 2a2 2 0 1 0 2.7 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2zm11.6-.6a1 1 0 0 1-1.4-1.4l2-2a2 2 0 1 0-2.6-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',"list-bull-circle":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM11 26a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM11 36a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-default":'<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-square":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-num-default-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-default":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-lower-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',"list-num-lower-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',"list-num-upper-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',"list-num-upper-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',lock:'<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 0 0-.3-.7A1 1 0 0 0 13 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7z" fill-rule="evenodd"/></svg>',ltr:'<svg width="24" height="24"><path d="M11 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 7.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6z" fill-rule="evenodd"/></svg>',"more-drawer":'<svg width="24" height="24"><path d="M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill-rule="nonzero"/></svg>',"new-document":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',"new-tab":'<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',"non-breaking":'<svg width="24" height="24"><path d="M11 11H8a1 1 0 1 1 0-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',notice:'<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',"ordered-list-rtl":'<svg width="24" height="24"><path d="M6 17h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2zm13-1v3.5a.5.5 0 1 1-1 0V5h-.5a.5.5 0 1 1 0-1H19zm-1 8.8l.2.2h1.3a.5.5 0 1 1 0 1h-1.6a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2h-1.3a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 0 1 0-1h1.2a.3.3 0 1 0 0-.6h-1.3a.4.4 0 1 1 0-.8h1.3a.3.3 0 0 0 0-.6h-1.2a.5.5 0 1 1 0-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',"ordered-list":'<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 1 1 0-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.5V5h-.5a.5.5 0 0 1 0-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2H4.5a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 0 1 0-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 1 1 0-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 1 1 0-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',orientation:'<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 0 1 0-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 1 1-4.3 16.9l1.5-1.5A7 7 0 1 0 13 6h-1z" fill-rule="nonzero"/></svg>',outdent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2zm1.6-3.8a1 1 0 0 1-1.2 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 0 1 1.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',"page-break":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 0 1 0-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 0 1-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',"paste-text":'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',paste:'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',"permanent-pen":'<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 0 1 0-3L14 3l1 1-7.3 7.3a1 1 0 0 0 0 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 0 1-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',plus:'<svg width="24" height="24"><g fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="#000" stroke-width="2"><path d="M12 5v14M5 12h14"/></g></svg>',preferences:'<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 0 1-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 0 1-1.4 0l-1.5-1.2a6.2 6.2 0 0 1-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 0 1-1-.9l-.2-1.9a5.8 5.8 0 0 1-1.5-.6l-1.5 1.2a1 1 0 0 1-1.4 0l-.7-.7a1 1 0 0 1 0-1.4l1.2-1.5a6.2 6.2 0 0 1-.6-1.5l-1.9-.2a1 1 0 0 1-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 0 1 .6-1.5L5.2 7.3a1 1 0 0 1 0-1.4l.7-.7a1 1 0 0 1 1.4 0l1.5 1.2a6.2 6.2 0 0 1 1.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 0 1 1.5.6l1.5-1.2a1 1 0 0 1 1.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 0 1 .6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z" fill-rule="evenodd"/></svg>',preview:'<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 0 0 2.1-2.8 15.7 15.7 0 0 0-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 0 0-6.7 3.2A16.2 16.2 0 0 0 3.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 0 1 2.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 0 1-2.8-3.7 1 1 0 0 1 0-1zm12-3.3a2 2 0 1 0 2.7 2.6 4 4 0 1 1-2.6-2.6z" fill-rule="nonzero"/></svg>',print:'<svg width="24" height="24"><path d="M18 8H6a3 3 0 0 0-3 3v6h2v3h14v-3h2v-6a3 3 0 0 0-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',quote:'<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3z" fill-rule="nonzero"/></svg>',redo:'<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 1 1-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 1 1 1.4-1.4l5 5a1 1 0 0 1 0 1.4l-5 5a1 1 0 0 1-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',reload:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 0 1 1-1l5 .4a1 1 0 1 1-.2 2l-2.2-.2a7.8 7.8 0 0 0 8.4.2 7.5 7.5 0 0 0 3.5-6.4 1 1 0 1 1 2 0 9.5 9.5 0 0 1-4.5 8 9.9 9.9 0 0 1-10.2 0l.4 1.4a1 1 0 1 1-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 0 0-9.5-1 7.5 7.5 0 0 0-3.6 7 1 1 0 0 1-2 0 9.5 9.5 0 0 1 4.5-8.6 10 10 0 0 1 10.9.3l-.3-1a1 1 0 0 1 2-.5l1.1 4.8a1 1 0 0 1-1 1.2l-5-.4a1 1 0 0 1-.9-1z"/></g></svg>',"remove-formatting":'<svg width="24" height="24"><path d="M13.2 6a1 1 0 0 1 0 .2l-2.6 10a1 1 0 0 1-1 .8h-.2a.8.8 0 0 1-.8-1l2.6-10H8a1 1 0 1 1 0-2h9a1 1 0 0 1 0 2h-3.8zM5 18h7a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zm13 1.5L16.5 18 15 19.5a.7.7 0 0 1-1-1l1.5-1.5-1.5-1.5a.7.7 0 0 1 1-1l1.5 1.5 1.5-1.5a.7.7 0 0 1 1 1L17.5 17l1.5 1.5a.7.7 0 0 1-1 1z" fill-rule="evenodd"/></svg>',remove:'<svg width="24" height="24"><path d="M16 7h3a1 1 0 0 1 0 2h-1v9a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V9H5a1 1 0 1 1 0-2h3V6a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 0 0-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4zm4 0a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4z" fill-rule="nonzero"/></svg>',"resize-handle":'<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 1 1 9 2l-7 7A.5.5 0 1 1 1 8l7-7zM8.1 5.1A.5.5 0 1 1 9 6l-3 3A.5.5 0 1 1 5 8l3-3z"/></g></svg>',resize:'<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-6a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3A1 1 0 0 1 4 11V5z" fill-rule="evenodd"/></svg>',"restore-draft":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10z" fill-rule="nonzero"/></g></svg>',"rotate-left":'<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10z" fill-rule="nonzero"/></svg>',"rotate-right":'<svg width="24" height="24"><path d="M20 8V5a1 1 0 0 1 2 0v6c0 .6-.4 1-1 1h-6a1 1 0 0 1 0-2h4.3L16 7A7.2 7.2 0 0 0 7.7 6a7 7 0 0 0 3 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 0 1 1.4 1.5A9.2 9.2 0 0 1 2.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',rtl:'<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 4.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L8 5zm12 11.2a1 1 0 1 1-1 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 1 1 1 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',save:'<svg width="24" height="24"><path d="M5 16h14a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 1 0-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 1 0-1.4-1.4L13 11.6V4a1 1 0 0 0-2 0v7.6z" fill-rule="nonzero"/></svg>',search:'<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12z" fill-rule="nonzero"/></svg>',"select-all":'<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 0 0-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 0 0-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 0 0 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',selected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 0 0-1 1L9.6 17 18 8.6a.7.7 0 0 0 0-1 .7.7 0 0 0-1 0l-7.4 7.3z"/></svg>',settings:'<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V8H5a1 1 0 1 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V13H5a1 1 0 0 1 0-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V18H5a1 1 0 0 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',sharpen:'<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',sourcecode:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 0 1 0-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 0 0-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',"spell-check":'<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',"strike-through":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 0 1 7 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2z" fill-rule="nonzero"/></g></svg>',subscript:'<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 0 0-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 0 1-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',superscript:'<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',"table-cell-properties":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm10 10h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10 0v3h4v-3h-4zm0-1h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',"table-cell-select-all":'<svg width="24" height="24"><path d="M12.5 5.5v6h6v-6h-6zm-1 0h-6v6h6v-6zm1 13h6v-6h-6v6zm-1 0v-6h-6v6h6zm-7-14h15v15h-15v-15z" fill-rule="nonzero"/></svg>',"table-cell-select-inner":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5.5 5.5v13h13v-13h-13zm-1-1h15v15h-15v-15z" opacity=".2"/><path d="M11.5 11.5v-7h1v7h7v1h-7v7h-1v-7h-7v-1h7z"/></g></svg>',"table-delete-column":'<svg width="24" height="24"><path d="M9 11.2l1 1v.2l-1 1v-2.2zm5 1l1-1v2.2l-1-1v-.2zM20 5v14H4V5h16zm-1 2h-4v.8l-.2-.2-.8.8V7h-4v1.4l-.8-.8-.2.2V7H5v11h4v-1.8l.5.5.5-.4V18h4v-1.8l.8.8.2-.3V18h4V7zm-3.9 3.4l-1.8 1.9 1.8 1.9c.4.3.4.9 0 1.2-.3.3-.8.3-1.2 0L12 13.5l-1.8 1.9a.8.8 0 0 1-1.2 0 .9.9 0 0 1 0-1.2l1.8-1.9-1.9-2a.9.9 0 0 1 1.2-1.2l2 2 1.8-1.8c.3-.4.9-.4 1.2 0a.8.8 0 0 1 0 1.1z" fill-rule="evenodd"/></svg>',"table-delete-row":'<svg width="24" height="24"><path d="M16.7 8.8l1.1 1.2-2.4 2.5L18 15l-1.2 1.2-2.5-2.5-2.4 2.5-1.3-1.2 2.5-2.5-2.5-2.5 1.2-1.3 2.6 2.6 2.4-2.5zM4 5h16v14H4V5zm15 5V7H5v3h4.8l1 1H5v3h5.8l-1 1H5v3h14v-3h-.4l-1-1H19v-3h-1.3l1-1h.3z" fill-rule="evenodd"/></svg>',"table-delete-table":'<svg width="24" height="26"><path d="M4 6h16v14H4V6zm1 2v11h14V8H5zm11.7 8.7l-1.5 1.5L12 15l-3.3 3.2-1.4-1.5 3.2-3.2-3.3-3.2 1.5-1.5L12 12l3.2-3.2 1.5 1.5-3.2 3.2 3.2 3.2z" fill-rule="evenodd"/></svg>',"table-insert-column-after":'<svg width="24" height="24"><path d="M14.3 9c.4 0 .7.3.7.6v2.2h2.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7H15v2.2c0 .3-.3.6-.7.6a.7.7 0 0 1-.6-.6v-2.2h-2.2a.7.7 0 0 1 0-1.4h2.2V9.6c0-.3.3-.6.6-.6zM4 5h16v14H4V5zm5 13v-3H5v3h4zm0-4v-3H5v3h4zm0-4V7H5v3h4zm10 8V7h-9v11h9z" fill-rule="evenodd"/></svg>',"table-insert-column-before":'<svg width="24" height="24"><path d="M9.7 16a.7.7 0 0 1-.7-.6v-2.2H6.9a.7.7 0 0 1 0-1.4H9V9.6c0-.3.3-.6.7-.6.3 0 .6.3.6.6v2.2h2.2c.4 0 .8.3.8.7 0 .4-.4.7-.8.7h-2.2v2.2c0 .3-.3.6-.6.6zM4 5h16v14H4V5zm10 13V7H5v11h9zm5 0v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V7h-4v3h4z" fill-rule="evenodd"/></svg>',"table-insert-row-above":'<svg width="24" height="24"><path d="M14.8 10.5c0 .3-.2.5-.5.5h-1.8v1.8c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.6V11H9.7a.5.5 0 0 1 0-1h1.8V8.3c0-.3.2-.6.5-.6s.5.3.5.6V10h1.8c.3 0 .5.2.5.5zM4 5h16v14H4V5zm5 13v-3H5v3h4zm5 0v-3h-4v3h4zm5 0v-3h-4v3h4zm0-4V7H5v7h14z" fill-rule="evenodd"/></svg>',"table-insert-row-after":'<svg width="24" height="24"><path d="M9.2 14.5c0-.3.2-.5.5-.5h1.8v-1.8c0-.3.2-.5.5-.5s.5.2.5.6V14h1.8c.3 0 .5.2.5.5s-.2.5-.5.5h-1.8v1.7c0 .3-.2.6-.5.6a.5.5 0 0 1-.5-.6V15H9.7a.5.5 0 0 1-.5-.5zM4 5h16v14H4V5zm6 2v3h4V7h-4zM5 7v3h4V7H5zm14 11v-7H5v7h14zm0-8V7h-4v3h4z" fill-rule="evenodd"/></svg>',"table-left-header":'<svg width="24" height="24"><path d="M4 5h16v13H4V5zm10 12v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V6h-4v3h4zm5 8v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V6h-4v3h4z" fill-rule="evenodd"/></svg>',"table-merge-cells":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 13h9v-7h-9v7zm4-11h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10-1h4V7h-4v3zM5 15v3h4v-3H5z" fill-rule="evenodd"/></svg>',"table-row-properties":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm10 10h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm6 3h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',"table-split-cells":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 2v3h4V7h-4zM9 18v-3H5v3h4zm0-4v-3H5v3h4zm0-4V7H5v3h4zm10 8v-7h-9v7h9zm0-8V7h-4v3h4zm-3.5 4.5l1.5 1.6c.3.2.3.7 0 1-.2.2-.7.2-1 0l-1.5-1.6-1.6 1.5c-.2.3-.7.3-1 0a.7.7 0 0 1 0-1l1.6-1.5-1.5-1.6a.7.7 0 0 1 1-1l1.5 1.6 1.6-1.5c.2-.3.7-.3 1 0 .2.2.2.7 0 1l-1.6 1.5z" fill-rule="evenodd"/></svg>',"table-top-header":'<svg width="24" height="24"><path d="M4 5h16v13H4V5zm5 12v-3H5v3h4zm0-4v-3H5v3h4zm5 4v-3h-4v3h4zm0-4v-3h-4v3h4zm5 4v-3h-4v3h4zm0-4v-3h-4v3h4z" fill-rule="evenodd"/></svg>',table:'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 9h4v-3h-4v3zm4 1h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10 0v3h4v-3h-4zm0-1h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',template:'<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 1 1 6 0v4h4a2 2 0 0 1 2 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 1 0-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',"temporary-placeholder":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 1 1 1 0V6H15v1.6a8 8 0 1 1-6 0zm-2.6 5.3a.5.5 0 0 0 .3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 0 1 3.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 0 0-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',"text-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 0 1-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 0 1-.5.6h-.8a.5.5 0 0 1-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 0 0 .5.6h1.6a.5.5 0 0 0 .5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',toc:'<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',translate:'<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 0 1 0-1l3.1-3A12.4 12.4 0 0 1 6.7 9H8a10.1 10.1 0 0 0 1.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 1 1 0-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 0 1-1 2.4 13.5 13.5 0 0 1-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 0 1-.4.7 1 1 0 0 1-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 0 1-1 .7.5.5 0 0 1-.4-.7l2.7-7.4a1 1 0 1 1 2 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',underline:'<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 0 1-.4 1.8l-1 1.4a5.3 5.3 0 0 1-5.5 1 5 5 0 0 1-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 0 1-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 0 0 2.2.8 3.4 3.4 0 0 0 2.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',undo:'<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 0 1-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 1 1-1.4 1.4l-5-5a1 1 0 0 1 0-1.4l5-5a1 1 0 0 1 1.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',unlink:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 0 1 1.4 1.4l-2 2a2 2 0 1 0 2.6 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2zm11.6-.6a1 1 0 0 1-1.4-1.4l2.1-2a2 2 0 1 0-2.7-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2zM7.6 6.3a.8.8 0 0 1-1 1.1L3.3 4.2a.7.7 0 1 1 1-1l3.2 3.1zM5.1 8.6a.8.8 0 0 1 0 1.5H3a.8.8 0 0 1 0-1.5H5zm5-3.5a.8.8 0 0 1-1.5 0V3a.8.8 0 0 1 1.5 0V5zm6 11.8a.8.8 0 0 1 1-1l3.2 3.2a.8.8 0 0 1-1 1L16 17zm-2.2 2a.8.8 0 0 1 1.5 0V21a.8.8 0 0 1-1.5 0V19zm5-3.5a.7.7 0 1 1 0-1.5H21a.8.8 0 0 1 0 1.5H19z" fill-rule="nonzero"/></svg>',unlock:'<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 0 0-.3-.7A1 1 0 0 0 16 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',"unordered-list":'<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',unselected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 0 0-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',upload:'<svg width="24" height="24"><path d="M18 19v-2a1 1 0 0 1 2 0v3c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 2 0v2h12zM11 6.4L8.7 8.7a1 1 0 0 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 1 1-1.4 1.4L13 6.4V16a1 1 0 0 1-2 0V6.4z" fill-rule="nonzero"/></svg>',user:'<svg width="24" height="24"><path d="M12 24a12 12 0 1 1 0-24 12 12 0 0 1 0 24zm-8.7-5.3a11 11 0 0 0 17.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',visualblocks:'<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 0 1-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 0 1-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 0 1 0 2v7a1 1 0 0 1-2 0V9h-1v7a1 1 0 0 1-2 0v-4a2.5 2.5 0 0 1-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 0 1 2 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>',visualchars:'<svg width="24" height="24"><path d="M10 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 6.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L10 5z" fill-rule="evenodd"/></svg>',warning:'<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',"zoom-in":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm-1-9a1 1 0 0 1 2 0v6a1 1 0 0 1-2 0V8zm-2 4a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8z" fill-rule="nonzero"/></svg>',"zoom-out":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm-3-5a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8z" fill-rule="nonzero"/></svg>'}),Ud.get(e).icons);ue(t,function(e,t){kt(r,t)||n.ui.registry.addIcon(t,e)})}(e),function(e){var t=e.settings.theme;if(K(t)){e.settings.theme=Iw(t);var n=qd.get(t);e.theme=new n(e,qd.urls[t]),e.theme.init&&e.theme.init(e,qd.urls[t]||e.documentBaseUrl.replace(/\/$/,""),e.$)}else e.theme={}}(e),function(t){var n=[];Mn.each(t.settings.plugins.split(/[ ,]/),function(e){Az(t,n,Iw(e))})}(e);var t=function(e){var t=e.getElement();return e.orgDisplay=t.style.display,K(e.settings.theme)?function(e){return e.theme.renderUI()}(e):D(e.settings.theme)?function(e){var t=e.getElement(),n=(0,e.settings.theme)(e,t);return n.editorContainer.nodeType&&(n.editorContainer.id=n.editorContainer.id||e.id+"_parent"),n.iframeContainer&&n.iframeContainer.nodeType&&(n.iframeContainer.id=n.iframeContainer.id||e.id+"_iframecontainer"),n.height=n.iframeHeight?n.iframeHeight:t.offsetHeight,n}(e):Uw(e)}(e);return e.editorContainer=t.editorContainer?t.editorContainer:null,Vw(e),e.inline?Nz(e):kz(e,t)},Rz=Xi.DOM,Dz=function(t){var e=t.settings,n=t.id;ra.setCode(Bf(t));var r=function(){Rz.unbind(j.window,"ready",r),t.render()};if(kr.Event.domLoaded){if(t.getElement()&&Nn.contentEditable){e.inline?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden");var o=t.getElement().form||Rz.getParent(n,"form");o&&(t.formElement=o,e.hidden_input&&!Ge.isTextareaOrInput(t.getElement())&&(Rz.insertAfter(Rz.create("input",{type:"hidden",name:n}),n),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},Rz.bind(o,"submit reset",t.formEventDelegate),t.on("reset",function(){t.resetContent()}),!e.submit_patch||o.submit.nodeType||o.submit.length||o._mceOldSubmit||(o._mceOldSubmit=o.submit,o.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),o._mceOldSubmit(o)})),t.windowManager=Bd(t),t.notificationManager=_d(t),"xml"===e.encoding&&t.on("GetContent",function(e){e.save&&(e.content=Rz.encode(e.content))}),e.add_form_submit_trigger&&t.on("submit",function(){t.initialized&&t.save()}),e.add_unload_trigger&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),$w(t,t.suffix)}}else Rz.bind(j.window,"ready",r)},_z="data-mce-contenteditable",Bz=["design","readonly"],Oz=function(e,t){var n=t.firstChild,r=t.lastChild;return n&&"meta"===n.name&&(n=n.next),r&&"mce_marker"===r.attr("id")&&(r=r.prev),function(e,t){var n=e.getNonEmptyElements();return t&&(t.isEmpty(n)||function(e,t){return e.getBlockElements()[t.name]&&function(e){return e.firstChild&&e.firstChild===e.lastChild}(t)&&function(e){return"br"===e.name||"\xa0"===e.value}(t.firstChild)}(e,t))}(e,r)&&(r=r.prev),!(!n||n!==r)&&("ul"===n.name||"ol"===n.name)},Hz=function(e,o,i,t){function n(e){var t=Ds.fromRangeStart(i),n=rc(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||rx(o,r.getNode())!==a}var r=function(e,t,n){var r=t.serialize(n);return function(e){var t=e.firstChild,n=e.lastChild;return t&&"META"===t.nodeName&&t.parentNode.removeChild(t),n&&"mce_marker"===n.id&&n.parentNode.removeChild(n),e}(e.createFragment(r))}(o,e,t),a=rx(o,i.startContainer),u=nx(ex(r.firstChild)),s=o.getRoot();return n(1)?ix(a,u,s):n(2)?function(e,t,n,r){return r.insertAfter(t.reverse(),e),ox(t[0],n)}(a,u,s,o):function(t,e,n,r){var o=function(e,t){var n=t.cloneRange(),r=t.cloneRange();return n.setStartBefore(e),r.setEndAfter(e),[n.cloneContents(),r.cloneContents()]}(t,r),i=t.parentNode;return i.insertBefore(o[0],t),Mn.each(e,function(e){i.insertBefore(e,t)}),i.insertBefore(o[1],t),i.removeChild(t),ox(e[e.length-1],n)}(a,u,s,i)},Pz=function(e,t){return!!rx(e,t)},Lz=Ge.matchNodeNames(["td","th"]),Vz=function(e,t){var n=function(e){var t;return"string"!=typeof e?(t=Mn.extend({paste:e.paste,data:{paste:e.paste}},e),{content:e.content,details:t}):{content:e,details:{}}}(t);ux(e,n.content,n.details)},Iz=function(e){ez(e,!1)||Lx(e,!1)||Ix(e,!1)||Fx(e,!1)||Dx(e,!1)||Kx(e)||_x(e,!1)||Ux(e,!1)||(sx(e,"Delete"),Tx(e))},Fz=function(e){Lx(e,!0)||Ix(e,!0)||Fx(e,!0)||Dx(e,!0)||Kx(e)||_x(e,!0)||Ux(e,!0)||sx(e,"ForwardDelete")},Uz={getFontSize:cx("font-size"),getFontFamily:q(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},cx("font-family")),toPt:function(e,t){return/[0-9.]+px$/.test(e)?function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}(72*parseInt(e,10)/96,t||0)+"pt":e}},jz=Mn.each,qz=Mn.map,$z=Mn.inArray,Wz=(Kz.prototype.execCommand=function(t,n,r,e){var o,i,a=!1,u=this;if(!u.editor.removed){if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?Jf(u.editor):u.editor.focus(),(e=u.editor.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;if(i=t.toLowerCase(),o=u.commands.exec[i])return o(i,n,r),u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(jz(this.editor.plugins,function(e){if(e.execCommand&&e.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(u.editor.theme&&u.editor.theme.execCommand&&u.editor.theme.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=u.editor.getDoc().execCommand(t,n,r)}catch(s){}return!!a&&(u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},Kz.prototype.queryCommandState=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.state[e])return t(e);try{return this.editor.getDoc().queryCommandState(e)}catch(n){}return!1}},Kz.prototype.queryCommandValue=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.value[e])return t(e);try{return this.editor.getDoc().queryCommandValue(e)}catch(n){}}},Kz.prototype.addCommands=function(e,n){var r=this;n=n||"exec",jz(e,function(t,e){jz(e.toLowerCase().split(","),function(e){r.commands[n][e]=t})})},Kz.prototype.addCommand=function(e,o,i){var a=this;e=e.toLowerCase(),this.commands.exec[e]=function(e,t,n,r){return o.call(i||a.editor,t,n,r)}},Kz.prototype.queryCommandSupported=function(e){if(e=e.toLowerCase(),this.commands.exec[e])return!0;try{return this.editor.getDoc().queryCommandSupported(e)}catch(t){}return!1},Kz.prototype.addQueryStateHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.state[e]=function(){return t.call(n||r.editor)}},Kz.prototype.addQueryValueHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.value[e]=function(){return t.call(n||r.editor)}},Kz.prototype.hasCustomCommand=function(e){return e=e.toLowerCase(),!!this.commands.exec[e]},Kz.prototype.execNativeCommand=function(e,t,n){return t===undefined&&(t=!1),n===undefined&&(n=null),this.editor.getDoc().execCommand(e,t,n)},Kz.prototype.isFormatMatch=function(e){return this.editor.formatter.match(e)},Kz.prototype.toggleFormat=function(e,t){this.editor.formatter.toggle(e,t?{value:t}:undefined),this.editor.nodeChanged()},Kz.prototype.storeSelection=function(e){this.selectionBookmark=this.editor.selection.getBookmark(e)},Kz.prototype.restoreSelection=function(){this.editor.selection.moveToBookmark(this.selectionBookmark)},Kz.prototype.setupCommands=function(i){var a=this;function e(n){return function(){var e=i.selection.isCollapsed()?[i.dom.getParent(i.selection.getNode(),i.dom.isBlock)]:i.selection.getSelectedBlocks(),t=qz(e,function(e){return!!i.formatter.matchNode(e,n)});return-1!==$z(t,!0)}}this.addCommands({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){i.undoManager.add()},"Cut,Copy,Paste":function(e){var t,n=i.getDoc();try{a.execNativeCommand(e)}catch(o){t=!0}if("paste"!==e||n.queryCommandEnabled(e)||(t=!0),t||!n.queryCommandSupported(e)){var r=i.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");Nn.mac&&(r=r.replace(/Ctrl\+/g,"\u2318+")),i.notificationManager.open({text:r,type:"error"})}},unlink:function(){if(i.selection.isCollapsed()){var e=i.dom.getParent(i.selection.getStart(),"a");e&&i.dom.remove(e,!0)}else i.formatter.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),jz("left,center,right,justify".split(","),function(e){t!==e&&i.formatter.remove("align"+e)}),"none"!==t&&a.toggleFormat("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;a.execNativeCommand(e),(t=i.dom.getParent(i.selection.getNode(),"ol,ul"))&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(a.storeSelection(),i.dom.split(n,t),a.restoreSelection()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){a.toggleFormat(e)},"ForeColor,HiliteColor":function(e,t,n){a.toggleFormat(e,n)},FontName:function(e,t,n){hx(i,n)},FontSize:function(e,t,n){!function(e,t){e.formatter.toggle("fontsize",{value:dx(e,t)}),e.nodeChanged()}(i,n)},RemoveFormat:function(e){i.formatter.remove(e)},mceBlockQuote:function(){a.toggleFormat("blockquote")},FormatBlock:function(e,t,n){return a.toggleFormat(n||"p")},mceCleanup:function(){var e=i.selection.getBookmark();i.setContent(i.getContent()),i.selection.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||i.selection.getNode();r!==i.getBody()&&(a.storeSelection(),i.dom.remove(r,!0),a.restoreSelection())},mceSelectNodeDepth:function(e,t,n){var r=0;i.dom.getParent(i.selection.getNode(),function(e){if(1===e.nodeType&&r++===n)return i.selection.select(e),!1},i.getBody())},mceSelectNode:function(e,t,n){i.selection.select(n)},mceInsertContent:function(e,t,n){Vz(i,n)},mceInsertRawHTML:function(e,t,n){i.selection.setContent("tiny_mce_marker");var r=i.getContent();i.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceInsertNewLine:function(e,t,n){gz(i,n)},mceToggleFormat:function(e,t,n){a.toggleFormat(n)},mceSetContent:function(e,t,n){i.setContent(n)},"Indent,Outdent":function(e){_C(i,e)},mceRepaint:function(){},InsertHorizontalRule:function(){i.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){i.hasVisual=!i.hasVisual,i.addVisual()},mceReplaceContent:function(e,t,n){i.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,i.selection.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=i.dom.getParent(i.selection.getNode(),"a"),n.href=n.href.replace(/ /g,"%20"),r&&n.href||i.formatter.remove("link"),n.href&&i.formatter.apply("link",n,r)},selectAll:function(){var e=i.dom.getParent(i.selection.getStart(),Ge.isContentEditableTrue);if(e){var t=i.dom.createRng();t.selectNodeContents(e),i.selection.setRng(t)}},"delete":function(){Iz(i)},forwardDelete:function(){Fz(i)},mceNewDocument:function(){i.setContent("")},InsertLineBreak:function(e,t,n){return lz(i,n),!0}}),a.addCommands({JustifyLeft:e("alignleft"),JustifyCenter:e("aligncenter"),JustifyRight:e("alignright"),JustifyFull:e("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return a.isFormatMatch(e)},mceBlockQuote:function(){return a.isFormatMatch("blockquote")},Outdent:function(){return RC(i)},"InsertUnorderedList,InsertOrderedList":function(e){var t=i.dom.getParent(i.selection.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),a.addCommands({Undo:function(){i.undoManager.undo()},Redo:function(){i.undoManager.redo()}}),a.addQueryValueHandler("FontName",function(){return function(t){return fx(t).fold(function(){return lx(t).map(function(e){return Uz.getFontFamily(t.getBody(),e)}).getOr("")},function(e){return Uz.getFontFamily(t.getBody(),e)})}(i)},this),a.addQueryValueHandler("FontSize",function(){return function(t){return fx(t).fold(function(){return lx(t).map(function(e){return Uz.getFontSize(t.getBody(),e)}).getOr("")},function(e){return Uz.getFontSize(t.getBody(),e)})}(i)},this)},Kz);function Kz(e){this.commands={state:{},exec:{},value:{}},this.editor=e,this.setupCommands(e)}var Xz=Mn.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel"," "),Yz=(Gz.isNative=function(e){return!!Xz[e.toLowerCase()]},Gz.prototype.fire=function(e,t){var n,r,o,i;if(e=e.toLowerCase(),(t=t||{}).type=e,t.target||(t.target=this.scope),t.preventDefault||(t.preventDefault=function(){t.isDefaultPrevented=a},t.stopPropagation=function(){t.isPropagationStopped=a},t.stopImmediatePropagation=function(){t.isImmediatePropagationStopped=a},t.isDefaultPrevented=c,t.isPropagationStopped=c,t.isImmediatePropagationStopped=c),this.settings.beforeFire&&this.settings.beforeFire(t),n=this.bindings[e])for(r=0,o=n.length;r<o;r++){if((i=n[r]).once&&this.off(e,i.func),t.isImmediatePropagationStopped())return t.stopPropagation(),t;if(!1===i.func.call(this.scope,t))return t.preventDefault(),t}return t},Gz.prototype.on=function(e,t,n,r){var o,i,a;if(!1===t&&(t=c),t){var u={func:t};for(r&&Mn.extend(u,r),a=(i=e.toLowerCase().split(" ")).length;a--;)e=i[a],(o=this.bindings[e])||(o=this.bindings[e]=[],this.toggleEvent(e,!0)),n?o.unshift(u):o.push(u)}return this},Gz.prototype.off=function(e,t){var n,r,o,i,a;if(e)for(n=(i=e.toLowerCase().split(" ")).length;n--;){if(e=i[n],r=this.bindings[e],!e){for(o in this.bindings)this.toggleEvent(o,!1),delete this.bindings[o];return this}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),this.bindings[e]=r);else r.length=0;r.length||(this.toggleEvent(e,!1),delete this.bindings[e])}}else{for(e in this.bindings)this.toggleEvent(e,!1);this.bindings={}}return this},Gz.prototype.once=function(e,t,n){return this.on(e,t,n,{once:!0})},Gz.prototype.has=function(e){return e=e.toLowerCase(),!(!this.bindings[e]||0===this.bindings[e].length)},Gz);function Gz(e){this.bindings={},this.settings=e||{},this.scope=this.settings.scope||this,this.toggleEvent=this.settings.toggleEvent||c}function Jz(n){return n._eventDispatcher||(n._eventDispatcher=new Yz({scope:n,toggleEvent:function(e,t){Yz.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher}function Qz(e,t){return"selectionchange"===t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=rE.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function Zz(e,t,n){!function(e){return!e.hidden&&!Gw(e)}(e)?Gw(e)&&function(e){var t=e.target;!function(e){return"click"===e.type}(e)||"A"!==t.tagName||Ah.metaKeyPressed(e)||e.preventDefault()}(n):e.fire(t,n)}function eE(i,a){var e,t;if(i.delegates||(i.delegates={}),!i.delegates[a]&&!i.removed)if(e=Qz(i,a),i.settings.event_root){if(tE||(tE={},i.editorManager.on("removeEditor",function(){var e;if(!i.editorManager.activeEditor&&tE){for(e in tE)i.dom.unbind(Qz(i,e));tE=null}})),tE[a])return;t=function(e){for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();o!==t&&!rE.isChildOf(t,o)||Zz(n[r],a,e)}},tE[a]=t,rE.bind(e,a,t)}else t=function(e){Zz(i,a,e)},rE.bind(e,a,t),i.delegates[a]=t}var tE,nE={fire:function(e,t,n){if(this.removed&&"remove"!==e&&"detach"!==e)return t;var r=Jz(this).fire(e,t);if(!1!==n&&this.parent)for(var o=this.parent();o&&!r.isPropagationStopped();)o.fire(e,r,!1),o=o.parent();return r},on:function(e,t,n){return Jz(this).on(e,t,n)},off:function(e,t){return Jz(this).off(e,t)},once:function(e,t){return Jz(this).once(e,t)},hasEventListeners:function(e){return Jz(this).has(e)}},rE=Xi.DOM,oE=G(G({},nE),{bindPendingEventDelegates:function(){var t=this;Mn.each(t._pendingNativeEvents,function(e){eE(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(t?n.initialized?eE(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(Qz(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e,t=this,n=t.getBody(),r=t.dom;if(t.delegates){for(e in t.delegates)t.dom.unbind(Qz(t,e),e,t.delegates[e]);delete t.delegates}!t.inline&&n&&r&&(n.onload=null,r.unbind(t.getWin()),r.unbind(t.getDoc())),r&&(r.unbind(n),r.unbind(t.getContainer()))}}),iE=Mn.each,aE=Mn.explode,uE={f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},sE=Mn.makeMap("alt,ctrl,shift,meta,access"),cE=(lE.prototype.add=function(e,n,r,o){var t,i=this;return"string"==typeof(t=r)?r=function(){i.editor.execCommand(t,!1,null)}:Mn.isArray(t)&&(r=function(){i.editor.execCommand(t[0],t[1],t[2])}),iE(aE(Mn.trim(e)),function(e){var t=i.createShortcut(e,n,r,o);i.shortcuts[t.id]=t}),!0},lE.prototype.remove=function(e){var t=this.createShortcut(e);return!!this.shortcuts[t.id]&&(delete this.shortcuts[t.id],!0)},lE.prototype.parseShortcut=function(e){var t,n,r={};for(n in iE(aE(e.toLowerCase(),"+"),function(e){e in sE?r[e]=!0:/^[0-9]{2,}$/.test(e)?r.keyCode=parseInt(e,10):(r.charCode=e.charCodeAt(0),r.keyCode=uE[e]||e.toUpperCase().charCodeAt(0))}),t=[r.keyCode],sE)r[n]?t.push(n):r[n]=!1;return r.id=t.join(","),r.access&&(r.alt=!0,Nn.mac?r.ctrl=!0:r.shift=!0),r.meta&&(Nn.mac?r.meta=!0:(r.ctrl=!0,r.meta=!1)),r},lE.prototype.createShortcut=function(e,t,n,r){var o;return(o=Mn.map(aE(e,">"),this.parseShortcut))[o.length-1]=Mn.extend(o[o.length-1],{func:n,scope:r||this.editor}),Mn.extend(o[0],{desc:this.editor.translate(t),subpatterns:o.slice(1)})},lE.prototype.hasModifier=function(e){return e.altKey||e.ctrlKey||e.metaKey},lE.prototype.isFunctionKey=function(e){return"keydown"===e.type&&112<=e.keyCode&&e.keyCode<=123},lE.prototype.matchShortcut=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},lE.prototype.executeShortcutAction=function(e){return e.func?e.func.call(e.scope):null},lE);function lE(e){this.shortcuts={},this.pendingPatterns=[],this.editor=e;var n=this;e.on("keyup keypress keydown",function(t){!n.hasModifier(t)&&!n.isFunctionKey(t)||t.isDefaultPrevented()||(iE(n.shortcuts,function(e){if(n.matchShortcut(t,e))return n.pendingPatterns=e.subpatterns.slice(0),"keydown"===t.type&&n.executeShortcutAction(e),!0}),n.matchShortcut(t,n.pendingPatterns[0])&&(1===n.pendingPatterns.length&&"keydown"===t.type&&n.executeShortcutAction(n.pendingPatterns[0]),n.pendingPatterns.shift()))})}var fE=Mn.each,dE=Mn.trim,hE="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),mE={ftp:21,http:80,https:443,mailto:25},gE=(pE.parseDataUri=function(e){var t,n=decodeURIComponent(e).split(","),r=/data:([^;]+)/.exec(n[0]);return r&&(t=r[1]),{type:t,data:n[1]}},pE.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},pE.prototype.setPath=function(e){var t=/^(.*?)\/?(\w+)?$/.exec(e);this.path=t[0],this.directory=t[1],this.file=t[2],this.source="",this.getURI()},pE.prototype.toRelative=function(e){var t;if("./"===e)return e;var n=new pE(e,{base_uri:this});if("mce_host"!==n.host&&this.host!==n.host&&n.host||this.port!==n.port||this.protocol!==n.protocol&&""!==n.protocol)return n.getURI();var r=this.getURI(),o=n.getURI();return r===o||"/"===r.charAt(r.length-1)&&r.substr(0,r.length-1)===o?r:(t=this.toRelPath(this.path,n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),t)},pE.prototype.toAbsolute=function(e,t){var n=new pE(e,{base_uri:this});return n.getURI(t&&this.isSameOrigin(n))},pE.prototype.isSameOrigin=function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=mE[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},pE.prototype.toRelPath=function(e,t){var n,r,o,i=0,a="",u=e.substring(0,e.lastIndexOf("/")).split("/");if(n=t.split("/"),u.length>=n.length)for(r=0,o=u.length;r<o;r++)if(r>=n.length||u[r]!==n[r]){i=r+1;break}if(u.length<n.length)for(r=0,o=n.length;r<o;r++)if(r>=u.length||u[r]!==n[r]){i=r+1;break}if(1===i)return t;for(r=0,o=u.length-(i-1);r<o;r++)a+="../";for(r=i-1,o=n.length;r<o;r++)a+=r!==i-1?"/"+n[r]:n[r];return a},pE.prototype.toAbsPath=function(e,t){var n,r,o,i=0,a=[];r=/\/$/.test(t)?"/":"";var u=e.split("/"),s=t.split("/");for(fE(u,function(e){e&&a.push(e)}),u=a,n=s.length-1,a=[];0<=n;n--)0!==s[n].length&&"."!==s[n]&&(".."!==s[n]?0<i?i--:a.push(s[n]):i++);return 0!==(o=(n=u.length-i)<=0?a.reverse().join("/"):u.slice(0,n).join("/")+"/"+a.reverse().join("/")).indexOf("/")&&(o="/"+o),r&&o.lastIndexOf("/")!==o.length-1&&(o+=r),o},pE.prototype.getURI=function(e){var t;return void 0===e&&(e=!1),this.source&&!e||(t="",e||(this.protocol?t+=this.protocol+"://":t+="//",this.userInfo&&(t+=this.userInfo+"@"),this.host&&(t+=this.host),this.port&&(t+=":"+this.port)),this.path&&(t+=this.path),this.query&&(t+="?"+this.query),this.anchor&&(t+="#"+this.anchor),this.source=t),this.source},pE);function pE(e,t){e=dE(e),this.settings=t||{};var n=this.settings.base_uri,r=this;if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))r.source=e;else{var o=0===e.indexOf("//");if(0!==e.indexOf("/")||o||(e=(n&&n.protocol||"http")+"://mce_host"+e),!/^[\w\-]*:?\/\//.test(e)){var i=this.settings.base_uri?this.settings.base_uri.path:new pE(j.document.location.href).directory;if(this.settings.base_uri&&""==this.settings.base_uri.protocol)e="//mce_host"+r.toAbsPath(i,e);else{var a=/([^#?]*)([#?]?.*)/.exec(e);e=(n&&n.protocol||"http")+"://mce_host"+r.toAbsPath(i,a[1])+a[2]}}e=e.replace(/@@/g,"(mce_at)");var u=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);fE(hE,function(e,t){var n=u[t];n=n&&n.replace(/\(mce_at\)/g,"@@"),r[e]=n}),n&&(r.protocol||(r.protocol=n.protocol),r.userInfo||(r.userInfo=n.userInfo),r.port||"mce_host"!==r.host||(r.port=n.port),r.host&&"mce_host"!==r.host||(r.host=n.host),r.source=""),o&&(r.protocol="")}}function vE(){var e=function(){function e(n,r){return function(e,t){return n[e.toLowerCase()]=G(G({},t),{type:r})}}var t={},n={},r={},o={},i={},a={},u={};return{addButton:e(t,"button"),addToggleButton:e(t,"togglebutton"),addMenuButton:e(t,"menubutton"),addSplitButton:e(t,"splitbutton"),addMenuItem:e(n,"menuitem"),addNestedMenuItem:e(n,"nestedmenuitem"),addToggleMenuItem:e(n,"togglemenuitem"),addAutocompleter:e(r,"autocompleter"),addContextMenu:e(i,"contextmenu"),addContextToolbar:e(a,"contexttoolbar"),addContextForm:e(a,"contextform"),addSidebar:e(u,"sidebar"),addIcon:function(e,t){return o[e.toLowerCase()]=t},getAll:function(){return{buttons:t,menuItems:n,icons:o,popups:r,contextMenus:i,contextToolbars:a,sidebars:u}}}}();return{addAutocompleter:e.addAutocompleter,addButton:e.addButton,addContextForm:e.addContextForm,addContextMenu:e.addContextMenu,addContextToolbar:e.addContextToolbar,addIcon:e.addIcon,addMenuButton:e.addMenuButton,addMenuItem:e.addMenuItem,addNestedMenuItem:e.addNestedMenuItem,addSidebar:e.addSidebar,addSplitButton:e.addSplitButton,addToggleButton:e.addToggleButton,addToggleMenuItem:e.addToggleMenuItem,getAll:e.getAll}}var yE=Xi.DOM,bE=Mn.extend,CE=Mn.each,wE=Mn.resolve,xE=Nn.ie,zE=(EE.prototype.render=function(){Dz(this)},EE.prototype.focus=function(e){ad(this,e)},EE.prototype.hasFocus=function(){return ud(this)},EE.prototype.execCallback=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?wE(r):0,o=wE(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,Array.prototype.slice.call(arguments,1))},EE.prototype.translate=function(e){return ra.translate(e)},EE.prototype.getParam=function(e,t,n){return ef(this,e,t,n)},EE.prototype.nodeChanged=function(e){this._nodeChangeDispatcher.nodeChanged(e)},EE.prototype.addCommand=function(e,t,n){this.editorCommands.addCommand(e,t,n)},EE.prototype.addQueryStateHandler=function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},EE.prototype.addQueryValueHandler=function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},EE.prototype.addShortcut=function(e,t,n,r){this.shortcuts.add(e,t,n,r)},EE.prototype.execCommand=function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},EE.prototype.queryCommandState=function(e){return this.editorCommands.queryCommandState(e)},EE.prototype.queryCommandValue=function(e){return this.editorCommands.queryCommandValue(e)},EE.prototype.queryCommandSupported=function(e){return this.editorCommands.queryCommandSupported(e)},EE.prototype.show=function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable="true":(yE.show(this.getContainer()),yE.hide(this.id)),this.load(),this.fire("show"))},EE.prototype.hide=function(){var e=this,t=e.getDoc();e.hidden||(xE&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable="false",e===e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(yE.hide(e.getContainer()),yE.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},EE.prototype.isHidden=function(){return!!this.hidden},EE.prototype.setProgressState=function(e,t){this.fire("ProgressState",{state:e,time:t})},EE.prototype.load=function(e){var t,n=this.getElement();if(this.removed)return"";if(n){(e=e||{}).load=!0;var r=Ge.isTextareaOrInput(n)?n.value:n.innerHTML;return t=this.setContent(r,e),e.element=n,e.no_events||this.fire("LoadContent",e),e.element=n=null,t}},EE.prototype.save=function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,Ge.isTextareaOrInput(o)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=yE.getParent(r.id,"form"))&&CE(n.elements,function(e){if(e.name===r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},EE.prototype.setContent=function(e,t){return jl(this,e,t)},EE.prototype.getContent=function(e){return function(t,n){return void 0===n&&(n={}),k.from(t.getBody()).fold($("tree"===n.format?new ul("body",11):""),function(e){return ml(t,n,e)})}(this,e)},EE.prototype.insertContent=function(e,t){t&&(e=bE({content:e},t)),this.execCommand("mceInsertContent",!1,e)},EE.prototype.resetContent=function(e){e===undefined?jl(this,this.startContent,{format:"raw"}):jl(this,e),this.undoManager.reset(),this.setDirty(!1),this.nodeChanged()},EE.prototype.isDirty=function(){return!this.isNotDirty},EE.prototype.setDirty=function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},EE.prototype.getContainer=function(){return this.container||(this.container=yE.get(this.editorContainer||this.id+"_parent")),this.container},EE.prototype.getContentAreaContainer=function(){return this.contentAreaContainer},EE.prototype.getElement=function(){return this.targetElm||(this.targetElm=yE.get(this.id)),this.targetElm},EE.prototype.getWin=function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},EE.prototype.getDoc=function(){var e;return this.contentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},EE.prototype.getBody=function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},EE.prototype.convertURL=function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):e=this.documentBaseURI.toAbsolute(e,r.remove_script_host)},EE.prototype.addVisual=function(e){var n,r=this,o=r.settings,i=r.dom;e=e||r.getBody(),r.hasVisual===undefined&&(r.hasVisual=o.visual),CE(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return n=o.visual_table_class||"mce-item-table",void((t=i.getAttrib(e,"border"))&&"0"!==t||!r.hasVisual?i.removeClass(e,n):i.addClass(e,n));case"A":return void(i.getAttrib(e,"href")||(t=i.getAttrib(e,"name")||e.id,n=o.visual_anchor_class||"mce-item-anchor",t&&r.hasVisual?i.addClass(e,n):i.removeClass(e,n)))}}),r.fire("VisualAid",{element:e,hasVisual:r.hasVisual})},EE.prototype.remove=function(){$l(this)},EE.prototype.destroy=function(e){Wl(this,e)},EE.prototype.uploadImages=function(e){return this.editorUpload.uploadImages(e)},EE.prototype._scanForImages=function(){return this.editorUpload.scanForImages()},EE.prototype.addButton=function(){throw new Error("editor.addButton has been removed in tinymce 5x, use editor.ui.registry.addButton or editor.ui.registry.addToggleButton or editor.ui.registry.addSplitButton instead")},EE.prototype.addSidebar=function(){throw new Error("editor.addSidebar has been removed in tinymce 5x, use editor.ui.registry.addSidebar instead")},EE.prototype.addMenuItem=function(){throw new Error("editor.addMenuItem has been removed in tinymce 5x, use editor.ui.registry.addMenuItem instead")},EE.prototype.addContextToolbar=function(){throw new Error("editor.addContextToolbar has been removed in tinymce 5x, use editor.ui.registry.addContextToolbar instead")},EE);function EE(e,t,n){var r=this;this.plugins={},this.contentCSS=[],this.contentStyles=[],this.loadedCSS={},this.isNotDirty=!1,this.editorManager=n,this.documentBaseUrl=n.documentBaseURL,bE(this,oE),this.settings=Ql(this,e,this.documentBaseUrl,n.defaultSettings,t),this.settings.suffix&&(n.suffix=this.settings.suffix),this.suffix=n.suffix,this.settings.base_url&&n._setBaseUrl(this.settings.base_url),this.baseUri=n.baseURI,this.settings.referrer_policy&&(Qi.ScriptLoader._setReferrerPolicy(this.settings.referrer_policy),Xi.DOM.styleSheetLoader._setReferrerPolicy(this.settings.referrer_policy)),ga.languageLoad=this.settings.language_load,ga.baseURL=n.baseURL,this.id=e,this.setDirty(!1),this.documentBaseURI=new gE(this.settings.document_base_url,{base_uri:this.baseUri}),this.baseURI=this.baseUri,this.inline=!!this.settings.inline,this.shortcuts=new cE(this),this.editorCommands=new Wz(this),this.settings.cache_suffix&&(Nn.cacheSuffix=this.settings.cache_suffix.replace(/^[\?\&]+/,"")),this.ui={registry:vE()};var o=Zw(this);this.mode=o,this.setMode=o.set,n.fire("SetupEditor",{editor:this}),this.execCallback("setup",this),this.$=vi.overrideDefaults(function(){return{context:r.inline?r.getBody():r.getDoc(),element:r.getBody()}})}function NE(t){var n=t.type;DE(VE.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})}function SE(e){e!==OE&&(e?vi(window).on("resize scroll",NE):vi(window).off("resize scroll",NE),OE=e)}function kE(t){var e=PE;delete HE[t.id];for(var n=0;n<HE.length;n++)if(HE[n]===t){HE.splice(n,1);break}return PE=y(PE,function(e){return t!==e}),VE.activeEditor===t&&(VE.activeEditor=0<PE.length?PE[0]:null),VE.focusedEditor===t&&(VE.focusedEditor=null),e.length!==PE.length}var TE,AE,ME=Xi.DOM,RE=Mn.explode,DE=Mn.each,_E=Mn.extend,BE=0,OE=!1,HE=[],PE=[],LE="CSS1Compat"!==j.document.compatMode,VE=G(G({},nE),{baseURI:null,baseURL:null,defaultSettings:{},documentBaseURL:null,suffix:null,$:vi,majorVersion:"5",minorVersion:"1.5",releaseDate:"2019-12-19",editors:HE,i18n:ra,activeEditor:null,focusedEditor:null,settings:{},setup:function(){var e,t,n="";t=gE.getDocumentBaseUrl(j.document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/"));var r=window.tinymce||window.tinyMCEPreInit;if(r)e=r.base||r.baseURL,n=r.suffix;else{for(var o=j.document.getElementsByTagName("script"),i=0;i<o.length;i++){var a;if(""!==(a=o[i].src||"")){var u=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!==u.indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/"));break}}}if(!e&&j.document.currentScript)-1!==(a=j.document.currentScript.src).indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/"))}this.baseURL=new gE(t).toAbsolute(e),this.documentBaseURL=t,this.baseURI=new gE(this.baseURL),this.suffix=n,nd(this)},overrideDefaults:function(e){var t,n;(t=e.base_url)&&this._setBaseUrl(t),n=e.suffix,e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;for(var o in r)ga.PluginManager.urls[o]=r[o]},init:function(r){var n,u,s=this;u=Mn.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu"," ");function c(e){var t=e.id;return t||(t=(t=e.name)&&!ME.get(t)?e.name:ME.uniqueId(),e.setAttribute("id",t)),t}function l(e,t){return t.constructor===RegExp?t.test(e.className):ME.hasClass(e,t)}var f=function(e){n=e},e=function(){function n(e,t,n){var r=new zE(e,t,s);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetElm=r.targetElm||n,r.render()}var o,i=0,a=[];ME.unbind(window,"ready",e),function(e){var t=r[e];if(t)t.apply(s,Array.prototype.slice.call(arguments,2))}("onpageload"),o=vi.unique(function(t){var e,n=[];if(Nn.browser.isIE()&&Nn.browser.version.major<11)return Fd.initError("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(LE)return Fd.initError("Failed to initialize the editor as the document is not in standards mode. TinyMCE requires standards mode."),[];if(t.types)return DE(t.types,function(e){n=n.concat(ME.select(e.selector))}),n;if(t.selector)return ME.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":0<(e=t.elements||"").length&&DE(RE(e),function(t){var e;(e=ME.get(t))?n.push(e):DE(j.document.forms,function(e){DE(e.elements,function(e){e.name===t&&(t="mce_editor_"+BE++,ME.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":DE(ME.select("textarea"),function(e){t.editor_deselector&&l(e,t.editor_deselector)||t.editor_selector&&!l(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?DE(r.types,function(t){Mn.each(o,function(e){return!ME.is(e,t.selector)||(n(c(e),_E({},r,t),e),!1)})}):(Mn.each(o,function(e){!function(e){e&&e.initialized&&!(e.getContainer()||e.getBody()).parentNode&&(kE(e),e.unbindAllNativeEvents(),e.destroy(!0),e.removed=!0,e=null)}(s.get(e.id))}),0===(o=Mn.grep(o,function(e){return!s.get(e.id)})).length?f([]):DE(o,function(e){!function(e,t){return e.inline&&t.tagName.toLowerCase()in u}(r,e)?n(c(e),r,e):Fd.initError("Could not initialize inline editor on invalid inline target element",e)}))};return s.settings=r,ME.bind(window,"ready",e),new Zt(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?PE.slice(0):K(t)?g(PE,function(e){return e.id===t}).getOr(null):_(t)&&PE[t]?PE[t]:null},add:function(e){var n=this;return HE[e.id]===e||(null===n.get(e.id)&&(function(e){return"length"!==e}(e.id)&&(HE[e.id]=e),HE.push(e),PE.push(e)),SE(!0),n.activeEditor=e,n.fire("AddEditor",{editor:e}),TE||(TE=function(e){var t=n.fire("BeforeUnload");if(t.returnValue)return e.preventDefault(),e.returnValue=t.returnValue,t.returnValue},window.addEventListener("beforeunload",TE))),e},createEditor:function(e,t){return this.add(new zE(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!K(e))return n=e,M(r.get(n.id))?null:(kE(n)&&r.fire("RemoveEditor",{editor:n}),0===PE.length&&window.removeEventListener("beforeunload",TE),n.remove(),SE(0<PE.length),n);DE(ME.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=PE.length-1;0<=t;t--)r.remove(PE[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new zE(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",0,n),!0}return!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){DE(PE,function(e){e.save()})},addI18n:function(e,t){ra.add(e,t)},translate:function(e){return ra.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!==e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e},_setBaseUrl:function(e){this.baseURL=new gE(this.documentBaseURL).toAbsolute(e.replace(/\/+$/,"")),this.baseURI=new gE(this.baseURL)}});function IE(n){return{walk:function(e,t){return Gc(n,e,t)},split:Cm,normalize:function(t){return ay(n,t).fold($(!1),function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}VE.setup(),(AE=IE=IE||{}).compareRanges=hh,AE.getCaretRangeFromPoint=$v,AE.getSelectedNode=Wa,AE.getNode=Ka;function FE(e,t,n){var r,o,i,a,u,s;return r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,"b"===(n=(n||"").split(""))[0]&&(o+=s),"r"===n[1]&&(r+=u),"c"===n[0]&&(o+=JE(s/2)),"c"===n[1]&&(r+=JE(u/2)),"b"===n[3]&&(o-=a),"r"===n[4]&&(r-=i),"c"===n[3]&&(o-=JE(a/2)),"c"===n[4]&&(r-=JE(i/2)),QE(r,o,i,a)}function UE(){}var jE,qE,$E,WE,KE=IE,XE=(jE={},qE={},{load:function(r,o){var i='Script at URL "'+o+'" failed to load',a='Script at URL "'+o+"\" did not call `tinymce.Resource.add('"+r+"', data)` within 1 second";if(jE[r]!==undefined)return jE[r];var e=new Zt(function(e,t){var n=function(e,t,n){function r(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||(o=!0,null!==i&&(j.clearTimeout(i),i=null),n.apply(null,e))}}void 0===n&&(n=1e3);var o=!1,i=null,a=r(e),u=r(t);return{start:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||null!==i||(i=j.setTimeout(function(){return u.apply(null,e)},n))},resolve:a,reject:u}}(e,t);qE[r]=n.resolve,Qi.ScriptLoader.loadScript(o,function(){return n.start(a)},function(){return n.reject(i)})});return jE[r]=e},add:function(e,t){qE[e]!==undefined&&(qE[e](t),delete qE[e]),jE[e]=Zt.resolve(t)}}),YE=Math.min,GE=Math.max,JE=Math.round,QE=function(e,t,n,r){return{x:e,y:t,w:n,h:r}},ZE={inflate:function(e,t,n){return QE(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:FE,findBestRelativePosition:function(e,t,n,r){var o,i;for(i=0;i<r.length;i++)if((o=FE(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=GE(e.x,t.x),r=GE(e.y,t.y),o=YE(e.x+e.w,t.x+t.w),i=YE(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:QE(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=GE(0,t.x-u),o=GE(0,t.y-s),i=GE(0,c-f),a=GE(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),QE(u,s,(c-=i)-u,(l-=a)-s)},create:QE,fromClientRect:function(e){return QE(e.left,e.top,e.width,e.height)}},eN=Mn.each,tN=Mn.extend;UE.extend=$E=function(n){function r(){var e,t,n;if(!WE&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)}function t(){return this}function e(n,r){return function(){var e,t=this._super;return this._super=u[n],e=r.apply(this,arguments),this._super=t,e}}var o,i,a,u=this.prototype;for(i in WE=!0,o=new this,WE=!1,n.Mixins&&(eN(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),u.Mixins&&(n.Mixins=u.Mixins.concat(n.Mixins))),n.Methods&&eN(n.Methods.split(","),function(e){n[e]=t}),n.Properties&&eN(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&eN(n.Statics,function(e,t){r[t]=e}),n.Defaults&&u.Defaults&&(n.Defaults=tN({},u.Defaults,n.Defaults)),n)"function"==typeof(a=n[i])&&u[i]?o[i]=e(i,a):o[i]=a;return r.prototype=o,(r.constructor=r).extend=$E,r};var nN=Math.min,rN=Math.max,oN=Math.round,iN={serialize:function(e){var t=JSON.stringify(e);return K(t)?t.replace(/[\u0080-\uFFFF]/g,function(e){var t=e.charCodeAt(0).toString(16);return"\\u"+"0000".substring(t.length)+t}):t},parse:function(e){try{return JSON.parse(e)}catch(t){}}},aN={callbacks:{},count:0,send:function(t){var n=this,r=Xi.DOM,o=t.count!==undefined?t.count:n.count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},uN=G(G({},nE),{send:function(e){var t,n=0,r=function(){!e.async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):pn.setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",uN.fire("beforeInitialize",{settings:e}),t=new j.XMLHttpRequest){if(t.overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&Mn.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=uN.fire("beforeSend",{xhr:t,settings:e}).xhr).send(e.data),!e.async)return r();pn.setTimeout(r,10)}}}),sN=Mn.extend,cN=(lN.sendRPC=function(e){return(new lN).send(e)},lN.prototype.send=function(e){var n=e.error,r=e.success,o=sN(this.settings,e);o.success=function(e,t){void 0===(e=iN.parse(e))&&(e={error:"JSON Parse error."}),e.error?n.call(o.error_scope||o.scope,e.error,t):r.call(o.success_scope||o.scope,e.result)},o.error=function(e,t){n&&n.call(o.error_scope||o.scope,e,t)},o.data=iN.serialize({id:e.id||"c"+this.count++,method:e.method,params:e.params}),o.content_type="application/json",uN.send(o)},lN);function lN(e){this.settings=sN({},e),this.count=0}var fN,dN,hN,mN;try{fN=j.window.localStorage}catch(yN){dN={},hN=[],mN={getItem:function(e){var t=dN[e];return t||null},setItem:function(e,t){hN.push(e),dN[e]=String(t)},key:function(e){return hN[e]},removeItem:function(t){hN=hN.filter(function(e){return e===t}),delete dN[t]},clear:function(){hN=[],dN={}},length:0},Object.defineProperty(mN,"length",{get:function(){return hN.length},configurable:!1,enumerable:!1}),fN=mN}var gN,pN={geom:{Rect:ZE},util:{Promise:Zt,Delay:pn,Tools:Mn,VK:Ah,URI:gE,Class:UE,EventDispatcher:Yz,Observable:nE,I18n:ra,XHR:uN,JSON:iN,JSONRequest:cN,JSONP:aN,LocalStorage:fN,Color:function(e){function t(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){var r,o,i,a;if(e=(parseInt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=rN(0,nN(t,1)),n=rN(0,nN(n,1)),0!==t){switch(r=e/60,i=(o=n*t)*(1-Math.abs(r%2-1)),a=n-o,Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=oN(255*(u+a)),s=oN(255*(s+a)),c=oN(255*(c+a))}else u=s=c=oN(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parseInt(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n}var n={},u=0,s=0,c=0;return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return function(e,t,n){var r,o,i,a;return o=0,(i=nN(e/=255,nN(t/=255,n/=255)))===(a=rN(e,rN(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:oN(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:oN(100*r),v:oN(100*o)})}(u,s,c)},n.toHex=function(){function e(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+e(u)+e(s)+e(c)},n.parse=t,n}},dom:{EventUtils:kr,Sizzle:Ao,DomQuery:vi,TreeWalker:yi,DOMUtils:Xi,ScriptLoader:Qi,RangeUtils:KE,Serializer:Ap,ControlSelection:Wp,BookmarkManager:Kp,Selection:ly,Event:kr.Event},html:{Styles:xr,Entities:ir,Node:ul,Schema:pr,SaxParser:of,DomParser:Np,Writer:gl,Serializer:pl},Env:Nn,AddOnManager:ga,Annotator:nl,Formatter:Cp,UndoManager:mm,EditorCommands:Wz,WindowManager:Bd,NotificationManager:_d,EditorObservable:oE,Shortcuts:cE,Editor:zE,FocusManager:Zf,EditorManager:VE,DOM:Xi.DOM,ScriptLoader:Qi.ScriptLoader,PluginManager:ga.PluginManager,ThemeManager:ga.ThemeManager,IconManager:Ud,Resource:XE,trim:Mn.trim,isArray:Mn.isArray,is:Mn.is,toArray:Mn.toArray,makeMap:Mn.makeMap,each:Mn.each,map:Mn.map,grep:Mn.grep,inArray:Mn.inArray,extend:Mn.extend,create:Mn.create,walk:Mn.walk,createNS:Mn.createNS,resolve:Mn.resolve,explode:Mn.explode,_addCacheSuffix:Mn._addCacheSuffix,isOpera:Nn.opera,isWebKit:Nn.webkit,isIE:Nn.ie,isGecko:Nn.gecko,isMac:Nn.mac},vN=Mn.extend(VE,pN);gN=vN,window.tinymce=gN,window.tinyMCE=gN,function(e){if("object"==typeof module)try{module.exports=e}catch(t){}}(vN)}(window);
\ No newline at end of file
index 7f65b71..593ee5f 100644 (file)
@@ -1,6 +1,6 @@
 <?php
   $cfg = array(
 <?php
   $cfg = array(
-    "basepath" => "/dks_lu/",
+    "basepath" => "/",
     "templatepath" => "tmpl/",
     "db"=> array(
       "type" => "pgsql",
     "templatepath" => "tmpl/",
     "db"=> array(
       "type" => "pgsql",
index f81148a..e663fef 100644 (file)
@@ -1,6 +1,4 @@
 User-agent: *\r
 User-agent: *\r
-Disallow: /css\r
-Disallow: /img\r
-Disallow: /js\r
 Disallow: /apps\r
 Disallow: /tmpl\r
 Disallow: /apps\r
 Disallow: /tmpl\r
+Disallow: /libs\r
index 2c4df08..a5f47d5 100644 (file)
   <link href="css/theme.css"  rel="stylesheet" type="text/css">
 </head>
 
   <link href="css/theme.css"  rel="stylesheet" type="text/css">
 </head>
 
-<body class="fullscreen">
+<body class="fullscreen" style="background-color: #6a92d3;">
   <div class="top">
   <div class="bar moduletoolbar">
   <div class="top">
   <div class="bar moduletoolbar">
-    <a class="bar-item" href="home.html"><img src="website/img/DKS_logo_250.png" style="height: 60px;" alt="DKS Logo"/></a>
+    <a class="bar-item" href="home.html"><img src="img/DKS_logo_250.png" style="height: 60px;" alt="DKS Logo"/></a>
     <div class="bar-item">Database<br/>Knowledge<br/>Solutions</div>
     
     <div class="bar-item">Database<br/>Knowledge<br/>Solutions</div>
     
-    <button class="bar-item button right"><span class="icon-user" style="font-size: 40px;"></span>Login</button>
-    <button class="bar-item button right"><span class="icon-shop" style="font-size: 40px;"></span>Shop</button>
+    <a class="bar-item button right" href="/apps/"><span class="icon-user" style="font-size: 40px;"></span>Login</a>
+    <a class="bar-item button right hide-small" href="impressum.html" style="text-align: left;"><span style="font-weight: bold;">DKS s.à r.l.</span><br/>4, rue Principale<br>L- 3770 Tétange<br/></a>
   </div>
   </div>
   </div>
   </div>
-  <div class="display-container" style="margin-top: 80px; height: calc(100vh - 154px); overflow-y: scroll;">
+  <div class="display-container" style="margin-top: 80px; height: calc(100vh - 120px); overflow-y: scroll;background-color: #fff;">
     {{pagedata}}
     {{pagedata}}
-    <!--<div class="white border radius" style="max-width: 1024px; margin: auto; opacity: 0.9;padding: 10px; border: 1px solid #BECEF7; border-radius: 3px;">
-      
-      <div class="row">
-        <div class="quarter"><img src="img/DKS_logo_250.png" /></div>
-        <div class="half center"><h1>Database Knowledge Sotutions</h1></div>
-        <div class="quarter" style="text-align: right;">
-          DKS s.à r.l.<br/>
-          4, rue Principale<br>
-          L- 3770 Tétange<br/>
-          Tel: <a href="tel:00352691594574">+352 691 504 574</a><br/>
-          Email: <a href="mailto:info@dks.lu">info@dks.lu</a></div>
-      </div>
-      <div class="bar border-bottom">
-        <a class="bar-item" href="index.html">Home</a>
-        <a class="bar-item" href="service.html">IT Service & HelpDesk</a>
-        <a class="bar-item" href="hosting.html">Private Cloud & Hosting</a>
-        <a class="bar-item" href="development.html">Datenbank & Web-Anwendungen</a>
-        <a class="bar-item" href="computers.html">Small Business Computers</a>
-        <a class="bar-item right" href="app/login.html">Login</a>
-      </div>
-      <div class="container" style="min-height: 300px;padding: 10px;">
-          [% INCLUDE $page %]
-      </div>
-      <div class="bar border-top">
-        <div class="bar-item">&copy; 2020 - DKS s.à r.l.</div>
-        <a class="bar-item" href="impressum.html">Impressum</a>
-        <a class="bar-item" href="privacy.html">Privacy</a>
-        <a class="bar-item" href="terms.html">AGB</a>
-        <div class="bar-item right">Last Update: 18.06.2020</div>
-      </div>
-    </div>-->
   </div>
   </div>
-  <div class="bottom">
-    <div class="bar moduletoolbar">
-      <a class="bar-item button"><span class="icon-email" style="font-size: 30px;"></span>Contact</a>
-      <a class="bar-item button" href="privacy.html"><span class="icon-paragraph" style="font-size: 30px;"></span>Privacy</a>
-      <a class="bar-item button" href="terms.html"><span class="icon-agrement" style="font-size: 30px;"></span>Terms</a>
-      <a class="bar-item button" href="company.html"><span class="icon-info-box" style="font-size: 30px;"></span>About us</a>
-      <a class="bar-item button right"><span class="icon-user" style="font-size: 40px;"></span>français</a>
-      <a class="bar-item button right"><span class="icon-user" style="font-size: 40px;"></span>deutsch</a>
-      <a class="bar-item button right" href="impressum.html"><span style="font-weight: bold;">DKS s.à r.l.</span><br/>4, rue Principale<br>L- 3770 Tétange<br/></a>
-    </div>
+  <div class="display-container bottom center text-white">
+    <p>&copy 2020 DKS S.à r.l. - <a href="impressum.html">Impressum</a> - <a href="company.html">Über uns</a> - <a href="contact.html">Kontakt</a></p>
   </div>
   </div>
+  <script type="text/javascript" src="js/mail.js"></script>
 </body>
 </html>
\ No newline at end of file
 </body>
 </html>
\ No newline at end of file
diff --git a/website/tmpl/pages/computers.tt b/website/tmpl/pages/computers.tt
deleted file mode 100644 (file)
index b91fe12..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<h2>Small Business Computers</h2>
\ No newline at end of file
index ec15ccb..4f1a49f 100644 (file)
@@ -1 +1,49 @@
-<h2>Kontakt</h2>
\ No newline at end of file
+<div class="row margin">
+  <div class="row">
+  <h1 class="margin">Kontakt</h1>
+  </div>
+<div class="container">
+<div class="col s12 m12 l4">
+  <div class="card border radius margin">
+    <header class="container border-bottom">
+      <div class="bar">
+        <div class="bar-item"><span class="icon-helpdesk" style="font-size: 32px;"></span></div>
+        <div class="bar-item"><h2>Service-zeiten</h2></div>
+      </div>
+    </header>
+    <div class="container" style="height: 90%;">
+      <h3>Vor-Ort Service</h3>
+      <p>(Nur mit Termin-Vereinbarung)</p>
+      <p>Montags-Freitags: 14:00 - 17:00</p>
+      <p>für Bestandkunden, in dringenden Fällen auch nach 17:00 und an Wochenenden</p>
+      
+      <h3>Telefon-Support / Fernwartung</h3>
+      <p>Montags-Freitags: 09:00 - 12:00</p>
+      <p>für Bestandkunden, auch nach vorheriger Termin-Vereinbarung</p>
+    </div>
+    <footer class="display-container">
+      
+    </footer>
+  </div>
+  </div>
+  <div class="col s12 m12 l4">
+  <div class="card border radius margin">
+    <header class="container border-bottom">
+      <div class="bar">
+        <div class="bar-item"><span class="icon-location" style="font-size: 32px;"></span></div>
+        <div class="bar-item"><h2>Adresse</h2></div>
+      </div>
+    </header>
+    <div class="container" style="height: 90%;">
+      <p><span style="font-weight: bold;">DKS s.à r.l.</span><br/>4, rue Principale<br>L- 3770 Tétange</p>
+      <p>E-Mail: <a href="javascript:imsg('','');">info [ at ] dks.lu</a></p>
+      <p>Telefon: <a href="tel:00352691504574">+352 691 504 574</a></p>
+    </div>
+    <footer class="display-container">
+      
+    </footer>
+  </div>
+  </div>
+
+  </div>
+
diff --git a/website/tmpl/pages/development.html.mustache b/website/tmpl/pages/development.html.mustache
deleted file mode 100644 (file)
index ccccff4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<h2>Software Development</h2>
-Our custom application development services help clients build and integrate sophisticated business applications and/or websites with client server and legacy systems. We create and deploy robust, scalable and extensible architectures for use in a wide range of industries.
-
-<h3>Our Approach</h3>
-SLIGO boasts of highly skilled software development professionals who deliver fully customized and business centric software that are both high performance and tight in security. Our software developers provide you with highly innovative and value driven software development services. Over the years, we have gained for ourselves the expertise that enables us to deliver cutting edge software solutions that suit your business requirements giving you a competitive edge.
-
-<h3>All you need to do</h3>
-All you need to do is share your requirements with our experts and we shall conjure up a solution that will be both “best fit” for your current needs and highly scalable for future requirements of your business. Being a leading software development company, we make sure that we provide you with end to end solutions – your search stops here! Our dedicated software developers work in collaboration with you to understand your requirements and then draw up a project plan to work with you to achieve your business objectives.
-
-Our team of software developers constantly study the industry trends and analyse what works best for various verticals. This enables us to provide you with software solutions that are tailored to suit your requirements.
-
-
diff --git a/website/tmpl/pages/en/privacy.tt b/website/tmpl/pages/en/privacy.tt
deleted file mode 100644 (file)
index 5a69287..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<h2>Privacy Policy of <span class="website_url">http://www.dks.lu</span></h2>
-
-<p>At <span class="website_name">DKS</span>, we collect and manage user data according to the following Privacy Policy.</p>
-
-<h3>Data Collected</h3>
-
-<p>We collect information you provide directly to us. For example, we collect information when you create an account, subscribe, participate in any interactive features of our services, fill out a form, request customer support or otherwise communicate with us. The types of information we may collect include your name, email address, postal address, credit card information and other contact or identifying information you choose to provide.</p>
-
-<p>We collect anonymous data from every visitor of the Website to monitor traffic and fix bugs. For example, we collect information like web requests, the data sent in response to such requests, the Internet Protocol address, the browser type, the browser language, and a timestamp for the request.</p>
-
-<p>We also use various technologies to collect information, and this may include sending cookies to your computer. Cookies are small data files stored on your hard drive or in your device memory that helps us to improve our services and your experience, see which areas and features of our services are popular and count visits. We may also collect information using web beacons (also known as "tracking pixels"). Web beacons are electronic images that may be used in our services or emails and to track count visits or understand usage and campaign effectiveness.</p>
-
-<h3>Use of the Data</h3>
-
-<p>We only use your personal information to provide you the <span class="website_name">DKS</span> services or to communicate with you about the Website or the services. Our Privacy Policy was created with the help of the <a href="https://www.privacy-policy-template.com">Privacy Policy Template</a> and the <a href="https://www.termsandcondiitionssample.com">Terms and Conditions Template</a>.</p>
-
-<p>We employ industry standard techniques to protect against unauthorized access of data about you that we store, including personal information.</p>
-
-<p>We do not share personal information you have provided to us without your consent, unless:</p>
-
-<ul>
-<li>Doing so is appropriate to carry out your own request</li>
-<li>We believe it's needed to enforce our legal agreements or that is legally required</li>
-<li>We believe it's needed to detect, prevent or address fraud, security or technical issues</li>
-</ul>
-
-<h3>Sharing of Data</h3>
-
-<p>We don't share your personal information with third parties. Aggregated, anonymized data is periodically transmitted to external services to help us improve the Website and service.</p>
-
-<p>We may allow third parties to provide analytics services. These third parties may use cookies, web beacons and other technologies to collect information about your use of the services and other websites, including your IP address, web browser, pages viewed, time spent on pages, links clicked and conversion information.</p>
-
-<p>We also use social buttons provided by services like Twitter, Google+, LinkedIn and Facebook. Your use of these third party services is entirely optional. We are not responsible for the privacy policies and/or practices of these third party services, and you are responsible for reading and understanding those third party services' privacy policies.</p>
-
-<h3>Cookies</h3>
-
-<p>We may use cookies on our site to remember your preferences.</p>
-
-<p>For more general information on cookies, please read <a href="https://www.cookieconsent.com/what-are-cookies/">"What Are Cookies"</a>.</p>
-
-<h3>Opt-Out, Communication Preferences</h3>
-
-<p>You may modify your communication preferences and/or opt-out from specific communications at any time. Please specify and adjust your preferences.</p>
-
-<h3>Security</h3>
-
-<p>We take reasonable steps to protect personally identifiable information from loss, misuse, and unauthorized access, disclosure, alteration, or destruction. But, you should keep in mind that no Internet transmission is ever completely secure or error-free. In particular, email sent to or from the Sites may not be secure.</p>
-
-<h3>About Children</h3>
-
-<p>The Website is not intended for children under the age of 13. We do not knowingly collect personally identifiable information via the Website from visitors in this age group.</p>
-
-<h3>Changes to the Privacy Policy</h3>
-
-<p>We may amend this Privacy Policy from time to time. Use of information we collect now is subject to the Privacy Policy in effect at the time such information is used.</p>
-
-<p>If we make major changes in the way we collect or use information, we will notify you by posting an announcement on the Website or sending you an email.</p>
\ No newline at end of file
diff --git a/website/tmpl/pages/en/terms.tt b/website/tmpl/pages/en/terms.tt
deleted file mode 100644 (file)
index d4d7399..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<h2>Terms and Conditions of <span class="website_url">dks.lu</span></h2>
-
-<p>The following terms and conditions (collectively, these "Terms and Conditions") apply to your use of <span class="website_url">dks.lu</span>, including any content, functionality and services offered on or via <span class="website_url">dks.lu</span> (the "Website").</p>
-
-<p>Please read the Terms and Conditions carefully before you start using <span class="website_name">DKS</span>, because by using the Website you accept and agree to be bound and abide by these Terms and Conditions.</p>
-
-<p>These Terms and Conditions are effective as of <span class="date">[DATE]</span>. We expressly reserve the right to change these Terms and Conditions from time to time without notice to you. You acknowledge and agree that it is your responsibility to review this Website and these Terms and Conditions from time to time and to familiarize yourself with any modifications. Your continued use of this Website after such modifications will constitute acknowledgement of the modified Terms and Conditions and agreement to abide and be bound by the modified Terms and Conditions. These Terms and Conditions were created by <a href="https://www.termsconditionstemplate.net">Terms and Conditions Template</a> and the <a href="https://www.terms-conditions-template.com">Terms & Conditions Template</a>.</p>
-
-<h3>Conduct on Website</h3>
-
-<p>Your use of the Website is subject to all applicable laws and regulations, and you are solely responsible for the substance of your communications through the Website.</p>
-
-<p>By posting information in or otherwise using any communications service, chat room, message board, newsgroup, software library, or other interactive service that may be available to you on or through this Website, you agree that you will not upload, share, post, or otherwise distribute or facilitate distribution of any content — including text, communications, software, images, sounds, data, or other information — that:</p>
-
-<ul>
-<li>Is unlawful, threatening, abusive, harassing, defamatory, libelous, deceptive, fraudulent, invasive of another's privacy, tortious, contains explicit or graphic descriptions or accounts of sexual acts (including but not limited to sexual language of a violent or threatening nature directed at another individual or group of individuals), or otherwise violates our rules or policies</li>
-<li>Victimizes, harasses, degrades, or intimidates an individual or group of individuals on the basis of religion, gender, sexual orientation, race, ethnicity, age, or disability</li>
-<li>Infringes on any patent, trademark, trade secret, copyright, right of publicity, or other proprietary right of any party</li>
-<li>Constitutes unauthorized or unsolicited advertising, junk or bulk email (also known as "spamming"), chain letters, any other form of unauthorized solicitation, or any form of lottery or gambling</li>
-<li>Contains software viruses or any other computer code, files, or programs that are designed or intended to disrupt, damage, or limit the functioning of any software, hardware, or telecommunications equipment or to damage or obtain unauthorized access to any data or other information of any third party</li>
-<li>Impersonates any person or entity, including any of our employees or representatives</li>
-</ul>
-
-<p>We neither endorse nor assume any liability for the contents of any material uploaded or submitted by third party users of the Website. We generally do not pre-screen, monitor, or edit the content posted by users of communications services, chat rooms, message boards, newsgroups, software libraries, or other interactive services that may be available on or through this Website.</p>
-
-<p>However, we and our agents have the right at their sole discretion to remove any content that, in our judgment, does not comply with these Terms of Use and any other rules of user conduct for our Website, or is otherwise harmful, objectionable, or inaccurate. We are not responsible for any failure or delay in removing such content. You hereby consent to such removal and waive any claim against us arising out of such removal of content.</p>
-
-<p>You agree that we may at any time, and at our sole discretion, terminate your membership, account, or other affiliation with our site without prior notice to you for violating any of the above provisions.</p>
-
-<p>In addition, you acknowledge that we will cooperate fully with investigations of violations of systems or network security at other sites, including cooperating with law enforcement authorities in investigating suspected criminal violations.</p>
-
-<h3>Intellectual Property</h3>
-
-<p>By accepting these Terms and Conditions, you acknowledge and agree that all content presented to you on this Website is protected by copyrights, trademarks, service marks, patents or other proprietary rights and laws, and is the sole property of <span class="website_name">DKS</span>.</p>
-
-<p>You are only permitted to use the content as expressly authorized by us or the specific content provider. Except for a single copy made for personal use only, you may not copy, reproduce, modify, republish, upload, post, transmit, or distribute any documents or information from this Website in any form or by any means without prior written permission from us or the specific content provider, and you are solely responsible for obtaining permission before reusing any copyrighted material that is available on this Website.</p>
-
-<h3>Third Party Websites</h3>
-
-<p>This Website may link you to other sites on the Internet or otherwise include references to information, documents, software, materials and/or services provided by other parties. These websites may contain information or material that some people may find inappropriate or offensive.</p>
-
-<p>These other websites and parties are not under our control, and you acknowledge that we are not responsible for the accuracy, copyright compliance, legality, decency, or any other aspect of the content of such sites, nor are we responsible for errors or omissions in any references to other parties or their products and services. The inclusion of such a link or reference is provided merely as a convenience and does not imply endorsement of, or association with, the Website or party by us, or any warranty of any kind, either express or implied.</p>
-
-<h3>Disclaimer of Warranties, Limitations of Liability and Indemnification</h3>
-
-<p>Your use of <span class="website_name">DKS</span> is at your sole risk. The Website is provided "as is" and "as available". We disclaim all warranties of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose and non-infringement.</p>
-
-<p>We are not liable for damages, direct or consequential, resulting from your use of the Website, and you agree to defend, indemnify and hold us harmless from any claims, losses, liability costs and expenses (including but not limites to attorney's fees) arising from your violation of any third-party's rights. You acknowledge that you have only a limited, non-exclusive, nontransferable license to use the Website. Because the Website is not error or bug free, you agree that you will use it carefully and avoid using it ways which might result in any loss of your or any third party's property or information.</p>
-
-<h3>Term and termination</h3>
-
-<p>This Terms and Conditions will become effective in relation to you when you create a <span class="website_name">DKS</span> account or when you start using the <span class="website_name">DKS</span> and will remain effective until terminated by you or by us. </p>
-
-<p><span class="website_name">DKS</span> reserves the right to terminate this Terms and Conditions or suspend your account at any time in case of unauthorized, or suspected unauthorized use of the Website whether in contravention of this Terms and Conditions or otherwise. If <span class="website_name">DKS</span> terminates this Terms and Conditions, or suspends your  account for any of the reasons set out in this section, <span class="website_name">DKS</span> shall have no liability or responsibility to you.</p>
-
-<h3>Assignment</h3>
-
-<p><span class="website_name">DKS</span> may assign this Terms and Conditions or any part of it without restrictions. You may not assign this Terms and Conditions or any part of it to any third party.</p>
-
-<h3>Governing Law</h3>
-
-<p>These Terms and Conditions and any dispute or claim arising out of, or related to them, shall be governed by and construed in accordance with the internal laws of the <span class="country">lu</span> without giving effect to any choice or conflict of law provision or rule.</p>
-
-<p>Any legal suit, action or proceeding arising out of, or related to, these Terms of Service or the Website shall be instituted exclusively in the federal courts of <span class="country">lu</span>.</p>
\ No newline at end of file
diff --git a/website/tmpl/pages/en/useterms.tt b/website/tmpl/pages/en/useterms.tt
deleted file mode 100644 (file)
index c2ef5e8..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-<h2>Terms of Use of <span class="website_url">dks.lu</span></h2>
-
-<p>Welcome to the <span class="website_name">DKS</span>  website (the "Website").</p>
-
-<p><span class="website_name">DKS</span> provides this Website and Services (located at <span class="website_url">dks.lu</span>) to you subject to the notices, terms, and conditions set forth in these terms (the "Terms of Use"). In addition, when you use any of our Services, you will be subject to the rules, guidelines, policies, terms, and conditions applicable to such service, and they are incorporated into this Terms of Use by this reference. This Terms of Service was created by <a href="https://www.termsusetemplate.com">Terms of Use Template</a> and the <a href="https://www.disclaimersample.com">Disclaimer Sample</a>.</p>
-
-<p>These Terms of Use are effective as of <span class="date">[DATE]</span>.</p>
-
-<p>Your eligibility for use of the Website is contingent upon meeting the following conditions:</p>
-
-<ul>
-<li>You are at least 18 years of age</li>
-<li>You use the Website and Services according to these Terms of Use and all applicable laws and regulations determined by the state and country of residence</li>
-<li>You provide complete and accurate registration information and maintain accurate registration information on the Webite</li>
-<li>You agree and understand that <span class="website_name">DKS</span> may, at any time, and without prior notice, revoke and/or cancel your access if you fail to meet these criteria or violate any portion of these Terms of Use</li>
-</ul>
-
-<h3>Use of this Website</h3>
-
-<p>In connection with your use of our Website, you must act responsibly and exercise good judgment. Without limiting the foregoing, you will not:</p>
-
-<ul>
-<li>Violate any local, state, provincial, national, or other law or regulation, or any order of a court</li>
-<li>Infringe the rights of any person or entity, including without limitation, their intellectual property, privacy, publicity or contractual rights</li>
-<li>Interfere with or damage our Services, including, without limitation, through the use of viruses, cancel bots, Trojan horses, harmful code, flood pings, denial-of-service attacks, packet or IP spoofing, forged routing or electronic mail address information or similar methods or technology</li>
-<li>Use automated scripts to collect information or otherwise interact with the Services or the Website</li>
-<li>Enter into this agreement on behalf of another person or entity without consent or the legal capacity to make such agreements as a representative of an organization or entity</li>
-</ul>
-
-<h3>Intellectual Property</h3>
-
-<p>All code, text, software, scripts, graphics, files, photos, images, logos, and materials contained on this Website, or within the Services, are the sole property of <span class="website_name">DKS</span>.</p>
-
-<p>Unauthorized use of any materials contained on this Website or within the Service may violate copyright laws, trademark laws, the laws of privacy and publicity, and/or other regulations and statutes. If you believe that any of the materials infringe on any third party's rights, please contact <span class="website_name">DKS</span> immediately at the address provided below.</p>
-
-<h3>Third Party Websites</h3>
-
-<p>Our Website may link you to other sites on the Internet or otherwise include references to information, documents, software, materials and/or services provided by other parties. These websites may contain information or material that some people may find inappropriate or offensive.</p>
-
-<p>These other websites and parties are not under our control, and you acknowledge that we are not responsible for the accuracy, copyright compliance, legality, decency, or any other aspect of the content of such sites, nor are we responsible for errors or omissions in any references to other parties or their products and services. The inclusion of such a link or reference is provided merely as a convenience and does not imply endorsement of, or association with, the Website or party by us, or any warranty of any kind, either express or implied.</p>
-
-<h3>Disclaimer of Warranty and Limitation of Liability</h3>
-
-<p>The Website is provided "AS IS." appfigures, its suppliers, officers, directors, employees, and agents exclude and disclaim all representations and warranties, express or implied, related to this Website or in connection with the Services. You exclude <span class="website_name">DKS</span> from all liability for damages related to or arising out of the use of this Website.</p>
-
-<h3>Changes to these Terms of Use</h3>
-
-<p><span class="website_name">DKS</span> retains the right to, at any time, modify or discontinue, any or all parts of the Website without notice.</p>
-
-<p>Additionally, <span class="website_name">DKS</span> reserves the right, in its sole discretion, to modify these Terms of Use at any time, effective by posting new terms on the Website with the date of modification. You are responsible for reading and understanding the terms of this agreement prior to registering with, or using the Service. Your use of the Website and/or Services after any such modification has been published constitutes your acceptance of the new terms as modified in these Terms of Use.</p>
-
-<h3>Governing Law</h3>
-
-<p>These Terms of Use and any dispute or claim arising out of, or related to them, shall be governed by and construed in accordance with the internal laws of the <span class="country">lu</span> without giving effect to any choice or conflict of law provision or rule.</p>
-
-<p>Any legal suit, action or proceeding arising out of, or related to, these Terms of Use or the Website shall be instituted exclusively in the federal courts of <span class="country">lu</span>.</p>
\ No newline at end of file
diff --git a/website/tmpl/pages/error.html.mustache b/website/tmpl/pages/error.html.mustache
new file mode 100644 (file)
index 0000000..e69de29
index 1d688f2..2a8ff00 100644 (file)
 <div class="row margin">
   <div class="row">
 <div class="row margin">
   <div class="row">
-  <h1 class="margin">Individual Services</h1>
+  <h1 class="margin">IT-Service Dienstleistungen</h1>
   </div>
   <div class="container">
   <div class="col s12 m12 l4">
   <div class="card border radius margin">
     <header class="container border-bottom">
       <div class="bar">
   </div>
   <div class="container">
   <div class="col s12 m12 l4">
   <div class="card border radius margin">
     <header class="container border-bottom">
       <div class="bar">
-        <div class="bar-item"><span class="icon-code" style="font-size: 48px;"></span></div>
-        <div class="bar-item"><h2>Software Development</h2></div>
+        <div class="bar-item"><span class="icon-code" style="font-size: 32px;"></span></div>
+        <div class="bar-item"><h2>Software Entwicklung</h2></div>
       </div>
     </header>
     <div class="container" style="height: 90%;">
       </div>
     </header>
     <div class="container" style="height: 90%;">
-    <p>Our custom application development services help clients build and integrate sophisticated business applications and/or websites with client server and legacy systems. We create and deploy robust, scalable and extensible architectures for use in a wide range of industries.</p>
-    <p>
+    <p>Mit unserem kundenspezifischen Service, helfen wir Ihnen bei der Erstellung und Integration anspruchsvoller Geschäftsanwendungen. 
+      </p>
+    <p>Wir erstellen und implementieren robuste, skalierbare und erweiterbare Anwendungen für den Einsatz in einer Vielzahl von Branchen
     </p>
     </p>
-    </div>
-    <footer class="display-container">
-      <button class="button block moduletoolbar">Contact to get a quote!</button>
-    </footer>
-  </div>
-  </div>
-  <div class="col s12 m12 l4">
-  <div class="card border radius margin">
-    <header class="container border-bottom">
-    <div class="bar">
-        <div class="bar-item"><span class="icon-website2" style="font-size: 48px;"></span></div>
-        <div class="bar-item"><h2>Web Applications<h2></div>
-      </div>
-    </header>
-    <div class="container">
-    <p>Web application development is being employed widely in today's businesses across the globe. We create B2B and B2C compatible web applications to meet the business challenges. We will create web application the way you need them from single page applications to customized complex web applications. Own a web application and transform your business. We offer 360 degree support in developing your web application.
-    Our customer-centric approach has rendered much help in the past and we know that it will hold up well in the future as well.
+    <h3>Web Anwendungen</h3>
+    <p>Die Entwicklung von Webanwendungen wird heute in Unternehmen auf der ganzen Welt in großem Umfang eingesetzt. Wir erstellen B2B- und B2C-kompatible Webanwendungen, um den geschäftlichen Herausforderungen gerecht zu werden. Wir erstellen Webanwendungen nach Ihren Vorgaben, von Einzelseitenanwendungen bis hin zu maßgeschneiderten komplexen Webanwendungen. Unser Ansatz aus einem optimalen Mix von alten und neuen Technologien hat sich in der Vergangenheit als sehr hilfreich erwiesen. </p>
     </p>
     </p>
-    </div>
-    <footer class="display-container">
-      <button class="button block moduletoolbar">Contact to get a quote!</button>
-    </footer>
-  </div>
-  </div>
-  <div class="col s12 m12 l4">
-  <div class="card border radius margin" style="height: 100%;">
-    <header class="container border-bottom">
-    <div class="bar">
-        <div class="bar-item"><span class="icon-mobile" style="font-size: 48px;"></span></div>
-        <div class="bar-item"><h2>Mobile Web Applications<h2></div>
-      </div>
-    </header>
-    <div class="container">
-    <p>Today the mobile market get more and more important.in contrast to reponsive websites, Progressive Web Application offer many advantages.<br/> Progressive Web Applications, are a deck of APIs that allow for creating fast, reliable, and engaging digital products that have the crucial functionalities of both web page and mobile apps. This includes offline access, push notifications, home screen shortcuts, and accessibility through a regular mobile browser.
+    <h3>Mobile Lösungen</h3>
+    <p>Heutzutage wird der mobile Markt immer wichtiger.<br/>
+      <br/>Progressive Webanwendungen (PWA) ermöglichen eine schnelle, zuverlässige und ansprechende Erstellung digitaler Produkte, die über die entscheidenden Funktionalitäten sowohl von Webseiten als auch von mobilen Anwendungen verfügen.
+      <br/>Dazu gehören Offline-Zugriff, Push-Benachrichtigungen, Startbildschirm-Abkürzungen und Zugänglichkeit über einen normalen mobilen Browser.
     </p>
     </p>
+    <p>Alle unsere Lösungen basieren auf Open-Source-Technologien</p>
     </div>
     <footer class="display-container">
     </div>
     <footer class="display-container">
-      <button class="button block moduletoolbar">Contact to get a quote!</button>
+      <!-- <button class="button block moduletoolbar">Contact to get a quote!</button> -->
     </footer>
   </div>
   </div>
     </footer>
   </div>
   </div>
-</div>
-</div>
-<hr>
-<div class="row margin">
-  <h1 class="margin">On Place Services</h1>
-  <div class="col s12 m12 l6">
-  <div class="card border radius margin">
-    <header class="container border-bottom">
-      <header class="container border-bottom">
-       <div class="bar">
-        <div class="bar-item"><span class="icon-helpdesk" style="font-size: 48px;"></span></div>
-        <div class="bar-item"><h2>Computer Helpdesk<h2></div>
-      </div>
-    </header>
-    </header>
-    <div class="container">
-    <p>We provide fast and useful technical assistance on computer systems. We will answer queries on basic technical issues and offer advice to solve them.With a good technical knowledge, we are able to communicate effectively to understand the problem and explain its solution.
-Our objective is to create value that will help preserve the firm’s effectiveness and at a high level of security.
-    </p>
-    </div>
-    <footer class="display-container">
-      <button class="button block moduletoolbar">Contact to get help!</button>
-    </footer>
-  </div>
-  </div>
-  <div class="col s12 m12 l6">
-  <div class="card border radius margin">
-    <header class="container border-bottom">
-      <div class="bar">
-        <div class="bar-item"><span class="icon-pc" style="font-size: 48px;"></span></div>
-        <div class="bar-item"><h2>IT Infrastructure<h2></div>
-      </div>
-    </header>
-    <div class="container">
-    <p>For customers who benefit from our helpdesk, we also offer consulting, purchasing, installation, maintenance and care of the entire IT infrastructure.</p>
-    </div>
-    <footer class="display-container">
-    </footer>
-  </div>
-  </div>
-  
-</div>
-<hr>
-<div class="row margin">
-  <h1 class="margin">Cloud Products</h1>
   <div class="col s12 m12 l4">
   <div class="card border radius margin">
     <header class="container border-bottom">
     <div class="bar">
   <div class="col s12 m12 l4">
   <div class="card border radius margin">
     <header class="container border-bottom">
     <div class="bar">
-        <div class="bar-item"><span class="icon-cloud-data" style="font-size: 48px;"></span></div>
-        <div class="bar-item"><h2>Website-Hosting<h2></div>
+        <div class="bar-item"><span class="icon-pc" style="font-size: 32px;"></span></div>
+        <div class="bar-item"><h2>Helpdesk & Infrastuktur<h2></div>
       </div>
     </header>
     <div class="container">
       </div>
     </header>
     <div class="container">
-    <p>Neben der Entwicklung und Pflege der Web-Anwendungen hosten wir auch gleichzeitig die von uns erstellten Online-Anwendungen. Mittels eines integrierten Softwarepflege und Hosting-Vertrags, können wir somit unseren Kunden ein kostengünstiges Modell anbieten und Probleme ohne großen Aufwand und beteiligung dritter lösen.</p><br/>
-    <ul class="ul">Wir hosten: <li>Von anderen entwickelte Webseiten, welche wir für unsere Kunden pflegen</li><li>selbst Entwickelte Web-Anwendungen</li><li>auf Wordpress basierende Webseiten</li></ul> 
-    </p>
+      <p>Wir bieten schnelle und nützliche technische Hilfe für viele Computer-Systeme. Durch unsere lanjährige Erfahrung und unseren fundierten technischen Kenntnissen, sind wir in der Lage, Probleme schnell zu erkennen, und optimale Lösungsansätze auszuarbeiten. Dabei versuchen wir stetig, unsere Lösungen für jedermann verständlich zu beschreiben. Wir möchten die Effektivität und Sicherheit unserer Kunden auf hohem Niveau halten.</p>
+      <p>Beben dem Helpdesk, bieten wir auch Beratung, Kauf, Installation, Wartung und Pflege vonder gesamten IT-Infrastrukturen an</p>
+      <p>Unsere Spezialisierung liegt in der Untersützung kleiner und mittelständiger Unternehmen.</p>
+      <h3>Infrastruktur</h3>
+      <p>Unser Know-How reicht dabei von der Installation, Wartung und Pflege von Windows, MacOS, Android und iOS, sowie Hardware wie Router,Switches, Accesspoints....Falls gewünscht Pfegen wir auch kleine Telefon-Anlagen.</p>
+      <h3>Server und Netzwerk</h3>
+      <p>Im Serverbereich unterstützen wir nur Systeme auf Basis von Linux, MacOS und einfachen Windows-Systemen welche in Arbeitgruppen auf gemeinsam genutzte Daten zugreifen. (Wir pflegen keine Systeme basierend auf Windows-Server, Windows-Domainen und Exchange-Servern)</p>
+      <h3>Dritt-Anbieter Anwendungen</h3>
+      <p>Durch unser technisches Know-How, kontaktieren wir auch für unsere Kunden den technischen Support, von Software-Anbietern, um mit deren Hilfe, Software oder Hardware-technische Probleme bei unseren Kunden zu lösen.</p>
     </div>
     <footer class="display-container">
     </div>
     <footer class="display-container">
-      <a class="half button moduletoolbar">more info...</a>
-        <a class="half button moduletoolbar">Contact to get a quote!</a>
+      <!-- <button class="button block moduletoolbar">Contact to get a quote!</button> -->
     </footer>
   </div>
   </div>
   <div class="col s12 m12 l4">
     </footer>
   </div>
   </div>
   <div class="col s12 m12 l4">
-    <div class="card border radius margin">
-      <header class="container border-bottom">
-         <div class="bar">
-          <div class="bar-item"><span class="icon-mailserver" style="font-size: 48px;"></span></div>
-          <div class="bar-item"><h2>E-Mail-Hosting<h2></div>
-        </div>
-      </header>
-      <div class="container">
-      <p>Nicht jedes Unternehmen möchte Ihre Webseite und E-Mails auf dem gleichen system hosten oder benötigt eine eigene Webseite als Visitenkarte , daher bieten wir das E-Mail-Hosting separt an. Neben dem E-Mail-Hosting bieten wir optional auch ein CalDav basiertes Kalender-System an, welches mit allen gängigen Mobilen und Desktop-Kalendar-Anwendungen funktionniert.
-      </p>
-      </div>
-      <footer class="display-container">
-        <a class="half button moduletoolbar">more info...</a>
-        <a class="half button moduletoolbar">Contact to get a quote!</a>
-      </footer>
-    </div>
-    </div>
-  <div class="col s12 m12 l4">
-  <div class="card border radius margin">
+  <div class="card border radius margin" style="height: 100%;">
     <header class="container border-bottom">
     <div class="bar">
     <header class="container border-bottom">
     <div class="bar">
-        <div class="bar-item"><span class="icon-private-cloud" style="font-size: 48px;"></span></div>
-        <div class="bar-item"><h2>Private-Cloud (VPN)<h2></div>
+        <div class="bar-item"><span class="icon-cloud-data" style="font-size: 32px;"></span></div>
+        <div class="bar-item"><h2>Hosting und Cloud<h2></div>
       </div>
     </header>
     <div class="container">
       </div>
     </header>
     <div class="container">
-    <p>Sie möchten von überall auf Ihre Daten zugreifen. Diese aber nicht bei einem Cloud-Provider ablegen?</p><ul class="ul"><li>a.) Sie haben in Ihrem Büro oder zu Hause einen Server mit Ihren Daten,</li><li>b.) oder möchten in Zukunft Ihre Daten bei sich im Büro / zu Hause, Ihre Daten speichern?</ul>
-    <p>Für alle unsere Produkte bieten wir einen VPN-Lösung basierend auf OpenVPN an, mit der Sie jederzeit auf Ihre Lokal gespeicheten Daten zugreifen können.</p>
-    </div>
-    <footer class="container">
-    </footer>
-  </div>
-  </div>
-  
-</div>
-<hr>
-<div class="row margin">
-<h1 class="margin">Applications</h1>
-  <div class="col s12 m6 l3">
-  <div class="card border radius margin">
-    <header class="container border-bottom">
-      <div class="bar">
-        <div class="bar-item"><img src="img/apps/invoicejournallogo.svg" style="height: 40px;" alt="Logo Invoice Journal"/> </div>
-        <div class="bar-item"><h2>Invoice Journal<h2></div>
-      </div>
-    </header>
-    <div class="container">
-    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
-    </p>
-    </div>
-    <footer class="display-container">
-      <a class="third button moduletoolbar">more info...</a>
-      <a class="third button moduletoolbar">try</a>
-      <a class="third button moduletoolbar">buy</a>
-    </footer>
-  </div>
-  </div>
-  <div class="col s12 m6 l3">
-  <div class="card border radius margin">
-    <header class="container border-bottom">
-      <div class="bar">
-        <div class="bar-item"><img src="img/apps/creorgalogo.svg" style="height: 40px;" alt="Logo Creorga"/> </div>
-        <div class="bar-item"><h2>Creorga<h2></div>
-      </div>
-    </header>
-    <div class="container">
-    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
-    </p>
-    </div>
-    <footer class="display-container">
-      <a class="third button moduletoolbar">more info...</a>
-      <a class="third button moduletoolbar">try</a>
-      <a class="third button moduletoolbar">buy</a>
-    </footer>
-  </div>
-  </div>
-  <div class="col s12 m6 l3">
-  <div class="card border radius margin">
-    <header class="container border-bottom">
-      <div class="bar">
-        <div class="bar-item"><img src="img/apps/coloradiologo.svg" style="height: 40px;" alt="Logo Coloradio"/> </div>
-        <div class="bar-item"><h2>Coloradio<h2></div>
-      </div>
-    </header>
-    <div class="container">
-    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
+      <p>Neben der Entwicklung und Pflege der Web-Anwendungen hosten wir auch gleichzeitig die von uns erstellten Online-Anwendungen. Mittels eines integrierten Softwarepflege und Hosting-Vertrags, können wir somit unseren Kunden ein kostengünstiges Modell anbieten und Probleme ohne großen Aufwand und beteiligung dritter lösen.</p><br/>
+    <ul class="ul">Wir hosten: <li>Von anderen entwickelte Webseiten, welche wir für unsere Kunden pflegen</li><li>selbst Entwickelte Web-Anwendungen</li><li>auf Wordpress basierende Webseiten</li></ul> 
     </p>
     </p>
-    </div>
-    <footer class="display-container">
-      <a class="third button moduletoolbar">more info...</a>
-      <a class="third button moduletoolbar">try</a>
-      <a class="third button moduletoolbar">buy</a>
-    </footer>
-  </div>
-  </div>
-  <div class="col s12 m6 l3">
-  <div class="card border radius margin">
-    <header class="container border-bottom">
-      <div class="bar">
-        <div class="bar-item"><img src="img/apps/datastorelogo.svg" style="height: 40px;" alt="Logo Personal Data Store"/> </div>
-        <div class="bar-item"><h2>Personal Data Store<h2></div>
-      </div>
-    </header>
-    <div class="container">
-    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
+    <p>Wir bieten ein sogenanntes "Managed Hosting" an. Das heisst, wir pflegen für unsere Kunden die Webseite, warten und halten die Webanwendungen auf dem neusten Stand. Der Kunde bracuh sich damit nur um den Inhalt zu kümmern.</p>
+    <p>Falls gewünscht fügen wir für den Kunden den Inhalt ein. Der Kunde muss uns seine Änderungswünsche nur mitteilen.</p>
+    <h3>E-Mail - Hosting</h3>
+    <p>Nicht jedes Unternehmen möchte Ihre Webseite und E-Mails auf dem gleichen system hosten oder benötigt eine eigene Webseite als Visitenkarte , daher bieten wir das E-Mail-Hosting separt an. Neben dem E-Mail-Hosting bieten wir optional auch ein CalDav basiertes Kalender-System an, welches mit allen gängigen Mobilen und Desktop-Kalendar-Anwendungen funktionniert.
     </p>
     </p>
+    <h3>Private Cloud</h3>
+    <p>Sie möchten von überall auf Ihre Daten zugreifen. Diese aber nicht bei einem Cloud-Provider ablegen?</p><ul class="ul"><li>a.) Sie haben in Ihrem Büro oder zu Hause einen Server mit Ihren Daten,</li><li>b.) oder möchten in Zukunft Ihre Daten bei sich im Büro / zu Hause, Ihre Daten speichern?</ul>
+      <p>Für alle unsere Produkte bieten wir einen VPN-Lösung basierend auf OpenVPN an, mit der Sie jederzeit auf Ihre Lokal gespeicheten Daten zugreifen können.</p>
     </div>
     <footer class="display-container">
     </div>
     <footer class="display-container">
-      <a class="third button moduletoolbar">more info...</a>
-      <a class="third button moduletoolbar">try</a>
-      <a class="third button moduletoolbar">buy</a>
+      <!-- <button class="button block moduletoolbar">Contact to get a quote!</button> -->
     </footer>
   </div>
   </div>
 </div>
     </footer>
   </div>
   </div>
 </div>
-
-<!--div class="margin border">
-  <ul>
-    <li>Sie haben ein neues Unternehmen gegründet und suche einen IT Dienstleister?</li>
-    <li>Sie haben bereits einen IT Dienstleister, möchten jedoch zu einem anderen Dienstleister wechseln?</li>
-    <li>Sie möchten Ihre IT Abteilung entlasten und benötigen Unterstützung?</li>
-    <li>Sie benötigen Hilfe im Ungang mit Ihrem Computer?</li>
-  </ul>
-  <p class="padding large">Wir kümmern uns gerne um Ihre Informatik-Technischen Probleme!<br/>Mehr zu unserer Philosphie und unseren Service-Dienstleistungen finden Sie hier:
-  <div class="container center xlarge"><a href="service.html">IT Service & HelpDesk</a></div></p> 
-</div>
-<div class="margin border">  
-  <ul>
-    <li>Sie benötigen E-Mails mit eigener Domäne?</li>
-    <li>Sie möchten Ihre Webseite hosten?</li>
-    <li>Sie benötigen eine "Private Cloud", um von überall auf Ihre Daten zuzugreifen, ohne dass diese bei einem Cloud-Hoster in einem Rechnezentrum liegen?</li>
-  </ul>
-  <p class="padding large">Wir unterbreiten Ihnen gerne ein Angebot für Ihre digitale Kommunikation und Ihr digitales Schaufenster!
-  <div class="container center xlarge"><a href="hosting.html">Private Cloud & Hosting</a></div></p> 
 </div>
 </div>
-<div class="margin border">
-  <ul>
-    <li>Sie benötigen Hilfe bei der Konzeption von einer Datenbank?</li>
-    <li>Sie haben eine Idee, für eine Anwendung, und benötigen Hilfe bei der Umsetzung?</li>
-  </ul>
-  
-  <p class="padding large">Auf Ihrem Wunsch können wir Sie gerne, mit unserem fachichen Know-How, bei Ihrem Projekt unterstützen!
-  <div class="container center xlarge"><a href="hosting.html">Datenbanken und Web-Anwendungen</a></div></p> 
-</div>-->
 
 
diff --git a/website/tmpl/pages/hosting.tt b/website/tmpl/pages/hosting.tt
deleted file mode 100644 (file)
index c84a991..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<h2>Unsere Hosting-Angebote</h2>
-
-<h2>Private Cloud Services</h2>
\ No newline at end of file
diff --git a/website/tmpl/pages/it-service.html.mustache b/website/tmpl/pages/it-service.html.mustache
deleted file mode 100644 (file)
index 52e0c24..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<h2>Computer Helpdesk</h2>
-<ul>
-<li>Wir haben keinen First, Second und Third-Level Support, bei uns sprechen Sie sofort mit dem Experten.</li>
-<li>Vom kleinen Computer-Problem bis hin zur Datenrettung, wir helfen gerne weiter.</li>
-<li>Wir lösen Ihr Problem, vor Ort oder via Fernwartung</li>
-<li>Wir rechnen nicht stundenbasiert ab, sondern nach Service-Dienstleistung.</li>
-<li>Wir bertaen Sie gerne beim Kauf neuer Hard- und Software</li>
-<li>Unsere Know-How reicht von Windows über MacOS, bis hin zu Android und iOS</li>
-</ul>
-<h2>IT-Infrastruktur</h2>
-<ul>
-<li>Ob Selbständiger, kleines resp. mittleres Unternehmen oder privater Haushalt, wir beraten Sie gerne in Sachen IT-Infrastruktur.</li>
-<li>Neben der Beratung, installieren und warten auch IT-Infrastrukturen, von dem Verlegen von Netzwerk-Kabeln, bis hin zum fertigen Einrichten eines Computer-Arbeitsplatzes, inklusiv Einkauf und Installation aller benötigten Software-Komponenten.</li>
-<li>In Sachen Server kommt bei uns Linux, MacOS oder Windows 10 zum Einsatz.</li>
-<li>Je nach Anforderung reicht sogar ein Server-System auf Basis eines Raspberry Pi (siehe <a href="computers.html">Small Business Computers</a>)</li> 
-</ul>  
\ No newline at end of file
diff --git a/website/website b/website/website
deleted file mode 120000 (symlink)
index 93381b3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/mnt/d/Workspace/dks_lu/website
\ No newline at end of file